Original commit message from CVS:
* ext/ogg/gstoggdemux.c: (gst_ogg_demux_loop):
Report the FLOW_RETURN as string in the error message.
* gst-libs/gst/audio/gstringbuffer.c: (gst_ring_buffer_clear_all):
Don't assert when clearing an unnegotiated buffer.
Original commit message from CVS:
* check/generic/states.c:
* ext/ogg/gstoggdemux.c: (gst_ogg_pad_typefind):
* gst/playback/gstdecodebin.c: (gst_decode_bin_init):
Fixes for changes in registry API.
* configure.ac: Only export gst_plugins_desc. Add -no-undefined
to GST_PLUGIN_LDFLAGS.
* ext/libvisual/visual.c: Make the library shut up.
* gst-libs/gst/audio/audio.c: Don't define a plugin in a library.
* gst-libs/gst/audio/gstaudiofilter.c: same
Original commit message from CVS:
2005-08-29 Andy Wingo <wingo@pobox.com>
* ext/ogg/gstoggdemux.c (gst_ogg_demux_init): Init total_time to
-1.
(gst_ogg_demux_perform_seek): Clamp segment_stop only if it's
valid.
(gst_ogg_pad_submit_packet): Subtract the chain's begin_time only
if it's valid. Fixed streaming-mode playback.
Original commit message from CVS:
* ext/ogg/gstoggdemux.c: (ogg_find_peek):
Another from MikeS:
During typefinding, don't support negative offsets
(offsets from the end of the stream) in our typefind->peek() function
- nothing embedded in ogg ever needs them. However, we need to recognise
those requests and reject them, otherwise we return invalid pointers.
Original commit message from CVS:
* ext/ogg/gstoggdemux.c: (gst_ogg_pad_dispose):
* ext/vorbis/vorbisdec.c: (gst_vorbis_dec_class_init),
(vorbisdec_finalize), (vorbis_handle_type_packet):
Big shout-out to MikeS for fixing this giant memory leak.
Huzzah!
Original commit message from CVS:
* common/gtk-doc-plugins.mak:
* docs/plugins/Makefile.am:
* docs/plugins/gst-plugins-base-plugins-docs.sgml:
* docs/plugins/gst-plugins-base-plugins-sections.txt:
renamed to actual element names, so much nicer to look at
* docs/plugins/tmpl/gstmultifdsink.sgml:
remove
* docs/plugins/tmpl/multifdsink.sgml:
* docs/plugins/tmpl/tcpserversink.sgml:
add
* ext/alsa/gstalsa.c:
* ext/cdparanoia/gstcdparanoia.c: (cdparanoia_get_property):
* ext/ogg/gstoggmux.c:
* gst/audioconvert/gstaudioconvert.c: (gst_audio_convert_chain):
* gst/playback/gstdecodebin.c:
* gst/tcp/gstmultifdsink.c: (gst_multifdsink_class_init):
* gst/tcp/gsttcpserversink.c:
various fixes and documentation additions
Original commit message from CVS:
2005-08-02 Jan Schmidt <thaytan@mad.scientist.com>
* ext/ogg/gstoggmux.c: (gst_ogg_mux_change_state):
Stop collectpads before calling the parent state
change function on PAUSED->READY.
Original commit message from CVS:
make GST_PLUGIN_LDFLAGS only be flags; GST_LIBS should be
added manually to each Makefile.am so we are sure it goes
*last* and doesn't add -L flags before linking in libs of our
own, like, say, internal .la libs, that then accidentally pick
up the installed copy.
Original commit message from CVS:
2005-07-01 Andy Wingo <wingo@pobox.com>
* ext/theora/theoradec.c (theora_dec_src_getcaps): Implement a
getcaps to do explicit caps. Needs to be done in all decoders,
possibly via a base class.
* configure.ac (GST_PLUGIN_LDFLAGS): Add videoscale.
* ext/ogg/gstoggdemux.c (gst_ogg_pad_typefind): No need to set
caps on the sink pad, just rely on the pad template. Also, setting
ANY caps on a pad is not valid because the caps are not fixed.
* sys/ximage/ximagesink.c (gst_ximagesink_buffer_alloc): Set the
caps on the buffer, and get the width from the desired_caps if
they're set.
(gst_ximagesink_renegotiate_size): Implement via setting the
desired_caps on the ximagesink.
(gst_ximagesink_setcaps): Only reset the width of the player if it
wasn't already set. Not sure if this is right.
(gst_ximagesink_show_frame): Memcpy only for normal buffers.
* sys/ximage/ximagesink.h (desired_caps): New field, is the caps
that the user wants. NULL unless the window has been resized.
* gst/volume/gstvolume.c (volume_transform): Adapt to
basetransform refcount changes.
Original commit message from CVS:
* ext/ogg/gstoggdemux.c: (gst_ogg_pad_submit_packet):
If we're building a chain we are not in an error case
when we queue a buffer.
Original commit message from CVS:
2005-06-27 Andy Wingo <wingo@pobox.com>
* gst/videotestsrc/gstvideotestsrc.c
(gst_videotestsrc_activate_push): Activation API changes.
* gst/playback/gstdecodebin.c (gst_decode_bin_change_state)
(gst_decode_bin_dispose): Free dynamics in READY->NULL, because
they have refs on the decodebin.
* ext/ogg/gstoggdemux.c (gst_ogg_pad_class_init): Ref the right
parent class.
(gst_ogg_pad_typefind): Don't leak a pad ref.
(gst_ogg_chain_new_stream): gst_object_unref, not g_object_unref.
(gst_ogg_demux_sink_activate, gst_ogg_demux_sink_activate_push)
(gst_ogg_demux_sink_activate_pull): Changes for activation API.
Original commit message from CVS:
* ext/ogg/gstoggdemux.c: (gst_ogg_demux_activate_chain),
(gst_ogg_demux_perform_seek), (gst_ogg_demux_clear_chains):
Also FLUSH upstream, makes the loop function exit faster.
* ext/theora/theoradec.c: (theora_dec_src_query):
Some more debug info in the query.
* sys/ximage/ximagesink.c: (gst_ximagesink_ximage_new),
(gst_ximagesink_setcaps):
Release lock on par error, better error reporting.
Original commit message from CVS:
* ext/ogg/gstoggdemux.c: (gst_ogg_pad_submit_packet),
(gst_ogg_demux_activate_chain), (gst_ogg_demux_chain),
(gst_ogg_demux_clear_chains), (gst_ogg_demux_change_state):
Clear chains in READY
Queue packets until the chain is activated.
Original commit message from CVS:
* ext/ogg/gstoggdemux.c: (gst_ogg_pad_dispose),
(gst_ogg_pad_typefind), (gst_ogg_pad_submit_packet),
(gst_ogg_chain_new_stream), (gst_ogg_demux_perform_seek),
(gst_ogg_demux_chain), (gst_ogg_demux_loop),
(gst_ogg_demux_sink_activate):
* ext/theora/theoradec.c: (theora_dec_src_event),
(theora_handle_comment_packet), (theora_dec_chain),
(theora_dec_change_state):
* ext/vorbis/vorbisdec.c: (vorbis_dec_sink_event),
(vorbis_handle_data_packet), (vorbis_dec_chain),
(vorbis_dec_change_state):
Remove STREAM locks as they are taken in core now.
Never set bogus granulepos on vorbis/theora.
Fix leaks in theoradec tag parsing.
Original commit message from CVS:
* ext/ogg/gstoggdemux.c: (gst_ogg_pad_typefind),
(gst_ogg_demux_sink_activate):
And revert after wingo's revert.. sigh..
Original commit message from CVS:
* ext/ogg/gstoggdemux.c: (gst_ogg_pad_typefind),
(gst_ogg_demux_perform_seek), (gst_ogg_demux_sink_activate):
* ext/vorbis/vorbisdec.c: (vorbis_dec_convert),
(vorbis_dec_src_query), (vorbis_dec_src_event),
(vorbis_dec_sink_event), (vorbis_handle_comment_packet),
(vorbis_handle_type_packet), (vorbis_handle_header_packet),
(copy_samples), (vorbis_handle_data_packet), (vorbis_dec_chain):
Don't crap out when seeking back to position 0.
Original commit message from CVS:
* ext/ogg/gstoggdemux.c: (gst_ogg_demux_factory_filter):
* gst/playback/gstdecodebin.c: (find_compatibles):
Work with staticpadtemplates in elementfactories.
Original commit message from CVS:
Plugin port to 0.9, ogg/theora playback should work in the seek
example now.
Removed old examples.
Removed old oggvorbisenc, renamed rawvorbisenc to vorbisenc as
explained in 0.9 TODO doc.
Original commit message from CVS:
* ext/a52dec/gsta52dec.c: (gst_a52dec_push),
(gst_a52dec_handle_event), (gst_a52dec_chain):
Add some debug output. Check that a discont has a valid
time associated.
* ext/alsa/gstalsasink.c: (gst_alsa_sink_check_event),
(gst_alsa_sink_loop):
Ignore TAG events. A little extra debug for broken timestamps.
* ext/dvdnav/dvdnavsrc.c: (dvdnavsrc_init), (dvdnavsrc_loop),
(dvdnavsrc_change_state):
Ensure we send a discont to engage the link before we send any
other events.
* ext/dvdread/dvdreadsrc.c: (dvdreadsrc_init),
(dvdreadsrc_finalize), (_close), (_open), (_seek_title),
(_seek_chapter), (seek_sector), (dvdreadsrc_get),
(dvdreadsrc_uri_get_uri), (dvdreadsrc_uri_set_uri):
Handle URI of the form dvd://title[,chapter[,angle]]. Currently only
dvd://title works in totem because typefinding sends a seek that ends
up going back to chapter 1 regardless.
* ext/mpeg2dec/gstmpeg2dec.c:
* ext/mpeg2dec/gstmpeg2dec.h:
Output correct timestamps and handle disconts.
* ext/ogg/gstoggdemux.c: (get_relative):
Small guard against a null dereference.
* ext/pango/gsttextoverlay.c: (gst_textoverlay_finalize),
(gst_textoverlay_set_property):
Free memory when done. Don't call gst_event_filler_get_duration on
EOS events. Use GST_LOG and GST_WARNING instead of g_message and
g_warning.
* ext/smoothwave/gstsmoothwave.c: (gst_smoothwave_init),
(draw_line), (gst_smoothwave_dispose), (gst_sw_sinklink),
(gst_sw_srclink), (gst_smoothwave_chain):
Draw solid lines, prettier colours.
* gst/mpeg2sub/gstmpeg2subt.c: (gst_mpeg2subt_init):
Add a default palette that'll work for some movies.
* gst/mpegstream/gstdvddemux.c: (gst_dvd_demux_init),
(gst_dvd_demux_handle_dvd_event), (gst_dvd_demux_send_discont),
(gst_dvd_demux_send_subbuffer), (gst_dvd_demux_reset):
* gst/mpegstream/gstdvddemux.h:
* gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_send_discont),
(gst_mpeg_demux_parse_syshead), (gst_mpeg_demux_parse_pes):
* gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_init),
(gst_mpeg_parse_handle_discont), (gst_mpeg_parse_parse_packhead):
* gst/mpegstream/gstmpegparse.h:
Use PTM/NAV events when for timestamp adjustment when connected to
dvdnavsrc. Don't use many discont events where one suffices.
* gst/playback/gstplaybasebin.c: (group_destroy),
(gen_preroll_element), (gst_play_base_bin_add_element):
* gst/playback/gstplaybasebin.h:
Make sure we remove subtitles from the same bin we put them in.
* gst/subparse/gstsubparse.c: (convert_encoding), (parse_subrip),
(gst_subparse_buffer_format_autodetect),
(gst_subparse_change_state):
Fix some memleaks and invalid accesses.
* gst/typefind/gsttypefindfunctions.c: (ogganx_type_find),
(oggskel_type_find), (cmml_type_find), (plugin_init):
Some typefind functions for Annodex v3.0 files
* gst/wavparse/gstwavparse.h:
GstRiffReadClass is the correct parent class.
Original commit message from CVS:
* ext/ogg/gstoggmux.c:
eos/bos debugging
* gst/tcp/gstmultifdsink.c:
* gst/tcp/gstmultifdsink.h:
* gst/tcp/gsttcp.c:
* gst/tcp/gsttcp.h:
* gst/tcp/gsttcpclientsink.c:
* gst/tcp/gsttcpclientsrc.c:
* gst/tcp/gsttcpserversink.c:
* gst/tcp/gsttcpserversrc.c:
improve reusability of elements after state changes and errors
make multifdsink throw away streamheaders when receiving new ones
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.