91005d0bd1
a stumbling block for audio/flac updates. Identical to what is currently in the upstream repository. Regen patches while here. ok naddy@
104 lines
3.9 KiB
Plaintext
104 lines
3.9 KiB
Plaintext
$OpenBSD: patch-src_in_flac_c,v 1.1 2007/09/08 16:25:06 mgrimm Exp $
|
|
--- src/in_flac.c.orig Sat Jul 31 19:52:24 2004
|
|
+++ src/in_flac.c Fri Sep 7 20:26:12 2007
|
|
@@ -40,14 +40,19 @@ typedef struct {
|
|
} flac_in_t;
|
|
|
|
/* -- static prototypes -- */
|
|
-static int ices_flac_readpcm (input_stream_t* self, size_t len,
|
|
- int16_t* left, int16_t* right);
|
|
+static ssize_t ices_flac_readpcm (input_stream_t* self, size_t len,
|
|
+ int16_t* left, int16_t* right);
|
|
static int ices_flac_close (input_stream_t* self);
|
|
|
|
/* -- FLAC callbacks -- */
|
|
+#if !defined(FLAC_API_VERSION_CURRENT) || FLAC_API_VERSION_CURRENT <= 7
|
|
+# define FLAC_BUFSIZE_TYPE unsigned
|
|
+#else
|
|
+# define FLAC_BUFSIZE_TYPE size_t
|
|
+#endif /* !FLAC_API_VERSION_CURRENT || FLAC_API_VERSION_CURRENT <= 7 */
|
|
static FLAC__StreamDecoderReadStatus
|
|
flac_read_cb(const FLAC__StreamDecoder* decoder, FLAC__byte buffer[],
|
|
- unsigned* bytes, void* client_data);
|
|
+ FLAC_BUFSIZE_TYPE* bytes, void* client_data);
|
|
static FLAC__StreamDecoderWriteStatus
|
|
flac_write_cb(const FLAC__StreamDecoder* decoder, const FLAC__Frame* frame,
|
|
const FLAC__int32* const buffer[], void* client_data);
|
|
@@ -76,18 +81,39 @@ ices_flac_open (input_stream_t* self, char* buf, size_
|
|
return -1;
|
|
}
|
|
|
|
+#if !defined(FLAC_API_VERSION_CURRENT) || FLAC_API_VERSION_CURRENT <= 7
|
|
FLAC__stream_decoder_set_read_callback(decoder, flac_read_cb);
|
|
FLAC__stream_decoder_set_write_callback(decoder, flac_write_cb);
|
|
FLAC__stream_decoder_set_metadata_callback(decoder, flac_metadata_cb);
|
|
FLAC__stream_decoder_set_error_callback(decoder, flac_error_cb);
|
|
+ FLAC__stream_decoder_set_client_data(decoder, self);
|
|
|
|
+ switch (FLAC__stream_decoder_init(decoder)) {
|
|
+ case FLAC__STREAM_DECODER_SEARCH_FOR_METADATA:
|
|
+ break;
|
|
+ case FLAC__STREAM_DECODER_MEMORY_ALLOCATION_ERROR:
|
|
+ ices_log_error("Could not allocate memory during FLAC decoder init");
|
|
+ goto errDecoder;
|
|
+ default:
|
|
+ ices_log_error("Unexpected error during FLAC decoder init");
|
|
+ goto errDecoder;
|
|
+ }
|
|
+#else
|
|
+ if (FLAC__stream_decoder_init_stream(decoder, flac_read_cb, NULL, NULL, NULL,
|
|
+ NULL, flac_write_cb, flac_metadata_cb,
|
|
+ flac_error_cb, self)
|
|
+ != FLAC__STREAM_DECODER_INIT_STATUS_OK) {
|
|
+ ices_log_error("ices_flac_open: Error initializing FLAC decoder");
|
|
+ goto errDecoder;
|
|
+ }
|
|
+#endif /* !FLAC_API_VERSION_CURRENT || FLAC_API_VERSION_CURRENT <= 7 */
|
|
+
|
|
FLAC__stream_decoder_set_metadata_respond(decoder, FLAC__METADATA_TYPE_VORBIS_COMMENT);
|
|
|
|
if (!(flac_data = (flac_in_t*)malloc (sizeof (flac_in_t)))) {
|
|
ices_log_error ("Malloc failed in ices_flac_open");
|
|
goto errDecoder;
|
|
}
|
|
- FLAC__stream_decoder_set_client_data(decoder, self);
|
|
|
|
flac_data->decoder = decoder;
|
|
flac_data->parsed = 0;
|
|
@@ -96,17 +122,6 @@ ices_flac_open (input_stream_t* self, char* buf, size_
|
|
|
|
self->data = flac_data;
|
|
|
|
- switch (FLAC__stream_decoder_init(decoder)) {
|
|
- case FLAC__STREAM_DECODER_SEARCH_FOR_METADATA:
|
|
- break;
|
|
- case FLAC__STREAM_DECODER_MEMORY_ALLOCATION_ERROR:
|
|
- ices_log_error("Could not allocate memory during FLAC decoder init");
|
|
- goto errData;
|
|
- default:
|
|
- ices_log_error("Unexpected error during FLAC decoder init");
|
|
- goto errData;
|
|
- }
|
|
-
|
|
if (!FLAC__stream_decoder_process_single(decoder)) {
|
|
ices_log_error("Could not find FLAC metadata header");
|
|
free(flac_data);
|
|
@@ -141,7 +156,7 @@ errDecoder:
|
|
return -1;
|
|
}
|
|
|
|
-static int
|
|
+static ssize_t
|
|
ices_flac_readpcm (input_stream_t* self, size_t olen, int16_t* left,
|
|
int16_t* right)
|
|
{
|
|
@@ -179,7 +194,7 @@ ices_flac_close (input_stream_t* self)
|
|
/* -- callbacks -- */
|
|
static FLAC__StreamDecoderReadStatus
|
|
flac_read_cb(const FLAC__StreamDecoder* decoder, FLAC__byte buffer[],
|
|
- unsigned* bytes, void* client_data)
|
|
+ FLAC_BUFSIZE_TYPE* bytes, void* client_data)
|
|
{
|
|
input_stream_t* self = (input_stream_t*)client_data;
|
|
flac_in_t* flac_data = (flac_in_t*)self->data;
|