When we feed the ogg sync layer, we need to feed it contiguous data even if the
sync layer did not consume all of it yet. This makes sure that it always finds
the next page even for more corrupted files. Use a different read_offset for
this purpose. since we now keep track of the sync layer, we don't have to reset
after finding a start of a page.
Add some more debug info for the error paths.
Only reset the sync layer when we perform a seek operation.
Avoid failure when the next chain has no bos pages but instead simply ignore it.
when we receive unknown page serial numbers mid stream, don't fail but post a
warning and hope that we get back on track later.
Fixes#579642
Add the start position of the first segment to the running time
used to generate buffer timestamps in vorbisenc. This avoids generating
buffers which fall outside the initial segment. The element segment
handling requires more extensive fixing, but this at least prevents
regressions. Fixes: #580020
Add property "speed-level" to control the amount of motion searching
the encoder does. This is only available in libtheora >= 1.0 and
will silently fail with earlier libraries. Fixes: #572275.
Signed-off-by: David Schleef <ds@schleef.org>
This is due to race conditions between functions that
modified the mixer like set_volume and
snd_mixer_handle_events since the handle_events
can now be called at any time.
Fixed by adding locking around any snd_mixer call
since even read functions can modify the mixer stucture, since
alsa likes to clear it's values before reading new ones.
The favorite race condition seemed to be that set_volume
called read_elem (in alsalib) that reset the volumes to
0 and then read them with read_x_volume. This read looped
on each channel and as the race condition occured the
channels value could be anything , most of the time
it was 0. Thus no value was read or only the value of
one channel was and the volume was reset to 0.
Fixes bug #478512.
Original commit message from CVS:
* configure.ac:
* ext/gio/gstgio.c: (plugin_init):
Add plugin dependency for the GIO and GVfs modules.
Fixes bug #566876.
Original commit message from CVS:
* configure.ac:
* ext/gnomevfs/gstgnomevfs.c: (plugin_init):
Add plugin dependency for the gnomevfs modules.
Fixes bug #566875.
Original commit message from CVS:
* configure.ac:
* ext/libvisual/visual.c: (plugin_init):
Use new core API to make registry re-scan the plugin
whenever visualisations are added or removed (see #350477).
Original commit message from CVS:
* ext/vorbis/vorbisenc.c: (gst_vorbis_enc_base_init),
(gst_vorbis_enc_init):
Make vorbisenc's pad template behave like vorbisdec's. Fixes a leak with
pad templates.
Original commit message from CVS:
* ext/ogg/gstoggdemux.c: (gst_ogg_pad_class_init),
(gst_ogg_pad_dispose), (gst_ogg_pad_finalize):
Use G_DEFINE_TYPE for the OggPad to get some threadsafe type
init from glib.
Original commit message from CVS:
* ext/ogg/gstoggdemux.c: (gst_ogg_demux_sink_event):
If no stream was found before receiving EOS, post an error message.
Fixes#561924.
Original commit message from CVS:
* ext/theora/gsttheoraenc.h:
* ext/theora/theoraenc.c: (gst_theora_enc_init),
(theora_buffer_from_packet), (theora_push_packet),
(theora_enc_sink_event), (theora_enc_is_discontinuous),
(theora_enc_chain):
Parse segment events.
Pass incomming buffer timestamps to outgoing buffers.
Use the running_time to construct the granulepos.
Fixes#562163.
Original commit message from CVS:
* ext/gio/gstgiobasesrc.c: (gst_gio_base_src_create):
* ext/gnomevfs/gstgnomevfssrc.c: (gst_gnome_vfs_src_create):
Use gst_buffer_try_new_and_alloc() and fail properly if the
allocation failed. This prevents abort() if downstream elements
request an insane amount of memory.
Original commit message from CVS:
* ext/ogg/gstoggdemux.c: (gst_ogg_pad_submit_packet),
(gst_ogg_demux_deactivate_current_chain),
(gst_ogg_demux_perform_seek), (gst_ogg_demux_handle_page),
(gst_ogg_demux_loop):
* ext/ogg/gstoggdemux.h:
Copy seqnums around to track playback segments and messages.
Original commit message from CVS:
Based on patch by: Matthias Kretz <kretz at kde dot org>
* ext/alsa/gstalsasink.c: (gst_alsasink_open),
(gst_alsasink_prepare), (gst_alsasink_unprepare),
(gst_alsasink_write):
Make all access non-blocking so that we can better handle unplugging
of usb devices. Fixes#559111
Original commit message from CVS:
Based on patch by: Robin Stocker <robin at nibor dot org>
* ext/theora/gsttheoradec.h:
* ext/theora/theoradec.c: (gst_theora_dec_init),
(theora_dec_setcaps), (theora_handle_type_packet),
(theora_dec_decode_buffer), (theora_dec_change_state):
Parse input caps and make the PAR override the encoded PAR when
specified by a container. Fixes#555699.
Original commit message from CVS:
* ext/vorbis/vorbisenc.c:
(gst_vorbis_enc_buffer_check_discontinuous):
Fix discontinuity detection which was broken by last commit.
Original commit message from CVS:
Patch by: Daniel Drake <dsd at laptop dot org>
* ext/ogg/gstoggmux.c: (gst_ogg_mux_clear_collectpads):
Unref all buffers when clearing collectpads. Fixes bug #546955.
Original commit message from CVS:
Based on a patch by: Klaas <klaas at rivercrew dot net>
* ext/vorbis/vorbisenc.c: (gst_vorbis_enc_sink_event),
(gst_vorbis_enc_buffer_check_discontinuous),
(gst_vorbis_enc_chain), (gst_vorbis_enc_change_state):
* ext/vorbis/vorbisenc.h:
Keep track of the upstream segments and use the running time on that
segment instead of the buffer timestamp everywhere. Fixes bug #525807.
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:
Patch by: ogg.k.ogg.k <ogg dot k dot ogg dot k at googlemail dot com>
* ext/theora/theoraparse.c: (theora_parse_set_streamheader):
Set the BOS flag on the BOS packet. Fixes#553244.
Original commit message from CVS:
Patch by: Alessandro Dessina <alessandro nnva org>
* ext/ogg/gstoggdemux.c: (gst_ogg_demux_deactivate_current_chain),
(gst_ogg_demux_activate_chain):
Don't add pads and activate them for skeleton streams. These are already
handled inside oggdemux. Fixes bug #537599.
Original commit message from CVS:
* ext/vorbis/vorbisdec.c: (vorbis_dec_change_state):
Reset variable so that query and convert fail after going back to
READY. Fixes#548898.
Original commit message from CVS:
* ext/vorbis/vorbisenc.c: (gst_vorbis_enc_chain):
If a buffer arrives with a timestamp before the timestamp+duration
of the previous buffer clip it instead of dropping it completely.
Slight improvement for the unfixable bug #548913.
Original commit message from CVS:
* ext/vorbis/vorbisdec.c: (vorbis_handle_data_packet):
Take the current timestamp instead of timestamp+duration for the offset.
This offset will later be used for calculating the timestamp and
otherwise vorbisdec will interpolate timestamps wrong if upstream
only sends timestamps and no granulepos.
Original commit message from CVS:
* ext/ogg/gstoggmux.c: (gst_ogg_mux_sink_event),
(gst_ogg_mux_request_new_pad):
* ext/ogg/gstoggmux.h:
Don't pretend to support NEWSEGMENT events, instead override the
GstCollectPads event function to return FALSE on NEWSEGMENT events
and do the normal work for other events.
This prevents elements like flacenc to seek to the start and rewrite
some data which then results in a broken Ogg packet.
Original commit message from CVS:
* ext/ogg/gstoggdemux.c: (gst_ogg_demux_chain_peer),
(gst_ogg_demux_perform_seek), (gst_ogg_demux_handle_page):
Don't use GST_CLOCK_TIME_NONE as start of NEWSEGMENT events.
This fixes a critical warning.
Original commit message from CVS:
Patch by: Jan Gerber <j at oil21 dot org>
* ext/ogg/gstoggdemux.c: (gst_ogg_pad_parse_skeleton_fisbone):
Fix calculation of the start time from skeleton streams.
Fixes bug #530068.
Original commit message from CVS:
Patch by: Sam Morris <sam at robots dot org to uk>
* gst-libs/gst/interfaces/mixertrack.c:
(gst_mixer_track_class_init), (gst_mixer_track_get_property),
(gst_mixer_track_set_property):
API: Add "index" property to GstMixerTrack to differantiate between
multiple mixer tracks with the same label.
* ext/alsa/gstalsamixeroptions.c: (gst_alsa_mixer_options_new):
* ext/alsa/gstalsamixertrack.c: (gst_alsa_mixer_track_new):
Set the "index" property of GstMixerTrack to the index given by ALSA.
Fixes bug #528299.
Original commit message from CVS:
* ext/alsa/gstalsamixer.c:
Also consider "speaker" as a name for master volume. If that doesn't
help look for the first non-mono volume control that also has a
playback switch.
Original commit message from CVS:
* ext/vorbis/vorbisenc.c: (gst_vorbis_enc_get_latency),
(gst_vorbis_enc_src_query), (gst_vorbis_enc_chain):
Report the encoder latency. Fixes#538232.
Original commit message from CVS:
* ext/gio/gstgiobasesrc.c: (gst_gio_base_src_finalize),
(gst_gio_base_src_create):
* ext/gio/gstgiobasesrc.h:
Try to read the requested number of bytes, even if the first
read returns less than requested, until nothing is read anymore
or we have the requested amount of bytes. This fixes playback of
files via Samba as Samba only allows to read 64k at once.
Implement a caching algorithm that makes sure that we read at
least 4k of data every time. Some elements will try to read a few
bytes, then seek, read again a few bytes and so on and this is
painfully slow as every operation has to go over DBus if GVfs is
used as backend.
Fixes bug #536849 and #536848.
* ext/gio/gstgiosrc.c: (gst_gio_src_class_init),
(gst_gio_src_check_get_range):
Override check_get_range() to blacklist http/https URIs
and whitelist file URIs. More to be added on demand.
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/vorbis/vorbisdec.c: (vorbis_handle_identification_packet):
* ext/vorbis/vorbisenc.c: (gst_vorbis_enc_generate_sink_caps):
Add sane defaults for the 7 and 8 channel layouts as those are
undefined in the Vorbis spec. Use NONE channel layouts when decoding
more than 8 channels instead of erroring out. Fixes bug #535356.
Original commit message from CVS:
* docs/plugins/Makefile.am:
* docs/plugins/gst-plugins-base-plugins-docs.sgml:
* docs/plugins/gst-plugins-base-plugins-sections.txt:
* ext/theora/theoraparse.c:
Add theoraparse to the docs and fix some docs.
Original commit message from CVS:
* ext/alsa/gstalsamixertrack.c:
(gst_alsa_mixer_track_update_alsa_capabilities):
Make sure playback volumes aren't accidentally overwritten by
capture volumes if an alsa mixer track has both playback and
capture capabilities: we create two GstMixerTracks in that
case, so make sure we query only the alsa capabilities that
refer to the type of GstMixerTrack we created from the dual
capability alsa element. Should fix issues with Audigy2 sound
cards (#518082).
Original commit message from CVS:
* ext/vorbis/vorbisdec.c:
* gst/videoscale/gstvideoscale.c: (gst_video_scale_transform):
* sys/xvimage/xvimagesink.c: (gst_xvimagesink_show_frame):
Some debug and comment fixes.
* tests/examples/dynamic/addstream.c: (main):
Fix , to ;
Original commit message from CVS:
* ext/gnomevfs/gstgnomevfssrc.c: (gst_gnome_vfs_src_init),
(gst_gnome_vfs_src_finalize),
(gst_gnome_vfs_src_received_headers_callback),
(gst_gnome_vfs_src_create), (gst_gnome_vfs_src_stop):
* ext/gnomevfs/gstgnomevfssrc.h:
Set the ICY caps on the srcpad from where they get picked up by the base
class now and set on the outgoing buffers.
* gst-libs/gst/audio/gstbaseaudiosrc.c:
(gst_base_audio_src_create):
* sys/v4l/v4lsrc_calls.c: (gst_v4lsrc_buffer_new):
BaseSrc now sets the caps on outgoing buffers automatically.
Original commit message from CVS:
Patch by: j^ <j at oil21 dot org>
* ext/ogg/gstoggdemux.c: (gst_ogg_pad_parse_skeleton_fishead),
(gst_ogg_pad_parse_skeleton_fisbone):
* ext/ogg/gstoggdemux.h:
Parse presentation time from skeleton streams and use it as offset
for the timestamps. Fixes bug #530068.
Original commit message from CVS:
* ext/alsa/gstalsadeviceprobe.c:
(gst_alsa_get_device_list): Don't return before freeing up
the allocated structures.
Original commit message from CVS:
* ext/ogg/gstoggmux.c:
Update Ogg/Dirac muxing. Removes the weird "KW-DIRAC" bos
packet. Should conform to what we currently think is the
final Ogg/Dirac muxing spec.
Original commit message from CVS:
* ext/ogg/gstogmparse.c: (gst_ogm_parse_stream_header):
GST_TYPE_FRACTION contains gints so correctly cast gint64 arguments to
vaargs functions to gint. Otherwise the fractions will get 0 set
instead of the correct value on big endian systems. Fixes bug #529018.
Original commit message from CVS:
* ext/gnomevfs/gstgnomevfssink.c:
(gst_gnome_vfs_sink_uri_get_protocols):
* ext/gnomevfs/gstgnomevfssrc.c:
(gst_gnome_vfs_src_uri_get_protocols):
* ext/gnomevfs/gstgnomevfsuri.c: (_internal_get_supported_uris),
(gst_gnomevfs_get_supported_uris):
Get the list of supported URI schemes in a threadsafe way and use the
same list for the source and sink.
Original commit message from CVS:
* ext/gio/gstgio.c: (_internal_get_supported_protocols),
(gst_gio_get_supported_protocols):
Don't generate a new supported protocols list on each call but cache
it. It's supposed to be static anyway, this way we only leak it once
per process.
* ext/gio/gstgiosink.c: (gst_gio_sink_base_init),
(gst_gio_sink_class_init), (gst_gio_sink_finalize),
(gst_gio_sink_set_property), (gst_gio_sink_get_property),
(gst_gio_sink_start):
* ext/gio/gstgiosink.h:
* ext/gio/gstgiosrc.c: (gst_gio_src_base_init),
(gst_gio_src_class_init), (gst_gio_src_finalize),
(gst_gio_src_set_property), (gst_gio_src_get_property),
(gst_gio_src_start):
* ext/gio/gstgiosrc.h:
API: Add "file" properties where one can set a GFile as source/destination.
Add locking to the properties and use gst_element_class_set_details_simple()
instead of a static GstElementDetails struct.
Original commit message from CVS:
* ext/gio/gstgio.c: (gst_gio_get_supported_protocols):
Return NULL instead of a gchar * array with one NULL element if we
don't get any supported URI schemes from GIO.
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/gio/gstgio.c: (gst_gio_get_supported_protocols):
Filter cdda from the supported URI schemes. We can't support
musicbrainz tags and everything else one expects from a cdda source
with GIO. Fixes bug #526794.