diff options
author | Lin YANG <oxcsnicho@gmail.com> | 2009-07-11 19:09:17 +0800 |
---|---|---|
committer | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2009-08-31 09:18:48 +0200 |
commit | ee31988c7a0c805d39513924aa2c09b636ac8578 (patch) | |
tree | 02014b3d890d91833872473ba884cfe4704c55bd | |
parent | 9f90dfee3efff44b37054b92a3dcb15c511d0021 (diff) |
mpegtsmux: Extend mux->program to a GArray programs
-rw-r--r-- | gst/mpegtsmux/mpegtsmux.c | 12 | ||||
-rw-r--r-- | gst/mpegtsmux/mpegtsmux.h | 2 |
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; |