[FFmpeg-cvslog] avcodec/hevc_parser: export framerate, remove one dependency on the decoder
Michael Niedermayer
git at videolan.org
Tue Feb 14 18:14:10 EET 2017
ffmpeg | branch: master | Michael Niedermayer <michael at niedermayer.cc> | Tue Feb 14 16:33:53 2017 +0100| [db3507a670aec46fd5ed58c90d2927eb7f72d8ed] | committer: Michael Niedermayer
avcodec/hevc_parser: export framerate, remove one dependency on the decoder
Fixes Ticket6090
Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=db3507a670aec46fd5ed58c90d2927eb7f72d8ed
---
libavcodec/hevc_parser.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/libavcodec/hevc_parser.c b/libavcodec/hevc_parser.c
index 508f22f..3546048 100644
--- a/libavcodec/hevc_parser.c
+++ b/libavcodec/hevc_parser.c
@@ -230,6 +230,7 @@ static inline int parse_nal_units(AVCodecParserContext *s, const uint8_t *buf,
for (;;) {
int src_length, consumed;
int ret;
+ int num = 0, den = 0;
buf = avpriv_find_start_code(buf, buf_end, &state);
if (--buf + 2 >= buf_end)
break;
@@ -320,6 +321,18 @@ static inline int parse_nal_units(AVCodecParserContext *s, const uint8_t *buf,
avctx->profile = ps->sps->ptl.general_ptl.profile_idc;
avctx->level = ps->sps->ptl.general_ptl.level_idc;
+ if (ps->vps->vps_timing_info_present_flag) {
+ num = ps->vps->vps_num_units_in_tick;
+ den = ps->vps->vps_time_scale;
+ } else if (ps->sps->vui.vui_timing_info_present_flag) {
+ num = ps->sps->vui.vui_num_units_in_tick;
+ den = ps->sps->vui.vui_time_scale;
+ }
+
+ if (num != 0 && den != 0)
+ av_reduce(&avctx->framerate.den, &avctx->framerate.num,
+ num, den, 1 << 30);
+
if (!sh->first_slice_in_pic_flag) {
int slice_address_length;
More information about the ffmpeg-cvslog
mailing list