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

Attachment: signature.asc
Description: Digital signature

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to