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

Commit 3e8ad0e1 authored by Android Build Coastguard Worker's avatar Android Build Coastguard Worker
Browse files

Snap for 12974810 from ceb16e70 to 25Q2-release

Change-Id: Ied465cea6d45c4745ed480bf3f545ed2f08935d6
parents dae7b155 ceb16e70
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -881,7 +881,10 @@ ACameraManager::isCameraDeviceSharingSupported(
    ret = ACameraMetadata_getConstEntry(chars, ANDROID_SHARED_SESSION_OUTPUT_CONFIGURATIONS,
            &entry);
    if (ret != ACAMERA_OK) {
        return ret;
        // If shared session metadata is not found return with sharing
        // supported as false.
        *isSharingSupported = false;
        return ACAMERA_OK;
    }
    *isSharingSupported =  (entry.count > 0) ? true : false;
    return ACAMERA_OK;
+18 −63
Original line number Diff line number Diff line
@@ -155,7 +155,6 @@ C2SoftAacEnc::C2SoftAacEnc(
      mNumBytesPerInputFrame(0u),
      mOutBufferSize(0u),
      mSentCodecSpecificData(false),
      mInputSize(0),
      mSignalledError(false),
      mOutIndex(0u),
      mRemainderLen(0u) {
@@ -180,7 +179,6 @@ status_t C2SoftAacEnc::initEncoder() {

c2_status_t C2SoftAacEnc::onStop() {
    mSentCodecSpecificData = false;
    mInputSize = 0u;
    mNextFrameTimestampUs.reset();
    mLastFrameEndTimestampUs.reset();
    mSignalledError = false;
@@ -205,7 +203,6 @@ c2_status_t C2SoftAacEnc::onFlush_sm() {
        }
    }
    mSentCodecSpecificData = false;
    mInputSize = 0u;
    mNextFrameTimestampUs.reset();
    mLastFrameEndTimestampUs.reset();
    mRemainderLen = 0;
@@ -409,14 +406,6 @@ void C2SoftAacEnc::process(
                + (capacity / sizeof(int16_t) * 1000000ll / channelCount / sampleRate);
    }

    size_t numFrames =
        (mRemainderLen + capacity + mInputSize + (eos ? mNumBytesPerInputFrame - 1 : 0))
        / mNumBytesPerInputFrame;
    ALOGV("capacity = %zu; mInputSize = %zu; numFrames = %zu "
          "mNumBytesPerInputFrame = %u inputTS = %lld remaining = %zu",
          capacity, mInputSize, numFrames, mNumBytesPerInputFrame, inputTimestampUs.peekll(),
          mRemainderLen);

    std::shared_ptr<C2LinearBlock> block;
    std::unique_ptr<C2WriteView> wView;
    uint8_t *outPtr = temp;
@@ -509,8 +498,9 @@ void C2SoftAacEnc::process(
            inargs.numInSamples = 0;
        }
    }
    while (encoderErr == AACENC_OK && inargs.numInSamples >= channelCount) {
        if (numFrames && !block) {
    int processedSampleCntInCurrBatch = 0;
    while (encoderErr == AACENC_OK && (inargs.numInSamples >= channelCount || eos)) {
        if (!block) {
            C2MemoryUsage usage = { C2MemoryUsage::CPU_READ, C2MemoryUsage::CPU_WRITE };
            // TODO: error handling, proper usage, etc.
            c2_status_t err = pool->fetchLinearBlock(mOutBufferSize, usage, &block);
@@ -523,7 +513,6 @@ void C2SoftAacEnc::process(
            wView.reset(new C2WriteView(block->map().get()));
            outPtr = wView->data();
            outAvailable = wView->size();
            --numFrames;
        }

        memset(&outargs, 0, sizeof(outargs));
@@ -531,6 +520,10 @@ void C2SoftAacEnc::process(
        outBuffer[0] = outPtr;
        outBufferSize[0] = outAvailable;

        // flush
        if (eos && inargs.numInSamples < channelCount) {
            inargs.numInSamples = -1;
        }
        encoderErr = aacEncEncode(mAACEncoder,
                                  &inBufDesc,
                                  &outBufDesc,
@@ -539,15 +532,16 @@ void C2SoftAacEnc::process(

        if (encoderErr == AACENC_OK) {
            if (outargs.numOutBytes > 0) {
                mInputSize = 0;
                int consumed = (capacity / sizeof(int16_t)) - inargs.numInSamples
                        + outargs.numInSamples;
                ALOGV("consumed = %d, capacity = %zu, inSamples = %d, outSamples = %d",
                      consumed, capacity, inargs.numInSamples, outargs.numInSamples);
                processedSampleCntInCurrBatch += mNumBytesPerInputFrame / sizeof(int16_t);
                ALOGV("processedSampleCntInCurrBatch = %d, capacity = %zu, inSamples = %d, "
                      "outSamples = %d",
                      processedSampleCntInCurrBatch, capacity, inargs.numInSamples,
                      outargs.numInSamples);
                c2_cntr64_t currentFrameTimestampUs = *mNextFrameTimestampUs;
                mNextFrameTimestampUs = inputTimestampUs
                        + (consumed * 1000000ll / channelCount / sampleRate);
                std::shared_ptr<C2Buffer> buffer = createLinearBuffer(block, 0, outargs.numOutBytes);
                mNextFrameTimestampUs = inputTimestampUs + (processedSampleCntInCurrBatch *
                                                            1000000ll / channelCount / sampleRate);
                std::shared_ptr<C2Buffer> buffer =
                        createLinearBuffer(block, 0, outargs.numOutBytes);
#if 0
                hexdump(outPtr, std::min(outargs.numOutBytes, 256));
#endif
@@ -556,8 +550,6 @@ void C2SoftAacEnc::process(
                block.reset();

                outputBuffers.push_back({buffer, currentFrameTimestampUs});
            } else {
                mInputSize += outargs.numInSamples * sizeof(int16_t);
            }

            if (inBuffer[0] == mRemainder) {
@@ -575,44 +567,8 @@ void C2SoftAacEnc::process(
            inBufferSize[0] = 0;
            inargs.numInSamples = 0;
        }
        ALOGV("encoderErr = %d mInputSize = %zu "
              "inargs.numInSamples = %d, mNextFrameTimestampUs = %lld",
              encoderErr, mInputSize, inargs.numInSamples, mNextFrameTimestampUs->peekll());
    }
    if (eos && inBufferSize[0] > 0) {
        if (numFrames && !block) {
            C2MemoryUsage usage = { C2MemoryUsage::CPU_READ, C2MemoryUsage::CPU_WRITE };
            // TODO: error handling, proper usage, etc.
            c2_status_t err = pool->fetchLinearBlock(mOutBufferSize, usage, &block);
            if (err != C2_OK) {
                ALOGE("fetchLinearBlock failed : err = %d", err);
                work->result = C2_NO_MEMORY;
                return;
            }

            wView.reset(new C2WriteView(block->map().get()));
            outPtr = wView->data();
            outAvailable = wView->size();
            --numFrames;
        }

        memset(&outargs, 0, sizeof(outargs));

        outBuffer[0] = outPtr;
        outBufferSize[0] = outAvailable;

        // Flush
        inargs.numInSamples = -1;

        (void)aacEncEncode(mAACEncoder,
                           &inBufDesc,
                           &outBufDesc,
                           &inargs,
                           &outargs);

        // after flush, discard remaining input bytes.
        inBuffer[0] = nullptr;
        inBufferSize[0] = 0;
        ALOGV("encoderErr = %d, inargs.numInSamples = %d, mNextFrameTimestampUs = %lld", encoderErr,
              inargs.numInSamples, mNextFrameTimestampUs->peekll());
    }

    if (inBufferSize[0] > 0) {
@@ -670,7 +626,6 @@ c2_status_t C2SoftAacEnc::drain(

    (void)pool;
    mSentCodecSpecificData = false;
    mInputSize = 0u;
    mNextFrameTimestampUs.reset();
    mLastFrameEndTimestampUs.reset();

+0 −1
Original line number Diff line number Diff line
@@ -58,7 +58,6 @@ private:
    UINT mOutBufferSize;

    bool mSentCodecSpecificData;
    size_t mInputSize;
    std::optional<c2_cntr64_t> mNextFrameTimestampUs;
    std::optional<c2_cntr64_t> mLastFrameEndTimestampUs;

+3 −2
Original line number Diff line number Diff line
@@ -1415,7 +1415,8 @@ status_t AudioSystem::getInputForAttr(const audio_attributes_t* attr,
                                      audio_config_base_t* config,
                                      audio_input_flags_t flags,
                                      audio_port_handle_t* selectedDeviceId,
                                      audio_port_handle_t* portId) {
                                      audio_port_handle_t* portId,
                                      audio_source_t* source) {
    if (attr == NULL) {
        ALOGE("getInputForAttr NULL attr - shouldn't happen");
        return BAD_VALUE;
@@ -1463,7 +1464,7 @@ status_t AudioSystem::getInputForAttr(const audio_attributes_t* attr,
    *selectedDeviceId = VALUE_OR_RETURN_STATUS(
            aidl2legacy_int32_t_audio_port_handle_t(response.selectedDeviceId));
    *portId = VALUE_OR_RETURN_STATUS(aidl2legacy_int32_t_audio_port_handle_t(response.portId));

    *source = VALUE_OR_RETURN_STATUS(aidl2legacy_AudioSource_audio_source_t(response.source));
    return OK;
}

+3 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package android.media;

import android.media.audio.common.AudioConfigBase;
import android.media.audio.common.AudioSource;

/**
 * {@hide}
@@ -32,4 +33,6 @@ parcelable GetInputForAttrResponse {
    int virtualDeviceId;
    /** The suggested config if fails to get an input. **/
    AudioConfigBase config;
    /** The audio source, possibly updated by audio policy manager */
    AudioSource source;
}
Loading