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
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 #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 }