mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-03-30 20:59:44 +00:00
gst/qtdemux/: Add cover and alternative copyright tag, and enhance some existing ones by marking them as container at...
Original commit message from CVS: * gst/qtdemux/qtdemux.c: (qtdemux_tag_add_tmpo), (qtdemux_tag_add_covr), (qtdemux_parse_udta): * gst/qtdemux/qtdemux_fourcc.h: * gst/qtdemux/qtdemux_types.c: Add cover and alternative copyright tag, and enhance some existing ones by marking them as container atoms.
This commit is contained in:
parent
4c62e33eac
commit
03ab3610c7
4 changed files with 52 additions and 1 deletions
|
@ -1,3 +1,12 @@
|
|||
2008-11-11 Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
|
||||
|
||||
* gst/qtdemux/qtdemux.c: (qtdemux_tag_add_tmpo),
|
||||
(qtdemux_tag_add_covr), (qtdemux_parse_udta):
|
||||
* gst/qtdemux/qtdemux_fourcc.h:
|
||||
* gst/qtdemux/qtdemux_types.c:
|
||||
Add cover and alternative copyright tag, and enhance some existing
|
||||
ones by marking them as container atoms.
|
||||
|
||||
2008-11-11 Wim Taymans <wim.taymans@collabora.co.uk>
|
||||
|
||||
* gst/rtp/gstrtpg729pay.c: (gst_rtp_g729_pay_set_caps):
|
||||
|
|
|
@ -3958,7 +3958,7 @@ qtdemux_tag_add_tmpo (GstQTDemux * qtdemux, const char *tag1, GNode * node)
|
|||
type = QT_UINT32 ((guint8 *) data->data + 8);
|
||||
GST_DEBUG_OBJECT (qtdemux, "have tempo tag, type=%d,len=%d", type, len);
|
||||
/* some files wrongly have a type 0x0f=15, but it should be 0x15 */
|
||||
if ((type == 0x00000015 || type == 0x0000000f) && len >= 16) {
|
||||
if ((type == 0x00000015 || type == 0x0000000f) && len >= 18) {
|
||||
n1 = QT_UINT16 ((guint8 *) data->data + 16);
|
||||
if (n1) {
|
||||
/* do not add bpm=0 */
|
||||
|
@ -3970,6 +3970,30 @@ qtdemux_tag_add_tmpo (GstQTDemux * qtdemux, const char *tag1, GNode * node)
|
|||
}
|
||||
}
|
||||
|
||||
static void
|
||||
qtdemux_tag_add_covr (GstQTDemux * qtdemux, const char *tag1, GNode * node)
|
||||
{
|
||||
GNode *data;
|
||||
int len;
|
||||
int type;
|
||||
GstBuffer *buf;
|
||||
|
||||
data = qtdemux_tree_get_child_by_type (node, FOURCC_data);
|
||||
if (data) {
|
||||
len = QT_UINT32 (data->data);
|
||||
type = QT_UINT32 ((guint8 *) data->data + 8);
|
||||
GST_DEBUG_OBJECT (qtdemux, "have covr tag, type=%d,len=%d", type, len);
|
||||
if ((type == 0x0000000d || type == 0x0000000e) && len > 16) {
|
||||
if ((buf = gst_tag_image_data_to_image_buffer (data->data + 16, len - 16,
|
||||
GST_TAG_IMAGE_TYPE_NONE))) {
|
||||
GST_DEBUG_OBJECT (qtdemux, "adding tag size %d", len - 16);
|
||||
gst_tag_list_add (qtdemux->tag_list, GST_TAG_MERGE_REPLACE,
|
||||
tag1, buf, NULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
qtdemux_tag_add_date (GstQTDemux * qtdemux, const char *tag, GNode * node)
|
||||
{
|
||||
|
@ -4108,6 +4132,10 @@ qtdemux_parse_udta (GstQTDemux * qtdemux, GNode * udta)
|
|||
node = qtdemux_tree_get_child_by_type (ilst, FOURCC__cpy);
|
||||
if (node) {
|
||||
qtdemux_tag_add_str (qtdemux, GST_TAG_COPYRIGHT, node);
|
||||
} else {
|
||||
node = qtdemux_tree_get_child_by_type (ilst, FOURCC_cprt);
|
||||
if (node)
|
||||
qtdemux_tag_add_str (qtdemux, GST_TAG_COPYRIGHT, node);
|
||||
}
|
||||
|
||||
node = qtdemux_tree_get_child_by_type (ilst, FOURCC__cmt);
|
||||
|
@ -4163,6 +4191,11 @@ qtdemux_parse_udta (GstQTDemux * qtdemux, GNode * udta)
|
|||
qtdemux_tag_add_tmpo (qtdemux, GST_TAG_BEATS_PER_MINUTE, node);
|
||||
}
|
||||
|
||||
node = qtdemux_tree_get_child_by_type (ilst, FOURCC_covr);
|
||||
if (node) {
|
||||
qtdemux_tag_add_covr (qtdemux, GST_TAG_PREVIEW_IMAGE, node);
|
||||
}
|
||||
|
||||
node = qtdemux_tree_get_child_by_type (ilst, FOURCC_keyw);
|
||||
if (node) {
|
||||
qtdemux_tag_add_str (qtdemux, GST_TAG_KEYWORDS, node);
|
||||
|
|
|
@ -87,12 +87,14 @@ G_BEGIN_DECLS
|
|||
#define FOURCC__grp GST_MAKE_FOURCC(0xa9,'g','r','p')
|
||||
#define FOURCC__alb GST_MAKE_FOURCC(0xa9,'a','l','b')
|
||||
#define FOURCC__day GST_MAKE_FOURCC(0xa9,'d','a','y')
|
||||
#define FOURCC_cprt GST_MAKE_FOURCC('c','p','r','t')
|
||||
#define FOURCC_gnre GST_MAKE_FOURCC('g','n','r','e')
|
||||
#define FOURCC_disc GST_MAKE_FOURCC('d','i','s','c')
|
||||
#define FOURCC_disk GST_MAKE_FOURCC('d','i','s','k')
|
||||
#define FOURCC_trkn GST_MAKE_FOURCC('t','r','k','n')
|
||||
#define FOURCC_cpil GST_MAKE_FOURCC('c','p','i','l')
|
||||
#define FOURCC_tmpo GST_MAKE_FOURCC('t','m','p','o')
|
||||
#define FOURCC_covr GST_MAKE_FOURCC('c','o','v','r')
|
||||
#define FOURCC__too GST_MAKE_FOURCC(0xa9,'t','o','o')
|
||||
#define FOURCC_____ GST_MAKE_FOURCC('-','-','-','-')
|
||||
#define FOURCC_free GST_MAKE_FOURCC('f','r','e','e')
|
||||
|
|
|
@ -98,12 +98,19 @@ static const QtNodeType qt_node_types[] = {
|
|||
{FOURCC__grp, "Group", QT_FLAG_CONTAINER,},
|
||||
{FOURCC__alb, "Album", QT_FLAG_CONTAINER,},
|
||||
{FOURCC__day, "Date", QT_FLAG_CONTAINER,},
|
||||
{FOURCC__cpy, "Copyright", QT_FLAG_CONTAINER,},
|
||||
{FOURCC__cmt, "Comment", QT_FLAG_CONTAINER,},
|
||||
{FOURCC__des, "Description", QT_FLAG_CONTAINER,},
|
||||
{FOURCC_gnre, "Genre", QT_FLAG_CONTAINER,},
|
||||
{FOURCC_trkn, "Track Number", QT_FLAG_CONTAINER,},
|
||||
{FOURCC_disc, "Disc Number", QT_FLAG_CONTAINER,},
|
||||
{FOURCC_disk, "Disc Number", QT_FLAG_CONTAINER,},
|
||||
{FOURCC_cprt, "Copyright", QT_FLAG_CONTAINER,},
|
||||
{FOURCC_cpil, "cpil", QT_FLAG_CONTAINER,},
|
||||
{FOURCC_tmpo, "Tempo", QT_FLAG_CONTAINER,},
|
||||
{FOURCC_covr, "Cover", QT_FLAG_CONTAINER,},
|
||||
{FOURCC_keyw, "Keywords", QT_FLAG_CONTAINER,},
|
||||
{FOURCC_kywd, "Keywords", QT_FLAG_CONTAINER,},
|
||||
{FOURCC__too, "too", QT_FLAG_CONTAINER,},
|
||||
{FOURCC_____, "----", QT_FLAG_CONTAINER,},
|
||||
{FOURCC_data, "data", 0, qtdemux_dump_unknown},
|
||||
|
|
Loading…
Reference in a new issue