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

Commit e47d4448 authored by Chong Zhang's avatar Chong Zhang
Browse files

send available codec buffer count with codec notification

Bug: 14679336
Change-Id: Id927c96a9a14dd6ecd72540f0037d5841aa32154
parent d8b03abf
Loading
Loading
Loading
Loading
+12 −4
Original line number Diff line number Diff line
@@ -604,13 +604,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();
    }