diff options
author | Michael Niedermayer <michael@niedermayer.cc> | 2017-02-14 16:33:53 +0100 |
---|---|---|
committer | Michael Niedermayer <michael@niedermayer.cc> | 2017-02-14 17:00:30 +0100 |
commit | db3507a670aec46fd5ed58c90d2927eb7f72d8ed (patch) | |
tree | e849779a30f6c68e15b2b9666115e29db4acb4be /libavcodec/hevc_parser.c | |
parent | 8c8e5d5286bf598a89ef9993a2cf6ea409d03a32 (diff) | |
download | ffmpeg-db3507a670aec46fd5ed58c90d2927eb7f72d8ed.tar.gz |
avcodec/hevc_parser: export framerate, remove one dependency on the decoder
Fixes Ticket6090
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Diffstat (limited to 'libavcodec/hevc_parser.c')
-rw-r--r-- | libavcodec/hevc_parser.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/libavcodec/hevc_parser.c b/libavcodec/hevc_parser.c index 508f22f46d..3546048609 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; |