qtmux: Actually use new caps info on renegotiation

Following the previous qtmux commit, this patch tries
to use the new info added to the caps to fill the 'trak'
atom's fields and children atoms. This way qtmux will
use the late added 'codec_data' when h264parse adds
it in the following pipeline:

videotestsrc num-buffers=200 ! x264enc byte-stream=true ! \
h264parse output-format=0 ! qtmux ! \
filesink location=test.mov
This commit is contained in:
Thiago Santos 2010-01-14 08:09:03 -03:00 committed by Tim-Philipp Müller
parent a5f22f03aa
commit 33bf180eaa
2 changed files with 12 additions and 4 deletions

View file

@ -460,14 +460,14 @@ atom_stsd_init (AtomSTSD * stsd)
atom_full_init (&stsd->header, FOURCC_stsd, 0, 0, 0, flags);
stsd->entries = NULL;
stsd->n_entries = 0;
}
static void
atom_stsd_clear (AtomSTSD * stsd)
atom_stsd_remove_entries (AtomSTSD * stsd)
{
GList *walker;
atom_full_clear (&stsd->header);
walker = stsd->entries;
while (walker) {
GList *aux = walker;
@ -489,6 +489,14 @@ atom_stsd_clear (AtomSTSD * stsd)
}
g_list_free (aux);
}
stsd->n_entries = 0;
}
static void
atom_stsd_clear (AtomSTSD * stsd)
{
atom_stsd_remove_entries (stsd);
atom_full_clear (&stsd->header);
}
static void
@ -3015,6 +3023,7 @@ atom_trak_set_audio_type (AtomTRAK * trak, AtomsContext * context,
SampleTableEntryMP4A *ste;
atom_trak_set_audio_commons (trak, context, scale);
atom_stsd_remove_entries (&trak->mdia.minf.stbl.stsd);
ste = atom_trak_add_audio_entry (trak, context, entry->fourcc);
trak->is_video = FALSE;
@ -3088,6 +3097,7 @@ atom_trak_set_video_type (AtomTRAK * trak, AtomsContext * context,
}
atom_trak_set_video_commons (trak, context, scale, dwidth, dheight);
atom_stsd_remove_entries (&trak->mdia.minf.stbl.stsd);
ste = atom_trak_add_video_entry (trak, context, entry->fourcc);
trak->is_video = TRUE;

View file

@ -1759,7 +1759,6 @@ gst_qt_mux_audio_sink_set_caps (GstPad * pad, GstCaps * caps)
GST_DEBUG_OBJECT (qtmux,
"pad %s accepted renegotiation to %" GST_PTR_FORMAT " from %"
GST_PTR_FORMAT, GST_PAD_NAME (pad), caps, GST_PAD_CAPS (pad));
return TRUE;
}
GST_DEBUG_OBJECT (qtmux, "%s:%s, caps=%" GST_PTR_FORMAT,
@ -2038,7 +2037,6 @@ gst_qt_mux_video_sink_set_caps (GstPad * pad, GstCaps * caps)
GST_DEBUG_OBJECT (qtmux,
"pad %s accepted renegotiation to %" GST_PTR_FORMAT " from %"
GST_PTR_FORMAT, GST_PAD_NAME (pad), caps, GST_PAD_CAPS (pad));
return TRUE;
}
GST_DEBUG_OBJECT (qtmux, "%s:%s, caps=%" GST_PTR_FORMAT,