In case of odd values for xpos or ypos, the division by two in CbCr
plane would result in an off-by-one error, which in the case of NV12,
NV21, or UYVY would cause inversion of blue and red colors. (And
would be not so easily noticed for I420 as it would just cause the
chroma to be offset slightly from the luma.)
This patch also fixes a silly typo from the earlier patch which
added NV12 support that broke UYVY support.
The textoverlay element will rerender the text string whenever
overlay sets the 'need_render' flag to TRUE. Previously, we
lazily set the flag to TRUE every time the time string was requested.
Now, we save a copy of the previously given string, and only set
'need_render' to TRUE if the string has changed.
In my tests with a 30fps video stream, and a time string including
a seconds field, this change reduced the CPU usage of the clockoverlay
element from 60% to 5%.
Fixes bug #627780.
Rather than only left, right, top, etc, allow for horizontal and vertical
positioning on a scale from 0 to 1.
Also cater for configuring rendered text color.
Fixes#624920.
API: GstTextOverlay:xpos
API: GstTextOverlay:ypos
API: GstTextOverlay:color
And fix the resulting compile failures.
I'm sorry about the patch necessary to gstclockoverlay.h but after
talking to Tim we decided we can live with it.
This reverts commit 60aa09d28c.
First drawing the real text and then the outline produces ugly
text in lower resolutions. The outline line width needs to be somehow
changed relative to the resolution. Fixes bug #602924.
POSIX and your local friendly ctime(3) manual entry says that localtime_r isn't
required to set the state variables that define the current timezone. Indeed,
glibc (at least 2.9) doesn't do this for subsequent calls. The effect is that
if the system timezone is changed for a running program between two calls to
gst_clock_overlay_render_time, it won't be noticed. For glibc, changing the
timezone equals /etc/localtime being modified.
Fixes bug #587676.
Original commit message from CVS:
Patch by: Pavel Zeldin <pzeldin at gmail dot com>
* ext/pango/gstclockoverlay.c: (gst_clock_overlay_render_time),
(gst_clock_overlay_class_init), (gst_clock_overlay_finalize),
(gst_clock_overlay_init), (gst_clock_overlay_set_property),
(gst_clock_overlay_get_property):
* ext/pango/gstclockoverlay.h:
API: Add ability to specify format for date/time display by
adding a "time-format" property.
Fixes bug #554879.
Original commit message from CVS:
* ext/pango/Makefile.am:
* ext/pango/gsttextoverlay.c: (gst_text_overlay_shade_y),
(gst_text_overlay_blit_yuv420), (gst_text_overlay_push_frame):
Use gstvideo functions to calculate strides and plane offsets. Fixes
rendering issue ('ghost' images of the text on the chroma planes)
with widths or heights that are not multiples of 8 (#506659 and
probably also #485729).
* tests/icles/test-textoverlay.c: (show_text), (test_textoverlay),
(main):
Test with odd height/width too.
Original commit message from CVS:
* ext/pango/gsttextoverlay.c: (gst_text_overlay_class_init),
(gst_text_overlay_init):
Fix textoverlay unit test again by making the supposed default
value for the wait-text property the actual default value.
Also fix Since: tag for new property.
Original commit message from CVS:
* ext/pango/gsttextoverlay.c: (gst_text_overlay_class_init),
(gst_text_overlay_init), (gst_text_overlay_set_property),
(gst_text_overlay_get_property), (gst_text_overlay_src_event),
(gst_text_overlay_text_event), (gst_text_overlay_video_event),
(gst_text_overlay_text_chain), (gst_text_overlay_video_chain),
(gst_text_overlay_change_state):
* ext/pango/gsttextoverlay.h:
Add property to configure waiting for text on the textpad or not, with
the default behaviour being the old one (always wait for text before
rendering the video). This default behaviour is usually not the best one
because the text stream can very sparse and could require queueing a lot
of video.
Fix the flushing and EOS handing so that we don't mix up their meaning.