diff mbox series

[FFmpeg-devel,02/13] lavc/h264_parser: stop accessing H264Context

Message ID 20220124170014.17189-2-anton@khirnov.net
State New
Headers show
Series [FFmpeg-devel,01/13] lavc/h264: replace MAX_MMCO_COUNT with H264_MAX_MMCO_COUNT | expand

Commit Message

Anton Khirnov Jan. 24, 2022, 5 p.m. UTC
Parsers should not mess with decoder private data. It is also completely
unnecessary here.
---
 libavcodec/h264_parser.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

Comments

James Almer Jan. 24, 2022, 5:06 p.m. UTC | #1
On 1/24/2022 2:00 PM, Anton Khirnov wrote:
> Parsers should not mess with decoder private data. It is also completely
> unnecessary here.
> ---
>   libavcodec/h264_parser.c | 8 +++-----
>   1 file changed, 3 insertions(+), 5 deletions(-)
> 
> diff --git a/libavcodec/h264_parser.c b/libavcodec/h264_parser.c
> index e3a11702c5..816b04845e 100644
> --- a/libavcodec/h264_parser.c
> +++ b/libavcodec/h264_parser.c
> @@ -247,7 +247,6 @@ static inline int parse_nal_units(AVCodecParserContext *s,
>                                     const uint8_t * const buf, int buf_size)
>   {
>       H264ParseContext *p = s->priv_data;
> -    H264Context *h = avctx->priv_data;
>       H2645RBSP rbsp = { NULL };
>       H2645NAL nal = { NULL };
>       int buf_index, next_avc;
> @@ -553,11 +552,10 @@ static inline int parse_nal_units(AVCodecParserContext *s,
>                   p->last_picture_structure = s->picture_structure;
>                   p->last_frame_num = p->poc.frame_num;
>               }
> -            if (h && sps->timing_info_present_flag) {
> +            if (sps->timing_info_present_flag) {
>                   int64_t den = sps->time_scale;
> -                if (p->sei.unregistered.x264_build >= 0)
> -                    h->x264_build = p->sei.unregistered.x264_build;
> -                if (h->x264_build < 44U)
> +                if (p->sei.unregistered.x264_build >= 0 &&

I don't think this check is needed. < 44U should in theory ensure the 
default of -1 is converted to unsigned and the check will evaluate to false.

See my patch (I don't mind if you amend yours and push this with your 
authorship).

> +                    p->sei.unregistered.x264_build < 44U)
>                       den *= 2;
>                   av_reduce(&avctx->framerate.den, &avctx->framerate.num,
>                             sps->num_units_in_tick * avctx->ticks_per_frame, den, 1 << 30);
diff mbox series

Patch

diff --git a/libavcodec/h264_parser.c b/libavcodec/h264_parser.c
index e3a11702c5..816b04845e 100644
--- a/libavcodec/h264_parser.c
+++ b/libavcodec/h264_parser.c
@@ -247,7 +247,6 @@  static inline int parse_nal_units(AVCodecParserContext *s,
                                   const uint8_t * const buf, int buf_size)
 {
     H264ParseContext *p = s->priv_data;
-    H264Context *h = avctx->priv_data;
     H2645RBSP rbsp = { NULL };
     H2645NAL nal = { NULL };
     int buf_index, next_avc;
@@ -553,11 +552,10 @@  static inline int parse_nal_units(AVCodecParserContext *s,
                 p->last_picture_structure = s->picture_structure;
                 p->last_frame_num = p->poc.frame_num;
             }
-            if (h && sps->timing_info_present_flag) {
+            if (sps->timing_info_present_flag) {
                 int64_t den = sps->time_scale;
-                if (p->sei.unregistered.x264_build >= 0)
-                    h->x264_build = p->sei.unregistered.x264_build;
-                if (h->x264_build < 44U)
+                if (p->sei.unregistered.x264_build >= 0 &&
+                    p->sei.unregistered.x264_build < 44U)
                     den *= 2;
                 av_reduce(&avctx->framerate.den, &avctx->framerate.num,
                           sps->num_units_in_tick * avctx->ticks_per_frame, den, 1 << 30);