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

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

Merge changes from topic "addlibaudiofoundation"

* changes:
  Make AudioGain parcelable.
  Move AudioGain to libaudiofoundation.
parents b639c40f 84e43c72
Loading
Loading
Loading
Loading
+33 −0
Original line number Diff line number Diff line
cc_library_headers {
    name: "libaudiofoundation_headers",
    vendor_available: true,
    export_include_dirs: ["include"],
}

cc_library_shared {
    name: "libaudiofoundation",
    vendor_available: true,

    srcs: [
        "AudioGain.cpp",
    ],

    shared_libs: [
        "libbase",
        "libbinder",
        "liblog",
        "libutils",
    ],

    header_libs: [
        "libaudio_system_headers",
        "libaudiofoundation_headers",
    ],

    export_header_lib_headers: ["libaudiofoundation_headers"],

    cflags: [
        "-Werror",
        "-Wall",
    ],
}
+174 −0
Original line number Diff line number Diff line
@@ -14,7 +14,7 @@
 * limitations under the License.
 */

#define LOG_TAG "APM::AudioGain"
#define LOG_TAG "AudioGain"
//#define LOG_NDEBUG 0

//#define VERY_VERBOSE_LOGGING
@@ -24,9 +24,9 @@
#define ALOGVV(a...) do { } while(0)
#endif

#include "AudioGain.h"
#include <android-base/stringprintf.h>
#include <media/AudioGain.h>
#include <utils/Log.h>
#include <utils/String8.h>

#include <math.h>

@@ -98,17 +98,77 @@ status_t AudioGain::checkConfig(const struct audio_gain_config *config)
    return NO_ERROR;
}

void AudioGain::dump(String8 *dst, int spaces, int index) const
void AudioGain::dump(std::string *dst, int spaces, int index) const
{
    dst->appendFormat("%*sGain %d:\n", spaces, "", index+1);
    dst->appendFormat("%*s- mode: %08x\n", spaces, "", mGain.mode);
    dst->appendFormat("%*s- channel_mask: %08x\n", spaces, "", mGain.channel_mask);
    dst->appendFormat("%*s- min_value: %d mB\n", spaces, "", mGain.min_value);
    dst->appendFormat("%*s- max_value: %d mB\n", spaces, "", mGain.max_value);
    dst->appendFormat("%*s- default_value: %d mB\n", spaces, "", mGain.default_value);
    dst->appendFormat("%*s- step_value: %d mB\n", spaces, "", mGain.step_value);
    dst->appendFormat("%*s- min_ramp_ms: %d ms\n", spaces, "", mGain.min_ramp_ms);
    dst->appendFormat("%*s- max_ramp_ms: %d ms\n", spaces, "", mGain.max_ramp_ms);
    dst->append(base::StringPrintf("%*sGain %d:\n", spaces, "", index+1));
    dst->append(base::StringPrintf("%*s- mode: %08x\n", spaces, "", mGain.mode));
    dst->append(base::StringPrintf("%*s- channel_mask: %08x\n", spaces, "", mGain.channel_mask));
    dst->append(base::StringPrintf("%*s- min_value: %d mB\n", spaces, "", mGain.min_value));
    dst->append(base::StringPrintf("%*s- max_value: %d mB\n", spaces, "", mGain.max_value));
    dst->append(base::StringPrintf("%*s- default_value: %d mB\n", spaces, "", mGain.default_value));
    dst->append(base::StringPrintf("%*s- step_value: %d mB\n", spaces, "", mGain.step_value));
    dst->append(base::StringPrintf("%*s- min_ramp_ms: %d ms\n", spaces, "", mGain.min_ramp_ms));
    dst->append(base::StringPrintf("%*s- max_ramp_ms: %d ms\n", spaces, "", mGain.max_ramp_ms));
}

status_t AudioGain::writeToParcel(android::Parcel *parcel) const
{
    status_t status = NO_ERROR;
    if ((status = parcel->writeInt32(mIndex)) != NO_ERROR) return status;
    if ((status = parcel->writeBool(mUseInChannelMask)) != NO_ERROR) return status;
    if ((status = parcel->writeBool(mUseForVolume)) != NO_ERROR) return status;
    if ((status = parcel->writeUint32(mGain.mode)) != NO_ERROR) return status;
    if ((status = parcel->writeUint32(mGain.channel_mask)) != NO_ERROR) return status;
    if ((status = parcel->writeInt32(mGain.min_value)) != NO_ERROR) return status;
    if ((status = parcel->writeInt32(mGain.max_value)) != NO_ERROR) return status;
    if ((status = parcel->writeInt32(mGain.default_value)) != NO_ERROR) return status;
    if ((status = parcel->writeUint32(mGain.step_value)) != NO_ERROR) return status;
    if ((status = parcel->writeUint32(mGain.min_ramp_ms)) != NO_ERROR) return status;
    status = parcel->writeUint32(mGain.max_ramp_ms);
    return status;
}

