diff options
author | Thiago Santos <thiago.sousa.santos@collabora.co.uk> | 2010-01-14 08:09:03 -0300 |
---|---|---|
committer | Thiago Santos <thiago.sousa.santos@collabora.co.uk> | 2010-01-14 19:09:44 -0300 |
commit | 774b7b33cc9bf552075ed104285245b630e26b08 (patch) | |
tree | 8f5ef099ce7259ad4cc6c4ce804e5a41bfb27f8e /gst | |
parent | 0b4c0890a5e8ab31b469697ee0f82320851a5891 (diff) | |
download | gstreamer-plugins-bad-774b7b33cc9bf552075ed104285245b630e26b08.tar.gz |
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
Diffstat (limited to 'gst')
-rw-r--r-- | gst/qtmux/atoms.c | 14 | ||||
-rw-r--r-- | gst/qtmux/gstqtmux.c | 2 |
2 files changed, 12 insertions, 4 deletions
diff --git a/gst/qtmux/atoms.c b/gst/qtmux/atoms.c index 3d7c10f56..1c3811be6 100644 --- a/gst/qtmux/atoms.c +++ b/gst/qtmux/atoms.c @@ -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; diff --git a/gst/qtmux/gstqtmux.c b/gst/qtmux/gstqtmux.c index aaba67bea..5cb9bcad9 100644 --- a/gst/qtmux/gstqtmux.c +++ b/gst/qtmux/gstqtmux.c @@ -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, |