mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-20 15:27:07 +00:00
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).
This commit is contained in:
parent
17aa882fb0
commit
1c881d309f
8 changed files with 353 additions and 980 deletions
42
ChangeLog
42
ChangeLog
|
@ -1,3 +1,45 @@
|
|||
2005-01-05 Ronald S. Bultje <rbultje@ronald.bitfreak.net>
|
||||
|
||||
* 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).
|
||||
|
||||
2005-01-05 Thomas Vander Stichele <thomas at apestaart dot org>
|
||||
|
||||
* configure.ac:
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -259,8 +259,8 @@ gst_a52dec_channels (int flags, GstAudioChannelPosition ** _pos)
|
|||
}
|
||||
|
||||
static int
|
||||
gst_a52dec_push (GstPad * srcpad, int flags, sample_t * samples,
|
||||
GstClockTime timestamp)
|
||||
gst_a52dec_push (GstA52Dec * a52dec,
|
||||
GstPad * srcpad, int flags, sample_t * samples, GstClockTime timestamp)
|
||||
{
|
||||
GstBuffer *buf;
|
||||
int chans, n, c;
|
||||
|
@ -281,6 +281,7 @@ gst_a52dec_push (GstPad * srcpad, int flags, sample_t * samples,
|
|||
}
|
||||
}
|
||||
GST_BUFFER_TIMESTAMP (buf) = timestamp;
|
||||
GST_BUFFER_DURATION (buf) = 256 * GST_SECOND / a52dec->sample_rate;
|
||||
|
||||
gst_pad_push (srcpad, GST_DATA (buf));
|
||||
|
||||
|
@ -413,7 +414,7 @@ gst_a52dec_handle_frame (GstA52Dec * a52dec, guint8 * data,
|
|||
GST_WARNING ("a52_block error %d", i);
|
||||
} else {
|
||||
/* push on */
|
||||
gst_a52dec_push (a52dec->srcpad, a52dec->using_channels,
|
||||
gst_a52dec_push (a52dec, a52dec->srcpad, a52dec->using_channels,
|
||||
a52dec->samples, a52dec->time);
|
||||
}
|
||||
a52dec->time += 256 * GST_SECOND / a52dec->sample_rate;
|
||||
|
|
|
@ -4,4 +4,4 @@ AUDIOSINK=`gconftool-2 -g /system/gstreamer/0.8/default/audiosink`
|
|||
VIDEOSINK=`gconftool-2 -g /system/gstreamer/0.8/default/videosink`
|
||||
gst-launch dvdnavsrc ! dvddemux name=demux .current_video ! { queue max-size-buffers=10 ! mpeg2dec ! mpeg2subt name=sub ! \
|
||||
navseek ! $VIDEOSINK } demux.current_subpicture ! queue max-size-buffers=5 block-timeout=100000 ! sub.subtitle \
|
||||
demux.current_audio ! { queue ! a52dec ! audioscale ! $AUDIOSINK } $@
|
||||
demux.current_audio ! { queue ! a52dec ! audioconvert ! audioscale ! $AUDIOSINK } $@
|
||||
|
|
|
@ -981,7 +981,7 @@ dvdreadsrc_get (GstPad * pad)
|
|||
}
|
||||
|
||||
return GST_DATA (gst_event_new_discontinuous (FALSE,
|
||||
GST_FORMAT_BYTES, priv->cur_pack * DVD_VIDEO_LB_LEN,
|
||||
GST_FORMAT_BYTES, (gint64) (priv->cur_pack * DVD_VIDEO_LB_LEN),
|
||||
GST_FORMAT_UNDEFINED));
|
||||
}
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -802,15 +802,14 @@ gst_dvd_demux_process_private (GstMPEGDemux * mpeg_demux,
|
|||
len -= len % align;
|
||||
if (len > 0) {
|
||||
DEMUX_CLASS (dvd_demux)->send_subbuffer (mpeg_demux, outstream,
|
||||
buffer, GST_CLOCK_TIME_NONE, headerlen + 4, first_access - 1);
|
||||
buffer, GST_CLOCK_TIME_NONE, off, len);
|
||||
}
|
||||
off += len;
|
||||
len = datalen - len;
|
||||
len -= len % align;
|
||||
if (len > 0) {
|
||||
DEMUX_CLASS (dvd_demux)->send_subbuffer (mpeg_demux, outstream,
|
||||
buffer, timestamp,
|
||||
headerlen + 3 + first_access, datalen - (first_access - 1));
|
||||
buffer, timestamp, off, len);
|
||||
}
|
||||
} else {
|
||||
off = headerlen + 4;
|
||||
|
@ -818,7 +817,7 @@ gst_dvd_demux_process_private (GstMPEGDemux * mpeg_demux,
|
|||
len -= len % align;
|
||||
if (len > 0) {
|
||||
DEMUX_CLASS (dvd_demux)->send_subbuffer (mpeg_demux, outstream,
|
||||
buffer, timestamp, headerlen + 4, datalen);
|
||||
buffer, timestamp, off, len);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue