diff --git a/tsMuxer/lpcmStreamReader.cpp b/tsMuxer/lpcmStreamReader.cpp index 942140b2..be1ffcec 100644 --- a/tsMuxer/lpcmStreamReader.cpp +++ b/tsMuxer/lpcmStreamReader.cpp @@ -387,7 +387,7 @@ int LPCMStreamReader::decodeWaveHeader(uint8_t* buff, uint8_t* end) if (end - buff < 20) return NOT_ENOUGH_BUFFER; uint8_t* curPos = buff; - if (m_channels == 0) + // if (m_channels == 0) { WAVEFORMATPCMEX* waveFormatPCMEx; uint64_t fmtSize; @@ -496,6 +496,17 @@ int LPCMStreamReader::decodeWaveHeader(uint8_t* buff, uint8_t* end) curPos += fmtSize; } + // in case there is a 'FLLR' (IPhone filler), skip it + if (curPos[0] == 'F' && curPos[1] == 'L' && curPos[2] == 'L' && curPos[3] == 'R') + { + curPos += 4; + int64_t fllrSize = *reinterpret_cast(curPos); + curPos += 4; + if (end - curPos < fllrSize) + return NOT_ENOUGH_BUFFER; + curPos += fllrSize; + } + curPos = findSubstr("data", curPos, FFMIN(curPos + MAX_HEADER_SIZE, end)); if (curPos == nullptr) {