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

Commit d906119a authored by Xin Li's avatar Xin Li Committed by Gerrit Code Review
Browse files

Merge "Merge TP1A.221005.003"

parents e02cc395 68870e55
Loading
Loading
Loading
Loading
+4 −3
Original line number Original line Diff line number Diff line
@@ -618,13 +618,14 @@ void AAVCAssembler::submitAccessUnit() {


int32_t AAVCAssembler::pickStartSeq(const Queue *queue,
int32_t AAVCAssembler::pickStartSeq(const Queue *queue,
        uint32_t first, int64_t play, int64_t jit) {
        uint32_t first, int64_t play, int64_t jit) {
    CHECK(!queue->empty());
    // pick the first sequence number has the start bit.
    // pick the first sequence number has the start bit.
    sp<ABuffer> buffer = *(queue->begin());
    sp<ABuffer> buffer = *(queue->begin());
    int32_t firstSeqNo = buffer->int32Data();
    int32_t firstSeqNo = buffer->int32Data();


    // This only works for FU-A type & non-start sequence
    // This only works for FU-A type & non-start sequence
    unsigned nalType = buffer->data()[0] & 0x1f;
    int32_t nalType = buffer->size() >= 1 ? buffer->data()[0] & 0x1f : -1;
    if (nalType != 28 || buffer->data()[1] & 0x80) {
    if (nalType != 28 || (buffer->size() >= 2 && buffer->data()[1] & 0x80)) {
        return firstSeqNo;
        return firstSeqNo;
    }
    }


@@ -634,7 +635,7 @@ int32_t AAVCAssembler::pickStartSeq(const Queue *queue,
        if (rtpTime + jit >= play) {
        if (rtpTime + jit >= play) {
            break;
            break;
        }
        }
        if ((data[1] & 0x80)) {
        if (it->size() >= 2 && (data[1] & 0x80)) {
            const int32_t seqNo = it->int32Data();
            const int32_t seqNo = it->int32Data();
            ALOGE("finding [HEAD] pkt. \t Seq# (%d ~ )[%d", firstSeqNo, seqNo);
            ALOGE("finding [HEAD] pkt. \t Seq# (%d ~ )[%d", firstSeqNo, seqNo);
            firstSeqNo = seqNo;
            firstSeqNo = seqNo;
+12 −0
Original line number Original line Diff line number Diff line
@@ -9669,6 +9669,12 @@ status_t AudioFlinger::MmapThread::start(const AudioClient& client,
    if (isOutput()) {
    if (isOutput()) {
        ret = AudioSystem::startOutput(portId);
        ret = AudioSystem::startOutput(portId);
    } else {
    } else {
        {
            // Add the track record before starting input so that the silent status for the
            // client can be cached.
            Mutex::Autolock _l(mLock);
            setClientSilencedState_l(portId, false /*silenced*/);
        }
        ret = AudioSystem::startInput(portId);
        ret = AudioSystem::startInput(portId);
    }
    }


@@ -9687,6 +9693,7 @@ status_t AudioFlinger::MmapThread::start(const AudioClient& client,
        } else {
        } else {
            mHalStream->stop();
            mHalStream->stop();
        }
        }
        eraseClientSilencedState_l(portId);
        return PERMISSION_DENIED;
        return PERMISSION_DENIED;
    }
    }


@@ -9695,6 +9702,9 @@ status_t AudioFlinger::MmapThread::start(const AudioClient& client,
                                        mChannelMask, mSessionId, isOutput(),
                                        mChannelMask, mSessionId, isOutput(),
                                        client.attributionSource,
                                        client.attributionSource,
                                        IPCThreadState::self()->getCallingPid(), portId);
                                        IPCThreadState::self()->getCallingPid(), portId);
    if (!isOutput()) {
        track->setSilenced_l(isClientSilenced_l(portId));
    }


    if (isOutput()) {
    if (isOutput()) {
        // force volume update when a new track is added
        // force volume update when a new track is added
@@ -9752,6 +9762,7 @@ status_t AudioFlinger::MmapThread::stop(audio_port_handle_t handle)
    }
    }


    mActiveTracks.remove(track);
    mActiveTracks.remove(track);
    eraseClientSilencedState_l(track->portId());


    mLock.unlock();
    mLock.unlock();
    if (isOutput()) {
    if (isOutput()) {
@@ -10542,6 +10553,7 @@ void AudioFlinger::MmapCaptureThread::setRecordSilenced(audio_port_handle_t port
            broadcast_l();
            broadcast_l();
        }
        }
    }
    }
    setClientSilencedIfExists_l(portId, silenced);
}
}


void AudioFlinger::MmapCaptureThread::toAudioPortConfig(struct audio_port_config *config)
void AudioFlinger::MmapCaptureThread::toAudioPortConfig(struct audio_port_config *config)
+21 −0
Original line number Original line Diff line number Diff line
@@ -2105,6 +2105,26 @@ class MmapThread : public ThreadBase


    virtual     bool        isStreamInitialized() { return false; }
    virtual     bool        isStreamInitialized() { return false; }


                void        setClientSilencedState_l(audio_port_handle_t portId, bool silenced) {
                                mClientSilencedStates[portId] = silenced;
                            }

                size_t      eraseClientSilencedState_l(audio_port_handle_t portId) {
                                return mClientSilencedStates.erase(portId);
                            }

                bool        isClientSilenced_l(audio_port_handle_t portId) const {
                                const auto it = mClientSilencedStates.find(portId);
                                return it != mClientSilencedStates.end() ? it->second : false;
                            }

                void        setClientSilencedIfExists_l(audio_port_handle_t portId, bool silenced) {
                                const auto it = mClientSilencedStates.find(portId);
                                if (it != mClientSilencedStates.end()) {
                                    it->second = silenced;
                                }
                            }

 protected:
 protected:
                void        dumpInternals_l(int fd, const Vector<String16>& args) override;
                void        dumpInternals_l(int fd, const Vector<String16>& args) override;
                void        dumpTracks_l(int fd, const Vector<String16>& args) override;
                void        dumpTracks_l(int fd, const Vector<String16>& args) override;
@@ -2124,6 +2144,7 @@ class MmapThread : public ThreadBase
                AudioHwDevice* const    mAudioHwDev;
                AudioHwDevice* const    mAudioHwDev;
                ActiveTracks<MmapTrack> mActiveTracks;
                ActiveTracks<MmapTrack> mActiveTracks;
                float                   mHalVolFloat;
                float                   mHalVolFloat;
                std::map<audio_port_handle_t, bool> mClientSilencedStates;


                int32_t                 mNoCallbackWarningCount;
                int32_t                 mNoCallbackWarningCount;
     static     constexpr int32_t       kMaxNoCallbackWarnings = 5;
     static     constexpr int32_t       kMaxNoCallbackWarnings = 5;