|
|
|
@@ -154,7 +154,7 @@ static inline int mpeg4_is_resync(MpegEncContext *s){ |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
static void mpeg4_decode_sprite_trajectory(MpegEncContext * s, GetBitContext *gb) |
|
|
|
static int mpeg4_decode_sprite_trajectory(MpegEncContext *s, GetBitContext *gb) |
|
|
|
{ |
|
|
|
int i; |
|
|
|
int a= 2<<s->sprite_warping_accuracy; |
|
|
|
@@ -170,6 +170,9 @@ static void mpeg4_decode_sprite_trajectory(MpegEncContext * s, GetBitContext *gb |
|
|
|
int h= s->height; |
|
|
|
int min_ab; |
|
|
|
|
|
|
|
if (w <= 0 || h <= 0) |
|
|
|
return AVERROR_INVALIDDATA; |
|
|
|
|
|
|
|
for(i=0; i<s->num_sprite_warping_points; i++){ |
|
|
|
int length; |
|
|
|
int x=0, y=0; |
|
|
|
@@ -342,6 +345,7 @@ static void mpeg4_decode_sprite_trajectory(MpegEncContext * s, GetBitContext *gb |
|
|
|
} |
|
|
|
s->real_sprite_warping_points= s->num_sprite_warping_points; |
|
|
|
} |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
@@ -416,7 +420,8 @@ int ff_mpeg4_decode_video_packet_header(MpegEncContext *s) |
|
|
|
skip_bits(&s->gb, 3); /* intra dc vlc threshold */ |
|
|
|
//FIXME don't just ignore everything |
|
|
|
if(s->pict_type == AV_PICTURE_TYPE_S && s->vol_sprite_usage==GMC_SPRITE){ |
|
|
|
mpeg4_decode_sprite_trajectory(s, &s->gb); |
|
|
|
if (mpeg4_decode_sprite_trajectory(s, &s->gb) < 0) |
|
|
|
return AVERROR_INVALIDDATA; |
|
|
|
av_log(s->avctx, AV_LOG_ERROR, "untested\n"); |
|
|
|
} |
|
|
|
|
|
|
|
@@ -2031,7 +2036,8 @@ static int decode_vop_header(MpegEncContext *s, GetBitContext *gb){ |
|
|
|
} |
|
|
|
|
|
|
|
if(s->pict_type == AV_PICTURE_TYPE_S && (s->vol_sprite_usage==STATIC_SPRITE || s->vol_sprite_usage==GMC_SPRITE)){ |
|
|
|
mpeg4_decode_sprite_trajectory(s, gb); |
|
|
|
if (mpeg4_decode_sprite_trajectory(s, gb) < 0) |
|
|
|
return AVERROR_INVALIDDATA; |
|
|
|
if(s->sprite_brightness_change) av_log(s->avctx, AV_LOG_ERROR, "sprite_brightness_change not supported\n"); |
|
|
|
if(s->vol_sprite_usage==STATIC_SPRITE) av_log(s->avctx, AV_LOG_ERROR, "static sprite not supported\n"); |
|
|
|
} |
|
|
|
|