+ return m_client ? m_client->SendVolumeDown(bSendRelease) : (uint8_t)CEC_AUDIO_VOLUME_STATUS_UNKNOWN;
+}
+
+uint8_t CLibCEC::MuteAudio(bool UNUSED(bSendRelease) /* = true */)
+{
+ return m_client ? m_client->SendMuteAudio() : (uint8_t)CEC_AUDIO_VOLUME_STATUS_UNKNOWN;
+}
+
+bool CLibCEC::SendKeypress(cec_logical_address iDestination, cec_user_control_code key, bool bWait /* = true */)
+{
+ return m_client ? m_client->SendKeypress(iDestination, key, bWait) : false;
+}
+
+bool CLibCEC::SendKeyRelease(cec_logical_address iDestination, bool bWait /* = true */)
+{
+ return m_client ? m_client->SendKeyRelease(iDestination, bWait) : false;
+}
+
+cec_osd_name CLibCEC::GetDeviceOSDName(cec_logical_address iAddress)
+{
+ cec_osd_name retVal;
+ retVal.device = CECDEVICE_UNKNOWN;
+ memset(retVal.name, 0, 14);
+
+ if (m_client)
+ retVal = m_client->GetDeviceOSDName(iAddress);
+ return retVal;
+}
+
+cec_logical_address CLibCEC::GetActiveSource(void)
+{
+ return m_client ? m_client->GetActiveSource() : CECDEVICE_UNKNOWN;
+}
+
+bool CLibCEC::IsActiveSource(cec_logical_address iAddress)
+{
+ return m_client ? m_client->IsActiveSource(iAddress) : false;
+}
+bool CLibCEC::SetStreamPath(cec_logical_address iAddress)
+{
+ return m_client ? m_client->SetStreamPath(iAddress) : false;
+}
+
+bool CLibCEC::SetStreamPath(uint16_t iPhysicalAddress)
+{
+ return m_client ? m_client->SetStreamPath(iPhysicalAddress) : false;
+}
+
+cec_logical_addresses CLibCEC::GetLogicalAddresses(void)
+{
+ cec_logical_addresses addresses;
+ addresses.Clear();
+ if (m_client)
+ m_client->GetLogicalAddresses();
+ return addresses;
+}
+
+bool CLibCEC::GetNextLogMessage(cec_log_message *message)
+{
+ return m_client ? m_client->GetNextLogMessage(message) : false;
+}
+
+bool CLibCEC::GetNextKeypress(cec_keypress *key)
+{
+ return m_client ? m_client->GetNextKeypress(key) : false;
+}
+
+bool CLibCEC::GetNextCommand(cec_command *command)
+{
+ return m_client ? m_client->GetNextCommand(command) : false;
+}
+
+cec_device_type CLibCEC::GetType(cec_logical_address address)
+{
+ return CCECTypeUtils::GetType(address);
+}
+
+uint16_t CLibCEC::GetMaskForType(cec_logical_address address)
+{
+ return CCECTypeUtils::GetMaskForType(address);
+}
+
+uint16_t CLibCEC::GetMaskForType(cec_device_type type)
+{
+ return CCECTypeUtils::GetMaskForType(type);
+}
+
+bool CLibCEC::IsValidPhysicalAddress(uint16_t iPhysicalAddress)
+{
+ return iPhysicalAddress >= CEC_MIN_PHYSICAL_ADDRESS &&
+ iPhysicalAddress <= CEC_MAX_PHYSICAL_ADDRESS;
+}
+
+const char *CLibCEC::ToString(const cec_device_type type)
+{
+ return CCECTypeUtils::ToString(type);
+}
+
+const char *CLibCEC::ToString(const cec_menu_state state)
+{
+ return CCECTypeUtils::ToString(state);
+}
+
+const char *CLibCEC::ToString(const cec_version version)
+{
+ return CCECTypeUtils::ToString(version);
+}
+
+const char *CLibCEC::ToString(const cec_power_status status)
+{
+ return CCECTypeUtils::ToString(status);
+}
+
+const char *CLibCEC::ToString(const cec_logical_address address)
+{
+ return CCECTypeUtils::ToString(address);
+}
+
+const char *CLibCEC::ToString(const cec_deck_control_mode mode)
+{
+ return CCECTypeUtils::ToString(mode);
+}
+
+const char *CLibCEC::ToString(const cec_deck_info status)
+{
+ return CCECTypeUtils::ToString(status);
+}
+
+const char *CLibCEC::ToString(const cec_opcode opcode)
+{
+ return CCECTypeUtils::ToString(opcode);
+}
+
+const char *CLibCEC::ToString(const cec_system_audio_status mode)
+{
+ return CCECTypeUtils::ToString(mode);
+}
+
+const char *CLibCEC::ToString(const cec_audio_status status)
+{
+ return CCECTypeUtils::ToString(status);
+}
+
+const char *CLibCEC::ToString(const cec_vendor_id vendor)
+{
+ return CCECTypeUtils::ToString(vendor);
+}
+
+const char *CLibCEC::ToString(const cec_client_version version)
+{
+ return CCECTypeUtils::ToString(version);
+}
+
+const char *CLibCEC::ToString(const cec_server_version version)
+{
+ return CCECTypeUtils::ToString(version);