Commit cb6b835d authored by Sebastian Dröge's avatar Sebastian Dröge
Browse files

videoencoder: Ensure buffers don't disappear early

The frames are the owners of the buffers
parent 4b946e8c
......@@ -1489,10 +1489,13 @@ gst_video_encoder_finish_frame (GstVideoEncoder * encoder,
if (encoder_class->pre_push)
ret = encoder_class->pre_push (encoder, frame);
/* A reference always needs to be owned by the frame on the buffer.
* For that reason, we use a complete sub-buffer (zero-cost) to push
* downstream.
* The original buffer will be free-ed only when downstream AND the
* current implementation are done with the frame. */
if (ret == GST_FLOW_OK)
ret = gst_pad_push (encoder->srcpad, frame->output_buffer);
frame->output_buffer = NULL;
ret = gst_pad_push (encoder->srcpad, gst_buffer_ref (frame->output_buffer));
done:
/* handed out */
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment