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. Media Subsystem Profile
 - 2. Video4Linux devices
- 2.1. Introduction
 - 2.2. Structure of a V4L driver
 - 2.3. Structure of the V4L2 framework
 - 2.4. Video device’ s internal representation
 - 2.5. V4L2 device instance
 - 2.6. V4L2 File handlers
 - 2.7. V4L2 sub-devices
 - 2.8. V4L2 sub-device userspace API
 - 2.9. Read-only sub-device userspace API
 - 2.10. I2C sub-device drivers
 - 2.11. V4L2 sub-device functions and data structures
 - 2.12. V4L2 events
 - 2.13. V4L2 Controls
- 2.13.1. Introduction
 - 2.13.2. Objects in the framework
 - 2.13.3. Basic usage for V4L2 and sub-device drivers
 - 2.13.4. Inheriting Sub-device Controls
 - 2.13.5. Accessing Control Values
 - 2.13.6. Menu Controls
 - 2.13.7. Custom Controls
 - 2.13.8. Active and Grabbed Controls
 - 2.13.9. Control Clusters
 - 2.13.10. Handling autogain/gain-type Controls with Auto Clusters
 - 2.13.11. VIDIOC_LOG_STATUS Support
 - 2.13.12. Different Handlers for Different Video Nodes
 - 2.13.13. Finding Controls
 - 2.13.14. Preventing Controls inheritance
 - 2.13.15. V4L2_CTRL_TYPE_CTRL_CLASS Controls
 - 2.13.16. Adding Notify Callbacks
 - 2.13.17. v4l2_ctrl functions and data structures
 
 - 2.14. Videobuf Framework
 - 2.15. V4L2 videobuf2 functions and data structures
 - 2.16. V4L2 DV Timings functions
 - 2.17. V4L2 flash functions and data structures
 - 2.18. V4L2 Media Controller functions and data structures
 - 2.19. V4L2 Media Bus functions and data structures
 - 2.20. V4L2 Memory to Memory functions and data structures
 - 2.21. V4L2 async kAPI
 - 2.22. V4L2 fwnode kAPI
 - 2.23. V4L2 rect helper functions
 - 2.24. Tuner functions and data structures
 - 2.25. V4L2 common functions and data structures
 - 2.26. Hauppauge TV EEPROM functions and data structures
 
 - 3. Digital TV (DVB) devices
 - 4. Remote Controller devices
 - 5. Media Controller devices
- 5.1. Media Controller
- 5.1.1. Abstract media device model
 - 5.1.2. Media device
 - 5.1.3. Entities
 - 5.1.4. Interfaces
 - 5.1.5. Pads
 - 5.1.6. Links
 - 5.1.7. Graph traversal
 - 5.1.8. Use count and power handling
 - 5.1.9. Links setup
 - 5.1.10. Pipelines and media streams
 - 5.1.11. Link validation
 - 5.1.12. Media Controller Device Allocator API
 - 5.1.13. API Definitions
 
 
 - 5.1. Media Controller
 - 6. CEC Kernel Support
- 6.1. The CEC Protocol
 - 6.2. CEC Adapter Interface
 - 6.3. Implementing the Low-Level CEC Adapter
 - 6.4. Implementing the interrupt handler
 - 6.5. Optional: Implementing Error Injection Support
 - 6.6. Implementing the High-Level CEC Adapter
 - 6.7. CEC framework functions
 - 6.8. CEC Pin framework
 - 6.9. CEC Notifier framework
 
 - 7. Pixel data transmitter and receiver drivers
 - 8. Writing camera sensor drivers
 - 9. Media driver-specific documentation
- 9.1. Video4Linux (V4L) drivers
- 9.1.1. The bttv driver
 - 9.1.2. The cpia2 driver
 - 9.1.3. The cx2341x driver
- 9.1.3.1. Memory at cx2341x chips
 - 9.1.3.2. Missing documentation
 - 9.1.3.3. The cx2341x firmware upload
 - 9.1.3.4. How to call the firmware API
 - 9.1.3.5. OSD firmware API description
