aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2024-04-28 01:43:32 +0200
committerAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2024-06-12 10:49:57 +0200
commit73676dd47ac36f975b430f6a60a09144357523c3 (patch)
tree21e6541dfe318d9de28c59afd4c205b34ef211ca
parent99543c93ec0984d190eb81b2ec5cfd8665bc14f2 (diff)
downloadffmpeg-73676dd47ac36f975b430f6a60a09144357523c3.tar.gz
avcodec/mpegpicture: Mark dummy frames as such
This will allow to avoid outputting them. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
-rw-r--r--libavcodec/mpegpicture.c2
-rw-r--r--libavcodec/mpegpicture.h1
-rw-r--r--libavcodec/mpegvideo_dec.c2
3 files changed, 5 insertions, 0 deletions
diff --git a/libavcodec/mpegpicture.c b/libavcodec/mpegpicture.c
index aa882cf747..88b4d5dec1 100644
--- a/libavcodec/mpegpicture.c
+++ b/libavcodec/mpegpicture.c
@@ -270,6 +270,7 @@ void ff_mpeg_unref_picture(Picture *pic)
if (pic->needs_realloc)
free_picture_tables(pic);
+ pic->dummy = 0;
pic->field_picture = 0;
pic->b_frame_score = 0;
pic->needs_realloc = 0;
@@ -331,6 +332,7 @@ int ff_mpeg_ref_picture(Picture *dst, Picture *src)
ff_refstruct_replace(&dst->hwaccel_picture_private,
src->hwaccel_picture_private);
+ dst->dummy = src->dummy;
dst->field_picture = src->field_picture;
dst->b_frame_score = src->b_frame_score;
dst->needs_realloc = src->needs_realloc;
diff --git a/libavcodec/mpegpicture.h b/libavcodec/mpegpicture.h
index 215e7388ef..664c116a47 100644
--- a/libavcodec/mpegpicture.h
+++ b/libavcodec/mpegpicture.h
@@ -70,6 +70,7 @@ typedef struct Picture {
/// RefStruct reference for hardware accelerator private data
void *hwaccel_picture_private;
+ int dummy; ///< Picture is a dummy and should not be output
int field_picture; ///< whether or not the picture was encoded in separate fields
int b_frame_score;
diff --git a/libavcodec/mpegvideo_dec.c b/libavcodec/mpegvideo_dec.c
index efc257d43e..bf274e0c48 100644
--- a/libavcodec/mpegvideo_dec.c
+++ b/libavcodec/mpegvideo_dec.c
@@ -288,6 +288,8 @@ static int av_cold alloc_dummy_frame(MpegEncContext *s, Picture **picp, Picture
if (ret < 0)
return ret;
+ pic->dummy = 1;
+
ff_mpeg_unref_picture(wpic);
ret = ff_mpeg_ref_picture(wpic, pic);
if (ret < 0) {