Commit 5ac4d768 authored by Baptiste Coudurier's avatar Baptiste Coudurier

reuse MXFCodecUL for data def and simplify

Originally committed as revision 17042 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent 251bf875
...@@ -24,11 +24,10 @@ ...@@ -24,11 +24,10 @@
/** /**
* SMPTE RP224 http://www.smpte-ra.org/mdd/index.html * SMPTE RP224 http://www.smpte-ra.org/mdd/index.html
*/ */
const MXFDataDefinitionUL ff_mxf_data_definition_uls[] = { const MXFCodecUL ff_mxf_data_definition_uls[] = {
{ { 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x01,0x01,0x03,0x02,0x02,0x01,0x00,0x00,0x00 }, CODEC_TYPE_VIDEO }, { { 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x01,0x01,0x03,0x02,0x02,0x01,0x00,0x00,0x00 }, 13, CODEC_TYPE_VIDEO },
{ { 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x01,0x01,0x03,0x02,0x02,0x02,0x00,0x00,0x00 }, CODEC_TYPE_AUDIO }, { { 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x01,0x01,0x03,0x02,0x02,0x02,0x00,0x00,0x00 }, 13, CODEC_TYPE_AUDIO },
{ { 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x05,0x01,0x03,0x02,0x02,0x02,0x02,0x00,0x00 }, CODEC_TYPE_AUDIO }, { { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, 0, CODEC_TYPE_DATA },
{ { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, CODEC_TYPE_DATA },
}; };
const MXFCodecUL ff_mxf_codec_uls[] = { const MXFCodecUL ff_mxf_codec_uls[] = {
......
...@@ -55,15 +55,10 @@ typedef struct { ...@@ -55,15 +55,10 @@ typedef struct {
typedef struct { typedef struct {
UID uid; UID uid;
unsigned matching_len; unsigned matching_len;
enum CodecID id; int id;
} MXFCodecUL; } MXFCodecUL;
typedef struct { extern const MXFCodecUL ff_mxf_data_definition_uls[];
UID uid;
enum CodecType type;
} MXFDataDefinitionUL;
extern const MXFDataDefinitionUL ff_mxf_data_definition_uls[];
extern const MXFCodecUL ff_mxf_codec_uls[]; extern const MXFCodecUL ff_mxf_codec_uls[];
#ifdef DEBUG #ifdef DEBUG
......
...@@ -618,7 +618,7 @@ static int mxf_match_uid(const UID key, const UID uid, int len) ...@@ -618,7 +618,7 @@ static int mxf_match_uid(const UID key, const UID uid, int len)
static const MXFCodecUL *mxf_get_codec_ul(const MXFCodecUL *uls, UID *uid) static const MXFCodecUL *mxf_get_codec_ul(const MXFCodecUL *uls, UID *uid)
{ {
while (uls->id != CODEC_ID_NONE) { while (uls->uid[0]) {
if(mxf_match_uid(uls->uid, *uid, uls->matching_len)) if(mxf_match_uid(uls->uid, *uid, uls->matching_len))
break; break;
uls++; uls++;
...@@ -626,16 +626,6 @@ static const MXFCodecUL *mxf_get_codec_ul(const MXFCodecUL *uls, UID *uid) ...@@ -626,16 +626,6 @@ static const MXFCodecUL *mxf_get_codec_ul(const MXFCodecUL *uls, UID *uid)
return uls; return uls;
} }
static enum CodecType mxf_get_codec_type(const MXFDataDefinitionUL *uls, UID *uid)
{
while (uls->type != CODEC_TYPE_DATA) {
if(mxf_match_uid(uls->uid, *uid, 16))
break;
uls++;
}
return uls->type;
}
static void *mxf_resolve_strong_ref(MXFContext *mxf, UID *strong_ref, enum MXFMetadataSetType type) static void *mxf_resolve_strong_ref(MXFContext *mxf, UID *strong_ref, enum MXFMetadataSetType type)
{ {
int i; int i;
...@@ -757,7 +747,8 @@ static int mxf_parse_structural_metadata(MXFContext *mxf) ...@@ -757,7 +747,8 @@ static int mxf_parse_structural_metadata(MXFContext *mxf)
} }
PRINT_KEY(mxf->fc, "data definition ul", source_track->sequence->data_definition_ul); PRINT_KEY(mxf->fc, "data definition ul", source_track->sequence->data_definition_ul);
st->codec->codec_type = mxf_get_codec_type(ff_mxf_data_definition_uls, &source_track->sequence->data_definition_ul); codec_ul = mxf_get_codec_ul(ff_mxf_data_definition_uls, &source_track->sequence->data_definition_ul);
st->codec->codec_type = codec_ul->id;
source_package->descriptor = mxf_resolve_strong_ref(mxf, &source_package->descriptor_ref, AnyType); source_package->descriptor = mxf_resolve_strong_ref(mxf, &source_package->descriptor_ref, AnyType);
if (source_package->descriptor) { if (source_package->descriptor) {
......
...@@ -325,11 +325,11 @@ static void mxf_free(AVFormatContext *s) ...@@ -325,11 +325,11 @@ static void mxf_free(AVFormatContext *s)
} }
} }
static const MXFDataDefinitionUL *mxf_get_data_definition_ul(enum CodecType type) static const MXFCodecUL *mxf_get_data_definition_ul(int type)
{ {
const MXFDataDefinitionUL *uls = ff_mxf_data_definition_uls; const MXFCodecUL *uls = ff_mxf_data_definition_uls;
while (uls->type != CODEC_TYPE_DATA) { while (uls->uid[0]) {
if (type == uls->type) if (type == uls->id)
break; break;
uls++; uls++;
} }
...@@ -509,7 +509,7 @@ static void mxf_write_track(AVFormatContext *s, AVStream *st, enum MXFMetadataSe ...@@ -509,7 +509,7 @@ static void mxf_write_track(AVFormatContext *s, AVStream *st, enum MXFMetadataSe
static void mxf_write_common_fields(ByteIOContext *pb, AVStream *st) static void mxf_write_common_fields(ByteIOContext *pb, AVStream *st)
{ {
const MXFDataDefinitionUL *data_def_ul = mxf_get_data_definition_ul(st->codec->codec_type); const MXFCodecUL *data_def_ul = mxf_get_data_definition_ul(st->codec->codec_type);
MXFStreamContext *sc = st->priv_data; MXFStreamContext *sc = st->priv_data;
// find data define uls // find data define uls
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment