Bug 1204483 - Fix busted audio decoding output on Android r=esawin

This commit is contained in:
James Willcox 2015-10-26 17:04:56 -05:00
Родитель 51d24946f1
Коммит 1866d4ece3
1 изменённых файлов: 18 добавлений и 10 удалений

Просмотреть файл

@ -247,17 +247,25 @@ public:
int32_t size;
NS_ENSURE_SUCCESS(rv = aInfo->Size(&size), rv);
const int32_t numFrames = (size / numChannels) / 2;
AudioDataValue* audio = new AudioDataValue[size];
PodCopy(audio, static_cast<AudioDataValue*>(aBuffer), size);
int32_t offset;
NS_ENSURE_SUCCESS(rv = aInfo->Offset(&offset), rv);
#ifdef MOZ_SAMPLE_TYPE_S16
int32_t numSamples = size / 2;
#else
#error We only support 16-bit integer PCM
#endif
const int32_t numFrames = numSamples / numChannels;
AudioDataValue* audio = new AudioDataValue[numSamples];
uint8_t* bufferStart = static_cast<uint8_t*>(aBuffer) + offset;
PodCopy(audio, reinterpret_cast<AudioDataValue*>(bufferStart), numSamples);
int64_t presentationTimeUs;
NS_ENSURE_SUCCESS(rv = aInfo->PresentationTimeUs(&presentationTimeUs), rv);
RefPtr<AudioData> data = new AudioData(offset, presentationTimeUs,
RefPtr<AudioData> data = new AudioData(0, presentationTimeUs,
aDuration.ToMicroseconds(),
numFrames,
audio,