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

Commit b3c084af authored by Andreas Huber's avatar Andreas Huber Committed by Android (Google) Code Review
Browse files

Merge "Signal errors to the client instead of asserting in ACodec."

parents 6b316513 6032a601
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -316,9 +316,11 @@ void NuPlayer::onMessageReceived(const sp<AMessage> &msg) {
                                &cropLeft, &cropTop, &cropRight, &cropBottom));

                    LOGV("Video output format changed to %d x %d "
                         "(crop: %d, %d, %d, %d)",
                         "(crop: %d x %d @ (%d, %d))",
                         width, height,
                         cropLeft, cropTop, cropRight, cropBottom);
                         (cropRight - cropLeft + 1),
                         (cropBottom - cropTop + 1),
                         cropLeft, cropTop);

                    notifyListener(
                            MEDIA_SET_VIDEO_SIZE,
+28 −17
Original line number Diff line number Diff line
@@ -395,12 +395,24 @@ void NuPlayer::Renderer::onQueueBuffer(const sp<AMessage> &msg) {
        postDrainVideoQueue();
    }

    if (mSyncQueues && !mAudioQueue.empty() && !mVideoQueue.empty()) {
    if (!mSyncQueues || mAudioQueue.empty() || mVideoQueue.empty()) {
        return;
    }

    sp<ABuffer> firstAudioBuffer = (*mAudioQueue.begin()).mBuffer;
    sp<ABuffer> firstVideoBuffer = (*mVideoQueue.begin()).mBuffer;

    if (firstAudioBuffer == NULL || firstVideoBuffer == NULL) {
        // EOS signalled on either queue.
        syncQueuesDone();
        return;
    }

    int64_t firstAudioTimeUs;
    int64_t firstVideoTimeUs;
        CHECK((*mAudioQueue.begin()).mBuffer->meta()
    CHECK(firstAudioBuffer->meta()
            ->findInt64("timeUs", &firstAudioTimeUs));
        CHECK((*mVideoQueue.begin()).mBuffer->meta()
    CHECK(firstVideoBuffer->meta()
            ->findInt64("timeUs", &firstVideoTimeUs));

    int64_t diff = firstVideoTimeUs - firstAudioTimeUs;
@@ -418,7 +430,6 @@ void NuPlayer::Renderer::onQueueBuffer(const sp<AMessage> &msg) {

    syncQueuesDone();
}
}

void NuPlayer::Renderer::syncQueuesDone() {
    if (!mSyncQueues) {
+23 −3
Original line number Diff line number Diff line
@@ -1738,7 +1738,17 @@ ACodec::LoadedToIdleState::LoadedToIdleState(ACodec *codec)
void ACodec::LoadedToIdleState::stateEntered() {
    LOGV("[%s] Now Loaded->Idle", mCodec->mComponentName.c_str());

    CHECK_EQ(allocateBuffers(), (status_t)OK);
    status_t err;
    if ((err = allocateBuffers()) != OK) {
        LOGE("Failed to allocate buffers after transitioning to IDLE state "
             "(error 0x%08x)",
             err);

        sp<AMessage> notify = mCodec->mNotify->dup();
        notify->setInt32("what", ACodec::kWhatError);
        notify->setInt32("omx-error", OMX_ErrorUndefined);
        notify->post();
    }
}

status_t ACodec::LoadedToIdleState::allocateBuffers() {
@@ -2046,8 +2056,18 @@ bool ACodec::OutputPortSettingsChangedState::onOMXEvent(
                            mCodec->mNode, OMX_CommandPortEnable, kPortIndexOutput),
                         (status_t)OK);

                CHECK_EQ(mCodec->allocateBuffersOnPort(kPortIndexOutput),
                         (status_t)OK);
                status_t err;
                if ((err = mCodec->allocateBuffersOnPort(
                                kPortIndexOutput)) != OK) {
                    LOGE("Failed to allocate output port buffers after "
                         "port reconfiguration (error 0x%08x)",
                         err);

                    sp<AMessage> notify = mCodec->mNotify->dup();
                    notify->setInt32("what", ACodec::kWhatError);
                    notify->setInt32("omx-error", OMX_ErrorUndefined);
                    notify->post();
                }

                return true;
            } else if (data1 == (OMX_U32)OMX_CommandPortEnable) {