=== release 1.2.3 === 2014-02-08 Sebastian Dröge * configure.ac: releasing 1.2.3 2014-02-04 16:21:55 +0100 Sebastian Dröge * po/id.po: * po/nb.po: * po/nl.po: * po/pt_BR.po: * po/sk.po: * po/sr.po: po: Update translations 2014-01-24 12:19:43 +0100 Wim Taymans * gst/videoconvert/gstvideoconvert.c: videoconvert: tweak the scoring algorithm Make a little table of conversions and manually score them. Use this info to define better weights for the scoring algorithm. give separate scores for doing changes and the impact of the change, This allows us to avoid conversion when we can but still allow fairly lossless changes. The old code did not penalize GRAY conversions, PAL conversions were punished too low and depth conversions too high. Fixes https://bugzilla.gnome.org/show_bug.cgi?id=722656 2014-01-23 10:45:00 +0100 Wim Taymans * gst-libs/gst/video/video-chroma.c: video-chroma: don't crash on NULL resamplers Make dummy resamplers for all cases and only execute the horizontal resampler instead of crashing. See https://bugzilla.gnome.org/show_bug.cgi?id=722742 2014-01-21 11:21:56 +0100 Wim Taymans * gst-libs/gst/audio/gstaudiobasesink.c: audiobasesink: make _get_time more threadsafe We call the _get_time function from the provided clock and we don't lock the sink object for performance reasons. Make sure we only read and check variables once so that they don't change while we are executing the code. Fixes https://bugzilla.gnome.org/show_bug.cgi?id=720661 2014-01-17 10:17:29 -0300 Thiago Santos * gst-libs/gst/video/gstvideodecoder.c: videodecoder: plug leak when frames are released on subclass stop They end up stored in the 'pending_events' list and should be freed after calling stop 2014-01-14 13:02:28 -0300 Thiago Santos * tests/check/libs/audiodecoder.c: tests: audiodecoder: add another test for negotiation with gap event Check that even if the subclass doesn't call set_output_format, the base class should use upstream provided caps to fill the output caps that is pushed before the gap event is forwarded, otherwise it ends again fixating the rate and channels to 1. https://bugzilla.gnome.org/show_bug.cgi?id=722144 2014-01-14 13:05:54 -0300 Thiago Santos * gst-libs/gst/audio/gstaudiodecoder.c: audiodecoder: copy rate and channels from input before fixating output caps For default caps generation when handling gap events that are sent before any buffer, try to use caps that are closer to what upstream provided to avoid fixating rate or channels to 1 as default. So there are the steps: 1) Try to set rate, channels and channel-mask from upstream if provided 2) Fixate the rate and channels to the default rate and channels from audio lib 3) Fixate the caps just to be sure everything is fixed 4) If no channel-mask was provided and channels > 2, use a default channel-mask (taken from audioconvert code) https://bugzilla.gnome.org/show_bug.cgi?id=722144 2014-01-14 23:07:34 +0100 Holger Kaelberer * sys/xvimage/xvimagesink.c: xvimagesink: don't recreate xvcontext A xvcontext can be created early in gst_xvimagesink_set_window_handle(). In this case don't recreate, i.e. overwrite it in gst_xvimagesink_open(). Otherwise XEvents won't be handled in the xevent listener thread. Fixes a regression when setting the window handle on the sink in the very beginning before changing its state. https://bugzilla.gnome.org/show_bug.cgi?id=715138 2014-01-13 20:47:02 -0300 Thiago Santos * gst-libs/gst/audio/gstaudiodecoder.c: audiodecoder: avoid parsing caps event if it is not used Saves some cpu 2014-01-13 20:44:23 -0300 Thiago Santos * gst-libs/gst/audio/gstaudiodecoder.c: audiodecoder: make sure caps is set before forwarding gap event Before trying to generate a default fixated caps when handling a gap event, make sure that the same strategy that is used when handling a buffer has been attempted. Otherwise audiodecoder will ignore upstream caps settings such as rate and channels and will likely end with a caps with channels=1 and rate=1. https://bugzilla.gnome.org/show_bug.cgi?id=722144 2014-01-13 19:40:49 -0300 Thiago Santos * tests/check/libs/audiodecoder.c: tests: audiodecoder: check that negotiation works buffers and gaps Adds 2 tests to verify that output caps are the expected value, reusing input structure values for both buffers and gaps https://bugzilla.gnome.org/show_bug.cgi?id=722144 2014-01-13 16:33:11 -0300 Thiago Santos * tests/check/Makefile.am: * tests/check/libs/.gitignore: * tests/check/libs/audiodecoder.c: tests: audiodecoder: add basic playback test for audio decoder Simple test that just check that audio decoding works as expected https://bugzilla.gnome.org/show_bug.cgi?id=722144 2014-01-14 12:05:46 +0000 Vincent Penquerc'h * ext/ogg/gstoggdemux.c: oggdemux: fix broken seeking reading the whole file A change in gst_ogg_demux_do_seek caused oggdemux to wait for a page for each of the streams, including a skeleton stream if one was present. Since Skeleton only has header pages, that was never going to end well. Also, the code was skipping CMML streams when looking for pages, so would also have broken on CMML streams. Thus, we change the code to disregard Skeleton streams, as well as discontinuous streams (such as CMML and Kate). While it may be desirable to consider Kate streams too (in order to avoid losing a subtitle starting near the seek point), this may be a performance drag when seeking where no subtitles are. Maybe one could add a "give up" threshold for such discontinuous streams, so we'd get any page if there is one, but do not end up reading preposterous amounts of data otherwise. In any case, it is important that the code that determines the amount of streams to look pages for remains consistent with the "early out" conditions of the code that actually parses the incoming pages, lest we never decrease the pending counter to zero. This fixes seeking on a file with a skeleton track reading all the file on each seek. https://bugzilla.gnome.org/show_bug.cgi?id=719615 2014-01-13 15:14:14 +0000 Vincent Penquerc'h * ext/ogg/gstoggdemux.c: * ext/ogg/gstoggdemux.h: oggdemux: use an adaptive chunksize for performance reasons Ogg data is read chunk by chunk, and the chunk size used was originally taken from libvorbisfile. However, this value leads to poor performance when used on an Ogg file with large pages (Ogg pages can be close to 64 KB). We can't just use a larger chunk size, since this will decrease performance on small page streams, so we use an adaptive scheme where the chunk size is twice the largest page size we've seen so far in the stream. For "typical" Ogg/Vorbis, this gives us almost the same chunk size (a bit lower), and this lets us get better performance on streams with large pages. 2014-01-10 11:17:04 +0000 Tim-Philipp Müller * ext/pango/gstbasetextoverlay.c: textoverlay: don't leak GAP events 2014-01-11 01:14:19 -0300 Thiago Santos * tests/check/libs/videodecoder.c: tests: videodecoder: check that segment events are not dropped Adds a test that simulates a scenario where the first buffers after a segment can't be decoded and the decoder asks for those frames to be released. The videodecoder base class should make sure that the events attached to those first buffers are pushed even if the buffers aren't going to be. https://bugzilla.gnome.org/show_bug.cgi?id=721835 2014-01-11 01:24:44 -0300 Thiago Santos * gst-libs/gst/video/gstvideodecoder.c: videodecoder: do not lose events when dropping frames Events must be persisted after a frame is dropped to avoid losing obligatory information for the stream. https://bugzilla.gnome.org/show_bug.cgi?id=721835 2014-01-08 11:29:29 -0300 Thiago Santos * tests/check/libs/videodecoder.c: tests: videodecoder: add test for reverse playback Checks that buffers are pushed backwards in reverse playback https://bugzilla.gnome.org/show_bug.cgi?id=721666 2014-01-06 20:53:15 -0300 Thiago Santos * gst-libs/gst/video/gstvideodecoder.c: videodecoder: use new segment earlier for reverse playback For reverse playback, the segment event will only be pushed when the first buffer is actually pushed. But for decoding frames and storing those into the list to be pushed the output_segment.rate value is used to determine if it is forward or reverse playback. In case a previous segment event (or none) is in use it will mistakenly think it is doing forward playback and push the buffers immediatelly and try to clip buffers based on an old segment (or an uninitialized one, leading to an assertion) This patch fixes this by copying the segment earlier if on reverse playback https://bugzilla.gnome.org/show_bug.cgi?id=721666 2014-01-07 22:04:20 -0300 Thiago Santos * tests/check/libs/videodecoder.c: tests: videodecoder: add check for serialization of events Tests that events are properly serialized with buffers, also checks that the usual events are sent (stream start, caps, segment and eos). 2014-01-07 16:28:18 -0300 Thiago Santos * tests/check/Makefile.am: * tests/check/libs/.gitignore: * tests/check/libs/videodecoder.c: tests: videodecoder: add simple playback test Add a simple playback test that makes sure that video decoder pushes buffers in the same order it receives and that it respects the set timestamps and durations 2014-01-07 11:51:01 +0100 Wim Taymans * gst-libs/gst/rtsp/gstrtsptransport.c: * gst-libs/gst/rtsp/gstrtsptransport.h: * win32/common/libgstrtsp.def: rtsptransport: add GType for Profile See https://bugzilla.gnome.org/show_bug.cgi?id=720696 2013-12-04 01:08:13 +0100 Sebastian Rasmussen * docs/design/Makefile.am: docs: add missing files for distribution Fixes https://bugzilla.gnome.org/show_bug.cgi?id=720015 2013-11-15 14:17:03 +0000 William Grant * configure.ac: configure: Prevent the NEON check in configure from passing under aarch64. The test verifies that the NEON C intrinsics work, but the rest of the codebase uses lots of direct ARMv7 NEON assembly. The same intrinsics work in A64, but the assembly is slightly different. Prevent the check from passing so that we don't use this where it won't work. https://bugzilla.gnome.org/show_bug.cgi?id=712367 2013-12-31 10:17:55 +0100 Stéphane Cerveau * gst-libs/gst/riff/riff-ids.h: riff: Add id3 tag Add id3 tag for wavparse https://bugzilla.gnome.org/show_bug.cgi?id=721241 2013-12-30 15:28:24 +0000 Julien Isorce * gst-libs/gst/video/gstvideodecoder.c: * gst-libs/gst/video/gstvideoencoder.c: videodec/enc: allow to call negiotate without ouput state Some decoders call set_output_state from GstVideoDecoder::negotiate() So move the g_return_val_if_fail to default_negotiate(), i.e. where it is actually necessary. Fix https://bugzilla.gnome.org/show_bug.cgi?id=721078 2014-01-03 02:18:20 +1100 Jan Schmidt * gst-libs/gst/audio/gstaudiobasesrc.c: audiobasesrc: Avoid unnecessary configuration Port a change from audiobasesink from def07410, to ignore setcaps when the caps don't actually change, and avoid a reconfiguration and reset of the ringbuffer in that case. 2013-12-30 19:48:29 +0100 Sebastian Dröge * gst/videotestsrc/gstvideotestsrc.c: videotestsrc: Always set pixel-aspect-ratio and interlace-mode in the fixed caps Otherwise our caps will not be compatible with elements that require a 1/1 pixel-aspect-ratio or progressive video. https://bugzilla.gnome.org/show_bug.cgi?id=721103 2013-12-05 14:31:25 +0000 Julien Isorce * gst-libs/gst/video/gstvideodecoder.c: * gst-libs/gst/video/gstvideoencoder.c: videodec/enc: clear reconfigure flag if negotiate succeeds So that it avoids to send an allocation query twice. One from an early call to gst_video_encoder_negotiate from a subclass, then one from gst_video_encoder_allocate_output_frame. Which means that previously gst_video_encoder_negotiate was not clearing the GST_PAD_FLAG_NEED_RECONFIGURE even on success. Fixes bug https://bugzilla.gnome.org/show_bug.cgi?id=719684 2013-12-05 14:39:57 +0000 Julien Isorce * gst-libs/gst/audio/gstaudiodecoder.c: * gst-libs/gst/audio/gstaudioencoder.c: audiodec/enc: clear reconfigure flag if negotiate succeeds So that it avoids to send an allocation query twice. One from an early call to gst_audio_encoder_negotiate from a subclass, then one from gst_audio_encoder_allocate_output_buffer. Which means that previously gst_audio_encoder_negotiate was not clearing the GST_PAD_FLAG_NEED_RECONFIGURE even on success. Fixes bug https://bugzilla.gnome.org/show_bug.cgi?id=719684 2013-12-26 23:21:45 +1100 Jan Schmidt * gst-libs/gst/audio/gstaudiobasesink.c: * gst-libs/gst/audio/gstaudiodecoder.c: audiodecoder: Choose a default initial caps before sending GAP If there are no caps from the audio decoder when handling a GAP event - as when one is received right at the start on a DVD without initial audio - then choose any default caps for downstream and then send the GAP, so the audio sink has a configured format in which to start the ringbuffer. Also, make the audio sink reject a GAP without caps with a clearer error message. Fixes bug https://bugzilla.gnome.org/show_bug.cgi?id=603921