[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