The different tag merging modes are basically replace, overwrite and append,
but they can be seen from two directions.
Given two taglists: A - the one that are supplied to
gst_tag_setter_merge_tags() or gst_tag_setter_add_tags() and B - the tags
already in the element, how are the tags merged? In the table below this is
shown for the cases that a tag exists in the list (A) or does not exists (!A)
and combination thereof.
Table1.merge mode
merge mode
A + B
A + !B
!A + B
!A + !B
REPLACE_ALL
B
-
B
-
REPLACE
B
A
B
-
APPEND
A, B
A
B
-
PREPEND
B, A
A
B
-
KEEP
A
A
B
-
KEEP_ALL
A
A
-
-
GST_TAG_MERGE_UNDEFINED
undefined merge mode
GST_TAG_MERGE_REPLACE_ALL
replace all tags (clear list and append)
GST_TAG_MERGE_REPLACE
replace tags
GST_TAG_MERGE_APPEND
append tags
GST_TAG_MERGE_PREPEND
prepend tags
GST_TAG_MERGE_KEEP
keep existing tags
GST_TAG_MERGE_KEEP_ALL
keep all existing tags
GST_TAG_MERGE_COUNT
the number of merge modes
The different tag merging modes are basically replace, overwrite and append, but they can be seen from two directions. Given two taglists: A - the one that are supplied to gst_tag_setter_merge_tags() or gst_tag_setter_add_tags() and B - the tags already in the element, how are the tags merged? In the table below this is shown for the cases that a tag exists in the list (A) or does not exists (!A) and combination thereof. Table1.merge mode merge mode A + B A + !B !A + B !A + !B REPLACE_ALL B - B - REPLACE B A B - APPEND A, B A B - PREPEND B, A A B - KEEP A A B - KEEP_ALL A A - - GST_TAG_MERGE_UNDEFINED undefined merge mode GST_TAG_MERGE_REPLACE_ALL replace all tags (clear list and append) GST_TAG_MERGE_REPLACE replace tags GST_TAG_MERGE_APPEND append tags GST_TAG_MERGE_PREPEND prepend tags GST_TAG_MERGE_KEEP keep existing tags GST_TAG_MERGE_KEEP_ALL keep all existing tags GST_TAG_MERGE_COUNT the number of merge modes