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.4.1. ioctls and locking
- 2.4.2. Video device registration
- 2.4.3. video device debugging
- 2.4.4. Video device cleanup
- 2.4.5. helper functions
- 2.4.6. video_device functions and data structures
vfl_devnode_typevfl_devnode_directionv4l2_video_device_flagsv4l2_prio_statev4l2_prio_init()v4l2_prio_change()v4l2_prio_open()v4l2_prio_close()v4l2_prio_max()v4l2_prio_check()v4l2_file_operationsvideo_devicemedia_entity_to_video_deviceto_video_device__video_register_device()video_register_device()video_register_device_no_warn()video_unregister_device()video_device_alloc()video_device_release()video_device_release_empty()v4l2_disable_ioctl()video_get_drvdata()video_set_drvdata()video_devdata()video_drvdata()video_device_node_name()video_is_registered()v4l2_debugfs_root()video_device_pipeline_start()__video_device_pipeline_start()video_device_pipeline_stop()__video_device_pipeline_stop()video_device_pipeline_alloc_start()video_device_pipeline()
- 2.5. V4L2 device instance
- 2.5.1. v4l2_device functions and data structures
v4l2_devicev4l2_device_get()v4l2_device_put()v4l2_device_register()v4l2_device_set_name()v4l2_device_disconnect()v4l2_device_unregister()v4l2_device_register_subdevv4l2_device_unregister_subdev()__v4l2_device_register_subdev_nodes()v4l2_device_register_subdev_nodes()v4l2_device_register_ro_subdev_nodes()v4l2_subdev_notify()v4l2_device_supports_requests()v4l2_device_for_each_subdev__v4l2_device_call_subdevs_p__v4l2_device_call_subdevs__v4l2_device_call_subdevs_until_err_p__v4l2_device_call_subdevs_until_errv4l2_device_call_allv4l2_device_call_until_errv4l2_device_mask_call_allv4l2_device_mask_call_until_errv4l2_device_has_opv4l2_device_mask_has_op
- 2.5.1. v4l2_device functions and data structures
- 2.6. V4L2 File handles
- 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
v4l2_decode_vbi_linev4l2_subdev_io_pin_bitsv4l2_subdev_io_pin_configv4l2_subdev_core_opsv4l2_subdev_tuner_opsv4l2_subdev_audio_opsv4l2_mbus_frame_desc_entry_csi2v4l2_mbus_frame_desc_flagsv4l2_mbus_frame_desc_entryv4l2_mbus_frame_desc_typev4l2_mbus_frame_descv4l2_subdev_pre_streamon_flagsv4l2_subdev_video_opsv4l2_subdev_vbi_opsv4l2_subdev_sensor_opsv4l2_subdev_ir_modev4l2_subdev_ir_parametersv4l2_subdev_ir_opsv4l2_subdev_pad_configv4l2_subdev_stream_configsv4l2_subdev_kroutingv4l2_subdev_statev4l2_subdev_pad_opsv4l2_subdev_opsv4l2_subdev_internal_opsv4l2_subdev_platform_datav4l2_subdevmedia_entity_to_v4l2_subdevvdev_to_v4l2_subdevv4l2_subdev_fhto_v4l2_subdev_fhv4l2_set_subdevdata()v4l2_get_subdevdata()v4l2_set_subdev_hostdata()v4l2_get_subdev_hostdata()v4l2_subdev_get_fwnode_pad_1_to_1()v4l2_subdev_link_validate_default()v4l2_subdev_link_validate()v4l2_subdev_has_pad_interdep()__v4l2_subdev_state_alloc()__v4l2_subdev_state_free()v4l2_subdev_init_finalizev4l2_subdev_cleanup()v4l2_subdev_state_get_formatv4l2_subdev_state_get_cropv4l2_subdev_state_get_composev4l2_subdev_state_get_intervalv4l2_subdev_get_fmt()v4l2_subdev_get_frame_interval()v4l2_subdev_set_routing()for_each_active_routev4l2_subdev_set_routing_with_fmt()v4l2_subdev_routing_find_opposite_end()v4l2_subdev_state_get_opposite_stream_format()v4l2_subdev_state_xlate_streams()v4l2_subdev_routing_restrictionv4l2_subdev_routing_validate()v4l2_subdev_enable_streams()v4l2_subdev_disable_streams()v4l2_subdev_s_stream_helper()v4l2_subdev_lock_state()v4l2_subdev_unlock_state()v4l2_subdev_lock_states()v4l2_subdev_unlock_states()v4l2_subdev_get_unlocked_active_state()v4l2_subdev_get_locked_active_state()v4l2_subdev_lock_and_get_active_state()v4l2_subdev_init()v4l2_subdev_callv4l2_subdev_call_state_activev4l2_subdev_call_state_tryv4l2_subdev_has_opv4l2_subdev_notify_event()v4l2_subdev_is_streaming()
- 2.14. V4L2 events
- 2.14.1. Event subscription
- 2.14.2. Unsubscribing an event
- 2.14.3. Check if there’s a pending event
- 2.14.4. How events work
- 2.14.4.1. V4L2 event functions and data structures
v4l2_keventv4l2_subscribed_event_opsv4l2_subscribed_eventv4l2_event_dequeue()v4l2_event_queue()v4l2_event_queue_fh()v4l2_event_wake_all()v4l2_event_pending()v4l2_event_subscribe()v4l2_event_unsubscribe()v4l2_event_unsubscribe_all()v4l2_event_subdev_unsubscribe()v4l2_src_change_event_subscribe()v4l2_src_change_event_subdev_subscribe()
- 2.14.4.1. V4L2 event functions and data structures
- 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
v4l2_ctrl_ptrv4l2_ctrl_ptr_create()v4l2_ctrl_opsv4l2_ctrl_type_opsv4l2_ctrl_notify_fncv4l2_ctrlv4l2_ctrl_refv4l2_ctrl_handlerv4l2_ctrl_configv4l2_ctrl_fill()v4l2_ctrl_handler_init_class()v4l2_ctrl_handler_initv4l2_ctrl_handler_free()v4l2_ctrl_lock()v4l2_ctrl_unlock()__v4l2_ctrl_handler_setup()v4l2_ctrl_handler_setup()v4l2_ctrl_handler_log_status()v4l2_ctrl_new_custom()v4l2_ctrl_new_std()v4l2_ctrl_new_std_menu()v4l2_ctrl_new_std_menu_items()v4l2_ctrl_new_std_compound()v4l2_ctrl_new_int_menu()v4l2_ctrl_filterv4l2_ctrl_add_handler()v4l2_ctrl_radio_filter()v4l2_ctrl_cluster()v4l2_ctrl_auto_cluster()v4l2_ctrl_find()v4l2_ctrl_activate()__v4l2_ctrl_grab()v4l2_ctrl_grab()__v4l2_ctrl_modify_range()v4l2_ctrl_modify_range()__v4l2_ctrl_modify_dimensions()v4l2_ctrl_modify_dimensions()v4l2_ctrl_notify()v4l2_ctrl_get_name()v4l2_ctrl_get_menu()v4l2_ctrl_get_int_menu()v4l2_ctrl_g_ctrl()__v4l2_ctrl_s_ctrl()v4l2_ctrl_s_ctrl()v4l2_ctrl_g_ctrl_int64()__v4l2_ctrl_s_ctrl_int64()v4l2_ctrl_s_ctrl_int64()__v4l2_ctrl_s_ctrl_string()v4l2_ctrl_s_ctrl_string()__v4l2_ctrl_s_ctrl_compound()v4l2_ctrl_s_ctrl_compound()v4l2_ctrl_replace()v4l2_ctrl_merge()v4l2_ctrl_log_status()v4l2_ctrl_subscribe_event()v4l2_ctrl_poll()v4l2_ctrl_request_setup()v4l2_ctrl_request_complete()v4l2_ctrl_request_hdl_find()v4l2_ctrl_request_hdl_put()v4l2_ctrl_request_hdl_ctrl_find()v4l2_queryctrl()v4l2_query_ext_ctrl_to_v4l2_queryctrl()v4l2_query_ext_ctrl()v4l2_querymenu()v4l2_g_ctrl()v4l2_s_ctrl()v4l2_g_ext_ctrls()v4l2_try_ext_ctrls()v4l2_s_ext_ctrls()v4l2_ctrl_subdev_subscribe_event()v4l2_ctrl_subdev_log_status()v4l2_ctrl_new_fwnode_properties()v4l2_ctrl_type_op_equal()v4l2_ctrl_type_op_init()v4l2_ctrl_type_op_log()v4l2_ctrl_type_op_validate()
- 2.16. V4L2 videobuf2 functions and data structures
vb2_memoryvb2_mem_opsvb2_planevb2_io_modesvb2_buffer_statevb2_buffervb2_opsvb2_buf_opsvb2_queuevb2_queue_allows_cache_hints()vb2_plane_vaddr()vb2_plane_cookie()vb2_buffer_done()vb2_discard_done()vb2_wait_for_all_buffers()vb2_core_querybuf()vb2_core_reqbufs()vb2_core_create_bufs()vb2_core_prepare_buf()vb2_core_remove_bufs()vb2_core_qbuf()vb2_core_dqbuf()vb2_core_streamon()vb2_core_streamoff()vb2_core_expbuf()vb2_core_queue_init()vb2_core_queue_release()vb2_queue_error()vb2_mmap()vb2_get_unmapped_area()vb2_core_poll()vb2_read()vb2_write()vb2_thread_fncvb2_thread_start()vb2_thread_stop()vb2_is_streaming()vb2_fileio_is_active()vb2_get_num_buffers()vb2_is_busy()vb2_get_drv_priv()vb2_set_plane_payload()vb2_get_plane_payload()vb2_plane_size()vb2_start_streaming_called()vb2_clear_last_buffer_dequeued()vb2_get_buffer()vb2_buffer_in_use()vb2_verify_memory_type()vb2_request_object_is_buffer()vb2_request_buffer_cnt()vb2_v4l2_buffervb2_find_buffer()vb2_reqbufs()vb2_create_bufs()vb2_prepare_buf()vb2_qbuf()vb2_expbuf()vb2_dqbuf()vb2_streamon()vb2_streamoff()vb2_queue_init()vb2_queue_init_name()vb2_queue_release()vb2_queue_change_type()vb2_poll()vb2_queue_is_busy()vb2_video_unregister_device()vb2_ops_wait_prepare()vb2_ops_wait_finish()vb2_vmarea_handler
- 2.17. V4L2 DV Timings functions
v4l2_calc_timeperframe()v4l2_check_dv_timings_fncv4l2_valid_dv_timings()v4l2_enum_dv_timings_cap()v4l2_find_dv_timings_cap()v4l2_find_dv_timings_cea861_vic()v4l2_match_dv_timings()v4l2_print_dv_timings()v4l2_detect_cvt()v4l2_detect_gtf()v4l2_calc_aspect_ratio()v4l2_dv_timings_aspect_ratio()can_reduce_fps()v4l2_hdmi_colorimetry
- 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
v4l2_m2m_opsv4l2_m2m_queue_ctxv4l2_m2m_ctxv4l2_m2m_bufferv4l2_m2m_get_curr_priv()v4l2_m2m_get_vq()v4l2_m2m_try_schedule()v4l2_m2m_job_finish()v4l2_m2m_buf_done_and_job_finish()v4l2_m2m_clear_state()v4l2_m2m_mark_stopped()v4l2_m2m_dst_buf_is_last()v4l2_m2m_has_stopped()v4l2_m2m_is_last_draining_src_buf()v4l2_m2m_last_buffer_done()v4l2_m2m_suspend()v4l2_m2m_resume()v4l2_m2m_reqbufs()v4l2_m2m_querybuf()v4l2_m2m_qbuf()v4l2_m2m_dqbuf()v4l2_m2m_prepare_buf()v4l2_m2m_create_bufs()v4l2_m2m_expbuf()v4l2_m2m_streamon()v4l2_m2m_streamoff()v4l2_m2m_update_start_streaming_state()v4l2_m2m_update_stop_streaming_state()v4l2_m2m_encoder_cmd()v4l2_m2m_decoder_cmd()v4l2_m2m_poll()v4l2_m2m_mmap()v4l2_m2m_init()v4l2_m2m_release()v4l2_m2m_ctx_init()v4l2_m2m_ctx_release()v4l2_m2m_buf_queue()v4l2_m2m_num_src_bufs_ready()v4l2_m2m_num_dst_bufs_ready()v4l2_m2m_next_buf()v4l2_m2m_next_src_buf()v4l2_m2m_next_dst_buf()v4l2_m2m_last_buf()v4l2_m2m_last_src_buf()v4l2_m2m_last_dst_buf()v4l2_m2m_for_each_dst_bufv4l2_m2m_for_each_src_bufv4l2_m2m_for_each_dst_buf_safev4l2_m2m_for_each_src_buf_safev4l2_m2m_get_src_vq()v4l2_m2m_get_dst_vq()v4l2_m2m_buf_remove()v4l2_m2m_src_buf_remove()v4l2_m2m_dst_buf_remove()v4l2_m2m_buf_remove_by_buf()v4l2_m2m_src_buf_remove_by_buf()v4l2_m2m_dst_buf_remove_by_buf()v4l2_m2m_buf_copy_metadata()
- 2.22. V4L2 async kAPI
v4l2_async_match_typev4l2_async_match_descv4l2_async_connectionv4l2_async_notifier_operationsv4l2_async_notifierv4l2_async_subdev_endpointv4l2_async_debug_init()v4l2_async_nf_init()v4l2_async_subdev_nf_init()v4l2_async_nf_add_fwnodev4l2_async_nf_add_fwnode_remotev4l2_async_nf_add_i2cv4l2_async_subdev_endpoint_add()v4l2_async_connection_unique()v4l2_async_nf_register()v4l2_async_nf_unregister()v4l2_async_nf_cleanup()v4l2_async_register_subdevv4l2_async_register_subdev_sensor()v4l2_async_unregister_subdev()
- 2.23. V4L2 fwnode kAPI
v4l2_fwnode_endpointV4L2_FWNODE_PROPERTY_UNSETv4l2_fwnode_orientationv4l2_fwnode_device_propertiesv4l2_fwnode_linkv4l2_connector_typev4l2_connector_linkv4l2_fwnode_connector_analogv4l2_fwnode_connectorv4l2_fwnode_bus_typev4l2_fwnode_endpoint_parse()v4l2_fwnode_endpoint_free()v4l2_fwnode_endpoint_alloc_parse()v4l2_fwnode_parse_link()v4l2_fwnode_put_link()v4l2_fwnode_connector_free()v4l2_fwnode_connector_parse()v4l2_fwnode_connector_add_link()v4l2_fwnode_device_parse()
- 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
v4l2_ctrl_query_fill()v4l2_i2c_tuner_typev4l2_i2c_new_subdev()v4l2_i2c_new_subdev_board()v4l2_i2c_subdev_set_name()v4l2_i2c_subdev_init()v4l2_i2c_subdev_addr()v4l2_i2c_tuner_addrs()v4l2_i2c_subdev_unregister()v4l2_spi_new_subdev()v4l2_spi_subdev_init()v4l2_spi_subdev_unregister()v4l_bound_align_image()v4l2_find_nearest_size_conditionalv4l2_find_nearest_sizev4l2_g_parm_cap()v4l2_s_parm_cap()v4l2_pixel_encodingv4l2_format_infov4l2_get_link_freq()v4l2_get_active_data_lanes()v4l2_link_freq_to_bitmap()devm_v4l2_sensor_clk_get()devm_v4l2_sensor_clk_get_legacy()v4l2_ioctl_opsv4l2_norm_to_name()v4l2_video_std_frame_period()v4l2_video_std_construct()v4l_video_std_enumstd()v4l_printk_ioctl()v4l2_compat_ioctl32()v4l2_kioctlvideo_usercopy()video_ioctl2()
- 2.28. Hauppauge TV EEPROM functions and data structures
- 2.29. V4L2 JPEG header related functions and data structures
- 2.30. V4L2 generic ISP parameters and statistics support
- 3. Digital TV (DVB) devices
- 3.1. Digital TV Common functions
- 3.1.1. DVB devices
dvb_device_typedvb_adapterdvb_devicedvbdevfops_nodedvb_device_get()dvb_device_put()dvb_register_adapter()dvb_unregister_adapter()dvb_register_device()dvb_remove_device()dvb_unregister_device()dvb_create_media_graph()dvb_register_media_controller()dvb_get_media_controller()dvb_generic_open()dvb_generic_release()dvb_generic_ioctl()dvb_usercopy()dvb_module_probe()dvb_module_release()dvb_attachdvb_detach
- 3.1.2. Digital TV Ring buffer
dvb_ringbufferdvb_ringbuffer_init()dvb_ringbuffer_empty()dvb_ringbuffer_free()dvb_ringbuffer_avail()dvb_ringbuffer_reset()dvb_ringbuffer_flush()dvb_ringbuffer_flush_spinlock_wakeup()DVB_RINGBUFFER_PEEKDVB_RINGBUFFER_SKIPdvb_ringbuffer_read_user()dvb_ringbuffer_read()DVB_RINGBUFFER_WRITE_BYTEdvb_ringbuffer_write()dvb_ringbuffer_write_user()dvb_ringbuffer_pkt_write()dvb_ringbuffer_pkt_read_user()dvb_ringbuffer_pkt_read()dvb_ringbuffer_pkt_dispose()dvb_ringbuffer_pkt_next()
- 3.1.3. Digital TV VB2 handler
- 3.1.1. DVB devices
- 3.2. Digital TV Frontend kABI
- 3.2.1. Digital TV Frontend
- 3.2.2. Digital TV Frontend statistics
- 3.2.3. Digital TV Frontend functions and types
dvb_frontend_tune_settingsdvb_tuner_infoanalog_parametersdvbfe_algodvbfe_searchdvb_tuner_opsanalog_demod_infoanalog_demod_opsdvb_frontend_internal_infodvb_frontend_opsdtv_frontend_propertiesdvb_frontenddvb_register_frontend()dvb_unregister_frontend()dvb_frontend_detach()dvb_frontend_suspend()dvb_frontend_resume()dvb_frontend_reinitialise()dvb_frontend_sleep_until()
- 3.3. Digital TV Demux kABI
- 3.4. Digital TV Conditional Access kABI
- 3.5. Digital TV Network kABI
- 3.1. Digital TV Common functions
- 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. Pipeline traversal
- 5.1.13. Media Controller Device Allocator API
- 5.1.14. API Definitions
media_entity_notifymedia_device_opsmedia_devicemedia_device_init()media_device_cleanup()__media_device_register()media_device_registermedia_device_unregister()media_device_register_entity()media_device_unregister_entity()media_device_register_entity_notify()media_device_unregister_entity_notify()media_device_pci_init()__media_device_usb_init()media_device_usb_initmedia_set_bus_info()media_file_operationsmedia_devnodemedia_devnode_register()media_devnode_unregister_prepare()media_devnode_unregister()media_devnode_data()media_devnode_is_registered()media_gobj_typemedia_gobjmedia_entity_enummedia_graphmedia_pipelinemedia_pipeline_padmedia_pipeline_pad_itermedia_pipeline_entity_itermedia_linkmedia_pad_signal_typemedia_padmedia_entity_operationsmedia_entity_typemedia_entitymedia_entity_for_each_padmedia_interfacemedia_intf_devnodemedia_entity_id()media_type()media_id()media_gobj_gen_id()is_media_entity_v4l2_video_device()is_media_entity_v4l2_subdev()media_entity_enum_init()media_entity_enum_cleanup()media_entity_enum_zero()media_entity_enum_set()media_entity_enum_clear()media_entity_enum_test()media_entity_enum_test_and_set()media_entity_enum_empty()media_entity_enum_intersects()gobj_to_entitygobj_to_padgobj_to_linkgobj_to_intfintf_to_devnodemedia_gobj_create()media_gobj_destroy()media_entity_pads_init()media_entity_cleanup()media_get_pad_index()media_create_pad_link()media_create_pad_links()media_entity_remove_links()__media_entity_setup_link()media_entity_setup_link()media_entity_find_link()media_pad_remote_pad_first()media_pad_remote_pad_unique()media_entity_remote_pad_unique()media_entity_remote_source_pad_unique()media_pad_is_streaming()media_entity_is_streaming()media_entity_pipeline()media_pad_pipeline()media_entity_get_fwnode_pad()media_graph_walk_init()media_graph_walk_cleanup()media_graph_walk_start()media_graph_walk_next()media_pipeline_start()__media_pipeline_start()media_pipeline_stop()__media_pipeline_stop()media_pipeline_for_each_padmedia_pipeline_entity_iter_init()media_pipeline_entity_iter_cleanup()media_pipeline_for_each_entitymedia_pipeline_alloc_start()media_devnode_create()media_devnode_remove()media_create_intf_link()__media_remove_intf_link()media_remove_intf_link()__media_remove_intf_links()media_remove_intf_links()media_entity_callmedia_create_ancillary_link()__media_entity_next_link()for_each_media_entity_data_linkmedia_request_statemedia_requestmedia_request_lock_for_access()media_request_unlock_for_access()media_request_lock_for_update()media_request_unlock_for_update()media_request_get()media_request_put()media_request_get_by_fd()media_request_alloc()media_request_object_opsmedia_request_objectmedia_request_object_get()media_request_object_put()media_request_object_find()media_request_object_init()media_request_object_bind()media_request_object_unbind()media_request_object_complete()media_device_usb_allocate()media_device_delete()
- 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.1.16. Intel IPU6 Driver
- 9.2. Digital TV drivers
- 9.2.1. Idea behind the dvb-usb-framework
- 9.2.2. Frontend drivers
- 9.2.2.1. Frontend attach headers
a8293_platform_dataaf9013_platform_dataascot2e_configascot2e_attach()cxd2820r_platform_datacxd2820r_configcxd2820r_attach()drxk_configdrxk_attach()dvb_pll_attach()helene_confighelene_attach()helene_attach_s()horus3a_confighorus3a_attach()ix2505v_configix2505v_attach()m88ds3103_ts_modem88ds3103_clock_outm88ds3103_platform_datam88ds3103_configm88ds3103_attach()mb86a20s_configmb86a20s_attach()mn88472_configrtl2830_platform_datartl2832_platform_datartl2832_sdr_platform_datastb6000_attach()tda10071_platform_datatda826x_attach()zd1301_demod_platform_datazd1301_demod_get_dvb_frontend()zd1301_demod_get_i2c_adapter()zl10036_attach()
- 9.2.2.1. Frontend attach headers
- 9.2.3. vidtv: Virtual Digital TV driver
- 9.2.3.1. Background
- 9.2.3.2. Building vidtv
- 9.2.3.3. Running vidtv
- 9.2.3.4. Command-line arguments to vidtv
- 9.2.3.5. vidtv internal structure
- 9.2.3.6. Testing vidtv with v4l-utils
- 9.2.3.7. What can still be improved in vidtv
- 9.2.3.8. Functions and structs used within vidtv
vidtv_dvbvidtv_channelvidtv_channel_si_init()vidtv_channels_init()vidtv_demod_cnr_to_qual_svidtv_demod_configvidtv_demod_statevidtv_encodervidtv_mux_timingvidtv_mux_sividtv_mux_pid_ctxvidtv_muxvidtv_mux_init_argspes_header_write_argspes_ts_header_write_argspes_write_argsvidtv_pes_write_into()psi_write_argsdesc_write_argscrc32_write_argsheader_write_argsvidtv_psi_sdt_service_assign()vidtv_psi_desc_assign()vidtv_pmt_desc_assign()vidtv_sdt_desc_assign()vidtv_psi_pat_program_assign()vidtv_psi_pmt_stream_assign()vidtv_psi_pmt_create_sec_for_each_pat_entry()vidtv_psi_pmt_get_pid()vidtv_psi_pat_table_update_sec_len()vidtv_psi_pmt_table_update_sec_len()vidtv_psi_sdt_table_update_sec_len()vidtv_psi_pat_write_argsvidtv_psi_pat_write_into()vidtv_psi_sdt_write_argsvidtv_psi_sdt_write_into()vidtv_psi_pmt_write_argsvidtv_psi_pmt_write_into()vidtv_psi_find_pmt_sec()vidtv_psi_table_transportvidtv_psi_table_nitvidtv_psi_nit_write_argsvidtv_psi_nit_write_into()vidtv_psi_eit_write_argsvidtv_psi_eit_write_into()vidtv_psi_eit_table_update_sec_len()vidtv_psi_eit_event_assign()vidtv_s302m_ctxvidtv_s302m_encoder_init_argspcr_write_argsnull_packet_write_argsvidtv_ts_null_write_into()vidtv_ts_pcr_write_into()vidtv_tuner_configvidtv_memcpy()vidtv_memset()vidtv_tuner_hardware_statevidtv_tuner_dev
- 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.