- 9.1.3.5.1. CX2341X_OSD_GET_FRAMEBUFFER
 - 9.1.3.5.2. CX2341X_OSD_GET_PIXEL_FORMAT
 - 9.1.3.5.3. CX2341X_OSD_SET_PIXEL_FORMAT
 - 9.1.3.5.4. CX2341X_OSD_GET_STATE
 - 9.1.3.5.5. CX2341X_OSD_SET_STATE
 - 9.1.3.5.6. CX2341X_OSD_GET_OSD_COORDS
 - 9.1.3.5.7. CX2341X_OSD_SET_OSD_COORDS
 - 9.1.3.5.8. CX2341X_OSD_GET_SCREEN_COORDS
 - 9.1.3.5.9. CX2341X_OSD_SET_SCREEN_COORDS
 - 9.1.3.5.10. CX2341X_OSD_GET_GLOBAL_ALPHA
 - 9.1.3.5.11. CX2341X_OSD_SET_GLOBAL_ALPHA
 - 9.1.3.5.12. CX2341X_OSD_SET_BLEND_COORDS
 - 9.1.3.5.13. CX2341X_OSD_GET_FLICKER_STATE
 - 9.1.3.5.14. CX2341X_OSD_SET_FLICKER_STATE
 - 9.1.3.5.15. CX2341X_OSD_BLT_COPY
 - 9.1.3.5.16. CX2341X_OSD_BLT_FILL
 - 9.1.3.5.17. CX2341X_OSD_BLT_TEXT
 - 9.1.3.5.18. CX2341X_OSD_SET_FRAMEBUFFER_WINDOW
 - 9.1.3.5.19. CX2341X_OSD_SET_CHROMA_KEY
 - 9.1.3.5.20. CX2341X_OSD_GET_ALPHA_CONTENT_INDEX
 - 9.1.3.5.21. CX2341X_OSD_SET_ALPHA_CONTENT_INDEX
 
 - 9.1.3.6. Encoder firmware API description
- 9.1.3.6.1. CX2341X_ENC_PING_FW
 - 9.1.3.6.2. CX2341X_ENC_START_CAPTURE
 - 9.1.3.6.3. CX2341X_ENC_STOP_CAPTURE
 - 9.1.3.6.4. CX2341X_ENC_SET_AUDIO_ID
 - 9.1.3.6.5. CX2341X_ENC_SET_VIDEO_ID
 - 9.1.3.6.6. CX2341X_ENC_SET_PCR_ID
 - 9.1.3.6.7. CX2341X_ENC_SET_FRAME_RATE
 - 9.1.3.6.8. CX2341X_ENC_SET_FRAME_SIZE
 - 9.1.3.6.9. CX2341X_ENC_SET_BIT_RATE
 - 9.1.3.6.10. CX2341X_ENC_SET_GOP_PROPERTIES
 - 9.1.3.6.11. CX2341X_ENC_SET_ASPECT_RATIO
 - 9.1.3.6.12. CX2341X_ENC_SET_DNR_FILTER_MODE
 - 9.1.3.6.13. CX2341X_ENC_SET_DNR_FILTER_PROPS
 - 9.1.3.6.14. CX2341X_ENC_SET_CORING_LEVELS
 - 9.1.3.6.15. CX2341X_ENC_SET_SPATIAL_FILTER_TYPE
 - 9.1.3.6.16. CX2341X_ENC_SET_VBI_LINE
 - 9.1.3.6.17. CX2341X_ENC_SET_STREAM_TYPE
 - 9.1.3.6.18. CX2341X_ENC_SET_OUTPUT_PORT
 - 9.1.3.6.19. CX2341X_ENC_SET_AUDIO_PROPERTIES
 - 9.1.3.6.20. CX2341X_ENC_HALT_FW
 - 9.1.3.6.21. CX2341X_ENC_GET_VERSION
 - 9.1.3.6.22. CX2341X_ENC_SET_GOP_CLOSURE
 - 9.1.3.6.23. CX2341X_ENC_GET_SEQ_END
 - 9.1.3.6.24. CX2341X_ENC_SET_PGM_INDEX_INFO
 - 9.1.3.6.25. CX2341X_ENC_SET_VBI_CONFIG
 - 9.1.3.6.26. CX2341X_ENC_SET_DMA_BLOCK_SIZE
 - 9.1.3.6.27. CX2341X_ENC_GET_PREV_DMA_INFO_MB_10
 - 9.1.3.6.28. CX2341X_ENC_GET_PREV_DMA_INFO_MB_9
 - 9.1.3.6.29. CX2341X_ENC_SCHED_DMA_TO_HOST
 - 9.1.3.6.30. CX2341X_ENC_INITIALIZE_INPUT
 - 9.1.3.6.31. CX2341X_ENC_SET_FRAME_DROP_RATE
 - 9.1.3.6.32. CX2341X_ENC_PAUSE_ENCODER
 - 9.1.3.6.33. CX2341X_ENC_REFRESH_INPUT
 - 9.1.3.6.34. CX2341X_ENC_SET_COPYRIGHT
 - 9.1.3.6.35. CX2341X_ENC_SET_EVENT_NOTIFICATION
 - 9.1.3.6.36. CX2341X_ENC_SET_NUM_VSYNC_LINES
 - 9.1.3.6.37. CX2341X_ENC_SET_PLACEHOLDER
 - 9.1.3.6.38. CX2341X_ENC_MUTE_VIDEO
 - 9.1.3.6.39. CX2341X_ENC_MUTE_AUDIO
 - 9.1.3.6.40. CX2341X_ENC_SET_VERT_CROP_LINE
 - 9.1.3.6.41. CX2341X_ENC_MISC
 
 - 9.1.3.7. Decoder firmware API description
