From 1396f804be4898ac0280de9f7f08ff18d28ab446 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Tim-Philipp=20M=C3=BCller?= Date: Mon, 2 Jul 2012 18:54:55 +0100 Subject: [PATCH] pango: only map video buffer memory if actually needed No need to map the video buffer if we're just going to attach the meta; but if we map, we should do so in READWRITE mode. --- ext/pango/gstbasetextoverlay.c | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/ext/pango/gstbasetextoverlay.c b/ext/pango/gstbasetextoverlay.c index cbf0e0d..f9fe980 100644 --- a/ext/pango/gstbasetextoverlay.c +++ b/ext/pango/gstbasetextoverlay.c @@ -1592,9 +1592,21 @@ gst_base_text_overlay_push_frame (GstBaseTextOverlay * overlay, gint xpos, ypos; GstVideoFrame frame; + if (overlay->composition == NULL) + goto done; + video_frame = gst_buffer_make_writable (video_frame); - if (!gst_video_frame_map (&frame, &overlay->info, video_frame, GST_MAP_WRITE)) + if (overlay->attach_compo_to_buffer) { + GST_DEBUG_OBJECT (overlay, "Attaching text overlay image to video buffer"); + gst_video_buffer_set_overlay_composition (video_frame, + overlay->composition); + /* FIXME: emulate shaded background box if want_shading=true */ + goto done; + } + + if (!gst_video_frame_map (&frame, &overlay->info, video_frame, + GST_MAP_READWRITE)) goto invalid_frame; gst_base_text_overlay_get_pos (overlay, &xpos, &ypos); @@ -1660,18 +1672,12 @@ gst_base_text_overlay_push_frame (GstBaseTextOverlay * overlay, } } - if (overlay->composition) { - if (overlay->attach_compo_to_buffer) { - GST_DEBUG_OBJECT (overlay, "Attaching text to the buffer"); - gst_video_buffer_set_overlay_composition (video_frame, - overlay->composition); - } else { - gst_video_overlay_composition_blend (overlay->composition, &frame); - } - } + gst_video_overlay_composition_blend (overlay->composition, &frame); gst_video_frame_unmap (&frame); +done: + return gst_pad_push (overlay->srcpad, video_frame); /* ERRORS */ -- 2.7.4