FFMPEG plugin: Use member variables instead of local ones.
- This small refactoring is in preparation for implementing decoding of partial video frame data, where one needs to preserve encoded data between multiple calls to AVCodecDecoder::_DecodeVideo(). - Note: The names fChunkBuffer and fChunkBufferSize are open for discussion. I'd rather prefer fEncodedDataChunkBuffer and fEncodedDataChunkBufferSize. But I'd like to take small refactoring steps, and changing the naming would also touch the AVCodecDecoder::_DecodeAudio() function. I'd rather focus on improving the video part for now, leaving the audio part alone. - No functional change intended. Signed-off-by: Colin Günther <[email protected]> (cherry picked from commit f2da1e752458b926aebe50642bf6af19e9903f17)
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
* Copyright (C) 2001 Axel Dörfler
|
||||
* Copyright (C) 2004 Marcus Overhagen
|
||||
* Copyright (C) 2009 Stephan Amßus <[email protected]>
|
||||
* Copyright (C) 2014 Colin Günther <[email protected]>
|
||||
*
|
||||
* All rights reserved. Distributed under the terms of the MIT License.
|
||||
*/
|
||||
@@ -637,10 +638,9 @@ AVCodecDecoder::_DecodeVideo(void* outBuffer, int64* outFrameCount,
|
||||
{
|
||||
bool firstRun = true;
|
||||
while (true) {
|
||||
const void* data;
|
||||
size_t size;
|
||||
media_header chunkMediaHeader;
|
||||
status_t err = GetNextChunk(&data, &size, &chunkMediaHeader);
|
||||
status_t err = GetNextChunk(&fChunkBuffer, &fChunkBufferSize,
|
||||
&chunkMediaHeader);
|
||||
if (err != B_OK) {
|
||||
TRACE("AVCodecDecoder::_DecodeVideo(): error from "
|
||||
"GetNextChunk(): %s\n", strerror(err));
|
||||
@@ -648,8 +648,8 @@ AVCodecDecoder::_DecodeVideo(void* outBuffer, int64* outFrameCount,
|
||||
}
|
||||
#ifdef LOG_STREAM_TO_FILE
|
||||
if (sDumpedPackets < 100) {
|
||||
sStreamLogFile.Write(data, size);
|
||||
printf("wrote %ld bytes\n", size);
|
||||
sStreamLogFile.Write(fChunkBuffer, fChunkBufferSize);
|
||||
printf("wrote %ld bytes\n", fChunkBufferSize);
|
||||
sDumpedPackets++;
|
||||
} else if (sDumpedPackets == 100)
|
||||
sStreamLogFile.Unset();
|
||||
@@ -687,8 +687,8 @@ AVCodecDecoder::_DecodeVideo(void* outBuffer, int64* outFrameCount,
|
||||
// packet buffers are supposed to contain complete frames only so we
|
||||
// don't seem to be required to buffer any packets because not the
|
||||
// complete packet has been read.
|
||||
fTempPacket.data = (uint8_t*)data;
|
||||
fTempPacket.size = size;
|
||||
fTempPacket.data = (uint8_t*)fChunkBuffer;
|
||||
fTempPacket.size = fChunkBufferSize;
|
||||
int gotPicture = 0;
|
||||
int len = avcodec_decode_video2(fContext, fInputPicture, &gotPicture,
|
||||
&fTempPacket);
|
||||
|
||||
Reference in New Issue
Block a user