summaryrefslogtreecommitdiff
path: root/multimedia/vlc07/patches/patch-af
blob: b242bbe235906372706ed07865c3454e4ea13f49 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
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;