]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/svq3.c
Make avcodec_string() and av_get_bits_per_sample() report the sample size for CODEC_I...
[ffmpeg] / libavcodec / svq3.c
index bb2e8ebc2624b5df7be88a81fab06d87fc644964..67fa3172b467bc62e1ca75e2cd52150aec124f00 100644 (file)
@@ -411,7 +411,7 @@ static int svq3_decode_mb (H264Context *h, unsigned int mb_type) {
   uint32_t vlc;
   int8_t *top, *left;
   MpegEncContext *const s = (MpegEncContext *) h;
-  const int mb_xy = s->mb_x + s->mb_y*s->mb_stride;
+  const int mb_xy = h->mb_xy;
   const int b_xy = 4*s->mb_x + 4*s->mb_y*h->b_stride;
 
   h->top_samples_available        = (s->mb_y == 0) ? 0x33FF : 0xFFFF;
@@ -681,7 +681,7 @@ static int svq3_decode_mb (H264Context *h, unsigned int mb_type) {
 
 static int svq3_decode_slice_header (H264Context *h) {
   MpegEncContext *const s = (MpegEncContext *) h;
-  const int mb_xy = s->mb_x + s->mb_y*s->mb_stride;
+  const int mb_xy = h->mb_xy;
   int i, header;
 
   header = get_bits (&s->gb, 8);
@@ -835,6 +835,7 @@ static int svq3_decode_frame (AVCodecContext *avctx,
   if (buf_size == 0) {
     if (s->next_picture_ptr && !s->low_delay) {
       *(AVFrame *) data = *(AVFrame *) &s->next_picture;
+      s->next_picture_ptr= NULL;
       *data_size = sizeof(AVFrame);
     }
     return 0;
@@ -842,7 +843,7 @@ static int svq3_decode_frame (AVCodecContext *avctx,
 
   init_get_bits (&s->gb, buf, 8*buf_size);
 
-  s->mb_x = s->mb_y = 0;
+  s->mb_x = s->mb_y = h->mb_xy = 0;
 
   if (svq3_decode_slice_header (h))
     return -1;
@@ -851,9 +852,9 @@ static int svq3_decode_frame (AVCodecContext *avctx,
   s->picture_number = h->slice_num;
 
   if(avctx->debug&FF_DEBUG_PICT_INFO){
-      av_log(h->s.avctx, AV_LOG_DEBUG, "%c hpel:%d, tpel:%d aqp:%d qp:%d\n",
+      av_log(h->s.avctx, AV_LOG_DEBUG, "%c hpel:%d, tpel:%d aqp:%d qp:%d, slice_num:%02X\n",
       av_get_pict_type_char(s->pict_type), h->halfpel_flag, h->thirdpel_flag,
-      s->adaptive_quant, s->qscale
+      s->adaptive_quant, s->qscale, h->slice_num
       );
   }
 
@@ -915,6 +916,7 @@ static int svq3_decode_frame (AVCodecContext *avctx,
 
   for (s->mb_y=0; s->mb_y < s->mb_height; s->mb_y++) {
     for (s->mb_x=0; s->mb_x < s->mb_width; s->mb_x++) {
+      h->mb_xy = s->mb_x + s->mb_y*s->mb_stride;
 
       if ( (get_bits_count(&s->gb) + 7) >= s->gb.size_in_bits &&
           ((get_bits_count(&s->gb) & 7) == 0 || show_bits (&s->gb, (-get_bits_count(&s->gb) & 7)) == 0)) {
@@ -982,5 +984,5 @@ AVCodec svq3_decoder = {
     decode_end,
     svq3_decode_frame,
     CODEC_CAP_DRAW_HORIZ_BAND | CODEC_CAP_DR1 | CODEC_CAP_DELAY,
-    .long_name = "Sorenson Vector Quantizer 3",
+    .long_name = NULL_IF_CONFIG_SMALL("Sorenson Vector Quantizer 3"),
 };