diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2012-03-03 00:09:47 +0100 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2012-03-03 00:23:10 +0100 |
commit | 268098d8b2a6e3dd84be788a2cd6fda10f7b3e71 (patch) | |
tree | afd9e17a980920b66edb38331e5a608308da711d /libavformat/electronicarts.c | |
parent | 689f65126be8a55e8a1e706cb56b19bb975c20ce (diff) | |
parent | 9d87374ec0f382c8394ad511243db6980afa42af (diff) | |
download | ffmpeg-268098d8b2a6e3dd84be788a2cd6fda10f7b3e71.tar.gz |
Merge remote-tracking branch 'qatar/master'
* qatar/master: (29 commits)
amrwb: remove duplicate arguments from extrapolate_isf().
amrwb: error out early if mode is invalid.
h264: change underread for 10bit QPEL to overread.
matroska: check buffer size for RM-style byte reordering.
vp8: disable mmx functions with sse/sse2 counterparts on x86-64.
vp8: change int stride to ptrdiff_t stride.
wma: fix invalid buffer size assumptions causing random overreads.
Windows Media Audio Lossless decoder
rv10/20: Fix slice overflow with checked bitstream reader.
h263dec: Disallow width/height changing with frame threads.
rv10/20: Fix a buffer overread caused by losing track of the remaining buffer size.
rmdec: Honor .RMF tag size rather than assuming 18.
g722: Fix the QMF scaling
r3d: don't set codec timebase.
electronicarts: set timebase for tgv video.
electronicarts: parse the framerate for cmv video.
ogg: don't set codec timebase
electronicarts: don't set codec timebase
avs: don't set codec timebase
wavpack: Fix an integer overflow
...
Conflicts:
libavcodec/arm/vp8dsp_init_arm.c
libavcodec/fraps.c
libavcodec/h264.c
libavcodec/mpeg4videodec.c
libavcodec/mpegvideo.c
libavcodec/msmpeg4.c
libavcodec/pnmdec.c
libavcodec/qpeg.c
libavcodec/rawenc.c
libavcodec/ulti.c
libavcodec/vcr1.c
libavcodec/version.h
libavcodec/wmalosslessdec.c
libavformat/electronicarts.c
libswscale/ppc/yuv2rgb_altivec.c
tests/ref/acodec/g722
tests/ref/fate/ea-cmv
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat/electronicarts.c')
-rw-r--r-- | libavformat/electronicarts.c | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/libavformat/electronicarts.c b/libavformat/electronicarts.c index 55cab7c70f..9719c6711a 100644 --- a/libavformat/electronicarts.c +++ b/libavformat/electronicarts.c @@ -283,6 +283,20 @@ static int process_video_header_vp6(AVFormatContext *s) return 1; } +static int process_video_header_cmv(AVFormatContext *s) +{ + EaDemuxContext *ea = s->priv_data; + int fps; + + avio_skip(s->pb, 10); + fps = avio_rl16(s->pb); + if (fps) + ea->time_base = (AVRational){1, fps}; + ea->video_codec = CODEC_ID_CMV; + + return 0; +} + /* * Process EA file header * Returns 1 if the EA file is valid and successfully opened, 0 otherwise @@ -330,7 +344,7 @@ static int process_ea_header(AVFormatContext *s) { break; case MVIh_TAG : - ea->video_codec = CODEC_ID_CMV; + err = process_video_header_cmv(s); break; case kVGT_TAG: @@ -418,10 +432,12 @@ static int ea_read_header(AVFormatContext *s) if (st->codec->codec_id == CODEC_ID_MPEG2VIDEO) st->need_parsing = AVSTREAM_PARSE_HEADERS; st->codec->codec_tag = 0; /* no fourcc */ - if (ea->time_base.num) - avpriv_set_pts_info(st, 64, ea->time_base.num, ea->time_base.den); st->codec->width = ea->width; st->codec->height = ea->height; + if (ea->time_base.num) + avpriv_set_pts_info(st, 64, ea->time_base.num, ea->time_base.den); + st->r_frame_rate = st->avg_frame_rate = (AVRational){ea->time_base.den, + ea->time_base.num}; } if (ea->audio_codec) { |