CCodec: Stop using output surface on stop()
Stop using output surface when MediaCodec#stop() was called.
Bug: 227121136
Change-Id: I43849d48d6c7b6d2a2b32ba346b7e45ff830f2a9
diff --git a/media/codec2/hidl/client/client.cpp b/media/codec2/hidl/client/client.cpp
index 42b3c43..198894d 100644
--- a/media/codec2/hidl/client/client.cpp
+++ b/media/codec2/hidl/client/client.cpp
@@ -1586,6 +1586,23 @@
mOutputBufferQueue->updateMaxDequeueBufferCount(maxDequeueCount);
}
+void Codec2Client::Component::stopUsingOutputSurface(
+ C2BlockPool::local_id_t blockPoolId) {
+ mOutputBufferQueue->stop();
+ Return<Status> transStatus = mBase1_0->setOutputSurface(
+ static_cast<uint64_t>(blockPoolId), nullptr);
+ if (!transStatus.isOk()) {
+ LOG(ERROR) << "setOutputSurface(stopUsingOutputSurface) -- transaction failed.";
+ } else {
+ c2_status_t status =
+ static_cast<c2_status_t>(static_cast<Status>(transStatus));
+ if (status != C2_OK) {
+ LOG(DEBUG) << "setOutputSurface(stopUsingOutputSurface) -- call failed: "
+ << status << ".";
+ }
+ }
+}
+
c2_status_t Codec2Client::Component::connectToInputSurface(
const std::shared_ptr<InputSurface>& inputSurface,
std::shared_ptr<InputSurfaceConnection>* connection) {