Line
Link Here
|
0 |
-- cynthiune.app-0.9.5.orig/Bundles/Musepack/CNSFileHandle.h |
0 |
++ cynthiune.app-0.9.5/Bundles/Musepack/CNSFileHandle.h |
Lines 23-42
Link Here
|
23 |
#ifndef CNSFILEHANDLE_H |
23 |
#ifndef CNSFILEHANDLE_H |
24 |
#define CNSFILEHANDLE_H |
24 |
#define CNSFILEHANDLE_H |
25 |
|
25 |
|
26 |
#include <mpcdec/config_types.h> |
26 |
#import <mpc/reader.h> |
27 |
|
27 |
|
28 |
#ifdef __cplusplus |
28 |
#ifdef __cplusplus |
29 |
extern "C" { |
29 |
extern "C" { |
30 |
#endif /* __cplusplus */ |
30 |
#endif /* __cplusplus */ |
31 |
|
31 |
|
32 |
void CNSFileHandleRetain (void *fileHandle); |
32 |
int CNSFileHandleRead (mpc_reader *fileHandle, void *ptr, int size); |
33 |
void CNSFileHandleRelease (void *fileHandle); |
33 |
int CNSFileHandleTell (mpc_reader *fileHandle); |
34 |
|
34 |
mpc_bool_t CNSFileHandleCanSeek (mpc_reader *fileHandle); |
35 |
int CNSFileHandleRead (void *fileHandle, void *ptr, int size); |
35 |
mpc_bool_t CNSFileHandleSeek (mpc_reader *fileHandle, int offset); |
36 |
int CNSFileHandleTell (void *fileHandle); |
36 |
int CNSFileHandleGetSize (mpc_reader *fileHandle); |
37 |
mpc_bool_t CNSFileHandleCanSeek (void *fileHandle); |
|
|
38 |
mpc_bool_t CNSFileHandleSeek (void *fileHandle, int offset); |
39 |
int CNSFileHandleGetSize (void *fileHandle); |
40 |
|
37 |
|
41 |
#ifdef __cplusplus |
38 |
#ifdef __cplusplus |
42 |
} |
39 |
} |
43 |
-- cynthiune.app-0.9.5.orig/Bundles/Musepack/CNSFileHandle.m |
40 |
++ cynthiune.app-0.9.5/Bundles/Musepack/CNSFileHandle.m |
Lines 26-82
Link Here
|
26 |
|
26 |
|
27 |
#import "CNSFileHandle.h" |
27 |
#import "CNSFileHandle.h" |
28 |
|
28 |
|
29 |
void |
|
|
30 |
CNSFileHandleRetain (void *fileHandle) |
31 |
{ |
32 |
[(NSFileHandle *) fileHandle retain]; |
33 |
} |
34 |
|
35 |
void |
36 |
CNSFileHandleRelease (void *fileHandle) |
37 |
{ |
38 |
[(NSFileHandle *) fileHandle release]; |
39 |
} |
40 |
|
41 |
int |
29 |
int |
42 |
CNSFileHandleRead (void *fileHandle, void *ptr, int size) |
30 |
CNSFileHandleRead (mpc_reader *fileHandle, void *ptr, int size) |
43 |
{ |
31 |
{ |
44 |
NSData *data; |
32 |
NSData *data; |
45 |
|
33 |
|
46 |
data = [(NSFileHandle *) fileHandle readDataOfLength: size]; |
34 |
data = [(NSFileHandle *) fileHandle->data readDataOfLength: size]; |
47 |
[data getBytes: ptr]; |
35 |
[data getBytes: ptr]; |
48 |
|
36 |
|
49 |
return [data length]; |
37 |
return [data length]; |
50 |
} |
38 |
} |
51 |
|
39 |
|
52 |
int |
40 |
int |
53 |
CNSFileHandleTell (void *fileHandle) |
41 |
CNSFileHandleTell (mpc_reader *fileHandle) |
54 |
{ |
42 |
{ |
55 |
return [(NSFileHandle *) fileHandle offsetInFile]; |
43 |
return [(NSFileHandle *) fileHandle->data offsetInFile]; |
56 |
} |
44 |
} |
57 |
|
45 |
|
58 |
mpc_bool_t |
46 |
mpc_bool_t |
59 |
CNSFileHandleCanSeek (void *fileHandle) |
47 |
CNSFileHandleCanSeek (mpc_reader *fileHandle) |
60 |
{ |
48 |
{ |
61 |
return YES; |
49 |
return YES; |
62 |
} |
50 |
} |
63 |
|
51 |
|
64 |
mpc_bool_t |
52 |
mpc_bool_t |
65 |
CNSFileHandleSeek (void *fileHandle, int offset) |
53 |
CNSFileHandleSeek (mpc_reader *fileHandle, int offset) |
66 |
{ |
54 |
{ |
67 |
[(NSFileHandle *) fileHandle seekToFileOffset: (long long) offset]; |
55 |
[(NSFileHandle *) fileHandle->data seekToFileOffset: (long long) offset]; |
68 |
|
56 |
|
69 |
return YES; |
57 |
return YES; |
70 |
} |
58 |
} |
71 |
|
59 |
|
72 |
int |
60 |
int |
73 |
CNSFileHandleGetSize (void *fileHandle) |
61 |
CNSFileHandleGetSize (mpc_reader *fileHandle) |
74 |
{ |
62 |
{ |
75 |
int size, where; |
63 |
int size, where; |
76 |
|
64 |
|
77 |
where = [(NSFileHandle *) fileHandle offsetInFile]; |
65 |
where = [(NSFileHandle *) fileHandle->data offsetInFile]; |
78 |
size = [(NSFileHandle *) fileHandle seekToEndOfFile]; |
66 |
size = [(NSFileHandle *) fileHandle->data seekToEndOfFile]; |
79 |
[(NSFileHandle *) fileHandle seekToFileOffset: (long long) where]; |
67 |
[(NSFileHandle *) fileHandle->data seekToFileOffset: (long long) where]; |
80 |
|
68 |
|
81 |
return size; |
69 |
return size; |
82 |
} |
70 |
} |
83 |
-- cynthiune.app-0.9.5.orig/Bundles/Musepack/Musepack.h |
71 |
++ cynthiune.app-0.9.5/Bundles/Musepack/Musepack.h |
Lines 31-37
Link Here
|
31 |
|
31 |
|
32 |
mpc_reader *mpcReader; |
32 |
mpc_reader *mpcReader; |
33 |
mpc_streaminfo *mpcStreamInfo; |
33 |
mpc_streaminfo *mpcStreamInfo; |
34 |
mpc_decoder *mpcDecoder; |
34 |
mpc_demux *mpcDecoder; |
35 |
|
35 |
|
36 |
MPC_SAMPLE_FORMAT sampleBuffer[maxSamples]; |
36 |
MPC_SAMPLE_FORMAT sampleBuffer[maxSamples]; |
37 |
unsigned char frameBuffer[maxSamples * 4]; |
37 |
unsigned char frameBuffer[maxSamples * 4]; |
38 |
-- cynthiune.app-0.9.5.orig/Bundles/Musepack/Musepack.m |
38 |
++ cynthiune.app-0.9.5/Bundles/Musepack/Musepack.m |
Lines 30-36
Link Here
|
30 |
#import <Cynthiune/Format.h> |
30 |
#import <Cynthiune/Format.h> |
31 |
#import <Cynthiune/utils.h> |
31 |
#import <Cynthiune/utils.h> |
32 |
|
32 |
|
33 |
#import <mpcdec/mpcdec.h> |
33 |
#import <mpc/mpcdec.h> |
34 |
|
34 |
|
35 |
#import "Musepack.h" |
35 |
#import "Musepack.h" |
36 |
#import "CNSFileHandle.h" |
36 |
#import "CNSFileHandle.h" |
Lines 75-81
Link Here
|
75 |
MPCReaderDelete (mpc_reader *reader) |
75 |
MPCReaderDelete (mpc_reader *reader) |
76 |
{ |
76 |
{ |
77 |
[(NSFileHandle *) reader->data release]; |
77 |
[(NSFileHandle *) reader->data release]; |
78 |
free (reader); |
78 |
mpc_reader_exit_stdio (reader); |
79 |
} |
79 |
} |
80 |
|
80 |
|
81 |
static mpc_streaminfo * |
81 |
static mpc_streaminfo * |
Lines 84-106
Link Here
|
84 |
mpc_streaminfo *streamInfo; |
84 |
mpc_streaminfo *streamInfo; |
85 |
|
85 |
|
86 |
streamInfo = malloc (sizeof (mpc_streaminfo)); |
86 |
streamInfo = malloc (sizeof (mpc_streaminfo)); |
87 |
mpc_streaminfo_init (streamInfo); |
|
|
88 |
|
87 |
|
89 |
return streamInfo; |
88 |
return streamInfo; |
90 |
} |
89 |
} |
91 |
|
90 |
|
92 |
static mpc_decoder * |
|
|
93 |
MPCDecoderNew (mpc_reader *reader, mpc_streaminfo *streamInfo) |
94 |
{ |
95 |
mpc_decoder *decoder; |
96 |
|
97 |
decoder = malloc (sizeof (mpc_decoder)); |
98 |
mpc_decoder_setup (decoder, reader); |
99 |
mpc_decoder_initialize (decoder, streamInfo); |
100 |
|
101 |
return decoder; |
102 |
} |
103 |
|
104 |
static inline void |
91 |
static inline void |
105 |
CopyBuffer (const MPC_SAMPLE_FORMAT *buffer, unsigned char *destBuffer, |
92 |
CopyBuffer (const MPC_SAMPLE_FORMAT *buffer, unsigned char *destBuffer, |
106 |
unsigned int length) |
93 |
unsigned int length) |
Lines 173-182
Link Here
|
173 |
{ |
160 |
{ |
174 |
[fileHandle retain]; |
161 |
[fileHandle retain]; |
175 |
mpcReader = MPCReaderNew (fileHandle); |
162 |
mpcReader = MPCReaderNew (fileHandle); |
|
|
163 |
if (!mpcReader) |
164 |
return MPC_FALSE; |
176 |
mpcStreamInfo = MPCStreamInfoNew (); |
165 |
mpcStreamInfo = MPCStreamInfoNew (); |
177 |
mpc_streaminfo_read (mpcStreamInfo, mpcReader); |
166 |
mpcDecoder = mpc_demux_init (mpcReader); |
178 |
|
167 |
if (!mpcDecoder) |
179 |
mpcDecoder = MPCDecoderNew (mpcReader, mpcStreamInfo); |
168 |
return MPC_FALSE; |
|
|
169 |
mpc_demux_get_info (mpcDecoder, mpcStreamInfo); |
180 |
|
170 |
|
181 |
result = YES; |
171 |
result = YES; |
182 |
} |
172 |
} |
Lines 196-201
Link Here
|
196 |
NSFileHandle *testFileHandle; |
186 |
NSFileHandle *testFileHandle; |
197 |
mpc_reader *testReader; |
187 |
mpc_reader *testReader; |
198 |
mpc_streaminfo *testStreamInfo; |
188 |
mpc_streaminfo *testStreamInfo; |
|
|
189 |
mpc_demux *testDecoder; |
199 |
BOOL result; |
190 |
BOOL result; |
200 |
|
191 |
|
201 |
testFileHandle = [NSFileHandle fileHandleForReadingAtPath: fileName]; |
192 |
testFileHandle = [NSFileHandle fileHandleForReadingAtPath: fileName]; |
Lines 203-211
Link Here
|
203 |
{ |
194 |
{ |
204 |
testReader = MPCReaderNew (testFileHandle); |
195 |
testReader = MPCReaderNew (testFileHandle); |
205 |
testStreamInfo = MPCStreamInfoNew (); |
196 |
testStreamInfo = MPCStreamInfoNew (); |
206 |
result = !mpc_streaminfo_read (testStreamInfo, testReader); |
197 |
testDecoder = mpc_demux_init (testReader); |
207 |
free (testStreamInfo); |
198 |
if (testDecoder) |
208 |
MPCReaderDelete (testReader); |
199 |
{ |
|
|
200 |
result = YES; |
201 |
mpc_demux_exit (testDecoder); |
202 |
} |
203 |
if (testReader) |
204 |
MPCReaderDelete (testReader); |
209 |
} |
205 |
} |
210 |
else |
206 |
else |
211 |
result = NO; |
207 |
result = NO; |
Lines 222-242
Link Here
|
222 |
withSize: (unsigned int) bufferSize |
218 |
withSize: (unsigned int) bufferSize |
223 |
{ |
219 |
{ |
224 |
int bytes, status; |
220 |
int bytes, status; |
225 |
unsigned int vbrAcc, vbrBits; |
221 |
mpc_frame_info frame; |
|
|
222 |
mpc_status err; |
226 |
unsigned long frames, samples; |
223 |
unsigned long frames, samples; |
227 |
|
224 |
|
228 |
status = 1; |
225 |
status = 1; |
|
|
226 |
frame.buffer = sampleBuffer; |
229 |
|
227 |
|
230 |
if (!remaining) |
228 |
while (!remaining) |
231 |
{ |
229 |
{ |
232 |
samples = mpc_decoder_decode (mpcDecoder, sampleBuffer, |
230 |
err = mpc_demux_decode (mpcDecoder, &frame); |
233 |
&vbrAcc, &vbrBits); |
231 |
if (err != MPC_STATUS_OK) |
234 |
if (!samples) |
232 |
{ |
235 |
status = 0; |
233 |
status = -1; |
236 |
else if (samples == (unsigned long) -1) |
234 |
break; |
237 |
status = -1; |
235 |
} |
|
|
236 |
else if (frame.bits == -1) |
237 |
{ |
238 |
status = 0; |
239 |
break; |
240 |
} |
238 |
else |
241 |
else |
239 |
{ |
242 |
{ |
|
|
243 |
samples = frame.samples; |
240 |
frames = samples * mpcStreamInfo->channels; |
244 |
frames = samples * mpcStreamInfo->channels; |
241 |
CopyBuffer (sampleBuffer, frameBuffer, frames); |
245 |
CopyBuffer (sampleBuffer, frameBuffer, frames); |
242 |
remaining = frames * 2; |
246 |
remaining = frames * 2; |
Lines 277-283
Link Here
|
277 |
|
281 |
|
278 |
- (unsigned int) readDuration |
282 |
- (unsigned int) readDuration |
279 |
{ |
283 |
{ |
280 |
return mpcStreamInfo->pcm_samples / mpcStreamInfo->sample_freq; |
284 |
return (unsigned int) mpc_streaminfo_get_length (mpcStreamInfo); |
281 |
} |
285 |
} |
282 |
|
286 |
|
283 |
- (void) streamClose |
287 |
- (void) streamClose |
Lines 287-298
Link Here
|
287 |
[fileHandle closeFile]; |
291 |
[fileHandle closeFile]; |
288 |
[fileHandle release]; |
292 |
[fileHandle release]; |
289 |
} |
293 |
} |
|
|
294 |
if (mpcDecoder) |
295 |
mpc_demux_exit (mpcDecoder); |
290 |
if (mpcReader) |
296 |
if (mpcReader) |
291 |
MPCReaderDelete (mpcReader); |
297 |
MPCReaderDelete (mpcReader); |
292 |
if (mpcStreamInfo) |
|
|
293 |
free (mpcStreamInfo); |
294 |
if (mpcDecoder) |
295 |
free (mpcDecoder); |
296 |
|
298 |
|
297 |
[self _resetIVars]; |
299 |
[self _resetIVars]; |
298 |
} |
300 |
} |
Lines 300-306
Link Here
|
300 |
// Player Protocol |
302 |
// Player Protocol |
301 |
+ (NSArray *) acceptedFileExtensions |
303 |
+ (NSArray *) acceptedFileExtensions |
302 |
{ |
304 |
{ |
303 |
return [NSArray arrayWithObjects: @"mpc", @"mp+", nil]; |
305 |
return [NSArray arrayWithObjects: @"mpc", @"mp+", @"mpp", nil]; |
304 |
} |
306 |
} |
305 |
|
307 |
|
306 |
- (BOOL) isSeekable |
308 |
- (BOOL) isSeekable |
Lines 310-316
Link Here
|
310 |
|
312 |
|
311 |
- (void) seek: (unsigned int) aPos |
313 |
- (void) seek: (unsigned int) aPos |
312 |
{ |
314 |
{ |
313 |
mpc_decoder_seek_seconds (mpcDecoder, (double) aPos); |
315 |
mpc_demux_seek_second (mpcDecoder, (double) aPos); |
314 |
} |
316 |
} |
315 |
|
317 |
|
316 |
@end |
318 |
@end |