Fix build with flac-1.1.3 using patch from

ftp.altlinux.org /pub/people/thresh

Tested by joerg@
This commit is contained in:
wiz 2007-01-13 07:31:07 +00:00
parent 352209f3c1
commit 081f818478
2 changed files with 151 additions and 1 deletions

View file

@ -1,4 +1,4 @@
$NetBSD: distinfo,v 1.1.1.1 2006/09/26 07:19:41 martti Exp $
$NetBSD: distinfo,v 1.2 2007/01/13 07:31:07 wiz Exp $
SHA1 (vlc-0.7.2.tar.bz2) = 938eaea128af02451fcbf0305c84ce290c9d8c21
RMD160 (vlc-0.7.2.tar.bz2) = 05e35e0b9080581cfbc730212fc756cb46bd3257
@ -8,3 +8,4 @@ SHA1 (patch-ab) = 5f1cb287981d79533aedeb176c0219a815b8bf52
SHA1 (patch-ac) = aec258582e1d18ccb1efc3ce74e9f949046d61b1
SHA1 (patch-ad) = e12945776db476e48ce005b6d68f9931ddcbe020
SHA1 (patch-ae) = 1dcc0466a362fcdf51fbce8869cd1a48d35d3909
SHA1 (patch-af) = ad79f35070495bbbe555bcc85bfa24b4bcbcb322

View file

