summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/FLACExtractor.cpp
diff options
context:
space:
mode:
authorsotaro <sotaro.ikeda.g@gmail.com>2014-12-22 08:56:35 -0800
committerSteve Kondik <steve@cyngn.com>2015-11-23 17:08:28 -0800
commit7c02c8d90621cf4c97eaf3b5fbe75c875f9a0aa4 (patch)
tree892d9c73de752a054e38f0266fdda46c643e1366 /media/libstagefright/FLACExtractor.cpp
parent6eb7982d8f46051e6a8cb269289ed0e8e4436040 (diff)
downloadframeworks_av-7c02c8d90621cf4c97eaf3b5fbe75c875f9a0aa4.zip
frameworks_av-7c02c8d90621cf4c97eaf3b5fbe75c875f9a0aa4.tar.gz
frameworks_av-7c02c8d90621cf4c97eaf3b5fbe75c875f9a0aa4.tar.bz2
Bug 1113271 - Fix stagefright FLACParser
Change-Id: I993bbcdb276ea727c5088cff03cedb34e9a91c38
Diffstat (limited to 'media/libstagefright/FLACExtractor.cpp')
-rw-r--r--media/libstagefright/FLACExtractor.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/media/libstagefright/FLACExtractor.cpp b/media/libstagefright/FLACExtractor.cpp
index 87345e1..91f0e65 100644
--- a/media/libstagefright/FLACExtractor.cpp
+++ b/media/libstagefright/FLACExtractor.cpp
@@ -150,7 +150,7 @@ private:
bool mWriteRequested;
bool mWriteCompleted;
FLAC__FrameHeader mWriteHeader;
- const FLAC__int32 * const *mWriteBuffer;
+ const FLAC__int32 * mWriteBuffer[FLAC__MAX_CHANNELS];
// most recent error reported by libFLAC parser
FLAC__StreamDecoderErrorStatus mErrorStatus;
@@ -334,7 +334,9 @@ FLAC__StreamDecoderWriteStatus FLACParser::writeCallback(
mWriteRequested = false;
// FLAC parser doesn't free or realloc buffer until next frame or finish
mWriteHeader = frame->header;
- mWriteBuffer = buffer;
+ for(unsigned channel = 0; channel < frame->header.channels; channel++) {
+ mWriteBuffer[channel] = buffer[channel];
+ }
mWriteCompleted = true;
return FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE;
} else {
@@ -441,7 +443,6 @@ FLACParser::FLACParser(
mStreamInfoValid(false),
mWriteRequested(false),
mWriteCompleted(false),
- mWriteBuffer(NULL),
mErrorStatus((FLAC__StreamDecoderErrorStatus) -1)
{
ALOGV("FLACParser::FLACParser");
@@ -618,7 +619,7 @@ MediaBuffer *FLACParser::readBuffer(bool doSeek, FLAC__uint64 sample)
short *data = (short *) buffer->data();
buffer->set_range(0, bufferSize);
// copy PCM from FLAC write buffer to our media buffer, with interleaving
- copyBuffer(data, mWriteBuffer, blocksize);
+ copyBuffer(data, (const FLAC__int32 * const *)(&mWriteBuffer), blocksize);
// fill in buffer metadata
CHECK(mWriteHeader.number_type == FLAC__FRAME_NUMBER_TYPE_SAMPLE_NUMBER);
FLAC__uint64 sampleNumber = mWriteHeader.number.sample_number;