View | Details | Raw Unified | Return to bug 10935
Collapse All | Expand All

(-)mpfc-flac-0.1.orig/configure.ac (-1 / +1 lines)
Lines 13-19 Link Here
13
AC_SUBST(prefix)
13
AC_SUBST(prefix)
14
14
15
AC_CHECK_HEADERS([FLAC/all.h],,[AC_MSG_ERROR(*** Can't find FLAC/all.h ***)])
15
AC_CHECK_HEADERS([FLAC/all.h],,[AC_MSG_ERROR(*** Can't find FLAC/all.h ***)])
16
AC_CHECK_LIB(FLAC, FLAC__file_decoder_process_single,,[AC_MSG_ERROR(*** Can't find FLAC library ***)])
16
AC_CHECK_LIB(FLAC, FLAC__stream_decoder_process_single,,[AC_MSG_ERROR(*** Can't find FLAC library ***)])
17
FLAC_LIBS="-lFLAC"
17
FLAC_LIBS="-lFLAC"
18
AC_SUBST(FLAC_LIBS)
18
AC_SUBST(FLAC_LIBS)
19
19
(-)mpfc-flac-0.1.orig/src/flac.c (+90 lines)
Lines 23-28 Link Here
23
//#include "config.h"
23
//#include "config.h"
24
#define __MPFC_OUTER__
24
#define __MPFC_OUTER__
25
#include <FLAC/all.h>
25
#include <FLAC/all.h>
26
27
/* FLAC 1.1.3 has FLAC_API_VERSION_CURRENT == 8 */
28
#if !defined(FLAC_API_VERSION_CURRENT) || FLAC_API_VERSION_CURRENT < 8
29
#define LEGACY_FLAC
30
#else
31
#undef LEGACY_FLAC
32
#endif
33
26
#include <sys/soundcard.h>
34
#include <sys/soundcard.h>
27
#include "types.h"
35
#include "types.h"
28
#include "inp.h"
36
#include "inp.h"
Lines 48-54 Link Here
48
static int flac_max_bs, flac_bpp;
56
static int flac_max_bs, flac_bpp;
49
57
50
/* Decoder object */
58
/* Decoder object */
59
#ifdef LEGACY_FLAC
51
static FLAC__FileDecoder *flac_decoder = NULL;
60
static FLAC__FileDecoder *flac_decoder = NULL;
61
#else
62
static FLAC__StreamDecoder *flac_decoder = NULL;
63
#endif
52
64
53
/* Buffer for writing decoded stream */
65
/* Buffer for writing decoded stream */
54
static byte *flac_buf = NULL, *flac_buf_ptr = NULL;
66
static byte *flac_buf = NULL, *flac_buf_ptr = NULL;
Lines 71-77 Link Here
71
flac_client_data_t flac_client_data;
83
flac_client_data_t flac_client_data;
72
84
73
/* Write decoded data callback */
85
/* Write decoded data callback */
86
#ifdef LEGACY_FLAC
74
FLAC__StreamDecoderWriteStatus flac_write_callback( const FLAC__FileDecoder *decoder,
87
FLAC__StreamDecoderWriteStatus flac_write_callback( const FLAC__FileDecoder *decoder,
88
#else
89
FLAC__StreamDecoderWriteStatus flac_write_callback( const FLAC__StreamDecoder *decoder,
90
#endif
75
		const FLAC__Frame *frame, const FLAC__int32 * const buf[], void *client_data )
91
		const FLAC__Frame *frame, const FLAC__int32 * const buf[], void *client_data )
76
{
92
{
77
	int i, j;
93
	int i, j;
Lines 116-122 Link Here
116
} /* End of 'flac_write_callback' function */
132
} /* End of 'flac_write_callback' function */
117
133
118
/* Process metadata callback */
134
/* Process metadata callback */
135
#ifdef LEGACY_FLAC
119
void flac_metadata_callback( const FLAC__FileDecoder *decoder,
136
void flac_metadata_callback( const FLAC__FileDecoder *decoder,
137
#else
138
void flac_metadata_callback( const FLAC__StreamDecoder *decoder,
139
#endif
120
		const FLAC__StreamMetadata *metadata, void *client_data )
140
		const FLAC__StreamMetadata *metadata, void *client_data )
121
{
141
{
122
	flac_client_data_t *cd = (flac_client_data_t *)client_data;
142
	flac_client_data_t *cd = (flac_client_data_t *)client_data;
Lines 144-174 Link Here
144
} /* End of 'flac_metadata_callback' function */
164
} /* End of 'flac_metadata_callback' function */
145
165
146
/* Error callback */
166
/* Error callback */
167
#ifdef LEGACY_FLAC
147
void flac_error_callback( const FLAC__FileDecoder *decoder,
168
void flac_error_callback( const FLAC__FileDecoder *decoder,
169
#else
170
void flac_error_callback( const FLAC__StreamDecoder *decoder,
171
#endif
148
		FLAC__StreamDecoderErrorStatus status, void *client_data )
172
		FLAC__StreamDecoderErrorStatus status, void *client_data )
149
{
173
{
150
	logger_error(flac_log, 0, "flac: got stream decoder error %d", status);
174
	logger_error(flac_log, 0, "flac: got stream decoder error %d", status);
151
} /* End of 'flac_error_callback' function */
175
} /* End of 'flac_error_callback' function */
152
176
153
/* Read file metadata */
177
/* Read file metadata */
178
#ifdef LEGACY_FLAC
154
FLAC__FileDecoder *flac_read_metadata( char *filename, void *client_data )
179
FLAC__FileDecoder *flac_read_metadata( char *filename, void *client_data )
155
{
180
{
156
	FLAC__FileDecoderState fds;
181
	FLAC__FileDecoderState fds;
157
	int buf_size;
182
	int buf_size;
158
	FLAC__FileDecoder *decoder;
183
	FLAC__FileDecoder *decoder;
184
#else
185
FLAC__StreamDecoder *flac_read_metadata( char *filename, void *client_data )
186
{
187
	FLAC__StreamDecoderState fds;
188
	int buf_size;
189
	FLAC__StreamDecoder *decoder;
190
#endif
159
191
160
	logger_debug(flac_log, "flac: flac_read_metadata(%s)", filename);
192
	logger_debug(flac_log, "flac: flac_read_metadata(%s)", filename);
161
193
162
	/* Initialize decoder */
194
	/* Initialize decoder */
195
#ifdef LEGACY_FLAC
163
	decoder = FLAC__file_decoder_new();
196
	decoder = FLAC__file_decoder_new();
164
	logger_debug(flac_log, "flac: FLAC__file_decoder_new returned %p", 
197
	logger_debug(flac_log, "flac: FLAC__file_decoder_new returned %p", 
165
			decoder);
198
			decoder);
199
#else
200
	decoder = FLAC__stream_decoder_new();
201
	logger_debug(flac_log, "flac: FLAC__stream_decoder_new returned %p", decoder);
202
#endif
166
	if (decoder == NULL)
203
	if (decoder == NULL)
167
	{
204
	{
168
		logger_error(flac_log, 0, "flac: FLAC__file_decoder_new failed");
205
		logger_error(flac_log, 0, "flac: FLAC__file_decoder_new failed");
169
		FLAC__file_decoder_delete(decoder);
206
		FLAC__file_decoder_delete(decoder);
170
		return NULL;
207
		return NULL;
171
	}
208
	}
209
#ifdef LEGACY_FLAC
172
	if (!FLAC__file_decoder_set_client_data(decoder, client_data))
210
	if (!FLAC__file_decoder_set_client_data(decoder, client_data))
173
	{
211
	{
174
		logger_error(flac_log, 0, "flac: FLAC__file_decoder_set_client_data failed");
212
		logger_error(flac_log, 0, "flac: FLAC__file_decoder_set_client_data failed");
Lines 206-221 Link Here
206
	{
244
	{
207
		logger_error(flac_log, 0, "flac: FLAC__file_decoder_init failed");
245
		logger_error(flac_log, 0, "flac: FLAC__file_decoder_init failed");
208
		FLAC__file_decoder_delete(decoder);
246
		FLAC__file_decoder_delete(decoder);
247
#else
248
	fds = FLAC__stream_decoder_init_file(decoder, filename, flac_write_callback, flac_metadata_callback, flac_error_callback, client_data);
249
	logger_debug(flac_log, "flac: FLAC__stream_decoder_init_file returned %d", fds);
250
	if (fds != FLAC__STREAM_DECODER_INIT_STATUS_OK)
251
	{
252
		logger_error(flac_log, 0, "flac: FLAC__stream_decoder_init_file failed");
253
		FLAC__stream_decoder_delete(decoder);
254
#endif
209
		return NULL;
255
		return NULL;
210
	}
256
	}
211
257
212
	/* Read metadata */
258
	/* Read metadata */
259
#ifdef LEGACY_FLAC
213
	if (!FLAC__file_decoder_process_until_end_of_metadata(decoder))
260
	if (!FLAC__file_decoder_process_until_end_of_metadata(decoder))
214
	{
261
	{
215
		logger_error(flac_log, 0, 
262
		logger_error(flac_log, 0, 
216
				"flac: FLAC__file_decoder_process_until_end_of_metadata failed");
263
				"flac: FLAC__file_decoder_process_until_end_of_metadata failed");
217
		FLAC__file_decoder_finish(decoder);
264
		FLAC__file_decoder_finish(decoder);
218
		FLAC__file_decoder_delete(decoder);
265
		FLAC__file_decoder_delete(decoder);
266
#else
267
	if (!FLAC__stream_decoder_process_until_end_of_metadata(decoder))
268
	{
269
		logger_error(flac_log, 0, "flac: FLAC__stream_decoder_process_until_end_of_metadata failed");
270
		FLAC__stream_decoder_finish(decoder);
271
		FLAC__stream_decoder_delete(decoder);
272
#endif
219
		return NULL;
273
		return NULL;
220
	}
274
	}
221
	logger_debug(flac_log, "flac: Samplerate: %d, channels: %d, "
275
	logger_debug(flac_log, "flac: Samplerate: %d, channels: %d, "
Lines 227-233 Link Here
227
/* Start play function */
281
/* Start play function */
228
bool_t flac_start( char *filename )
282
bool_t flac_start( char *filename )
229
{
283
{
284
#ifdef LEGACY_FLAC
230
	FLAC__FileDecoderState fds;
285
	FLAC__FileDecoderState fds;
286
#else
287
	FLAC__StreamDecoderState fds;
288
#endif
231
	int buf_size;
289
	int buf_size;
232
290
233
	logger_debug(flac_log, "flac: flac_start(%s)", filename);
291
	logger_debug(flac_log, "flac: flac_start(%s)", filename);
Lines 256-263 Link Here
256
	if (flac_buf == NULL)
314
	if (flac_buf == NULL)
257
	{
315
	{
258
		logger_error(flac_log, 0, "flac: no enough memory");
316
		logger_error(flac_log, 0, "flac: no enough memory");
317
#ifdef LEGACY_FLAC
259
		FLAC__file_decoder_finish(flac_decoder);
318
		FLAC__file_decoder_finish(flac_decoder);
260
		FLAC__file_decoder_delete(flac_decoder);
319
		FLAC__file_decoder_delete(flac_decoder);
320
#else
321
		FLAC__stream_decoder_finish(flac_decoder);
322
		FLAC__stream_decoder_delete(flac_decoder);
323
#endif
261
		flac_decoder = NULL;
324
		flac_decoder = NULL;
262
		return FALSE;
325
		return FALSE;
263
	}
326
	}
Lines 281-288 Link Here
281
344
282
	if (flac_decoder != NULL)
345
	if (flac_decoder != NULL)
283
	{
346
	{
347
#ifdef LEGACY_FLAC
284
		FLAC__file_decoder_finish(flac_decoder);
348
		FLAC__file_decoder_finish(flac_decoder);
285
		FLAC__file_decoder_delete(flac_decoder);
349
		FLAC__file_decoder_delete(flac_decoder);
350
#else
351
		FLAC__stream_decoder_finish(flac_decoder);
352
		FLAC__stream_decoder_delete(flac_decoder);
353
#endif
286
		flac_decoder = NULL;
354
		flac_decoder = NULL;
287
	}
355
	}
288
} /* End of 'flac_end' function */
356
} /* End of 'flac_end' function */
Lines 302-318 Link Here
302
		flac_buf_ptr = flac_buf;
370
		flac_buf_ptr = flac_buf;
303
		flac_buf_size = 0;
371
		flac_buf_size = 0;
304
372
373
#ifdef LEGACY_FLAC
305
		res = FLAC__file_decoder_seek_absolute(flac_decoder, 
374
		res = FLAC__file_decoder_seek_absolute(flac_decoder, 
375
#else
376
		res = FLAC__stream_decoder_seek_absolute(flac_decoder,
377
#endif
306
				flac_seek_pos * flac_freq);
378
				flac_seek_pos * flac_freq);
379
#ifdef LEGACY_FLAC
307
		logger_debug(flac_log, "flac: FLAC__file_decoder_seek_absolute returned %d", res);
380
		logger_debug(flac_log, "flac: FLAC__file_decoder_seek_absolute returned %d", res);
381
#else
382
		logger_debug(flac_log, "flac: FLAC__stream_decoder_seek_absolute returned %d", res);
383
#endif
308
		flac_seek_pos = -1;
384
		flac_seek_pos = -1;
309
	}
385
	}
310
386
311
	/* Read data */
387
	/* Read data */
312
	if (flac_buf_size == 0)
388
	if (flac_buf_size == 0)
313
	{
389
	{
390
#ifdef LEGACY_FLAC
314
		res = FLAC__file_decoder_process_single(flac_decoder);
391
		res = FLAC__file_decoder_process_single(flac_decoder);
315
		logger_debug(flac_log, "flac: FLAC__file_decoder_process_single returned %d", res);
392
		logger_debug(flac_log, "flac: FLAC__file_decoder_process_single returned %d", res);
393
#else
394
		res = FLAC__stream_decoder_process_single(flac_decoder);
395
		logger_debug(flac_log, "flac: FLAC__stream_decoder_process_single returned %d", res);
396
#endif
316
	}
397
	}
317
398
318
	/* Flush buffer */
399
	/* Flush buffer */
Lines 352-358 Link Here
352
/* Get song info */
433
/* Get song info */
353
song_info_t *flac_get_info( char *file_name, int *len )
434
song_info_t *flac_get_info( char *file_name, int *len )
354
{
435
{
436
#ifdef LEGACY_FLAC
355
	FLAC__FileDecoder *decoder;
437
	FLAC__FileDecoder *decoder;
438
#else
439
	FLAC__StreamDecoder *decoder;
440
#endif
356
	flac_client_data_t cd;
441
	flac_client_data_t cd;
357
442
358
	(*len) = 0;
443
	(*len) = 0;
Lines 367-374 Link Here
367
	(*len) = cd.m_length;
452
	(*len) = cd.m_length;
368
453
369
	/* Free memory */
454
	/* Free memory */
455
#ifdef LEGACY_FLAC
370
	FLAC__file_decoder_finish(decoder);
456
	FLAC__file_decoder_finish(decoder);
371
	FLAC__file_decoder_delete(decoder);
457
	FLAC__file_decoder_delete(decoder);
458
#else
459
	FLAC__stream_decoder_finish(decoder);
460
	FLAC__stream_decoder_delete(decoder);
461
#endif
372
	return NULL;
462
	return NULL;
373
} /* End of 'flac_get_info' function */
463
} /* End of 'flac_get_info' function */
374
464

Return to bug 10935