summaryrefslogtreecommitdiff
path: root/gst
diff options
context:
space:
mode:
authorThiago Santos <thiago.sousa.santos@collabora.co.uk>2010-01-14 08:09:03 -0300
committerThiago Santos <thiago.sousa.santos@collabora.co.uk>2010-01-14 19:09:44 -0300
commit774b7b33cc9bf552075ed104285245b630e26b08 (patch)
tree8f5ef099ce7259ad4cc6c4ce804e5a41bfb27f8e /gst
parent0b4c0890a5e8ab31b469697ee0f82320851a5891 (diff)
downloadgstreamer-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.c14
-rw-r--r--gst/qtmux/gstqtmux.c2
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,