2022-02-24 22:48:10 -03:00
|
|
|
//
|
2025-03-23 03:59:11 -03:00
|
|
|
// MP3Decoder.h
|
2022-02-24 22:48:10 -03:00
|
|
|
// Cog
|
|
|
|
//
|
|
|
|
// Created by Vincent Spader on 6/17/06.
|
|
|
|
// Copyright 2006 Vincent Spader. All rights reserved.
|
|
|
|
//
|
|
|
|
|
|
|
|
#import <Cocoa/Cocoa.h>
|
|
|
|
|
2025-03-23 03:59:11 -03:00
|
|
|
#define MINIMP3_FLOAT_OUTPUT 1
|
|
|
|
#define MINIMP3_NO_STDIO 1
|
|
|
|
|
|
|
|
#import "ThirdParty/minimp3_ex.h"
|
2022-02-24 22:48:10 -03:00
|
|
|
|
|
|
|
#import "Plugin.h"
|
|
|
|
|
2025-03-24 12:16:37 -03:00
|
|
|
//#define INPUT_BUFFER_SIZE 16 * 1024 // superceded by MINIMP3_BUF_SIZE, which has been altered
|
2022-02-24 22:48:10 -03:00
|
|
|
|
2025-03-23 03:59:11 -03:00
|
|
|
@interface MP3Decoder : NSObject <CogDecoder> {
|
|
|
|
BOOL seekable;
|
2025-03-24 12:16:37 -03:00
|
|
|
unsigned char _decoder_buffer[MINIMP3_BUF_SIZE];
|
2025-03-23 03:59:11 -03:00
|
|
|
size_t _decoder_buffer_filled;
|
2022-02-24 22:48:10 -03:00
|
|
|
|
2025-03-23 03:59:11 -03:00
|
|
|
mp3dec_ex_t _decoder_ex;
|
|
|
|
mp3dec_io_t _decoder_io;
|
|
|
|
|
|
|
|
mp3dec_frame_info_t _decoder_info;
|
|
|
|
|
|
|
|
size_t samples_filled;
|
|
|
|
mp3d_sample_t _decoder_buffer_output[MINIMP3_MAX_SAMPLES_PER_FRAME];
|
2022-02-24 22:48:10 -03:00
|
|
|
|
2025-02-12 09:41:11 -03:00
|
|
|
double seconds;
|
|
|
|
|
2022-02-24 22:48:10 -03:00
|
|
|
id<CogSource> _source;
|
|
|
|
|
2025-03-23 03:59:11 -03:00
|
|
|
uint32_t _startPadding, _endPadding;
|
2022-02-24 22:48:10 -03:00
|
|
|
BOOL _foundiTunSMPB;
|
|
|
|
|
2025-03-23 03:59:11 -03:00
|
|
|
long _fileSize;
|
2022-02-24 22:48:10 -03:00
|
|
|
long _framesDecoded;
|
2025-03-23 03:59:11 -03:00
|
|
|
BOOL _foundID3v2;
|
2022-02-24 22:48:10 -03:00
|
|
|
|
|
|
|
BOOL inputEOF;
|
|
|
|
|
|
|
|
int channels;
|
|
|
|
float sampleRate;
|
|
|
|
int bitrate;
|
|
|
|
long totalFrames;
|
|
|
|
int layer;
|
|
|
|
|
2022-07-21 06:50:39 -04:00
|
|
|
int metadataUpdateInterval;
|
|
|
|
int metadataUpdateCount;
|
|
|
|
|
2022-02-24 22:48:10 -03:00
|
|
|
NSString *genre;
|
|
|
|
NSString *album;
|
|
|
|
NSString *artist;
|
|
|
|
NSString *title;
|
|
|
|
}
|
|
|
|
|
|
|
|
@end
|