On 4/18/2018 10:49 AM, James Almer wrote: > 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 <jamr...@gmail.com> > --- > libavformat/vpcc.c | 29 ++++++++++++++++++++++++----- > libavformat/vpcc.h | 11 +++++++++++ > 2 files changed, 35 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); > diff --git a/libavformat/vpcc.h b/libavformat/vpcc.h > index 184e8579f1..d71ba05105 100644 > --- a/libavformat/vpcc.h > +++ b/libavformat/vpcc.h > @@ -32,6 +32,14 @@ > #include "avformat.h" > #include "libavcodec/avcodec.h" > > +typedef struct VPCC { > + int profile; > + int level; > + int bitdepth; > + int chroma_subsampling; > + int full_range_flag; > +} VPCC; > + > /** > * Writes VP codec configuration to the provided AVIOContext. > * > @@ -44,4 +52,7 @@ > int ff_isom_write_vpcc(AVFormatContext *s, AVIOContext *pb, > AVCodecParameters *par); > > +int ff_isom_get_vpcc_features(AVFormatContext *s, AVCodecParameters *par, > + VPCC *vpcc); > + > #endif /* AVFORMAT_VPCC_H */
Applied. _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel