From d2c1f1131bdc4fadd1a4ed3e9511b4ae4e752cf1 Mon Sep 17 00:00:00 2001 From: jcong Date: Tue, 9 Nov 2021 17:23:34 +0800 Subject: [PATCH] videoio: drop unnecessary offset for accessing video output buffer Fix: #21021 NDK API AMediaCodec_getOutputBuffer() returns MediaCodecBuffer::data() which is actually ABuffer::data(). The returned buffer address is already adjusted by offset. More info: ABuffer::base() returns base address without offset ABuffer::data() returns base + offset Change-Id: I2936339ce4fa9acf657a5a7d92adc1275d7b28a1 --- modules/videoio/src/cap_android_mediandk.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/videoio/src/cap_android_mediandk.cpp b/modules/videoio/src/cap_android_mediandk.cpp index 822024d53f..4fb4a82c2f 100644 --- a/modules/videoio/src/cap_android_mediandk.cpp +++ b/modules/videoio/src/cap_android_mediandk.cpp @@ -92,7 +92,7 @@ public: AMediaFormat_getInt32(mediaFormat.get(), AMEDIAFORMAT_KEY_HEIGHT, &frameHeight); AMediaFormat_getInt32(mediaFormat.get(), AMEDIAFORMAT_KEY_COLOR_FORMAT, &colorFormat); uint8_t* codecBuffer = AMediaCodec_getOutputBuffer(mediaCodec.get(), bufferIndex, &bufferSize); - buffer = std::vector(codecBuffer + info.offset, codecBuffer + bufferSize); + buffer = std::vector(codecBuffer, codecBuffer + bufferSize); LOGV("colorFormat: %d", colorFormat); LOGV("buffer size: %zu", bufferSize); LOGV("width (frame): %d", frameWidth);