X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Fvpcc.c;h=df08de59a6a520949fa65ecd7422a3c879af491f;hb=18bca25adbae9d010d75f9fc197c0af656af758d;hp=2390e1711c169ecee8d40b37e721b4dcea44b43c;hpb=b010843594fee88a791185b83684e0e725007b7b;p=ffmpeg diff --git a/libavformat/vpcc.c b/libavformat/vpcc.c index 2390e1711c1..df08de59a6a 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,14 +73,12 @@ 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); - if (bit_depth < 0 || vpx_color_space < 0 || vpx_chroma_subsampling < 0) + if (bit_depth < 0 || vpx_chroma_subsampling < 0) return AVERROR_INVALIDDATA; if (profile == FF_PROFILE_UNKNOWN) { @@ -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);