On Fri, Sep 23, 2016 at 10:19:03PM -0700, Steven Robertson wrote: > Signed-off-by: Steven Robertson <ste...@strobe.cc> > --- > libavformat/mxf.c | 33 +++++++++++++++++++++++++++++++++ > libavformat/mxf.h | 3 +++ > libavformat/mxfdec.c | 29 +++++++++++++++++++++++++++++ > libavformat/mxfenc.c | 36 +++++++++++++++++++++++++++++++----- > 4 files changed, 96 insertions(+), 5 deletions(-)
breaks fate make: *** [fate-copy-trac4914] Error 1 make: *** [fate-lavf-mxf_opatom_audio] Error 1 make: *** [fate-lavf-mxf] Error 1 make: *** [fate-lavf-mxf_d10] Error 1 make: *** [fate-lavf-mxf_opatom] Error 1 [...] > @@ -2085,6 +2100,20 @@ static int mxf_parse_structural_metadata(MXFContext > *mxf) > } > } > } > + > + color_primaries_ul = mxf_get_codec_ul(ff_mxf_color_primaries_uls, > + > &descriptor->color_primaries_ul); > + if (color_primaries_ul->uid[0]) > + st->codecpar->color_primaries = color_primaries_ul->id; > + color_space_ul = mxf_get_codec_ul(ff_mxf_coding_equations_uls, > + &descriptor->color_space_ul); > + if (color_space_ul->uid[0]) > + st->codecpar->color_space = color_space_ul->id; > + color_trc_ul = > mxf_get_codec_ul(ff_mxf_transfer_characteristics_uls, > + &descriptor->color_trc_ul); > + if (color_trc_ul->uid[0]) > + st->codecpar->color_trc = color_trc_ul->id; > + > st->need_parsing = AVSTREAM_PARSE_HEADERS; > if (material_track->sequence->origin) { > av_dict_set_int(&st->metadata, "material_track_origin", > material_track->sequence->origin, 0); > diff --git a/libavformat/mxfenc.c b/libavformat/mxfenc.c > index 7733ef8..eb77f3a 100644 > --- a/libavformat/mxfenc.c > +++ b/libavformat/mxfenc.c > @@ -415,9 +415,12 @@ static const MXFLocalTagPair mxf_local_tag_batch[] = { > { 0x3202, > {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x01,0x04,0x01,0x05,0x02,0x01,0x00,0x00,0x00}}, > /* Stored Height */ > { 0x3209, > {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x01,0x04,0x01,0x05,0x01,0x0C,0x00,0x00,0x00}}, > /* Display Width */ > { 0x3208, > {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x01,0x04,0x01,0x05,0x01,0x0B,0x00,0x00,0x00}}, > /* Display Height */ > + { 0x3210, > {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x04,0x01,0x02,0x01,0x01,0x01,0x02,0x00}}, > /* Transfer Characteristic */ > { 0x320B, > {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x01,0x04,0x01,0x05,0x01,0x0E,0x00,0x00,0x00}}, > /* Presentation Y offset */ > { 0x320E, > {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x01,0x04,0x01,0x01,0x01,0x01,0x00,0x00,0x00}}, > /* Aspect Ratio */ > { 0x3201, > {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x04,0x01,0x06,0x01,0x00,0x00,0x00,0x00}}, > /* Picture Essence Coding */ > + { 0x321A, > {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x04,0x01,0x02,0x01,0x01,0x03,0x01,0x00}}, > /* Coding Equations */ > + { 0x3219, > {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x09,0x04,0x01,0x02,0x01,0x01,0x06,0x01,0x00}}, > /* Color Primaries */ > { 0x3212, > {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x04,0x01,0x03,0x01,0x06,0x00,0x00,0x00}}, > /* Field Dominance (Opt) */ > { 0x3215, > {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x05,0x04,0x05,0x01,0x13,0x00,0x00,0x00,0x00}}, > /* Signal Standard */ > // CDCI Picture Essence Descriptor > @@ -576,11 +579,10 @@ static void mxf_free(AVFormatContext *s) > } > } > > -static const MXFCodecUL *mxf_get_data_definition_ul(int type) > +static const MXFCodecUL *mxf_get_ul_by_id(const MXFCodecUL *uls, int id) > { > - const MXFCodecUL *uls = ff_mxf_data_definition_uls; > while (uls->uid[0]) { > - if (type == uls->id) > + if (id == uls->id) > break; > uls++; > } > @@ -835,7 +837,7 @@ static void mxf_write_common_fields(AVFormatContext *s, > AVStream *st) > if (st == mxf->timecode_track) > avio_write(pb, smpte_12m_timecode_track_data_ul, 16); > else { > - const MXFCodecUL *data_def_ul = > mxf_get_data_definition_ul(st->codecpar->codec_type); > + const MXFCodecUL *data_def_ul = > mxf_get_ul_by_id(ff_mxf_data_definition_uls, st->codecpar->codec_type); > avio_write(pb, data_def_ul->uid, 16); > } > refactoring the code to make it more generic belongs in a seperate patch > @@ -1011,6 +1013,9 @@ static void mxf_write_cdci_common(AVFormatContext *s, > AVStream *st, const UID ke > { > MXFStreamContext *sc = st->priv_data; > AVIOContext *pb = s->pb; > + const MXFCodecUL* color_trc_ul; > + const MXFCodecUL* color_primaries_ul; > + const MXFCodecUL* color_space_ul; > int stored_height = (st->codecpar->height+15)/16*16; > int display_height; > int f1, f2; > @@ -1020,6 +1025,16 @@ static void mxf_write_cdci_common(AVFormatContext *s, > AVStream *st, const UID ke > if (sc->signal_standard) > desc_size += 5; > > + color_trc_ul = mxf_get_ul_by_id(ff_mxf_transfer_characteristics_uls, > st->codecpar->color_trc); > + if (color_trc_ul->uid[0]) > + desc_size += 20; > + color_primaries_ul = mxf_get_ul_by_id(ff_mxf_color_primaries_uls, > st->codecpar->color_primaries); > + if (color_primaries_ul->uid[0]) > + desc_size += 20; > + color_space_ul = mxf_get_ul_by_id(ff_mxf_coding_equations_uls, > st->codecpar->color_space); > + if (color_space_ul->uid[0]) > + desc_size += 20; inconsistent indention [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB Republics decline into democracies and democracies degenerate into despotisms. -- Aristotle
signature.asc
Description: Digital signature
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel