summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLin YANG <oxcsnicho@gmail.com>2009-07-11 19:09:17 +0800
committerSebastian Dröge <sebastian.droege@collabora.co.uk>2009-08-31 09:18:48 +0200
commitee31988c7a0c805d39513924aa2c09b636ac8578 (patch)
tree02014b3d890d91833872473ba884cfe4704c55bd
parent9f90dfee3efff44b37054b92a3dcb15c511d0021 (diff)
mpegtsmux: Extend mux->program to a GArray programs
-rw-r--r--gst/mpegtsmux/mpegtsmux.c12
-rw-r--r--gst/mpegtsmux/mpegtsmux.h2
2 files changed, 12 insertions, 2 deletions
diff --git a/gst/mpegtsmux/mpegtsmux.c b/gst/mpegtsmux/mpegtsmux.c
index cdadb6b45..84efb6a1e 100644
--- a/gst/mpegtsmux/mpegtsmux.c
+++ b/gst/mpegtsmux/mpegtsmux.c
@@ -196,6 +196,8 @@ mpegtsmux_class_init (MpegTsMuxClass * klass)
static void
mpegtsmux_init (MpegTsMux * mux, MpegTsMuxClass * g_class)
{
+ guint i;
+
mux->srcpad =
gst_pad_new_from_template (gst_static_pad_template_get
(&mpegtsmux_src_factory), "src");
@@ -208,7 +210,11 @@ mpegtsmux_init (MpegTsMux * mux, MpegTsMuxClass * g_class)
mux->tsmux = tsmux_new ();
tsmux_set_write_func (mux->tsmux, new_packet_cb, mux);
- mux->program = tsmux_program_new (mux->tsmux);
+
+ mux->programs = g_array_sized_new (FALSE, TRUE, sizeof (TsMuxProgram *),
+ MAX_PROG_NUMBER);
+ for (i = 0; i < MAX_PROG_NUMBER; i++)
+ g_array_index (mux->programs, TsMuxProgram *, i) = NULL;
mux->first = TRUE;
mux->last_flow_ret = GST_FLOW_OK;
@@ -242,6 +248,10 @@ mpegtsmux_dispose (GObject * object)
gst_structure_free (mux->prog_map);
mux->prog_map = NULL;
}
+ if (mux->programs) {
+ g_array_free (mux->programs, TRUE);
+ mux->programs = NULL;
+ }
GST_CALL_PARENT (G_OBJECT_CLASS, dispose, (object));
}
diff --git a/gst/mpegtsmux/mpegtsmux.h b/gst/mpegtsmux/mpegtsmux.h
index 6e639cbb4..9f1a8087d 100644
--- a/gst/mpegtsmux/mpegtsmux.h
+++ b/gst/mpegtsmux/mpegtsmux.h
@@ -109,7 +109,7 @@ struct MpegTsMux {
GstCollectPads *collect;
TsMux *tsmux;
- TsMuxProgram *program;
+ GArray *programs;
GstStructure *prog_map;
gboolean first;