From a2132139852c57e71c731d10e5dc20e97342c289 Mon Sep 17 00:00:00 2001 From: James Almer Date: Mon, 15 Apr 2019 17:50:01 -0300 Subject: [PATCH] avcodec/cbs_h264: fix storage type for time_offset in Pic Timing SEI The spec defines it as a signed value. Reviewed-by: Mark Thompson Signed-off-by: James Almer (cherry picked from commit 9bf520d04d6137d0772e019356356614bbf7ca82) --- libavcodec/cbs_h264.h | 2 +- libavcodec/cbs_h264_syntax_template.c | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/libavcodec/cbs_h264.h b/libavcodec/cbs_h264.h index 92277e4750..b5eee7c370 100644 --- a/libavcodec/cbs_h264.h +++ b/libavcodec/cbs_h264.h @@ -253,7 +253,7 @@ typedef struct H264RawSEIPicTimestamp { uint8_t minutes_value; uint8_t hours_flag; uint8_t hours_value; - uint32_t time_offset; + int32_t time_offset; } H264RawSEIPicTimestamp; typedef struct H264RawSEIPicTiming { diff --git a/libavcodec/cbs_h264_syntax_template.c b/libavcodec/cbs_h264_syntax_template.c index 4da4c5da67..07b4cddb5e 100644 --- a/libavcodec/cbs_h264_syntax_template.c +++ b/libavcodec/cbs_h264_syntax_template.c @@ -592,8 +592,9 @@ static int FUNC(sei_pic_timestamp)(CodedBitstreamContext *ctx, RWContext *rw, time_offset_length = 24; if (time_offset_length > 0) - u(time_offset_length, time_offset, - 0, MAX_UINT_BITS(time_offset_length)); + i(time_offset_length, time_offset, + MIN_INT_BITS(time_offset_length), + MAX_INT_BITS(time_offset_length)); else infer(time_offset, 0);