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

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

am f0011d49: Merge "MediaRecorder: only dequeue available buffers from MediaCodec" into lmp-dev

* commit 'f0011d49':
  MediaRecorder: only dequeue available buffers from MediaCodec
parents 23fe3c0a f0011d49
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -86,7 +86,7 @@ private:
    void releaseEncoder();
    status_t feedEncoderInputBuffers();
    void scheduleDoMoreWork();
    status_t doMoreWork();
    status_t doMoreWork(int32_t numInput, int32_t numOutput);
    void suspend();
    void resume(int64_t skipFramesBeforeUs = -1ll);
    void signalEOS(status_t err = ERROR_END_OF_STREAM);
+14 −5
Original line number Diff line number Diff line
@@ -615,11 +615,11 @@ status_t MediaCodecSource::feedEncoderInputBuffers() {
    return OK;
}

status_t MediaCodecSource::doMoreWork() {
    status_t err;
status_t MediaCodecSource::doMoreWork(int32_t numInput, int32_t numOutput) {
    status_t err = OK;

    if (!(mFlags & FLAG_USE_SURFACE_INPUT)) {
        for (;;) {
        while (numInput-- > 0) {
            size_t bufferIndex;
            err = mEncoder->dequeueInputBuffer(&bufferIndex);

@@ -633,7 +633,7 @@ status_t MediaCodecSource::doMoreWork() {
        feedEncoderInputBuffers();
    }

    for (;;) {
    while (numOutput-- > 0) {
        size_t bufferIndex;
        size_t offset;
        size_t size;
@@ -805,7 +805,16 @@ void MediaCodecSource::onMessageReceived(const sp<AMessage> &msg) {
            break;
        }

        status_t err = doMoreWork();
        int32_t numInput, numOutput;

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

        status_t err = doMoreWork(numInput, numOutput);

        if (err == OK) {
            scheduleDoMoreWork();