Re: [FFmpeg-devel] [PATCH 1/2] avcodec/h264dec: Return early in ff_h264_draw_horiz_band()

2024-02-21 Thread Andreas Rheinhardt
Andreas Rheinhardt:
> Signed-off-by: Andreas Rheinhardt 
> ---
>  libavcodec/h264dec.c | 23 +--
>  1 file changed, 13 insertions(+), 10 deletions(-)
> 
> diff --git a/libavcodec/h264dec.c b/libavcodec/h264dec.c
> index 9f5893c512..5cffeafc6b 100644
> --- a/libavcodec/h264dec.c
> +++ b/libavcodec/h264dec.c
> @@ -104,9 +104,17 @@ void ff_h264_draw_horiz_band(const H264Context *h, 
> H264SliceContext *sl,
>  {
>  AVCodecContext *avctx = h->avctx;
>  const AVFrame   *src  = h->cur_pic.f;
> -const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(avctx->pix_fmt);
> -int vshift = desc->log2_chroma_h;
> +const AVPixFmtDescriptor *desc;
> +int offset[AV_NUM_DATA_POINTERS];
> +int vshift;
>  const int field_pic = h->picture_structure != PICT_FRAME;
> +
> +if (!avctx->draw_horiz_band)
> +return;
> +
> +if (field_pic && h->first_field && !(avctx->slice_flags & 
> SLICE_FLAG_ALLOW_FIELD))
> +return;
> +
>  if (field_pic) {
>  height <<= 1;
>  y  <<= 1;
> @@ -114,24 +122,19 @@ void ff_h264_draw_horiz_band(const H264Context *h, 
> H264SliceContext *sl,
>  
>  height = FFMIN(height, avctx->height - y);
>  
> -if (field_pic && h->first_field && !(avctx->slice_flags & 
> SLICE_FLAG_ALLOW_FIELD))
> -return;
> -
> -if (avctx->draw_horiz_band) {
> -int offset[AV_NUM_DATA_POINTERS];
> -int i;
> +desc   = av_pix_fmt_desc_get(avctx->pix_fmt);
> +vshift = desc->log2_chroma_h;
>  
>  offset[0] = y * src->linesize[0];
>  offset[1] =
>  offset[2] = (y >> vshift) * src->linesize[1];
> -for (i = 3; i < AV_NUM_DATA_POINTERS; i++)
> +for (int i = 3; i < AV_NUM_DATA_POINTERS; i++)
>  offset[i] = 0;
>  
>  emms_c();
>  
>  avctx->draw_horiz_band(avctx, src, offset,
> y, h->picture_structure, height);
> -}
>  }
>  
>  void ff_h264_free_tables(H264Context *h)

Will apply this patchset tomorrow unless there are objections.

- Andreas

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH 1/2] avcodec/h264dec: Return early in ff_h264_draw_horiz_band()

2024-02-19 Thread Andreas Rheinhardt
Signed-off-by: Andreas Rheinhardt 
---
 libavcodec/h264dec.c | 23 +--
 1 file changed, 13 insertions(+), 10 deletions(-)

diff --git a/libavcodec/h264dec.c b/libavcodec/h264dec.c
index 9f5893c512..5cffeafc6b 100644
--- a/libavcodec/h264dec.c
+++ b/libavcodec/h264dec.c
@@ -104,9 +104,17 @@ void ff_h264_draw_horiz_band(const H264Context *h, 
H264SliceContext *sl,
 {
 AVCodecContext *avctx = h->avctx;
 const AVFrame   *src  = h->cur_pic.f;
-const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(avctx->pix_fmt);
-int vshift = desc->log2_chroma_h;
+const AVPixFmtDescriptor *desc;
+int offset[AV_NUM_DATA_POINTERS];
+int vshift;
 const int field_pic = h->picture_structure != PICT_FRAME;
+
+if (!avctx->draw_horiz_band)
+return;
+
+if (field_pic && h->first_field && !(avctx->slice_flags & 
SLICE_FLAG_ALLOW_FIELD))
+return;
+
 if (field_pic) {
 height <<= 1;
 y  <<= 1;
@@ -114,24 +122,19 @@ void ff_h264_draw_horiz_band(const H264Context *h, 
H264SliceContext *sl,
 
 height = FFMIN(height, avctx->height - y);
 
-if (field_pic && h->first_field && !(avctx->slice_flags & 
SLICE_FLAG_ALLOW_FIELD))
-return;
-
-if (avctx->draw_horiz_band) {
-int offset[AV_NUM_DATA_POINTERS];
-int i;
+desc   = av_pix_fmt_desc_get(avctx->pix_fmt);
+vshift = desc->log2_chroma_h;
 
 offset[0] = y * src->linesize[0];
 offset[1] =
 offset[2] = (y >> vshift) * src->linesize[1];
-for (i = 3; i < AV_NUM_DATA_POINTERS; i++)
+for (int i = 3; i < AV_NUM_DATA_POINTERS; i++)
 offset[i] = 0;
 
 emms_c();
 
 avctx->draw_horiz_band(avctx, src, offset,
y, h->picture_structure, height);
-}
 }
 
 void ff_h264_free_tables(H264Context *h)
-- 
2.34.1

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".