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

Commit 22f8defd authored by The Android Open Source Project's avatar The Android Open Source Project
Browse files

auto import from //branches/cupcake/...@137197

parent 9adf84a4
Loading
Loading
Loading
Loading
+31 −20
Original line number Diff line number Diff line
@@ -48,7 +48,6 @@ AudioStreamOut* A2dpAudioInterface::openOutputStream(
        int format, int channelCount, uint32_t sampleRate, status_t *status)
{
    LOGD("A2dpAudioInterface::openOutputStream %d, %d, %d\n", format, channelCount, sampleRate);
    Mutex::Autolock lock(mLock);
    status_t err = 0;

    // only one output stream allowed
@@ -134,7 +133,8 @@ A2dpAudioInterface::A2dpAudioStreamOut::A2dpAudioStreamOut() :
    mFd(-1), mStandby(true), mStartCount(0), mRetryCount(0), mData(NULL)
{
    // use any address by default
    strncpy(mA2dpAddress, "00:00:00:00:00:00", sizeof(mA2dpAddress));
    strcpy(mA2dpAddress, "00:00:00:00:00:00");
    init();
}

status_t A2dpAudioInterface::A2dpAudioStreamOut::set(
@@ -163,18 +163,12 @@ A2dpAudioInterface::A2dpAudioStreamOut::~A2dpAudioStreamOut()

ssize_t A2dpAudioInterface::A2dpAudioStreamOut::write(const void* buffer, size_t bytes)
{    
    status_t status = NO_INIT;
    size_t remaining = bytes;
    Mutex::Autolock lock(mLock);

    if (!mData) {
        status = a2dp_init(44100, 2, &mData);
        if (status < 0) {
            LOGE("a2dp_init failed err: %d\n", status);
            mData = NULL;
    size_t remaining = bytes;
    status_t status = init();
    if (status < 0)
        goto Error;
        }
        a2dp_set_sink(mData, mA2dpAddress);
    }
    
    while (remaining > 0) {
        status = a2dp_write(mData, buffer, remaining);
@@ -197,10 +191,27 @@ Error:
    return status;
}

status_t A2dpAudioInterface::A2dpAudioStreamOut::init()
{
    if (!mData) {
        status_t status = a2dp_init(44100, 2, &mData);
        if (status < 0) {
            LOGE("a2dp_init failed err: %d\n", status);
            mData = NULL;
            return status;
        }
        a2dp_set_sink(mData, mA2dpAddress);
    }

    return 0;
}

status_t A2dpAudioInterface::A2dpAudioStreamOut::standby()
{
    int result = 0;

    Mutex::Autolock lock(mLock);

    if (!mStandby) {
        result = a2dp_stop(mData);
        if (result == 0)
@@ -212,14 +223,14 @@ status_t A2dpAudioInterface::A2dpAudioStreamOut::standby()

status_t A2dpAudioInterface::A2dpAudioStreamOut::setAddress(const char* address)
{
    if (strlen(address) < sizeof(mA2dpAddress))
    Mutex::Autolock lock(mLock);

    if (strlen(address) != strlen("00:00:00:00:00:00"))
        return -EINVAL;

    if (strcmp(address, mA2dpAddress)) {
    strcpy(mA2dpAddress, address);
    if (mData)
        a2dp_set_sink(mData, mA2dpAddress);
    }

    return NO_ERROR;
}
+3 −2
Original line number Diff line number Diff line
@@ -82,11 +82,12 @@ private:
        virtual status_t    setVolume(float volume) { return INVALID_OPERATION; }
        virtual ssize_t     write(const void* buffer, size_t bytes);
                status_t    standby();
                status_t    close();
        virtual status_t    dump(int fd, const Vector<String16>& args);

    private:
        friend class A2dpAudioInterface;
                status_t    init();
                status_t    close();
        status_t            setAddress(const char* address);

    private:
@@ -96,9 +97,9 @@ private:
                int         mRetryCount;
                char        mA2dpAddress[20];
                void*       mData;
                Mutex       mLock;
    };

    Mutex                   mLock;
    A2dpAudioStreamOut*     mOutput;
};

+156 −153

File changed.

Preview size limit exceeded, changes collapsed.

+18 −22

File changed.

Preview size limit exceeded, changes collapsed.

services/Android.mk

deleted100644 → 0
+0 −17
Original line number Diff line number Diff line
LOCAL_PATH:= $(call my-dir)

# the library
# ============================================================
include $(CLEAR_VARS)

LOCAL_SRC_FILES := \
            $(call all-subdir-java-files)

LOCAL_MODULE:= services

LOCAL_JAVA_LIBRARIES := android.policy

include $(BUILD_JAVA_LIBRARY)

include $(BUILD_DROIDDOC)