summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThibault Saunier <tsaunier@gnome.org>2016-01-19 22:49:20 +0100
committerSebastian Dröge <sebastian@centricular.com>2016-01-20 10:12:50 +0200
commitfa7388c5c2692d1ca48fd5d82a28e0004bef7ceb (patch)
treef8862d362279b8f2678cf88d7af9c4bf1b1cc573
parentf2ed4091309889533fb8f04e54216afed5ded68e (diff)
vpxenc: Unref frame on ERROR
All code paths for handle_frame() must somehow take ownership of the frame, be it by actually unreffing, forwarding the frame elsewhere or storing it for later. http://bugzilla.gnome.org/show_bug.cgi?id=760666
-rw-r--r--ext/vpx/gstvp8enc.c1
-rw-r--r--ext/vpx/gstvp9enc.c1
2 files changed, 2 insertions, 0 deletions
diff --git a/ext/vpx/gstvp8enc.c b/ext/vpx/gstvp8enc.c
index 0a7cf4302..170ae535d 100644
--- a/ext/vpx/gstvp8enc.c
+++ b/ext/vpx/gstvp8enc.c
@@ -2060,6 +2060,7 @@ gst_vp8_enc_handle_frame (GstVideoEncoder * video_encoder,
GST_ELEMENT_ERROR (encoder, LIBRARY, ENCODE,
("Failed to encode frame"), ("%s", gst_vpx_error_name (status)));
gst_video_codec_frame_set_user_data (frame, NULL, NULL);
+ gst_video_codec_frame_unref (frame);
return GST_FLOW_ERROR;
}
gst_video_codec_frame_unref (frame);
diff --git a/ext/vpx/gstvp9enc.c b/ext/vpx/gstvp9enc.c
index d8ae81ca1..93739c147 100644
--- a/ext/vpx/gstvp9enc.c
+++ b/ext/vpx/gstvp9enc.c
@@ -1988,6 +1988,7 @@ gst_vp9_enc_handle_frame (GstVideoEncoder * video_encoder,
if (status != 0) {
GST_ELEMENT_ERROR (encoder, LIBRARY, ENCODE,
("Failed to encode frame"), ("%s", gst_vpx_error_name (status)));
+ gst_video_codec_frame_unref (frame);
return GST_FLOW_ERROR;
}
gst_video_codec_frame_unref (frame);