[FFmpeg-devel] [PATCH 3/5] avcodec/cbs_h264: fix storage type for time_offset in Pic Timing SEI

Mark Thompson sw at jkqxz.net
Wed Apr 17 02:00:58 EEST 2019


On 15/04/2019 22:17, James Almer wrote:
> The spec defines it as a signed value.
> 
> Signed-off-by: James Almer <jamrial at gmail.com>
> ---
> The only sample i could find with time_offset values it's in the fate suite,
> and in all cases it's 0.
> 
>  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);
>  
> 

LGTM.

I'm glad the standard gets plenty of use out of that i(v) syntax element type definition.

- Mark


More information about the ffmpeg-devel mailing list