videorate: avoid useless buffer copy in drop-only mode

Make writable the buffer before pushing it lead to a buffer copy. It's
because a reference is keep for the previous buffer.
The previous buffer reference is only need to duplicate the buffer. In
drop-only mode, the previous buffer is release just after pushing the
buffer so a copy is done but it's useless.

https://bugzilla.gnome.org/show_bug.cgi?id=764319
This commit is contained in:
Frédéric Bertolus 2016-03-29 17:19:41 +02:00 committed by Sebastian Dröge
parent 9e311960cd
commit 2626c02149

View file

@ -608,8 +608,12 @@ gst_video_rate_flush_prev (GstVideoRate * videorate, gboolean duplicate)
if (!videorate->prevbuf)
goto eos_before_buffers;
outbuf = gst_buffer_ref (videorate->prevbuf);
if (videorate->drop_only)
gst_buffer_replace (&videorate->prevbuf, NULL);
/* make sure we can write to the metadata */
outbuf = gst_buffer_make_writable (gst_buffer_ref (videorate->prevbuf));
outbuf = gst_buffer_make_writable (outbuf);
GST_BUFFER_OFFSET (outbuf) = videorate->out;
GST_BUFFER_OFFSET_END (outbuf) = videorate->out + 1;