Loading camera/OWNERS +0 −1 Original line number Diff line number Diff line Loading @@ -2,7 +2,6 @@ etalvala@google.com arakesh@google.com borgera@google.com bkukreja@google.com epeev@google.com jchowdhary@google.com rdhanjal@google.com Loading media/audio/aconfig/audioserver.aconfig +7 −0 Original line number Diff line number Diff line Loading @@ -38,6 +38,13 @@ flag { bug: "364923030" } flag { name: "enable_gmap_mode" namespace: "media_audio" description: "enable track metadata tag generation for GMAP." bug: "366456949" } # shipped 24Q3 flag { name: "fdtostring_timeout_fix" Loading media/libeffects/loudness/EffectLoudnessEnhancer.cpp +10 −14 Original line number Diff line number Diff line Loading @@ -103,7 +103,9 @@ int LE_setConfig(LoudnessEnhancerContext *pContext, effect_config_t *pConfig) if (pConfig->inputCfg.samplingRate != pConfig->outputCfg.samplingRate) return -EINVAL; if (pConfig->inputCfg.channels != pConfig->outputCfg.channels) return -EINVAL; if (pConfig->inputCfg.format != pConfig->outputCfg.format) return -EINVAL; if (pConfig->inputCfg.channels != AUDIO_CHANNEL_OUT_STEREO) return -EINVAL; if (audio_channel_count_from_out_mask(pConfig->inputCfg.channels) > FCC_LIMIT) { return -EINVAL; } if (pConfig->outputCfg.accessMode != EFFECT_BUFFER_ACCESS_WRITE && pConfig->outputCfg.accessMode != EFFECT_BUFFER_ACCESS_ACCUMULATE) return -EINVAL; if (pConfig->inputCfg.format != kProcessFormat) return -EINVAL; Loading Loading @@ -278,27 +280,22 @@ int LE_process( } //ALOGV("LE about to process %d samples", inBuffer->frameCount); uint16_t inIdx; constexpr float scale = 1 << 15; // power of 2 is lossless conversion to int16_t range constexpr float inverseScale = 1.f / scale; const float inputAmp = pow(10, pContext->mTargetGainmB/2000.0f) * scale; float leftSample, rightSample; for (inIdx = 0 ; inIdx < inBuffer->frameCount ; inIdx++) { // makeup gain is applied on the input of the compressor leftSample = inputAmp * inBuffer->f32[2*inIdx]; rightSample = inputAmp * inBuffer->f32[2*inIdx +1]; pContext->mCompressor->Compress(&leftSample, &rightSample); inBuffer->f32[2*inIdx] = leftSample * inverseScale; inBuffer->f32[2*inIdx +1] = rightSample * inverseScale; } const size_t channelCount = audio_channel_count_from_out_mask(pContext->mConfig.outputCfg.channels); pContext->mCompressor->Compress( channelCount, inputAmp, inverseScale, inBuffer->f32, inBuffer->frameCount); if (inBuffer->raw != outBuffer->raw) { const size_t sampleCount = outBuffer->frameCount * channelCount; if (pContext->mConfig.outputCfg.accessMode == EFFECT_BUFFER_ACCESS_ACCUMULATE) { for (size_t i = 0; i < outBuffer->frameCount*2; i++) { for (size_t i = 0; i < sampleCount; i++) { outBuffer->f32[i] += inBuffer->f32[i]; } } else { memcpy(outBuffer->raw, inBuffer->raw, outBuffer->frameCount * 2 * sizeof(float)); memcpy(outBuffer->raw, inBuffer->raw, sampleCount * sizeof(float)); } } if (pContext->mState != LOUDNESS_ENHANCER_STATE_ACTIVE) { Loading Loading @@ -462,4 +459,3 @@ audio_effect_library_t AUDIO_EFFECT_LIBRARY_INFO_SYM = { }; }; // extern "C" media/libeffects/loudness/aidl/EffectLoudnessEnhancer.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -139,7 +139,8 @@ std::shared_ptr<EffectContext> LoudnessEnhancerImpl::createContext( LOG(DEBUG) << __func__ << " context already exist"; return mContext; } if (2 < getChannelCount(common.input.base.channelMask)) { const int channelCount = getChannelCount(common.input.base.channelMask); if (FCC_LIMIT < channelCount) { LOG(ERROR) << __func__ << " channelCount not supported: " << common.input.base.channelMask.toString(); return nullptr; Loading media/libeffects/loudness/aidl/LoudnessEnhancerContext.cpp +6 −25 Original line number Diff line number Diff line Loading @@ -69,34 +69,15 @@ IEffect::Status LoudnessEnhancerContext::process(float* in, float* out, int samp constexpr float scale = 1 << 15; // power of 2 is lossless conversion to int16_t range constexpr float inverseScale = 1.f / scale; const float inputAmp = pow(10, mGain / 2000.0f) * scale; float leftSample, rightSample; if (mCompressor != nullptr) { for (int inIdx = 0; inIdx < samples; inIdx += 2) { // makeup gain is applied on the input of the compressor leftSample = inputAmp * in[inIdx]; rightSample = inputAmp * in[inIdx + 1]; mCompressor->Compress(&leftSample, &rightSample); in[inIdx] = leftSample * inverseScale; in[inIdx + 1] = rightSample * inverseScale; } } else { for (int inIdx = 0; inIdx < samples; inIdx += 2) { leftSample = inputAmp * in[inIdx]; rightSample = inputAmp * in[inIdx + 1]; in[inIdx] = leftSample * inverseScale; in[inIdx + 1] = rightSample * inverseScale; } const size_t channelCount = aidl::android::hardware::audio::common::getChannelCount( mCommon.input.base.channelMask); const size_t frameCount = samples / channelCount; mCompressor->Compress(channelCount, inputAmp, inverseScale, in, frameCount); } bool accumulate = false; if (in != out) { for (int i = 0; i < samples; i++) { if (accumulate) { out[i] += in[i]; } else { out[i] = in[i]; } } // nit: update Compress() to write to out. memcpy(out, in, samples * sizeof(float)); } return {STATUS_OK, samples, samples}; } Loading Loading
camera/OWNERS +0 −1 Original line number Diff line number Diff line Loading @@ -2,7 +2,6 @@ etalvala@google.com arakesh@google.com borgera@google.com bkukreja@google.com epeev@google.com jchowdhary@google.com rdhanjal@google.com Loading
media/audio/aconfig/audioserver.aconfig +7 −0 Original line number Diff line number Diff line Loading @@ -38,6 +38,13 @@ flag { bug: "364923030" } flag { name: "enable_gmap_mode" namespace: "media_audio" description: "enable track metadata tag generation for GMAP." bug: "366456949" } # shipped 24Q3 flag { name: "fdtostring_timeout_fix" Loading
media/libeffects/loudness/EffectLoudnessEnhancer.cpp +10 −14 Original line number Diff line number Diff line Loading @@ -103,7 +103,9 @@ int LE_setConfig(LoudnessEnhancerContext *pContext, effect_config_t *pConfig) if (pConfig->inputCfg.samplingRate != pConfig->outputCfg.samplingRate) return -EINVAL; if (pConfig->inputCfg.channels != pConfig->outputCfg.channels) return -EINVAL; if (pConfig->inputCfg.format != pConfig->outputCfg.format) return -EINVAL; if (pConfig->inputCfg.channels != AUDIO_CHANNEL_OUT_STEREO) return -EINVAL; if (audio_channel_count_from_out_mask(pConfig->inputCfg.channels) > FCC_LIMIT) { return -EINVAL; } if (pConfig->outputCfg.accessMode != EFFECT_BUFFER_ACCESS_WRITE && pConfig->outputCfg.accessMode != EFFECT_BUFFER_ACCESS_ACCUMULATE) return -EINVAL; if (pConfig->inputCfg.format != kProcessFormat) return -EINVAL; Loading Loading @@ -278,27 +280,22 @@ int LE_process( } //ALOGV("LE about to process %d samples", inBuffer->frameCount); uint16_t inIdx; constexpr float scale = 1 << 15; // power of 2 is lossless conversion to int16_t range constexpr float inverseScale = 1.f / scale; const float inputAmp = pow(10, pContext->mTargetGainmB/2000.0f) * scale; float leftSample, rightSample; for (inIdx = 0 ; inIdx < inBuffer->frameCount ; inIdx++) { // makeup gain is applied on the input of the compressor leftSample = inputAmp * inBuffer->f32[2*inIdx]; rightSample = inputAmp * inBuffer->f32[2*inIdx +1]; pContext->mCompressor->Compress(&leftSample, &rightSample); inBuffer->f32[2*inIdx] = leftSample * inverseScale; inBuffer->f32[2*inIdx +1] = rightSample * inverseScale; } const size_t channelCount = audio_channel_count_from_out_mask(pContext->mConfig.outputCfg.channels); pContext->mCompressor->Compress( channelCount, inputAmp, inverseScale, inBuffer->f32, inBuffer->frameCount); if (inBuffer->raw != outBuffer->raw) { const size_t sampleCount = outBuffer->frameCount * channelCount; if (pContext->mConfig.outputCfg.accessMode == EFFECT_BUFFER_ACCESS_ACCUMULATE) { for (size_t i = 0; i < outBuffer->frameCount*2; i++) { for (size_t i = 0; i < sampleCount; i++) { outBuffer->f32[i] += inBuffer->f32[i]; } } else { memcpy(outBuffer->raw, inBuffer->raw, outBuffer->frameCount * 2 * sizeof(float)); memcpy(outBuffer->raw, inBuffer->raw, sampleCount * sizeof(float)); } } if (pContext->mState != LOUDNESS_ENHANCER_STATE_ACTIVE) { Loading Loading @@ -462,4 +459,3 @@ audio_effect_library_t AUDIO_EFFECT_LIBRARY_INFO_SYM = { }; }; // extern "C"
media/libeffects/loudness/aidl/EffectLoudnessEnhancer.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -139,7 +139,8 @@ std::shared_ptr<EffectContext> LoudnessEnhancerImpl::createContext( LOG(DEBUG) << __func__ << " context already exist"; return mContext; } if (2 < getChannelCount(common.input.base.channelMask)) { const int channelCount = getChannelCount(common.input.base.channelMask); if (FCC_LIMIT < channelCount) { LOG(ERROR) << __func__ << " channelCount not supported: " << common.input.base.channelMask.toString(); return nullptr; Loading
media/libeffects/loudness/aidl/LoudnessEnhancerContext.cpp +6 −25 Original line number Diff line number Diff line Loading @@ -69,34 +69,15 @@ IEffect::Status LoudnessEnhancerContext::process(float* in, float* out, int samp constexpr float scale = 1 << 15; // power of 2 is lossless conversion to int16_t range constexpr float inverseScale = 1.f / scale; const float inputAmp = pow(10, mGain / 2000.0f) * scale; float leftSample, rightSample; if (mCompressor != nullptr) { for (int inIdx = 0; inIdx < samples; inIdx += 2) { // makeup gain is applied on the input of the compressor leftSample = inputAmp * in[inIdx]; rightSample = inputAmp * in[inIdx + 1]; mCompressor->Compress(&leftSample, &rightSample); in[inIdx] = leftSample * inverseScale; in[inIdx + 1] = rightSample * inverseScale; } } else { for (int inIdx = 0; inIdx < samples; inIdx += 2) { leftSample = inputAmp * in[inIdx]; rightSample = inputAmp * in[inIdx + 1]; in[inIdx] = leftSample * inverseScale; in[inIdx + 1] = rightSample * inverseScale; } const size_t channelCount = aidl::android::hardware::audio::common::getChannelCount( mCommon.input.base.channelMask); const size_t frameCount = samples / channelCount; mCompressor->Compress(channelCount, inputAmp, inverseScale, in, frameCount); } bool accumulate = false; if (in != out) { for (int i = 0; i < samples; i++) { if (accumulate) { out[i] += in[i]; } else { out[i] = in[i]; } } // nit: update Compress() to write to out. memcpy(out, in, samples * sizeof(float)); } return {STATUS_OK, samples, samples}; } Loading