diff options
author | Tim-Philipp Müller <tim@centricular.net> | 2013-08-21 13:40:03 +0100 |
---|---|---|
committer | Tim-Philipp Müller <tim@centricular.net> | 2013-08-21 13:47:15 +0100 |
commit | ffe85cb0ef0c18162f9baa098c991e227d98c926 (patch) | |
tree | 03d6ecb7b8f91081c952e13c4cf15f99316f7925 | |
parent | 15a9e62abdf7b36b1f3aa342d2d2c094994658e4 (diff) |
avvidenc: propagate flow return values upstream in finish()
-rw-r--r-- | ext/libav/gstavvidenc.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/ext/libav/gstavvidenc.c b/ext/libav/gstavvidenc.c index b1ecb7e..ca89156 100644 --- a/ext/libav/gstavvidenc.c +++ b/ext/libav/gstavvidenc.c @@ -644,10 +644,11 @@ alloc_fail: } } -static void +static GstFlowReturn gst_ffmpegvidenc_flush_buffers (GstFFMpegVidEnc * ffmpegenc, gboolean send) { GstVideoCodecFrame *frame; + GstFlowReturn flow_ret = GST_FLOW_OK; GstBuffer *outbuf; gint ret_size; @@ -655,7 +656,7 @@ gst_ffmpegvidenc_flush_buffers (GstFFMpegVidEnc * ffmpegenc, gboolean send) /* no need to empty codec if there is none */ if (!ffmpegenc->opened) - return; + goto done; while ((frame = gst_video_encoder_get_oldest_frame (GST_VIDEO_ENCODER (ffmpegenc)))) { @@ -701,11 +702,16 @@ gst_ffmpegvidenc_flush_buffers (GstFFMpegVidEnc * ffmpegenc, gboolean send) if (ffmpegenc->context->coded_frame->key_frame) GST_VIDEO_CODEC_FRAME_SET_SYNC_POINT (frame); - gst_video_encoder_finish_frame (GST_VIDEO_ENCODER (ffmpegenc), frame); + flow_ret = + gst_video_encoder_finish_frame (GST_VIDEO_ENCODER (ffmpegenc), frame); } else { gst_video_codec_frame_unref (frame); } } + +done: + + return flow_ret; } @@ -817,9 +823,7 @@ gst_ffmpegvidenc_finish (GstVideoEncoder * encoder) { GstFFMpegVidEnc *ffmpegenc = (GstFFMpegVidEnc *) encoder; - gst_ffmpegvidenc_flush_buffers (ffmpegenc, TRUE); - - return GST_FLOW_OK; + return gst_ffmpegvidenc_flush_buffers (ffmpegenc, TRUE); } gboolean |