Loading media/libstagefright/MediaCodec.cpp +15 −2 Original line number Diff line number Diff line Loading @@ -321,11 +321,24 @@ public: BufferQueue::createBufferQueue(&mProducer, &mConsumer); mSurface = new Surface(mProducer, false /* controlledByApp */); struct ConsumerListener : public BnConsumerListener { void onFrameAvailable(const BufferItem&) override {} ConsumerListener(const sp<IGraphicBufferConsumer> &consumer) { mConsumer = consumer; } void onFrameAvailable(const BufferItem&) override { BufferItem buffer; // consume buffer sp<IGraphicBufferConsumer> consumer = mConsumer.promote(); if (consumer != nullptr && consumer->acquireBuffer(&buffer, 0) == NO_ERROR) { consumer->releaseBuffer(buffer.mSlot, buffer.mFrameNumber, EGL_NO_DISPLAY, EGL_NO_SYNC_KHR, buffer.mFence); } } wp<IGraphicBufferConsumer> mConsumer; void onBuffersReleased() override {} void onSidebandStreamChanged() override {} }; sp<ConsumerListener> listener{new ConsumerListener}; sp<ConsumerListener> listener{new ConsumerListener(mConsumer)}; mConsumer->consumerConnect(listener, false); mConsumer->setConsumerName(String8{"MediaCodec.release"}); mConsumer->setConsumerUsageBits(usage); Loading Loading
media/libstagefright/MediaCodec.cpp +15 −2 Original line number Diff line number Diff line Loading @@ -321,11 +321,24 @@ public: BufferQueue::createBufferQueue(&mProducer, &mConsumer); mSurface = new Surface(mProducer, false /* controlledByApp */); struct ConsumerListener : public BnConsumerListener { void onFrameAvailable(const BufferItem&) override {} ConsumerListener(const sp<IGraphicBufferConsumer> &consumer) { mConsumer = consumer; } void onFrameAvailable(const BufferItem&) override { BufferItem buffer; // consume buffer sp<IGraphicBufferConsumer> consumer = mConsumer.promote(); if (consumer != nullptr && consumer->acquireBuffer(&buffer, 0) == NO_ERROR) { consumer->releaseBuffer(buffer.mSlot, buffer.mFrameNumber, EGL_NO_DISPLAY, EGL_NO_SYNC_KHR, buffer.mFence); } } wp<IGraphicBufferConsumer> mConsumer; void onBuffersReleased() override {} void onSidebandStreamChanged() override {} }; sp<ConsumerListener> listener{new ConsumerListener}; sp<ConsumerListener> listener{new ConsumerListener(mConsumer)}; mConsumer->consumerConnect(listener, false); mConsumer->setConsumerName(String8{"MediaCodec.release"}); mConsumer->setConsumerUsageBits(usage); Loading