diff options
author | Baptiste Coudurier | 2009-02-02 10:54:10 +0000 |
---|---|---|
committer | Baptiste Coudurier | 2009-02-02 10:54:10 +0000 |
commit | 2253d6d77397a619ec96889636a9ce868a81ddc5 (patch) | |
tree | 1d643f60dd83c12da7986f7938841406a0954c3d /libavformat | |
parent | a4397fa911b79bd04f90e1a49dab5ef15226baab (diff) |
more flexible mapping selection
Originally committed as revision 16941 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavformat')
-rw-r--r-- | libavformat/mxfenc.c | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/libavformat/mxfenc.c b/libavformat/mxfenc.c index b615e4644e..fe9096521b 100644 --- a/libavformat/mxfenc.c +++ b/libavformat/mxfenc.c @@ -75,10 +75,18 @@ typedef struct { UID container_ul; UID element_ul; UID codec_ul; - enum CodecID id; void (*write_desc)(); } MXFContainerEssenceEntry; +static const struct { + enum CodecID id; + int index; +} mxf_essence_mappings[] = { + { CODEC_ID_MPEG2VIDEO, 0 }, + { CODEC_ID_PCM_S16LE, 1 }, + { 0 } +}; + static void mxf_write_wav_desc(AVFormatContext *s, AVStream *st); static void mxf_write_aes3_desc(AVFormatContext *s, AVStream *st); static void mxf_write_mpegvideo_desc(AVFormatContext *s, AVStream *st); @@ -87,19 +95,19 @@ static const MXFContainerEssenceEntry mxf_essence_container_uls[] = { { { 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x02,0x0D,0x01,0x03,0x01,0x02,0x04,0x60,0x01 }, { 0x06,0x0E,0x2B,0x34,0x01,0x02,0x01,0x01,0x0D,0x01,0x03,0x01,0x15,0x01,0x05,0x00 }, { 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x03,0x04,0x01,0x02,0x02,0x01,0x00,0x00,0x00 }, - CODEC_ID_MPEG2VIDEO, mxf_write_mpegvideo_desc }, + mxf_write_mpegvideo_desc }, { { 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x01,0x0D,0x01,0x03,0x01,0x02,0x06,0x03,0x00 }, { 0x06,0x0E,0x2B,0x34,0x01,0x02,0x01,0x01,0x0D,0x01,0x03,0x01,0x16,0x01,0x03,0x00 }, { 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x01,0x04,0x02,0x02,0x01,0x00,0x00,0x00,0x00 }, - CODEC_ID_PCM_S16LE, mxf_write_aes3_desc }, + mxf_write_aes3_desc }, { { 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x01,0x0D,0x01,0x03,0x01,0x02,0x06,0x01,0x00 }, { 0x06,0x0E,0x2B,0x34,0x01,0x02,0x01,0x01,0x0D,0x01,0x03,0x01,0x16,0x01,0x01,0x00 }, { 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x01,0x04,0x02,0x02,0x01,0x00,0x00,0x00,0x00 }, - CODEC_ID_PCM_S16LE, mxf_write_wav_desc }, + mxf_write_wav_desc }, { { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, - CODEC_ID_NONE, NULL }, + NULL }, }; typedef struct MXFContext { @@ -264,9 +272,9 @@ static int klv_encode_ber_length(ByteIOContext *pb, uint64_t len) static int mxf_get_essence_container_ul_index(enum CodecID id) { int i; - for (i = 0; i < FF_ARRAY_ELEMS(mxf_essence_container_uls); i++) - if (mxf_essence_container_uls[i].id == id) - return i; + for (i = 0; mxf_essence_mappings[i].id; i++) + if (mxf_essence_mappings[i].id == id) + return mxf_essence_mappings[i].index; return -1; } |