|
From: David S. <ds...@pd...> - 2004-03-05 08:43:48
|
CVS Root: /home/cvs/gstreamer
Module: gst-plugins
Changes by: ds
Date: Fri Mar 05 2004 00:37:13 PST
Log message:
* gst/qtdemux/qtdemux.c: (gst_qtdemux_get_src_formats),
(gst_qtdemux_src_convert), (gst_qtdemux_get_src_query_types),
(gst_qtdemux_get_event_mask), (gst_qtdemux_handle_src_query),
(gst_qtdemux_handle_src_event), (gst_qtdemux_add_stream):
Add prototype code for handling seeking and querying.
Modified files:
. : ChangeLog
gst/qtdemux : qtdemux.c
Links:
http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins/ChangeLog.diff?r1=1.366&r2=1.367
http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins/gst/qtdemux/qtdemux.c.diff?r1=1.42&r2=1.43
====Begin Diffs====
Index: ChangeLog
===================================================================
RCS file: /home/cvs/gstreamer/gst-plugins/ChangeLog,v
retrieving revision 1.366
retrieving revision 1.367
diff -u -d -r1.366 -r1.367
--- a/ChangeLog 5 Mar 2004 02:30:09 -0000 1.366
+++ b/ChangeLog 5 Mar 2004 08:37:00 -0000 1.367
@@ -1,3 +1,11 @@
+2004-03-05 David Schleef <ds...@sc...>
+
+ * gst/qtdemux/qtdemux.c: (gst_qtdemux_get_src_formats),
+ (gst_qtdemux_src_convert), (gst_qtdemux_get_src_query_types),
+ (gst_qtdemux_get_event_mask), (gst_qtdemux_handle_src_query),
+ (gst_qtdemux_handle_src_event), (gst_qtdemux_add_stream):
+ Add prototype code for handling seeking and querying.
2004-03-04 Ronald Bultje <rb...@ro...>
* examples/gstplay/player.c: (main):
Index: qtdemux.c
RCS file: /home/cvs/gstreamer/gst-plugins/gst/qtdemux/qtdemux.c,v
retrieving revision 1.42
retrieving revision 1.43
diff -u -d -r1.42 -r1.43
--- a/qtdemux.c 24 Feb 2004 17:17:56 -0000 1.42
+++ b/qtdemux.c 5 Mar 2004 08:37:01 -0000 1.43
@@ -210,6 +210,186 @@
gst_element_add_pad (GST_ELEMENT (qtdemux), qtdemux->sinkpad);
}
+static const GstFormat *
+gst_qtdemux_get_src_formats (GstPad *pad)
+{
+ static const GstFormat src_a_formats[] = {
+ GST_FORMAT_TIME,
+ GST_FORMAT_BYTES,
+ GST_FORMAT_DEFAULT,
+ 0
+ };
+ static const GstFormat src_v_formats[] = {
+ QtDemuxStream *stream = gst_pad_get_element_private(pad);
+ return (stream->subtype == GST_MAKE_FOURCC('v','i','d','e')) ?
+ src_v_formats : src_a_formats;
+}
+static gboolean
+gst_qtdemux_src_convert (GstPad *pad, GstFormat src_format, gint64 src_value,
+ GstFormat *dest_format, gint64 *dest_value)
+ gboolean res = TRUE;
+ if (stream->subtype == GST_MAKE_FOURCC('v','i','d','e') &&
+ (src_format == GST_FORMAT_BYTES || *dest_format == GST_FORMAT_BYTES))
+ return FALSE;
+ switch (src_format) {
+ case GST_FORMAT_TIME:
+ switch (*dest_format) {
+ case GST_FORMAT_BYTES:
+ *dest_value = src_value * 1; /* FIXME */
+ break;
+ case GST_FORMAT_DEFAULT:
+ default:
+ res = FALSE;
+ }
+ break;
+ case GST_FORMAT_BYTES:
+ case GST_FORMAT_TIME:
+ case GST_FORMAT_DEFAULT:
+ default:
+ res = FALSE;
+ }
+ return res;
+static const GstQueryType *
+gst_qtdemux_get_src_query_types (GstPad *pad)
+ static const GstQueryType src_types[] = {
+ GST_QUERY_TOTAL,
+ GST_QUERY_POSITION,
+ return src_types;
+static const GstEventMask *
+gst_qtdemux_get_event_mask (GstPad *pad)
+ static const GstEventMask masks[] = {
+ { GST_EVENT_SEEK, GST_SEEK_METHOD_SET | GST_SEEK_FLAG_KEY_UNIT },
+ { 0, }
+ return masks;
+gst_qtdemux_handle_src_query (GstPad *pad, GstQueryType type,
+ GstFormat *format, gint64 *value)
+ //QtDemuxStream *stream = gst_pad_get_element_private(pad);
+ switch (type) {
+ case GST_QUERY_TOTAL:
+ switch (*format) {
+ *value = 0; /* FIXME */
+ case GST_QUERY_POSITION:
+gst_qtdemux_handle_src_event (GstPad *pad, GstEvent *event)
+ switch (GST_EVENT_TYPE (event)) {
+ case GST_EVENT_SEEK:
+ GST_DEBUG ("seek format %d", GST_EVENT_SEEK_FORMAT (event));
+ switch (GST_EVENT_SEEK_FORMAT (event)) {
+ {
+ gint64 desired_offset = GST_EVENT_SEEK_OFFSET (event);
+ GST_DEBUG ("seeking to %" G_GINT64_FORMAT, desired_offset);
+ res = FALSE;
+ }
+ gst_event_unref (event);
GST_DEBUG_CATEGORY (qtdemux_debug);
static gboolean
@@ -537,6 +717,13 @@
qtdemux->n_streams++;
GST_DEBUG ("n_streams is now %d", qtdemux->n_streams);
+ gst_pad_set_event_mask_function (stream->pad, gst_qtdemux_get_event_mask);
+ gst_pad_set_event_function (stream->pad, gst_qtdemux_handle_src_event);
+ gst_pad_set_query_type_function (stream->pad, gst_qtdemux_get_src_query_types);
+ gst_pad_set_query_function (stream->pad, gst_qtdemux_handle_src_query);
+ gst_pad_set_formats_function (stream->pad, gst_qtdemux_get_src_formats);
+ gst_pad_set_convert_function (stream->pad, gst_qtdemux_src_convert);
gst_pad_set_explicit_caps(stream->pad, stream->caps);
GST_DEBUG ("adding pad %p to qtdemux %p", stream->pad, qtdemux);
|