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