Skip to content

0.4.0

Latest

Choose a tag to compare

@vladimirvivien vladimirvivien released this 22 Nov 09:24
· 2 commits to main since this release
966a1e7

Version 0.4.0 completes all foundational V4L2 API elements, providing comprehensive support for device management, video/audio I/O, tuners, video standards, digital timings, buffers, and controls.

New Features

Video Standards Support

Full analog video standards API for TV tuners and analog capture devices:

  • Support for PAL, NTSC, and SECAM variants
  • Enumerate, get, set, and auto-detect video standards
  • Query frame rate, line count, and timing information
  • Example: examples/video_standards/

Digital Video Timings

Digital video timing API for HDMI/DisplayPort capture devices:

  • Query, enumerate, and set DV timings
  • Support for CEA-861 and DMT standards (720p, 1080p, 4K, etc.)
  • Custom timing configuration
  • Example: examples/dv_timings/

Extended Controls

Complete extended controls implementation:

  • Full support for compound controls
  • Codec controls for H.264, H.265/HEVC, VP8, VP9, MPEG2, MPEG4, AV1
  • Control event subscription and handling
  • Try control before applying
  • Example: examples/ext_ctrls/

Control References

Complete control constants across all 11 control classes:

  • Camera controls: Exposure, focus, zoom, white balance, ISO, scene modes
  • Flash controls: LED mode, strobe, intensity, timeout
  • Image source controls: Analog/digital gain, blanking, test patterns
  • Image processing controls: Pixel rate, link frequency, deinterlacing
  • Codec controls: Bitrate, GOP, profiles, levels
  • Control flags: read-only, write-only, volatile, inactive, etc.
  • Example: examples/control_reference/ - Interactive control browser

Tuner and Modulator Support

TV/radio tuner and FM modulator support:

  • Enumerate tuners and modulators
  • Query capabilities (TV, radio, analog, digital, SDR)
  • Get/set frequency and signal strength
  • Audio mode selection (mono, stereo, SAP)
  • Examples: examples/tuner/, examples/modulator/

Audio/Video I/O

Audio input and output enumeration:

  • List available audio inputs and outputs
  • Query audio capabilities and modes
  • Select active audio source/destination
  • Examples: examples/audio_inputs/, examples/audio_outputs/
  • Enumerate video inputs and outputs
  • Query input types (tuner, camera, touch)
  • Get/set active video source/destination
  • Examples: examples/video_inputs/, examples/video_outputs/

Event Handling

V4L2 event subscription and handling:

  • Subscribe/unsubscribe to control change events
  • Event polling and dequeuing
  • Support for all V4L2 event types

API Additions

New Files

  • v4l2/standard.go - Video standards API
  • v4l2/dv_timings.go - Digital video timings API
  • v4l2/events.go - Event handling API
  • v4l2/tuner_info.go - Tuner/modulator API
  • v4l2/audio_info.go - Audio I/O API

New Device Methods

  • Video standards: GetStandard(), SetStandard(), QueryStandard(), GetAllStandards()
  • DV timings: QueryDvTimings(), GetDvTimings(), SetDvTimings(), EnumerateDvTimings()
  • Extended controls: GetExtControl(), SetExtControl(), GetExtControls(), SetExtControls(), TryExtControl()
  • Events: SubscribeEvent(), UnsubscribeEvent(), DequeueEvent()
  • Tuners: EnumerateTuner(), GetTuner(), SetTuner(), GetFrequency(), SetFrequency()
  • Audio I/O: EnumerateAudioInput(), GetAudioInput(), SetAudioInput(), EnumerateAudioOutput(), GetAudioOutput(), SetAudioOutput()
  • Video I/O: EnumerateInput(), GetInput(), SetInput(), EnumerateOutput(), GetOutput(), SetOutput()

Full Changelog: v0.3.0...0.4.0