vaapisink: optimize GstVideoOverlayInterface::expose().

When render-mode is "overlay", then it is not really useful to peek into
the GstBaseSink::last_buffer, since we have our own video_buffer already
recorded and maintained into GstVaapiSink.
This commit is contained in:
Gwenole Beauchesne 2013-04-12 17:12:43 +02:00
parent ca0e77756b
commit ad56d80c9e

View file

@ -218,9 +218,13 @@ gst_vaapisink_video_overlay_set_render_rectangle(
static void
gst_vaapisink_video_overlay_expose(GstVideoOverlay *overlay)
{
GstVaapiSink * const sink = GST_VAAPISINK(overlay);
GstBaseSink * const base_sink = GST_BASE_SINK(overlay);
GstBuffer *buffer;
if (sink->use_overlay)
buffer = sink->video_buffer ? gst_buffer_ref(sink->video_buffer) : NULL;
else {
#if GST_CHECK_VERSION(1,0,0)
GstSample * const sample = gst_base_sink_get_last_sample(base_sink);
if (!sample)
@ -230,6 +234,7 @@ gst_vaapisink_video_overlay_expose(GstVideoOverlay *overlay)
#else
buffer = gst_base_sink_get_last_buffer(base_sink);
#endif
}
if (buffer) {
gst_vaapisink_show_frame(base_sink, buffer);
gst_buffer_unref(buffer);