annotate src/madplug/input.c @ 3193:93cf4d0a0dde

alsa-ng: Prefer "PCM" volume control over "Wave" on systems that have both, for consistency with OSS plugin and maybe other apps (closes AUD-34 and AUD-36).
author John Lindgren <john.lindgren@tds.net>
date Mon, 29 Jun 2009 23:05:56 -0400
parents f1b6f1b2cdb3
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
1 /*
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
2 * mad plugin for audacious
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
3 * Copyright (C) 2005-2007 William Pitcock, Yoshiki Yazawa
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
4 *
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
5 * Portions derived from xmms-mad:
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
6 * Copyright (C) 2001-2002 Sam Clegg - See COPYING
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
7 *
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
8 * This program is free software; you can redistribute it and/or modify
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
9 * it under the terms of the GNU General Public License as published by
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
10 * the Free Software Foundation; under version 2 of the License.
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
11 *
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
12 * This program is distributed in the hope that it will be useful,
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
15 * GNU General Public License for more details.
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
16 *
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
17 * You should have received a copy of the GNU General Public License
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
18 * along with this program; if not, write to the Free Software
2835
f1b6f1b2cdb3 fixed FSF address
Andrew O. Shadoura <bugzilla@tut.by>
parents: 2576
diff changeset
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
20 */
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
21
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
22 #include "config.h"
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
23
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
24 #ifdef HAVE_ASSERT_H
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
25 #include <assert.h>
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
26 #endif /* HAVE_ASSERT_H */
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
27
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
28 #ifdef HAVE_SYS_TYPES_H
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
29 #include <sys/types.h>
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
30 #endif /* HAVE_SYS_TYPES_H */
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
31
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
32 #ifdef HAVE_SYS_SOCKET_H
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
33 #include <sys/socket.h>
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
34 #endif /* HAVE_SYS_SOCKET_H */
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
35
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
36 #ifdef HAVE_NETINET_IN_H
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
37 #include <netinet/in.h>
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
38 #endif /* HAVE_NETINET_IN_H */
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
39
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
40 #ifdef HAVE_ARPA_INET_H
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
41 #include <arpa/inet.h>
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
42 #endif /* HAVE_ARPA_INET_H */
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
43
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
44 #ifdef HAVE_NETDB_H
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
45 #include <netdb.h>
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
46 #endif /* HAVE_NETDB_H */
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
47
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
48 #ifdef HAVE_SYS_STAT_H
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
49 #include <sys/stat.h>
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
50 #endif /* HAVE_SYS_STAT_H */
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
51
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
52 #ifdef HAVE_SYS_TIME_H
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
53 #include <sys/time.h>
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
54 #endif /* HAVE_SYS_TIME_H */
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
55
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
56 #include <fcntl.h>
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
57 #include <errno.h>
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
58
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
59 #include "input.h"
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
60 #include "replaygain.h"
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
61
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
62 #define DIR_SEPARATOR '/'
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
63 #define HEADER_SIZE 256
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
64 #define LINE_LENGTH 256
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
65
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
66 extern gboolean scan_file(struct mad_info_t *info, gboolean fast);
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
67
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
68 /**
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
69 * init the mad_info_t struct.
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
70 */
2341
59addab003d7 - reworked replaygain to use individual pre-gain for the files with RG info and the rest.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2334
diff changeset
71 gboolean
59addab003d7 - reworked replaygain to use individual pre-gain for the files with RG info and the rest.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2334
diff changeset
72 input_init(struct mad_info_t * info, const char *url, VFSFile *fd)
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
73 {
2276
d25cd7e7eddb append '\n' to format string for AUDDBG()
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2214
diff changeset
74 AUDDBG("f: input_init\n");
2214
9a869d4bb0d3 make use of AUDDBG() for debug print out.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2142
diff changeset
75
1485
4e612b01f303 - make use of tuple_formatter_make_title_string(). now madplug can show file name if metadata is not available.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 1473
diff changeset
76 memset(info, 0, sizeof(struct mad_info_t)); // all fields are cleared to 0 --yaz
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
77
2390
bd9673d8b7d5 converted to new sound engine scheme.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2346
diff changeset
78 info->fmt = FMT_FIXED32;
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
79 info->channels = -1;
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
80 info->mpeg_layer = -1;
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
81 info->size = -1;
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
82 info->freq = -1;
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
83 info->seek = -1;
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
84 info->duration = mad_timer_zero;
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
85 info->pos = mad_timer_zero;
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
86 info->url = g_strdup(url);
1485
4e612b01f303 - make use of tuple_formatter_make_title_string(). now madplug can show file name if metadata is not available.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 1473
diff changeset
87 info->filename = g_strdup(url);
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
88
773
22c82f3c0411 [svn] - reduce connection latency to http stream.
yaz
parents: 768
diff changeset
89 // from input_read_replaygain()
2392
4ad6e7dfb389 imported 5298b10777b3 by Eugene Zagidullin.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2390
diff changeset
90 info->replaygain_track_peak = 0.0;
4ad6e7dfb389 imported 5298b10777b3 by Eugene Zagidullin.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2390
diff changeset
91 info->replaygain_track_scale = 0.0;
4ad6e7dfb389 imported 5298b10777b3 by Eugene Zagidullin.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2390
diff changeset
92 info->replaygain_album_peak = 0.0;
4ad6e7dfb389 imported 5298b10777b3 by Eugene Zagidullin.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2390
diff changeset
93 info->replaygain_album_scale = 0.0;
773
22c82f3c0411 [svn] - reduce connection latency to http stream.
yaz
parents: 768
diff changeset
94 info->mp3gain_undo = -77;
22c82f3c0411 [svn] - reduce connection latency to http stream.
yaz
parents: 768
diff changeset
95 info->mp3gain_minmax = -77;
22c82f3c0411 [svn] - reduce connection latency to http stream.
yaz
parents: 768
diff changeset
96
1328
38fb3bb3e21e - make probing for tuple completely reuse fd.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 1277
diff changeset
97 if(!fd){
1978
fa9f85cebade s/vfs_/aud_vfs_/g
William Pitcock <nenolod@atheme.org>
parents: 1976
diff changeset
98 info->infile = aud_vfs_fopen(info->filename, "rb");
1328
38fb3bb3e21e - make probing for tuple completely reuse fd.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 1277
diff changeset
99 if (info->infile == NULL) {
38fb3bb3e21e - make probing for tuple completely reuse fd.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 1277
diff changeset
100 return FALSE;
38fb3bb3e21e - make probing for tuple completely reuse fd.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 1277
diff changeset
101 }
611
3f7a52adfe0e [svn] merge recent changes from yaz's branch.
yaz
parents: 610
diff changeset
102 }
1328
38fb3bb3e21e - make probing for tuple completely reuse fd.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 1277
diff changeset
103 else{
2214
9a869d4bb0d3 make use of AUDDBG() for debug print out.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2142
diff changeset
104 AUDDBG("input_init: aud_vfs_dup\n");
9a869d4bb0d3 make use of AUDDBG() for debug print out.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2142
diff changeset
105
1978
fa9f85cebade s/vfs_/aud_vfs_/g
William Pitcock <nenolod@atheme.org>
parents: 1976
diff changeset
106 info->infile = aud_vfs_dup(fd);
1328
38fb3bb3e21e - make probing for tuple completely reuse fd.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 1277
diff changeset
107 }
38fb3bb3e21e - make probing for tuple completely reuse fd.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 1277
diff changeset
108
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
109 // obtain file size
1978
fa9f85cebade s/vfs_/aud_vfs_/g
William Pitcock <nenolod@atheme.org>
parents: 1976
diff changeset
110 info->size = aud_vfs_fsize(info->infile);
727
b938fe96b20e [svn] - ensure that info->remote is set if url begins with http:// so that metadata can be displayed.
yaz
parents: 706
diff changeset
111 info->remote = info->size == 0 ? TRUE : FALSE; //proxy connection may result in non-zero size.
2291
1457b35713d9 remove obsolete function
mf0102 <0102@gmx.at>
parents: 2276
diff changeset
112 if(aud_vfs_is_remote((gchar *)url))
727
b938fe96b20e [svn] - ensure that info->remote is set if url begins with http:// so that metadata can be displayed.
yaz
parents: 706
diff changeset
113 info->remote = TRUE;
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
114
997
e46b98155d5d [svn] - fix a bug which counts number of frames twice in handling xing header.
yaz
parents: 974
diff changeset
115 info->fileinfo_request = FALSE;
e46b98155d5d [svn] - fix a bug which counts number of frames twice in handling xing header.
yaz
parents: 974
diff changeset
116
2276
d25cd7e7eddb append '\n' to format string for AUDDBG()
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2214
diff changeset
117 AUDDBG("i: info->size = %lu\n", (long unsigned int)info->size);
d25cd7e7eddb append '\n' to format string for AUDDBG()
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2214
diff changeset
118 AUDDBG("e: input_init\n");
2214
9a869d4bb0d3 make use of AUDDBG() for debug print out.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2142
diff changeset
119
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
120 return TRUE;
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
121 }
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
122
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
123 /* return length in letters */
2341
59addab003d7 - reworked replaygain to use individual pre-gain for the files with RG info and the rest.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2334
diff changeset
124 size_t
59addab003d7 - reworked replaygain to use individual pre-gain for the files with RG info and the rest.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2334
diff changeset
125 mad_ucs4len(id3_ucs4_t *ucs)
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
126 {
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
127 id3_ucs4_t *ptr = ucs;
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
128 size_t len = 0;
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
129
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
130 while(*ptr++ != 0)
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
131 len++;
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
132
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
133 return len;
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
134 }
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
135
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
136 /* duplicate id3_ucs4_t string. new string will be terminated with 0. */
2341
59addab003d7 - reworked replaygain to use individual pre-gain for the files with RG info and the rest.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2334
diff changeset
137 id3_ucs4_t *
59addab003d7 - reworked replaygain to use individual pre-gain for the files with RG info and the rest.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2334
diff changeset
138 mad_ucs4dup(id3_ucs4_t *org)
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
139 {
2513
a4629703edc3 Remove completely wtf pointer nulling. Variables don't magically change
Matti Hamalainen <ccr@tnsp.org>
parents: 2512
diff changeset
140 id3_ucs4_t *res;
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
141 size_t len = mad_ucs4len(org);
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
142
2469
2d7b190acc76 Indeed 'new' might not be a C keyword, but it's a C++ keyword and thus not recommended to be used as a identifier.
Matti Hamalainen <ccr@tnsp.org>
parents: 2468
diff changeset
143 res = g_malloc0((len + 1) * sizeof(id3_ucs4_t));
2d7b190acc76 Indeed 'new' might not be a C keyword, but it's a C++ keyword and thus not recommended to be used as a identifier.
Matti Hamalainen <ccr@tnsp.org>
parents: 2468
diff changeset
144 memcpy(res, org, len * sizeof(id3_ucs4_t));
2d7b190acc76 Indeed 'new' might not be a C keyword, but it's a C++ keyword and thus not recommended to be used as a identifier.
Matti Hamalainen <ccr@tnsp.org>
parents: 2468
diff changeset
145 *(res + len) = 0; //terminate
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
146
2469
2d7b190acc76 Indeed 'new' might not be a C keyword, but it's a C++ keyword and thus not recommended to be used as a identifier.
Matti Hamalainen <ccr@tnsp.org>
parents: 2468
diff changeset
147 return res;
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
148 }
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
149
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
150 #define BYTES(x) ((x) * sizeof(id3_ucs4_t))
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
151
2341
59addab003d7 - reworked replaygain to use individual pre-gain for the files with RG info and the rest.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2334
diff changeset
152 id3_ucs4_t *
59addab003d7 - reworked replaygain to use individual pre-gain for the files with RG info and the rest.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2334
diff changeset
153 mad_parse_genre(const id3_ucs4_t *string)
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
154 {
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
155 id3_ucs4_t *ret = NULL;
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
156 id3_ucs4_t *tmp = NULL;
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
157 id3_ucs4_t *genre = NULL;
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
158 id3_ucs4_t *ptr, *end, *tail, *tp;
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
159 size_t ret_len = 0; //num of ucs4 char!
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
160 size_t tmp_len = 0;
674
fadf4c18a1cf [svn] madplug bug fix:
yaz
parents: 645
diff changeset
161 size_t string_len = 0;
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
162 gboolean is_num = TRUE;
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
163
699
14f80d61e855 [svn] - TCON frame without string crashes mad_parse_genre().
yaz
parents: 696
diff changeset
164 if(!string)
14f80d61e855 [svn] - TCON frame without string crashes mad_parse_genre().
yaz
parents: 696
diff changeset
165 return NULL;
14f80d61e855 [svn] - TCON frame without string crashes mad_parse_genre().
yaz
parents: 696
diff changeset
166
674
fadf4c18a1cf [svn] madplug bug fix:
yaz
parents: 645
diff changeset
167 string_len = mad_ucs4len((id3_ucs4_t *)string);
fadf4c18a1cf [svn] madplug bug fix:
yaz
parents: 645
diff changeset
168 tail = (id3_ucs4_t *)string + string_len;
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
169
675
1ea4cfb007e0 [svn] - if genre name is generated from number, it may exceed allocated memory block.
yaz
parents: 674
diff changeset
170 if(BYTES(string_len + 1) > 1024) {
1ea4cfb007e0 [svn] - if genre name is generated from number, it may exceed allocated memory block.
yaz
parents: 674
diff changeset
171 ret = g_malloc0(BYTES(string_len + 1));
1ea4cfb007e0 [svn] - if genre name is generated from number, it may exceed allocated memory block.
yaz
parents: 674
diff changeset
172 }
1ea4cfb007e0 [svn] - if genre name is generated from number, it may exceed allocated memory block.
yaz
parents: 674
diff changeset
173 else {
1ea4cfb007e0 [svn] - if genre name is generated from number, it may exceed allocated memory block.
yaz
parents: 674
diff changeset
174 ret = g_malloc0(1024);
1ea4cfb007e0 [svn] - if genre name is generated from number, it may exceed allocated memory block.
yaz
parents: 674
diff changeset
175 }
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
176
2334
0dd31200a33a Fix problems with pointer arithmetic (Bugzilla #72)
Jussi Judin <jjudin+audacious@iki.fi>
parents: 2291
diff changeset
177 for(ptr = (id3_ucs4_t *)string; ptr <= tail && *ptr != 0; ptr++) {
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
178 if(*ptr == '(') {
2334
0dd31200a33a Fix problems with pointer arithmetic (Bugzilla #72)
Jussi Judin <jjudin+audacious@iki.fi>
parents: 2291
diff changeset
179 if(ptr < tail && *(++ptr) == '(') { // escaped text like: ((something)
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
180 for(end = ptr; *end != ')' && *end != 0;) { // copy "(something)"
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
181 end++;
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
182 }
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
183 end++; //include trailing ')'
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
184 memcpy(ret, ptr, BYTES(end - ptr));
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
185 ret_len += (end - ptr);
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
186 *(ret + ret_len) = 0; //terminate
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
187 ptr = end + 1;
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
188 }
2334
0dd31200a33a Fix problems with pointer arithmetic (Bugzilla #72)
Jussi Judin <jjudin+audacious@iki.fi>
parents: 2291
diff changeset
189 else if (ptr <= tail && *ptr != 0) {
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
190 // reference to an id3v1 genre code
2468
615b67c4e010 Tiny cleanups of repetitive code syndrome madness; Added some null-pointer checks.
Matti Hamalainen <ccr@tnsp.org>
parents: 2392
diff changeset
191 for(tmp_len = 0, end = ptr; *end != ')' && *end != 0;) {
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
192 end++;
2468
615b67c4e010 Tiny cleanups of repetitive code syndrome madness; Added some null-pointer checks.
Matti Hamalainen <ccr@tnsp.org>
parents: 2392
diff changeset
193 tmp_len++;
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
194 }
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
195
2468
615b67c4e010 Tiny cleanups of repetitive code syndrome madness; Added some null-pointer checks.
Matti Hamalainen <ccr@tnsp.org>
parents: 2392
diff changeset
196 tmp = g_malloc0(BYTES(tmp_len + 1));
615b67c4e010 Tiny cleanups of repetitive code syndrome madness; Added some null-pointer checks.
Matti Hamalainen <ccr@tnsp.org>
parents: 2392
diff changeset
197 memcpy(tmp, ptr, BYTES(tmp_len));
615b67c4e010 Tiny cleanups of repetitive code syndrome madness; Added some null-pointer checks.
Matti Hamalainen <ccr@tnsp.org>
parents: 2392
diff changeset
198 *(tmp + tmp_len) = 0; //terminate
615b67c4e010 Tiny cleanups of repetitive code syndrome madness; Added some null-pointer checks.
Matti Hamalainen <ccr@tnsp.org>
parents: 2392
diff changeset
199 ptr += tmp_len;
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
200
2471
6039012d8252 Certain piece of allocated memory was free'd before we were done with it,
Matti Hamalainen <ccr@tnsp.org>
parents: 2469
diff changeset
201 /* id3_genre_name may, in some cases, return the given string
6039012d8252 Certain piece of allocated memory was free'd before we were done with it,
Matti Hamalainen <ccr@tnsp.org>
parents: 2469
diff changeset
202 * so we must free it after we're done, not before.
6039012d8252 Certain piece of allocated memory was free'd before we were done with it,
Matti Hamalainen <ccr@tnsp.org>
parents: 2469
diff changeset
203 */
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
204 genre = (id3_ucs4_t *)id3_genre_name((const id3_ucs4_t *)tmp);
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
205
2471
6039012d8252 Certain piece of allocated memory was free'd before we were done with it,
Matti Hamalainen <ccr@tnsp.org>
parents: 2469
diff changeset
206 tmp_len = mad_ucs4len(genre);
6039012d8252 Certain piece of allocated memory was free'd before we were done with it,
Matti Hamalainen <ccr@tnsp.org>
parents: 2469
diff changeset
207 memcpy(ret + ret_len, genre, BYTES(tmp_len));
6039012d8252 Certain piece of allocated memory was free'd before we were done with it,
Matti Hamalainen <ccr@tnsp.org>
parents: 2469
diff changeset
208 ret_len += tmp_len;
6039012d8252 Certain piece of allocated memory was free'd before we were done with it,
Matti Hamalainen <ccr@tnsp.org>
parents: 2469
diff changeset
209 *(ret + ret_len) = 0; //terminate
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
210 g_free(tmp);
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
211 }
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
212 }
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
213 else {
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
214 for(end = ptr; *end != '(' && *end != 0; ) {
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
215 end++;
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
216 }
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
217 // scan string to determine whether a genre code number or not
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
218 tp = ptr;
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
219 is_num = TRUE;
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
220 while(tp < end) {
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
221 if(*tp < '0' || *tp > '9') { // anything else than number appears.
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
222 is_num = FALSE;
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
223 break;
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
224 }
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
225 tp++;
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
226 }
2334
0dd31200a33a Fix problems with pointer arithmetic (Bugzilla #72)
Jussi Judin <jjudin+audacious@iki.fi>
parents: 2291
diff changeset
227
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
228 if(is_num) {
2214
9a869d4bb0d3 make use of AUDDBG() for debug print out.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2142
diff changeset
229 AUDDBG("is_num!\n");
2468
615b67c4e010 Tiny cleanups of repetitive code syndrome madness; Added some null-pointer checks.
Matti Hamalainen <ccr@tnsp.org>
parents: 2392
diff changeset
230 tmp_len = end - ptr;
615b67c4e010 Tiny cleanups of repetitive code syndrome madness; Added some null-pointer checks.
Matti Hamalainen <ccr@tnsp.org>
parents: 2392
diff changeset
231 tmp = g_malloc0(BYTES(tmp_len + 1));
615b67c4e010 Tiny cleanups of repetitive code syndrome madness; Added some null-pointer checks.
Matti Hamalainen <ccr@tnsp.org>
parents: 2392
diff changeset
232 memcpy(tmp, ptr, BYTES(tmp_len));
615b67c4e010 Tiny cleanups of repetitive code syndrome madness; Added some null-pointer checks.
Matti Hamalainen <ccr@tnsp.org>
parents: 2392
diff changeset
233 *(tmp + tmp_len) = 0; //terminate
615b67c4e010 Tiny cleanups of repetitive code syndrome madness; Added some null-pointer checks.
Matti Hamalainen <ccr@tnsp.org>
parents: 2392
diff changeset
234 ptr += tmp_len;
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
235
2471
6039012d8252 Certain piece of allocated memory was free'd before we were done with it,
Matti Hamalainen <ccr@tnsp.org>
parents: 2469
diff changeset
236 /* id3_genre_name may, in some cases, return the given string
6039012d8252 Certain piece of allocated memory was free'd before we were done with it,
Matti Hamalainen <ccr@tnsp.org>
parents: 2469
diff changeset
237 * so we must free it after we're done, not before.
6039012d8252 Certain piece of allocated memory was free'd before we were done with it,
Matti Hamalainen <ccr@tnsp.org>
parents: 2469
diff changeset
238 */
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
239 genre = (id3_ucs4_t *)id3_genre_name((const id3_ucs4_t *)tmp);
2214
9a869d4bb0d3 make use of AUDDBG() for debug print out.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2142
diff changeset
240 AUDDBG("genre length = %d\n", mad_ucs4len(genre));
2471
6039012d8252 Certain piece of allocated memory was free'd before we were done with it,
Matti Hamalainen <ccr@tnsp.org>
parents: 2469
diff changeset
241
6039012d8252 Certain piece of allocated memory was free'd before we were done with it,
Matti Hamalainen <ccr@tnsp.org>
parents: 2469
diff changeset
242 tmp_len = mad_ucs4len(genre);
6039012d8252 Certain piece of allocated memory was free'd before we were done with it,
Matti Hamalainen <ccr@tnsp.org>
parents: 2469
diff changeset
243 memcpy(ret + ret_len, genre, BYTES(tmp_len));
6039012d8252 Certain piece of allocated memory was free'd before we were done with it,
Matti Hamalainen <ccr@tnsp.org>
parents: 2469
diff changeset
244 ret_len += tmp_len;
6039012d8252 Certain piece of allocated memory was free'd before we were done with it,
Matti Hamalainen <ccr@tnsp.org>
parents: 2469
diff changeset
245 *(ret + ret_len) = 0; //terminate
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
246 g_free(tmp);
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
247 }
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
248 else { // plain text
2468
615b67c4e010 Tiny cleanups of repetitive code syndrome madness; Added some null-pointer checks.
Matti Hamalainen <ccr@tnsp.org>
parents: 2392
diff changeset
249 tmp_len = end - ptr;
2214
9a869d4bb0d3 make use of AUDDBG() for debug print out.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2142
diff changeset
250 AUDDBG("plain!\n");
9a869d4bb0d3 make use of AUDDBG() for debug print out.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2142
diff changeset
251 AUDDBG("ret_len = %d\n", ret_len);
2468
615b67c4e010 Tiny cleanups of repetitive code syndrome madness; Added some null-pointer checks.
Matti Hamalainen <ccr@tnsp.org>
parents: 2392
diff changeset
252 AUDDBG("end - ptr = %d\n", BYTES(tmp_len));
2214
9a869d4bb0d3 make use of AUDDBG() for debug print out.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2142
diff changeset
253
2468
615b67c4e010 Tiny cleanups of repetitive code syndrome madness; Added some null-pointer checks.
Matti Hamalainen <ccr@tnsp.org>
parents: 2392
diff changeset
254 memcpy(ret + ret_len, ptr, BYTES(tmp_len));
615b67c4e010 Tiny cleanups of repetitive code syndrome madness; Added some null-pointer checks.
Matti Hamalainen <ccr@tnsp.org>
parents: 2392
diff changeset
255 ret_len = ret_len + tmp_len;
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
256 *(ret + ret_len) = 0; //terminate
2468
615b67c4e010 Tiny cleanups of repetitive code syndrome madness; Added some null-pointer checks.
Matti Hamalainen <ccr@tnsp.org>
parents: 2392
diff changeset
257 ptr += tmp_len;
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
258 }
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
259 }
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
260 }
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
261 return ret;
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
262 }
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
263
2341
59addab003d7 - reworked replaygain to use individual pre-gain for the files with RG info and the rest.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2334
diff changeset
264 gchar *
59addab003d7 - reworked replaygain to use individual pre-gain for the files with RG info and the rest.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2334
diff changeset
265 input_id3_get_string(struct id3_tag * tag, const gchar *frame_name)
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
266 {
618
a7a28782c1b0 [svn] - revise input_id3_get_string() to take encoding of field into account.
yaz
parents: 613
diff changeset
267 gchar *rtn0 = NULL, *rtn = NULL;
675
1ea4cfb007e0 [svn] - if genre name is generated from number, it may exceed allocated memory block.
yaz
parents: 674
diff changeset
268 const id3_ucs4_t *string_const = NULL;
1ea4cfb007e0 [svn] - if genre name is generated from number, it may exceed allocated memory block.
yaz
parents: 674
diff changeset
269 id3_ucs4_t *string = NULL;
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
270 struct id3_frame *frame;
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
271 union id3_field *field;
618
a7a28782c1b0 [svn] - revise input_id3_get_string() to take encoding of field into account.
yaz
parents: 613
diff changeset
272 int encoding = -1;
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
273
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
274 frame = id3_tag_findframe(tag, frame_name, 0);
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
275 if (!frame)
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
276 return NULL;
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
277
618
a7a28782c1b0 [svn] - revise input_id3_get_string() to take encoding of field into account.
yaz
parents: 613
diff changeset
278 field = id3_frame_field(frame, 0);
a7a28782c1b0 [svn] - revise input_id3_get_string() to take encoding of field into account.
yaz
parents: 613
diff changeset
279 encoding = id3_field_gettextencoding(field);
a7a28782c1b0 [svn] - revise input_id3_get_string() to take encoding of field into account.
yaz
parents: 613
diff changeset
280
620
7a181a17f995 [svn] revise input_id3_get_string():
yaz
parents: 618
diff changeset
281 if (!strcmp(frame_name, ID3_FRAME_COMMENT))
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
282 field = id3_frame_field(frame, 3);
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
283 else
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
284 field = id3_frame_field(frame, 1);
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
285
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
286 if (!field)
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
287 return NULL;
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
288
620
7a181a17f995 [svn] revise input_id3_get_string():
yaz
parents: 618
diff changeset
289 if (!strcmp(frame_name, ID3_FRAME_COMMENT))
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
290 string_const = id3_field_getfullstring(field);
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
291 else
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
292 string_const = id3_field_getstrings(field, 0);
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
293
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
294 if (!string_const)
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
295 return NULL;
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
296
620
7a181a17f995 [svn] revise input_id3_get_string():
yaz
parents: 618
diff changeset
297 if (!strcmp(frame_name, ID3_FRAME_GENRE)) {
645
e0d131145768 [svn] - revise input_id3_get_string().
yaz
parents: 621
diff changeset
298 string = mad_parse_genre(string_const);
e0d131145768 [svn] - revise input_id3_get_string().
yaz
parents: 621
diff changeset
299 }
e0d131145768 [svn] - revise input_id3_get_string().
yaz
parents: 621
diff changeset
300 else {
e0d131145768 [svn] - revise input_id3_get_string().
yaz
parents: 621
diff changeset
301 string = mad_ucs4dup((id3_ucs4_t *)string_const);
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
302 }
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
303
674
fadf4c18a1cf [svn] madplug bug fix:
yaz
parents: 645
diff changeset
304 if (!string)
fadf4c18a1cf [svn] madplug bug fix:
yaz
parents: 645
diff changeset
305 return NULL;
fadf4c18a1cf [svn] madplug bug fix:
yaz
parents: 645
diff changeset
306
618
a7a28782c1b0 [svn] - revise input_id3_get_string() to take encoding of field into account.
yaz
parents: 613
diff changeset
307 switch (encoding) {
a7a28782c1b0 [svn] - revise input_id3_get_string() to take encoding of field into account.
yaz
parents: 613
diff changeset
308 case ID3_FIELD_TEXTENCODING_ISO_8859_1:
645
e0d131145768 [svn] - revise input_id3_get_string().
yaz
parents: 621
diff changeset
309 rtn0 = (gchar *)id3_ucs4_latin1duplicate(string);
2050
2ffc6a69fcd1 string API calls -> vtable
William Pitcock <nenolod@atheme.org>
parents: 1985
diff changeset
310 rtn = aud_str_to_utf8(rtn0);
645
e0d131145768 [svn] - revise input_id3_get_string().
yaz
parents: 621
diff changeset
311 g_free(rtn0);
618
a7a28782c1b0 [svn] - revise input_id3_get_string() to take encoding of field into account.
yaz
parents: 613
diff changeset
312 break;
a7a28782c1b0 [svn] - revise input_id3_get_string() to take encoding of field into account.
yaz
parents: 613
diff changeset
313 case ID3_FIELD_TEXTENCODING_UTF_8:
a7a28782c1b0 [svn] - revise input_id3_get_string() to take encoding of field into account.
yaz
parents: 613
diff changeset
314 default:
645
e0d131145768 [svn] - revise input_id3_get_string().
yaz
parents: 621
diff changeset
315 rtn = (gchar *)id3_ucs4_utf8duplicate(string);
618
a7a28782c1b0 [svn] - revise input_id3_get_string() to take encoding of field into account.
yaz
parents: 613
diff changeset
316 break;
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
317 }
645
e0d131145768 [svn] - revise input_id3_get_string().
yaz
parents: 621
diff changeset
318 g_free((void *)string);
618
a7a28782c1b0 [svn] - revise input_id3_get_string() to take encoding of field into account.
yaz
parents: 613
diff changeset
319
2214
9a869d4bb0d3 make use of AUDDBG() for debug print out.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2142
diff changeset
320 AUDDBG("i: string = %s\n", rtn);
9a869d4bb0d3 make use of AUDDBG() for debug print out.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2142
diff changeset
321
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
322 return rtn;
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
323 }
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
324
2341
59addab003d7 - reworked replaygain to use individual pre-gain for the files with RG info and the rest.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2334
diff changeset
325 static void
59addab003d7 - reworked replaygain to use individual pre-gain for the files with RG info and the rest.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2334
diff changeset
326 input_set_and_free_tag(struct id3_tag *tag, Tuple *tuple, const gchar *frame, const gint nfield)
1428
4993976d7ed0 madplug: tuple API changes
William Pitcock <nenolod@atheme-project.org>
parents: 1328
diff changeset
327 {
4993976d7ed0 madplug: tuple API changes
William Pitcock <nenolod@atheme-project.org>
parents: 1328
diff changeset
328 gchar *scratch = input_id3_get_string(tag, frame);
4993976d7ed0 madplug: tuple API changes
William Pitcock <nenolod@atheme-project.org>
parents: 1328
diff changeset
329
1976
5fa26178eaef s/tuple_/aud_tuple_/g
William Pitcock <nenolod@atheme.org>
parents: 1709
diff changeset
330 aud_tuple_associate_string(tuple, nfield, NULL, scratch);
5fa26178eaef s/tuple_/aud_tuple_/g
William Pitcock <nenolod@atheme.org>
parents: 1709
diff changeset
331 aud_tuple_associate_string(tuple, -1, frame, scratch);
1428
4993976d7ed0 madplug: tuple API changes
William Pitcock <nenolod@atheme-project.org>
parents: 1328
diff changeset
332
4993976d7ed0 madplug: tuple API changes
William Pitcock <nenolod@atheme-project.org>
parents: 1328
diff changeset
333 g_free(scratch);
4993976d7ed0 madplug: tuple API changes
William Pitcock <nenolod@atheme-project.org>
parents: 1328
diff changeset
334 }
773
22c82f3c0411 [svn] - reduce connection latency to http stream.
yaz
parents: 768
diff changeset
335
2341
59addab003d7 - reworked replaygain to use individual pre-gain for the files with RG info and the rest.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2334
diff changeset
336 static void
59addab003d7 - reworked replaygain to use individual pre-gain for the files with RG info and the rest.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2334
diff changeset
337 input_alloc_tag(struct mad_info_t *info)
773
22c82f3c0411 [svn] - reduce connection latency to http stream.
yaz
parents: 768
diff changeset
338 {
1485
4e612b01f303 - make use of tuple_formatter_make_title_string(). now madplug can show file name if metadata is not available.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 1473
diff changeset
339 Tuple *tuple;
773
22c82f3c0411 [svn] - reduce connection latency to http stream.
yaz
parents: 768
diff changeset
340
22c82f3c0411 [svn] - reduce connection latency to http stream.
yaz
parents: 768
diff changeset
341 if (info->tuple == NULL) {
1976
5fa26178eaef s/tuple_/aud_tuple_/g
William Pitcock <nenolod@atheme.org>
parents: 1709
diff changeset
342 tuple = aud_tuple_new();
1485
4e612b01f303 - make use of tuple_formatter_make_title_string(). now madplug can show file name if metadata is not available.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 1473
diff changeset
343 info->tuple = tuple;
1976
5fa26178eaef s/tuple_/aud_tuple_/g
William Pitcock <nenolod@atheme.org>
parents: 1709
diff changeset
344 aud_tuple_associate_int(info->tuple, FIELD_LENGTH, NULL, -1);
773
22c82f3c0411 [svn] - reduce connection latency to http stream.
yaz
parents: 768
diff changeset
345 }
22c82f3c0411 [svn] - reduce connection latency to http stream.
yaz
parents: 768
diff changeset
346 }
22c82f3c0411 [svn] - reduce connection latency to http stream.
yaz
parents: 768
diff changeset
347
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
348 /**
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
349 * read the ID3 tag
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
350 */
2341
59addab003d7 - reworked replaygain to use individual pre-gain for the files with RG info and the rest.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2334
diff changeset
351 static void
59addab003d7 - reworked replaygain to use individual pre-gain for the files with RG info and the rest.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2334
diff changeset
352 input_read_tag(struct mad_info_t *info)
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
353 {
2513
a4629703edc3 Remove completely wtf pointer nulling. Variables don't magically change
Matti Hamalainen <ccr@tnsp.org>
parents: 2512
diff changeset
354 gchar *string;
1485
4e612b01f303 - make use of tuple_formatter_make_title_string(). now madplug can show file name if metadata is not available.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 1473
diff changeset
355 Tuple *tuple;
791
91d2b302f479 [svn] - only perform vfs fseek against info::infile if it is available.
nenolod
parents: 789
diff changeset
356 glong curpos = 0;
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
357
2276
d25cd7e7eddb append '\n' to format string for AUDDBG()
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2214
diff changeset
358 AUDDBG("f: input_read_tag\n");
2214
9a869d4bb0d3 make use of AUDDBG() for debug print out.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2142
diff changeset
359
1687
d158ce84fda7 Modified for Tuplez/plugin API changes.
Matti Hamalainen <ccr@tnsp.org>
parents: 1485
diff changeset
360 if (info->tuple != NULL)
1976
5fa26178eaef s/tuple_/aud_tuple_/g
William Pitcock <nenolod@atheme.org>
parents: 1709
diff changeset
361 aud_tuple_free(info->tuple);
2513
a4629703edc3 Remove completely wtf pointer nulling. Variables don't magically change
Matti Hamalainen <ccr@tnsp.org>
parents: 2512
diff changeset
362
1976
5fa26178eaef s/tuple_/aud_tuple_/g
William Pitcock <nenolod@atheme.org>
parents: 1709
diff changeset
363 tuple = aud_tuple_new_from_filename(info->filename);
1687
d158ce84fda7 Modified for Tuplez/plugin API changes.
Matti Hamalainen <ccr@tnsp.org>
parents: 1485
diff changeset
364 info->tuple = tuple;
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
365
776
8366ad444313 [svn] - by unknown reason, http connection via proxy server needs a transfer stop after tag retrieving.
yaz
parents: 775
diff changeset
366 if(info->infile) {
1978
fa9f85cebade s/vfs_/aud_vfs_/g
William Pitcock <nenolod@atheme.org>
parents: 1976
diff changeset
367 curpos = aud_vfs_ftell(info->infile);
773
22c82f3c0411 [svn] - reduce connection latency to http stream.
yaz
parents: 768
diff changeset
368 info->id3file = id3_file_vfsopen(info->infile, ID3_FILE_MODE_READONLY);
776
8366ad444313 [svn] - by unknown reason, http connection via proxy server needs a transfer stop after tag retrieving.
yaz
parents: 775
diff changeset
369 }
1328
38fb3bb3e21e - make probing for tuple completely reuse fd.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 1277
diff changeset
370 else {
775
a24cc8848b9a [svn] - with fixed curl, read id3 tag over network works now.
yaz
parents: 773
diff changeset
371 info->id3file = id3_file_open(info->filename, ID3_FILE_MODE_READONLY);
1328
38fb3bb3e21e - make probing for tuple completely reuse fd.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 1277
diff changeset
372 }
773
22c82f3c0411 [svn] - reduce connection latency to http stream.
yaz
parents: 768
diff changeset
373
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
374 if (!info->id3file) {
2276
d25cd7e7eddb append '\n' to format string for AUDDBG()
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2214
diff changeset
375 AUDDBG("read_tag: no id3file\n");
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
376 return;
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
377 }
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
378
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
379 info->tag = id3_file_tag(info->id3file);
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
380 if (!info->tag) {
2276
d25cd7e7eddb append '\n' to format string for AUDDBG()
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2214
diff changeset
381 AUDDBG("read_tag: no tag\n");
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
382 return;
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
383 }
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
384
1687
d158ce84fda7 Modified for Tuplez/plugin API changes.
Matti Hamalainen <ccr@tnsp.org>
parents: 1485
diff changeset
385 input_set_and_free_tag(info->tag, tuple, ID3_FRAME_ARTIST, FIELD_ARTIST);
d158ce84fda7 Modified for Tuplez/plugin API changes.
Matti Hamalainen <ccr@tnsp.org>
parents: 1485
diff changeset
386 input_set_and_free_tag(info->tag, tuple, ID3_FRAME_TITLE, FIELD_TITLE);
d158ce84fda7 Modified for Tuplez/plugin API changes.
Matti Hamalainen <ccr@tnsp.org>
parents: 1485
diff changeset
387 input_set_and_free_tag(info->tag, tuple, ID3_FRAME_ALBUM, FIELD_ALBUM);
d158ce84fda7 Modified for Tuplez/plugin API changes.
Matti Hamalainen <ccr@tnsp.org>
parents: 1485
diff changeset
388 input_set_and_free_tag(info->tag, tuple, ID3_FRAME_GENRE, FIELD_GENRE);
d158ce84fda7 Modified for Tuplez/plugin API changes.
Matti Hamalainen <ccr@tnsp.org>
parents: 1485
diff changeset
389 input_set_and_free_tag(info->tag, tuple, ID3_FRAME_COMMENT, FIELD_COMMENT);
1428
4993976d7ed0 madplug: tuple API changes
William Pitcock <nenolod@atheme-project.org>
parents: 1328
diff changeset
390
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
391 string = input_id3_get_string(info->tag, ID3_FRAME_TRACK);
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
392 if (string) {
1976
5fa26178eaef s/tuple_/aud_tuple_/g
William Pitcock <nenolod@atheme.org>
parents: 1709
diff changeset
393 aud_tuple_associate_int(tuple, FIELD_TRACK_NUMBER, NULL, atoi(string));
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
394 g_free(string);
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
395 }
1428
4993976d7ed0 madplug: tuple API changes
William Pitcock <nenolod@atheme-project.org>
parents: 1328
diff changeset
396
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
397 // year
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
398 string = input_id3_get_string(info->tag, ID3_FRAME_YEAR); //TDRC
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
399 if (!string)
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
400 string = input_id3_get_string(info->tag, "TYER");
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
401
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
402 if (string) {
1976
5fa26178eaef s/tuple_/aud_tuple_/g
William Pitcock <nenolod@atheme.org>
parents: 1709
diff changeset
403 aud_tuple_associate_int(tuple, FIELD_YEAR, NULL, atoi(string));
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
404 g_free(string);
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
405 }
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
406
738
6ea974a229a8 [svn] - add read/write support for TLEN frame.
yaz
parents: 727
diff changeset
407 // length
6ea974a229a8 [svn] - add read/write support for TLEN frame.
yaz
parents: 727
diff changeset
408 string = input_id3_get_string(info->tag, "TLEN");
2346
78a0e19530e2 allow madplug to compute mp3 duration when TLEN field is invalid. patch by Russell Yanofsky.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2341
diff changeset
409 if (string && atoi(string)) {
1976
5fa26178eaef s/tuple_/aud_tuple_/g
William Pitcock <nenolod@atheme.org>
parents: 1709
diff changeset
410 aud_tuple_associate_int(tuple, FIELD_LENGTH, NULL, atoi(string));
2276
d25cd7e7eddb append '\n' to format string for AUDDBG()
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2214
diff changeset
411 AUDDBG("input_read_tag: TLEN = %d\n", atoi(string));
738
6ea974a229a8 [svn] - add read/write support for TLEN frame.
yaz
parents: 727
diff changeset
412 g_free(string);
1709
0d5f7629171f Madplug didn't always calculate song length when needed, fixed.
Matti Hamalainen <ccr@tnsp.org>
parents: 1687
diff changeset
413 } else
1976
5fa26178eaef s/tuple_/aud_tuple_/g
William Pitcock <nenolod@atheme.org>
parents: 1709
diff changeset
414 aud_tuple_associate_int(tuple, FIELD_LENGTH, NULL, -1);
1277
e7cd962732cb file_name and file_path in a tuple should be unescaped.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 997
diff changeset
415
1976
5fa26178eaef s/tuple_/aud_tuple_/g
William Pitcock <nenolod@atheme.org>
parents: 1709
diff changeset
416 aud_tuple_associate_string(tuple, FIELD_CODEC, NULL, "MPEG Audio (MP3)");
5fa26178eaef s/tuple_/aud_tuple_/g
William Pitcock <nenolod@atheme.org>
parents: 1709
diff changeset
417 aud_tuple_associate_string(tuple, FIELD_QUALITY, NULL, "lossy");
1428
4993976d7ed0 madplug: tuple API changes
William Pitcock <nenolod@atheme-project.org>
parents: 1328
diff changeset
418
2341
59addab003d7 - reworked replaygain to use individual pre-gain for the files with RG info and the rest.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2334
diff changeset
419 info->title = aud_tuple_formatter_make_title_string(tuple, audmad_config->title_override == TRUE ?
59addab003d7 - reworked replaygain to use individual pre-gain for the files with RG info and the rest.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2334
diff changeset
420 audmad_config->id3_format : aud_get_gentitle_format());
765
2430c9773fa7 [svn] - determine whether stream is seekable or not by checking duration. it is safe to use with proxy.
yaz
parents: 755
diff changeset
421
776
8366ad444313 [svn] - by unknown reason, http connection via proxy server needs a transfer stop after tag retrieving.
yaz
parents: 775
diff changeset
422 // for connection via proxy, we have to stop transfer once. I can't explain the reason.
791
91d2b302f479 [svn] - only perform vfs fseek against info::infile if it is available.
nenolod
parents: 789
diff changeset
423 if (info->infile != NULL) {
1978
fa9f85cebade s/vfs_/aud_vfs_/g
William Pitcock <nenolod@atheme.org>
parents: 1976
diff changeset
424 aud_vfs_fseek(info->infile, -1, SEEK_SET); // an impossible request
fa9f85cebade s/vfs_/aud_vfs_/g
William Pitcock <nenolod@atheme.org>
parents: 1976
diff changeset
425 aud_vfs_fseek(info->infile, curpos, SEEK_SET);
791
91d2b302f479 [svn] - only perform vfs fseek against info::infile if it is available.
nenolod
parents: 789
diff changeset
426 }
776
8366ad444313 [svn] - by unknown reason, http connection via proxy server needs a transfer stop after tag retrieving.
yaz
parents: 775
diff changeset
427
2276
d25cd7e7eddb append '\n' to format string for AUDDBG()
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2214
diff changeset
428 AUDDBG("e: input_read_tag\n");
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
429 }
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
430
2341
59addab003d7 - reworked replaygain to use individual pre-gain for the files with RG info and the rest.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2334
diff changeset
431 void
59addab003d7 - reworked replaygain to use individual pre-gain for the files with RG info and the rest.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2334
diff changeset
432 input_process_remote_metadata(struct mad_info_t *info)
768
1d3f70ac6b31 [svn] - remote metadata handling is moved into input_process_remote_metadata(). this function converts string into utf-8 if necessary (mainly for zina).
yaz
parents: 765
diff changeset
433 {
1428
4993976d7ed0 madplug: tuple API changes
William Pitcock <nenolod@atheme-project.org>
parents: 1328
diff changeset
434 gboolean metadata = FALSE;
4993976d7ed0 madplug: tuple API changes
William Pitcock <nenolod@atheme-project.org>
parents: 1328
diff changeset
435
768
1d3f70ac6b31 [svn] - remote metadata handling is moved into input_process_remote_metadata(). this function converts string into utf-8 if necessary (mainly for zina).
yaz
parents: 765
diff changeset
436 if(info->remote && mad_timer_count(info->duration, MAD_UNITS_SECONDS) <= 0){
2513
a4629703edc3 Remove completely wtf pointer nulling. Variables don't magically change
Matti Hamalainen <ccr@tnsp.org>
parents: 2512
diff changeset
437 gchar *tmp;
2214
9a869d4bb0d3 make use of AUDDBG() for debug print out.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2142
diff changeset
438
773
22c82f3c0411 [svn] - reduce connection latency to http stream.
yaz
parents: 768
diff changeset
439 #ifdef DEBUG_INTENSIVELY
2276
d25cd7e7eddb append '\n' to format string for AUDDBG()
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2214
diff changeset
440 AUDDBG("process_remote_meta\n");
773
22c82f3c0411 [svn] - reduce connection latency to http stream.
yaz
parents: 768
diff changeset
441 #endif
768
1d3f70ac6b31 [svn] - remote metadata handling is moved into input_process_remote_metadata(). this function converts string into utf-8 if necessary (mainly for zina).
yaz
parents: 765
diff changeset
442 g_free(info->title);
1d3f70ac6b31 [svn] - remote metadata handling is moved into input_process_remote_metadata(). this function converts string into utf-8 if necessary (mainly for zina).
yaz
parents: 765
diff changeset
443 info->title = NULL;
1976
5fa26178eaef s/tuple_/aud_tuple_/g
William Pitcock <nenolod@atheme.org>
parents: 1709
diff changeset
444 aud_tuple_disassociate(info->tuple, FIELD_TITLE, NULL);
5fa26178eaef s/tuple_/aud_tuple_/g
William Pitcock <nenolod@atheme.org>
parents: 1709
diff changeset
445 aud_tuple_disassociate(info->tuple, FIELD_ALBUM, NULL);
768
1d3f70ac6b31 [svn] - remote metadata handling is moved into input_process_remote_metadata(). this function converts string into utf-8 if necessary (mainly for zina).
yaz
parents: 765
diff changeset
446
1978
fa9f85cebade s/vfs_/aud_vfs_/g
William Pitcock <nenolod@atheme.org>
parents: 1976
diff changeset
447 tmp = aud_vfs_get_metadata(info->infile, "track-name");
768
1d3f70ac6b31 [svn] - remote metadata handling is moved into input_process_remote_metadata(). this function converts string into utf-8 if necessary (mainly for zina).
yaz
parents: 765
diff changeset
448 if(tmp){
1428
4993976d7ed0 madplug: tuple API changes
William Pitcock <nenolod@atheme-project.org>
parents: 1328
diff changeset
449 metadata = TRUE;
2513
a4629703edc3 Remove completely wtf pointer nulling. Variables don't magically change
Matti Hamalainen <ccr@tnsp.org>
parents: 2512
diff changeset
450 gchar *scratch = aud_str_to_utf8(tmp);
1976
5fa26178eaef s/tuple_/aud_tuple_/g
William Pitcock <nenolod@atheme.org>
parents: 1709
diff changeset
451 aud_tuple_associate_string(info->tuple, FIELD_TITLE, NULL, scratch);
1428
4993976d7ed0 madplug: tuple API changes
William Pitcock <nenolod@atheme-project.org>
parents: 1328
diff changeset
452 g_free(scratch);
768
1d3f70ac6b31 [svn] - remote metadata handling is moved into input_process_remote_metadata(). this function converts string into utf-8 if necessary (mainly for zina).
yaz
parents: 765
diff changeset
453 g_free(tmp);
1d3f70ac6b31 [svn] - remote metadata handling is moved into input_process_remote_metadata(). this function converts string into utf-8 if necessary (mainly for zina).
yaz
parents: 765
diff changeset
454 }
1d3f70ac6b31 [svn] - remote metadata handling is moved into input_process_remote_metadata(). this function converts string into utf-8 if necessary (mainly for zina).
yaz
parents: 765
diff changeset
455
1978
fa9f85cebade s/vfs_/aud_vfs_/g
William Pitcock <nenolod@atheme.org>
parents: 1976
diff changeset
456 tmp = aud_vfs_get_metadata(info->infile, "stream-name");
768
1d3f70ac6b31 [svn] - remote metadata handling is moved into input_process_remote_metadata(). this function converts string into utf-8 if necessary (mainly for zina).
yaz
parents: 765
diff changeset
457 if(tmp){
1428
4993976d7ed0 madplug: tuple API changes
William Pitcock <nenolod@atheme-project.org>
parents: 1328
diff changeset
458 metadata = TRUE;
2513
a4629703edc3 Remove completely wtf pointer nulling. Variables don't magically change
Matti Hamalainen <ccr@tnsp.org>
parents: 2512
diff changeset
459 gchar *scratch = aud_str_to_utf8(tmp);
1976
5fa26178eaef s/tuple_/aud_tuple_/g
William Pitcock <nenolod@atheme.org>
parents: 1709
diff changeset
460 aud_tuple_associate_string(info->tuple, FIELD_ALBUM, NULL, scratch);
5fa26178eaef s/tuple_/aud_tuple_/g
William Pitcock <nenolod@atheme.org>
parents: 1709
diff changeset
461 aud_tuple_associate_string(info->tuple, -1, "stream", scratch);
1428
4993976d7ed0 madplug: tuple API changes
William Pitcock <nenolod@atheme-project.org>
parents: 1328
diff changeset
462 g_free(scratch);
768
1d3f70ac6b31 [svn] - remote metadata handling is moved into input_process_remote_metadata(). this function converts string into utf-8 if necessary (mainly for zina).
yaz
parents: 765
diff changeset
463 g_free(tmp);
1d3f70ac6b31 [svn] - remote metadata handling is moved into input_process_remote_metadata(). this function converts string into utf-8 if necessary (mainly for zina).
yaz
parents: 765
diff changeset
464 }
1d3f70ac6b31 [svn] - remote metadata handling is moved into input_process_remote_metadata(). this function converts string into utf-8 if necessary (mainly for zina).
yaz
parents: 765
diff changeset
465
1428
4993976d7ed0 madplug: tuple API changes
William Pitcock <nenolod@atheme-project.org>
parents: 1328
diff changeset
466 if (metadata)
2142
76a19617d685 bugfixed the way shoutcast is formatted ;p
William Pitcock <nenolod@atheme.org>
parents: 2055
diff changeset
467 tmp = aud_tuple_formatter_process_string(info->tuple, "${?title:${title}}${?stream: (${stream})}");
1328
38fb3bb3e21e - make probing for tuple completely reuse fd.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 1277
diff changeset
468 else {
38fb3bb3e21e - make probing for tuple completely reuse fd.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 1277
diff changeset
469 gchar *realfn = g_filename_from_uri(info->filename, NULL, NULL);
38fb3bb3e21e - make probing for tuple completely reuse fd.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 1277
diff changeset
470 gchar *tmp2 = g_path_get_basename(realfn ? realfn : info->filename); // info->filename is uri. --yaz
2050
2ffc6a69fcd1 string API calls -> vtable
William Pitcock <nenolod@atheme.org>
parents: 1985
diff changeset
471 tmp = aud_str_to_utf8(tmp2);
2513
a4629703edc3 Remove completely wtf pointer nulling. Variables don't magically change
Matti Hamalainen <ccr@tnsp.org>
parents: 2512
diff changeset
472 g_free(tmp2);
a4629703edc3 Remove completely wtf pointer nulling. Variables don't magically change
Matti Hamalainen <ccr@tnsp.org>
parents: 2512
diff changeset
473 g_free(realfn);
1328
38fb3bb3e21e - make probing for tuple completely reuse fd.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 1277
diff changeset
474 // tmp = g_strdup(g_basename(info->filename)); //XXX maybe ok. --yaz
38fb3bb3e21e - make probing for tuple completely reuse fd.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 1277
diff changeset
475 }
768
1d3f70ac6b31 [svn] - remote metadata handling is moved into input_process_remote_metadata(). this function converts string into utf-8 if necessary (mainly for zina).
yaz
parents: 765
diff changeset
476
797
19e08e104ba6 [svn] - madplug: do not call set_info repeatedly in input_process_remote_metadata, only call it when the built title string actually differs from the previous one
giacomo
parents: 791
diff changeset
477 /* call set_info only if tmp is different from prev_tmp */
19e08e104ba6 [svn] - madplug: do not call set_info repeatedly in input_process_remote_metadata, only call it when the built title string actually differs from the previous one
giacomo
parents: 791
diff changeset
478 if ( ( ( info->prev_title != NULL ) && ( strcmp(info->prev_title,tmp) ) ) ||
19e08e104ba6 [svn] - madplug: do not call set_info repeatedly in input_process_remote_metadata, only call it when the built title string actually differs from the previous one
giacomo
parents: 791
diff changeset
479 ( info->prev_title == NULL ) )
19e08e104ba6 [svn] - madplug: do not call set_info repeatedly in input_process_remote_metadata, only call it when the built title string actually differs from the previous one
giacomo
parents: 791
diff changeset
480 {
1985
a260bd1beef0 use set_params() in madplug
William Pitcock <nenolod@atheme.org>
parents: 1978
diff changeset
481 info->playback->set_params(info->playback, tmp,
797
19e08e104ba6 [svn] - madplug: do not call set_info repeatedly in input_process_remote_metadata, only call it when the built title string actually differs from the previous one
giacomo
parents: 791
diff changeset
482 -1, // indicate the stream is unseekable
19e08e104ba6 [svn] - madplug: do not call set_info repeatedly in input_process_remote_metadata, only call it when the built title string actually differs from the previous one
giacomo
parents: 791
diff changeset
483 info->bitrate, info->freq, info->channels);
19e08e104ba6 [svn] - madplug: do not call set_info repeatedly in input_process_remote_metadata, only call it when the built title string actually differs from the previous one
giacomo
parents: 791
diff changeset
484 if (info->prev_title)
19e08e104ba6 [svn] - madplug: do not call set_info repeatedly in input_process_remote_metadata, only call it when the built title string actually differs from the previous one
giacomo
parents: 791
diff changeset
485 g_free(info->prev_title);
19e08e104ba6 [svn] - madplug: do not call set_info repeatedly in input_process_remote_metadata, only call it when the built title string actually differs from the previous one
giacomo
parents: 791
diff changeset
486 info->prev_title = g_strdup(tmp);
19e08e104ba6 [svn] - madplug: do not call set_info repeatedly in input_process_remote_metadata, only call it when the built title string actually differs from the previous one
giacomo
parents: 791
diff changeset
487 }
19e08e104ba6 [svn] - madplug: do not call set_info repeatedly in input_process_remote_metadata, only call it when the built title string actually differs from the previous one
giacomo
parents: 791
diff changeset
488
768
1d3f70ac6b31 [svn] - remote metadata handling is moved into input_process_remote_metadata(). this function converts string into utf-8 if necessary (mainly for zina).
yaz
parents: 765
diff changeset
489 g_free(tmp);
1d3f70ac6b31 [svn] - remote metadata handling is moved into input_process_remote_metadata(). this function converts string into utf-8 if necessary (mainly for zina).
yaz
parents: 765
diff changeset
490 }
1d3f70ac6b31 [svn] - remote metadata handling is moved into input_process_remote_metadata(). this function converts string into utf-8 if necessary (mainly for zina).
yaz
parents: 765
diff changeset
491 }
1d3f70ac6b31 [svn] - remote metadata handling is moved into input_process_remote_metadata(). this function converts string into utf-8 if necessary (mainly for zina).
yaz
parents: 765
diff changeset
492
1d3f70ac6b31 [svn] - remote metadata handling is moved into input_process_remote_metadata(). this function converts string into utf-8 if necessary (mainly for zina).
yaz
parents: 765
diff changeset
493
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
494 /**
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
495 * Retrieve meta-information about URL.
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
496 * For local files this means ID3 tag etc.
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
497 */
2341
59addab003d7 - reworked replaygain to use individual pre-gain for the files with RG info and the rest.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2334
diff changeset
498 gboolean
59addab003d7 - reworked replaygain to use individual pre-gain for the files with RG info and the rest.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2334
diff changeset
499 input_get_info(struct mad_info_t *info, gboolean fast_scan)
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
500 {
2214
9a869d4bb0d3 make use of AUDDBG() for debug print out.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2142
diff changeset
501 #ifdef AUD_DEBUG
799
d200de50a1fc [svn] - convert filename into utf8 in debug messages.
yaz
parents: 797
diff changeset
502 gchar *tmp = g_filename_to_utf8(info->filename, -1, NULL, NULL, NULL);
2276
d25cd7e7eddb append '\n' to format string for AUDDBG()
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2214
diff changeset
503 AUDDBG("f: input_get_info: %s, fast_scan = %s\n", tmp, fast_scan ? "TRUE" : "FALSE");
799
d200de50a1fc [svn] - convert filename into utf8 in debug messages.
yaz
parents: 797
diff changeset
504 g_free(tmp);
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
505 #endif /* DEBUG */
738
6ea974a229a8 [svn] - add read/write support for TLEN frame.
yaz
parents: 727
diff changeset
506
773
22c82f3c0411 [svn] - reduce connection latency to http stream.
yaz
parents: 768
diff changeset
507 input_alloc_tag(info);
775
a24cc8848b9a [svn] - with fixed curl, read id3 tag over network works now.
yaz
parents: 773
diff changeset
508 input_read_tag(info);
773
22c82f3c0411 [svn] - reduce connection latency to http stream.
yaz
parents: 768
diff changeset
509
22c82f3c0411 [svn] - reduce connection latency to http stream.
yaz
parents: 768
diff changeset
510 if(!info->remote) { // reduce startup delay
2476
809736eb47d9 Some code sanitation and cleanups. Fixes some memory-access problems, but certain others still persist
Matti Hamalainen <ccr@tnsp.org>
parents: 2471
diff changeset
511 audmad_read_replaygain(info);
773
22c82f3c0411 [svn] - reduce connection latency to http stream.
yaz
parents: 768
diff changeset
512 }
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
513
738
6ea974a229a8 [svn] - add read/write support for TLEN frame.
yaz
parents: 727
diff changeset
514 /* scan mp3 file, decoding headers */
611
3f7a52adfe0e [svn] merge recent changes from yaz's branch.
yaz
parents: 610
diff changeset
515 if (scan_file(info, fast_scan) == FALSE) {
2276
d25cd7e7eddb append '\n' to format string for AUDDBG()
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2214
diff changeset
516 AUDDBG("input_get_info: scan_file failed\n");
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
517 return FALSE;
611
3f7a52adfe0e [svn] merge recent changes from yaz's branch.
yaz
parents: 610
diff changeset
518 }
738
6ea974a229a8 [svn] - add read/write support for TLEN frame.
yaz
parents: 727
diff changeset
519
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
520 /* reset the input file to the start */
1978
fa9f85cebade s/vfs_/aud_vfs_/g
William Pitcock <nenolod@atheme.org>
parents: 1976
diff changeset
521 aud_vfs_fseek(info->infile, 0, SEEK_SET);
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
522 info->offset = 0;
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
523
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
524 /* use the filename for the title as a last resort */
611
3f7a52adfe0e [svn] merge recent changes from yaz's branch.
yaz
parents: 610
diff changeset
525 if (!info->title) {
1328
38fb3bb3e21e - make probing for tuple completely reuse fd.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 1277
diff changeset
526 char *pos = strrchr(info->filename, DIR_SEPARATOR); //XXX info->filename is uri. --yaz
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
527 if (pos)
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
528 info->title = g_strdup(pos + 1);
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
529 else
1328
38fb3bb3e21e - make probing for tuple completely reuse fd.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 1277
diff changeset
530 info->title = g_strdup(info->filename); //XXX info->filename is uri. --yaz
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
531 }
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
532
2276
d25cd7e7eddb append '\n' to format string for AUDDBG()
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2214
diff changeset
533 AUDDBG("e: input_get_info\n");
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
534 return TRUE;
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
535 }
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
536
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
537
611
3f7a52adfe0e [svn] merge recent changes from yaz's branch.
yaz
parents: 610
diff changeset
538
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
539 /**
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
540 * Read data from the source given my madinfo into the buffer
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
541 * provided. Return the number of bytes read.
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
542 * @return 0 on EOF
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
543 * @return -1 on error
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
544 */
611
3f7a52adfe0e [svn] merge recent changes from yaz's branch.
yaz
parents: 610
diff changeset
545 // this function may be called before info->playback initialized.
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
546 int
768
1d3f70ac6b31 [svn] - remote metadata handling is moved into input_process_remote_metadata(). this function converts string into utf-8 if necessary (mainly for zina).
yaz
parents: 765
diff changeset
547 input_get_data(struct mad_info_t *info, guchar * buffer,
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
548 int buffer_size)
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
549 {
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
550 int len = 0;
611
3f7a52adfe0e [svn] merge recent changes from yaz's branch.
yaz
parents: 610
diff changeset
551 #ifdef DEBUG_INTENSIVELY
2276
d25cd7e7eddb append '\n' to format string for AUDDBG()
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2214
diff changeset
552 AUDDBG ("f: input_get_data: %d\n", buffer_size);
611
3f7a52adfe0e [svn] merge recent changes from yaz's branch.
yaz
parents: 610
diff changeset
553 #endif
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
554 /* simply read to data from the file */
1978
fa9f85cebade s/vfs_/aud_vfs_/g
William Pitcock <nenolod@atheme.org>
parents: 1976
diff changeset
555 len = aud_vfs_fread(buffer, 1, buffer_size, info->infile); //aud_vfs_fread returns num of elements.
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
556
789
354c69a939bc [svn] revising vfs_fread() check code.
yaz
parents: 788
diff changeset
557 if(len == 0 && info->playback){
354c69a939bc [svn] revising vfs_fread() check code.
yaz
parents: 788
diff changeset
558 info->playback->eof = TRUE;
611
3f7a52adfe0e [svn] merge recent changes from yaz's branch.
yaz
parents: 610
diff changeset
559 }
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
560
611
3f7a52adfe0e [svn] merge recent changes from yaz's branch.
yaz
parents: 610
diff changeset
561 #ifdef DEBUG_INTENSIVELY
2276
d25cd7e7eddb append '\n' to format string for AUDDBG()
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2214
diff changeset
562 AUDDBG ("e: input_get_data: size=%d offset=%d\n", len, info->offset);
611
3f7a52adfe0e [svn] merge recent changes from yaz's branch.
yaz
parents: 610
diff changeset
563 #endif
2214
9a869d4bb0d3 make use of AUDDBG() for debug print out.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2142
diff changeset
564
768
1d3f70ac6b31 [svn] - remote metadata handling is moved into input_process_remote_metadata(). this function converts string into utf-8 if necessary (mainly for zina).
yaz
parents: 765
diff changeset
565 info->offset += len;
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
566 return len;
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
567 }
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
568
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
569 /**
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
570 * Free up all mad_info_t related resourses.
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
571 */
2341
59addab003d7 - reworked replaygain to use individual pre-gain for the files with RG info and the rest.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2334
diff changeset
572 gboolean
59addab003d7 - reworked replaygain to use individual pre-gain for the files with RG info and the rest.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2334
diff changeset
573 input_term(struct mad_info_t * info)
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
574 {
2276
d25cd7e7eddb append '\n' to format string for AUDDBG()
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2214
diff changeset
575 AUDDBG("f: input_term\n");
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
576
2512
1f6b5f5768e2 Remove some completely useless null-pointer checks, g_free() checks the pointer anyway.
Matti Hamalainen <ccr@tnsp.org>
parents: 2476
diff changeset
577 g_free(info->title);
1f6b5f5768e2 Remove some completely useless null-pointer checks, g_free() checks the pointer anyway.
Matti Hamalainen <ccr@tnsp.org>
parents: 2476
diff changeset
578 g_free(info->url);
1f6b5f5768e2 Remove some completely useless null-pointer checks, g_free() checks the pointer anyway.
Matti Hamalainen <ccr@tnsp.org>
parents: 2476
diff changeset
579 g_free(info->filename);
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
580 if (info->infile)
1978
fa9f85cebade s/vfs_/aud_vfs_/g
William Pitcock <nenolod@atheme.org>
parents: 1976
diff changeset
581 aud_vfs_fclose(info->infile);
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
582 if (info->id3file)
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
583 id3_file_close(info->id3file);
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
584
2512
1f6b5f5768e2 Remove some completely useless null-pointer checks, g_free() checks the pointer anyway.
Matti Hamalainen <ccr@tnsp.org>
parents: 2476
diff changeset
585 g_free(info->replaygain_album_str);
1f6b5f5768e2 Remove some completely useless null-pointer checks, g_free() checks the pointer anyway.
Matti Hamalainen <ccr@tnsp.org>
parents: 2476
diff changeset
586 g_free(info->replaygain_track_str);
1f6b5f5768e2 Remove some completely useless null-pointer checks, g_free() checks the pointer anyway.
Matti Hamalainen <ccr@tnsp.org>
parents: 2476
diff changeset
587 g_free(info->replaygain_album_peak_str);
1f6b5f5768e2 Remove some completely useless null-pointer checks, g_free() checks the pointer anyway.
Matti Hamalainen <ccr@tnsp.org>
parents: 2476
diff changeset
588 g_free(info->replaygain_track_peak_str);
1f6b5f5768e2 Remove some completely useless null-pointer checks, g_free() checks the pointer anyway.
Matti Hamalainen <ccr@tnsp.org>
parents: 2476
diff changeset
589 g_free(info->mp3gain_undo_str);
1f6b5f5768e2 Remove some completely useless null-pointer checks, g_free() checks the pointer anyway.
Matti Hamalainen <ccr@tnsp.org>
parents: 2476
diff changeset
590 g_free(info->mp3gain_minmax_str);
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
591
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
592 if (info->tuple) {
1976
5fa26178eaef s/tuple_/aud_tuple_/g
William Pitcock <nenolod@atheme.org>
parents: 1709
diff changeset
593 aud_tuple_free(info->tuple);
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
594 info->tuple = NULL;
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
595 }
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
596
2512
1f6b5f5768e2 Remove some completely useless null-pointer checks, g_free() checks the pointer anyway.
Matti Hamalainen <ccr@tnsp.org>
parents: 2476
diff changeset
597 g_free(info->prev_title);
797
19e08e104ba6 [svn] - madplug: do not call set_info repeatedly in input_process_remote_metadata, only call it when the built title string actually differs from the previous one
giacomo
parents: 791
diff changeset
598
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
599 /* set everything to zero in case it gets used again. */
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
600 memset(info, 0, sizeof(struct mad_info_t));
2214
9a869d4bb0d3 make use of AUDDBG() for debug print out.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2142
diff changeset
601
2276
d25cd7e7eddb append '\n' to format string for AUDDBG()
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2214
diff changeset
602 AUDDBG("e: input_term\n");
2214
9a869d4bb0d3 make use of AUDDBG() for debug print out.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 2142
diff changeset
603
610
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
604 return TRUE;
862190d39e00 [svn] - add madplug. It is not yet hooked up, I'll do that later.
nenolod
parents:
diff changeset
605 }