Merge commit '6d70639c7d5fe762c5f18de574eafa817fb53ef7'
authorMichael Niedermayer <michaelni@gmx.at>
Fri, 6 Dec 2013 09:14:15 +0000 (10:14 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Fri, 6 Dec 2013 09:28:20 +0000 (10:28 +0100)
* commit '6d70639c7d5fe762c5f18de574eafa817fb53ef7':
  mjpegenc: do not pass MpegEncContext to jpeg_table_header()

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
libavcodec/mjpegenc.c

@@@ -104,41 -96,21 +104,43 @@@ static int put_huffman_table(PutBitCont
      return n + 17;
  }
  
- static void jpeg_table_header(MpegEncContext *s)
 -static void jpeg_table_header(PutBitContext *p, ScanTable *intra_scantable,
 -                              uint16_t intra_matrix[64])
++static void jpeg_table_header(AVCodecContext *avctx, PutBitContext *p,
++                              ScanTable *intra_scantable,
++                              uint16_t intra_matrix[64],
++                              int hsample[3])
  {
-     PutBitContext *p = &s->pb;
      int i, j, size;
      uint8_t *ptr;
  
-     if (s->avctx->codec_id != AV_CODEC_ID_LJPEG) {
++    if (avctx->codec_id != AV_CODEC_ID_LJPEG) {
      /* quant matrixes */
      put_marker(p, DQT);
 +#ifdef TWOMATRIXES
 +    put_bits(p, 16, 2 + 2 * (1 + 64));
 +#else
      put_bits(p, 16, 2 + 1 * (1 + 64));
 +#endif
      put_bits(p, 4, 0); /* 8 bit precision */
      put_bits(p, 4, 0); /* table 0 */
      for(i=0;i<64;i++) {
-         j = s->intra_scantable.permutated[i];
-         put_bits(p, 8, s->intra_matrix[j]);
+         j = intra_scantable->permutated[i];
+         put_bits(p, 8, intra_matrix[j]);
      }
-     if(s->avctx->active_thread_type & FF_THREAD_SLICE){
 +#ifdef TWOMATRIXES
 +    put_bits(p, 4, 0); /* 8 bit precision */
 +    put_bits(p, 4, 1); /* table 1 */
 +    for(i=0;i<64;i++) {
 +        j = s->intra_scantable.permutated[i];
 +        put_bits(p, 8, s->chroma_intra_matrix[j]);
 +    }
 +#endif
 +    }
 +
-         put_bits(p, 16, (s->width-1)/(8*s->mjpeg_hsample[0]) + 1);
++    if(avctx->active_thread_type & FF_THREAD_SLICE){
 +        put_marker(p, DRI);
 +        put_bits(p, 16, 4);
++        put_bits(p, 16, (avctx->width-1)/(8*hsample[0]) + 1);
 +    }
  
      /* huffman table */
      put_marker(p, DHT);
@@@ -207,12 -178,9 +209,12 @@@ void ff_mjpeg_encode_picture_header(Mpe
  
      put_marker(&s->pb, SOI);
  
 +    // hack for AMV mjpeg format
 +    if(s->avctx->codec_id == AV_CODEC_ID_AMV) goto end;
 +
      jpeg_put_comments(s->avctx, &s->pb);
  
-     jpeg_table_header(s);
 -    jpeg_table_header(&s->pb, &s->intra_scantable, s->intra_matrix);
++    jpeg_table_header(s->avctx, &s->pb, &s->intra_scantable, s->intra_matrix, s->mjpeg_hsample);
  
      switch(s->avctx->codec_id){
      case AV_CODEC_ID_MJPEG:  put_marker(&s->pb, SOF0 ); break;