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

Commit f0d98899 authored by Chong Zhang's avatar Chong Zhang Committed by Android Git Automerger
Browse files

am aaa527fb: Merge "send available codec buffer count with codec notification" into lmp-dev

* commit 'aaa527fb':
  send available codec buffer count with codec notification
parents 2e74aefd aaa527fb
Loading
Loading
Loading
Loading
+12 −4
Original line number Diff line number Diff line
@@ -622,13 +622,21 @@ void NuPlayer::Decoder::onMessageReceived(const sp<AMessage> &msg) {
        case kWhatCodecNotify:
        {
            if (!isStaleReply(msg)) {
                if (!mPaused) {
                    while (handleAnInputBuffer()) {
                int32_t numInput, numOutput;

                if (!msg->findInt32("input-buffers", &numInput)) {
                    numInput = INT32_MAX;
                }

                if (!msg->findInt32("output-buffers", &numOutput)) {
                    numOutput = INT32_MAX;
                }

                while (handleAnOutputBuffer()) {
                if (!mPaused) {
                    while (numInput-- > 0 && handleAnInputBuffer()) {}
                }

                while (numOutput-- > 0 && handleAnOutputBuffer()) {}
            }

            requestCodecNotification();
+15 −2
Original line number Diff line number Diff line
@@ -2141,11 +2141,24 @@ void MediaCodec::postActivityNotificationIfPossible() {
        return;
    }

    if ((mFlags & (kFlagStickyError
    bool isErrorOrOutputChanged =
            (mFlags & (kFlagStickyError
                    | kFlagOutputBuffersChanged
                    | kFlagOutputFormatChanged))
                    | kFlagOutputFormatChanged));

    if (isErrorOrOutputChanged
            || !mAvailPortBuffers[kPortIndexInput].empty()
            || !mAvailPortBuffers[kPortIndexOutput].empty()) {
        mActivityNotify->setInt32("input-buffers",
                mAvailPortBuffers[kPortIndexInput].size());

        if (isErrorOrOutputChanged) {
            // we want consumer to dequeue as many times as it can
            mActivityNotify->setInt32("output-buffers", INT32_MAX);
        } else {
            mActivityNotify->setInt32("output-buffers",
                    mAvailPortBuffers[kPortIndexOutput].size());
        }
        mActivityNotify->post();
        mActivityNotify.clear();
    }