aboutsummaryrefslogtreecommitdiff
path: root/libavformat
diff options
context:
space:
mode:
authorBaptiste Coudurier2009-02-02 10:54:10 +0000
committerBaptiste Coudurier2009-02-02 10:54:10 +0000
commit2253d6d77397a619ec96889636a9ce868a81ddc5 (patch)
tree1d643f60dd83c12da7986f7938841406a0954c3d /libavformat
parenta4397fa911b79bd04f90e1a49dab5ef15226baab (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.c24
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;
}