Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3f176f57 authored by Pawin Vongmasa's avatar Pawin Vongmasa Committed by android-build-team Robot
Browse files

setDequeueTimeout(-1) on the output surface

This ensures that allocation blocks in ACodec.

Test: make cts -j123 && cts-tradefed run cts-dev -m \
CtsMediaTestCases --compatibility:module-arg \
CtsMediaTestCases:include-annotation:\
android.platform.test.annotations.RequiresDevice

Bug: 120466624
Change-Id: I2fd0cbdf37324c9fc774fb9adf3e39a486cb2129
(cherry picked from commit 7b70a3122f024d73befe6bbfb923cc8a0834562a)
parent 86f616a7
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -783,6 +783,9 @@ status_t ACodec::handleSetSurface(const sp<Surface> &surface) {
    // need to enable allocation when attaching
    surface->getIGraphicBufferProducer()->allowAllocation(true);

    // dequeueBuffer cannot time out
    surface->setDequeueTimeout(-1);

    // for meta data mode, we move dequeud buffers to the new surface.
    // for non-meta mode, we must move all registered buffers
    for (size_t i = 0; i < buffers.size(); ++i) {
+2 −0
Original line number Diff line number Diff line
@@ -2198,6 +2198,7 @@ void MediaCodec::onMessageReceived(const sp<AMessage> &msg) {
                            }

                            if (mime.startsWithIgnoreCase("video/")) {
                                mSurface->setDequeueTimeout(-1);
                                mSoftRenderer = new SoftwareRenderer(mSurface, mRotationDegrees);
                            }
                        }
@@ -2485,6 +2486,7 @@ void MediaCodec::onMessageReceived(const sp<AMessage> &msg) {
                                            && (mFlags & kFlagPushBlankBuffersOnShutdown)) {
                                        pushBlankBuffersToNativeWindow(mSurface.get());
                                    }
                                    surface->setDequeueTimeout(-1);
                                    mSoftRenderer = new SoftwareRenderer(surface);
                                    // TODO: check if this was successful
                                } else {