Delete MediaFile support for unused fileformats.
There's no downstream use of kFileFormatCompressedFile, kFileFormatPreencodedFile or kFileFormatPcm48kHzFile. Bug: None Change-Id: I66cbe71151472d6348515a2432a280acbc3bbf85 Reviewed-on: https://webrtc-review.googlesource.com/28040 Reviewed-by: Magnus Flodman <mflodman@webrtc.org> Commit-Queue: Niels Moller <nisse@webrtc.org> Cr-Commit-Position: refs/heads/master@{#21078}
This commit is contained in:
@ -78,14 +78,12 @@ class OutStream : public RewindableStream {
|
|||||||
virtual bool Write(const void* buf, size_t len) = 0;
|
virtual bool Write(const void* buf, size_t len) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// For the deprecated MediaFile module.
|
||||||
enum FileFormats {
|
enum FileFormats {
|
||||||
kFileFormatWavFile = 1,
|
kFileFormatWavFile = 1,
|
||||||
kFileFormatCompressedFile = 2,
|
|
||||||
kFileFormatPreencodedFile = 4,
|
|
||||||
kFileFormatPcm16kHzFile = 7,
|
kFileFormatPcm16kHzFile = 7,
|
||||||
kFileFormatPcm8kHzFile = 8,
|
kFileFormatPcm8kHzFile = 8,
|
||||||
kFileFormatPcm32kHzFile = 9,
|
kFileFormatPcm32kHzFile = 9,
|
||||||
kFileFormatPcm48kHzFile = 10
|
|
||||||
};
|
};
|
||||||
|
|
||||||
enum FrameType {
|
enum FrameType {
|
||||||
|
@ -93,29 +93,16 @@ int32_t MediaFileImpl::PlayoutAudioData(int8_t* buffer,
|
|||||||
}
|
}
|
||||||
|
|
||||||
switch (_fileFormat) {
|
switch (_fileFormat) {
|
||||||
case kFileFormatPcm48kHzFile:
|
|
||||||
case kFileFormatPcm32kHzFile:
|
case kFileFormatPcm32kHzFile:
|
||||||
case kFileFormatPcm16kHzFile:
|
case kFileFormatPcm16kHzFile:
|
||||||
case kFileFormatPcm8kHzFile:
|
case kFileFormatPcm8kHzFile:
|
||||||
bytesRead = _ptrFileUtilityObj->ReadPCMData(*_ptrInStream, buffer,
|
bytesRead = _ptrFileUtilityObj->ReadPCMData(*_ptrInStream, buffer,
|
||||||
bufferLengthInBytes);
|
bufferLengthInBytes);
|
||||||
break;
|
break;
|
||||||
case kFileFormatCompressedFile:
|
|
||||||
bytesRead = _ptrFileUtilityObj->ReadCompressedData(
|
|
||||||
*_ptrInStream, buffer, bufferLengthInBytes);
|
|
||||||
break;
|
|
||||||
case kFileFormatWavFile:
|
case kFileFormatWavFile:
|
||||||
bytesRead = _ptrFileUtilityObj->ReadWavDataAsMono(*_ptrInStream, buffer,
|
bytesRead = _ptrFileUtilityObj->ReadWavDataAsMono(*_ptrInStream, buffer,
|
||||||
bufferLengthInBytes);
|
bufferLengthInBytes);
|
||||||
break;
|
break;
|
||||||
case kFileFormatPreencodedFile:
|
|
||||||
bytesRead = _ptrFileUtilityObj->ReadPreEncodedData(
|
|
||||||
*_ptrInStream, buffer, bufferLengthInBytes);
|
|
||||||
if (bytesRead > 0) {
|
|
||||||
dataLengthInBytes = static_cast<size_t>(bytesRead);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default: {
|
default: {
|
||||||
RTC_LOG(LS_ERROR) << "Invalid file format: " << _fileFormat;
|
RTC_LOG(LS_ERROR) << "Invalid file format: " << _fileFormat;
|
||||||
assert(false);
|
assert(false);
|
||||||
@ -220,20 +207,9 @@ int32_t MediaFileImpl::StartPlayingStream(InStream& stream,
|
|||||||
_fileFormat = kFileFormatWavFile;
|
_fileFormat = kFileFormatWavFile;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case kFileFormatCompressedFile: {
|
|
||||||
if (_ptrFileUtilityObj->InitCompressedReading(stream, startPointMs,
|
|
||||||
stopPointMs) == -1) {
|
|
||||||
RTC_LOG(LS_ERROR) << "Not a valid Compressed file!";
|
|
||||||
StopPlaying();
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
_fileFormat = kFileFormatCompressedFile;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case kFileFormatPcm8kHzFile:
|
case kFileFormatPcm8kHzFile:
|
||||||
case kFileFormatPcm16kHzFile:
|
case kFileFormatPcm16kHzFile:
|
||||||
case kFileFormatPcm32kHzFile:
|
case kFileFormatPcm32kHzFile: {
|
||||||
case kFileFormatPcm48kHzFile: {
|
|
||||||
// ValidFileFormat() called in the beginneing of this function
|
// ValidFileFormat() called in the beginneing of this function
|
||||||
// prevents codecInst from being NULL here.
|
// prevents codecInst from being NULL here.
|
||||||
assert(codecInst != NULL);
|
assert(codecInst != NULL);
|
||||||
@ -248,19 +224,6 @@ int32_t MediaFileImpl::StartPlayingStream(InStream& stream,
|
|||||||
_fileFormat = format;
|
_fileFormat = format;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case kFileFormatPreencodedFile: {
|
|
||||||
// ValidFileFormat() called in the beginneing of this function
|
|
||||||
// prevents codecInst from being NULL here.
|
|
||||||
assert(codecInst != NULL);
|
|
||||||
if (_ptrFileUtilityObj->InitPreEncodedReading(stream, *codecInst) == -1) {
|
|
||||||
RTC_LOG(LS_ERROR) << "Not a valid PreEncoded file!";
|
|
||||||
StopPlaying();
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
_fileFormat = kFileFormatPreencodedFile;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default: {
|
default: {
|
||||||
RTC_LOG(LS_ERROR) << "Invalid file format: " << format;
|
RTC_LOG(LS_ERROR) << "Invalid file format: " << format;
|
||||||
assert(false);
|
assert(false);
|
||||||
@ -348,10 +311,8 @@ int32_t MediaFileImpl::codec_info(CodecInst& codecInst) const {
|
|||||||
bool MediaFileImpl::ValidFileFormat(const FileFormats format,
|
bool MediaFileImpl::ValidFileFormat(const FileFormats format,
|
||||||
const CodecInst* codecInst) {
|
const CodecInst* codecInst) {
|
||||||
if (codecInst == NULL) {
|
if (codecInst == NULL) {
|
||||||
if (format == kFileFormatPreencodedFile ||
|
if (format == kFileFormatPcm8kHzFile || format == kFileFormatPcm16kHzFile ||
|
||||||
format == kFileFormatPcm8kHzFile || format == kFileFormatPcm16kHzFile ||
|
format == kFileFormatPcm32kHzFile) {
|
||||||
format == kFileFormatPcm32kHzFile ||
|
|
||||||
format == kFileFormatPcm48kHzFile) {
|
|
||||||
RTC_LOG(LS_ERROR) << "Codec info required for file format specified!";
|
RTC_LOG(LS_ERROR) << "Codec info required for file format specified!";
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -439,199 +439,6 @@ int32_t ModuleFileUtility::ReadWavData(InStream& wav,
|
|||||||
return bytesRead;
|
return bytesRead;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t ModuleFileUtility::InitPreEncodedReading(InStream& in,
|
|
||||||
const CodecInst& cinst) {
|
|
||||||
uint8_t preEncodedID;
|
|
||||||
in.Read(&preEncodedID, 1);
|
|
||||||
|
|
||||||
MediaFileUtility_CodecType codecType =
|
|
||||||
(MediaFileUtility_CodecType)preEncodedID;
|
|
||||||
|
|
||||||
if (set_codec_info(cinst) != 0) {
|
|
||||||
RTC_LOG(LS_ERROR) << "Pre-encoded file send codec mismatch!";
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if (codecType != _codecId) {
|
|
||||||
RTC_LOG(LS_ERROR) << "Pre-encoded file format codec mismatch!";
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
memcpy(&codec_info_, &cinst, sizeof(CodecInst));
|
|
||||||
_reading = true;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int32_t ModuleFileUtility::ReadPreEncodedData(InStream& in,
|
|
||||||
int8_t* outData,
|
|
||||||
const size_t bufferSize) {
|
|
||||||
RTC_LOG(LS_VERBOSE) << "ModuleFileUtility::ReadPreEncodedData(in= " << &in
|
|
||||||
<< ", outData= " << static_cast<void*>(outData)
|
|
||||||
<< ", bufferSize= " << bufferSize << ")";
|
|
||||||
|
|
||||||
if (outData == NULL) {
|
|
||||||
RTC_LOG(LS_ERROR) << "output buffer NULL";
|
|
||||||
}
|
|
||||||
|
|
||||||
size_t frameLen;
|
|
||||||
uint8_t buf[64];
|
|
||||||
// Each frame has a two byte header containing the frame length.
|
|
||||||
int32_t res = in.Read(buf, 2);
|
|
||||||
if (res != 2) {
|
|
||||||
if (!in.Rewind()) {
|
|
||||||
// The first byte is the codec identifier.
|
|
||||||
in.Read(buf, 1);
|
|
||||||
res = in.Read(buf, 2);
|
|
||||||
} else {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
frameLen = buf[0] + buf[1] * 256;
|
|
||||||
if (bufferSize < frameLen) {
|
|
||||||
RTC_LOG(LS_ERROR) << "buffer not large enough to read " << frameLen
|
|
||||||
<< " bytes of pre-encoded data!";
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
return in.Read(outData, frameLen);
|
|
||||||
}
|
|
||||||
|
|
||||||
int32_t ModuleFileUtility::InitCompressedReading(InStream& in,
|
|
||||||
const uint32_t start,
|
|
||||||
const uint32_t stop) {
|
|
||||||
RTC_LOG(LS_VERBOSE) << "ModuleFileUtility::InitCompressedReading(in= " << &in
|
|
||||||
<< ", start= " << start << ", stop= " << stop << ")";
|
|
||||||
|
|
||||||
#if defined(WEBRTC_CODEC_ILBC)
|
|
||||||
int16_t read_len = 0;
|
|
||||||
#endif
|
|
||||||
_codecId = kCodecNoCodec;
|
|
||||||
_playoutPositionMs = 0;
|
|
||||||
_reading = false;
|
|
||||||
|
|
||||||
_startPointInMs = start;
|
|
||||||
_stopPointInMs = stop;
|
|
||||||
|
|
||||||
// Read the codec name
|
|
||||||
int32_t cnt = 0;
|
|
||||||
char buf[64];
|
|
||||||
do {
|
|
||||||
in.Read(&buf[cnt++], 1);
|
|
||||||
} while ((buf[cnt - 1] != '\n') && (64 > cnt));
|
|
||||||
|
|
||||||
if (cnt == 64) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
buf[cnt] = 0;
|
|
||||||
|
|
||||||
#ifdef WEBRTC_CODEC_ILBC
|
|
||||||
if (!strcmp("#!iLBC20\n", buf)) {
|
|
||||||
codec_info_.pltype = 102;
|
|
||||||
strcpy(codec_info_.plname, "ilbc");
|
|
||||||
codec_info_.plfreq = 8000;
|
|
||||||
codec_info_.pacsize = 160;
|
|
||||||
codec_info_.channels = 1;
|
|
||||||
codec_info_.rate = 13300;
|
|
||||||
_codecId = kCodecIlbc20Ms;
|
|
||||||
|
|
||||||
if (_startPointInMs > 0) {
|
|
||||||
while (_playoutPositionMs <= _startPointInMs) {
|
|
||||||
read_len = in.Read(buf, 38);
|
|
||||||
if (read_len != 38) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
_playoutPositionMs += 20;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!strcmp("#!iLBC30\n", buf)) {
|
|
||||||
codec_info_.pltype = 102;
|
|
||||||
strcpy(codec_info_.plname, "ilbc");
|
|
||||||
codec_info_.plfreq = 8000;
|
|
||||||
codec_info_.pacsize = 240;
|
|
||||||
codec_info_.channels = 1;
|
|
||||||
codec_info_.rate = 13300;
|
|
||||||
_codecId = kCodecIlbc30Ms;
|
|
||||||
|
|
||||||
if (_startPointInMs > 0) {
|
|
||||||
while (_playoutPositionMs <= _startPointInMs) {
|
|
||||||
read_len = in.Read(buf, 50);
|
|
||||||
if (read_len != 50) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
_playoutPositionMs += 20;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
if (_codecId == kCodecNoCodec) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
_reading = true;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int32_t ModuleFileUtility::ReadCompressedData(InStream& in,
|
|
||||||
int8_t* outData,
|
|
||||||
size_t bufferSize) {
|
|
||||||
RTC_LOG(LS_VERBOSE) << "ModuleFileUtility::ReadCompressedData(in=" << &in
|
|
||||||
<< ", outData=" << static_cast<void*>(outData)
|
|
||||||
<< ", bytes=" << bufferSize << ")";
|
|
||||||
|
|
||||||
int bytesRead = 0;
|
|
||||||
|
|
||||||
if (!_reading) {
|
|
||||||
RTC_LOG(LS_ERROR) << "not currently reading!";
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef WEBRTC_CODEC_ILBC
|
|
||||||
if ((_codecId == kCodecIlbc20Ms) || (_codecId == kCodecIlbc30Ms)) {
|
|
||||||
size_t byteSize = 0;
|
|
||||||
if (_codecId == kCodecIlbc30Ms) {
|
|
||||||
byteSize = 50;
|
|
||||||
}
|
|
||||||
if (_codecId == kCodecIlbc20Ms) {
|
|
||||||
byteSize = 38;
|
|
||||||
}
|
|
||||||
if (bufferSize < byteSize) {
|
|
||||||
RTC_LOG(LS_ERROR)
|
|
||||||
<< "output buffer is too short to read ILBC compressed data.";
|
|
||||||
assert(false);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
bytesRead = in.Read(outData, byteSize);
|
|
||||||
if (bytesRead != static_cast<int>(byteSize)) {
|
|
||||||
if (!in.Rewind()) {
|
|
||||||
InitCompressedReading(in, _startPointInMs, _stopPointInMs);
|
|
||||||
bytesRead = in.Read(outData, byteSize);
|
|
||||||
if (bytesRead != static_cast<int>(byteSize)) {
|
|
||||||
_reading = false;
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
_reading = false;
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
if (bytesRead == 0) {
|
|
||||||
RTC_LOG(LS_ERROR)
|
|
||||||
<< "ReadCompressedData() no bytes read, codec not supported";
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
_playoutPositionMs += 20;
|
|
||||||
if ((_stopPointInMs > 0) && (_playoutPositionMs >= _stopPointInMs)) {
|
|
||||||
if (!in.Rewind()) {
|
|
||||||
InitCompressedReading(in, _startPointInMs, _stopPointInMs);
|
|
||||||
} else {
|
|
||||||
_reading = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return bytesRead;
|
|
||||||
}
|
|
||||||
|
|
||||||
int32_t ModuleFileUtility::InitPCMReading(InStream& pcm,
|
int32_t ModuleFileUtility::InitPCMReading(InStream& pcm,
|
||||||
const uint32_t start,
|
const uint32_t start,
|
||||||
const uint32_t stop,
|
const uint32_t stop,
|
||||||
|
@ -60,32 +60,6 @@ public:
|
|||||||
int32_t ReadPCMData(InStream& stream, int8_t* audioBuffer,
|
int32_t ReadPCMData(InStream& stream, int8_t* audioBuffer,
|
||||||
const size_t dataLengthInBytes);
|
const size_t dataLengthInBytes);
|
||||||
|
|
||||||
// Prepare for playing audio from stream.
|
|
||||||
// startPointMs and stopPointMs, unless zero, specify what part of the file
|
|
||||||
// should be read. From startPointMs ms to stopPointMs ms.
|
|
||||||
int32_t InitCompressedReading(InStream& stream,
|
|
||||||
const uint32_t startPointMs = 0,
|
|
||||||
const uint32_t stopPointMs = 0);
|
|
||||||
|
|
||||||
// Put 10-60ms of audio data from stream into the audioBuffer depending on
|
|
||||||
// codec frame size. dataLengthInBytes indicates the size of audioBuffer.
|
|
||||||
// The return value is the number of bytes written to audioBuffer.
|
|
||||||
int32_t ReadCompressedData(InStream& stream,
|
|
||||||
int8_t* audioBuffer,
|
|
||||||
const size_t dataLengthInBytes);
|
|
||||||
|
|
||||||
// Prepare for playing audio from stream.
|
|
||||||
// codecInst specifies the encoding of the audio data.
|
|
||||||
int32_t InitPreEncodedReading(InStream& stream,
|
|
||||||
const CodecInst& codecInst);
|
|
||||||
|
|
||||||
// Put 10-60ms of audio data from stream into the audioBuffer depending on
|
|
||||||
// codec frame size. dataLengthInBytes indicates the size of audioBuffer.
|
|
||||||
// The return value is the number of bytes written to audioBuffer.
|
|
||||||
int32_t ReadPreEncodedData(InStream& stream,
|
|
||||||
int8_t* audioBuffer,
|
|
||||||
const size_t dataLengthInBytes);
|
|
||||||
|
|
||||||
// Return the number of ms that have been played so far.
|
// Return the number of ms that have been played so far.
|
||||||
uint32_t PlayoutPositionMs();
|
uint32_t PlayoutPositionMs();
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user