qtmux: Fix some memory leaks related to timecode tracks

This commit is contained in:
Sebastian Dröge 2017-03-08 15:27:32 +02:00
parent 4335c4c160
commit 0e62a0603d
2 changed files with 16 additions and 1 deletions

View file

@ -565,6 +565,14 @@ sample_entry_tmcd_new (void)
return tmcd;
}
static void
sample_entry_tmcd_free (SampleTableEntryTMCD * tmcd)
{
atom_sample_entry_free (&tmcd->se);
g_free (tmcd->name.name);
g_free (tmcd);
}
static void
sample_entry_mp4v_init (SampleTableEntryMP4V * mp4v, AtomsContext * context)
{
@ -674,6 +682,9 @@ atom_stsd_remove_entries (AtomSTSD * stsd)
case SUBTITLE:
sample_entry_tx3g_free ((SampleTableEntryTX3G *) se);
break;
case TIMECODE:
sample_entry_tmcd_free ((SampleTableEntryTMCD *) se);
break;
default:
/* best possible cleanup */
atom_sample_entry_free (se);
@ -3777,6 +3788,7 @@ atom_trak_add_timecode_entry (AtomTRAK * trak, AtomsContext * context,
trak->mdia.hdlr.component_type = FOURCC_mhlr;
trak->mdia.hdlr.handler_type = FOURCC_tmcd;
g_free (trak->mdia.hdlr.name);
trak->mdia.hdlr.name = g_strdup ("Time Code Media Handler");
trak->mdia.mdhd.time_info.timescale = tc->config.fps_n / tc->config.fps_d;

View file

@ -518,7 +518,6 @@ gst_qt_mux_pad_reset (GstQTPad * qtpad)
qtpad->total_duration = 0;
qtpad->total_bytes = 0;
qtpad->sparse = FALSE;
qtpad->tc_trak = NULL;
qtpad->buf_head = 0;
qtpad->buf_tail = 0;
@ -532,6 +531,7 @@ gst_qt_mux_pad_reset (GstQTPad * qtpad)
/* reference owned elsewhere */
qtpad->trak = NULL;
qtpad->tc_trak = NULL;
if (qtpad->traf) {
atom_traf_free (qtpad->traf);
@ -624,6 +624,9 @@ gst_qt_mux_reset (GstQTMux * qtmux, gboolean alloc)
qtmux->reserved_duration_remaining = GST_CLOCK_TIME_NONE;
qtmux->first_pts = GST_CLOCK_TIME_NONE;
qtmux->tc_pos = -1;
if (qtmux->first_tc)
gst_video_time_code_free (qtmux->first_tc);
qtmux->first_tc = NULL;
}
static void