|
|
|
@ -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; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|