From 287845087692f134141d2a12ab5681668c2620db Mon Sep 17 00:00:00 2001 From: "Ronald S. Bultje" Date: Wed, 5 Jan 2005 14:56:27 +0000 Subject: examples/gstplay/player.c: Don't iterate. Original commit message from CVS: * examples/gstplay/player.c: (main): Don't iterate. * examples/seeking/seek.c: (fixate), (make_playerbin_pipeline): Add visualizations. * ext/a52dec/gsta52dec.c: (gst_a52dec_push), (gst_a52dec_handle_frame): Set duration. * ext/dvdnav/gst-dvd: Add audioconvert. Fixes #161325. * ext/dvdread/dvdreadsrc.c: (dvdreadsrc_get): Explicitely case to gint64. Possible valgrind error. * gst-libs/gst/play/play.c: (caps_set), (setup_size), (gst_play_tick_callback), (gst_play_change_state), (gst_play_dispose), (gst_play_init), (gst_play_class_init), (gst_play_set_location), (gst_play_get_location), (gst_play_seek_to_time), (gst_play_set_data_src), (gst_play_set_video_sink), (gst_play_set_audio_sink), (gst_play_set_visualization), (gst_play_connect_visualization), (gst_play_get_framerate), (gst_play_get_all_by_interface), (gst_play_new): Use playbin. Fixes #139749 and #147744. * gst/apetag/apedemux.c: (gst_ape_demux_parse_tags): Add genre tag. * gst/audioscale/gstaudioscale.c: (gst_audioscale_method_get_type), (audioscale_get_type), (gst_audioscale_base_init), (gst_audioscale_class_init), (gst_audioscale_expand_caps), (gst_audioscale_getcaps), (gst_audioscale_fixate), (gst_audioscale_link), (gst_audioscale_get_buffer), (gst_audioscale_decrease_rate), (gst_audioscale_increase_rate), (gst_audioscale_init), (gst_audioscale_dispose), (gst_audioscale_chain), (gst_audioscale_set_property), (gst_audioscale_get_property), (plugin_init): Indent properly. * gst/mpegstream/gstdvddemux.c: (gst_dvd_demux_process_private): Fix LPCM. * gst/qtdemux/qtdemux.c: (qtdemux_parse_udta), (qtdemux_tag_add_str), (qtdemux_tag_add_num), (qtdemux_tag_add_gnre), (qtdemux_video_caps): Add more metadata (fixes #162656). --- examples/gstplay/player.c | 8 -------- examples/seeking/seek.c | 34 ++++++++++++++++++++++++++++++++-- 2 files changed, 32 insertions(+), 10 deletions(-) (limited to 'examples') diff --git a/examples/gstplay/player.c b/examples/gstplay/player.c index 7a018fe0..e0bdd413 100644 --- a/examples/gstplay/player.c +++ b/examples/gstplay/player.c @@ -90,13 +90,6 @@ seek_timer (GstPlay * play) return FALSE; } -static gboolean -idle_iterate (GstPlay * play) -{ - gst_bin_iterate (GST_BIN (play)); - return (GST_STATE (GST_ELEMENT (play)) == GST_STATE_PLAYING); -} - int main (int argc, char *argv[]) { @@ -168,7 +161,6 @@ main (int argc, char *argv[]) GST_STATE_PLAYING) == GST_STATE_FAILURE) g_error ("Could not set state to PLAYING"); - g_idle_add ((GSourceFunc) idle_iterate, play); g_timeout_add (20000, (GSourceFunc) seek_timer, play); g_main_loop_run (loop); diff --git a/examples/seeking/seek.c b/examples/seeking/seek.c index c85ca8b0..4a5d51ab 100644 --- a/examples/seeking/seek.c +++ b/examples/seeking/seek.c @@ -551,15 +551,45 @@ make_mpegnt_pipeline (const gchar * location) return pipeline; } +static GstCaps * +fixate (GstPad * pad, const GstCaps * in_caps, gpointer data) +{ + GstCaps *caps; + GstStructure *s; + + if (gst_caps_get_size (in_caps) > 1) + return NULL; + + /* nothing if fixed already */ + s = gst_caps_get_structure (in_caps, 0); + if (gst_structure_has_field_typed (s, "width", G_TYPE_INT) && + gst_structure_has_field_typed (s, "height", G_TYPE_INT) && + gst_structure_has_field_typed (s, "framerate", G_TYPE_DOUBLE)) + return NULL; + + /* fixate */ + caps = gst_caps_copy (in_caps); + s = gst_caps_get_structure (caps, 0); + gst_caps_structure_fixate_field_nearest_int (s, "width", 200); + gst_caps_structure_fixate_field_nearest_int (s, "height", 150); + gst_caps_structure_fixate_field_nearest_double (s, "framerate", 10.0); + + return caps; +} + static GstElement * make_playerbin_pipeline (const gchar * location) { - GstElement *player; + GstElement *player, *vis; player = gst_element_factory_make ("playbin", "player"); + vis = gst_element_factory_make ("synaesthesia", "vis"); g_assert (player); + g_assert (vis); - g_object_set (G_OBJECT (player), "uri", location, NULL); + g_signal_connect (gst_element_get_pad (vis, "src"), "fixate", + G_CALLBACK (fixate), NULL); + g_object_set (G_OBJECT (player), "uri", location, "vis-plugin", vis, NULL); seekable_elements = g_list_prepend (seekable_elements, player); -- cgit v1.2.1