Commit graph

430 commits

Author SHA1 Message Date
Wim Taymans
f92e880040 gst/playback/: Add some debug info to decodebin, update README
Original commit message from CVS:
* gst/playback/README:
* gst/playback/gstdecodebin.c: (gst_decode_bin_factory_filter),
(gst_decode_bin_init), (find_compatibles), (close_pad_link),
(try_to_link_1), (no_more_pads), (close_link), (type_found):
Add some debug info to decodebin, update README
2004-10-01 15:57:53 +00:00
Ronald S. Bultje
6fd179b578 ext/flac/gstflacdec.c: Only return true if we actually filled something in. Prevents player applications from showing...
Original commit message from CVS:
* ext/flac/gstflacdec.c: (gst_flacdec_src_query):
Only return true if we actually filled something in. Prevents
player applications from showing a random length for flac files.
* gst-libs/gst/riff/riff-read.c: (gst_riff_read_class_init),
(gst_riff_read_use_event), (gst_riff_read_handle_event),
(gst_riff_read_seek), (gst_riff_read_skip), (gst_riff_read_strh),
(gst_riff_read_strf_vids_with_data),
(gst_riff_read_strf_auds_with_data), (gst_riff_read_strf_iavs):
OK, ok, so I implemented event handling. Apparently it's normal
that we receive random events at random points without asking
for it.
* gst/avi/gstavidemux.c: (gst_avi_demux_reset),
(gst_avi_demux_src_convert), (gst_avi_demux_handle_src_query),
(gst_avi_demux_handle_src_event), (gst_avi_demux_stream_index),
(gst_avi_demux_sync), (gst_avi_demux_stream_scan),
(gst_avi_demux_massage_index), (gst_avi_demux_stream_header),
(gst_avi_demux_handle_seek), (gst_avi_demux_process_next_entry),
(gst_avi_demux_stream_data), (gst_avi_demux_loop):
* gst/avi/gstavidemux.h:
Implement non-lineair chunk handling and subchunk processing.
The first solves playback of AVI files where the audio and video
data of individual buffers that we read are not synchronized.
This should not happen according to the wonderful AVI specs, but
of course it does happen in reality. It is also a prerequisite for
the second. Subchunk processing allows us to cut chunks in small
pieces and process each of these pieces separately. This is
required because I've seen several AVI files with incredibly large
audio chunks, even some files with only one audio chunk for the
whole file. This allows for proper playback including seeking.
This patch is supposed to fix all AVI A/V sync issues.
* gst/flx/gstflxdec.c: (gst_flxdec_class_init),
(flx_decode_chunks), (flx_decode_color), (gst_flxdec_loop):
Work.
* gst/modplug/gstmodplug.cc:
Proper return value setting for the query() function.
* gst/playback/gstplaybasebin.c: (setup_source):
Being in non-playing state (after, e.g., EOS) is not necessarily
a bad thing. Allow for that. This fixes playback of short files.
They don't actually playback fully now, because the clock already
runs. This means that small files (<500kB) with a small length
(<2sec) will still not or barely play. Other files, such as mod
or flx, will work correctly, however.
2004-09-29 09:45:40 +00:00
Wim Taymans
99b89da705 gst/playback/gstplaybasebin.c: Only signal the no_more_pads signal when we have added the stream to our list.
Original commit message from CVS:
* gst/playback/gstplaybasebin.c: (new_decoded_pad):
Only signal the no_more_pads signal when we have
added the stream to our list.
2004-09-24 17:33:00 +00:00
Wim Taymans
26f9ce012c gst/playback/: Don't try to preroll or decode more than one audio/video track.
Original commit message from CVS:
* gst/playback/gstplaybasebin.c: (remove_prerolls),
(new_decoded_pad):
* gst/playback/gstplaybasebin.h:
* gst/playback/gstplaybin.c: (setup_sinks):
Don't try to preroll or decode more than one audio/video
track.
2004-09-24 16:38:28 +00:00
Ronald S. Bultje
05090d3025 gst/playback/gstplaybasebin.c: Throw error if we failed to find a suitable output. This should throw an error if we s...
Original commit message from CVS:
* gst/playback/gstplaybasebin.c: (gst_play_base_bin_change_state):
Throw error if we failed to find a suitable output. This should
throw an error if we successfully set up a pipeline (e.g. because
we recognized a media file) but found no decodable streams in it
(e.g. because it contains only media stream types for which we
have no decoders, or because it's not a media type).
2004-09-24 16:01:46 +00:00
Ronald S. Bultje
07b9b8ac0b gst/asfdemux/gstasfdemux.c: Prevent infinite loops. More correct error reporting.
Original commit message from CVS:
* gst/asfdemux/gstasfdemux.c: (_read_var_length), (_read_guid),
(gst_asf_demux_process_segment), (gst_asf_demux_handle_data),
(gst_asf_demux_process_chunk), (gst_asf_demux_handle_sink_event):
Prevent infinite loops. More correct error reporting.
* gst/auparse/gstauparse.c: (gst_auparse_chain):
Error out if negotiation fails.
* gst/playback/gstplaybasebin.c: (setup_source),
(gst_play_base_bin_change_state), (gst_play_base_bin_error),
(gst_play_base_bin_found_tag):
Error/tag forwarding. Pre-roll fixes for source errors on state
changes (e.g. "file does not exist") to prevent hangs.
2004-09-22 07:55:37 +00:00
Ronald S. Bultje
823ceafca7 ext/mad/gstmad.c: Allow for mp3 rate/channels changes. However, only very conservatively. Reason that we *have* to en...
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.
2004-09-20 12:40:40 +00:00
Ronald S. Bultje
8c535ea438 gst/playback/gstplaybin.c: Volume is a double not a float.
Original commit message from CVS:
* gst/playback/gstplaybin.c: (gst_play_bin_get_property):
Volume is a double not a float.
2004-09-15 16:48:43 +00:00
Ronald S. Bultje
68d1ca33ae gst/playback/gstplaybasebin.c: Handle the case where we failed to setup a clear pipeline. This will throw an error (o...
Original commit message from CVS:
* gst/playback/gstplaybasebin.c: (state_change), (setup_source),
(gst_play_base_bin_change_state):
Handle the case where we failed to setup a clear pipeline. This
will throw an error (or EOS, another nice case) and if you don't
catch that, the app will wait for the signal forever (and thus
hang).
2004-09-15 08:35:18 +00:00
Ronald S. Bultje
312cc7ec64 ext/gnomevfs/: Use _uri_new() instead of _open(), so it doesn't take as long and
Original commit message from CVS:
* ext/gnomevfs/gstgnomevfssink.c:
(gst_gnomevfssink_uri_get_protocols):
* ext/gnomevfs/gstgnomevfssrc.c:
(gst_gnomevfssrc_uri_get_protocols):
* ext/gnomevfs/gstgnomevfsuri.c: (gst_gnomevfs_get_supported_uris):
* ext/gnomevfs/gstgnomevfsuri.h:
Use _uri_new() instead of _open(), so it doesn't take as long and
Christophe's computer won't hang.
* gst/playback/gstplaybasebin.c: (unknown_type):
Throw error on unknown media type, so apps actually display it.
2004-09-15 06:33:44 +00:00
Wim Taymans
87eb159d81 gst/playback/: Some more work on making sure seeking pauses the pipeline and that changing the uri actually does some...
Original commit message from CVS:
* gst/playback/gstplaybasebin.c: (queue_overrun), (no_more_pads),
(setup_source), (gst_play_base_bin_set_property),
(gst_play_base_bin_add_element):
* gst/playback/gstplaybin.c: (gst_play_bin_send_event):
Some more work on making sure seeking pauses the pipeline and
that changing the uri actually does something.
2004-09-14 16:54:14 +00:00
Ronald S. Bultje
8005b541c5 gst/playback/gstplaybasebin.c: Handle double disposals, and proper change of URIs.
Original commit message from CVS:
* gst/playback/gstplaybasebin.c:
(gst_play_base_bin_dispose), (gst_play_base_bin_set_property):
Handle double disposals, and proper change of URIs.
2004-09-13 18:23:49 +00:00
Ronald S. Bultje
b709c6844b ext/alsa/gstalsamixer.c: Update mixer (to sync with other sessions) if we try to obtain a new value. This makes alsam...
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.
2004-09-13 09:24:00 +00:00
Scott Wheeler
656c686274 Added a volume element to the gstplaybin pipeline and an element for setting it.
Original commit message from CVS:
Added a volume element to the gstplaybin pipeline and an element for setting
it.
2004-09-09 15:28:21 +00:00
Ronald S. Bultje
dd935da004 ext/alsa/: Re-commit ALSA switches.
Original commit message from CVS:
* ext/alsa/gstalsamixer.c: (gst_alsa_mixer_build_list):
* ext/alsa/gstalsamixertrack.c: (gst_alsa_mixer_track_new):
Re-commit ALSA switches.
* gst/adder/gstadder.c: (gst_adder_loop):
64-bit fix (#151416).
* gst/debug/progressreport.c: (gst_progressreport_report):
64-bit fix (#151419).
* gst/matroska/matroska-demux.c:
(gst_matroska_demux_parse_contents):
64-bit fix (#151420).
* gst/playback/test3.c: (update_scale):
64-bit fix (#151421).
2004-08-31 14:12:49 +00:00
Thomas Vander Stichele
7144b47a83 rename properly
Original commit message from CVS:
rename properly
2004-07-29 14:08:11 +00:00
Thomas Vander Stichele
6976f09876 rename properly
Original commit message from CVS:
rename properly
2004-07-29 14:05:09 +00:00
Wim Taymans
f239e7d239 Added videoscale
Original commit message from CVS:
Added videoscale
2004-07-28 13:31:09 +00:00
Wim Taymans
0edbb4a19d More playback updates, attempt to fix things after the state change breakage.
Original commit message from CVS:
* examples/seeking/seek.c: (update_scale), (main):
* gst/playback/gstdecodebin.c: (gst_decode_bin_get_type),
(gst_decode_bin_class_init), (gst_decode_bin_is_dynamic),
(gst_decode_bin_factory_filter), (compare_ranks), (print_feature),
(gst_decode_bin_init), (gst_decode_bin_dispose),
(find_compatibles), (close_pad_link), (try_to_link_1), (new_pad),
(no_more_pads), (close_link), (type_found),
(gst_decode_bin_set_property), (gst_decode_bin_get_property),
(plugin_init):
* gst/playback/gstplaybasebin.c: (gst_play_base_bin_get_type),
(gst_play_base_bin_class_init), (gst_play_base_bin_init),
(gst_play_base_bin_dispose), (queue_overrun),
(gen_preroll_element), (remove_prerolls), (unknown_type),
(no_more_pads), (new_stream), (setup_source),
(gst_play_base_bin_set_property), (gst_play_base_bin_get_property),
(play_base_eos), (gst_play_base_bin_change_state),
(gst_play_base_bin_add_element),
(gst_play_base_bin_remove_element),
(gst_play_base_bin_mute_stream), (gst_play_base_bin_link_stream),
(gst_play_base_bin_unlink_stream),
(gst_play_base_bin_get_streaminfo):
* gst/playback/gstplaybin.c: (gen_video_element),
(gen_audio_element):
* gst/playback/gststreaminfo.h:
More playback updates, attempt to fix things after the state change
breakage.
2004-07-22 16:44:58 +00:00
Thomas Vander Stichele
5eab54426e ignore
Original commit message from CVS:
ignore
2004-07-20 16:06:38 +00:00
Wim Taymans
b7715638af gst/playback/: Better error recovery. Added configurable preroll queue size. Faster detection of no-more-pads.
Original commit message from CVS:
* gst/playback/gstdecodebin.c: (gst_decode_bin_get_type),
(gst_decode_bin_class_init), (gst_decode_bin_is_dynamic),
(gst_decode_bin_factory_filter), (compare_ranks), (print_feature),
(gst_decode_bin_init), (gst_decode_bin_dispose),
(find_compatibles), (close_pad_link), (try_to_link_1), (new_pad),
(no_more_pads), (close_link), (type_found),
(gst_decode_bin_set_property), (gst_decode_bin_get_property),
(gst_decode_bin_change_state), (plugin_init):
* gst/playback/gstplaybasebin.c: (gst_play_base_bin_get_type),
(gst_play_base_bin_class_init), (gst_play_base_bin_init),
(gst_play_base_bin_dispose), (queue_overrun),
(gen_preroll_element), (remove_prerolls), (unknown_type),
(no_more_pads), (new_stream), (setup_source),
(gst_play_base_bin_set_property), (gst_play_base_bin_get_property),
(play_base_eos), (gst_play_base_bin_change_state),
(gst_play_base_bin_add_element),
(gst_play_base_bin_remove_element),
(gst_play_base_bin_mute_stream), (gst_play_base_bin_link_stream),
(gst_play_base_bin_unlink_stream),
(gst_play_base_bin_get_streaminfo):
* gst/playback/gstplaybasebin.h:
Better error recovery. Added configurable preroll queue size. Faster
detection of no-more-pads.
2004-07-16 10:45:33 +00:00
Johan Dahlin
94a5340c95 gst/playback/gstplaybin.c (gst_play_bin_set_property)
Original commit message from CVS:
* gst/playback/gstplaybin.c (gst_play_bin_set_property)
(gst_play_bin_get_property): Impl.
2004-07-13 11:47:08 +00:00
Wim Taymans
467c454d75 gst/playback/: More fixes on reusing of the element.
Original commit message from CVS:
* gst/playback/gstdecodebin.c: (gst_decode_bin_get_type),
(gst_decode_bin_class_init), (gst_decode_bin_factory_filter),
(compare_ranks), (print_feature), (gst_decode_bin_init),
(gst_decode_bin_dispose), (find_compatibles), (close_pad_link),
(try_to_link_1), (new_pad), (close_link), (type_found),
(gst_decode_bin_set_property), (gst_decode_bin_get_property),
(gst_decode_bin_change_state), (plugin_init):
* gst/playback/gstplaybasebin.c: (gst_play_base_bin_get_type),
(gst_play_base_bin_class_init), (gst_play_base_bin_init),
(gst_play_base_bin_dispose), (queue_overrun),
(gen_preroll_element), (remove_prerolls), (no_more_pads),
(new_stream), (setup_source), (gst_play_base_bin_set_property),
(gst_play_base_bin_get_property), (play_base_eos),
(gst_play_base_bin_change_state), (gst_play_base_bin_add_element),
(gst_play_base_bin_remove_element),
(gst_play_base_bin_mute_stream), (gst_play_base_bin_link_stream),
(gst_play_base_bin_unlink_stream),
(gst_play_base_bin_get_streaminfo):
* gst/playback/gstplaybasebin.h:
* gst/playback/gstplaybin.c: (gst_play_bin_get_type),
(gst_play_bin_class_init), (gst_play_bin_init),
(gst_play_bin_dispose), (gst_play_bin_set_property),
(gst_play_bin_get_property), (gen_video_element),
(gen_audio_element), (remove_sinks), (setup_sinks),
(gst_play_bin_change_state), (gst_play_bin_get_event_masks),
(gst_play_bin_send_event), (gst_play_bin_get_formats),
(gst_play_bin_convert), (gst_play_bin_get_query_types),
(gst_play_bin_query), (plugin_init):
* gst/playback/test4.c: (main):
More fixes on reusing of the element.
2004-07-12 09:11:41 +00:00
Thomas Vander Stichele
c750d9bd49 don't assert in state change
Original commit message from CVS:
don't assert in state change
2004-07-09 10:56:51 +00:00
Wim Taymans
f73ed6d78e Added missing file
Original commit message from CVS:
Added missing file
2004-07-08 13:51:26 +00:00
Wim Taymans
ca95579d23 gst/playback/Makefile.am: Add headers to noinst
Original commit message from CVS:
* gst/playback/Makefile.am:
Add headers to noinst
2004-07-08 12:30:52 +00:00
Wim Taymans
d23e3dea3f gst/playback/: More playbin fixes. Added README. Do better element filtering.
Original commit message from CVS:
* gst/playback/Makefile.am:
* gst/playback/README:
* gst/playback/gstdecodebin.c: (gst_decode_bin_get_type),
(gst_decode_bin_class_init), (gst_decode_bin_factory_filter),
(compare_ranks), (print_feature), (gst_decode_bin_init),
(gst_decode_bin_dispose), (find_compatibles), (close_pad_link),
(try_to_link_1), (new_pad), (close_link), (type_found),
(gst_decode_bin_set_property), (gst_decode_bin_get_property),
(plugin_init):
* gst/playback/gstplaybasebin.c: (gst_play_base_bin_get_type),
(gst_play_base_bin_class_init), (gst_play_base_bin_init),
(gst_play_base_bin_dispose), (rebuild_pipeline), (queue_overrun),
(gen_preroll_element), (no_more_pads), (new_stream),
(setup_source), (gst_play_base_bin_set_property),
(gst_play_base_bin_get_property), (gst_play_base_bin_change_state),
(gst_play_base_bin_add_element),
(gst_play_base_bin_remove_element),
(gst_play_base_bin_mute_stream), (gst_play_base_bin_link_stream),
(gst_play_base_bin_unlink_stream),
(gst_play_base_bin_get_streaminfo):
* gst/playback/gstplaybasebin.h:
* gst/playback/gstplaybin.c: (gst_play_bin_get_type),
(gst_play_bin_class_init), (gst_play_bin_init),
(gst_play_bin_dispose), (gst_play_bin_set_property),
(gst_play_bin_get_property), (gen_video_element),
(gen_audio_element), (setup_sinks), (gst_play_bin_change_state),
(gst_play_bin_get_event_masks), (gst_play_bin_send_event),
(gst_play_bin_get_formats), (gst_play_bin_convert),
(gst_play_bin_get_query_types), (gst_play_bin_query),
(plugin_init):
* gst/playback/gststreaminfo.c: (gst_stream_type_get_type),
(gst_stream_info_get_type), (gst_stream_info_class_init),
(gst_stream_info_init), (gst_stream_info_new),
(gst_stream_info_dispose), (gst_stream_info_set_property),
(gst_stream_info_get_property):
* gst/playback/gststreaminfo.h:
* gst/playback/test.c: (gen_video_element), (gen_audio_element),
(main):
* gst/playback/test2.c: (main):
* gst/playback/test3.c: (update_scale), (main):
More playbin fixes. Added README. Do better element filtering.
Added base class to preroll media. Added test apps.
2004-07-07 16:53:55 +00:00
David Schleef
3b89a9be49 gst/playback/Makefile.am: 'test' in bin_PROGRAMS? Are you serious? (Fixed, obviously.)
Original commit message from CVS:
* gst/playback/Makefile.am: 'test' in bin_PROGRAMS?  Are you
serious?  (Fixed, obviously.)
2004-07-07 01:13:41 +00:00
Wim Taymans
362bb08832 gst/playback/: More fixes, cleaned up playbin, make it use decodebin. Added threaded property to playbin.
Original commit message from CVS:
* gst/playback/gstdecodebin.c: (gst_decode_bin_get_type),
(gst_decode_bin_class_init), (gst_decode_bin_factory_filter),
(compare_ranks), (gst_decode_bin_init), (gst_decode_bin_dispose),
(find_compatibles), (close_pad_link), (try_to_link_1), (new_pad),
(close_link), (type_found), (gst_decode_bin_set_property),
(gst_decode_bin_get_property), (gst_decode_bin_get_event_masks),
(gst_decode_bin_send_event), (gst_decode_bin_get_formats),
(gst_decode_bin_convert), (gst_decode_bin_get_query_types),
(gst_decode_bin_query), (plugin_init):
* gst/playback/gstplaybin.c: (gst_play_bin_get_type),
(gst_play_bin_class_init), (gst_play_bin_init),
(gst_play_bin_dispose), (rebuild_pipeline), (get_audio_element),
(get_video_element), (new_pad), (setup_source),
(gst_play_bin_set_property), (gst_play_bin_get_property),
(gst_play_bin_change_state), (gst_play_bin_add_element),
(gst_play_bin_remove_element), (gst_play_bin_get_event_masks),
(gst_play_bin_send_event), (gst_play_bin_get_formats),
(gst_play_bin_convert), (gst_play_bin_get_query_types),
(gst_play_bin_query), (gst_play_bin_get_clock), (plugin_init):
* gst/playback/test.c: (main):
More fixes, cleaned up playbin, make it use decodebin. Added
threaded property to playbin.
2004-07-05 15:29:49 +00:00
Wim Taymans
4a54d4e80b Added some playback helper elements and some test apps, very alpha still.
Original commit message from CVS:
* configure.ac:
* gst/playback/Makefile.am:
* gst/playback/decodetest.c: (main):
* gst/playback/gstdecodebin.c: (gst_decode_bin_get_type),
(gst_decode_bin_class_init), (gst_decode_bin_factory_filter),
(compare_ranks), (gst_decode_bin_init), (gst_decode_bin_dispose),
(find_compatibles), (close_pad_link), (try_to_link_1), (new_pad),
(close_link), (type_found), (gst_decode_bin_set_property),
(gst_decode_bin_get_property), (gst_decode_bin_change_state),
(gst_decode_bin_get_event_masks), (gst_decode_bin_send_event),
(gst_decode_bin_get_formats), (gst_decode_bin_convert),
(gst_decode_bin_get_query_types), (gst_decode_bin_query),
(plugin_init):
* gst/playback/gstplaybin.c: (gst_play_bin_get_type),
(gst_play_bin_class_init), (gst_play_bin_init),
(gst_play_bin_dispose), (gen_default_output), (rebuild_pipeline),
(collect_sink_pads), (find_compatibles), (close_pad_link),
(try_to_link_1), (new_pad), (close_link), (type_found),
(setup_source), (gst_play_bin_set_property),
(gst_play_bin_get_property), (gst_play_bin_factory_filter),
(compare_ranks), (gst_play_bin_collect_factories),
(gst_play_bin_change_state), (gst_play_bin_add_element),
(gst_play_bin_remove_element), (gst_play_bin_get_event_masks),
(gst_play_bin_send_event), (gst_play_bin_get_formats),
(gst_play_bin_convert), (gst_play_bin_get_query_types),
(gst_play_bin_query), (gst_play_bin_get_clock), (plugin_init):
* gst/playback/test.c: (main):
Added some playback helper elements and some test apps, very alpha
still.
2004-07-05 11:14:30 +00:00