g_free (program);
}
-/* FIXME : This is being called by tsdemux::find_timestamps()
- * We need to avoid re-entrant code like that */
-static gboolean
-mpegts_base_stop_program (MpegTSBase * base, MpegTSBaseProgram * program)
-{
- MpegTSBaseClass *klass = GST_MPEGTS_BASE_GET_CLASS (base);
-
- GST_DEBUG_OBJECT (base, "program_number : %d", program->program_number);
-
- if (klass->program_stopped)
- klass->program_stopped (base, program);
-
- return TRUE;
-}
-
void
mpegts_base_remove_program (MpegTSBase * base, gint program_number)
{
- MpegTSBaseProgram *program;
-
GST_DEBUG_OBJECT (base, "program_number : %d", program_number);
- program =
- (MpegTSBaseProgram *) g_hash_table_lookup (base->programs,
- GINT_TO_POINTER (program_number));
- if (program)
- mpegts_base_stop_program (base, program);
g_hash_table_remove (base->programs, GINT_TO_POINTER (program_number));
}
program->active = FALSE;
if (program->pmt_info) {
- /* Inform subclasses we're deactivating this program */
- if (klass->program_stopped)
- klass->program_stopped (base, program);
-
streams = gst_structure_id_get_value (program->pmt_info, QUARK_STREAMS);
nbstreams = gst_value_list_get_size (streams);
GST_DEBUG ("program stream_list is now %p", program->stream_list);
}
+
+ /* Inform subclasses we're deactivating this program */
+ if (klass->program_stopped)
+ klass->program_stopped (base, program);
}
static void
remove_each_program (gpointer key, MpegTSBaseProgram * program,
MpegTSBase * base)
{
- MpegTSBaseClass *klass = GST_MPEGTS_BASE_GET_CLASS (base);
-
/* First deactivate it */
mpegts_base_deactivate_program (base, program);
- /* Then remove it */
- if (klass->program_stopped)
- klass->program_stopped (base, program);
return TRUE;
}