Loading media/libstagefright/ACodec.cpp +26 −25 Original line number Diff line number Diff line Loading @@ -785,7 +785,7 @@ status_t ACodec::handleSetSurface(const sp<Surface> &surface) { // we cannot change the number of output buffers while OMX is running // set up surface to the same count Vector<BufferInfo> &buffers = mBuffers[kPortIndexOutput]; std::vector<BufferInfo> &buffers = mBuffers[kPortIndexOutput]; ALOGV("setting up surface for %zu buffers", buffers.size()); err = native_window_set_buffer_count(nativeWindow, buffers.size()); Loading Loading @@ -825,7 +825,7 @@ status_t ACodec::handleSetSurface(const sp<Surface> &surface) { // cancel undequeued buffers to new surface if (!storingMetadataInDecodedBuffers()) { for (size_t i = 0; i < buffers.size(); ++i) { BufferInfo &info = buffers.editItemAt(i); BufferInfo &info = buffers[i]; if (info.mStatus == BufferInfo::OWNED_BY_NATIVE_WINDOW) { ALOGV("canceling buffer %p", info.mGraphicBuffer->getNativeBuffer()); err = nativeWindow->cancelBuffer( Loading Loading @@ -872,7 +872,7 @@ status_t ACodec::allocateBuffersOnPort(OMX_U32 portIndex) { CHECK(portIndex == kPortIndexInput || portIndex == kPortIndexOutput); CHECK(mAllocator[portIndex] == NULL); CHECK(mBuffers[portIndex].isEmpty()); CHECK(mBuffers[portIndex].empty()); status_t err; if (mNativeWindow != NULL && portIndex == kPortIndexOutput) { Loading Loading @@ -951,6 +951,7 @@ status_t ACodec::allocateBuffersOnPort(OMX_U32 portIndex) { const sp<AMessage> &format = portIndex == kPortIndexInput ? mInputFormat : mOutputFormat; mBuffers[portIndex].reserve(def.nBufferCountActual); for (OMX_U32 i = 0; i < def.nBufferCountActual && err == OK; ++i) { hidl_memory hidlMemToken; sp<TMemory> hidlMem; Loading Loading @@ -1039,7 +1040,7 @@ status_t ACodec::allocateBuffersOnPort(OMX_U32 portIndex) { } } mBuffers[portIndex].push(info); mBuffers[portIndex].push_back(info); } } } Loading Loading @@ -1250,6 +1251,7 @@ status_t ACodec::allocateOutputBuffersFromNativeWindow() { mComponentName.c_str(), bufferCount, bufferSize); // Dequeue buffers and send them to OMX mBuffers[kPortIndexOutput].reserve(bufferCount); for (OMX_U32 i = 0; i < bufferCount; i++) { ANativeWindowBuffer *buf; int fenceFd; Loading @@ -1275,7 +1277,7 @@ status_t ACodec::allocateOutputBuffersFromNativeWindow() { info.mData = new MediaCodecBuffer(mOutputFormat, new ABuffer(bufferSize)); info.mCodecData = info.mData; mBuffers[kPortIndexOutput].push(info); mBuffers[kPortIndexOutput].push_back(info); IOMX::buffer_id bufferId; err = mOMXNode->useBuffer(kPortIndexOutput, graphicBuffer, &bufferId); Loading @@ -1285,7 +1287,7 @@ status_t ACodec::allocateOutputBuffersFromNativeWindow() { break; } mBuffers[kPortIndexOutput].editItemAt(i).mBufferID = bufferId; mBuffers[kPortIndexOutput][i].mBufferID = bufferId; ALOGV("[%s] Registered graphic buffer with ID %u (pointer = %p)", mComponentName.c_str(), Loading @@ -1307,7 +1309,7 @@ status_t ACodec::allocateOutputBuffersFromNativeWindow() { } for (OMX_U32 i = cancelStart; i < cancelEnd; i++) { BufferInfo *info = &mBuffers[kPortIndexOutput].editItemAt(i); BufferInfo *info = &mBuffers[kPortIndexOutput][i]; if (info->mStatus == BufferInfo::OWNED_BY_US) { status_t error = cancelBufferToNativeWindow(info); if (err == 0) { Loading Loading @@ -1336,6 +1338,7 @@ status_t ACodec::allocateOutputMetadataBuffers() { ALOGV("[%s] Allocating %u meta buffers on output port", mComponentName.c_str(), bufferCount); mBuffers[kPortIndexOutput].reserve(bufferCount); for (OMX_U32 i = 0; i < bufferCount; i++) { BufferInfo info; info.mStatus = BufferInfo::OWNED_BY_NATIVE_WINDOW; Loading @@ -1353,7 +1356,7 @@ status_t ACodec::allocateOutputMetadataBuffers() { info.mCodecData = info.mData; err = mOMXNode->useBuffer(kPortIndexOutput, OMXBuffer::sPreset, &info.mBufferID); mBuffers[kPortIndexOutput].push(info); mBuffers[kPortIndexOutput].push_back(info); ALOGV("[%s] allocated meta buffer with ID %u", mComponentName.c_str(), info.mBufferID); Loading Loading @@ -1462,7 +1465,7 @@ void ACodec::notifyOfRenderedFrames(bool dropIncomplete, FrameRenderTracker::Inf it != done.cend(); ++it) { ssize_t index = it->getIndex(); if (index >= 0 && (size_t)index < mBuffers[kPortIndexOutput].size()) { mBuffers[kPortIndexOutput].editItemAt(index).mRenderInfo = NULL; mBuffers[kPortIndexOutput][index].mRenderInfo = NULL; } else if (index >= 0) { // THIS SHOULD NEVER HAPPEN ALOGE("invalid index %zd in %zu", index, mBuffers[kPortIndexOutput].size()); Loading Loading @@ -1502,7 +1505,7 @@ ACodec::BufferInfo *ACodec::dequeueBufferFromNativeWindow() { bool stale = false; for (size_t i = mBuffers[kPortIndexOutput].size(); i > 0;) { i--; BufferInfo *info = &mBuffers[kPortIndexOutput].editItemAt(i); BufferInfo *info = &mBuffers[kPortIndexOutput][i]; if (info->mGraphicBuffer != NULL && info->mGraphicBuffer->handle == buf->handle) { Loading Loading @@ -1550,8 +1553,7 @@ ACodec::BufferInfo *ACodec::dequeueBufferFromNativeWindow() { BufferInfo *oldest = NULL; for (size_t i = mBuffers[kPortIndexOutput].size(); i > 0;) { i--; BufferInfo *info = &mBuffers[kPortIndexOutput].editItemAt(i); BufferInfo *info = &mBuffers[kPortIndexOutput][i]; if (info->mStatus == BufferInfo::OWNED_BY_NATIVE_WINDOW && (oldest == NULL || // avoid potential issues from counter rolling over Loading Loading @@ -1608,8 +1610,7 @@ status_t ACodec::freeOutputBuffersNotOwnedByComponent() { status_t err = OK; for (size_t i = mBuffers[kPortIndexOutput].size(); i > 0;) { i--; BufferInfo *info = &mBuffers[kPortIndexOutput].editItemAt(i); BufferInfo *info = &mBuffers[kPortIndexOutput][i]; // At this time some buffers may still be with the component // or being drained. Loading @@ -1626,7 +1627,7 @@ status_t ACodec::freeOutputBuffersNotOwnedByComponent() { } status_t ACodec::freeBuffer(OMX_U32 portIndex, size_t i) { BufferInfo *info = &mBuffers[portIndex].editItemAt(i); BufferInfo *info = &mBuffers[portIndex][i]; status_t err = OK; // there should not be any fences in the metadata Loading Loading @@ -1666,14 +1667,14 @@ status_t ACodec::freeBuffer(OMX_U32 portIndex, size_t i) { } // remove buffer even if mOMXNode->freeBuffer fails mBuffers[portIndex].removeAt(i); mBuffers[portIndex].erase(mBuffers[portIndex].begin() + i); return err; } ACodec::BufferInfo *ACodec::findBufferByID( uint32_t portIndex, IOMX::buffer_id bufferID, ssize_t *index) { for (size_t i = 0; i < mBuffers[portIndex].size(); ++i) { BufferInfo *info = &mBuffers[portIndex].editItemAt(i); BufferInfo *info = &mBuffers[portIndex][i]; if (info->mBufferID == bufferID) { if (index != NULL) { Loading Loading @@ -5102,7 +5103,7 @@ size_t ACodec::countBuffersOwnedByComponent(OMX_U32 portIndex) const { size_t n = 0; for (size_t i = 0; i < mBuffers[portIndex].size(); ++i) { const BufferInfo &info = mBuffers[portIndex].itemAt(i); const BufferInfo &info = mBuffers[portIndex][i]; if (info.mStatus == BufferInfo::OWNED_BY_COMPONENT) { ++n; Loading @@ -5116,7 +5117,7 @@ size_t ACodec::countBuffersOwnedByNativeWindow() const { size_t n = 0; for (size_t i = 0; i < mBuffers[kPortIndexOutput].size(); ++i) { const BufferInfo &info = mBuffers[kPortIndexOutput].itemAt(i); const BufferInfo &info = mBuffers[kPortIndexOutput][i]; if (info.mStatus == BufferInfo::OWNED_BY_NATIVE_WINDOW) { ++n; Loading @@ -5143,7 +5144,7 @@ void ACodec::waitUntilAllPossibleNativeWindowBuffersAreReturnedToUs() { bool ACodec::allYourBuffersAreBelongToUs( OMX_U32 portIndex) { for (size_t i = 0; i < mBuffers[portIndex].size(); ++i) { BufferInfo *info = &mBuffers[portIndex].editItemAt(i); BufferInfo *info = &mBuffers[portIndex][i]; if (info->mStatus != BufferInfo::OWNED_BY_US && info->mStatus != BufferInfo::OWNED_BY_NATIVE_WINDOW) { Loading Loading @@ -6482,7 +6483,7 @@ void ACodec::BaseState::getMoreInputDataIfPossible() { BufferInfo *eligible = NULL; for (size_t i = 0; i < mCodec->mBuffers[kPortIndexInput].size(); ++i) { BufferInfo *info = &mCodec->mBuffers[kPortIndexInput].editItemAt(i); BufferInfo *info = &mCodec->mBuffers[kPortIndexInput][i]; #if 0 if (info->mStatus == BufferInfo::OWNED_BY_UPSTREAM) { Loading Loading @@ -7514,7 +7515,7 @@ void ACodec::ExecutingState::submitOutputMetaBuffers() { // submit as many buffers as there are input buffers with the codec // in case we are in port reconfiguring for (size_t i = 0; i < mCodec->mBuffers[kPortIndexInput].size(); ++i) { BufferInfo *info = &mCodec->mBuffers[kPortIndexInput].editItemAt(i); BufferInfo *info = &mCodec->mBuffers[kPortIndexInput][i]; if (info->mStatus == BufferInfo::OWNED_BY_COMPONENT) { if (mCodec->submitOutputMetadataBuffer() != OK) Loading @@ -7532,7 +7533,7 @@ void ACodec::ExecutingState::submitOutputMetaBuffers() { void ACodec::ExecutingState::submitRegularOutputBuffers() { bool failed = false; for (size_t i = 0; i < mCodec->mBuffers[kPortIndexOutput].size(); ++i) { BufferInfo *info = &mCodec->mBuffers[kPortIndexOutput].editItemAt(i); BufferInfo *info = &mCodec->mBuffers[kPortIndexOutput][i]; if (mCodec->mNativeWindow != NULL) { if (info->mStatus != BufferInfo::OWNED_BY_US Loading Loading @@ -7589,7 +7590,7 @@ void ACodec::ExecutingState::resume() { } for (size_t i = 0; i < mCodec->mBuffers[kPortIndexInput].size(); i++) { BufferInfo *info = &mCodec->mBuffers[kPortIndexInput].editItemAt(i); BufferInfo *info = &mCodec->mBuffers[kPortIndexInput][i]; if (info->mStatus == BufferInfo::OWNED_BY_US) { postFillThisBuffer(info); } Loading Loading @@ -8593,7 +8594,7 @@ bool ACodec::OutputPortSettingsChangedState::onOMXEvent( ALOGV("[%s] Output port now disabled.", mCodec->mComponentName.c_str()); status_t err = OK; if (!mCodec->mBuffers[kPortIndexOutput].isEmpty()) { if (!mCodec->mBuffers[kPortIndexOutput].empty()) { ALOGE("disabled port should be empty, but has %zu buffers", mCodec->mBuffers[kPortIndexOutput].size()); err = FAILED_TRANSACTION; Loading media/libstagefright/include/media/stagefright/ACodec.h +2 −1 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ #include <stdint.h> #include <list> #include <vector> #include <android/native_window.h> #include <media/hardware/MetadataBufferType.h> #include <media/MediaCodecInfo.h> Loading Loading @@ -266,7 +267,7 @@ private: sp<AMessage> mBaseOutputFormat; FrameRenderTracker mRenderTracker; // render information for buffers rendered by ACodec Vector<BufferInfo> mBuffers[2]; std::vector<BufferInfo> mBuffers[2]; bool mPortEOS[2]; status_t mInputEOSResult; Loading Loading
media/libstagefright/ACodec.cpp +26 −25 Original line number Diff line number Diff line Loading @@ -785,7 +785,7 @@ status_t ACodec::handleSetSurface(const sp<Surface> &surface) { // we cannot change the number of output buffers while OMX is running // set up surface to the same count Vector<BufferInfo> &buffers = mBuffers[kPortIndexOutput]; std::vector<BufferInfo> &buffers = mBuffers[kPortIndexOutput]; ALOGV("setting up surface for %zu buffers", buffers.size()); err = native_window_set_buffer_count(nativeWindow, buffers.size()); Loading Loading @@ -825,7 +825,7 @@ status_t ACodec::handleSetSurface(const sp<Surface> &surface) { // cancel undequeued buffers to new surface if (!storingMetadataInDecodedBuffers()) { for (size_t i = 0; i < buffers.size(); ++i) { BufferInfo &info = buffers.editItemAt(i); BufferInfo &info = buffers[i]; if (info.mStatus == BufferInfo::OWNED_BY_NATIVE_WINDOW) { ALOGV("canceling buffer %p", info.mGraphicBuffer->getNativeBuffer()); err = nativeWindow->cancelBuffer( Loading Loading @@ -872,7 +872,7 @@ status_t ACodec::allocateBuffersOnPort(OMX_U32 portIndex) { CHECK(portIndex == kPortIndexInput || portIndex == kPortIndexOutput); CHECK(mAllocator[portIndex] == NULL); CHECK(mBuffers[portIndex].isEmpty()); CHECK(mBuffers[portIndex].empty()); status_t err; if (mNativeWindow != NULL && portIndex == kPortIndexOutput) { Loading Loading @@ -951,6 +951,7 @@ status_t ACodec::allocateBuffersOnPort(OMX_U32 portIndex) { const sp<AMessage> &format = portIndex == kPortIndexInput ? mInputFormat : mOutputFormat; mBuffers[portIndex].reserve(def.nBufferCountActual); for (OMX_U32 i = 0; i < def.nBufferCountActual && err == OK; ++i) { hidl_memory hidlMemToken; sp<TMemory> hidlMem; Loading Loading @@ -1039,7 +1040,7 @@ status_t ACodec::allocateBuffersOnPort(OMX_U32 portIndex) { } } mBuffers[portIndex].push(info); mBuffers[portIndex].push_back(info); } } } Loading Loading @@ -1250,6 +1251,7 @@ status_t ACodec::allocateOutputBuffersFromNativeWindow() { mComponentName.c_str(), bufferCount, bufferSize); // Dequeue buffers and send them to OMX mBuffers[kPortIndexOutput].reserve(bufferCount); for (OMX_U32 i = 0; i < bufferCount; i++) { ANativeWindowBuffer *buf; int fenceFd; Loading @@ -1275,7 +1277,7 @@ status_t ACodec::allocateOutputBuffersFromNativeWindow() { info.mData = new MediaCodecBuffer(mOutputFormat, new ABuffer(bufferSize)); info.mCodecData = info.mData; mBuffers[kPortIndexOutput].push(info); mBuffers[kPortIndexOutput].push_back(info); IOMX::buffer_id bufferId; err = mOMXNode->useBuffer(kPortIndexOutput, graphicBuffer, &bufferId); Loading @@ -1285,7 +1287,7 @@ status_t ACodec::allocateOutputBuffersFromNativeWindow() { break; } mBuffers[kPortIndexOutput].editItemAt(i).mBufferID = bufferId; mBuffers[kPortIndexOutput][i].mBufferID = bufferId; ALOGV("[%s] Registered graphic buffer with ID %u (pointer = %p)", mComponentName.c_str(), Loading @@ -1307,7 +1309,7 @@ status_t ACodec::allocateOutputBuffersFromNativeWindow() { } for (OMX_U32 i = cancelStart; i < cancelEnd; i++) { BufferInfo *info = &mBuffers[kPortIndexOutput].editItemAt(i); BufferInfo *info = &mBuffers[kPortIndexOutput][i]; if (info->mStatus == BufferInfo::OWNED_BY_US) { status_t error = cancelBufferToNativeWindow(info); if (err == 0) { Loading Loading @@ -1336,6 +1338,7 @@ status_t ACodec::allocateOutputMetadataBuffers() { ALOGV("[%s] Allocating %u meta buffers on output port", mComponentName.c_str(), bufferCount); mBuffers[kPortIndexOutput].reserve(bufferCount); for (OMX_U32 i = 0; i < bufferCount; i++) { BufferInfo info; info.mStatus = BufferInfo::OWNED_BY_NATIVE_WINDOW; Loading @@ -1353,7 +1356,7 @@ status_t ACodec::allocateOutputMetadataBuffers() { info.mCodecData = info.mData; err = mOMXNode->useBuffer(kPortIndexOutput, OMXBuffer::sPreset, &info.mBufferID); mBuffers[kPortIndexOutput].push(info); mBuffers[kPortIndexOutput].push_back(info); ALOGV("[%s] allocated meta buffer with ID %u", mComponentName.c_str(), info.mBufferID); Loading Loading @@ -1462,7 +1465,7 @@ void ACodec::notifyOfRenderedFrames(bool dropIncomplete, FrameRenderTracker::Inf it != done.cend(); ++it) { ssize_t index = it->getIndex(); if (index >= 0 && (size_t)index < mBuffers[kPortIndexOutput].size()) { mBuffers[kPortIndexOutput].editItemAt(index).mRenderInfo = NULL; mBuffers[kPortIndexOutput][index].mRenderInfo = NULL; } else if (index >= 0) { // THIS SHOULD NEVER HAPPEN ALOGE("invalid index %zd in %zu", index, mBuffers[kPortIndexOutput].size()); Loading Loading @@ -1502,7 +1505,7 @@ ACodec::BufferInfo *ACodec::dequeueBufferFromNativeWindow() { bool stale = false; for (size_t i = mBuffers[kPortIndexOutput].size(); i > 0;) { i--; BufferInfo *info = &mBuffers[kPortIndexOutput].editItemAt(i); BufferInfo *info = &mBuffers[kPortIndexOutput][i]; if (info->mGraphicBuffer != NULL && info->mGraphicBuffer->handle == buf->handle) { Loading Loading @@ -1550,8 +1553,7 @@ ACodec::BufferInfo *ACodec::dequeueBufferFromNativeWindow() { BufferInfo *oldest = NULL; for (size_t i = mBuffers[kPortIndexOutput].size(); i > 0;) { i--; BufferInfo *info = &mBuffers[kPortIndexOutput].editItemAt(i); BufferInfo *info = &mBuffers[kPortIndexOutput][i]; if (info->mStatus == BufferInfo::OWNED_BY_NATIVE_WINDOW && (oldest == NULL || // avoid potential issues from counter rolling over Loading Loading @@ -1608,8 +1610,7 @@ status_t ACodec::freeOutputBuffersNotOwnedByComponent() { status_t err = OK; for (size_t i = mBuffers[kPortIndexOutput].size(); i > 0;) { i--; BufferInfo *info = &mBuffers[kPortIndexOutput].editItemAt(i); BufferInfo *info = &mBuffers[kPortIndexOutput][i]; // At this time some buffers may still be with the component // or being drained. Loading @@ -1626,7 +1627,7 @@ status_t ACodec::freeOutputBuffersNotOwnedByComponent() { } status_t ACodec::freeBuffer(OMX_U32 portIndex, size_t i) { BufferInfo *info = &mBuffers[portIndex].editItemAt(i); BufferInfo *info = &mBuffers[portIndex][i]; status_t err = OK; // there should not be any fences in the metadata Loading Loading @@ -1666,14 +1667,14 @@ status_t ACodec::freeBuffer(OMX_U32 portIndex, size_t i) { } // remove buffer even if mOMXNode->freeBuffer fails mBuffers[portIndex].removeAt(i); mBuffers[portIndex].erase(mBuffers[portIndex].begin() + i); return err; } ACodec::BufferInfo *ACodec::findBufferByID( uint32_t portIndex, IOMX::buffer_id bufferID, ssize_t *index) { for (size_t i = 0; i < mBuffers[portIndex].size(); ++i) { BufferInfo *info = &mBuffers[portIndex].editItemAt(i); BufferInfo *info = &mBuffers[portIndex][i]; if (info->mBufferID == bufferID) { if (index != NULL) { Loading Loading @@ -5102,7 +5103,7 @@ size_t ACodec::countBuffersOwnedByComponent(OMX_U32 portIndex) const { size_t n = 0; for (size_t i = 0; i < mBuffers[portIndex].size(); ++i) { const BufferInfo &info = mBuffers[portIndex].itemAt(i); const BufferInfo &info = mBuffers[portIndex][i]; if (info.mStatus == BufferInfo::OWNED_BY_COMPONENT) { ++n; Loading @@ -5116,7 +5117,7 @@ size_t ACodec::countBuffersOwnedByNativeWindow() const { size_t n = 0; for (size_t i = 0; i < mBuffers[kPortIndexOutput].size(); ++i) { const BufferInfo &info = mBuffers[kPortIndexOutput].itemAt(i); const BufferInfo &info = mBuffers[kPortIndexOutput][i]; if (info.mStatus == BufferInfo::OWNED_BY_NATIVE_WINDOW) { ++n; Loading @@ -5143,7 +5144,7 @@ void ACodec::waitUntilAllPossibleNativeWindowBuffersAreReturnedToUs() { bool ACodec::allYourBuffersAreBelongToUs( OMX_U32 portIndex) { for (size_t i = 0; i < mBuffers[portIndex].size(); ++i) { BufferInfo *info = &mBuffers[portIndex].editItemAt(i); BufferInfo *info = &mBuffers[portIndex][i]; if (info->mStatus != BufferInfo::OWNED_BY_US && info->mStatus != BufferInfo::OWNED_BY_NATIVE_WINDOW) { Loading Loading @@ -6482,7 +6483,7 @@ void ACodec::BaseState::getMoreInputDataIfPossible() { BufferInfo *eligible = NULL; for (size_t i = 0; i < mCodec->mBuffers[kPortIndexInput].size(); ++i) { BufferInfo *info = &mCodec->mBuffers[kPortIndexInput].editItemAt(i); BufferInfo *info = &mCodec->mBuffers[kPortIndexInput][i]; #if 0 if (info->mStatus == BufferInfo::OWNED_BY_UPSTREAM) { Loading Loading @@ -7514,7 +7515,7 @@ void ACodec::ExecutingState::submitOutputMetaBuffers() { // submit as many buffers as there are input buffers with the codec // in case we are in port reconfiguring for (size_t i = 0; i < mCodec->mBuffers[kPortIndexInput].size(); ++i) { BufferInfo *info = &mCodec->mBuffers[kPortIndexInput].editItemAt(i); BufferInfo *info = &mCodec->mBuffers[kPortIndexInput][i]; if (info->mStatus == BufferInfo::OWNED_BY_COMPONENT) { if (mCodec->submitOutputMetadataBuffer() != OK) Loading @@ -7532,7 +7533,7 @@ void ACodec::ExecutingState::submitOutputMetaBuffers() { void ACodec::ExecutingState::submitRegularOutputBuffers() { bool failed = false; for (size_t i = 0; i < mCodec->mBuffers[kPortIndexOutput].size(); ++i) { BufferInfo *info = &mCodec->mBuffers[kPortIndexOutput].editItemAt(i); BufferInfo *info = &mCodec->mBuffers[kPortIndexOutput][i]; if (mCodec->mNativeWindow != NULL) { if (info->mStatus != BufferInfo::OWNED_BY_US Loading Loading @@ -7589,7 +7590,7 @@ void ACodec::ExecutingState::resume() { } for (size_t i = 0; i < mCodec->mBuffers[kPortIndexInput].size(); i++) { BufferInfo *info = &mCodec->mBuffers[kPortIndexInput].editItemAt(i); BufferInfo *info = &mCodec->mBuffers[kPortIndexInput][i]; if (info->mStatus == BufferInfo::OWNED_BY_US) { postFillThisBuffer(info); } Loading Loading @@ -8593,7 +8594,7 @@ bool ACodec::OutputPortSettingsChangedState::onOMXEvent( ALOGV("[%s] Output port now disabled.", mCodec->mComponentName.c_str()); status_t err = OK; if (!mCodec->mBuffers[kPortIndexOutput].isEmpty()) { if (!mCodec->mBuffers[kPortIndexOutput].empty()) { ALOGE("disabled port should be empty, but has %zu buffers", mCodec->mBuffers[kPortIndexOutput].size()); err = FAILED_TRANSACTION; Loading
media/libstagefright/include/media/stagefright/ACodec.h +2 −1 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ #include <stdint.h> #include <list> #include <vector> #include <android/native_window.h> #include <media/hardware/MetadataBufferType.h> #include <media/MediaCodecInfo.h> Loading Loading @@ -266,7 +267,7 @@ private: sp<AMessage> mBaseOutputFormat; FrameRenderTracker mRenderTracker; // render information for buffers rendered by ACodec Vector<BufferInfo> mBuffers[2]; std::vector<BufferInfo> mBuffers[2]; bool mPortEOS[2]; status_t mInputEOSResult; Loading