diff options
author | James Almer <jamrial@gmail.com> | 2018-01-13 16:04:55 -0300 |
---|---|---|
committer | James Almer <jamrial@gmail.com> | 2018-04-22 16:24:48 -0300 |
commit | 153e92089207b1a634f6b5b7b1daf24386c2be23 (patch) | |
tree | 52ed605a6f3c1dcad7c7215c3c0167ca25b2c96e /libavformat/vpcc.c | |
parent | 07a566e7d6fc4dbb4250da55d925b5591b3d03f9 (diff) | |
download | ffmpeg-153e92089207b1a634f6b5b7b1daf24386c2be23.tar.gz |
avformat/vpcc: add ff_isom_get_vpcc_features()
Should be useful for muxers that require values as defined in the
vpcc atom but don't need to write the atom itself.
Signed-off-by: James Almer <jamrial@gmail.com>
Diffstat (limited to 'libavformat/vpcc.c')
-rw-r--r-- | libavformat/vpcc.c | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/libavformat/vpcc.c b/libavformat/vpcc.c index df08de59a6..66d0df69e5 100644 --- a/libavformat/vpcc.c +++ b/libavformat/vpcc.c @@ -67,8 +67,8 @@ static int get_vpx_video_full_range_flag(enum AVColorRange color_range) return color_range == AVCOL_RANGE_JPEG; } -int ff_isom_write_vpcc(AVFormatContext *s, AVIOContext *pb, - AVCodecParameters *par) +int ff_isom_get_vpcc_features(AVFormatContext *s, AVCodecParameters *par, + VPCC *vpcc) { int profile = par->profile; int level = par->level == FF_LEVEL_UNKNOWN ? 0 : par->level; @@ -90,9 +90,28 @@ int ff_isom_write_vpcc(AVFormatContext *s, AVIOContext *pb, } } - avio_w8(pb, profile); - avio_w8(pb, level); - avio_w8(pb, (bit_depth << 4) | (vpx_chroma_subsampling << 1) | vpx_video_full_range_flag); + vpcc->profile = profile; + vpcc->level = level; + vpcc->bitdepth = bit_depth; + vpcc->chroma_subsampling = vpx_chroma_subsampling; + vpcc->full_range_flag = vpx_video_full_range_flag; + + return 0; +} + +int ff_isom_write_vpcc(AVFormatContext *s, AVIOContext *pb, + AVCodecParameters *par) +{ + VPCC vpcc; + int ret; + + ret = ff_isom_get_vpcc_features(s, par, &vpcc); + if (ret < 0) + return ret; + + avio_w8(pb, vpcc.profile); + avio_w8(pb, vpcc.level); + avio_w8(pb, (vpcc.bitdepth << 4) | (vpcc.chroma_subsampling << 1) | vpcc.full_range_flag); avio_w8(pb, par->color_primaries); avio_w8(pb, par->color_trc); avio_w8(pb, par->color_space); |