Skip to content

Commit e349f4d

Browse files
authored
Merge branch 'only_for_testing' into master
2 parents 46faf11 + bc5ee01 commit e349f4d

File tree

8 files changed

+5195
-298
lines changed

8 files changed

+5195
-298
lines changed

src/Audio.cpp

Lines changed: 167 additions & 39 deletions
Large diffs are not rendered by default.

src/Audio.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,7 @@ class Audio : private AudioBuffer{
236236
void showCodecParams();
237237
int findNextSync(uint8_t* data, size_t len);
238238
int sendBytes(uint8_t* data, size_t len);
239+
void setDecoderItems();
239240
void compute_audioCurrentTime(int bd);
240241
void printDecodeError(int r);
241242
void showID3Tag(const char* tag, const char* val);
@@ -253,7 +254,6 @@ class Audio : private AudioBuffer{
253254
bool playChunk();
254255
bool playSample(int16_t sample[2]) ;
255256
int32_t Gain(int16_t s[2]);
256-
bool fill_InputBuf();
257257
void showstreamtitle(const char* ml);
258258
bool parseContentType(char* ct);
259259
bool parseHttpResponseHeader();
@@ -280,6 +280,7 @@ class Audio : private AudioBuffer{
280280
uint32_t m4a_correctResumeFilePos(uint32_t resumeFilePos);
281281
uint32_t flac_correctResumeFilePos(uint32_t resumeFilePos);
282282
uint32_t mp3_correctResumeFilePos(uint32_t resumeFilePos);
283+
uint8_t determineOggCodec(uint8_t* data, uint16_t len);
283284

284285

285286
//++++ implement several function with respect to the index of string ++++
@@ -442,7 +443,7 @@ class Audio : private AudioBuffer{
442443
enum : int { M4A_BEGIN = 0, M4A_FTYP = 1, M4A_CHK = 2, M4A_MOOV = 3, M4A_FREE = 4, M4A_TRAK = 5, M4A_MDAT = 6,
443444
M4A_ILST = 7, M4A_MP4A = 8, M4A_AMRDY = 99, M4A_OKAY = 100};
444445
enum : int { CODEC_NONE = 0, CODEC_WAV = 1, CODEC_MP3 = 2, CODEC_AAC = 3, CODEC_M4A = 4, CODEC_FLAC = 5,
445-
CODEC_AACP = 6};
446+
CODEC_AACP = 6, CODEC_OPUS = 7, CODEC_OGG = 8};
446447
enum : int { ST_NONE = 0, ST_WEBFILE = 1, ST_WEBSTREAM = 2};
447448
typedef enum { LEFTCHANNEL=0, RIGHTCHANNEL=1 } SampleIndex;
448449
typedef enum { LOWSHELF = 0, PEAKEQ = 1, HIFGSHELF =2 } FilterType;
@@ -478,6 +479,7 @@ class Audio : private AudioBuffer{
478479
const size_t m_frameSizeMP3 = 1600;
479480
const size_t m_frameSizeAAC = 1600;
480481
const size_t m_frameSizeFLAC = 4096 * 4;
482+
const size_t m_frameSizeOPUS = 1024;
481483

482484
static const uint8_t m_tsPacketSize = 188;
483485
static const uint8_t m_tsHeaderSize = 4;

src/flac_decoder/flac_decoder.cpp

Lines changed: 254 additions & 244 deletions
Large diffs are not rendered by default.

src/flac_decoder/flac_decoder.h

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ typedef struct FLACsubFramesBuff_t{
2727

2828
enum : uint8_t {FLACDECODER_INIT, FLACDECODER_READ_IN, FLACDECODER_WRITE_OUT};
2929
enum : uint8_t {DECODE_FRAME, DECODE_SUBFRAMES, OUT_SAMPLES};
30-
enum : int8_t {GIVE_NEXT_LOOP = +1,
30+
enum : int8_t {FLAC_PARSE_OGG_DONE = 100,
31+
GIVE_NEXT_LOOP = +1,
3132
ERR_FLAC_NONE = 0,
3233
ERR_FLAC_BLOCKSIZE_TOO_BIG = -1,
3334
ERR_FLAC_RESERVED_BLOCKSIZE_UNSUPPORTED = -2,
@@ -39,7 +40,8 @@ enum : int8_t {GIVE_NEXT_LOOP = +1,
3940
ERR_FLAC_RESERVED_RESIDUAL_CODING = -8,
4041
ERR_FLAC_WRONG_RICE_PARTITION_NR = -9,
4142
ERR_FLAC_BITS_PER_SAMPLE_TOO_BIG = -10,
42-
ERR_FLAG_BITS_PER_SAMPLE_UNKNOWN = 11};
43+
ERR_FLAG_BITS_PER_SAMPLE_UNKNOWN = -11,
44+
ERR_FLAC_DECODER_ASYNC = -12};
4345

4446
typedef struct FLACMetadataBlock_t{
4547
// METADATA_BLOCK_STREAMINFO
@@ -144,31 +146,31 @@ typedef struct FLACFrameHeader_t {
144146

145147
int FLACFindSyncWord(unsigned char *buf, int nBytes);
146148
boolean FLACFindMagicWord(unsigned char* buf, int nBytes);
147-
boolean FLACFindStreamTitle(unsigned char* buf, int nBytes);
148149
char* FLACgetStreamTitle();
149-
int FLACparseOggHeader(unsigned char *buf);
150+
int FLACparseOGG(uint8_t *inbuf, int *bytesLeft);
150151
bool FLACDecoder_AllocateBuffers(void);
151152
void FLACDecoder_ClearBuffer();
152153
void FLACDecoder_FreeBuffers();
153154
void FLACSetRawBlockParams(uint8_t Chans, uint32_t SampRate, uint8_t BPS, uint32_t tsis, uint32_t AuDaLength);
154155
void FLACDecoderReset();
155156
int8_t FLACDecode(uint8_t *inbuf, int *bytesLeft, short *outbuf);
157+
int8_t flacDecodeFrame(uint8_t *inbuf, int *bytesLeft);
156158
uint16_t FLACGetOutputSamps();
157159
uint64_t FLACGetTotoalSamplesInStream();
158160
uint8_t FLACGetBitsPerSample();
159161
uint8_t FLACGetChannels();
160162
uint32_t FLACGetSampRate();
161163
uint32_t FLACGetBitRate();
162164
uint32_t FLACGetAudioFileDuration();
163-
uint32_t readUint(uint8_t nBits);
164-
int32_t readSignedInt(int nBits);
165-
int64_t readRiceSignedInt(uint8_t param);
165+
uint32_t readUint(uint8_t nBits, int *bytesLeft);
166+
int32_t readSignedInt(int nBits, int* bytesLeft);
167+
int64_t readRiceSignedInt(uint8_t param, int* bytesLeft);
166168
void alignToByte();
167-
int8_t decodeSubframes();
168-
int8_t decodeSubframe(uint8_t sampleDepth, uint8_t ch);
169-
int8_t decodeFixedPredictionSubframe(uint8_t predOrder, uint8_t sampleDepth, uint8_t ch);
170-
int8_t decodeLinearPredictiveCodingSubframe(int lpcOrder, int sampleDepth, uint8_t ch);
171-
int8_t decodeResiduals(uint8_t warmup, uint8_t ch);
169+
int8_t decodeSubframes(int* bytesLeft);
170+
int8_t decodeSubframe(uint8_t sampleDepth, uint8_t ch, int* bytesLeft);
171+
int8_t decodeFixedPredictionSubframe(uint8_t predOrder, uint8_t sampleDepth, uint8_t ch, int* bytesLeft);
172+
int8_t decodeLinearPredictiveCodingSubframe(int lpcOrder, int sampleDepth, uint8_t ch, int* bytesLeft);
173+
int8_t decodeResiduals(uint8_t warmup, uint8_t ch, int* bytesLeft);
172174
void restoreLinearPrediction(uint8_t ch, uint8_t shift);
173-
int specialIndexOf(uint8_t* base, const char* str, int baselen, bool exact = false);
175+
int FLAC_specialIndexOf(uint8_t* base, const char* str, int baselen, bool exact = false);
174176

0 commit comments

Comments
 (0)