mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-21 10:55:51 +02:00
Electronic Arts CMV demuxer
Originally committed as revision 14111 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
495900f78b
commit
b2f181c270
@ -1,5 +1,6 @@
|
|||||||
/* Electronic Arts Multimedia File Demuxer
|
/* Electronic Arts Multimedia File Demuxer
|
||||||
* Copyright (c) 2004 The ffmpeg Project
|
* Copyright (c) 2004 The ffmpeg Project
|
||||||
|
* Copyright (c) 2006-2008 Peter Ross
|
||||||
*
|
*
|
||||||
* This file is part of FFmpeg.
|
* This file is part of FFmpeg.
|
||||||
*
|
*
|
||||||
@ -45,6 +46,7 @@
|
|||||||
#define MV0K_TAG MKTAG('M', 'V', '0', 'K')
|
#define MV0K_TAG MKTAG('M', 'V', '0', 'K')
|
||||||
#define MV0F_TAG MKTAG('M', 'V', '0', 'F')
|
#define MV0F_TAG MKTAG('M', 'V', '0', 'F')
|
||||||
#define MVIh_TAG MKTAG('M', 'V', 'I', 'h') /* CMV header */
|
#define MVIh_TAG MKTAG('M', 'V', 'I', 'h') /* CMV header */
|
||||||
|
#define MVIf_TAG MKTAG('M', 'V', 'I', 'f') /* CMV i-frame */
|
||||||
|
|
||||||
typedef struct EaDemuxContext {
|
typedef struct EaDemuxContext {
|
||||||
int big_endian;
|
int big_endian;
|
||||||
@ -299,6 +301,11 @@ static int process_ea_header(AVFormatContext *s) {
|
|||||||
err = process_audio_header_sead(s);
|
err = process_audio_header_sead(s);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case MVIh_TAG :
|
||||||
|
ea->video_codec = CODEC_ID_CMV;
|
||||||
|
ea->time_base = (AVRational){0,0};
|
||||||
|
break;
|
||||||
|
|
||||||
case MVhd_TAG :
|
case MVhd_TAG :
|
||||||
err = process_video_header_vp6(s);
|
err = process_video_header_vp6(s);
|
||||||
break;
|
break;
|
||||||
@ -441,9 +448,17 @@ static int ea_read_packet(AVFormatContext *s,
|
|||||||
packet_read = 1;
|
packet_read = 1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case MVIh_TAG:
|
||||||
|
key = PKT_FLAG_KEY;
|
||||||
|
case MVIf_TAG:
|
||||||
|
url_fseek(pb, -8, SEEK_CUR); // include chunk preamble
|
||||||
|
chunk_size += 8;
|
||||||
|
goto get_video_packet;
|
||||||
|
|
||||||
case MV0K_TAG:
|
case MV0K_TAG:
|
||||||
key = PKT_FLAG_KEY;
|
key = PKT_FLAG_KEY;
|
||||||
case MV0F_TAG:
|
case MV0F_TAG:
|
||||||
|
get_video_packet:
|
||||||
ret = av_get_packet(pb, pkt, chunk_size);
|
ret = av_get_packet(pb, pkt, chunk_size);
|
||||||
if (ret != chunk_size)
|
if (ret != chunk_size)
|
||||||
ret = AVERROR_IO;
|
ret = AVERROR_IO;
|
||||||
|
Loading…
Reference in New Issue
Block a user