Mercurial > audlegacy
annotate src/libaudtag/aac/aac.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 |
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 #include <glib/gstdio.h> |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
22 #include <audlegacy/tuple.h> |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
23 #include <audlegacy/vfs.h> |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
24 #include "../tag_module.h" |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
25 #include "aac.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 |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
28 static const char *ID3v1GenreList[] = { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
29 "Blues", "Classic Rock", "Country", "Dance", "Disco", "Funk", |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
30 "Grunge", "Hip-Hop", "Jazz", "Metal", "New Age", "Oldies", |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
31 "Other", "Pop", "R&B", "Rap", "Reggae", "Rock", |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
32 "Techno", "Industrial", "Alternative", "Ska", "Death Metal", "Pranks", |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
33 "Soundtrack", "Euro-Techno", "Ambient", "Trip-Hop", "Vocal", "Jazz+Funk", |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
34 "Fusion", "Trance", "Classical", "Instrumental", "Acid", "House", |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
35 "Game", "Sound Clip", "Gospel", "Noise", "AlternRock", "Bass", |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
36 "Soul", "Punk", "Space", "Meditative", "Instrumental Pop", "Instrumental Rock", |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
37 "Ethnic", "Gothic", "Darkwave", "Techno-Industrial", "Electronic", "Pop-Folk", |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
38 "Eurodance", "Dream", "Southern Rock", "Comedy", "Cult", "Gangsta", |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
39 "Top 40", "Christian Rap", "Pop/Funk", "Jungle", "Native American", "Cabaret", |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
40 "New Wave", "Psychadelic", "Rave", "Showtunes", "Trailer", "Lo-Fi", |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
41 "Tribal", "Acid Punk", "Acid Jazz", "Polka", "Retro", "Musical", |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
42 "Rock & Roll", "Hard Rock", "Folk", "Folk/Rock", "National Folk", "Swing", |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
43 "Fast-Fusion", "Bebob", "Latin", "Revival", "Celtic", "Bluegrass", "Avantgarde", |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
44 "Gothic Rock", "Progressive Rock", "Psychedelic Rock", "Symphonic Rock", "Slow Rock", "Big Band", |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
45 "Chorus", "Easy Listening", "Acoustic", "Humour", "Speech", "Chanson", |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
46 "Opera", "Chamber Music", "Sonata", "Symphony", "Booty Bass", "Primus", |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
47 "Porn Groove", "Satire", "Slow Jam", "Club", "Tango", "Samba", |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
48 "Folklore", "Ballad", "Power Ballad", "Rhythmic Soul", "Freestyle", "Duet", |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
49 "Punk Rock", "Drum Solo", "A capella", "Euro-House", "Dance Hall", |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
50 "Goa", "Drum & Bass", "Club House", "Hardcore", "Terror", |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
51 "Indie", "BritPop", "NegerPunk", "Polsk Punk", "Beat", |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
52 "Christian Gangsta", "Heavy Metal", "Black Metal", "Crossover", "Contemporary C", |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
53 "Christian Rock", "Merengue", "Salsa", "Thrash Metal", "Anime", "JPop", |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
54 "SynthPop", |
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 |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
57 gchar *atom_types[] = { "\251alb", "\251nam", "cprt", "\251art", "\251ART", "trkn", "\251day", "gnre", "desc" }; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
58 |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
59 Atom *readAtom(VFSFile * fd) |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
60 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
61 guint32 size = read_BEuint32(fd); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
62 if (size > vfs_fsize(fd)) |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
63 return NULL; |
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 Atom *atom = g_new0(Atom, 1); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
66 atom->size = size; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
67 atom->name = read_char_data(fd, 4); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
68 atom->body = read_char_data(fd, atom->size - 8); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
69 atom->type = 0; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
70 return atom; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
71 } |
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 void writeAtom(VFSFile * fd, Atom * atom) |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
74 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
75 write_BEuint32(fd, atom->size); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
76 vfs_fwrite(atom->name, 4, 1, fd); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
77 vfs_fwrite(atom->body, atom->size - 8, 1, fd); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
78 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
79 |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
80 void printAtom(Atom * atom) |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
81 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
82 AUDDBG("size = %x\n", atom->size); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
83 AUDDBG("name = %s\n", atom->name); |
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 |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
86 StrDataAtom *readStrDataAtom(VFSFile * fd) |
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 StrDataAtom *atom = g_new0(StrDataAtom, 1); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
89 atom->atomsize = read_BEuint32(fd); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
90 atom->name = read_char_data(fd, 4); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
91 atom->datasize = read_BEuint32(fd); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
92 atom->dataname = read_char_data(fd, 4); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
93 atom->vflag = read_BEuint32(fd); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
94 atom->nullData = read_BEuint32(fd); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
95 atom->data = read_char_data(fd, atom->datasize - 16); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
96 atom->type = 1; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
97 return atom; |
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 |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
100 void writeStrDataAtom(VFSFile * fd, StrDataAtom * atom) |
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 write_BEuint32(fd, atom->atomsize); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
103 vfs_fwrite(atom->name, 4, 1, fd); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
104 write_BEuint32(fd, atom->datasize); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
105 vfs_fwrite(atom->dataname, 4, 1, fd); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
106 write_BEuint32(fd, atom->vflag); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
107 write_BEuint32(fd, atom->nullData); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
108 vfs_fwrite(atom->data, atom->datasize - 16, 1, fd); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
109 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
110 |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
111 Atom *findAtom(VFSFile * fd, gchar * name) |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
112 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
113 Atom *atom = readAtom(fd); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
114 while (strcmp(atom->name, name) && !vfs_feof(fd)) |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
115 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
116 g_free(atom); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
117 atom = readAtom(fd); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
118 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
119 if (vfs_feof(fd)) |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
120 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
121 g_free(atom); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
122 AUDDBG("The atom %s could not be found\n", name); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
123 return NULL; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
124 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
125 return atom; |
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 |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
128 Atom *getilstAtom(VFSFile * fd) |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
129 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
130 Atom *moov = findAtom(fd, MOOV); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
131 |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
132 // search atom childs |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
133 vfs_fseek(fd, -(moov->size - 7), SEEK_CUR); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
134 Atom *udta = findAtom(fd, UDTA); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
135 |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
136 |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
137 vfs_fseek(fd, -(udta->size - 7), SEEK_CUR); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
138 Atom *meta = findAtom(fd, META); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
139 |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
140 vfs_fseek(fd, -(meta->size - 11), SEEK_CUR); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
141 Atom *ilst = findAtom(fd, ILST); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
142 |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
143 int zz = vfs_ftell(fd); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
144 AUDDBG("zzz = %d\n", zz); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
145 ilstFileOffset = vfs_ftell(fd) - ilst->size; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
146 vfs_fseek(fd, -(ilst->size - 7), SEEK_CUR); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
147 |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
148 return ilst; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
149 |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
150 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
151 |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
152 int getAtomID(gchar * name) |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
153 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
154 g_return_val_if_fail(name != NULL, -1); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
155 int i = 0; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
156 for (i = 0; i < MP4_ITEMS_NO; i++) |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
157 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
158 if (!strcmp(name, atom_types[i])) |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
159 return i; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
160 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
161 return -1; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
162 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
163 |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
164 StrDataAtom *makeAtomWithData(const gchar * data, StrDataAtom * atom, int field) |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
165 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
166 guint32 charsize = strlen(data); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
167 atom->atomsize = charsize + 24; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
168 atom->name = atom_types[field]; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
169 atom->datasize = charsize + 16; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
170 atom->dataname = "data"; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
171 atom->vflag = 0x0; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
172 atom->nullData = 0x0; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
173 atom->data = (gchar *) data; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
174 atom->type = 1; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
175 return atom; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
176 |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
177 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
178 |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
179 void writeAtomListToFile(VFSFile * from, VFSFile * to, int offset, mowgli_list_t * list) |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
180 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
181 //read free atom if we have any :D |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
182 guint32 oset = ilstFileOffset + ilstAtom->size; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
183 vfs_fseek(from, oset, SEEK_SET); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
184 mowgli_list_t *atoms_before_free = mowgli_list_create(); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
185 Atom *atom = readAtom(from); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
186 while (strcmp(atom->name, "free") && !vfs_feof(from)) |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
187 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
188 mowgli_node_add(atom, mowgli_node_create(), atoms_before_free); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
189 g_free(atom); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
190 atom = readAtom(from); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
191 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
192 g_free(atom); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
193 if (vfs_feof(from)) |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
194 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
195 AUDDBG("No free atoms\n"); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
196 g_free(atom); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
197 atom = NULL; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
198 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
199 |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
200 //write ilst atom header |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
201 gchar il[4] = ILST; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
202 vfs_fwrite(&newilstSize, 4, 1, to); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
203 vfs_fwrite(il, 4, 1, to); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
204 //write ilst |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
205 |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
206 mowgli_node_t *n, *tn; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
207 |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
208 MOWGLI_LIST_FOREACH_SAFE(n, tn, list->head) |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
209 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
210 if (((Atom *) (n->data))->type == 0) |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
211 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
212 writeAtom(to, (Atom *) (n->data)); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
213 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
214 else |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
215 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
216 writeStrDataAtom(to, (StrDataAtom *) (n->data)); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
217 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
218 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
219 |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
220 //write all atoms before free |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
221 if (atoms_before_free->count != 0) |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
222 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
223 |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
224 MOWGLI_LIST_FOREACH_SAFE(n, tn, list->head) |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
225 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
226 writeAtom(to, (Atom *) (n->data)); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
227 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
228 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
229 if (atom != NULL) |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
230 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
231 atom->size -= newilstSize - ilstAtom->size; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
232 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
233 writeAtom(to, atom); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
234 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
235 |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
236 gboolean aac_can_handle_file(VFSFile * f) |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
237 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
238 Atom *first_atom = readAtom(f); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
239 if (first_atom == NULL) |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
240 return FALSE; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
241 if (!strcmp(first_atom->name, FTYP)) |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
242 return TRUE; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
243 return FALSE; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
244 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
245 |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
246 Tuple *aac_populate_tuple_from_file(Tuple * tuple, VFSFile * f) |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
247 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
248 if (ilstAtom) |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
249 g_free(ilstAtom); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
250 ilstAtom = getilstAtom(f); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
251 int size_read = 0; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
252 |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
253 if (dataAtoms != NULL) |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
254 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
255 mowgli_node_t *n, *tn; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
256 |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
257 MOWGLI_LIST_FOREACH_SAFE(n, tn, dataAtoms->head) |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
258 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
259 mowgli_node_delete(n, dataAtoms); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
260 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
261 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
262 dataAtoms = mowgli_list_create(); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
263 |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
264 while (size_read < ilstAtom->size) |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
265 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
266 Atom *at = readAtom(f); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
267 mowgli_node_add(at, mowgli_node_create(), dataAtoms); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
268 int atomtype = getAtomID(at->name); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
269 if (atomtype == -1) |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
270 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
271 size_read += at->size; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
272 continue; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
273 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
274 g_free(at); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
275 vfs_fseek(f, -(at->size), SEEK_CUR); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
276 StrDataAtom *a = readStrDataAtom(f); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
277 size_read += a->atomsize; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
278 |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
279 switch (atomtype) |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
280 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
281 case MP4_ALBUM: |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
282 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
283 tuple_associate_string(tuple, FIELD_ALBUM, NULL, a->data); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
284 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
285 break; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
286 case MP4_TITLE: |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
287 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
288 tuple_associate_string(tuple, FIELD_TITLE, NULL, a->data); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
289 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
290 break; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
291 case MP4_COPYRIGHT: |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
292 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
293 tuple_associate_string(tuple, FIELD_COPYRIGHT, NULL, a->data); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
294 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
295 break; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
296 case MP4_ARTIST: |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
297 case MP4_ARTIST2: |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
298 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
299 tuple_associate_string(tuple, FIELD_ARTIST, NULL, a->data); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
300 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
301 break; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
302 case MP4_TRACKNR: |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
303 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
304 //tuple_associate_string(tuple,FIELD_ALBUM,NULL,a->data); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
305 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
306 break; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
307 case MP4_YEAR: |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
308 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
309 tuple_associate_int(tuple, FIELD_YEAR, NULL, atoi(a->data)); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
310 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
311 break; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
312 case MP4_GENRE: |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
313 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
314 guint8 *val = (guint8 *) (a->data + (a->datasize - 17)); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
315 const gchar *genre = ID3v1GenreList[*val - 1]; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
316 tuple_associate_string(tuple, FIELD_GENRE, NULL, genre); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
317 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
318 break; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
319 case MP4_COMMENT: |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
320 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
321 tuple_associate_string(tuple, FIELD_COMMENT, NULL, a->data); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
322 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
323 break; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
324 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
325 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
326 return tuple; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
327 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
328 |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
329 gboolean aac_write_tuple_to_file(Tuple * tuple, VFSFile * f) |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
330 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
331 #ifdef BROKEN |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
332 return FALSE; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
333 #endif |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
334 newilstSize = 0; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
335 mowgli_node_t *n, *tn; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
336 mowgli_list_t *newdataAtoms; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
337 newdataAtoms = mowgli_list_create(); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
338 |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
339 MOWGLI_LIST_FOREACH_SAFE(n, tn, dataAtoms->head) |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
340 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
341 int atomtype = getAtomID(((StrDataAtom *) (n->data))->name); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
342 switch (atomtype) |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
343 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
344 case MP4_ALBUM: |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
345 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
346 const gchar *strVal = tuple_get_string(tuple, FIELD_ALBUM, NULL); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
347 if (strVal != NULL) |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
348 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
349 StrDataAtom *atom = g_new0(StrDataAtom, 1); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
350 atom = makeAtomWithData(strVal, atom, MP4_ALBUM); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
351 mowgli_node_add(atom, mowgli_node_create(), newdataAtoms); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
352 newilstSize += atom->atomsize; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
353 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
354 else |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
355 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
356 mowgli_node_add(n->data, mowgli_node_create(), newdataAtoms); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
357 newilstSize += ((Atom *) (n->data))->size; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
358 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
359 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
360 break; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
361 case MP4_TITLE: |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
362 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
363 const gchar *strVal = tuple_get_string(tuple, FIELD_TITLE, NULL); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
364 if (strVal != NULL) |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
365 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
366 StrDataAtom *atom = g_new0(StrDataAtom, 1); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
367 atom = makeAtomWithData(strVal, atom, MP4_TITLE); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
368 mowgli_node_add(atom, mowgli_node_create(), newdataAtoms); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
369 newilstSize += atom->atomsize; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
370 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
371 else |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
372 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
373 mowgli_node_add(n->data, mowgli_node_create(), newdataAtoms); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
374 newilstSize += ((Atom *) (n->data))->size; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
375 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
376 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
377 break; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
378 case MP4_COPYRIGHT: |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
379 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
380 const gchar *strVal = tuple_get_string(tuple, FIELD_COPYRIGHT, NULL); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
381 if (strVal != NULL) |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
382 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
383 StrDataAtom *atom = g_new0(StrDataAtom, 1); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
384 atom = makeAtomWithData(strVal, atom, MP4_COPYRIGHT); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
385 mowgli_node_add(atom, mowgli_node_create(), newdataAtoms); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
386 newilstSize += atom->atomsize; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
387 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
388 else |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
389 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
390 mowgli_node_add(n->data, mowgli_node_create(), newdataAtoms); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
391 newilstSize += ((Atom *) (n->data))->size; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
392 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
393 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
394 break; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
395 case MP4_ARTIST: |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
396 case MP4_ARTIST2: |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
397 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
398 const gchar *strVal = tuple_get_string(tuple, FIELD_ARTIST, NULL); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
399 if (strVal != NULL) |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
400 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
401 StrDataAtom *atom = g_new0(StrDataAtom, 1); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
402 atom = makeAtomWithData(strVal, atom, MP4_ARTIST2); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
403 mowgli_node_add(atom, mowgli_node_create(), newdataAtoms); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
404 newilstSize += atom->atomsize; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
405 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
406 else |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
407 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
408 mowgli_node_add(n->data, mowgli_node_create(), newdataAtoms); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
409 newilstSize += ((Atom *) (n->data))->size; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
410 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
411 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
412 break; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
413 case MP4_TRACKNR: |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
414 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
415 //tuple_associate_string(tuple,FIELD_ALBUM,NULL,a->data); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
416 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
417 break; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
418 case MP4_YEAR: |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
419 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
420 int iyear = tuple_get_int(tuple, FIELD_YEAR, NULL); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
421 gchar *strVal = g_strdup_printf("%d", iyear); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
422 if (strVal != NULL) |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
423 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
424 StrDataAtom *atom = g_new0(StrDataAtom, 1); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
425 atom = makeAtomWithData(strVal, atom, MP4_YEAR); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
426 mowgli_node_add(atom, mowgli_node_create(), newdataAtoms); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
427 newilstSize += atom->atomsize; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
428 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
429 else |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
430 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
431 mowgli_node_add(n->data, mowgli_node_create(), newdataAtoms); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
432 newilstSize += ((Atom *) (n->data))->size; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
433 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
434 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
435 break; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
436 /* |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
437 case MP4_GENRE: |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
438 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
439 |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
440 guint8 *val = (guint8*)(a->data + (a->datasize-17)); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
441 const gchar* genre = ID3v1GenreList[*val-1]; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
442 tuple_associate_string(tuple,FIELD_GENRE,NULL,genre); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
443 |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
444 }break; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
445 */ |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
446 case MP4_COMMENT: |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
447 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
448 const gchar *strVal = tuple_get_string(tuple, FIELD_COMMENT, NULL); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
449 if (strVal != NULL) |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
450 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
451 StrDataAtom *atom = g_new0(StrDataAtom, 1); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
452 atom = makeAtomWithData(strVal, atom, MP4_COMMENT); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
453 mowgli_node_add(atom, mowgli_node_create(), newdataAtoms); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
454 newilstSize += atom->atomsize; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
455 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
456 else |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
457 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
458 mowgli_node_add(n->data, mowgli_node_create(), newdataAtoms); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
459 newilstSize += ((Atom *) (n->data))->size; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
460 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
461 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
462 break; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
463 default: |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
464 { |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
465 mowgli_node_add(n->data, mowgli_node_create(), newdataAtoms); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
466 newilstSize += ((Atom *) (n->data))->size; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
467 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
468 break; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
469 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
470 } |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
471 |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
472 VFSFile *tmp; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
473 const gchar *tmpdir = g_get_tmp_dir(); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
474 gchar *tmp_path = g_strdup_printf("file://%s/%s", tmpdir, "tmp.mp4"); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
475 tmp = vfs_fopen(tmp_path, "w"); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
476 copyAudioData(f, tmp, 0, ilstFileOffset); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
477 writeAtomListToFile(f, tmp, ilstFileOffset, newdataAtoms); |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
478 return TRUE; |
0ddbd0025174
added libaudtag. (not used yet.)
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
479 } |