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

Commit 201fc9c9 authored by Eric Laurent's avatar Eric Laurent
Browse files

AudioFlinger: fix RecordThread initial device

A regression was introduced when the audio device enums where
modified for a 32 bit representation: the device passed when
constructing a RecordThread was still the concatenation of input
device and output device bit fields on one 32 bit value which
is not possible anymore.

The fix consists in modifying the RecordThread constructor to accept
separate values for input and output devices.

Change-Id: I81fb5f4718428b54251e65d74b86e198ce15193e
parent 7acd13de
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -1600,14 +1600,14 @@ audio_io_handle_t AudioFlinger::openInput(audio_module_handle_t module,
        // Start record thread
        // RecorThread require both input and output device indication to forward to audio
        // pre processing modules
        audio_devices_t device = (*pDevices) | primaryOutputDevice_l();

        thread = new RecordThread(this,
                                  input,
                                  reqSamplingRate,
                                  reqChannels,
                                  id,
                                  device, teeSink);
                                  primaryOutputDevice_l(),
                                  *pDevices,
                                  teeSink);
        mRecordThreads.add(id, thread);
        ALOGV("openInput() created record thread: ID %d thread %p", id, thread);
        if (pSamplingRate != NULL) *pSamplingRate = reqSamplingRate;
+3 −2
Original line number Diff line number Diff line
@@ -3545,9 +3545,10 @@ AudioFlinger::RecordThread::RecordThread(const sp<AudioFlinger>& audioFlinger,
                                         uint32_t sampleRate,
                                         audio_channel_mask_t channelMask,
                                         audio_io_handle_t id,
                                         audio_devices_t device,
                                         audio_devices_t outDevice,
                                         audio_devices_t inDevice,
                                         const sp<NBAIO_Sink>& teeSink) :
    ThreadBase(audioFlinger, id, AUDIO_DEVICE_NONE, device, RECORD),
    ThreadBase(audioFlinger, id, outDevice, inDevice, RECORD),
    mInput(input), mResampler(NULL), mRsmpOutBuffer(NULL), mRsmpInBuffer(NULL),
    // mRsmpInIndex and mInputBytes set by readInputParameters()
    mReqChannelCount(popcount(channelMask)),
+2 −1
Original line number Diff line number Diff line
@@ -698,7 +698,8 @@ public:
                    uint32_t sampleRate,
                    audio_channel_mask_t channelMask,
                    audio_io_handle_t id,
                    audio_devices_t device,
                    audio_devices_t outDevice,
                    audio_devices_t inDevice,
                    const sp<NBAIO_Sink>& teeSink);
            virtual     ~RecordThread();