Media subsystem kernel internal API¶
This section contains usage information about media subsystem and its supported drivers.
Please see:
- Media subsystem admin and user guide
- for usage information about media subsystem and supported drivers;
- Linux Media Infrastructure userspace API
- for the userspace APIs used on media devices.
Table of Contents
- 1. Video4Linux devices
- 1.1. Introduction
- 1.2. Structure of a V4L driver
- 1.3. Structure of the V4L2 framework
- 1.4. Video device’ s internal representation
- 1.5. V4L2 device instance
- 1.6. V4L2 File handlers
- 1.7. V4L2 sub-devices
- 1.8. V4L2 sub-device userspace API
- 1.9. Read-only sub-device userspace API
- 1.10. I2C sub-device drivers
- 1.11. V4L2 sub-device functions and data structures
- 1.12. V4L2 events
- 1.13. V4L2 Controls
- 1.13.1. Introduction
- 1.13.2. Objects in the framework
- 1.13.3. Basic usage for V4L2 and sub-device drivers
- 1.13.4. Inheriting Sub-device Controls
- 1.13.5. Accessing Control Values
- 1.13.6. Menu Controls
- 1.13.7. Custom Controls
- 1.13.8. Active and Grabbed Controls
- 1.13.9. Control Clusters
- 1.13.10. Handling autogain/gain-type Controls with Auto Clusters
- 1.13.11. VIDIOC_LOG_STATUS Support
- 1.13.12. Different Handlers for Different Video Nodes
- 1.13.13. Finding Controls
- 1.13.14. Preventing Controls inheritance
- 1.13.15. V4L2_CTRL_TYPE_CTRL_CLASS Controls
- 1.13.16. Adding Notify Callbacks
- 1.13.17. v4l2_ctrl functions and data structures
- 1.14. Videobuf Framework
- 1.15. V4L2 videobuf2 functions and data structures
- 1.16. V4L2 clocks
- 1.17. V4L2 DV Timings functions
- 1.18. V4L2 flash functions and data structures
- 1.19. V4L2 Media Controller functions and data structures
- 1.20. V4L2 Media Bus functions and data structures
- 1.21. V4L2 Memory to Memory functions and data structures
- 1.22. V4L2 async kAPI
- 1.23. V4L2 fwnode kAPI
- 1.24. V4L2 rect helper functions
- 1.25. Tuner functions and data structures
- 1.26. V4L2 common functions and data structures
- 1.27. Hauppauge TV EEPROM functions and data structures
- 2. Digital TV (DVB) devices
- 3. Remote Controller devices
- 4. Media Controller devices
- 4.1. Media Controller
- 4.1.1. Abstract media device model
- 4.1.2. Media device
- 4.1.3. Entities
- 4.1.4. Interfaces
- 4.1.5. Pads
- 4.1.6. Links
- 4.1.7. Graph traversal
- 4.1.8. Use count and power handling
- 4.1.9. Links setup
- 4.1.10. Pipelines and media streams
- 4.1.11. Link validation
- 4.1.12. Media Controller Device Allocator API
- 4.1.13. API Definitions
- 4.1. Media Controller
- 5. CEC Kernel Support
- 5.1. The CEC Protocol
- 5.2. CEC Adapter Interface
- 5.3. Implementing the Low-Level CEC Adapter
- 5.4. Implementing the interrupt handler
- 5.5. Optional: Implementing Error Injection Support
- 5.6. Implementing the High-Level CEC Adapter
- 5.7. CEC framework functions
- 5.8. CEC Pin framework
- 5.9. CEC Notifier framework
- 6. MIPI CSI-2
- 7. Writing camera sensor drivers
- 8. Media driver-specific documentation
- 8.1. Video4Linux (V4L) drivers
- 8.1.1. The bttv driver
- 8.1.2. The cpia2 driver
- 8.1.3. The cx2341x driver
- 8.1.3.1. Memory at cx2341x chips
- 8.1.3.2. Missing documentation
- 8.1.3.3. The cx2341x firmware upload
- 8.1.3.4. How to call the firmware API
- 8.1.3.5. OSD firmware API description
- 8.1.3.5.1. CX2341X_OSD_GET_FRAMEBUFFER
- 8.1.3.5.2. CX2341X_OSD_GET_PIXEL_FORMAT
- 8.1.3.5.3. CX2341X_OSD_SET_PIXEL_FORMAT
- 8.1.3.5.4. CX2341X_OSD_GET_STATE
- 8.1.3.5.5. CX2341X_OSD_SET_STATE
- 8.1.3.5.6. CX2341X_OSD_GET_OSD_COORDS
- 8.1.3.5.7. CX2341X_OSD_SET_OSD_COORDS
- 8.1.3.5.8. CX2341X_OSD_GET_SCREEN_COORDS
- 8.1.3.5.9. CX2341X_OSD_SET_SCREEN_COORDS
- 8.1.3.5.10. CX2341X_OSD_GET_GLOBAL_ALPHA
- 8.1.3.5.11. CX2341X_OSD_SET_GLOBAL_ALPHA
- 8.1.3.5.12. CX2341X_OSD_SET_BLEND_COORDS
- 8.1.3.5.13. CX2341X_OSD_GET_FLICKER_STATE
- 8.1.3.5.14. CX2341X_OSD_SET_FLICKER_STATE
- 8.1.3.5.15. CX2341X_OSD_BLT_COPY
- 8.1.3.5.16. CX2341X_OSD_BLT_FILL
- 8.1.3.5.17. CX2341X_OSD_BLT_TEXT
- 8.1.3.5.18. CX2341X_OSD_SET_FRAMEBUFFER_WINDOW
- 8.1.3.5.19. CX2341X_OSD_SET_CHROMA_KEY
- 8.1.3.5.20. CX2341X_OSD_GET_ALPHA_CONTENT_INDEX
- 8.1.3.5.21. CX2341X_OSD_SET_ALPHA_CONTENT_INDEX
- 8.1.3.6. Encoder firmware API description
- 8.1.3.6.1. CX2341X_ENC_PING_FW
- 8.1.3.6.2. CX2341X_ENC_START_CAPTURE
- 8.1.3.6.3. CX2341X_ENC_STOP_CAPTURE
- 8.1.3.6.4. CX2341X_ENC_SET_AUDIO_ID
- 8.1.3.6.5. CX2341X_ENC_SET_VIDEO_ID
- 8.1.3.6.6. CX2341X_ENC_SET_PCR_ID
- 8.1.3.6.7. CX2341X_ENC_SET_FRAME_RATE
- 8.1.3.6.8. CX2341X_ENC_SET_FRAME_SIZE
- 8.1.3.6.9. CX2341X_ENC_SET_BIT_RATE
- 8.1.3.6.10. CX2341X_ENC_SET_GOP_PROPERTIES
- 8.1.3.6.11. CX2341X_ENC_SET_ASPECT_RATIO
- 8.1.3.6.12. CX2341X_ENC_SET_DNR_FILTER_MODE
- 8.1.3.6.13. CX2341X_ENC_SET_DNR_FILTER_PROPS
- 8.1.3.6.14. CX2341X_ENC_SET_CORING_LEVELS
- 8.1.3.6.15. CX2341X_ENC_SET_SPATIAL_FILTER_TYPE
- 8.1.3.6.16. CX2341X_ENC_SET_VBI_LINE
- 8.1.3.6.17. CX2341X_ENC_SET_STREAM_TYPE
- 8.1.3.6.18. CX2341X_ENC_SET_OUTPUT_PORT
- 8.1.3.6.19. CX2341X_ENC_SET_AUDIO_PROPERTIES
- 8.1.3.6.20. CX2341X_ENC_HALT_FW
- 8.1.3.6.21. CX2341X_ENC_GET_VERSION
- 8.1.3.6.22. CX2341X_ENC_SET_GOP_CLOSURE
- 8.1.3.6.23. CX2341X_ENC_GET_SEQ_END
- 8.1.3.6.24. CX2341X_ENC_SET_PGM_INDEX_INFO
- 8.1.3.6.25. CX2341X_ENC_SET_VBI_CONFIG
- 8.1.3.6.26. CX2341X_ENC_SET_DMA_BLOCK_SIZE
- 8.1.3.6.27. CX2341X_ENC_GET_PREV_DMA_INFO_MB_10
- 8.1.3.6.28. CX2341X_ENC_GET_PREV_DMA_INFO_MB_9
- 8.1.3.6.29. CX2341X_ENC_SCHED_DMA_TO_HOST
- 8.1.3.6.30. CX2341X_ENC_INITIALIZE_INPUT
- 8.1.3.6.31. CX2341X_ENC_SET_FRAME_DROP_RATE
- 8.1.3.6.32. CX2341X_ENC_PAUSE_ENCODER
- 8.1.3.6.33. CX2341X_ENC_REFRESH_INPUT
- 8.1.3.6.34. CX2341X_ENC_SET_COPYRIGHT
- 8.1.3.6.35. CX2341X_ENC_SET_EVENT_NOTIFICATION
- 8.1.3.6.36. CX2341X_ENC_SET_NUM_VSYNC_LINES
- 8.1.3.6.37. CX2341X_ENC_SET_PLACEHOLDER
- 8.1.3.6.38. CX2341X_ENC_MUTE_VIDEO
- 8.1.3.6.39. CX2341X_ENC_MUTE_AUDIO
- 8.1.3.6.40. CX2341X_ENC_SET_VERT_CROP_LINE
- 8.1.3.6.41. CX2341X_ENC_MISC
- 8.1.3.7. Decoder firmware API description
- 8.1.3.7.1. CX2341X_DEC_PING_FW
- 8.1.3.7.2. CX2341X_DEC_START_PLAYBACK
- 8.1.3.7.3. CX2341X_DEC_STOP_PLAYBACK
- 8.1.3.7.4. CX2341X_DEC_SET_PLAYBACK_SPEED
- 8.1.3.7.5. CX2341X_DEC_STEP_VIDEO
- 8.1.3.7.6. CX2341X_DEC_SET_DMA_BLOCK_SIZE
- 8.1.3.7.7. CX2341X_DEC_GET_XFER_INFO
- 8.1.3.7.8. CX2341X_DEC_GET_DMA_STATUS
- 8.1.3.7.9. CX2341X_DEC_SCHED_DMA_FROM_HOST
- 8.1.3.7.10. CX2341X_DEC_PAUSE_PLAYBACK
- 8.1.3.7.11. CX2341X_DEC_HALT_FW
- 8.1.3.7.12. CX2341X_DEC_SET_STANDARD
- 8.1.3.7.13. CX2341X_DEC_GET_VERSION
- 8.1.3.7.14. CX2341X_DEC_SET_STREAM_INPUT
- 8.1.3.7.15. CX2341X_DEC_GET_TIMING_INFO
- 8.1.3.7.16. CX2341X_DEC_SET_AUDIO_MODE
- 8.1.3.7.17. CX2341X_DEC_SET_EVENT_NOTIFICATION
- 8.1.3.7.18. CX2341X_DEC_SET_DISPLAY_BUFFERS
- 8.1.3.7.19. CX2341X_DEC_EXTRACT_VBI
- 8.1.3.7.20. CX2341X_DEC_SET_DECODER_SOURCE
- 8.1.3.7.21. CX2341X_DEC_SET_PREBUFFERING
- 8.1.3.8. PVR350 Video decoder registers 0x02002800 -> 0x02002B00
- 8.1.3.9. The cx231xx DMA engine
- 8.1.4. The cx88 driver
- 8.1.5. The VPBE V4L2 driver design
- 8.1.6. The Samsung S5P/EXYNOS4 FIMC driver
- 8.1.7. The pvrusb2 driver
- 8.1.8. PXA-Camera Host Driver
- 8.1.9. The Radiotrack radio driver
- 8.1.10. The saa7134 driver
- 8.1.11. Cropping and Scaling algorithm, used in the sh_mobile_ceu_camera driver
- 8.1.12. Tuner drivers
- 8.1.13. The Virtual Media Controller Driver (vimc)
- 8.1.14. The Zoran driver
- 8.1.14.1. Frequently Asked Questions
- 8.1.14.2. What cards are supported
- 8.1.14.2.1. Iomega Buz
- 8.1.14.2.2. AverMedia 6 Eyes AVS6EYES
- 8.1.14.2.3. Linux Media Labs LML33
- 8.1.14.2.4. Linux Media Labs LML33R10
- 8.1.14.2.5. Pinnacle/Miro DC10(new)
- 8.1.14.2.6. Pinnacle/Miro DC10+
- 8.1.14.2.7. Pinnacle/Miro DC10(old)
- 8.1.14.2.8. Pinnacle/Miro DC30
- 8.1.14.2.9. Pinnacle/Miro DC30+
- 8.1.14.3. 1.1 What the TV decoder can do an what not
- 8.1.14.4. What the TV encoder can do an what not
- 8.1.14.5. How do I get this damn thing to work
- 8.1.14.6. What mainboard should I use (or why doesn’t my card work)
- 8.1.14.7. Programming interface
- 8.1.14.8. Applications
- 8.1.14.9. Concerning buffer sizes, quality, output size etc.
- 8.1.14.10. It hangs/crashes/fails/whatevers! Help!
- 8.1.14.11. Maintainers/Contacting
- 8.1.14.12. Driver’s License
- 8.1.15. MIPI CCS camera sensor driver
- 8.2. Digital TV drivers
- 8.2.1. Idea behind the dvb-usb-framework
- 8.2.2. Frontend drivers
- 8.2.3. vidtv: Virtual Digital TV driver
- 8.2.4. Contributors
- 8.1. Video4Linux (V4L) drivers
Copyright © 2009-2020 : LinuxTV Developers
This documentation is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the Free
Software Foundation; either version 2 of the License, or (at your option) any
later version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details.
For more details see the file COPYING in the source distribution of Linux.