Merge commit 'a7d2861d36756b913e85681b86ed3385274e8ced'
authorMichael Niedermayer <michaelni@gmx.at>
Sun, 21 Oct 2012 14:32:41 +0000 (16:32 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Sun, 21 Oct 2012 15:01:01 +0000 (17:01 +0200)
* commit 'a7d2861d36756b913e85681b86ed3385274e8ced':
  svq3: K&R formatting cosmetics
  fate: Introduce ENCMUX macro for tests that require encoders and a muxer
  ffv1: Add missing #includes to header file

Conflicts:
libavcodec/ffv1.h
libavcodec/svq3.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
libavcodec/ffv1.h
libavcodec/svq3.c
tests/Makefile
tests/fate/avformat.mak
tests/fate/seek.mak

  #ifndef AVCODEC_FFV1_H
  #define AVCODEC_FFV1_H
  
 -#include <stdint.h>
 +/**
 + * @file
 + * FF Video Codec 1 (a lossless codec)
 + */
  
 +#include "libavutil/avassert.h"
 +#include "libavutil/crc.h"
 +#include "libavutil/opt.h"
 +#include "libavutil/imgutils.h"
 +#include "libavutil/pixdesc.h"
 +#include "libavutil/timer.h"
  #include "avcodec.h"
- #include "internal.h"
  #include "dsputil.h"
- #include "rangecoder.h"
- #include "golomb.h"
+ #include "get_bits.h"
++#include "internal.h"
 +#include "mathops.h"
+ #include "put_bits.h"
+ #include "rangecoder.h"
  
 +#ifdef __INTEL_COMPILER
 +#undef av_flatten
 +#define av_flatten
 +#endif
 +
  #define MAX_PLANES 4
  #define CONTEXT_SIZE 32
  
@@@ -219,41 -222,42 +224,41 @@@ static inline int svq3_decode_block(Get
  
      for (limit = (16 >> intra); index < 16; index = limit, limit += 8) {
          for (; (vlc = svq3_get_ue_golomb(gb)) != 0; index++) {
 -            if (vlc == INVALID_VLC)
++            if (vlc < 0)
+                 return -1;
  
-           if (vlc < 0)
-               return -1;
-           sign = (vlc & 0x1) - 1;
-           vlc  = (vlc + 1) >> 1;
-           if (type == 3) {
-               if (vlc < 3) {
-                   run   = 0;
-                   level = vlc;
-               } else if (vlc < 4) {
-                   run   = 1;
-                   level = 1;
-               } else {
-                   run   = (vlc & 0x3);
-                   level = ((vlc + 9) >> 2) - run;
-               }
-           } else {
-               if (vlc < 16U) {
-                   run   = svq3_dct_tables[intra][vlc].run;
-                   level = svq3_dct_tables[intra][vlc].level;
-               } else if (intra) {
-                   run   = (vlc & 0x7);
-                   level = (vlc >> 3) + ((run == 0) ? 8 : ((run < 2) ? 2 : ((run < 5) ? 0 : -1)));
-               } else {
-                   run   = (vlc & 0xF);
-                   level = (vlc >> 4) + ((run == 0) ? 4 : ((run < 3) ? 2 : ((run < 10) ? 1 : 0)));
-               }
-           }
-           if ((index += run) >= limit)
-               return -1;
-           block[scan[index]] = (level ^ sign) - sign;
+             sign = (vlc & 0x1) - 1;
+             vlc  = (vlc + 1) >> 1;
+             if (type == 3) {
+                 if (vlc < 3) {
+                     run   = 0;
+                     level = vlc;
+                 } else if (vlc < 4) {
+                     run   = 1;
+                     level = 1;
+                 } else {
+                     run   = (vlc & 0x3);
+                     level = ((vlc + 9) >> 2) - run;
+                 }
+             } else {
 -                if (vlc < 16) {
++                if (vlc < 16U) {
+                     run   = svq3_dct_tables[intra][vlc].run;
+                     level = svq3_dct_tables[intra][vlc].level;
+                 } else if (intra) {
+                     run   = (vlc & 0x7);
 -                    level = (vlc >> 3) +
 -                            ((run == 0) ? 8 : ((run < 2) ? 2 : ((run < 5) ? 0 : -1)));
++                    level = (vlc >> 3) + ((run == 0) ? 8 : ((run < 2) ? 2 : ((run < 5) ? 0 : -1)));
+                 } else {
+                     run   = (vlc & 0xF);
 -                    level = (vlc >> 4) +
 -                            ((run == 0) ? 4 : ((run < 3) ? 2 : ((run < 10) ? 1 : 0)));
++                    level = (vlc >> 4) + ((run == 0) ? 4 : ((run < 3) ? 2 : ((run < 10) ? 1 : 0)));
+                 }
+             }
++
+             if ((index += run) >= limit)
+                 return -1;
+             block[scan[index]] = (level ^ sign) - sign;
          }
  
          if (type != 2) {
@@@ -524,22 -552,20 +553,22 @@@ static int svq3_decode_mb(SVQ3Context *
              if (svq3_mc_dir(h, (mb_type - 1), mode, 0, 0) < 0)
                  return -1;
          } else {        /* AV_PICTURE_TYPE_B */
 -            if (mb_type != 2)
 +            if (mb_type != 2) {
                  if (svq3_mc_dir(h, 0, mode, 0, 0) < 0)
                      return -1;
 -            else
 +            } else {
-                 for (i = 0; i < 4; i++) {
-                     memset(s->current_picture.f.motion_val[0][b_xy + i*h->b_stride], 0, 4*2*sizeof(int16_t));
-                 }
+                 for (i = 0; i < 4; i++)
+                     memset(s->current_picture.f.motion_val[0][b_xy + i * h->b_stride],
+                            0, 4 * 2 * sizeof(int16_t));
 -            if (mb_type != 1)
 +            }
 +            if (mb_type != 1) {
                  if (svq3_mc_dir(h, 0, mode, 1, (mb_type == 3)) < 0)
                      return -1;
 -            else
 +            } else {
-                 for (i = 0; i < 4; i++) {
-                     memset(s->current_picture.f.motion_val[1][b_xy + i*h->b_stride], 0, 4*2*sizeof(int16_t));
-                 }
+                 for (i = 0; i < 4; i++)
+                     memset(s->current_picture.f.motion_val[1][b_xy + i * h->b_stride],
+                            0, 4 * 2 * sizeof(int16_t));
 +            }
          }
  
          mb_type = MB_TYPE_16x16;
              }
  
              /* decode prediction codes for luma blocks */
-             for (i = 0; i < 16; i+=2) {
+             for (i = 0; i < 16; i += 2) {
                  vlc = svq3_get_ue_golomb(&s->gb);
  
-                 if (vlc >= 25U){
 -                if (vlc >= 25) {
++                if (vlc >= 25U) {
                      av_log(h->s.avctx, AV_LOG_ERROR, "luma prediction:%d\n", vlc);
                      return -1;
                  }
          }
      }
      if (!IS_INTRA4x4(mb_type)) {
-         memset(h->intra4x4_pred_mode+h->mb2br_xy[mb_xy], DC_PRED, 8);
+         memset(h->intra4x4_pred_mode + h->mb2br_xy[mb_xy], DC_PRED, 8);
      }
      if (!IS_SKIP(mb_type) || s->pict_type == AV_PICTURE_TYPE_B) {
-         memset(h->non_zero_count_cache + 8, 0, 14*8*sizeof(uint8_t));
-         s->dsp.clear_blocks(h->mb+  0);
-         s->dsp.clear_blocks(h->mb+384);
+         memset(h->non_zero_count_cache + 8, 0, 14 * 8 * sizeof(uint8_t));
+         s->dsp.clear_blocks(h->mb +   0);
+         s->dsp.clear_blocks(h->mb + 384);
      }
  
-     if (!IS_INTRA16x16(mb_type) && (!IS_SKIP(mb_type) || s->pict_type == AV_PICTURE_TYPE_B)) {
+     if (!IS_INTRA16x16(mb_type) &&
+         (!IS_SKIP(mb_type) || s->pict_type == AV_PICTURE_TYPE_B)) {
 -        if ((vlc = svq3_get_ue_golomb(&s->gb)) >= 48{
 +        if ((vlc = svq3_get_ue_golomb(&s->gb)) >= 48U){
              av_log(h->s.avctx, AV_LOG_ERROR, "cbp_vlc=%d\n", vlc);
              return -1;
          }
@@@ -756,7 -786,7 +789,7 @@@ static int svq3_decode_slice_header(AVC
          skip_bits_long(&s->gb, 0);
      }
  
-     if ((i = svq3_get_ue_golomb(&s->gb)) >= 3U){
 -    if ((i = svq3_get_ue_golomb(&s->gb)) == INVALID_VLC || i >= 3) {
++    if ((i = svq3_get_ue_golomb(&s->gb)) >= 3U) {
          av_log(h->s.avctx, AV_LOG_ERROR, "illegal slice type %d \n", i);
          return -1;
      }
@@@ -819,12 -850,11 +853,12 @@@ static av_cold int svq3_decode_init(AVC
      if (ff_h264_decode_init(avctx) < 0)
          return -1;
  
-     s->flags  = avctx->flags;
-     s->flags2 = avctx->flags2;
+     s->flags           = avctx->flags;
+     s->flags2          = avctx->flags2;
      s->unrestricted_mv = 1;
-     h->is_complex=1;
+     h->is_complex      = 1;
 +    h->sps.chroma_format_idc = 1;
-     avctx->pix_fmt = avctx->codec->pix_fmts[0];
+     avctx->pix_fmt     = avctx->codec->pix_fmts[0];
  
      if (!s->context_initialized) {
          h->chroma_qp[0] = h->chroma_qp[1] = 4;
          svq3->thirdpel_flag = 1;
          svq3->unknown_flag  = 0;
  
 +
          /* prowl for the "SEQH" marker in the extradata */
-         extradata = (unsigned char *)avctx->extradata;
+         extradata     = (unsigned char *)avctx->extradata;
          extradata_end = avctx->extradata + avctx->extradata_size;
          if (extradata) {
              for (m = 0; m + 8 < avctx->extradata_size; m++) {
  #if CONFIG_ZLIB
                  unsigned watermark_width  = svq3_get_ue_golomb(&gb);
                  unsigned watermark_height = svq3_get_ue_golomb(&gb);
-                 int u1 = svq3_get_ue_golomb(&gb);
-                 int u2 = get_bits(&gb, 8);
-                 int u3 = get_bits(&gb, 2);
-                 int u4 = svq3_get_ue_golomb(&gb);
-                 unsigned long buf_len = watermark_width*watermark_height*4;
-                 int offset = (get_bits_count(&gb)+7)>>3;
+                 int u1                    = svq3_get_ue_golomb(&gb);
+                 int u2                    = get_bits(&gb, 8);
+                 int u3                    = get_bits(&gb, 2);
+                 int u4                    = svq3_get_ue_golomb(&gb);
+                 unsigned long buf_len     = watermark_width *
+                                             watermark_height * 4;
+                 int offset                = (get_bits_count(&gb) + 7) >> 3;
                  uint8_t *buf;
  
-                 if (watermark_height<=0 || (uint64_t)watermark_width*4 > UINT_MAX/watermark_height)
 -                if ((uint64_t)watermark_width * 4 > UINT_MAX / watermark_height)
++                if (watermark_height <= 0 || (uint64_t)watermark_width*4 > UINT_MAX/watermark_height)
                      return -1;
  
                  buf = av_malloc(buf_len);
      return 0;
  }
  
- static int svq3_decode_frame(AVCodecContext *avctx,
-                              void *data, int *data_size,
-                              AVPacket *avpkt)
+ static int svq3_decode_frame(AVCodecContext *avctx, void *data,
+                              int *data_size, AVPacket *avpkt)
  {
-     SVQ3Context *svq3 = avctx->priv_data;
-     H264Context *h = &svq3->h;
-     MpegEncContext *s = &h->s;
-     int buf_size = avpkt->size;
 -    const uint8_t *buf = avpkt->data;
+     SVQ3Context *svq3  = avctx->priv_data;
+     H264Context *h     = &svq3->h;
+     MpegEncContext *s  = &h->s;
+     int buf_size       = avpkt->size;
 -    int m, mb_type;
 +    int m, mb_type, left;
 +    uint8_t *buf;
  
      /* special case for last picture */
      if (buf_size == 0) {
          return 0;
      }
  
 -    init_get_bits(&s->gb, buf, 8 * buf_size);
 -
      s->mb_x = s->mb_y = h->mb_xy = 0;
  
-     init_get_bits(&s->gb, buf, 8*buf_size);
 +    if (svq3->watermark_key) {
 +        av_fast_malloc(&svq3->buf, &svq3->buf_size,
 +                       buf_size+FF_INPUT_BUFFER_PADDING_SIZE);
 +        if (!svq3->buf)
 +            return AVERROR(ENOMEM);
 +        memcpy(svq3->buf, avpkt->data, buf_size);
 +        buf = svq3->buf;
 +    } else {
 +        buf = avpkt->data;
 +    }
 +
++    init_get_bits(&s->gb, buf, 8 * buf_size);
 +
      if (svq3_decode_slice_header(avctx))
          return -1;
  
                  return -1;
              }
  
-             if (mb_type != 0) {
-                 ff_h264_hl_decode_mb (h);
-             }
+             if (mb_type != 0)
+                 ff_h264_hl_decode_mb(h);
  
-             if (s->pict_type != AV_PICTURE_TYPE_B && !s->low_delay) {
+             if (s->pict_type != AV_PICTURE_TYPE_B && !s->low_delay)
                  s->current_picture.f.mb_type[s->mb_x + s->mb_y * s->mb_stride] =
                      (s->pict_type == AV_PICTURE_TYPE_P && mb_type < 8) ? (mb_type - 1) : -1;
-             }
          }
  
-         ff_draw_horiz_band(s, 16*s->mb_y, 16);
+         ff_draw_horiz_band(s, 16 * s->mb_y, 16);
      }
  
 +    left = buf_size*8 - get_bits_count(&s->gb);
 +
 +    if (s->mb_y != s->mb_height || s->mb_x != s->mb_width) {
 +        av_log(avctx, AV_LOG_INFO, "frame num %d incomplete pic x %d y %d left %d\n", avctx->frame_number, s->mb_y, s->mb_x, left);
 +        //av_hex_dump(stderr, buf+buf_size-8, 8);
 +    }
 +
 +    if (left < 0) {
 +        av_log(avctx, AV_LOG_ERROR, "frame num %d left %d\n", avctx->frame_number, left);
 +        return -1;
 +    }
 +
      ff_MPV_frame_end(s);
  
-     if (s->pict_type == AV_PICTURE_TYPE_B || s->low_delay) {
-         *(AVFrame *) data = s->current_picture.f;
-     } else {
-         *(AVFrame *) data = s->last_picture.f;
-     }
+     if (s->pict_type == AV_PICTURE_TYPE_B || s->low_delay)
+         *(AVFrame *)data = s->current_picture.f;
+     else
+         *(AVFrame *)data = s->last_picture.f;
  
      /* Do not output the last pic after seeking. */
-     if (s->last_picture_ptr || s->low_delay) {
+     if (s->last_picture_ptr || s->low_delay)
          *data_size = sizeof(AVFrame);
-     }
  
      return buf_size;
  }
diff --cc tests/Makefile
Simple merge
Simple merge
Simple merge