From 2253d6d77397a619ec96889636a9ce868a81ddc5 Mon Sep 17 00:00:00 2001 From: Baptiste Coudurier Date: Mon, 2 Feb 2009 10:54:10 +0000 Subject: [PATCH] more flexible mapping selection Originally committed as revision 16941 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavformat/mxfenc.c | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/libavformat/mxfenc.c b/libavformat/mxfenc.c index b615e46..fe90965 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; } -- 2.7.4