- 9.1.3.7.1. CX2341X_DEC_PING_FW
 - 9.1.3.7.2. CX2341X_DEC_START_PLAYBACK
 - 9.1.3.7.3. CX2341X_DEC_STOP_PLAYBACK
 - 9.1.3.7.4. CX2341X_DEC_SET_PLAYBACK_SPEED
 - 9.1.3.7.5. CX2341X_DEC_STEP_VIDEO
 - 9.1.3.7.6. CX2341X_DEC_SET_DMA_BLOCK_SIZE
 - 9.1.3.7.7. CX2341X_DEC_GET_XFER_INFO
 - 9.1.3.7.8. CX2341X_DEC_GET_DMA_STATUS
 - 9.1.3.7.9. CX2341X_DEC_SCHED_DMA_FROM_HOST
 - 9.1.3.7.10. CX2341X_DEC_PAUSE_PLAYBACK
 - 9.1.3.7.11. CX2341X_DEC_HALT_FW
 - 9.1.3.7.12. CX2341X_DEC_SET_STANDARD
 - 9.1.3.7.13. CX2341X_DEC_GET_VERSION
 - 9.1.3.7.14. CX2341X_DEC_SET_STREAM_INPUT
 - 9.1.3.7.15. CX2341X_DEC_GET_TIMING_INFO
 - 9.1.3.7.16. CX2341X_DEC_SET_AUDIO_MODE
 - 9.1.3.7.17. CX2341X_DEC_SET_EVENT_NOTIFICATION
 - 9.1.3.7.18. CX2341X_DEC_SET_DISPLAY_BUFFERS
 - 9.1.3.7.19. CX2341X_DEC_EXTRACT_VBI
 - 9.1.3.7.20. CX2341X_DEC_SET_DECODER_SOURCE
 - 9.1.3.7.21. CX2341X_DEC_SET_PREBUFFERING
 
 - 9.1.3.8. PVR350 Video decoder registers 0x02002800 -> 0x02002B00
 - 9.1.3.9. The cx231xx DMA engine
 
 - 9.1.4. The cx88 driver
 - 9.1.5. The VPBE V4L2 driver design
 - 9.1.6. The Samsung S5P/EXYNOS4 FIMC driver
 - 9.1.7. The pvrusb2 driver
 - 9.1.8. PXA-Camera Host Driver
 - 9.1.9. The Radiotrack radio driver
 - 9.1.10. The saa7134 driver
 - 9.1.11. Cropping and Scaling algorithm, used in the sh_mobile_ceu_camera driver
 - 9.1.12. Tuner drivers
 - 9.1.13. The Virtual Media Controller Driver (vimc)
 - 9.1.14. The Zoran driver
- 9.1.14.1. Frequently Asked Questions
 - 9.1.14.2. What cards are supported
- 9.1.14.2.1. Iomega Buz
 - 9.1.14.2.2. AverMedia 6 Eyes AVS6EYES
 - 9.1.14.2.3. Linux Media Labs LML33
 - 9.1.14.2.4. Linux Media Labs LML33R10
 - 9.1.14.2.5. Pinnacle/Miro DC10(new)
 - 9.1.14.2.6. Pinnacle/Miro DC10+
 - 9.1.14.2.7. Pinnacle/Miro DC10(old)
 - 9.1.14.2.8. Pinnacle/Miro DC30
 - 9.1.14.2.9. Pinnacle/Miro DC30+
 
 - 9.1.14.3. 1.1 What the TV decoder can do an what not
 - 9.1.14.4. What the TV encoder can do an what not
 - 9.1.14.5. How do I get this damn thing to work
 - 9.1.14.6. What mainboard should I use (or why doesn’t my card work)
 - 9.1.14.7. Programming interface
 - 9.1.14.8. Applications
 - 9.1.14.9. Concerning buffer sizes, quality, output size etc.
 - 9.1.14.10. It hangs/crashes/fails/whatevers! Help!
 - 9.1.14.11. Maintainers/Contacting
 - 9.1.14.12. Driver’s License
 
 - 9.1.15. MIPI CCS camera sensor driver
 - 9.1.16. CCS PLL calculator
 
 - 9.2. Digital TV drivers
- 9.2.1. Idea behind the dvb-usb-framework
 - 9.2.2. Frontend drivers
 - 9.2.3. vidtv: Virtual Digital TV driver
 - 9.2.4. Contributors
 
 
 - 9.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.