On Wed, 8 Jan 2014 03:25:36 +0100, Luca Barbato <[email protected]> wrote: > From: Matthieu Bouron <[email protected]> > > And export the information in field_order. > > Signed-off-by: Luca Barbato <[email protected]> > --- > libavformat/mxfdec.c | 17 +++++++++++++++++ > 1 file changed, 17 insertions(+) > > diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c > index c51841f..8777965 100644 > --- a/libavformat/mxfdec.c > +++ b/libavformat/mxfdec.c > @@ -134,6 +134,9 @@ typedef struct { > int width; > int height; /* Field height, not frame height */ > int frame_layout; /* See MXFFrameLayout enum */ > +#define MXF_TFF 1 > +#define MXF_BFF 2 > + int field_dominance; > int channels; > int bits_per_sample; > unsigned int component_depth; > @@ -830,6 +833,9 @@ static int mxf_read_generic_descriptor(void *arg, > AVIOContext *pb, int tag, int > descriptor->aspect_ratio.num = avio_rb32(pb); > descriptor->aspect_ratio.den = avio_rb32(pb); > break; > + case 0x3212: > + descriptor->field_dominance = avio_r8(pb); > + break; > case 0x3301: > descriptor->component_depth = avio_rb32(pb); > break; > @@ -1493,6 +1499,17 @@ static int mxf_parse_structural_metadata(MXFContext > *mxf) > case MixedFields: > /* Turn field height into frame height. */ > st->codec->height *= 2; > + switch (descriptor->field_dominance) { > + case MXF_TFF: > + st->codec->field_order = AV_FIELD_TT; > + break; > + case MXF_BFF: > + st->codec->field_order = AV_FIELD_BB; > + break; > + default: > + break;
A warning about invalid field order would be a good idea IMO. Also the indentation is off. -- Anton Khirnov _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
