github Pulse-Eight/libcec libcec-8.0.0
libCEC 8.0.0

10 hours ago

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 am command 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 bAutonomousMode behind CEC_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::Open against Close, and stop the cec-client reconnect thread racing teardown (#701)
  • fixed: reuse the owning client shared_ptr when 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 strDeviceLanguage accepts 3-char ISO codes; libcec_mute_audio matches C++ MuteAudio() (#663)
  • fixed: OnRegister clears baseDevice when 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_descriptor when detecting adapters (@FabianWolter)

Build

  • changed: enable -Wall -Wextra for every target, not just libCEC itself (#715)
  • changed: use cmake's GNUInstallDirs instead of a copy of UseMultiArch.cmake
  • added: DISABLE_CLIENT, DISABLE_BUILDINFO and DISABLE_STATIC cmake build options
  • added: install a CMake package config and keep the library install at LIB_DESTINATION
  • removed: the msvc stdint.h shim, which nothing resolves against
  • fixed: gcc-16 -Wstringop-truncation and -Wformat-truncation warnings (#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/--command and -H/--help-command options (@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 sleep button 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

Don't miss a new libcec release

NewReleases is sending notifications on new releases.