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. --- ChangeLog | 7 +++++++ common | 2 +- gst/mpegtsparse/mpegtsparse.c | 8 +++++--- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 14968339..cfe3d65a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-10-06 Zaheer Abbas Merali + + * 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. + 2008-10-06 Zaheer Abbas Merali Patch by: Josep Torra diff --git a/common b/common index 1ff63d8f..ea93f2ed 160000 --- a/common +++ b/common @@ -1 +1 @@ -Subproject commit 1ff63d8f92c36bf207434436f4ce75f2a4ea11a4 +Subproject commit ea93f2ed580bcc19322e4c07f677eda980c821eb 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