From c3e91e1a880e99201cecc8aae65256a39ce3ab4e Mon Sep 17 00:00:00 2001 From: Zaheer Abbas Merali Date: Mon, 6 Oct 2008 12:01:14 +0000 Subject: gst/mpegtsparse/mpegtsparse.c: Actually copy the structure passed in when assigning it because it gets freed straight... Original commit message from CVS: * gst/mpegtsparse/mpegtsparse.c: Actually copy the structure passed in when assigning it because it gets freed straight after the function call. Re: pat_info and pmt_info GstStructures. --- gst/mpegtsparse/mpegtsparse.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'gst/mpegtsparse') diff --git a/gst/mpegtsparse/mpegtsparse.c b/gst/mpegtsparse/mpegtsparse.c index 3aa49db5..0886def2 100644 --- a/gst/mpegtsparse/mpegtsparse.c +++ b/gst/mpegtsparse/mpegtsparse.c @@ -851,7 +851,7 @@ mpegts_parse_apply_pat (MpegTSParse * parse, GstStructure * pat_info) gchar *dbg; old_pat = parse->pat; - parse->pat = pat_info; + parse->pat = gst_structure_copy (pat_info); dbg = gst_structure_to_string (pat_info); GST_INFO_OBJECT (parse, "PAT %s", dbg); @@ -975,14 +975,16 @@ mpegts_parse_apply_pmt (MpegTSParse * parse, for (i = 0; i < gst_value_list_get_size (old_streams); ++i) { value = gst_value_list_get_value (old_streams, i); stream = g_value_get_boxed (value); - gst_structure_get_uint (stream, "pid", &pid); gst_structure_get_uint (stream, "stream-type", &stream_type); mpegts_parse_program_remove_stream (parse, program, (guint16) pid); } + /* remove pcr stream */ mpegts_parse_program_remove_stream (parse, program, program->pcr_pid); + gst_structure_free (program->pmt_info); + program->pmt_info = NULL; } } else { /* no PAT?? */ @@ -992,7 +994,7 @@ mpegts_parse_apply_pmt (MpegTSParse * parse, } /* activate new pmt */ - program->pmt_info = pmt_info; + program->pmt_info = gst_structure_copy (pmt_info); program->pmt_pid = pmt_pid; program->pcr_pid = pcr_pid; mpegts_parse_program_add_stream (parse, program, (guint16) pcr_pid, -1); -- cgit v1.2.1