summaryrefslogtreecommitdiff
path: root/src/libffmpeg/libavcodec/svq3.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libffmpeg/libavcodec/svq3.c')
-rw-r--r--src/libffmpeg/libavcodec/svq3.c20
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;
}