Original commit message from CVS:
* ext/ogg/gstoggdemux.c: (gst_ogg_demux_push):
Fix position for discont if we're close as well. Nitpicking, but
saves a few milliseconds of extra waiting or skipping.
Original commit message from CVS:
patch by: Ronald Bultje <rbultje@ronald.bitfreak.net>
* ext/ogg/gstoggdemux.c:
Fix sync on broken files. Fixes#158976
Original commit message from CVS:
* ext/ogg/gstoggdemux.c: (get_relative), (gst_ogg_demux_src_query),
(gst_ogg_demux_push), (gst_ogg_pad_push):
Let's act as if we're synchronized now! :).
* ext/theora/theoradec.c: (theora_dec_chain):
Add some debug.
Original commit message from CVS:
* ext/ogg/gstoggdemux.c: (gst_ogg_pad_push):
Actually always send a discont (cornercase when resending the
same serial-tagged chain twice).
Original commit message from CVS:
2004-11-01 Christophe Fergeau <teuf@gnome.org>
* ext/ogg/gstoggdemux.c: (gst_ogg_demux_finalize): fix an "invalid
free" warning from libc.
Original commit message from CVS:
* ext/ogg/gstoggdemux.c: (gst_ogg_pad_push):
Hack to prevent crash when going to READY inside signal handler
while this function is active.
Original commit message from CVS:
* ext/ogg/gstoggdemux.c: (gst_ogg_demux_src_event),
(gst_ogg_demux_push):
Make seeking sort-of exact again (fixes#156387).
Original commit message from CVS:
* ext/ogg/gstoggdemux.c: (gst_ogg_demux_src_event),
(gst_ogg_demux_handle_event), (_find_chain_get_unknown_part),
(_find_streams_check), (gst_ogg_demux_push):
Fix EOS again. Needs to be done in a better way. We should not
remove the pad if there is no new chained stream.
Original commit message from CVS:
* ext/ogg/gstoggdemux.c: (gst_ogg_pad_remove),
(gst_ogg_demux_push), (gst_ogg_chains_clear):
Make sure to remove the pad when a new chain is
encountered. Set some vars to NULL so we don't try
to reference freed memory.
Original commit message from CVS:
* ext/ogg/gstoggdemux.c: (gst_ogg_demux_src_query),
(gst_ogg_demux_src_event), (_find_chain_seek),
(gst_ogg_pad_push):
Check for pad availability before using it.
* ext/ogg/gstoggdemux.c: (_find_chain_process):
Fix parsing of chained ogg. Needs more work on the decoder side.
Original commit message from CVS:
* ext/ogg/gstoggdemux.c: (gst_ogg_demux_src_query),
(gst_ogg_demux_src_event), (gst_ogg_pad_populate),
(gst_ogg_pad_push):
Yay for non-lineair granulepos in theora.
Original commit message from CVS:
* ext/ogg/gstoggdemux.c: (gst_ogg_demux_src_query),
(gst_ogg_demux_src_event), (gst_ogg_pad_push):
Start at zero.
* ext/theora/theoradec.c: (theora_dec_chain):
Skip headers. Bad idea for chained ogg, but fixes seeking.
Original commit message from CVS:
* ext/ogg/gstoggdemux.c: (gst_ogg_demux_src_query),
(gst_ogg_demux_src_event), (gst_ogg_pad_populate),
(_read_bos_process), (gst_ogg_demux_iterate), (gst_ogg_pad_new):
Faster seeking.
* ext/theora/theoradec.c: (theora_dec_sink_convert):
Time-to-default conversion.
* ext/vorbis/vorbisdec.c: (vorbis_dec_chain):
Don't error on unknown packets, just skip. We should probably
read them if we want to support chained ogg.
Original commit message from CVS:
* ext/ogg/gstoggdemux.c: (gst_ogg_demux_iterate):
Really do nothing when no data is available.
Go to the playing state when the stream is not seekable
instead of failing.
Original commit message from CVS:
* ext/dirac/Makefile.am:
* ext/dirac/gstdirac.cc:
* ext/dirac/gstdiracdec.cc:
* ext/dirac/gstdiracdec.h:
Do something. Don't actually know if this works because I don't
have a demuxer yet.
* ext/gsm/gstgsmdec.c: (gst_gsmdec_getcaps):
Add channels=1 to caps returned from _getcaps().
* ext/ogg/gstogmparse.c: (gst_ogm_audio_parse_get_type),
(gst_ogm_video_parse_get_type), (gst_ogm_audio_parse_base_init),
(gst_ogm_video_parse_base_init), (gst_ogm_parse_init),
(gst_ogm_audio_parse_init), (gst_ogm_video_parse_init),
(gst_ogm_parse_sink_convert), (gst_ogm_parse_chain),
(gst_ogm_parse_change_state):
Separate between audio/video so ogmaudioparse actually uses the
audio pad templates. Both audio and video work now, including
autoplugging. Also use sometimes-srcpad hack.
* gst-libs/gst/riff/riff-read.c: (gst_riff_read_seek):
Handle events better. Don't hang on infinite loops.
* gst/avi/gstavidemux.c: (gst_avi_demux_class_init),
(gst_avi_demux_init), (gst_avi_demux_reset),
(gst_avi_demux_src_convert), (gst_avi_demux_handle_src_query),
(gst_avi_demux_stream_header), (gst_avi_demux_stream_data),
(gst_avi_demux_change_state):
* gst/avi/gstavidemux.h:
Improve A/V sync. Still not perfect.
* gst/matroska/ebml-read.c: (gst_ebml_read_seek),
(gst_ebml_read_skip):
Handle events better.
* gst/qtdemux/qtdemux.c: (gst_qtdemux_handle_sink_event),
(gst_qtdemux_loop_header), (qtdemux_parse_trak),
(qtdemux_audio_caps):
Add IMA4. Improve event handling. Save offset after a seek when
the headers are at the end of the file so that we don't end up in
an infinite loop.
* gst/typefind/gsttypefindfunctions.c: (qt_type_find):
Add low-priority typefind support for files with no length.
Original commit message from CVS:
* ext/mad/gstmad.c: (gst_mad_check_caps_reset),
(gst_mad_change_state):
Allow for mp3 rate/channels changes. However, only very
conservatively. Reason that we *have* to enable this is smiply
because the mad find_sync() function is not good enough, it will
regularly sync on random data as valid frames and therefore make
us provide random caps as *final* caps of the stream. The best fix
I could think of is to simply require several of the same stream
changes in a row before we change caps.
The actual testcase that works now is #
* ext/ogg/Makefile.am:
* ext/ogg/gstogg.c: (plugin_init):
* ext/ogg/gstogmparse.c:
OGM support (video only for now; I need an audio sample file).
* gst/asfdemux/gstasfdemux.c: (gst_asf_demux_base_init),
(gst_asf_demux_process_stream), (gst_asf_demux_video_caps),
(gst_asf_demux_add_video_stream):
WMV extradata.
* gst/playback/gstplaybasebin.c: (unknown_type):
Don't error out on single unknown-types after all. It's wrong.
If we found type of video and audio but not of a subtitle stream,
it will still error out (which is unwanted). Will find a better fix
later on.
* gst/typefind/gsttypefindfunctions.c: (ogmvideo_type_find),
(ogmaudio_type_find), (plugin_init):
OGM support.
Original commit message from CVS:
* ext/ogg/gstoggdemux.c: (gst_ogg_pad_push):
* ext/ogg/gstoggmux.c: (gst_ogg_mux_next_buffer),
(gst_ogg_mux_send_headers), (gst_ogg_mux_loop):
Fix the case where the muxer would mark pages as delta
frames when they are not (vorbis only ogg).
Original commit message from CVS:
* ext/alsa/gstalsamixer.c: (gst_alsa_mixer_update),
(gst_alsa_mixer_get_volume), (gst_alsa_mixer_set_volume),
(gst_alsa_mixer_set_mute), (gst_alsa_mixer_set_record),
(gst_alsa_mixer_set_option), (gst_alsa_mixer_get_option):
Update mixer (to sync with other sessions) if we try to obtain
a new value. This makes alsamixer work accross applications.
* ext/alsa/gstalsasink.c: (gst_alsa_sink_get_time):
Only call sync functions if we're running, else alsalib asserts.
* ext/ogg/gstoggdemux.c: (gst_ogg_demux_src_query):
Sometimes fails to compile. Possibly a gcc bug.
* gst/playback/gstplaybin.c: (gen_video_element),
(gen_audio_element):
Add a reference to an application-provided object, because we lose
this same reference if we add it to the bin. If we don't do this,
we can only use this object once and thus crash if we go from
ready to playing, back to ready and back to playing again.
Also add an audioscale element because several cheap soundcards -
like mine - don't support all samplerates.
* sys/ximage/ximagesink.c: (gst_ximagesink_xcontext_get),
(gst_ximagesink_xcontext_clear), (gst_ximagesink_change_state):
Fix wrong order or PAR calls. Makes automatically obtained PAR
from the X server atually being used.
Original commit message from CVS:
* ext/ogg/gstoggmux.c: (gst_ogg_mux_next_buffer),
(gst_ogg_mux_send_headers), (gst_ogg_mux_loop):
Make sure we never send -1 granulepos.
Original commit message from CVS:
* ext/ogg/gstoggmux.c: (gst_ogg_mux_next_buffer),
(gst_ogg_mux_loop):
I will accept bitchslappings with non sharp objects.
Original commit message from CVS:
* ext/ogg/gstoggdemux.c: (gst_ogg_demux_iterate),
(gst_ogg_pad_push):
* ext/ogg/gstoggmux.c: (gst_ogg_mux_init),
(gst_ogg_mux_request_new_pad), (gst_ogg_mux_next_buffer),
(gst_ogg_mux_buffer_from_page), (gst_ogg_mux_push_page),
(gst_ogg_mux_send_headers), (gst_ogg_mux_loop):
Mark delta units in the muxer.
Try to decode the packet after an out-of-sync error from
libogg.
Original commit message from CVS:
* ext/ogg/gstoggdemux.c: (gst_ogg_demux_src_query),
(gst_ogg_demux_push):
Return query failure when we don't know the length of
an ogg stream insteda of returning TRUE with a bogus value.
Original commit message from CVS:
* ext/ogg/gstoggdemux.c: (gst_ogg_demux_init),
(gst_ogg_demux_get_formats), (gst_ogg_demux_src_query),
(gst_ogg_demux_src_event), (gst_ogg_demux_src_convert),
(gst_ogg_demux_handle_event), (gst_ogg_demux_seek_before),
(_find_chain_get_unknown_part), (_find_streams_check),
(gst_ogg_demux_push), (gst_ogg_pad_push):
* ext/theora/theoradec.c: (theora_get_formats),
(theora_dec_src_convert), (theora_dec_sink_convert),
(theora_dec_src_query), (theora_dec_src_event), (theora_dec_event),
(theora_dec_chain):
* ext/vorbis/vorbisdec.c: (vorbis_dec_get_formats),
(vorbis_dec_convert), (vorbis_dec_src_query),
(vorbis_dec_src_event), (vorbis_dec_event):
More seeking fixes, oggdemux now supports seeking to time and
uses the downstream element to convert granulepos to time.
Seeking in theora-only ogg files now works.
Original commit message from CVS:
* ext/ogg/gstoggdemux.c: (gst_ogg_demux_seek_before):
When trying to find the stream length, seek back N pages
instead of just one, where N is the number of streams in
the current chain.
Original commit message from CVS:
* ext/ogg/gstogg.c: (plugin_init):
we require bytestream now
* ext/ogg/gstoggdemux.c:
huge diff to implement chain setup in a fast and generic way. This
improves tag reading and startup of huge files (read: Theora videos)
quite a bit. It probably contains bugs, too, so please test.
Seeking is not improved to the fast method.
Original commit message from CVS:
* ext/ogg/gstoggdemux.c: (gst_ogg_pad_push):
* ext/ogg/gstoggmux.c:
Fix memleak in oggdemux when running unconnected pads.
doc update in mux, start working on keyframe mode.
Original commit message from CVS:
* ext/ogg/gstoggmux.c: (gst_ogg_mux_class_init),
(gst_ogg_mux_init), (gst_ogg_mux_next_buffer),
(gst_ogg_mux_get_headers), (gst_ogg_mux_set_header_on_caps),
(gst_ogg_mux_send_headers), (gst_ogg_mux_loop),
(gst_ogg_mux_get_property), (gst_ogg_mux_set_property):
Added property to set the maximum delay of a page.
Original commit message from CVS:
* ext/ogg/gstoggmux.c: (gst_ogg_mux_class_init),
(gst_ogg_mux_init), (gst_ogg_mux_next_buffer),
(gst_ogg_mux_get_headers), (gst_ogg_mux_set_header_on_caps),
(gst_ogg_mux_send_headers), (gst_ogg_mux_loop),
(gst_ogg_mux_get_property), (gst_ogg_mux_set_property):
Added max-delay property to control the maximum amount
of data to put in one page.
Original commit message from CVS:
* ext/ogg/gstoggmux.c: (gst_ogg_mux_init),
(gst_ogg_mux_next_buffer), (gst_ogg_mux_buffer_from_page),
(gst_ogg_mux_push_page), (gst_ogg_mux_get_headers),
(gst_ogg_mux_set_header_on_caps), (gst_ogg_mux_send_headers),
(gst_ogg_mux_loop):
Use stream caps to setup the initial pages in the ogg stream.
Correctly set the streamheader caps on the srcpad.