Loading media/libstagefright/MediaCodec.cpp +7 −2 Original line number Diff line number Diff line Loading @@ -314,7 +314,7 @@ MediaCodec::BufferInfo::BufferInfo() : mOwnedByClient(false) {} class MediaCodec::ReleaseSurface { public: ReleaseSurface() { explicit ReleaseSurface(uint64_t usage) { BufferQueue::createBufferQueue(&mProducer, &mConsumer); mSurface = new Surface(mProducer, false /* controlledByApp */); struct ConsumerListener : public BnConsumerListener { Loading @@ -325,6 +325,7 @@ public: sp<ConsumerListener> listener{new ConsumerListener}; mConsumer->consumerConnect(listener, false); mConsumer->setConsumerName(String8{"MediaCodec.release"}); mConsumer->setConsumerUsageBits(usage); } const sp<Surface> &getSurface() { Loading Loading @@ -3090,7 +3091,11 @@ void MediaCodec::onMessageReceived(const sp<AMessage> &msg) { if (msg->findMessage("async", &asyncNotify) && asyncNotify != nullptr) { if (mSurface != NULL) { if (!mReleaseSurface) { mReleaseSurface.reset(new ReleaseSurface); uint64_t usage = 0; if (mSurface->getConsumerUsage(&usage) != OK) { usage = 0; } mReleaseSurface.reset(new ReleaseSurface(usage)); } if (mSurface != mReleaseSurface->getSurface()) { status_t err = connectToSurface(mReleaseSurface->getSurface()); Loading Loading
media/libstagefright/MediaCodec.cpp +7 −2 Original line number Diff line number Diff line Loading @@ -314,7 +314,7 @@ MediaCodec::BufferInfo::BufferInfo() : mOwnedByClient(false) {} class MediaCodec::ReleaseSurface { public: ReleaseSurface() { explicit ReleaseSurface(uint64_t usage) { BufferQueue::createBufferQueue(&mProducer, &mConsumer); mSurface = new Surface(mProducer, false /* controlledByApp */); struct ConsumerListener : public BnConsumerListener { Loading @@ -325,6 +325,7 @@ public: sp<ConsumerListener> listener{new ConsumerListener}; mConsumer->consumerConnect(listener, false); mConsumer->setConsumerName(String8{"MediaCodec.release"}); mConsumer->setConsumerUsageBits(usage); } const sp<Surface> &getSurface() { Loading Loading @@ -3090,7 +3091,11 @@ void MediaCodec::onMessageReceived(const sp<AMessage> &msg) { if (msg->findMessage("async", &asyncNotify) && asyncNotify != nullptr) { if (mSurface != NULL) { if (!mReleaseSurface) { mReleaseSurface.reset(new ReleaseSurface); uint64_t usage = 0; if (mSurface->getConsumerUsage(&usage) != OK) { usage = 0; } mReleaseSurface.reset(new ReleaseSurface(usage)); } if (mSurface != mReleaseSurface->getSurface()) { status_t err = connectToSurface(mReleaseSurface->getSurface()); Loading