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

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

Merge "Reduce the latecy of encoding 1st frame" into rvc-dev

parents 7045366d 84e512b6
Loading
Loading
Loading
Loading
+6 −4
Original line number Original line Diff line number Diff line
@@ -62,7 +62,7 @@ public:
            android::base::unique_fd &&fd0,
            android::base::unique_fd &&fd0,
            android::base::unique_fd &&fd1) {
            android::base::unique_fd &&fd1) {
        Mutexed<Jobs>::Locked jobs(mJobs);
        Mutexed<Jobs>::Locked jobs(mJobs);
        auto it = jobs->queues.try_emplace(comp, comp, systemTime()).first;
        auto it = jobs->queues.try_emplace(comp, comp).first;
        it->second.workList.emplace_back(
        it->second.workList.emplace_back(
                std::move(work), fenceFd, std::move(fd0), std::move(fd1));
                std::move(work), fenceFd, std::move(fd0), std::move(fd1));
        jobs->cond.broadcast();
        jobs->cond.broadcast();
@@ -79,7 +79,8 @@ protected:
            for (auto it = jobs->queues.begin(); it != jobs->queues.end(); ) {
            for (auto it = jobs->queues.begin(); it != jobs->queues.end(); ) {
                Queue &queue = it->second;
                Queue &queue = it->second;
                if (queue.workList.empty()
                if (queue.workList.empty()
                        || nowNs - queue.lastQueuedTimestampNs < kIntervalNs) {
                        || (queue.lastQueuedTimestampNs != 0 &&
                            nowNs - queue.lastQueuedTimestampNs < kIntervalNs)) {
                    ++it;
                    ++it;
                    continue;
                    continue;
                }
                }
@@ -104,6 +105,7 @@ protected:
                    sp<Fence> fence(new Fence(fenceFd));
                    sp<Fence> fence(new Fence(fenceFd));
                    fence->waitForever(LOG_TAG);
                    fence->waitForever(LOG_TAG);
                }
                }
                queue.lastQueuedTimestampNs = nowNs;
                comp->queue(&items);
                comp->queue(&items);
                for (android::base::unique_fd &ufd : uniqueFds) {
                for (android::base::unique_fd &ufd : uniqueFds) {
                    (void)ufd.release();
                    (void)ufd.release();
@@ -143,8 +145,8 @@ private:
        android::base::unique_fd fd1;
        android::base::unique_fd fd1;
    };
    };
    struct Queue {
    struct Queue {
        Queue(const std::shared_ptr<Codec2Client::Component> &comp, nsecs_t timestamp)
        Queue(const std::shared_ptr<Codec2Client::Component> &comp)
            : component(comp), lastQueuedTimestampNs(timestamp) {}
            : component(comp), lastQueuedTimestampNs(0) {}
        Queue(const Queue &) = delete;
        Queue(const Queue &) = delete;
        Queue &operator =(const Queue &) = delete;
        Queue &operator =(const Queue &) = delete;