annotate src/libaudtag/wma/guid.c @ 4887:0ddbd0025174 default tip

added libaudtag. (not used yet.)
author Yoshiki Yazawa <yaz@honeyplanet.jp>
date Wed, 05 May 2010 18:26:06 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4887
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1 /*
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
2 * Copyright 2009 Paula Stanciu
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
3 *
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
4 * This file is part of Audacious.
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
5 *
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
6 * Audacious is free software: you can redistribute it and/or modify it under
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
7 * the terms of the GNU General Public License as published by the Free Software
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
8 * Foundation, version 3 of the License.
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
9 *
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
10 * Audacious is distributed in the hope that it will be useful, but WITHOUT ANY
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
11 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
12 * A PARTICULAR PURPOSE. See the GNU General Public License for more details.
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
13 *
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
14 * You should have received a copy of the GNU General Public License along with
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
15 * Audacious. If not, see <http://www.gnu.org/licenses/>.
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
16 *
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
17 * The Audacious team does not consider modular code linking to Audacious or
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
18 * using our public API to be a derived work.
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
19 */
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
20
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
21 /* this stuff may be moved to ../util.h if needed by other formats */
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
22
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
23 #include <inttypes.h>
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
24
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
25 #include "audlegacy/vfs.h"
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
26 #include "../util.h"
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
27 #include "guid.h"
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
28 #include "wma_fmt.h"
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
29
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
30 GUID *guid_read_from_file(VFSFile * f)
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
31 {
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
32 GUID temp;
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
33
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
34 if ((f == NULL) || (vfs_fread(&temp, sizeof(GUID), 1, f) != 1))
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
35 return NULL;
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
36
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
37 temp.le32 = GUINT32_FROM_LE(temp.le32);
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
38 temp.le16_1 = GUINT16_FROM_LE(temp.le16_1);
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
39 temp.le16_2 = GUINT16_FROM_LE(temp.le16_2);
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
40 temp.be64 = GUINT64_FROM_BE(temp.be64);
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
41
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
42 return g_memdup(&temp, sizeof(GUID));
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
43 }
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
44
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
45 gboolean guid_write_to_file(VFSFile * f, int guid_type)
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
46 {
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
47 g_return_val_if_fail(f != NULL, FALSE);
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
48
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
49 GUID *g = guid_convert_from_string(wma_guid_map(guid_type));
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
50
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
51 gboolean ret = write_LEuint32(f, g->le32) && write_LEuint16(f, g->le16_1) && write_LEuint16(f, g->le16_1) && write_LEuint64(f, g->be64);
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
52 g_free(g);
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
53 return ret;
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
54 }
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
55
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
56 GUID *guid_convert_from_string(const gchar * string)
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
57 {
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
58 GUID temp;
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
59
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
60 if (sscanf(string, "%" SCNx32 "-%" SCNx16 "-%" SCNx16 "-%" SCNx64, &temp.le32, &temp.le16_1, &temp.le16_2, &temp.be64) != 4)
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
61 return NULL;
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
62 return g_memdup(&temp, sizeof(GUID));
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
63 }
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
64
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
65 gchar *guid_convert_to_string(const GUID * g)
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
66 {
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
67
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
68 return g_strdup_printf("%8x-%hx-%hx-%" PRIx64 "\n", GUINT32_TO_LE(g->le32), GUINT16_TO_LE(g->le16_1), GUINT16_TO_LE(g->le16_2), GUINT64_TO_BE(g->be64));
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
69 }
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
70
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
71 gboolean guid_equal(GUID * g1, GUID * g2)
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
72 {
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
73 /*
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
74 AUDDBG("GUID 1 = %8x-%hx-%hx-%"PRIx64"\n", g1->le32, g1->le16_1, g1->le16_2, g1->be64);
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
75 AUDDBG("GUID 2 = %8x-%hx-%hx-%"PRIx64"\n", g2->le32, g2->le16_1, g2->le16_2, g2->be64);
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
76 */
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
77
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
78 g_return_val_if_fail((g1 != NULL) && (g2 != NULL), FALSE);
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
79 if (!memcmp(g1, g2, 16))
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
80 {
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
81 // AUDDBG("equal\n");
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
82
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
83 return TRUE;
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
84 }
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
85 /* AUDDBG("not equal\n"); */
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
86 return FALSE;
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
87 }
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
88
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
89 int get_guid_type(GUID * g)
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
90 {
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
91 GUID *g1;
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
92 int i;
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
93 for (i = 0; i < ASF_OBJECT_LAST - 1; i++)
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
94 {
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
95 g1 = guid_convert_from_string(wma_guid_map(i));
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
96 if (guid_equal(g, g1))
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
97 {
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
98
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
99 g_free(g1);
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
100 return i;
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
101 }
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
102 }
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
103 return -1;
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
104 }
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
105
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
106 const gchar *wma_guid_map(int i)
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
107 {
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
108 const gchar *_guid_map[ASF_OBJECT_LAST] = {
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
109 ASF_HEADER_OBJECT_GUID,
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
110 ASF_FILE_PROPERTIES_OBJECT_GUID,
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
111 ASF_STREAM_PROPERTIES_OBJECT_GUID,
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
112 ASF_HEADER_EXTENSION_OBJECT_GUID,
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
113 ASF_CODEC_LIST_OBJECT_GUID,
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
114 ASF_SCRIPT_COMMAND_OBJECT_GUID,
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
115 ASF_MARKER_OBJECT_GUID,
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
116 ASF_BITRATE_MUTUAL_EXCLUSION_OBJECT_GUID,
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
117 ASF_ERROR_CORRECTION_OBJECT_GUID,
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
118 ASF_CONTENT_DESCRIPTION_OBJECT_GUID,
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
119 ASF_EXTENDED_CONTENT_DESCRIPTION_OBJECT_GUID,
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
120 ASF_CONTENT_BRANDING_OBJECT_GUID,
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
121 ASF_STREAM_BITRATE_PROPERTIES_OBJECT_GUID,
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
122 ASF_CONTENT_ENCRYPTION_OBJECT_GUID,
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
123 ASF_EXTENDED_CONTENT_ENCRYPTION_OBJECT_GUID,
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
124 ASF_DIGITAL_SIGNATURE_OBJECT_GUID,
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
125 ASF_PADDING_OBJECT_GUID
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
126 };
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
127 return _guid_map[i];
0ddbd0025174 added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
128 }