diff options
author | Stefan Kost <ensonic@users.sourceforge.net> | 2008-12-16 16:26:52 +0000 |
---|---|---|
committer | Stefan Kost <ensonic@users.sourceforge.net> | 2008-12-16 16:26:52 +0000 |
commit | 1ea02b7a383f461d948eaeba82adb248e01e9127 (patch) | |
tree | c925ec2a1f159ee0df72fc77276a95dac5244c36 /gst | |
parent | da7ea42f920df07059e5eab0208fcaec535d187a (diff) | |
download | gst-plugins-bad-1ea02b7a383f461d948eaeba82adb248e01e9127.tar.gz gst-plugins-bad-1ea02b7a383f461d948eaeba82adb248e01e9127.tar.bz2 gst-plugins-bad-1ea02b7a383f461d948eaeba82adb248e01e9127.zip |
Totally remove the internal taglists and fully use tagsetter. Fixes various tag muxing issues.
Original commit message from CVS:
* ext/celt/gstceltenc.c:
* ext/celt/gstceltenc.h:
* ext/metadata/gstmetadatamux.c:
* gst/qtmux/gstqtmux.c:
* gst/qtmux/gstqtmux.h:
Totally remove the internal taglists and fully use tagsetter. Fixes
various tag muxing issues.
Diffstat (limited to 'gst')
-rw-r--r-- | gst/qtmux/gstqtmux.c | 49 | ||||
-rw-r--r-- | gst/qtmux/gstqtmux.h | 2 |
2 files changed, 16 insertions, 35 deletions
diff --git a/gst/qtmux/gstqtmux.c b/gst/qtmux/gstqtmux.c index f1232508..8e70e999 100644 --- a/gst/qtmux/gstqtmux.c +++ b/gst/qtmux/gstqtmux.c @@ -239,14 +239,11 @@ gst_qt_mux_reset (GstQTMux * qtmux, gboolean alloc) atom_moov_free (qtmux->moov); qtmux->moov = NULL; } - if (qtmux->tags) { - gst_tag_list_free (qtmux->tags); - qtmux->tags = NULL; - } if (qtmux->fast_start_file) { fclose (qtmux->fast_start_file); qtmux->fast_start_file = NULL; } + gst_tag_setter_reset_tags (GST_TAG_SETTER (qtmux)); /* reset pad data */ for (walk = qtmux->collect->data; walk; walk = g_slist_next (walk)) { @@ -514,32 +511,18 @@ gst_qt_mux_add_metadata_tags (GstQTMux * qtmux, const GstTagList * list) static void gst_qt_mux_setup_metadata (GstQTMux * qtmux) { - const GstTagList *user_tags; - GstTagList *mixedtags = NULL; - GstTagMergeMode merge_mode; - - user_tags = gst_tag_setter_get_tag_list (GST_TAG_SETTER (qtmux)); - merge_mode = gst_tag_setter_get_tag_merge_mode (GST_TAG_SETTER (qtmux)); - - GST_DEBUG_OBJECT (qtmux, "merging tags, merge mode = %d", merge_mode); - GST_LOG_OBJECT (qtmux, "event tags: %" GST_PTR_FORMAT, qtmux->tags); - GST_LOG_OBJECT (qtmux, "set tags: %" GST_PTR_FORMAT, user_tags); + const GstTagList *tags; - mixedtags = gst_tag_list_merge (user_tags, qtmux->tags, merge_mode); + tags = gst_tag_setter_get_tag_list (GST_TAG_SETTER (qtmux)); - GST_LOG_OBJECT (qtmux, "final tags: %" GST_PTR_FORMAT, mixedtags); + GST_LOG_OBJECT (qtmux, "tags: %" GST_PTR_FORMAT, tags); - if (mixedtags && !gst_tag_list_is_empty (mixedtags)) { - GST_DEBUG_OBJECT (qtmux, "Parsing tags"); - gst_qt_mux_add_metadata_tags (qtmux, mixedtags); + if (tags && !gst_tag_list_is_empty (tags)) { + GST_DEBUG_OBJECT (qtmux, "Formatting tags"); + gst_qt_mux_add_metadata_tags (qtmux, tags); } else { - GST_DEBUG_OBJECT (qtmux, "No tags found"); + GST_DEBUG_OBJECT (qtmux, "No tags received"); } - - if (mixedtags) - gst_tag_list_free (mixedtags); - - return; } static GstFlowReturn @@ -1585,20 +1568,19 @@ gst_qt_mux_sink_event (GstPad * pad, GstEvent * event) { gboolean ret; GstQTMux *qtmux; - GstTagList *list; qtmux = GST_QT_MUX_CAST (gst_pad_get_parent (pad)); switch (GST_EVENT_TYPE (event)) { - case GST_EVENT_TAG: + case GST_EVENT_TAG:{ + GstTagList *list; + GstTagSetter *setter = GST_TAG_SETTER (qtmux); + const GstTagMergeMode mode = gst_tag_setter_get_tag_merge_mode (setter); + GST_DEBUG_OBJECT (qtmux, "received tag event"); gst_event_parse_tag (event, &list); - - if (qtmux->tags) { - gst_tag_list_insert (qtmux->tags, list, GST_TAG_MERGE_PREPEND); - } else { - qtmux->tags = gst_tag_list_copy (list); - } + gst_tag_setter_merge_tags (setter, list, mode); break; + } default: break; } @@ -1774,6 +1756,7 @@ gst_qt_mux_change_state (GstElement * element, GstStateChange transition) break; case GST_STATE_CHANGE_PAUSED_TO_PLAYING: break; + /* FIXME: shouldn't the downwards state-change be done below? */ case GST_STATE_CHANGE_PAUSED_TO_READY: gst_collect_pads_stop (qtmux->collect); break; diff --git a/gst/qtmux/gstqtmux.h b/gst/qtmux/gstqtmux.h index 99d129ec..539904ff 100644 --- a/gst/qtmux/gstqtmux.h +++ b/gst/qtmux/gstqtmux.h @@ -97,8 +97,6 @@ struct _GstQTMux /* fast start */ FILE *fast_start_file; - GstTagList *tags; - /* properties */ guint32 timescale; AtomsTreeFlavor flavor; |