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

Commit 04143e41 authored by Andy Hung's avatar Andy Hung Committed by Android (Google) Code Review
Browse files

Merge "Audio resampler update to add S16 filters"

parents 554a69a8 86eae0e5
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -23,7 +23,8 @@ LOCAL_SRC_FILES:= \
    AudioPolicyService.cpp      \
    ServiceUtilities.cpp        \
    AudioResamplerCubic.cpp.arm \
    AudioResamplerSinc.cpp.arm
    AudioResamplerSinc.cpp.arm  \
    AudioResamplerDyn.cpp.arm

LOCAL_SRC_FILES += StateQueue.cpp

@@ -77,7 +78,8 @@ LOCAL_SRC_FILES:= \
    test-resample.cpp           \
    AudioResampler.cpp.arm      \
    AudioResamplerCubic.cpp.arm \
    AudioResamplerSinc.cpp.arm
    AudioResamplerSinc.cpp.arm  \
    AudioResamplerDyn.cpp.arm

LOCAL_C_INCLUDES := \
    $(call include-path-for, audio-utils)
+26 −1
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@
#include "AudioResampler.h"
#include "AudioResamplerSinc.h"
#include "AudioResamplerCubic.h"
#include "AudioResamplerDyn.h"

#ifdef __arm__
#include <machine/cpu-features.h>
@@ -85,6 +86,9 @@ bool AudioResampler::qualityIsSupported(src_quality quality)
    case MED_QUALITY:
    case HIGH_QUALITY:
    case VERY_HIGH_QUALITY:
    case DYN_LOW_QUALITY:
    case DYN_MED_QUALITY:
    case DYN_HIGH_QUALITY:
        return true;
    default:
        return false;
@@ -105,7 +109,7 @@ void AudioResampler::init_routine()
        if (*endptr == '\0') {
            defaultQuality = (src_quality) l;
            ALOGD("forcing AudioResampler quality to %d", defaultQuality);
            if (defaultQuality < DEFAULT_QUALITY || defaultQuality > VERY_HIGH_QUALITY) {
            if (defaultQuality < DEFAULT_QUALITY || defaultQuality > DYN_HIGH_QUALITY) {
                defaultQuality = DEFAULT_QUALITY;
            }
        }
@@ -125,6 +129,12 @@ uint32_t AudioResampler::qualityMHz(src_quality quality)
        return 20;
    case VERY_HIGH_QUALITY:
        return 34;
    case DYN_LOW_QUALITY:
        return 4;
    case DYN_MED_QUALITY:
        return 6;
    case DYN_HIGH_QUALITY:
        return 12;
    }
}

@@ -175,6 +185,15 @@ AudioResampler* AudioResampler::create(int bitDepth, int inChannelCount,
        case VERY_HIGH_QUALITY:
            quality = HIGH_QUALITY;
            break;
        case DYN_LOW_QUALITY:
            atFinalQuality = true;
            break;
        case DYN_MED_QUALITY:
            quality = DYN_LOW_QUALITY;
            break;
        case DYN_HIGH_QUALITY:
            quality = DYN_MED_QUALITY;
            break;
        }
    }
    pthread_mutex_unlock(&mutex);
@@ -200,6 +219,12 @@ AudioResampler* AudioResampler::create(int bitDepth, int inChannelCount,
        ALOGV("Create VERY_HIGH_QUALITY sinc Resampler = %d", quality);
        resampler = new AudioResamplerSinc(bitDepth, inChannelCount, sampleRate, quality);
        break;
    case DYN_LOW_QUALITY:
    case DYN_MED_QUALITY:
    case DYN_HIGH_QUALITY:
        ALOGV("Create dynamic Resampler = %d", quality);
        resampler = new AudioResamplerDyn(bitDepth, inChannelCount, sampleRate, quality);
        break;
    }

    // initialize resampler
+3 −0
Original line number Diff line number Diff line
@@ -41,6 +41,9 @@ public:
        MED_QUALITY=2,
        HIGH_QUALITY=3,
        VERY_HIGH_QUALITY=4,
        DYN_LOW_QUALITY=5,
        DYN_MED_QUALITY=6,
        DYN_HIGH_QUALITY=7,
    };

    static AudioResampler* create(int bitDepth, int inChannelCount,
+530 −0

File added.

Preview size limit exceeded, changes collapsed.

+123 −0

File added.

Preview size limit exceeded, changes collapsed.

Loading