summaryrefslogtreecommitdiff
path: root/libavcodec/hevc.c
diff options
context:
space:
mode:
authorGuillaume Martres <smarter@ubuntu.com>2013-12-10 15:42:29 +0100
committerAnton Khirnov <anton@khirnov.net>2013-12-11 20:39:54 +0100
commit17a10d51b8351ce9a57fcb6537b6a3c6ec8ba5e9 (patch)
treefbd7005df5aa5bf228e25fe539b565eb61f642a2 /libavcodec/hevc.c
parent33452aede6acab78f726cd1924824585f00765cc (diff)
hevc: set time_base when possible
Signed-off-by: Anton Khirnov <anton@khirnov.net>
Diffstat (limited to 'libavcodec/hevc.c')
-rw-r--r--libavcodec/hevc.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/libavcodec/hevc.c b/libavcodec/hevc.c
index d969f5eea7..4af5aee155 100644
--- a/libavcodec/hevc.c
+++ b/libavcodec/hevc.c
@@ -388,6 +388,7 @@ static int decode_lt_rps(HEVCContext *s, LongTermRPS *rps, GetBitContext *gb)
static int set_sps(HEVCContext *s, const HEVCSPS *sps)
{
int ret;
+ int num = 0, den = 0;
pic_arrays_free(s);
ret = pic_arrays_init(s, sps);
@@ -432,6 +433,19 @@ static int set_sps(HEVCContext *s, const HEVCSPS *sps)
s->sps = sps;
s->vps = (HEVCVPS*) s->vps_list[s->sps->vps_id]->data;
+
+ if (s->vps->vps_timing_info_present_flag) {
+ num = s->vps->vps_num_units_in_tick;
+ den = s->vps->vps_time_scale;
+ } else if (sps->vui.vui_timing_info_present_flag) {
+ num = sps->vui.vui_num_units_in_tick;
+ den = sps->vui.vui_time_scale;
+ }
+
+ if (num != 0 && den != 0)
+ av_reduce(&s->avctx->time_base.num, &s->avctx->time_base.den,
+ num, den, 1 << 30);
+
return 0;
fail: