Loading system/bta/hearing_aid/hearing_aid.cc +24 −14 Original line number Diff line number Diff line Loading @@ -171,6 +171,24 @@ static void write_rpt_ctl_cfg_cb(uint16_t conn_id, tGATT_STATUS status, g722_encode_state_t* encoder_state_left = nullptr; g722_encode_state_t* encoder_state_right = nullptr; inline void encoder_state_init() { if (encoder_state_left != nullptr) { LOG(WARNING) << __func__ << ": encoder already initialized"; return; } encoder_state_left = g722_encode_init(nullptr, 64000, G722_PACKED); encoder_state_right = g722_encode_init(nullptr, 64000, G722_PACKED); } inline void encoder_state_release() { if (encoder_state_left != nullptr) { g722_encode_release(encoder_state_left); encoder_state_left = nullptr; g722_encode_release(encoder_state_right); encoder_state_right = nullptr; } } class HearingAidImpl : public HearingAid { private: // Keep track of whether the Audio Service has resumed audio playback Loading Loading @@ -846,8 +864,7 @@ class HearingAidImpl : public HearingAid { VLOG(0) << __func__ << ": device=" << hearingDevice.address; if (encoder_state_left == nullptr) { encoder_state_left = g722_encode_init(nullptr, 64000, G722_PACKED); encoder_state_right = g722_encode_init(nullptr, 64000, G722_PACKED); encoder_state_init(); seq_counter = 0; // use the best codec avaliable for this pair of devices. Loading Loading @@ -909,12 +926,8 @@ class HearingAidImpl : public HearingAid { audio_running = true; // TODO: shall we also reset the encoder ? if (encoder_state_left != nullptr) { g722_encode_release(encoder_state_left); g722_encode_release(encoder_state_right); } encoder_state_left = g722_encode_init(nullptr, 64000, G722_PACKED); encoder_state_right = g722_encode_init(nullptr, 64000, G722_PACKED); encoder_state_release(); encoder_state_init(); seq_counter = 0; for (auto& device : hearingDevices.devices) { Loading Loading @@ -1002,12 +1015,7 @@ class HearingAidImpl : public HearingAid { if (left == nullptr && right == nullptr) { HearingAidAudioSource::Stop(); if (encoder_state_left != nullptr) { g722_encode_release(encoder_state_left); encoder_state_left = nullptr; g722_encode_release(encoder_state_right); encoder_state_right = nullptr; } encoder_state_release(); current_volume = VOLUME_UNKNOWN; return; } Loading Loading @@ -1360,6 +1368,8 @@ class HearingAidImpl : public HearingAid { } hearingDevices.devices.clear(); encoder_state_release(); } private: Loading Loading
system/bta/hearing_aid/hearing_aid.cc +24 −14 Original line number Diff line number Diff line Loading @@ -171,6 +171,24 @@ static void write_rpt_ctl_cfg_cb(uint16_t conn_id, tGATT_STATUS status, g722_encode_state_t* encoder_state_left = nullptr; g722_encode_state_t* encoder_state_right = nullptr; inline void encoder_state_init() { if (encoder_state_left != nullptr) { LOG(WARNING) << __func__ << ": encoder already initialized"; return; } encoder_state_left = g722_encode_init(nullptr, 64000, G722_PACKED); encoder_state_right = g722_encode_init(nullptr, 64000, G722_PACKED); } inline void encoder_state_release() { if (encoder_state_left != nullptr) { g722_encode_release(encoder_state_left); encoder_state_left = nullptr; g722_encode_release(encoder_state_right); encoder_state_right = nullptr; } } class HearingAidImpl : public HearingAid { private: // Keep track of whether the Audio Service has resumed audio playback Loading Loading @@ -846,8 +864,7 @@ class HearingAidImpl : public HearingAid { VLOG(0) << __func__ << ": device=" << hearingDevice.address; if (encoder_state_left == nullptr) { encoder_state_left = g722_encode_init(nullptr, 64000, G722_PACKED); encoder_state_right = g722_encode_init(nullptr, 64000, G722_PACKED); encoder_state_init(); seq_counter = 0; // use the best codec avaliable for this pair of devices. Loading Loading @@ -909,12 +926,8 @@ class HearingAidImpl : public HearingAid { audio_running = true; // TODO: shall we also reset the encoder ? if (encoder_state_left != nullptr) { g722_encode_release(encoder_state_left); g722_encode_release(encoder_state_right); } encoder_state_left = g722_encode_init(nullptr, 64000, G722_PACKED); encoder_state_right = g722_encode_init(nullptr, 64000, G722_PACKED); encoder_state_release(); encoder_state_init(); seq_counter = 0; for (auto& device : hearingDevices.devices) { Loading Loading @@ -1002,12 +1015,7 @@ class HearingAidImpl : public HearingAid { if (left == nullptr && right == nullptr) { HearingAidAudioSource::Stop(); if (encoder_state_left != nullptr) { g722_encode_release(encoder_state_left); encoder_state_left = nullptr; g722_encode_release(encoder_state_right); encoder_state_right = nullptr; } encoder_state_release(); current_volume = VOLUME_UNKNOWN; return; } Loading Loading @@ -1360,6 +1368,8 @@ class HearingAidImpl : public HearingAid { } hearingDevices.devices.clear(); encoder_state_release(); } private: Loading