Loading media/codec2/sfplugin/CCodecBufferChannel.cpp +7 −8 Original line number Diff line number Diff line Loading @@ -625,21 +625,19 @@ void CCodecBufferChannel::feedInputBufferIfAvailableInternal() { Mutexed<Output>::Locked output(mOutput); if (!output->buffers || output->buffers->hasPending() || output->buffers->numClientBuffers() >= output->numSlots) { output->buffers->numActiveSlots() >= output->numSlots) { return; } } size_t numInputSlots = mInput.lock()->numSlots; for (size_t i = 0; i < numInputSlots; ++i) { if (mPipelineWatcher.lock()->pipelineFull()) { return; } size_t numActiveSlots = 0; while (!mPipelineWatcher.lock()->pipelineFull()) { sp<MediaCodecBuffer> inBuffer; size_t index; { Mutexed<Input>::Locked input(mInput); if (input->buffers->numClientBuffers() >= input->numSlots) { return; numActiveSlots = input->buffers->numActiveSlots(); if (numActiveSlots >= input->numSlots) { break; } if (!input->buffers->requestNewBuffer(&index, &inBuffer)) { ALOGV("[%s] no new buffer available", mName); Loading @@ -649,6 +647,7 @@ void CCodecBufferChannel::feedInputBufferIfAvailableInternal() { ALOGV("[%s] new input index = %zu [%p]", mName, index, inBuffer.get()); mCallback->onInputBufferAvailable(index, inBuffer); } ALOGV("[%s] # active slots after feedInputBufferIfAvailable = %zu", mName, numActiveSlots); } status_t CCodecBufferChannel::renderOutputBuffer( Loading media/codec2/sfplugin/CCodecBuffers.cpp +19 −18 Original line number Diff line number Diff line Loading @@ -489,11 +489,12 @@ void FlexBuffersImpl::flush() { mBuffers.clear(); } size_t FlexBuffersImpl::numClientBuffers() const { size_t FlexBuffersImpl::numActiveSlots() const { return std::count_if( mBuffers.begin(), mBuffers.end(), [](const Entry &entry) { return (entry.clientBuffer != nullptr); return (entry.clientBuffer != nullptr || !entry.compBuffer.expired()); }); } Loading Loading @@ -639,11 +640,11 @@ void BuffersArrayImpl::grow( } } size_t BuffersArrayImpl::numClientBuffers() const { size_t BuffersArrayImpl::numActiveSlots() const { return std::count_if( mBuffers.begin(), mBuffers.end(), [](const Entry &entry) { return entry.ownedByClient; return entry.ownedByClient || !entry.compBuffer.expired(); }); } Loading Loading @@ -693,8 +694,8 @@ void InputBuffersArray::flush() { mImpl.flush(); } size_t InputBuffersArray::numClientBuffers() const { return mImpl.numClientBuffers(); size_t InputBuffersArray::numActiveSlots() const { return mImpl.numActiveSlots(); } sp<Codec2Buffer> InputBuffersArray::createNewBuffer() { Loading Loading @@ -731,8 +732,8 @@ std::unique_ptr<InputBuffers> SlotInputBuffers::toArrayMode(size_t) { return nullptr; } size_t SlotInputBuffers::numClientBuffers() const { return mImpl.numClientBuffers(); size_t SlotInputBuffers::numActiveSlots() const { return mImpl.numActiveSlots(); } sp<Codec2Buffer> SlotInputBuffers::createNewBuffer() { Loading Loading @@ -783,8 +784,8 @@ std::unique_ptr<InputBuffers> LinearInputBuffers::toArrayMode(size_t size) { return std::move(array); } size_t LinearInputBuffers::numClientBuffers() const { return mImpl.numClientBuffers(); size_t LinearInputBuffers::numActiveSlots() const { return mImpl.numActiveSlots(); } // static Loading Loading @@ -960,8 +961,8 @@ std::unique_ptr<InputBuffers> GraphicMetadataInputBuffers::toArrayMode( return std::move(array); } size_t GraphicMetadataInputBuffers::numClientBuffers() const { return mImpl.numClientBuffers(); size_t GraphicMetadataInputBuffers::numActiveSlots() const { return mImpl.numActiveSlots(); } sp<Codec2Buffer> GraphicMetadataInputBuffers::createNewBuffer() { Loading Loading @@ -1025,8 +1026,8 @@ std::unique_ptr<InputBuffers> GraphicInputBuffers::toArrayMode(size_t size) { return std::move(array); } size_t GraphicInputBuffers::numClientBuffers() const { return mImpl.numClientBuffers(); size_t GraphicInputBuffers::numActiveSlots() const { return mImpl.numActiveSlots(); } sp<Codec2Buffer> GraphicInputBuffers::createNewBuffer() { Loading Loading @@ -1115,8 +1116,8 @@ void OutputBuffersArray::getArray(Vector<sp<MediaCodecBuffer>> *array) const { mImpl.getArray(array); } size_t OutputBuffersArray::numClientBuffers() const { return mImpl.numClientBuffers(); size_t OutputBuffersArray::numActiveSlots() const { return mImpl.numActiveSlots(); } void OutputBuffersArray::realloc(const std::shared_ptr<C2Buffer> &c2buffer) { Loading Loading @@ -1226,8 +1227,8 @@ std::unique_ptr<OutputBuffersArray> FlexOutputBuffers::toArrayMode(size_t size) return array; } size_t FlexOutputBuffers::numClientBuffers() const { return mImpl.numClientBuffers(); size_t FlexOutputBuffers::numActiveSlots() const { return mImpl.numActiveSlots(); } // LinearOutputBuffers Loading media/codec2/sfplugin/CCodecBuffers.h +11 −11 Original line number Diff line number Diff line Loading @@ -72,7 +72,7 @@ public: /** * Return number of buffers the client owns. */ virtual size_t numClientBuffers() const = 0; virtual size_t numActiveSlots() const = 0; /** * Examine image data from the buffer and update the format if necessary. Loading Loading @@ -584,7 +584,7 @@ public: * Return the number of buffers that are sent to the client but not released * yet. */ size_t numClientBuffers() const; size_t numActiveSlots() const; /** * Return the number of buffers that are sent to the component but not Loading Loading @@ -705,7 +705,7 @@ public: * Return the number of buffers that are sent to the client but not released * yet. */ size_t numClientBuffers() const; size_t numActiveSlots() const; /** * Return the size of the array. Loading Loading @@ -765,7 +765,7 @@ public: void flush() override; size_t numClientBuffers() const final; size_t numActiveSlots() const final; protected: sp<Codec2Buffer> createNewBuffer() override; Loading Loading @@ -796,7 +796,7 @@ public: std::unique_ptr<InputBuffers> toArrayMode(size_t size) final; size_t numClientBuffers() const final; size_t numActiveSlots() const final; protected: sp<Codec2Buffer> createNewBuffer() final; Loading Loading @@ -826,7 +826,7 @@ public: std::unique_ptr<InputBuffers> toArrayMode(size_t size) override; size_t numClientBuffers() const final; size_t numActiveSlots() const final; protected: sp<Codec2Buffer> createNewBuffer() override; Loading Loading @@ -894,7 +894,7 @@ public: std::unique_ptr<InputBuffers> toArrayMode(size_t size) final; size_t numClientBuffers() const final; size_t numActiveSlots() const final; protected: sp<Codec2Buffer> createNewBuffer() override; Loading Loading @@ -924,7 +924,7 @@ public: std::unique_ptr<InputBuffers> toArrayMode( size_t size) final; size_t numClientBuffers() const final; size_t numActiveSlots() const final; protected: sp<Codec2Buffer> createNewBuffer() override; Loading Loading @@ -965,7 +965,7 @@ public: array->clear(); } size_t numClientBuffers() const final { size_t numActiveSlots() const final { return 0u; } Loading Loading @@ -1019,7 +1019,7 @@ public: void getArray(Vector<sp<MediaCodecBuffer>> *array) const final; size_t numClientBuffers() const final; size_t numActiveSlots() const final; /** * Reallocate the array, filled with buffers with the same size as given Loading Loading @@ -1073,7 +1073,7 @@ public: std::unique_ptr<OutputBuffersArray> toArrayMode(size_t size) override; size_t numClientBuffers() const final; size_t numActiveSlots() const final; /** * Return an appropriate Codec2Buffer object for the type of buffers. Loading Loading
media/codec2/sfplugin/CCodecBufferChannel.cpp +7 −8 Original line number Diff line number Diff line Loading @@ -625,21 +625,19 @@ void CCodecBufferChannel::feedInputBufferIfAvailableInternal() { Mutexed<Output>::Locked output(mOutput); if (!output->buffers || output->buffers->hasPending() || output->buffers->numClientBuffers() >= output->numSlots) { output->buffers->numActiveSlots() >= output->numSlots) { return; } } size_t numInputSlots = mInput.lock()->numSlots; for (size_t i = 0; i < numInputSlots; ++i) { if (mPipelineWatcher.lock()->pipelineFull()) { return; } size_t numActiveSlots = 0; while (!mPipelineWatcher.lock()->pipelineFull()) { sp<MediaCodecBuffer> inBuffer; size_t index; { Mutexed<Input>::Locked input(mInput); if (input->buffers->numClientBuffers() >= input->numSlots) { return; numActiveSlots = input->buffers->numActiveSlots(); if (numActiveSlots >= input->numSlots) { break; } if (!input->buffers->requestNewBuffer(&index, &inBuffer)) { ALOGV("[%s] no new buffer available", mName); Loading @@ -649,6 +647,7 @@ void CCodecBufferChannel::feedInputBufferIfAvailableInternal() { ALOGV("[%s] new input index = %zu [%p]", mName, index, inBuffer.get()); mCallback->onInputBufferAvailable(index, inBuffer); } ALOGV("[%s] # active slots after feedInputBufferIfAvailable = %zu", mName, numActiveSlots); } status_t CCodecBufferChannel::renderOutputBuffer( Loading
media/codec2/sfplugin/CCodecBuffers.cpp +19 −18 Original line number Diff line number Diff line Loading @@ -489,11 +489,12 @@ void FlexBuffersImpl::flush() { mBuffers.clear(); } size_t FlexBuffersImpl::numClientBuffers() const { size_t FlexBuffersImpl::numActiveSlots() const { return std::count_if( mBuffers.begin(), mBuffers.end(), [](const Entry &entry) { return (entry.clientBuffer != nullptr); return (entry.clientBuffer != nullptr || !entry.compBuffer.expired()); }); } Loading Loading @@ -639,11 +640,11 @@ void BuffersArrayImpl::grow( } } size_t BuffersArrayImpl::numClientBuffers() const { size_t BuffersArrayImpl::numActiveSlots() const { return std::count_if( mBuffers.begin(), mBuffers.end(), [](const Entry &entry) { return entry.ownedByClient; return entry.ownedByClient || !entry.compBuffer.expired(); }); } Loading Loading @@ -693,8 +694,8 @@ void InputBuffersArray::flush() { mImpl.flush(); } size_t InputBuffersArray::numClientBuffers() const { return mImpl.numClientBuffers(); size_t InputBuffersArray::numActiveSlots() const { return mImpl.numActiveSlots(); } sp<Codec2Buffer> InputBuffersArray::createNewBuffer() { Loading Loading @@ -731,8 +732,8 @@ std::unique_ptr<InputBuffers> SlotInputBuffers::toArrayMode(size_t) { return nullptr; } size_t SlotInputBuffers::numClientBuffers() const { return mImpl.numClientBuffers(); size_t SlotInputBuffers::numActiveSlots() const { return mImpl.numActiveSlots(); } sp<Codec2Buffer> SlotInputBuffers::createNewBuffer() { Loading Loading @@ -783,8 +784,8 @@ std::unique_ptr<InputBuffers> LinearInputBuffers::toArrayMode(size_t size) { return std::move(array); } size_t LinearInputBuffers::numClientBuffers() const { return mImpl.numClientBuffers(); size_t LinearInputBuffers::numActiveSlots() const { return mImpl.numActiveSlots(); } // static Loading Loading @@ -960,8 +961,8 @@ std::unique_ptr<InputBuffers> GraphicMetadataInputBuffers::toArrayMode( return std::move(array); } size_t GraphicMetadataInputBuffers::numClientBuffers() const { return mImpl.numClientBuffers(); size_t GraphicMetadataInputBuffers::numActiveSlots() const { return mImpl.numActiveSlots(); } sp<Codec2Buffer> GraphicMetadataInputBuffers::createNewBuffer() { Loading Loading @@ -1025,8 +1026,8 @@ std::unique_ptr<InputBuffers> GraphicInputBuffers::toArrayMode(size_t size) { return std::move(array); } size_t GraphicInputBuffers::numClientBuffers() const { return mImpl.numClientBuffers(); size_t GraphicInputBuffers::numActiveSlots() const { return mImpl.numActiveSlots(); } sp<Codec2Buffer> GraphicInputBuffers::createNewBuffer() { Loading Loading @@ -1115,8 +1116,8 @@ void OutputBuffersArray::getArray(Vector<sp<MediaCodecBuffer>> *array) const { mImpl.getArray(array); } size_t OutputBuffersArray::numClientBuffers() const { return mImpl.numClientBuffers(); size_t OutputBuffersArray::numActiveSlots() const { return mImpl.numActiveSlots(); } void OutputBuffersArray::realloc(const std::shared_ptr<C2Buffer> &c2buffer) { Loading Loading @@ -1226,8 +1227,8 @@ std::unique_ptr<OutputBuffersArray> FlexOutputBuffers::toArrayMode(size_t size) return array; } size_t FlexOutputBuffers::numClientBuffers() const { return mImpl.numClientBuffers(); size_t FlexOutputBuffers::numActiveSlots() const { return mImpl.numActiveSlots(); } // LinearOutputBuffers Loading
media/codec2/sfplugin/CCodecBuffers.h +11 −11 Original line number Diff line number Diff line Loading @@ -72,7 +72,7 @@ public: /** * Return number of buffers the client owns. */ virtual size_t numClientBuffers() const = 0; virtual size_t numActiveSlots() const = 0; /** * Examine image data from the buffer and update the format if necessary. Loading Loading @@ -584,7 +584,7 @@ public: * Return the number of buffers that are sent to the client but not released * yet. */ size_t numClientBuffers() const; size_t numActiveSlots() const; /** * Return the number of buffers that are sent to the component but not Loading Loading @@ -705,7 +705,7 @@ public: * Return the number of buffers that are sent to the client but not released * yet. */ size_t numClientBuffers() const; size_t numActiveSlots() const; /** * Return the size of the array. Loading Loading @@ -765,7 +765,7 @@ public: void flush() override; size_t numClientBuffers() const final; size_t numActiveSlots() const final; protected: sp<Codec2Buffer> createNewBuffer() override; Loading Loading @@ -796,7 +796,7 @@ public: std::unique_ptr<InputBuffers> toArrayMode(size_t size) final; size_t numClientBuffers() const final; size_t numActiveSlots() const final; protected: sp<Codec2Buffer> createNewBuffer() final; Loading Loading @@ -826,7 +826,7 @@ public: std::unique_ptr<InputBuffers> toArrayMode(size_t size) override; size_t numClientBuffers() const final; size_t numActiveSlots() const final; protected: sp<Codec2Buffer> createNewBuffer() override; Loading Loading @@ -894,7 +894,7 @@ public: std::unique_ptr<InputBuffers> toArrayMode(size_t size) final; size_t numClientBuffers() const final; size_t numActiveSlots() const final; protected: sp<Codec2Buffer> createNewBuffer() override; Loading Loading @@ -924,7 +924,7 @@ public: std::unique_ptr<InputBuffers> toArrayMode( size_t size) final; size_t numClientBuffers() const final; size_t numActiveSlots() const final; protected: sp<Codec2Buffer> createNewBuffer() override; Loading Loading @@ -965,7 +965,7 @@ public: array->clear(); } size_t numClientBuffers() const final { size_t numActiveSlots() const final { return 0u; } Loading Loading @@ -1019,7 +1019,7 @@ public: void getArray(Vector<sp<MediaCodecBuffer>> *array) const final; size_t numClientBuffers() const final; size_t numActiveSlots() const final; /** * Reallocate the array, filled with buffers with the same size as given Loading Loading @@ -1073,7 +1073,7 @@ public: std::unique_ptr<OutputBuffersArray> toArrayMode(size_t size) override; size_t numClientBuffers() const final; size_t numActiveSlots() const final; /** * Return an appropriate Codec2Buffer object for the type of buffers. Loading