summaryrefslogtreecommitdiff
path: root/src/xine-engine/demux.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/xine-engine/demux.c')
-rw-r--r--src/xine-engine/demux.c48
1 files changed, 47 insertions, 1 deletions
diff --git a/src/xine-engine/demux.c b/src/xine-engine/demux.c
index 3a2634e26..90f2d3a99 100644
--- a/src/xine-engine/demux.c
+++ b/src/xine-engine/demux.c
@@ -20,7 +20,7 @@
* Demuxer helper functions
* hide some xine engine details from demuxers and reduce code duplication
*
- * $Id: demux.c,v 1.57 2005/03/20 18:41:55 tmattern Exp $
+ * $Id: demux.c,v 1.58 2005/07/17 23:11:45 dsalt Exp $
*/
@@ -600,3 +600,49 @@ int _x_demux_read_send_data(fifo_buffer_t *fifo, input_plugin_t *input,
return 0;
}
+
+/*
+ * Helper function for sending MRL reference events
+ */
+void _x_demux_send_mrl_reference (xine_stream_t *stream, int alternative,
+ const char *mrl, const char *title,
+ int start_time, int duration)
+{
+ xine_event_t event;
+ union {
+ xine_mrl_reference_data_ext_t *e;
+ xine_mrl_reference_data_t *b;
+ } data;
+ int mrl_len = strlen (mrl);
+
+ if (!title)
+ title = "";
+
+ /* extended MRL reference event */
+
+ event.stream = stream;
+ event.data_length = offsetof (xine_mrl_reference_data_ext_t, mrl) +
+ mrl_len + strlen (title) + 2;
+ data.e = event.data = malloc (event.data_length);
+
+ data.e->alternative = alternative;
+ data.e->start_time = start_time;
+ data.e->duration = duration;
+ strcpy (data.e->mrl, mrl);
+ strcpy (data.e->mrl + mrl_len + 1, title ? title : "");
+
+ event.type = XINE_EVENT_MRL_REFERENCE_EXT;
+ xine_event_send (stream, &event);
+
+ /* plain MRL reference event */
+
+ event.data_length = offsetof (xine_mrl_reference_data_t, mrl) + mrl_len + 1;
+
+ /*data.b->alternative = alternative;*/
+ strcpy (data.b->mrl, mrl);
+
+ event.type = XINE_EVENT_MRL_REFERENCE;
+ xine_event_send (stream, &event);
+
+ free (data.e);
+}