Loading media/extractors/mp4/MPEG4Extractor.cpp +30 −19 Original line number Diff line number Diff line Loading @@ -1969,26 +1969,8 @@ status_t MPEG4Extractor::parseChunk(off64_t *offset, int depth) { } if (chunk_type == FOURCC("fLaC")) { // From https://github.com/xiph/flac/blob/master/doc/isoflac.txt // 4 for mime, 4 for blockType and BlockLen, 34 for metadata uint8_t flacInfo[4 + 4 + 34]; // skipping dFla, version data_offset += sizeof(buffer) + 12; size_t flacOffset = 4; // Add flaC header mime type to CSD strncpy((char *)flacInfo, "fLaC", 4); if (mDataSource->readAt( data_offset, flacInfo + flacOffset, sizeof(flacInfo) - flacOffset) < (ssize_t)sizeof(flacInfo) - flacOffset) { return ERROR_IO; } data_offset += sizeof(flacInfo) - flacOffset; AMediaFormat_setBuffer(mLastTrack->meta, AMEDIAFORMAT_KEY_CSD_0, flacInfo, sizeof(flacInfo)); data_offset += sizeof(buffer); *offset = data_offset; CHECK_EQ(*offset, stop_offset); } while (*offset < stop_offset) { Loading Loading @@ -2521,6 +2503,35 @@ status_t MPEG4Extractor::parseChunk(off64_t *offset, int depth) { break; } case FOURCC("dfLa"): { *offset += chunk_size; // From https://github.com/xiph/flac/blob/master/doc/isoflac.txt // 4 for mediaType, 4 for blockType and BlockLen, 34 for metadata uint8_t flacInfo[4 + 4 + 34]; if (chunk_data_size != sizeof(flacInfo)) { return ERROR_MALFORMED; } data_offset += 4; size_t flacOffset = 4; // Add flaC header mediaType to CSD strncpy((char *)flacInfo, "fLaC", 4); ssize_t bytesToRead = sizeof(flacInfo) - flacOffset; if (mDataSource->readAt( data_offset, flacInfo + flacOffset, bytesToRead) < bytesToRead) { return ERROR_IO; } data_offset += bytesToRead; AMediaFormat_setBuffer(mLastTrack->meta, AMEDIAFORMAT_KEY_CSD_0, flacInfo, sizeof(flacInfo)); break; } case FOURCC("avcC"): { *offset += chunk_size; Loading Loading
media/extractors/mp4/MPEG4Extractor.cpp +30 −19 Original line number Diff line number Diff line Loading @@ -1969,26 +1969,8 @@ status_t MPEG4Extractor::parseChunk(off64_t *offset, int depth) { } if (chunk_type == FOURCC("fLaC")) { // From https://github.com/xiph/flac/blob/master/doc/isoflac.txt // 4 for mime, 4 for blockType and BlockLen, 34 for metadata uint8_t flacInfo[4 + 4 + 34]; // skipping dFla, version data_offset += sizeof(buffer) + 12; size_t flacOffset = 4; // Add flaC header mime type to CSD strncpy((char *)flacInfo, "fLaC", 4); if (mDataSource->readAt( data_offset, flacInfo + flacOffset, sizeof(flacInfo) - flacOffset) < (ssize_t)sizeof(flacInfo) - flacOffset) { return ERROR_IO; } data_offset += sizeof(flacInfo) - flacOffset; AMediaFormat_setBuffer(mLastTrack->meta, AMEDIAFORMAT_KEY_CSD_0, flacInfo, sizeof(flacInfo)); data_offset += sizeof(buffer); *offset = data_offset; CHECK_EQ(*offset, stop_offset); } while (*offset < stop_offset) { Loading Loading @@ -2521,6 +2503,35 @@ status_t MPEG4Extractor::parseChunk(off64_t *offset, int depth) { break; } case FOURCC("dfLa"): { *offset += chunk_size; // From https://github.com/xiph/flac/blob/master/doc/isoflac.txt // 4 for mediaType, 4 for blockType and BlockLen, 34 for metadata uint8_t flacInfo[4 + 4 + 34]; if (chunk_data_size != sizeof(flacInfo)) { return ERROR_MALFORMED; } data_offset += 4; size_t flacOffset = 4; // Add flaC header mediaType to CSD strncpy((char *)flacInfo, "fLaC", 4); ssize_t bytesToRead = sizeof(flacInfo) - flacOffset; if (mDataSource->readAt( data_offset, flacInfo + flacOffset, bytesToRead) < bytesToRead) { return ERROR_IO; } data_offset += bytesToRead; AMediaFormat_setBuffer(mLastTrack->meta, AMEDIAFORMAT_KEY_CSD_0, flacInfo, sizeof(flacInfo)); break; } case FOURCC("avcC"): { *offset += chunk_size; Loading