On Thu, Apr 21, 2016 at 05:03:01PM +0300, Maksym Veremeyenko wrote: > Hi, > > attached patches extends Generic/CDDI/MPEG2 essence descriptors with > additional items. These items required by AMWA AS-10 MXF > specification. > > -- > Maksym Veremeyenko > [...]
> mxfenc.c | 91 > ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- > 1 file changed, 90 insertions(+), 1 deletion(-) > 0df0bfaa318361ecec5c47572650b3563b0f8a74 > 0001-Extend-Generic-CDCI-picture-essence-descriptors-with.patch > From eb3ef1f423864bd8d79d6170bbc137ac0be62f0b Mon Sep 17 00:00:00 2001 > From: Maksym Veremeyenko <ve...@m1.tv> > Date: Wed, 20 Apr 2016 14:24:40 +0300 > Subject: [PATCH 1/2] Extend Generic/CDCI picture essence descriptors with > additional items does this fix something ? > > --- > libavformat/mxfenc.c | 91 > +++++++++++++++++++++++++++++++++++++++++++++++++- > 1 files changed, 90 insertions(+), 1 deletions(-) > > diff --git a/libavformat/mxfenc.c b/libavformat/mxfenc.c > index 36a43e4..ec42cf5 100644 > --- a/libavformat/mxfenc.c > +++ b/libavformat/mxfenc.c > @@ -419,10 +419,27 @@ static const MXFLocalTagPair mxf_local_tag_batch[] = { > { 0x3201, > {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x04,0x01,0x06,0x01,0x00,0x00,0x00,0x00}}, > /* Picture Essence Coding */ > { 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 */ > + { 0x3216, > {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x05,0x04,0x01,0x03,0x02,0x08,0x00,0x00,0x00}}, > /* StoredF2Offset */ > + { 0x3205, > {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x01,0x04,0x01,0x05,0x01,0x08,0x00,0x00,0x00}}, > /* Sampled Width */ > + { 0x3204, > {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x01,0x04,0x01,0x05,0x01,0x07,0x00,0x00,0x00}}, > /* Sampled Height */ > + { 0x3206, > {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x01,0x04,0x01,0x05,0x01,0x09,0x00,0x00,0x00}}, > /* SampledXOffset */ > + { 0x3207, > {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x01,0x04,0x01,0x05,0x01,0x0A,0x00,0x00,0x00}}, > /* SampledYOffset */ > + { 0x320A, > {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x01,0x04,0x01,0x05,0x01,0x0D,0x00,0x00,0x00}}, > /* DisplayXOffset */ > + { 0x3217, > {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x05,0x04,0x01,0x03,0x02,0x07,0x00,0x00,0x00}}, > /* DisplayF2Offset */ > + { 0x3210, > {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x04,0x01,0x02,0x01,0x01,0x01,0x02,0x00}}, > /* Capture Gamma */ > + { 0x3211, > {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x04,0x18,0x01,0x01,0x00,0x00,0x00,0x00}}, > /* Image Alignment Offset */ > + { 0x3213, > {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x04,0x18,0x01,0x02,0x00,0x00,0x00,0x00}}, > /* Image Start Offset */ > + { 0x3214, > {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x04,0x18,0x01,0x03,0x00,0x00,0x00,0x00}}, > /* Image End Offset */ > // CDCI Picture Essence Descriptor > { 0x3301, > {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x04,0x01,0x05,0x03,0x0A,0x00,0x00,0x00}}, > /* Component Depth */ > { 0x3302, > {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x01,0x04,0x01,0x05,0x01,0x05,0x00,0x00,0x00}}, > /* Horizontal Subsampling */ > { 0x3303, > {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x01,0x04,0x01,0x05,0x01,0x06,0x00,0x00,0x00}}, > /* Color Siting */ > + { 0x3308, > {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x04,0x01,0x05,0x01,0x10,0x00,0x00,0x00}}, > /* Vertical Subsampling */ > + { 0x330B, > {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x05,0x03,0x01,0x02,0x01,0x0A,0x00,0x00,0x00}}, > /* ReversedByteOrder */ > + { 0x3307, > {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x04,0x18,0x01,0x04,0x00,0x00,0x00,0x00}}, > /* PaddingBits */ > + { 0x3304, > {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x01,0x04,0x01,0x05,0x03,0x03,0x00,0x00,0x00}}, > /* Black Ref Level */ > + { 0x3305, > {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x01,0x04,0x01,0x05,0x03,0x04,0x00,0x00,0x00}}, > /* White Ref level */ > + { 0x3306, > {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x04,0x01,0x05,0x03,0x05,0x00,0x00,0x00}}, > /* Color Range */ > // Generic Sound Essence Descriptor > { 0x3D02, > {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x04,0x04,0x02,0x03,0x01,0x04,0x00,0x00,0x00}}, > /* Locked/Unlocked */ > { 0x3D03, > {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x05,0x04,0x02,0x03,0x01,0x01,0x01,0x00,0x00}}, > /* Audio sampling rate */ > @@ -452,6 +469,11 @@ static const MXFLocalTagPair > mxf_user_comments_local_tag[] = { > { 0x5003, > {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x03,0x02,0x01,0x02,0x0A,0x01,0x00,0x00}}, > /* Value */ > }; > > +static const uint8_t capture_gamma_ITU470[] = // MXF-Profile ARD_ZDF_SDF02 - > v1.0.pdf > + > {06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x01,0x04,0x01,0x01,0x01,0x01,0x01,0x00,0x00}; > +static const uint8_t capture_gamma_ITU709[] = // MXF-Profile ARD_ZDF_HDF01a > - v1.1.pdf, also used in SMPTE 170M, 274M and 296M > + > {06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x01,0x04,0x01,0x01,0x01,0x01,0x02,0x00,0x00}; > + > static void mxf_write_uuid(AVIOContext *pb, enum MXFMetadataSetType type, > int value) > { > avio_write(pb, uuid_base, 12); > @@ -1013,7 +1035,7 @@ static void mxf_write_cdci_common(AVFormatContext *s, > AVStream *st, const UID ke > int stored_height = (st->codecpar->height+15)/16*16; > int display_height; > int f1, f2; > - unsigned desc_size = size+8+8+8+8+8+8+8+5+16+4+12+20+5; > + unsigned desc_size = > size+8+8+8+8+8+8+8+5+16+4+12+20+5+8+8+8+8+8+8+8+20+8+8+8+8+5+6+8+8+8; > if (sc->interlaced && sc->field_dominance) > desc_size += 5; > if (sc->signal_standard) > @@ -1100,6 +1122,73 @@ static void mxf_write_cdci_common(AVFormatContext *s, > AVStream *st, const UID ke > avio_w8(pb, sc->field_dominance); > } > > + /* StoredF2Offset */ > + mxf_write_local_tag(pb, 4, 0x3216); > + avio_wb32(pb, 0); > + > + /* Sampled Width */ > + mxf_write_local_tag(pb, 4, 0x3205); > + avio_wb32(pb, st->codecpar->width); > + > + /* Sampled Height */ > + mxf_write_local_tag(pb, 4, 0x3204); > + avio_wb32(pb, display_height); > + > + /* SampledXOffset */ > + mxf_write_local_tag(pb, 4, 0x3206); > + avio_wb32(pb, 0); > + > + /* SampledYOffset */ > + mxf_write_local_tag(pb, 4, 0x3207); > + avio_wb32(pb, 0); > + > + /* DisplayXOffset */ > + mxf_write_local_tag(pb, 4, 0x320A); > + avio_wb32(pb, 0); > + > + /* DisplayF2Offset */ > + mxf_write_local_tag(pb, 4, 0x3217); > + avio_wb32(pb, 0); are these the default values ? if so why store them ? > + > + /* Capture Gamma */ > + mxf_write_local_tag(pb, 16, 0x3210); > + avio_write(pb, (720 == st->codecpar->height || 1080 == > st->codecpar->height)?capture_gamma_ITU709:capture_gamma_ITU470, 16); [...] > + > + /* Vertical Subsampling */ > + mxf_write_local_tag(pb, 4, 0x3308); > + avio_wb32(pb, (AV_PIX_FMT_YUV422P == > st->codecpar->format)?1:(AV_PIX_FMT_YUV420P == st->codecpar->format)?2:0); Vertical Subsampling an be obtained from AVPixFmtDescriptor > + > + /* ReversedByteOrder */ > + mxf_write_local_tag(pb, 1, 0x330B); > + avio_w8(pb, 0); > + > + /* PaddingBits */ > + mxf_write_local_tag(pb, 2, 0x3307); > + avio_wb16(pb, 0); > + > + /* Black Ref Level */ > + mxf_write_local_tag(pb, 4, 0x3304); > + avio_wb32(pb, (8 == sc->component_depth)?16:64); > + > + /* White Ref level */ > + mxf_write_local_tag(pb, 4, 0x3305); > + avio_wb32(pb, (8 == sc->component_depth)?235:940); > + > + /* Color Range */ > + mxf_write_local_tag(pb, 4, 0x3306); > + avio_wb32(pb, (8 == sc->component_depth)?225:897); why do these not use the AVColor* fields ? [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB Its not that you shouldnt use gotos but rather that you should write readable code and code with gotos often but not always is less readable
signature.asc
Description: Digital signature
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel