summaryrefslogtreecommitdiffstats
path: root/video
diff options
context:
space:
mode:
Diffstat (limited to 'video')
-rw-r--r--video/filter/refqueue.c1
-rw-r--r--video/mp_image.c30
-rw-r--r--video/out/vo.c4
3 files changed, 12 insertions, 23 deletions
diff --git a/video/filter/refqueue.c b/video/filter/refqueue.c
index e97e85bfaa..d018e38c00 100644
--- a/video/filter/refqueue.c
+++ b/video/filter/refqueue.c
@@ -266,7 +266,6 @@ struct mp_image *mp_refqueue_execute_reinit(struct mp_refqueue *q)
mp_refqueue_flush(q);
q->in_format = mp_image_new_ref(cur);
- MP_HANDLE_OOM(q->in_format);
mp_image_unref_data(q->in_format);
mp_refqueue_add_input(q, cur);
diff --git a/video/mp_image.c b/video/mp_image.c
index e54cbb82b7..40678d10bd 100644
--- a/video/mp_image.c
+++ b/video/mp_image.c
@@ -314,12 +314,11 @@ void mp_image_unref_data(struct mp_image *img)
}
}
-static void ref_buffer(bool *ok, AVBufferRef **dst)
+static void ref_buffer(AVBufferRef **dst)
{
if (*dst) {
*dst = av_buffer_ref(*dst);
- if (!*dst)
- *ok = false;
+ MP_HANDLE_OOM(*dst);
}
}
@@ -337,29 +336,22 @@ struct mp_image *mp_image_new_ref(struct mp_image *img)
talloc_set_destructor(new, mp_image_destructor);
*new = *img;
- bool ok = true;
for (int p = 0; p < MP_MAX_PLANES; p++)
- ref_buffer(&ok, &new->bufs[p]);
+ ref_buffer(&new->bufs[p]);
- ref_buffer(&ok, &new->hwctx);
- ref_buffer(&ok, &new->icc_profile);
- ref_buffer(&ok, &new->a53_cc);
- ref_buffer(&ok, &new->dovi);
- ref_buffer(&ok, &new->film_grain);
- ref_buffer(&ok, &new->dovi_buf);
+ ref_buffer(&new->hwctx);
+ ref_buffer(&new->icc_profile);
+ ref_buffer(&new->a53_cc);
+ ref_buffer(&new->dovi);
+ ref_buffer(&new->film_grain);
+ ref_buffer(&new->dovi_buf);
new->ff_side_data = talloc_memdup(NULL, new->ff_side_data,
new->num_ff_side_data * sizeof(new->ff_side_data[0]));
for (int n = 0; n < new->num_ff_side_data; n++)
- ref_buffer(&ok, &new->ff_side_data[n].buf);
-
- if (ok)
- return new;
+ ref_buffer(&new->ff_side_data[n].buf);
- // Do this after _all_ bufs were changed; we don't want it to free bufs
- // from the original image if this fails.
- talloc_free(new);
- return NULL;
+ return new;
}
struct free_args {
diff --git a/video/out/vo.c b/video/out/vo.c
index 40079049f8..c53cec36a1 100644
--- a/video/out/vo.c
+++ b/video/out/vo.c
@@ -1438,10 +1438,8 @@ struct vo_frame *vo_frame_ref(struct vo_frame *frame)
struct vo_frame *new = talloc_ptrtype(NULL, new);
talloc_set_destructor(new, destroy_frame);
*new = *frame;
- for (int n = 0; n < frame->num_frames; n++) {
+ for (int n = 0; n < frame->num_frames; n++)
new->frames[n] = mp_image_new_ref(frame->frames[n]);
- MP_HANDLE_OOM(new->frames[n]);
- }
new->current = new->num_frames ? new->frames[0] : NULL;
return new;
}