diff options
Diffstat (limited to 'src/libffmpeg/libavcodec/svq3.c')
-rw-r--r-- | src/libffmpeg/libavcodec/svq3.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/src/libffmpeg/libavcodec/svq3.c b/src/libffmpeg/libavcodec/svq3.c index 8f9f545e7..c8720c07a 100644 --- a/src/libffmpeg/libavcodec/svq3.c +++ b/src/libffmpeg/libavcodec/svq3.c @@ -690,15 +690,17 @@ static int svq3_decode_slice_header (H264Context *h) { if (((header & 0x9F) != 1 && (header & 0x9F) != 2) || (header & 0x60) == 0) { /* TODO: what? */ - fprintf (stderr, "unsupported slice header (%02X)\n", header); + av_log(h->s.avctx, AV_LOG_ERROR, "unsupported slice header (%02X)\n", header); return -1; } else { int length = (header >> 5) & 3; h->next_slice_index = s->gb.index + 8*show_bits (&s->gb, 8*length) + 8*length; - if (h->next_slice_index > s->gb.size_in_bits) + if (h->next_slice_index > s->gb.size_in_bits){ + av_log(h->s.avctx, AV_LOG_ERROR, "slice after bitstream end\n"); return -1; + } s->gb.size_in_bits = h->next_slice_index - 8*(length - 1); s->gb.index += 8; @@ -709,8 +711,10 @@ static int svq3_decode_slice_header (H264Context *h) { } } - if ((i = svq3_get_ue_golomb (&s->gb)) == INVALID_VLC || i >= 3) + if ((i = svq3_get_ue_golomb (&s->gb)) == INVALID_VLC || i >= 3){ + av_log(h->s.avctx, AV_LOG_ERROR, "illegal slice type %d \n", i); return -1; + } h->slice_type = golomb_to_pict_type[i]; @@ -766,7 +770,9 @@ static int svq3_decode_frame (AVCodecContext *avctx, *data_size = 0; s->flags = avctx->flags; - + s->flags2 = avctx->flags2; + s->unrestricted_mv = 1; + if (!s->context_initialized) { s->width = avctx->width; s->height = avctx->height; @@ -841,7 +847,7 @@ static int svq3_decode_frame (AVCodecContext *avctx, s->picture_number = h->slice_num; if(avctx->debug&FF_DEBUG_PICT_INFO){ - printf("%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\n", av_get_pict_type_char(s->pict_type), h->halfpel_flag, h->thirdpel_flag, s->adaptive_quant, s->qscale ); @@ -874,7 +880,7 @@ static int svq3_decode_frame (AVCodecContext *avctx, h->frame_num_offset += 256; } if (h->frame_num_offset == 0 || h->frame_num_offset >= h->prev_frame_num_offset) { - printf ("error in B-frame picture id\n"); + av_log(h->s.avctx, AV_LOG_ERROR, "error in B-frame picture id\n"); return -1; } } else { @@ -920,7 +926,7 @@ static int svq3_decode_frame (AVCodecContext *avctx, mb_type += 4; } if (mb_type > 33 || svq3_decode_mb (h, mb_type)) { - fprintf (stderr, "error while decoding MB %d %d\n", s->mb_x, s->mb_y); + av_log(h->s.avctx, AV_LOG_ERROR, "error while decoding MB %d %d\n", s->mb_x, s->mb_y); return -1; } |