Media subsystem kernel internal API¶
This section contains usage information about media subsystem and its supported drivers.
Please see:
Documentation/admin-guide/media/index.rst
for usage information about media subsystem and supported drivers;
Documentation/userspace-api/media/index.rst
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.7.1. Subdev registration
- 2.7.1.1. Registering synchronous sub-devices
- 2.7.1.2. Registering asynchronous sub-devices
- 2.7.1.3. Asynchronous sub-device notifiers
- 2.7.1.4. Asynchronous sub-device notifier for sub-devices
- 2.7.1.5. Asynchronous sub-device registration helper for camera sensor drivers
- 2.7.1.6. Asynchronous sub-device notifier example
- 2.7.1.7. Asynchronous sub-device notifier callbacks
- 2.7.2. Calling subdev operations
- 2.7.1. Subdev registration
- 2.8. V4L2 sub-device userspace API
- 2.9. Read-only sub-device userspace API
- 2.10. I2C sub-device drivers
- 2.11. Centrally managed subdev active state
- 2.12. Streams, multiplexed media pads and internal routing
- 2.13. V4L2 sub-device functions and data structures
- 2.14. V4L2 events
- 2.15. V4L2 Controls
- 2.15.1. Introduction
- 2.15.2. Objects in the framework
- 2.15.3. Basic usage for V4L2 and sub-device drivers
- 2.15.4. Inheriting Sub-device Controls
- 2.15.5. Accessing Control Values
- 2.15.6. Menu Controls
- 2.15.7. Custom Controls
- 2.15.8. Active and Grabbed Controls
- 2.15.9. Control Clusters
- 2.15.10. Handling autogain/gain-type Controls with Auto Clusters
- 2.15.11. VIDIOC_LOG_STATUS Support
- 2.15.12. Different Handlers for Different Video Nodes
- 2.15.13. Finding Controls
- 2.15.14. Preventing Controls inheritance
- 2.15.15. V4L2_CTRL_TYPE_CTRL_CLASS Controls
- 2.15.16. Adding Notify Callbacks
- 2.15.17. v4l2_ctrl functions and data structures
- 2.16. V4L2 videobuf2 functions and data structures
- 2.17. V4L2 DV Timings functions
- 2.18. V4L2 flash functions and data structures
- 2.19. V4L2 Media Controller functions and data structures
- 2.20. V4L2 Media Bus functions and data structures
- 2.21. V4L2 Memory to Memory functions and data structures
- 2.22. V4L2 async kAPI
- 2.23. V4L2 fwnode kAPI
- 2.24. V4L2 CCI kAPI
- 2.25. V4L2 rect helper functions
- 2.26. Tuner functions and data structures
- 2.27. V4L2 common functions and data structures
- 2.28. 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 cx2341x driver
- 9.1.2.1. Memory at cx2341x chips
- 9.1.2.2. Missing documentation
- 9.1.2.3. The cx2341x firmware upload
- 9.1.2.4. How to call the firmware API
- 9.1.2.5. OSD firmware API description
- 9.1.2.5.1. CX2341X_OSD_GET_FRAMEBUFFER
- 9.1.2.5.2. CX2341X_OSD_GET_PIXEL_FORMAT
- 9.1.2.5.3. CX2341X_OSD_SET_PIXEL_FORMAT
- 9.1.2.5.4. CX2341X_OSD_GET_STATE
- 9.1.2.5.5. CX2341X_OSD_SET_STATE
- 9.1.2.5.6. CX2341X_OSD_GET_OSD_COORDS
- 9.1.2.5.7. CX2341X_OSD_SET_OSD_COORDS
- 9.1.2.5.8. CX2341X_OSD_GET_SCREEN_COORDS
- 9.1.2.5.9. CX2341X_OSD_SET_SCREEN_COORDS
- 9.1.2.5.10. CX2341X_OSD_GET_GLOBAL_ALPHA
- 9.1.2.5.11. CX2341X_OSD_SET_GLOBAL_ALPHA
- 9.1.2.5.12. CX2341X_OSD_SET_BLEND_COORDS
- 9.1.2.5.13. CX2341X_OSD_GET_FLICKER_STATE
- 9.1.2.5.14. CX2341X_OSD_SET_FLICKER_STATE
- 9.1.2.5.15. CX2341X_OSD_BLT_COPY
- 9.1.2.5.16. CX2341X_OSD_BLT_FILL
- 9.1.2.5.17. CX2341X_OSD_BLT_TEXT
- 9.1.2.5.18. CX2341X_OSD_SET_FRAMEBUFFER_WINDOW
- 9.1.2.5.19. CX2341X_OSD_SET_CHROMA_KEY
- 9.1.2.5.20. CX2341X_OSD_GET_ALPHA_CONTENT_INDEX
- 9.1.2.5.21. CX2341X_OSD_SET_ALPHA_CONTENT_INDEX
- 9.1.2.6. Encoder firmware API description
- 9.1.2.6.1. CX2341X_ENC_PING_FW
- 9.1.2.6.2. CX2341X_ENC_START_CAPTURE
- 9.1.2.6.3. CX2341X_ENC_STOP_CAPTURE
- 9.1.2.6.4. CX2341X_ENC_SET_AUDIO_ID
- 9.1.2.6.5. CX2341X_ENC_SET_VIDEO_ID
- 9.1.2.6.6. CX2341X_ENC_SET_PCR_ID
- 9.1.2.6.7. CX2341X_ENC_SET_FRAME_RATE
- 9.1.2.6.8. CX2341X_ENC_SET_FRAME_SIZE
- 9.1.2.6.9. CX2341X_ENC_SET_BIT_RATE
- 9.1.2.6.10. CX2341X_ENC_SET_GOP_PROPERTIES
- 9.1.2.6.11. CX2341X_ENC_SET_ASPECT_RATIO
- 9.1.2.6.12. CX2341X_ENC_SET_DNR_FILTER_MODE
- 9.1.2.6.13. CX2341X_ENC_SET_DNR_FILTER_PROPS
- 9.1.2.6.14. CX2341X_ENC_SET_CORING_LEVELS
- 9.1.2.6.15. CX2341X_ENC_SET_SPATIAL_FILTER_TYPE
- 9.1.2.6.16. CX2341X_ENC_SET_VBI_LINE
- 9.1.2.6.17. CX2341X_ENC_SET_STREAM_TYPE
- 9.1.2.6.18. CX2341X_ENC_SET_OUTPUT_PORT
- 9.1.2.6.19. CX2341X_ENC_SET_AUDIO_PROPERTIES
- 9.1.2.6.20. CX2341X_ENC_HALT_FW
- 9.1.2.6.21. CX2341X_ENC_GET_VERSION
- 9.1.2.6.22. CX2341X_ENC_SET_GOP_CLOSURE
- 9.1.2.6.23. CX2341X_ENC_GET_SEQ_END
- 9.1.2.6.24. CX2341X_ENC_SET_PGM_INDEX_INFO
- 9.1.2.6.25. CX2341X_ENC_SET_VBI_CONFIG
- 9.1.2.6.26. CX2341X_ENC_SET_DMA_BLOCK_SIZE
- 9.1.2.6.27. CX2341X_ENC_GET_PREV_DMA_INFO_MB_10
- 9.1.2.6.28. CX2341X_ENC_GET_PREV_DMA_INFO_MB_9
- 9.1.2.6.29. CX2341X_ENC_SCHED_DMA_TO_HOST
- 9.1.2.6.30. CX2341X_ENC_INITIALIZE_INPUT
- 9.1.2.6.31. CX2341X_ENC_SET_FRAME_DROP_RATE
- 9.1.2.6.32. CX2341X_ENC_PAUSE_ENCODER
- 9.1.2.6.33. CX2341X_ENC_REFRESH_INPUT
- 9.1.2.6.34. CX2341X_ENC_SET_COPYRIGHT
- 9.1.2.6.35. CX2341X_ENC_SET_EVENT_NOTIFICATION
- 9.1.2.6.36. CX2341X_ENC_SET_NUM_VSYNC_LINES
- 9.1.2.6.37. CX2341X_ENC_SET_PLACEHOLDER
- 9.1.2.6.38. CX2341X_ENC_MUTE_VIDEO
- 9.1.2.6.39. CX2341X_ENC_MUTE_AUDIO
- 9.1.2.6.40. CX2341X_ENC_SET_VERT_CROP_LINE
- 9.1.2.6.41. CX2341X_ENC_MISC
- 9.1.2.7. Decoder firmware API description
- 9.1.2.7.1. CX2341X_DEC_PING_FW
- 9.1.2.7.2. CX2341X_DEC_START_PLAYBACK
- 9.1.2.7.3. CX2341X_DEC_STOP_PLAYBACK
- 9.1.2.7.4. CX2341X_DEC_SET_PLAYBACK_SPEED
- 9.1.2.7.5. CX2341X_DEC_STEP_VIDEO
- 9.1.2.7.6. CX2341X_DEC_SET_DMA_BLOCK_SIZE
- 9.1.2.7.7. CX2341X_DEC_GET_XFER_INFO
- 9.1.2.7.8. CX2341X_DEC_GET_DMA_STATUS
- 9.1.2.7.9. CX2341X_DEC_SCHED_DMA_FROM_HOST
- 9.1.2.7.10. CX2341X_DEC_PAUSE_PLAYBACK
- 9.1.2.7.11. CX2341X_DEC_HALT_FW
- 9.1.2.7.12. CX2341X_DEC_SET_STANDARD
- 9.1.2.7.13. CX2341X_DEC_GET_VERSION
- 9.1.2.7.14. CX2341X_DEC_SET_STREAM_INPUT
- 9.1.2.7.15. CX2341X_DEC_GET_TIMING_INFO
- 9.1.2.7.16. CX2341X_DEC_SET_AUDIO_MODE
- 9.1.2.7.17. CX2341X_DEC_SET_EVENT_NOTIFICATION
- 9.1.2.7.18. CX2341X_DEC_SET_DISPLAY_BUFFERS
- 9.1.2.7.19. CX2341X_DEC_EXTRACT_VBI
- 9.1.2.7.20. CX2341X_DEC_SET_DECODER_SOURCE
- 9.1.2.7.21. CX2341X_DEC_SET_PREBUFFERING
- 9.1.2.8. PVR350 Video decoder registers 0x02002800 -> 0x02002B00
- 9.1.2.9. The cx231xx DMA engine
- 9.1.3. The cx88 driver
- 9.1.4. The Samsung S5P/EXYNOS4 FIMC driver
- 9.1.5. The pvrusb2 driver
- 9.1.6. PXA-Camera Host Driver
- 9.1.7. The Radiotrack radio driver
- 9.1.8. The Rockchip Image Signal Processor Driver (rkisp1)
- 9.1.9. The saa7134 driver
- 9.1.10. Cropping and Scaling algorithm, used in the sh_mobile_ceu_camera driver
- 9.1.11. Tuner drivers
- 9.1.12. The Virtual Media Controller Driver (vimc)
- 9.1.13. The Zoran driver
- 9.1.13.1. Frequently Asked Questions
- 9.1.13.2. What cards are supported
- 9.1.13.2.1. Iomega Buz
- 9.1.13.2.2. AverMedia 6 Eyes AVS6EYES
- 9.1.13.2.3. Linux Media Labs LML33
- 9.1.13.2.4. Linux Media Labs LML33R10
- 9.1.13.2.5. Pinnacle/Miro DC10(new)
- 9.1.13.2.6. Pinnacle/Miro DC10+
- 9.1.13.2.7. Pinnacle/Miro DC10(old)
- 9.1.13.2.8. Pinnacle/Miro DC30
- 9.1.13.2.9. Pinnacle/Miro DC30+
- 9.1.13.3. 1.1 What the TV decoder can do an what not
- 9.1.13.4. What the TV encoder can do an what not
- 9.1.13.5. How do I get this damn thing to work
- 9.1.13.6. What mainboard should I use (or why doesn't my card work)
- 9.1.13.7. Programming interface
- 9.1.13.8. Applications
- 9.1.13.9. Concerning buffer sizes, quality, output size etc.
- 9.1.13.10. It hangs/crashes/fails/whatevers! Help!
- 9.1.13.11. Maintainers/Contacting
- 9.1.13.12. Driver's License
- 9.1.14. MIPI CCS camera sensor driver
- 9.1.15. 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.