@ -0,0 +1,149 @@
$NetBSD: patch-af,v 1.1 2007/01/13 07:31:07 wiz Exp $
--- modules/codec/flac.c.orig 2004-04-25 18:08:39.000000000 +0000
+++ modules/codec/flac.c
@@ -31,6 +31,12 @@
#include <FLAC/stream_decoder.h>
#include <FLAC/stream_encoder.h>
+/* by LEGACY_FLAC we mean before FLAC 1.1.3 when the decoder/encoder APIs were simplified */
+# if !defined(FLAC_API_VERSION_CURRENT) || FLAC_API_VERSION_CURRENT < 8
+# define LEGACY_FLAC
+# else
+# undef LEGACY_FLAC
+#endif
#include "vlc_block_helper.h"
@@ -112,7 +118,12 @@ static int SyncInfo( decoder_t *, uint8_
static FLAC__StreamDecoderReadStatus
DecoderReadCallback( const FLAC__StreamDecoder *decoder,
- FLAC__byte buffer[], unsigned *bytes, void *client_data );
+#ifdef LEGACY_FLAC
+ FLAC__byte buffer[], unsigned *bytes,
+#else
+ FLAC__byte buffer[], size_t *bytes,
+#endif
+ void *client_data );
static FLAC__StreamDecoderWriteStatus
DecoderWriteCallback( const FLAC__StreamDecoder *decoder,
@@ -195,6 +206,7 @@ static int OpenDecoder( vlc_object_t *p_
return VLC_EGENERIC;
}
+#ifdef LEGACY_FLAC
FLAC__stream_decoder_set_read_callback( p_sys->p_flac,
DecoderReadCallback );
FLAC__stream_decoder_set_write_callback( p_sys->p_flac,
@@ -205,7 +217,12 @@ static int OpenDecoder( vlc_object_t *p_
DecoderErrorCallback );
FLAC__stream_decoder_set_client_data( p_sys->p_flac, p_dec );
+ /* really should check the return value here */
FLAC__stream_decoder_init( p_sys->p_flac );
+#else
+ /* really should check the return value here */
+ FLAC__stream_decoder_init_stream( p_sys->p_flac, DecoderReadCallback, NULL, NULL, NULL, NULL, DecoderWriteCallback, DecoderMetadataCallback, DecoderErrorCallback, p_dec );
+#endif
/* Set output properties */
p_dec->fmt_out.i_cat = AUDIO_ES;
@@ -450,7 +467,12 @@ static void CloseDecoder( vlc_object_t *
*****************************************************************************/
static FLAC__StreamDecoderReadStatus
DecoderReadCallback( const FLAC__StreamDecoder *decoder, FLAC__byte buffer[],
- unsigned *bytes, void *client_data )
+#ifdef LEGACY_FLAC
+ unsigned *bytes,
+#else
+ size_t *bytes,
+#endif
+ void *client_data )
{
decoder_t *p_dec = (decoder_t *)client_data;
decoder_sys_t *p_sys = p_dec->p_sys;
@@ -575,6 +597,11 @@ static void DecoderErrorCallback( const
msg_Err( p_dec, "frame's data did not match the CRC in the "
"footer." );
break;
+#ifndef LEGACY_FLAC
+ case FLAC__STREAM_DECODER_ERROR_STATUS_UNPARSEABLE_STREAM:
+ msg_Err( p_dec, "the decoder encountered reserved fields in use in the stream." );
+ break;
+#endif
default:
msg_Err( p_dec, "got decoder error: %d", status );
}
@@ -640,6 +667,7 @@ static void decoder_state_error( decoder
case FLAC__STREAM_DECODER_ABORTED:
msg_Err( p_dec, "the decoder was aborted by the read callback." );
break;
+#ifdef LEGACY_FLAC
case FLAC__STREAM_DECODER_UNPARSEABLE_STREAM:
msg_Err( p_dec, "the decoder encountered reserved fields in use "
"in the stream." );
@@ -656,6 +684,14 @@ static void decoder_state_error( decoder
msg_Err( p_dec, "FLAC__stream_decoder_init() was called without "
"all callbacks being set." );
break;
+#else
+ case FLAC__STREAM_DECODER_OGG_ERROR:
+ msg_Warn( p_dec, "an error occurred in the underlying Ogg layer." );
+ break;
+ case FLAC__STREAM_DECODER_SEEK_ERROR:
+ msg_Warn( p_dec, "an error occurred while seeking." );
+ break;
+#endif
case FLAC__STREAM_DECODER_UNINITIALIZED:
msg_Err( p_dec, "decoder in uninitialized state." );
break;
@@ -1046,7 +1082,11 @@ static block_t *Encode( encoder_t *, aou
static FLAC__StreamEncoderWriteStatus
EncoderWriteCallback( const FLAC__StreamEncoder *encoder,
const FLAC__byte buffer[],
+#ifdef LEGACY_FLAC
unsigned bytes, unsigned samples,
+#else
+ size_t bytes, unsigned samples,
+#endif
unsigned current_frame, void *client_data );
static void EncoderMetadataCallback( const FLAC__StreamEncoder *encoder,
@@ -1093,15 +1133,23 @@ static int OpenEncoder( vlc_object_t *p_
FLAC__stream_encoder_set_bits_per_sample( p_sys->p_flac, 16 );
p_enc->fmt_in.i_codec = AOUT_FMT_S16_NE;
+#ifdef LEGACY_FLAC
FLAC__stream_encoder_set_write_callback( p_sys->p_flac,
EncoderWriteCallback );
FLAC__stream_encoder_set_metadata_callback( p_sys->p_flac,
EncoderMetadataCallback );
FLAC__stream_encoder_set_client_data( p_sys->p_flac, p_enc );
+#endif
/* Get and store the STREAMINFO metadata block as a p_extra */
p_sys->p_chain = 0;
+#ifdef LEGACY_FLAC
+ /* really should check the return value here */
FLAC__stream_encoder_init( p_sys->p_flac );
+#else
+ /* really should check the return value here */
+ FLAC__stream_encoder_init_stream( p_sys->p_flac, EncoderWriteCallback, NULL, NULL, EncoderMetadataCallback, p_enc );
+#endif
return VLC_SUCCESS;
}
@@ -1178,7 +1226,11 @@ static void EncoderMetadataCallback( con
static FLAC__StreamEncoderWriteStatus
EncoderWriteCallback( const FLAC__StreamEncoder *encoder,
const FLAC__byte buffer[],
+#ifdef LEGACY_FLAC
unsigned bytes, unsigned samples,
+#else
+ size_t bytes, unsigned samples,
+#endif
unsigned current_frame, void *client_data )
{
encoder_t *p_enc = (encoder_t *)client_data;