Changelog
This is a major release. The most significant change is that libCEC no longer depends on p8-platform — threading, time and IO are now implemented directly on the C++ standard library.
Highlights
- Dropped the p8-platform dependency; threading/time/IO reimplemented on
std:: - Replaced the Windows build batch files with a Python build orchestrator
- New: configurable adapter autonomous mode (with an interactive
amcommand in cec-client) - New: configurable device vendor id (
libcec_configuration.iDeviceVendorId,cec-client --vendor-id) - New: enumerate every
/dev/cec*node so multi-HDMI boards can select a CEC port by path - Extensive security hardening: buffer-overflow and bounds fixes across EDID parsing, the C API, and received-frame parsing in every SoC backend
Library / API
- changed: bump to 8.0.0 and gate
bAutonomousModebehindCEC_LIB_VERSION_MAJOR >= 8 - added: a per-adapter display name to the adapter descriptor
- added: Panasonic — send user control power on with image view on so Viera still wakes (#511)
- fixed: suppress double taps and split the auto-repeat delay into a configurable
iButtonRepeatDelayMs(#326) - fixed: emit key release when a held key times out (#704)
- fixed: don't announce active source while the TV is off so an AVR isn't woken up (#403)
- fixed: don't power on the TV when the options to power on were disabled
- fixed: serialise
CLibCEC::OpenagainstClose, and stop the cec-client reconnect thread racing teardown (#701) - fixed: reuse the owning client
shared_ptrwhen re-registering, fixing a monitor-mode toggle crash - fixed: numerous buffer-overflow and bounds fixes in EDID physical-address parsing, the C API string helpers, and OSD name / menu-language handling
- fixed: release the Python callback argument tuple when no callback is registered for the slot (#686)
- fixed: Python
strDeviceLanguageaccepts 3-char ISO codes;libcec_mute_audiomatches C++MuteAudio()(#663) - fixed:
OnRegisterclearsbaseDevicewhen the physical address is already resolved (@jwmay2012)
Platform backends
- fixed: bound received-frame parsing across the RPi, TDA995x, Exynos, AOCEC, Linux, IMX and Tegra backends (#719)
- fixed: honour the connect timeout in the SoC backends instead of ignoring it
- fixed: Linux CEC backend detects node removal and reconnects (#668)
- fixed: RPi — drop TV service and CEC callbacks that race connection teardown (#184, #476)
- fixed: RPi — only enable the backend when all VideoCore libs are found; don't call
bcm_host_init()on a non-Pi (#572, #625, #626) - fixed: RPi — report user control release on button release (@albertvaka, #717)
- fixed: Tegra — track the open state and break the frame on a failed read instead of parsing stale data (#719)
- fixed: initialise
cec_adapter_descriptorwhen detecting adapters (@FabianWolter)
Build
- changed: enable
-Wall -Wextrafor every target, not just libCEC itself (#715) - changed: use cmake's
GNUInstallDirsinstead of a copy ofUseMultiArch.cmake - added:
DISABLE_CLIENT,DISABLE_BUILDINFOandDISABLE_STATICcmake build options - added: install a CMake package config and keep the library install at
LIB_DESTINATION - removed: the msvc
stdint.hshim, which nothing resolves against - fixed: gcc-16
-Wstringop-truncationand-Wformat-truncationwarnings (#715) - fixed: don't probe the build host for libdir/python layout when cross-compiling (#387, #530)
cec-client
- added: configurable device vendor id via
--vendor-id(@Andy1210, #714) - added:
-c/--commandand-H/--help-commandoptions (@nelfin) - changed: document all command line options in
--help; exit on stdin EOF instead of spinning
cec-tray / .NET
- added: away-mode support, a working
sleepbutton mapping, and power on the TV when the PC is no longer idle - fixed: device type selection persists and no longer shows a spurious 'device type changed' dialog (#523, #620, #671, #698)
- fixed: crashes on Kodi start, on resume from standby, and when saving a cleared button mapping
Full Changelog: libcec-7.1.1...libcec-8.0.0