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

Commit a8464f17 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Transcoder: Send more granular heartbeats on transcoder start up." into sc-dev

parents f09d5fa8 d2bef930
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -366,6 +366,12 @@ media_status_t TranscoderWrapper::setupTranscoder(
        return AMEDIA_ERROR_INVALID_OPERATION;
    }

    // Unwrap the callback and send heartbeats to the client after each operation during setup.
    auto callback = mCallback.lock();
    if (callback == nullptr) {
        return AMEDIA_ERROR_INVALID_OPERATION;
    }

    Status status;
    ::ndk::ScopedFileDescriptor srcFd, dstFd;
    int srcFdInt = request.sourceFd.get();
@@ -379,6 +385,8 @@ media_status_t TranscoderWrapper::setupTranscoder(
        srcFdInt = srcFd.get();
    }

    callback->onHeartBeat(clientId, sessionId);

    int dstFdInt = request.destinationFd.get();
    if (dstFdInt < 0) {
        // Open dest file with "rw", as the transcoder could potentially reuse part of it
@@ -393,6 +401,8 @@ media_status_t TranscoderWrapper::setupTranscoder(
        dstFdInt = dstFd.get();
    }

    callback->onHeartBeat(clientId, sessionId);

    mCurrentClientId = clientId;
    mCurrentSessionId = sessionId;
    mCurrentCallingUid = callingUid;
@@ -405,6 +415,8 @@ media_status_t TranscoderWrapper::setupTranscoder(
        return AMEDIA_ERROR_UNKNOWN;
    }

    callback->onHeartBeat(clientId, sessionId);

    media_status_t err = mTranscoder->configureSource(srcFdInt);
    if (err != AMEDIA_OK) {
        ALOGE("failed to configure source: %d", err);
@@ -412,6 +424,8 @@ media_status_t TranscoderWrapper::setupTranscoder(
        return err;
    }

    callback->onHeartBeat(clientId, sessionId);

    std::vector<std::shared_ptr<AMediaFormat>> trackFormats = mTranscoder->getTrackFormats();
    if (trackFormats.size() == 0) {
        ALOGE("failed to get track formats!");
@@ -419,6 +433,8 @@ media_status_t TranscoderWrapper::setupTranscoder(
        return AMEDIA_ERROR_MALFORMED;
    }

    callback->onHeartBeat(clientId, sessionId);

    for (int i = 0; i < trackFormats.size(); ++i) {
        std::shared_ptr<AMediaFormat> format;
        const char* mime = nullptr;
@@ -437,6 +453,8 @@ media_status_t TranscoderWrapper::setupTranscoder(
            *failureReason = TranscodingLogger::SessionEndedReason::CONFIG_TRACK_FAILED;
            return err;
        }

        callback->onHeartBeat(clientId, sessionId);
    }

    err = mTranscoder->configureDestination(dstFdInt);
@@ -446,6 +464,8 @@ media_status_t TranscoderWrapper::setupTranscoder(
        return err;
    }

    callback->onHeartBeat(clientId, sessionId);

    return AMEDIA_OK;
}

+1 −1
Original line number Diff line number Diff line
@@ -328,8 +328,8 @@ media_status_t MediaSampleWriter::runWriterLoop(bool* wasStopped) NO_THREAD_SAFE
                }
                lastProgressUpdate = progress;
            }
            progressSinceLastReport = true;
        }
        progressSinceLastReport = true;
    }

    return AMEDIA_OK;
+5 −0
Original line number Diff line number Diff line
@@ -158,6 +158,11 @@ void MediaTranscoder::onTrackFormatAvailable(const MediaTrackTranscoder* transco
        return;
    }

    // The sample writer is not yet started so notify the caller that progress is still made.
    if (mHeartBeatIntervalUs > 0) {
        mCallbacks->onHeartBeat(this);
    }

    MediaTrackTranscoder* mutableTranscoder = const_cast<MediaTrackTranscoder*>(transcoder);
    mutableTranscoder->setSampleConsumer(consumer);