status_t AudioGain::readFromParcel(const android::Parcel *parcel)
{
    status_t status = NO_ERROR;
    if ((status = parcel->readInt32(&mIndex)) != NO_ERROR) return status;
    if ((status = parcel->readBool(&mUseInChannelMask)) != NO_ERROR) return status;
    if ((status = parcel->readBool(&mUseForVolume)) != NO_ERROR) return status;
    if ((status = parcel->readUint32(&mGain.mode)) != NO_ERROR) return status;
    if ((status = parcel->readUint32(&mGain.channel_mask)) != NO_ERROR) return status;
    if ((status = parcel->readInt32(&mGain.min_value)) != NO_ERROR) return status;
    if ((status = parcel->readInt32(&mGain.max_value)) != NO_ERROR) return status;
    if ((status = parcel->readInt32(&mGain.default_value)) != NO_ERROR) return status;
    if ((status = parcel->readUint32(&mGain.step_value)) != NO_ERROR) return status;
    if ((status = parcel->readUint32(&mGain.min_ramp_ms)) != NO_ERROR) return status;
    status = parcel->readUint32(&mGain.max_ramp_ms);
    return status;
}

status_t AudioGains::writeToParcel(android::Parcel *parcel) const {
    status_t status = NO_ERROR;
    if ((status = parcel->writeUint64(this->size())) != NO_ERROR) return status;
    for (const auto &audioGain : *this) {
        if ((status = parcel->writeParcelable(*audioGain)) != NO_ERROR) {
            break;
        }
    }
    return status;
}

status_t AudioGains::readFromParcel(const android::Parcel *parcel) {
    status_t status = NO_ERROR;
    uint64_t count;
    if ((status = parcel->readUint64(&count)) != NO_ERROR) return status;
    for (uint64_t i = 0; i < count; i++) {
        sp<AudioGain> audioGain = new AudioGain(0, false);
        if ((status = parcel->readParcelable(audioGain.get())) != NO_ERROR) {
            this->clear();
            break;
        }
        this->push_back(audioGain);
    }
    return status;
}

} // namespace android
+12 −4
Original line number Diff line number Diff line
@@ -16,15 +16,17 @@

#pragma once

#include <binder/Parcel.h>
#include <binder/Parcelable.h>
#include <utils/Errors.h>
#include <utils/RefBase.h>
#include <utils/String8.h>
#include <system/audio.h>
#include <string>
#include <vector>

namespace android {

class AudioGain: public RefBase
class AudioGain: public RefBase, public Parcelable
{
public:
    AudioGain(int index, bool useInChannelMask);
@@ -55,7 +57,7 @@ public:
    int getMaxRampInMs() const { return mGain.max_ramp_ms; }

    // TODO: remove dump from here (split serialization)
    void dump(String8 *dst, int spaces, int index) const;
    void dump(std::string *dst, int spaces, int index) const;

    void getDefaultConfig(struct audio_gain_config *config);
    status_t checkConfig(const struct audio_gain_config *config);
@@ -65,6 +67,9 @@ public:

    const struct audio_gain &getGain() const { return mGain; }

    status_t writeToParcel(Parcel* parcel) const override;
    status_t readFromParcel(const Parcel* parcel) override;

private:
    int               mIndex;
    struct audio_gain mGain;
@@ -72,7 +77,7 @@ private:
    bool              mUseForVolume = false;
};

class AudioGains : public std::vector<sp<AudioGain> >
class AudioGains : public std::vector<sp<AudioGain> >, public Parcelable
{
public:
    bool canUseForVolume() const
@@ -90,6 +95,9 @@ public:
        push_back(gain);
        return 0;
    }

    status_t writeToParcel(Parcel* parcel) const override;
    status_t readFromParcel(const Parcel* parcel) override;
};

} // namespace android
+5 −2
Original line number Diff line number Diff line
@@ -3,7 +3,6 @@ cc_library_static {

    srcs: [
        "src/AudioCollections.cpp",
        "src/AudioGain.cpp",
        "src/AudioInputDescriptor.cpp",
        "src/AudioOutputDescriptor.cpp",
        "src/AudioPatch.cpp",
@@ -21,6 +20,7 @@ cc_library_static {
        "src/TypeConverter.cpp",
    ],
    shared_libs: [
        "libaudiofoundation",
        "libcutils",
        "libhidlbase",
        "liblog",
@@ -28,7 +28,10 @@ cc_library_static {
        "libutils",
        "libxml2",
    ],
    export_shared_lib_headers: ["libmedia"],
    export_shared_lib_headers: [
        "libaudiofoundation",
        "libmedia",
    ],
    static_libs: [
        "libaudioutils",
    ],
+0 −1
Original line number Diff line number Diff line
@@ -19,7 +19,6 @@
#include <unordered_map>
#include <unordered_set>

#include <AudioGain.h>
#include <AudioPort.h>
#include <AudioPatch.h>
#include <DeviceDescriptor.h>
Loading