[FFmpeg-devel] [PATCH] movenc/isom: update vpcC box to the latest draft specification

KongQun Yang kqyang at google.com
Sat Apr 22 00:25:25 EEST 2017


Hi Hendrik,

Thanks for working on it. Version needs to be updated as well:
https://github.com/FFmpeg/FFmpeg/blob/b905ba5bc18c89c7fccd8621795755644442ef19/libavformat/movenc.c#L1115.
Suggest moving it into ff_isom_write_vpcc function too.

-- KongQun Yang (KQ)

On Tue, Apr 18, 2017 at 7:30 AM, Hendrik Leppkes <h.leppkes at gmail.com>
wrote:

> This brings our generation of the vpcC box up to date to the latest
> draft version of the VP Codec ISO Media File Format Binding.
>
> Specifically, color/transfer properties are now written with values
> based on ISO/IEC 23001-8, which is the same reference specification the
> AVColor* enumerations are based on.
> ---
>  libavformat/vpcc.c | 53 ++++--------------------------
> -----------------------
>  1 file changed, 4 insertions(+), 49 deletions(-)
>
> diff --git a/libavformat/vpcc.c b/libavformat/vpcc.c
> index 2390e1711c..d20ca9edc2 100644
> --- a/libavformat/vpcc.c
> +++ b/libavformat/vpcc.c
> @@ -23,44 +23,6 @@
>  #include "libavutil/pixfmt.h"
>  #include "vpcc.h"
>
> -enum VpxColorSpace
> -{
> -    VPX_COLOR_SPACE_UNSPECIFIED = 0,
> -    VPX_COLOR_SPACE_BT601 = 1,
> -    VPX_COLOR_SPACE_BT709 = 2,
> -    VPX_COLOR_SPACE_SMPTE_170 = 3,
> -    VPX_COLOR_SPACE_SMPTE_240 = 4,
> -    VPX_COLOR_SPACE_BT2020_NCL = 5,
> -    VPX_COLOR_SPACE_BT2020_CL = 6,
> -    VPX_COLOR_SPACE_RGB = 7,
> -};
> -
> -static int get_vpx_color_space(AVFormatContext *s,
> -                               enum AVColorSpace color_space)
> -{
> -    switch (color_space) {
> -    case AVCOL_SPC_RGB:
> -        return VPX_COLOR_SPACE_RGB;
> -    case AVCOL_SPC_BT709:
> -        return VPX_COLOR_SPACE_BT709;
> -    case AVCOL_SPC_UNSPECIFIED:
> -        return VPX_COLOR_SPACE_UNSPECIFIED;
> -    case AVCOL_SPC_BT470BG:
> -        return VPX_COLOR_SPACE_BT601;
> -    case AVCOL_SPC_SMPTE170M:
> -        return VPX_COLOR_SPACE_SMPTE_170;
> -    case AVCOL_SPC_SMPTE240M:
> -        return VPX_COLOR_SPACE_SMPTE_240;
> -    case AVCOL_SPC_BT2020_NCL:
> -        return VPX_COLOR_SPACE_BT2020_NCL;
> -    case AVCOL_SPC_BT2020_CL:
> -        return VPX_COLOR_SPACE_BT2020_CL;
> -    default:
> -        av_log(s, AV_LOG_ERROR, "Unsupported color space (%d)\n",
> color_space);
> -        return -1;
> -    }
> -}
> -
>  enum VPX_CHROMA_SUBSAMPLING
>  {
>      VPX_SUBSAMPLING_420_VERTICAL = 0,
> @@ -100,12 +62,6 @@ static int get_bit_depth(AVFormatContext *s, enum
> AVPixelFormat pixel_format)
>      return desc->comp[0].depth;
>  }
>
> -static int get_vpx_transfer_function(
> -    enum AVColorTransferCharacteristic transfer)
> -{
> -    return transfer == AVCOL_TRC_SMPTEST2084;
> -}
> -
>  static int get_vpx_video_full_range_flag(enum AVColorRange color_range)
>  {
>      return color_range == AVCOL_RANGE_JPEG;
> @@ -117,10 +73,8 @@ int ff_isom_write_vpcc(AVFormatContext *s,
> AVIOContext *pb,
>      int profile = par->profile;
>      int level = par->level == FF_LEVEL_UNKNOWN ? 0 : par->level;
>      int bit_depth = get_bit_depth(s, par->format);
> -    int vpx_color_space = get_vpx_color_space(s, par->color_space);
>      int vpx_chroma_subsampling =
>          get_vpx_chroma_subsampling(s, par->format, par->chroma_location);
> -    int vpx_transfer_function = get_vpx_transfer_function(par-
> >color_trc);
>      int vpx_video_full_range_flag =
>          get_vpx_video_full_range_flag(par->color_range);
>
> @@ -138,9 +92,10 @@ int ff_isom_write_vpcc(AVFormatContext *s,
> AVIOContext *pb,
>
>      avio_w8(pb, profile);
>      avio_w8(pb, level);
> -    avio_w8(pb, (bit_depth << 4) | vpx_color_space);
> -    avio_w8(pb, (vpx_chroma_subsampling << 4) | (vpx_transfer_function <<
> 1) |
> -                    vpx_video_full_range_flag);
> +    avio_w8(pb, (bit_depth << 4) | (vpx_chroma_subsampling << 1) |
> vpx_video_full_range_flag);
> +    avio_w8(pb, par->color_primaries);
> +    avio_w8(pb, par->color_trc);
> +    avio_w8(pb, par->color_space);
>
>      // vp9 does not have codec initialization data.
>      avio_wb16(pb, 0);
> --
> 2.12.2.windows.2
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>


More information about the ffmpeg-devel mailing list