Skip to content

Commit

Permalink
Merge branch 'only_for_testing' into master
Browse files Browse the repository at this point in the history
  • Loading branch information
schreibfaul1 authored Feb 10, 2023
2 parents 46faf11 + bc5ee01 commit e349f4d
Show file tree
Hide file tree
Showing 8 changed files with 5,195 additions and 298 deletions.
206 changes: 167 additions & 39 deletions src/Audio.cpp

Large diffs are not rendered by default.

6 changes: 4 additions & 2 deletions src/Audio.h
Original file line number Diff line number Diff line change
Expand Up @@ -236,6 +236,7 @@ class Audio : private AudioBuffer{
void showCodecParams();
int findNextSync(uint8_t* data, size_t len);
int sendBytes(uint8_t* data, size_t len);
void setDecoderItems();
void compute_audioCurrentTime(int bd);
void printDecodeError(int r);
void showID3Tag(const char* tag, const char* val);
Expand All @@ -253,7 +254,6 @@ class Audio : private AudioBuffer{
bool playChunk();
bool playSample(int16_t sample[2]) ;
int32_t Gain(int16_t s[2]);
bool fill_InputBuf();
void showstreamtitle(const char* ml);
bool parseContentType(char* ct);
bool parseHttpResponseHeader();
Expand All @@ -280,6 +280,7 @@ class Audio : private AudioBuffer{
uint32_t m4a_correctResumeFilePos(uint32_t resumeFilePos);
uint32_t flac_correctResumeFilePos(uint32_t resumeFilePos);
uint32_t mp3_correctResumeFilePos(uint32_t resumeFilePos);
uint8_t determineOggCodec(uint8_t* data, uint16_t len);


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

static const uint8_t m_tsPacketSize = 188;
static const uint8_t m_tsHeaderSize = 4;
Expand Down
498 changes: 254 additions & 244 deletions src/flac_decoder/flac_decoder.cpp

Large diffs are not rendered by default.

28 changes: 15 additions & 13 deletions src/flac_decoder/flac_decoder.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ typedef struct FLACsubFramesBuff_t{

enum : uint8_t {FLACDECODER_INIT, FLACDECODER_READ_IN, FLACDECODER_WRITE_OUT};
enum : uint8_t {DECODE_FRAME, DECODE_SUBFRAMES, OUT_SAMPLES};
enum : int8_t {GIVE_NEXT_LOOP = +1,
enum : int8_t {FLAC_PARSE_OGG_DONE = 100,
GIVE_NEXT_LOOP = +1,
ERR_FLAC_NONE = 0,
ERR_FLAC_BLOCKSIZE_TOO_BIG = -1,
ERR_FLAC_RESERVED_BLOCKSIZE_UNSUPPORTED = -2,
Expand All @@ -39,7 +40,8 @@ enum : int8_t {GIVE_NEXT_LOOP = +1,
ERR_FLAC_RESERVED_RESIDUAL_CODING = -8,
ERR_FLAC_WRONG_RICE_PARTITION_NR = -9,
ERR_FLAC_BITS_PER_SAMPLE_TOO_BIG = -10,
ERR_FLAG_BITS_PER_SAMPLE_UNKNOWN = 11};
ERR_FLAG_BITS_PER_SAMPLE_UNKNOWN = -11,
ERR_FLAC_DECODER_ASYNC = -12};

typedef struct FLACMetadataBlock_t{
// METADATA_BLOCK_STREAMINFO
Expand Down Expand Up @@ -144,31 +146,31 @@ typedef struct FLACFrameHeader_t {

int FLACFindSyncWord(unsigned char *buf, int nBytes);
boolean FLACFindMagicWord(unsigned char* buf, int nBytes);
boolean FLACFindStreamTitle(unsigned char* buf, int nBytes);
char* FLACgetStreamTitle();
int FLACparseOggHeader(unsigned char *buf);
int FLACparseOGG(uint8_t *inbuf, int *bytesLeft);
bool FLACDecoder_AllocateBuffers(void);
void FLACDecoder_ClearBuffer();
void FLACDecoder_FreeBuffers();
void FLACSetRawBlockParams(uint8_t Chans, uint32_t SampRate, uint8_t BPS, uint32_t tsis, uint32_t AuDaLength);
void FLACDecoderReset();
int8_t FLACDecode(uint8_t *inbuf, int *bytesLeft, short *outbuf);
int8_t flacDecodeFrame(uint8_t *inbuf, int *bytesLeft);
uint16_t FLACGetOutputSamps();
uint64_t FLACGetTotoalSamplesInStream();
uint8_t FLACGetBitsPerSample();
uint8_t FLACGetChannels();
uint32_t FLACGetSampRate();
uint32_t FLACGetBitRate();
uint32_t FLACGetAudioFileDuration();
uint32_t readUint(uint8_t nBits);
int32_t readSignedInt(int nBits);
int64_t readRiceSignedInt(uint8_t param);
uint32_t readUint(uint8_t nBits, int *bytesLeft);
int32_t readSignedInt(int nBits, int* bytesLeft);
int64_t readRiceSignedInt(uint8_t param, int* bytesLeft);
void alignToByte();
int8_t decodeSubframes();
int8_t decodeSubframe(uint8_t sampleDepth, uint8_t ch);
int8_t decodeFixedPredictionSubframe(uint8_t predOrder, uint8_t sampleDepth, uint8_t ch);
int8_t decodeLinearPredictiveCodingSubframe(int lpcOrder, int sampleDepth, uint8_t ch);
int8_t decodeResiduals(uint8_t warmup, uint8_t ch);
int8_t decodeSubframes(int* bytesLeft);
int8_t decodeSubframe(uint8_t sampleDepth, uint8_t ch, int* bytesLeft);
int8_t decodeFixedPredictionSubframe(uint8_t predOrder, uint8_t sampleDepth, uint8_t ch, int* bytesLeft);
int8_t decodeLinearPredictiveCodingSubframe(int lpcOrder, int sampleDepth, uint8_t ch, int* bytesLeft);
int8_t decodeResiduals(uint8_t warmup, uint8_t ch, int* bytesLeft);
void restoreLinearPrediction(uint8_t ch, uint8_t shift);
int specialIndexOf(uint8_t* base, const char* str, int baselen, bool exact = false);
int FLAC_specialIndexOf(uint8_t* base, const char* str, int baselen, bool exact = false);

Loading

0 comments on commit e349f4d

Please sign in to comment.