`sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget+/translations/zh_CN/admin-guide/media/vividmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/zh_TW/admin-guide/media/vividmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/it_IT/admin-guide/media/vividmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/ja_JP/admin-guide/media/vividmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/ko_KR/admin-guide/media/vividmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/sp_SP/admin-guide/media/vividmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhcomment)}(h SPDX-License-Identifier: GPL-2.0h]h SPDX-License-Identifier: GPL-2.0}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhhE/var/lib/git/docbuild/linux/Documentation/admin-guide/media/vivid.rsthKubhsection)}(hhh](htitle)}(h%The Virtual Video Test Driver (vivid)h]h%The Virtual Video Test Driver (vivid)}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh paragraph)}(hXBThis driver emulates video4linux hardware of various types: video capture, video output, vbi capture and output, metadata capture and output, radio receivers and transmitters, touch capture and a software defined radio receiver. In addition a simple framebuffer device is available for testing capture and output overlays.h]hXBThis driver emulates video4linux hardware of various types: video capture, video output, vbi capture and output, metadata capture and output, radio receivers and transmitters, touch capture and a software defined radio receiver. In addition a simple framebuffer device is available for testing capture and output overlays.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hRUp to 64 vivid instances can be created, each with up to 16 inputs and 16 outputs.h]hRUp to 64 vivid instances can be created, each with up to 16 inputs and 16 outputs.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hhhhubh)}(hEach input can be a webcam, TV capture device, S-Video capture device or an HDMI capture device. Each output can be an S-Video output device or an HDMI output device.h]hEach input can be a webcam, TV capture device, S-Video capture device or an HDMI capture device. Each output can be an S-Video output device or an HDMI output device.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hhhhubh)}(hThese inputs and outputs act exactly as a real hardware device would behave. This allows you to use this driver as a test input for application development, since you can test the various features without requiring special hardware.h]hThese inputs and outputs act exactly as a real hardware device would behave. This allows you to use this driver as a test input for application development, since you can test the various features without requiring special hardware.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(h@This document describes the features implemented by this driver:h]h@This document describes the features implemented by this driver:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh bullet_list)}(hhh](h list_item)}(hCSupport for read()/write(), MMAP, USERPTR and DMABUF streaming I/O.h]h)}(hjh]hCSupport for read()/write(), MMAP, USERPTR and DMABUF streaming I/O.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(h4A large list of test patterns and variations thereofh]h)}(hj1h]h4A large list of test patterns and variations thereof}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj/ubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(h9Working brightness, contrast, saturation and hue controlsh]h)}(hjHh]h9Working brightness, contrast, saturation and hue controls}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjFubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(h%Support for the alpha color componenth]h)}(hj_h]h%Support for the alpha color component}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj]ubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(h9Full colorspace support, including limited/full RGB rangeh]h)}(hjvh]h9Full colorspace support, including limited/full RGB range}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjtubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(h&All possible control types are presenth]h)}(hjh]h&All possible control types are present}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(h?Support for various pixel aspect ratios and video aspect ratiosh]h)}(hjh]h?Support for various pixel aspect ratios and video aspect ratios}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(h4Error injection to test what happens if errors occurh]h)}(hjh]h4Error injection to test what happens if errors occur}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hHSupports crop/compose/scale in any combination for both input and outputh]h)}(hjh]hHSupports crop/compose/scale in any combination for both input and output}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(h Can emulate up to 4K resolutionsh]h)}(hjh]h Can emulate up to 4K resolutions}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hAAll Field settings are supported for testing interlaced capturingh]h)}(hjh]hAAll Field settings are supported for testing interlaced capturing}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK!hjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hPSupports all standard YUV and RGB formats, including two multiplanar YUV formatsh]h)}(hjh]hPSupports all standard YUV and RGB formats, including two multiplanar YUV formats}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK"hjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(h-Raw and Sliced VBI capture and output supporth]h)}(hj.h]h-Raw and Sliced VBI capture and output support}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK#hj,ubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(h=Radio receiver and transmitter support, including RDS supporth]h)}(hjEh]h=Radio receiver and transmitter support, including RDS support}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK$hjCubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(h$Software defined radio (SDR) supporth]h)}(hj\h]h$Software defined radio (SDR) support}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK%hjZubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(h"Capture and output overlay supporth]h)}(hjsh]h"Capture and output overlay support}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK&hjqubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(h#Metadata capture and output supporth]h)}(hjh]h#Metadata capture and output support}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK'hjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hTouch capture support h]h)}(hTouch capture supporth]hTouch capture support}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK(hjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubeh}(h]h ]h"]h$]h&]bullet-uh1jhhhKhhhhubh)}(h6These features will be described in more detail below.h]h6These features will be described in more detail below.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK*hhhhubh)}(hhh](h)}(hConfiguring the driverh]hConfiguring the driver}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK-ubh)}(hX-By default the driver will create a single instance that has a video capture device with webcam, TV, S-Video and HDMI inputs, a video output device with S-Video and HDMI outputs, one vbi capture device, one vbi output device, one radio receiver device, one radio transmitter device and one SDR device.h]hX-By default the driver will create a single instance that has a video capture device with webcam, TV, S-Video and HDMI inputs, a video output device with S-Video and HDMI outputs, one vbi capture device, one vbi output device, one radio receiver device, one radio transmitter device and one SDR device.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK/hjhhubh)}(hThe number of instances, devices, video inputs and outputs and their types are all configurable using the following module options:h]hThe number of instances, devices, video inputs and outputs and their types are all configurable using the following module options:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK4hjhhubj)}(hhh](j)}(hsn_devs: number of driver instances to create. By default set to 1. Up to 64 instances can be created. h](h)}(hn_devs:h]hn_devs:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK7hjubh block_quote)}(h^number of driver instances to create. By default set to 1. Up to 64 instances can be created. h]h)}(h]number of driver instances to create. By default set to 1. Up to 64 instances can be created.h]h]number of driver instances to create. By default set to 1. Up to 64 instances can be created.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK9hjubah}(h]h ]h"]h$]h&]uh1jhhhK9hjubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hXHnode_types: which devices should each driver instance create. An array of hexadecimal values, one for each instance. The default is 0xe1d3d. Each value is a bitmask with the following meaning: - bit 0: Video Capture node - bit 2-3: VBI Capture node: 0 = none, 1 = raw vbi, 2 = sliced vbi, 3 = both - bit 4: Radio Receiver node - bit 5: Software Defined Radio Receiver node - bit 8: Video Output node - bit 10-11: VBI Output node: 0 = none, 1 = raw vbi, 2 = sliced vbi, 3 = both - bit 12: Radio Transmitter node - bit 16: Framebuffer for testing overlays - bit 17: Metadata Capture node - bit 18: Metadata Output node - bit 19: Touch Capture node So to create four instances, the first two with just one video capture device, the second two with just one video output device you would pass these module options to vivid: .. code-block:: none n_devs=4 node_types=0x1,0x1,0x100,0x100 h](h)}(h node_types:h]h node_types:}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjAubj)}(hX- bit 0: Video Capture node - bit 2-3: VBI Capture node: 0 = none, 1 = raw vbi, 2 = sliced vbi, 3 = both - bit 4: Radio Receiver node - bit 5: Software Defined Radio Receiver node - bit 8: Video Output node - bit 10-11: VBI Output node: 0 = none, 1 = raw vbi, 2 = sliced vbi, 3 = both - bit 12: Radio Transmitter node - bit 16: Framebuffer for testing overlays - bit 17: Metadata Capture node - bit 18: Metadata Output node - bit 19: Touch Capture node h]j)}(hhh](j)}(hbit 0: Video Capture nodeh]h)}(hj\h]hbit 0: Video Capture node}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKBhjZubah}(h]h ]h"]h$]h&]uh1jhjWubj)}(hJbit 2-3: VBI Capture node: 0 = none, 1 = raw vbi, 2 = sliced vbi, 3 = bothh]h)}(hjsh]hJbit 2-3: VBI Capture node: 0 = none, 1 = raw vbi, 2 = sliced vbi, 3 = both}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKChjqubah}(h]h ]h"]h$]h&]uh1jhjWubj)}(hbit 4: Radio Receiver nodeh]h)}(hjh]hbit 4: Radio Receiver node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKDhjubah}(h]h ]h"]h$]h&]uh1jhjWubj)}(h+bit 5: Software Defined Radio Receiver nodeh]h)}(hjh]h+bit 5: Software Defined Radio Receiver node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKEhjubah}(h]h ]h"]h$]h&]uh1jhjWubj)}(hbit 8: Video Output nodeh]h)}(hjh]hbit 8: Video Output node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKFhjubah}(h]h ]h"]h$]h&]uh1jhjWubj)}(hKbit 10-11: VBI Output node: 0 = none, 1 = raw vbi, 2 = sliced vbi, 3 = bothh]h)}(hjh]hKbit 10-11: VBI Output node: 0 = none, 1 = raw vbi, 2 = sliced vbi, 3 = both}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKGhjubah}(h]h ]h"]h$]h&]uh1jhjWubj)}(hbit 12: Radio Transmitter nodeh]h)}(hjh]hbit 12: Radio Transmitter node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKHhjubah}(h]h ]h"]h$]h&]uh1jhjWubj)}(h(bit 16: Framebuffer for testing overlaysh]h)}(hjh]h(bit 16: Framebuffer for testing overlays}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKIhjubah}(h]h ]h"]h$]h&]uh1jhjWubj)}(hbit 17: Metadata Capture nodeh]h)}(hjh]hbit 17: Metadata Capture node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKJhjubah}(h]h ]h"]h$]h&]uh1jhjWubj)}(hbit 18: Metadata Output nodeh]h)}(hj+h]hbit 18: Metadata Output node}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKKhj)ubah}(h]h ]h"]h$]h&]uh1jhjWubj)}(hbit 19: Touch Capture node h]h)}(hbit 19: Touch Capture nodeh]hbit 19: Touch Capture node}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKLhj@ubah}(h]h ]h"]h$]h&]uh1jhjWubeh}(h]h ]h"]h$]h&]jjuh1jhhhKBhjSubah}(h]h ]h"]h$]h&]uh1jhhhKBhjAubh)}(hSo to create four instances, the first two with just one video capture device, the second two with just one video output device you would pass these module options to vivid:h]hSo to create four instances, the first two with just one video capture device, the second two with just one video output device you would pass these module options to vivid:}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKNhjAubh literal_block)}(h'n_devs=4 node_types=0x1,0x1,0x100,0x100h]h'n_devs=4 node_types=0x1,0x1,0x100,0x100}hjtsbah}(h]h ]h"]h$]h&]hhforcelanguagenonehighlight_args}uh1jrhhhKRhjAubeh}(h]h ]h"]h$]h&]uh1jhhhK>hj/ubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hnum_inputs: the number of inputs, one for each instance. By default 4 inputs are created for each video capture device. At most 16 inputs can be created, and there must be at least one. h](h)}(h num_inputs:h]h num_inputs:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKVhjubj)}(hthe number of inputs, one for each instance. By default 4 inputs are created for each video capture device. At most 16 inputs can be created, and there must be at least one. h]h)}(hthe number of inputs, one for each instance. By default 4 inputs are created for each video capture device. At most 16 inputs can be created, and there must be at least one.h]hthe number of inputs, one for each instance. By default 4 inputs are created for each video capture device. At most 16 inputs can be created, and there must be at least one.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKXhjubah}(h]h ]h"]h$]h&]uh1jhhhKXhjubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hXXinput_types: the input types for each instance, the default is 0xe4. This defines what the type of each input is when the inputs are created for each driver instance. This is a hexadecimal value with up to 16 pairs of bits, each pair gives the type and bits 0-1 map to input 0, bits 2-3 map to input 1, 30-31 map to input 15. Each pair of bits has the following meaning: - 00: this is a webcam input - 01: this is a TV tuner input - 10: this is an S-Video input - 11: this is an HDMI input So to create a video capture device with 8 inputs where input 0 is a TV tuner, inputs 1-3 are S-Video inputs and inputs 4-7 are HDMI inputs you would use the following module options: .. code-block:: none num_inputs=8 input_types=0xffa9 h](h)}(h input_types:h]h input_types:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK\hjubj)}(hXthe input types for each instance, the default is 0xe4. This defines what the type of each input is when the inputs are created for each driver instance. This is a hexadecimal value with up to 16 pairs of bits, each pair gives the type and bits 0-1 map to input 0, bits 2-3 map to input 1, 30-31 map to input 15. Each pair of bits has the following meaning: - 00: this is a webcam input - 01: this is a TV tuner input - 10: this is an S-Video input - 11: this is an HDMI input So to create a video capture device with 8 inputs where input 0 is a TV tuner, inputs 1-3 are S-Video inputs and inputs 4-7 are HDMI inputs you would use the following module options: .. code-block:: none num_inputs=8 input_types=0xffa9 h](h)}(hXethe input types for each instance, the default is 0xe4. This defines what the type of each input is when the inputs are created for each driver instance. This is a hexadecimal value with up to 16 pairs of bits, each pair gives the type and bits 0-1 map to input 0, bits 2-3 map to input 1, 30-31 map to input 15. Each pair of bits has the following meaning:h]hXethe input types for each instance, the default is 0xe4. This defines what the type of each input is when the inputs are created for each driver instance. This is a hexadecimal value with up to 16 pairs of bits, each pair gives the type and bits 0-1 map to input 0, bits 2-3 map to input 1, 30-31 map to input 15. Each pair of bits has the following meaning:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK^hjubj)}(hw- 00: this is a webcam input - 01: this is a TV tuner input - 10: this is an S-Video input - 11: this is an HDMI input h]j)}(hhh](j)}(h00: this is a webcam inputh]h)}(hjh]h00: this is a webcam input}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKdhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(h01: this is a TV tuner inputh]h)}(hjh]h01: this is a TV tuner input}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKehjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(h10: this is an S-Video inputh]h)}(hjh]h10: this is an S-Video input}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKfhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(h11: this is an HDMI input h]h)}(h11: this is an HDMI inputh]h11: this is an HDMI input}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKghj3ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]jjuh1jhhhKdhjubah}(h]h ]h"]h$]h&]uh1jhhhKdhjubh)}(hSo to create a video capture device with 8 inputs where input 0 is a TV tuner, inputs 1-3 are S-Video inputs and inputs 4-7 are HDMI inputs you would use the following module options:h]hSo to create a video capture device with 8 inputs where input 0 is a TV tuner, inputs 1-3 are S-Video inputs and inputs 4-7 are HDMI inputs you would use the following module options:}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKihjubjs)}(hnum_inputs=8 input_types=0xffa9h]hnum_inputs=8 input_types=0xffa9}hjesbah}(h]h ]h"]h$]h&]hhjjnonej}uh1jrhhhKmhjubeh}(h]h ]h"]h$]h&]uh1jhhhK^hjubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hnum_outputs: the number of outputs, one for each instance. By default 2 outputs are created for each video output device. At most 16 outputs can be created, and there must be at least one. h](h)}(h num_outputs:h]h num_outputs:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKqhjubj)}(hthe number of outputs, one for each instance. By default 2 outputs are created for each video output device. At most 16 outputs can be created, and there must be at least one. h]h)}(hthe number of outputs, one for each instance. By default 2 outputs are created for each video output device. At most 16 outputs can be created, and there must be at least one.h]hthe number of outputs, one for each instance. By default 2 outputs are created for each video output device. At most 16 outputs can be created, and there must be at least one.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKshjubah}(h]h ]h"]h$]h&]uh1jhhhKshjubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hXoutput_types: the output types for each instance, the default is 0x02. This defines what the type of each output is when the outputs are created for each driver instance. This is a hexadecimal value with up to 16 bits, each bit gives the type and bit 0 maps to output 0, bit 1 maps to output 1, bit 15 maps to output 15. The meaning of each bit is as follows: - 0: this is an S-Video output - 1: this is an HDMI output So to create a video output device with 8 outputs where outputs 0-3 are S-Video outputs and outputs 4-7 are HDMI outputs you would use the following module options: .. code-block:: none num_outputs=8 output_types=0xf0 h](h)}(h output_types:h]h output_types:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKwhjubj)}(hXthe output types for each instance, the default is 0x02. This defines what the type of each output is when the outputs are created for each driver instance. This is a hexadecimal value with up to 16 bits, each bit gives the type and bit 0 maps to output 0, bit 1 maps to output 1, bit 15 maps to output 15. The meaning of each bit is as follows: - 0: this is an S-Video output - 1: this is an HDMI output So to create a video output device with 8 outputs where outputs 0-3 are S-Video outputs and outputs 4-7 are HDMI outputs you would use the following module options: .. code-block:: none num_outputs=8 output_types=0xf0 h](h)}(hXYthe output types for each instance, the default is 0x02. This defines what the type of each output is when the outputs are created for each driver instance. This is a hexadecimal value with up to 16 bits, each bit gives the type and bit 0 maps to output 0, bit 1 maps to output 1, bit 15 maps to output 15. The meaning of each bit is as follows:h]hXYthe output types for each instance, the default is 0x02. This defines what the type of each output is when the outputs are created for each driver instance. This is a hexadecimal value with up to 16 bits, each bit gives the type and bit 0 maps to output 0, bit 1 maps to output 1, bit 15 maps to output 15. The meaning of each bit is as follows:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKyhjubj)}(h;- 0: this is an S-Video output - 1: this is an HDMI output h]j)}(hhh](j)}(h0: this is an S-Video outputh]h)}(hjh]h0: this is an S-Video output}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(h1: this is an HDMI output h]h)}(h1: this is an HDMI outputh]h1: this is an HDMI output}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]jjuh1jhhhKhjubah}(h]h ]h"]h$]h&]uh1jhhhKhjubh)}(hSo to create a video output device with 8 outputs where outputs 0-3 are S-Video outputs and outputs 4-7 are HDMI outputs you would use the following module options:h]hSo to create a video output device with 8 outputs where outputs 0-3 are S-Video outputs and outputs 4-7 are HDMI outputs you would use the following module options:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubjs)}(hnum_outputs=8 output_types=0xf0h]hnum_outputs=8 output_types=0xf0}hj%sbah}(h]h ]h"]h$]h&]hhjjnonej}uh1jrhhhKhjubeh}(h]h ]h"]h$]h&]uh1jhhhKyhjubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hX2vid_cap_nr: give the desired videoX start number for each video capture device. The default is -1 which will just take the first free number. This allows you to map capture video nodes to specific videoX device nodes. Example: .. code-block:: none n_devs=4 vid_cap_nr=2,4,6,8 This will attempt to assign /dev/video2 for the video capture device of the first vivid instance, video4 for the next up to video8 for the last instance. If it can't succeed, then it will just take the next free number. h](h)}(h vid_cap_nr:h]h vid_cap_nr:}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjAubj)}(hXgive the desired videoX start number for each video capture device. The default is -1 which will just take the first free number. This allows you to map capture video nodes to specific videoX device nodes. Example: .. code-block:: none n_devs=4 vid_cap_nr=2,4,6,8 This will attempt to assign /dev/video2 for the video capture device of the first vivid instance, video4 for the next up to video8 for the last instance. If it can't succeed, then it will just take the next free number. h](h)}(hgive the desired videoX start number for each video capture device. The default is -1 which will just take the first free number. This allows you to map capture video nodes to specific videoX device nodes. Example:h]hgive the desired videoX start number for each video capture device. The default is -1 which will just take the first free number. This allows you to map capture video nodes to specific videoX device nodes. Example:}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjSubjs)}(hn_devs=4 vid_cap_nr=2,4,6,8h]hn_devs=4 vid_cap_nr=2,4,6,8}hjesbah}(h]h ]h"]h$]h&]hhjjnonej}uh1jrhhhKhjSubh)}(hThis will attempt to assign /dev/video2 for the video capture device of the first vivid instance, video4 for the next up to video8 for the last instance. If it can't succeed, then it will just take the next free number.h]hThis will attempt to assign /dev/video2 for the video capture device of the first vivid instance, video4 for the next up to video8 for the last instance. If it can’t succeed, then it will just take the next free number.}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjSubeh}(h]h ]h"]h$]h&]uh1jhhhKhjAubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hvid_out_nr: give the desired videoX start number for each video output device. The default is -1 which will just take the first free number. h](h)}(h vid_out_nr:h]h vid_out_nr:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubj)}(hgive the desired videoX start number for each video output device. The default is -1 which will just take the first free number. h]h)}(hgive the desired videoX start number for each video output device. The default is -1 which will just take the first free number.h]hgive the desired videoX start number for each video output device. The default is -1 which will just take the first free number.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhhhKhjubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hvbi_cap_nr: give the desired vbiX start number for each vbi capture device. The default is -1 which will just take the first free number. h](h)}(h vbi_cap_nr:h]h vbi_cap_nr:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubj)}(h~give the desired vbiX start number for each vbi capture device. The default is -1 which will just take the first free number. h]h)}(h}give the desired vbiX start number for each vbi capture device. The default is -1 which will just take the first free number.h]h}give the desired vbiX start number for each vbi capture device. The default is -1 which will just take the first free number.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhhhKhjubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hvbi_out_nr: give the desired vbiX start number for each vbi output device. The default is -1 which will just take the first free number. h](h)}(h vbi_out_nr:h]h vbi_out_nr:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubj)}(h}give the desired vbiX start number for each vbi output device. The default is -1 which will just take the first free number. h]h)}(h|give the desired vbiX start number for each vbi output device. The default is -1 which will just take the first free number.h]h|give the desired vbiX start number for each vbi output device. The default is -1 which will just take the first free number.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhhhKhjubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hradio_rx_nr: give the desired radioX start number for each radio receiver device. The default is -1 which will just take the first free number. h](h)}(h radio_rx_nr:h]h radio_rx_nr:}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubj)}(hgive the desired radioX start number for each radio receiver device. The default is -1 which will just take the first free number. h]h)}(hgive the desired radioX start number for each radio receiver device. The default is -1 which will just take the first free number.h]hgive the desired radioX start number for each radio receiver device. The default is -1 which will just take the first free number.}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj1ubah}(h]h ]h"]h$]h&]uh1jhhhKhjubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hradio_tx_nr: give the desired radioX start number for each radio transmitter device. The default is -1 which will just take the first free number. h](h)}(h radio_tx_nr:h]h radio_tx_nr:}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjOubj)}(hgive the desired radioX start number for each radio transmitter device. The default is -1 which will just take the first free number. h]h)}(hgive the desired radioX start number for each radio transmitter device. The default is -1 which will just take the first free number.h]hgive the desired radioX start number for each radio transmitter device. The default is -1 which will just take the first free number.}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjaubah}(h]h ]h"]h$]h&]uh1jhhhKhjOubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hsdr_cap_nr: give the desired swradioX start number for each SDR capture device. The default is -1 which will just take the first free number. h](h)}(h sdr_cap_nr:h]h sdr_cap_nr:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubj)}(hgive the desired swradioX start number for each SDR capture device. The default is -1 which will just take the first free number. h]h)}(hgive the desired swradioX start number for each SDR capture device. The default is -1 which will just take the first free number.h]hgive the desired swradioX start number for each SDR capture device. The default is -1 which will just take the first free number.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhhhKhjubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hmeta_cap_nr: give the desired videoX start number for each metadata capture device. The default is -1 which will just take the first free number. h](h)}(h meta_cap_nr:h]h meta_cap_nr:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubj)}(hgive the desired videoX start number for each metadata capture device. The default is -1 which will just take the first free number. h]h)}(hgive the desired videoX start number for each metadata capture device. The default is -1 which will just take the first free number.h]hgive the desired videoX start number for each metadata capture device. The default is -1 which will just take the first free number.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhhhKhjubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hmeta_out_nr: give the desired videoX start number for each metadata output device. The default is -1 which will just take the first free number. h](h)}(h meta_out_nr:h]h meta_out_nr:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubj)}(hgive the desired videoX start number for each metadata output device. The default is -1 which will just take the first free number. h]h)}(hgive the desired videoX start number for each metadata output device. The default is -1 which will just take the first free number.h]hgive the desired videoX start number for each metadata output device. The default is -1 which will just take the first free number.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhhhKhjubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(htouch_cap_nr: give the desired v4l-touchX start number for each touch capture device. The default is -1 which will just take the first free number. h](h)}(h touch_cap_nr:h]h touch_cap_nr:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubj)}(hgive the desired v4l-touchX start number for each touch capture device. The default is -1 which will just take the first free number. h]h)}(hgive the desired v4l-touchX start number for each touch capture device. The default is -1 which will just take the first free number.h]hgive the desired v4l-touchX start number for each touch capture device. The default is -1 which will just take the first free number.}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj!ubah}(h]h ]h"]h$]h&]uh1jhhhKhjubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hXccs_cap_mode: specify the allowed video capture crop/compose/scaling combination for each driver instance. Video capture devices can have any combination of cropping, composing and scaling capabilities and this will tell the vivid driver which of those is should emulate. By default the user can select this through controls. The value is either -1 (controlled by the user) or a set of three bits, each enabling (1) or disabling (0) one of the features: - bit 0: Enable crop support. Cropping will take only part of the incoming picture. - bit 1: Enable compose support. Composing will copy the incoming picture into a larger buffer. - bit 2: Enable scaling support. Scaling can scale the incoming picture. The scaler of the vivid driver can enlarge up or down to four times the original size. The scaler is very simple and low-quality. Simplicity and speed were key, not quality. Note that this value is ignored by webcam inputs: those enumerate discrete framesizes and that is incompatible with cropping, composing or scaling. h](h)}(h ccs_cap_mode:h]h ccs_cap_mode:}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj?ubj)}(hXFspecify the allowed video capture crop/compose/scaling combination for each driver instance. Video capture devices can have any combination of cropping, composing and scaling capabilities and this will tell the vivid driver which of those is should emulate. By default the user can select this through controls. The value is either -1 (controlled by the user) or a set of three bits, each enabling (1) or disabling (0) one of the features: - bit 0: Enable crop support. Cropping will take only part of the incoming picture. - bit 1: Enable compose support. Composing will copy the incoming picture into a larger buffer. - bit 2: Enable scaling support. Scaling can scale the incoming picture. The scaler of the vivid driver can enlarge up or down to four times the original size. The scaler is very simple and low-quality. Simplicity and speed were key, not quality. Note that this value is ignored by webcam inputs: those enumerate discrete framesizes and that is incompatible with cropping, composing or scaling. h](h)}(hX7specify the allowed video capture crop/compose/scaling combination for each driver instance. Video capture devices can have any combination of cropping, composing and scaling capabilities and this will tell the vivid driver which of those is should emulate. By default the user can select this through controls.h]hX7specify the allowed video capture crop/compose/scaling combination for each driver instance. Video capture devices can have any combination of cropping, composing and scaling capabilities and this will tell the vivid driver which of those is should emulate. By default the user can select this through controls.}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjQubh)}(hThe value is either -1 (controlled by the user) or a set of three bits, each enabling (1) or disabling (0) one of the features:h]hThe value is either -1 (controlled by the user) or a set of three bits, each enabling (1) or disabling (0) one of the features:}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjQubj)}(hhh](j)}(h^bit 0: Enable crop support. Cropping will take only part of the incoming picture.h](h)}(hbit 0:h]hbit 0:}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjtubj)}(hJEnable crop support. Cropping will take only part of the incoming picture.h]h)}(hJEnable crop support. Cropping will take only part of the incoming picture.h]hJEnable crop support. Cropping will take only part of the incoming picture.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhhhKhjtubeh}(h]h ]h"]h$]h&]uh1jhjqubj)}(hkbit 1: Enable compose support. Composing will copy the incoming picture into a larger buffer. h](h)}(hbit 1:h]hbit 1:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubj)}(hWEnable compose support. Composing will copy the incoming picture into a larger buffer. h]h)}(hVEnable compose support. Composing will copy the incoming picture into a larger buffer.h]hVEnable compose support. Composing will copy the incoming picture into a larger buffer.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhhhKhjubeh}(h]h ]h"]h$]h&]uh1jhjqubj)}(hXbit 2: Enable scaling support. Scaling can scale the incoming picture. The scaler of the vivid driver can enlarge up or down to four times the original size. The scaler is very simple and low-quality. Simplicity and speed were key, not quality. h](h)}(hbit 2:h]hbit 2:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubj)}(hEnable scaling support. Scaling can scale the incoming picture. The scaler of the vivid driver can enlarge up or down to four times the original size. The scaler is very simple and low-quality. Simplicity and speed were key, not quality. h]h)}(hEnable scaling support. Scaling can scale the incoming picture. The scaler of the vivid driver can enlarge up or down to four times the original size. The scaler is very simple and low-quality. Simplicity and speed were key, not quality.h]hEnable scaling support. Scaling can scale the incoming picture. The scaler of the vivid driver can enlarge up or down to four times the original size. The scaler is very simple and low-quality. Simplicity and speed were key, not quality.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhhhKhjubeh}(h]h ]h"]h$]h&]uh1jhjqubeh}(h]h ]h"]h$]h&]jjuh1jhhhKhjQubh)}(hNote that this value is ignored by webcam inputs: those enumerate discrete framesizes and that is incompatible with cropping, composing or scaling.h]hNote that this value is ignored by webcam inputs: those enumerate discrete framesizes and that is incompatible with cropping, composing or scaling.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjQubeh}(h]h ]h"]h$]h&]uh1jhhhKhj?ubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hX5ccs_out_mode: specify the allowed video output crop/compose/scaling combination for each driver instance. Video output devices can have any combination of cropping, composing and scaling capabilities and this will tell the vivid driver which of those is should emulate. By default the user can select this through controls. The value is either -1 (controlled by the user) or a set of three bits, each enabling (1) or disabling (0) one of the features: - bit 0: Enable crop support. Cropping will take only part of the outgoing buffer. - bit 1: Enable compose support. Composing will copy the incoming buffer into a larger picture frame. - bit 2: Enable scaling support. Scaling can scale the incoming buffer. The scaler of the vivid driver can enlarge up or down to four times the original size. The scaler is very simple and low-quality. Simplicity and speed were key, not quality. h](h)}(h ccs_out_mode:h]h ccs_out_mode:}(hj( hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj$ ubj)}(hXspecify the allowed video output crop/compose/scaling combination for each driver instance. Video output devices can have any combination of cropping, composing and scaling capabilities and this will tell the vivid driver which of those is should emulate. By default the user can select this through controls. The value is either -1 (controlled by the user) or a set of three bits, each enabling (1) or disabling (0) one of the features: - bit 0: Enable crop support. Cropping will take only part of the outgoing buffer. - bit 1: Enable compose support. Composing will copy the incoming buffer into a larger picture frame. - bit 2: Enable scaling support. Scaling can scale the incoming buffer. The scaler of the vivid driver can enlarge up or down to four times the original size. The scaler is very simple and low-quality. Simplicity and speed were key, not quality. h](h)}(hX5specify the allowed video output crop/compose/scaling combination for each driver instance. Video output devices can have any combination of cropping, composing and scaling capabilities and this will tell the vivid driver which of those is should emulate. By default the user can select this through controls.h]hX5specify the allowed video output crop/compose/scaling combination for each driver instance. Video output devices can have any combination of cropping, composing and scaling capabilities and this will tell the vivid driver which of those is should emulate. By default the user can select this through controls.}(hj: hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj6 ubh)}(hThe value is either -1 (controlled by the user) or a set of three bits, each enabling (1) or disabling (0) one of the features:h]hThe value is either -1 (controlled by the user) or a set of three bits, each enabling (1) or disabling (0) one of the features:}(hjH hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj6 ubj)}(hhh](j)}(h^bit 0: Enable crop support. Cropping will take only part of the outgoing buffer. h](h)}(hbit 0:h]hbit 0:}(hj] hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjY ubj)}(hJEnable crop support. Cropping will take only part of the outgoing buffer. h]h)}(hIEnable crop support. Cropping will take only part of the outgoing buffer.h]hIEnable crop support. Cropping will take only part of the outgoing buffer.}(hjo hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjk ubah}(h]h ]h"]h$]h&]uh1jhhhKhjY ubeh}(h]h ]h"]h$]h&]uh1jhjV ubj)}(hqbit 1: Enable compose support. Composing will copy the incoming buffer into a larger picture frame. h](h)}(hbit 1:h]hbit 1:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubj)}(h]Enable compose support. Composing will copy the incoming buffer into a larger picture frame. h]h)}(h\Enable compose support. Composing will copy the incoming buffer into a larger picture frame.h]h\Enable compose support. Composing will copy the incoming buffer into a larger picture frame.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhhhKhj ubeh}(h]h ]h"]h$]h&]uh1jhjV ubj)}(hXbit 2: Enable scaling support. Scaling can scale the incoming buffer. The scaler of the vivid driver can enlarge up or down to four times the original size. The scaler is very simple and low-quality. Simplicity and speed were key, not quality. h](h)}(hbit 2:h]hbit 2:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubj)}(hEnable scaling support. Scaling can scale the incoming buffer. The scaler of the vivid driver can enlarge up or down to four times the original size. The scaler is very simple and low-quality. Simplicity and speed were key, not quality. h]h)}(hEnable scaling support. Scaling can scale the incoming buffer. The scaler of the vivid driver can enlarge up or down to four times the original size. The scaler is very simple and low-quality. Simplicity and speed were key, not quality.h]hEnable scaling support. Scaling can scale the incoming buffer. The scaler of the vivid driver can enlarge up or down to four times the original size. The scaler is very simple and low-quality. Simplicity and speed were key, not quality.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhhhKhj ubeh}(h]h ]h"]h$]h&]uh1jhjV ubeh}(h]h ]h"]h$]h&]jjuh1jhhhKhj6 ubeh}(h]h ]h"]h$]h&]uh1jhhhKhj$ ubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hXkmultiplanar: select whether each device instance supports multi-planar formats, and thus the V4L2 multi-planar API. By default device instances are single-planar. This module option can override that for each instance. Values are: - 1: this is a single-planar instance. - 2: this is a multi-planar instance. h](h)}(h multiplanar:h]h multiplanar:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj ubj)}(hX9select whether each device instance supports multi-planar formats, and thus the V4L2 multi-planar API. By default device instances are single-planar. This module option can override that for each instance. Values are: - 1: this is a single-planar instance. - 2: this is a multi-planar instance. h](h)}(hselect whether each device instance supports multi-planar formats, and thus the V4L2 multi-planar API. By default device instances are single-planar.h]hselect whether each device instance supports multi-planar formats, and thus the V4L2 multi-planar API. By default device instances are single-planar.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj ubh)}(hCThis module option can override that for each instance. Values are:h]hCThis module option can override that for each instance. Values are:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM hj ubj)}(hM- 1: this is a single-planar instance. - 2: this is a multi-planar instance. h]j)}(hhh](j)}(h$1: this is a single-planar instance.h]h)}(hj6 h]h$1: this is a single-planar instance.}(hj8 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM hj4 ubah}(h]h ]h"]h$]h&]uh1jhj1 ubj)}(h$2: this is a multi-planar instance. h]h)}(h#2: this is a multi-planar instance.h]h#2: this is a multi-planar instance.}(hjO hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM hjK ubah}(h]h ]h"]h$]h&]uh1jhj1 ubeh}(h]h ]h"]h$]h&]jjuh1jhhhM hj- ubah}(h]h ]h"]h$]h&]uh1jhhhM hj ubeh}(h]h ]h"]h$]h&]uh1jhhhMhj ubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(h1vivid_debug: enable driver debugging info h](h)}(h vivid_debug:h]h vivid_debug:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj{ ubj)}(henable driver debugging info h]h)}(henable driver debugging infoh]henable driver debugging info}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj ubah}(h]h ]h"]h$]h&]uh1jhhhMhj{ ubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hXno_error_inj: if set disable the error injecting controls. This option is needed in order to run a tool like v4l2-compliance. Tools like that exercise all controls including a control like 'Disconnect' which emulates a USB disconnect, making the device inaccessible and so all tests that v4l2-compliance is doing will fail afterwards. There may be other situations as well where you want to disable the error injection support of vivid. When this option is set, then the controls that select crop, compose and scale behavior are also removed. Unless overridden by ccs_cap_mode and/or ccs_out_mode the will default to enabling crop, compose and scaling. h](h)}(h no_error_inj:h]h no_error_inj:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj ubj)}(hXif set disable the error injecting controls. This option is needed in order to run a tool like v4l2-compliance. Tools like that exercise all controls including a control like 'Disconnect' which emulates a USB disconnect, making the device inaccessible and so all tests that v4l2-compliance is doing will fail afterwards. There may be other situations as well where you want to disable the error injection support of vivid. When this option is set, then the controls that select crop, compose and scale behavior are also removed. Unless overridden by ccs_cap_mode and/or ccs_out_mode the will default to enabling crop, compose and scaling. h](h)}(hX@if set disable the error injecting controls. This option is needed in order to run a tool like v4l2-compliance. Tools like that exercise all controls including a control like 'Disconnect' which emulates a USB disconnect, making the device inaccessible and so all tests that v4l2-compliance is doing will fail afterwards.h]hXDif set disable the error injecting controls. This option is needed in order to run a tool like v4l2-compliance. Tools like that exercise all controls including a control like ‘Disconnect’ which emulates a USB disconnect, making the device inaccessible and so all tests that v4l2-compliance is doing will fail afterwards.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj ubh)}(hX=There may be other situations as well where you want to disable the error injection support of vivid. When this option is set, then the controls that select crop, compose and scale behavior are also removed. Unless overridden by ccs_cap_mode and/or ccs_out_mode the will default to enabling crop, compose and scaling.h]hX=There may be other situations as well where you want to disable the error injection support of vivid. When this option is set, then the controls that select crop, compose and scale behavior are also removed. Unless overridden by ccs_cap_mode and/or ccs_out_mode the will default to enabling crop, compose and scaling.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj ubeh}(h]h ]h"]h$]h&]uh1jhhhMhj ubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hallocators: memory allocator selection, default is 0. It specifies the way buffers will be allocated. - 0: vmalloc - 1: dma-contig h](h)}(h allocators:h]h allocators:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM hj ubj)}(hmemory allocator selection, default is 0. It specifies the way buffers will be allocated. - 0: vmalloc - 1: dma-contig h](h)}(hYmemory allocator selection, default is 0. It specifies the way buffers will be allocated.h]hYmemory allocator selection, default is 0. It specifies the way buffers will be allocated.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM"hj ubj)}(h- 0: vmalloc - 1: dma-contig h]j)}(hhh](j)}(h 0: vmalloch]h)}(hj h]h 0: vmalloc}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM%hj ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(h1: dma-contig h]h)}(h 1: dma-contigh]h 1: dma-contig}(hj/ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM&hj+ ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]jjuh1jhhhM%hj ubah}(h]h ]h"]h$]h&]uh1jhhhM%hj ubeh}(h]h ]h"]h$]h&]uh1jhhhM"hj ubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hX3cache_hints: specifies if the device should set queues' user-space cache and memory consistency hint capability (V4L2_BUF_CAP_SUPPORTS_MMAP_CACHE_HINTS). The hints are valid only when using MMAP streaming I/O. Default is 0. - 0: forbid hints - 1: allow hints h](h)}(h cache_hints:h]h cache_hints:}(hj_ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM(hj[ ubj)}(hXspecifies if the device should set queues' user-space cache and memory consistency hint capability (V4L2_BUF_CAP_SUPPORTS_MMAP_CACHE_HINTS). The hints are valid only when using MMAP streaming I/O. Default is 0. - 0: forbid hints - 1: allow hints h](h)}(hspecifies if the device should set queues' user-space cache and memory consistency hint capability (V4L2_BUF_CAP_SUPPORTS_MMAP_CACHE_HINTS). The hints are valid only when using MMAP streaming I/O. Default is 0.h]hspecifies if the device should set queues’ user-space cache and memory consistency hint capability (V4L2_BUF_CAP_SUPPORTS_MMAP_CACHE_HINTS). The hints are valid only when using MMAP streaming I/O. Default is 0.}(hjq hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM*hjm ubj)}(h#- 0: forbid hints - 1: allow hints h]j)}(hhh](j)}(h0: forbid hintsh]h)}(hj h]h0: forbid hints}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM.hj ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(h1: allow hints h]h)}(h1: allow hintsh]h1: allow hints}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM/hj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]jjuh1jhhhM.hj ubah}(h]h ]h"]h$]h&]uh1jhhhM.hjm ubeh}(h]h ]h"]h$]h&]uh1jhhhM*hj[ ubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hsupports_requests: specifies if the device should support the Request API. There are three possible values, default is 1: - 0: no request - 1: supports requests - 2: requires requests h](h)}(hsupports_requests:h]hsupports_requests:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM1hj ubj)}(hspecifies if the device should support the Request API. There are three possible values, default is 1: - 0: no request - 1: supports requests - 2: requires requests h](h)}(hfspecifies if the device should support the Request API. There are three possible values, default is 1:h]hfspecifies if the device should support the Request API. There are three possible values, default is 1:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM3hj ubj)}(h>- 0: no request - 1: supports requests - 2: requires requests h]j)}(hhh](j)}(h 0: no requesth]h)}(hj h]h 0: no request}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM6hj ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(h1: supports requestsh]h)}(hj h]h1: supports requests}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM7hj ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(h2: requires requests h]h)}(h2: requires requestsh]h2: requires requests}(hj* hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM8hj& ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]jjuh1jhhhM6hj ubah}(h]h ]h"]h$]h&]uh1jhhhM6hj ubeh}(h]h ]h"]h$]h&]uh1jhhhM3hj ubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubeh}(h]h ]h"]h$]h&]jjuh1jhhhK7hjhhubh)}(hXTaken together, all these module options allow you to precisely customize the driver behavior and test your application with all sorts of permutations. It is also very suitable to emulate hardware that is not yet available, e.g. when developing software for a new upcoming device.h]hXTaken together, all these module options allow you to precisely customize the driver behavior and test your application with all sorts of permutations. It is also very suitable to emulate hardware that is not yet available, e.g. when developing software for a new upcoming device.}(hj\ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM:hjhhubeh}(h]configuring-the-driverah ]h"]configuring the driverah$]h&]uh1hhhhhhhhK-ubh)}(hhh](h)}(h Video Captureh]h Video Capture}(hju hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjr hhhhhMAubh)}(hXThis is probably the most frequently used feature. The video capture device can be configured by using the module options num_inputs, input_types and ccs_cap_mode (see "Configuring the driver" for more detailed information), but by default four inputs are configured: a webcam, a TV tuner, an S-Video and an HDMI input, one input for each input type. Those are described in more detail below.h]hXThis is probably the most frequently used feature. The video capture device can be configured by using the module options num_inputs, input_types and ccs_cap_mode (see “Configuring the driver” for more detailed information), but by default four inputs are configured: a webcam, a TV tuner, an S-Video and an HDMI input, one input for each input type. Those are described in more detail below.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMChjr hhubh)}(hX"Special attention has been given to the rate at which new frames become available. The jitter will be around 1 jiffy (that depends on the HZ configuration of your kernel, so usually 1/100, 1/250 or 1/1000 of a second), but the long-term behavior is exactly following the framerate. So a framerate of 59.94 Hz is really different from 60 Hz. If the framerate exceeds your kernel's HZ value, then you will get dropped frames, but the frame/field sequence counting will keep track of that so the sequence count will skip whenever frames are dropped.h]hX$Special attention has been given to the rate at which new frames become available. The jitter will be around 1 jiffy (that depends on the HZ configuration of your kernel, so usually 1/100, 1/250 or 1/1000 of a second), but the long-term behavior is exactly following the framerate. So a framerate of 59.94 Hz is really different from 60 Hz. If the framerate exceeds your kernel’s HZ value, then you will get dropped frames, but the frame/field sequence counting will keep track of that so the sequence count will skip whenever frames are dropped.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMJhjr hhubh)}(hhh](h)}(h Webcam Inputh]h Webcam Input}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhMUubh)}(hXThe webcam input supports three framesizes: 320x180, 640x360 and 1280x720. It supports frames per second settings of 10, 15, 25, 30, 50 and 60 fps. Which ones are available depends on the chosen framesize: the larger the framesize, the lower the maximum frames per second.h]hXThe webcam input supports three framesizes: 320x180, 640x360 and 1280x720. It supports frames per second settings of 10, 15, 25, 30, 50 and 60 fps. Which ones are available depends on the chosen framesize: the larger the framesize, the lower the maximum frames per second.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMWhj hhubh)}(hSThe initially selected colorspace when you switch to the webcam input will be sRGB.h]hSThe initially selected colorspace when you switch to the webcam input will be sRGB.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM\hj hhubeh}(h] webcam-inputah ]h"] webcam inputah$]h&]uh1hhjr hhhhhMUubh)}(hhh](h)}(hTV and S-Video Inputsh]hTV and S-Video Inputs}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhMaubh)}(hsThe only difference between the TV and S-Video input is that the TV has a tuner. Otherwise they behave identically.h]hsThe only difference between the TV and S-Video input is that the TV has a tuner. Otherwise they behave identically.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMchj hhubh)}(hThese inputs support audio inputs as well: one TV and one Line-In. They both support all TV standards. If the standard is queried, then the Vivid controls 'Standard Signal Mode' and 'Standard' determine what the result will be.h]hThese inputs support audio inputs as well: one TV and one Line-In. They both support all TV standards. If the standard is queried, then the Vivid controls ‘Standard Signal Mode’ and ‘Standard’ determine what the result will be.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMfhj hhubh)}(hXThese inputs support all combinations of the field setting. Special care has been taken to faithfully reproduce how fields are handled for the different TV standards. This is particularly noticeable when generating a horizontally moving image so the temporal effect of using interlaced formats becomes clearly visible. For 50 Hz standards the top field is the oldest and the bottom field is the newest in time. For 60 Hz standards that is reversed: the bottom field is the oldest and the top field is the newest in time.h]hXThese inputs support all combinations of the field setting. Special care has been taken to faithfully reproduce how fields are handled for the different TV standards. This is particularly noticeable when generating a horizontally moving image so the temporal effect of using interlaced formats becomes clearly visible. For 50 Hz standards the top field is the oldest and the bottom field is the newest in time. For 60 Hz standards that is reversed: the bottom field is the oldest and the top field is the newest in time.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMkhj hhubh)}(hWhen you start capturing in V4L2_FIELD_ALTERNATE mode the first buffer will contain the top field for 50 Hz standards and the bottom field for 60 Hz standards. This is what capture hardware does as well.h]hWhen you start capturing in V4L2_FIELD_ALTERNATE mode the first buffer will contain the top field for 50 Hz standards and the bottom field for 60 Hz standards. This is what capture hardware does as well.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMshj hhubh)}(hFinally, for PAL/SECAM standards the first half of the top line contains noise. This simulates the Wide Screen Signal that is commonly placed there.h]hFinally, for PAL/SECAM standards the first half of the top line contains noise. This simulates the Wide Screen Signal that is commonly placed there.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMwhj hhubh)}(h`The initially selected colorspace when you switch to the TV or S-Video input will be SMPTE-170M.h]h`The initially selected colorspace when you switch to the TV or S-Video input will be SMPTE-170M.}(hj+ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMzhj hhubh)}(hXWThe pixel aspect ratio will depend on the TV standard. The video aspect ratio can be selected through the 'Standard Aspect Ratio' Vivid control. Choices are '4x3', '16x9' which will give letterboxed widescreen video and '16x9 Anamorphic' which will give full screen squashed anamorphic widescreen video that will need to be scaled accordingly.h]hXgThe pixel aspect ratio will depend on the TV standard. The video aspect ratio can be selected through the ‘Standard Aspect Ratio’ Vivid control. Choices are ‘4x3’, ‘16x9’ which will give letterboxed widescreen video and ‘16x9 Anamorphic’ which will give full screen squashed anamorphic widescreen video that will need to be scaled accordingly.}(hj9 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM}hj hhubh)}(hXThe TV 'tuner' supports a frequency range of 44-958 MHz. Channels are available every 6 MHz, starting from 49.25 MHz. For each channel the generated image will be in color for the +/- 0.25 MHz around it, and in grayscale for +/- 1 MHz around the channel. Beyond that it is just noise. The VIDIOC_G_TUNER ioctl will return 100% signal strength for +/- 0.25 MHz and 50% for +/- 1 MHz. It will also return correct afc values to show whether the frequency is too low or too high.h]hXThe TV ‘tuner’ supports a frequency range of 44-958 MHz. Channels are available every 6 MHz, starting from 49.25 MHz. For each channel the generated image will be in color for the +/- 0.25 MHz around it, and in grayscale for +/- 1 MHz around the channel. Beyond that it is just noise. The VIDIOC_G_TUNER ioctl will return 100% signal strength for +/- 0.25 MHz and 50% for +/- 1 MHz. It will also return correct afc values to show whether the frequency is too low or too high.}(hjG hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubh)}(hXThe audio subchannels that are returned are MONO for the +/- 1 MHz range around a valid channel frequency. When the frequency is within +/- 0.25 MHz of the channel it will return either MONO, STEREO, either MONO | SAP (for NTSC) or LANG1 | LANG2 (for others), or STEREO | SAP.h]hXThe audio subchannels that are returned are MONO for the +/- 1 MHz range around a valid channel frequency. When the frequency is within +/- 0.25 MHz of the channel it will return either MONO, STEREO, either MONO | SAP (for NTSC) or LANG1 | LANG2 (for others), or STEREO | SAP.}(hjU hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubh)}(hWhich one is returned depends on the chosen channel, each next valid channel will cycle through the possible audio subchannel combinations. This allows you to test the various combinations by just switching channels..h]hWhich one is returned depends on the chosen channel, each next valid channel will cycle through the possible audio subchannel combinations. This allows you to test the various combinations by just switching channels..}(hjc hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubh)}(h`Finally, for these inputs the v4l2_timecode struct is filled in the dequeued v4l2_buffer struct.h]h`Finally, for these inputs the v4l2_timecode struct is filled in the dequeued v4l2_buffer struct.}(hjq hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubeh}(h]tv-and-s-video-inputsah ]h"]tv and s-video inputsah$]h&]uh1hhjr hhhhhMaubh)}(hhh](h)}(h HDMI Inputh]h HDMI Input}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhMubh)}(hX[The HDMI inputs supports all CEA-861 and DMT timings, both progressive and interlaced, for pixelclock frequencies between 25 and 600 MHz. The field mode for interlaced formats is always V4L2_FIELD_ALTERNATE. For HDMI the field order is always top field first, and when you start capturing an interlaced format you will receive the top field first.h]hX[The HDMI inputs supports all CEA-861 and DMT timings, both progressive and interlaced, for pixelclock frequencies between 25 and 600 MHz. The field mode for interlaced formats is always V4L2_FIELD_ALTERNATE. For HDMI the field order is always top field first, and when you start capturing an interlaced format you will receive the top field first.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubh)}(hX The initially selected colorspace when you switch to the HDMI input or select an HDMI timing is based on the format resolution: for resolutions less than or equal to 720x576 the colorspace is set to SMPTE-170M, for others it is set to REC-709 (CEA-861 timings) or sRGB (VESA DMT timings).h]hX The initially selected colorspace when you switch to the HDMI input or select an HDMI timing is based on the format resolution: for resolutions less than or equal to 720x576 the colorspace is set to SMPTE-170M, for others it is set to REC-709 (CEA-861 timings) or sRGB (VESA DMT timings).}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubh)}(hThe pixel aspect ratio will depend on the HDMI timing: for 720x480 is it set as for the NTSC TV standard, for 720x576 it is set as for the PAL TV standard, and for all others a 1:1 pixel aspect ratio is returned.h]hThe pixel aspect ratio will depend on the HDMI timing: for 720x480 is it set as for the NTSC TV standard, for 720x576 it is set as for the PAL TV standard, and for all others a 1:1 pixel aspect ratio is returned.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubh)}(hXThe video aspect ratio can be selected through the 'DV Timings Aspect Ratio' Vivid control. Choices are 'Source Width x Height' (just use the same ratio as the chosen format), '4x3' or '16x9', either of which can result in pillarboxed or letterboxed video.h]hXThe video aspect ratio can be selected through the ‘DV Timings Aspect Ratio’ Vivid control. Choices are ‘Source Width x Height’ (just use the same ratio as the chosen format), ‘4x3’ or ‘16x9’, either of which can result in pillarboxed or letterboxed video.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubh)}(hFor HDMI inputs it is possible to set the EDID. By default a simple EDID is provided. You can only set the EDID for HDMI inputs. Internally, however, the EDID is shared between all HDMI inputs.h]hFor HDMI inputs it is possible to set the EDID. By default a simple EDID is provided. You can only set the EDID for HDMI inputs. Internally, however, the EDID is shared between all HDMI inputs.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubh)}(h|No interpretation is done of the EDID data with the exception of the physical address. See the CEC section for more details.h]h|No interpretation is done of the EDID data with the exception of the physical address. See the CEC section for more details.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubh)}(hThere is a maximum of 15 HDMI inputs (if there are more, then they will be reduced to 15) since that's the limitation of the EDID physical address.h]hThere is a maximum of 15 HDMI inputs (if there are more, then they will be reduced to 15) since that’s the limitation of the EDID physical address.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubeh}(h] hdmi-inputah ]h"] hdmi inputah$]h&]uh1hhjr hhhhhMubeh}(h] video-captureah ]h"] video captureah$]h&]uh1hhhhhhhhMAubh)}(hhh](h)}(h Video Outputh]h Video Output}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhMubh)}(hXBThe video output device can be configured by using the module options num_outputs, output_types and ccs_out_mode (see "Configuring the driver" for more detailed information), but by default two outputs are configured: an S-Video and an HDMI input, one output for each output type. Those are described in more detail below.h]hXFThe video output device can be configured by using the module options num_outputs, output_types and ccs_out_mode (see “Configuring the driver” for more detailed information), but by default two outputs are configured: an S-Video and an HDMI input, one output for each output type. Those are described in more detail below.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubh)}(hELike with video capture the framerate is also exact in the long term.h]hELike with video capture the framerate is also exact in the long term.}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubh)}(hhh](h)}(hS-Video Outputh]hS-Video Output}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj7hhhhhMubh)}(hxThis output supports audio outputs as well: "Line-Out 1" and "Line-Out 2". The S-Video output supports all TV standards.h]hThis output supports audio outputs as well: “Line-Out 1” and “Line-Out 2”. The S-Video output supports all TV standards.}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj7hhubh)}(h;This output supports all combinations of the field setting.h]h;This output supports all combinations of the field setting.}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj7hhubh)}(h`The initially selected colorspace when you switch to the TV or S-Video input will be SMPTE-170M.h]h`The initially selected colorspace when you switch to the TV or S-Video input will be SMPTE-170M.}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj7hhubeh}(h]s-video-outputah ]h"]s-video outputah$]h&]uh1hhj hhhhhMubh)}(hhh](h)}(h HDMI Outputh]h HDMI Output}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjzhhhhhMubh)}(hThe HDMI output supports all CEA-861 and DMT timings, both progressive and interlaced, for pixelclock frequencies between 25 and 600 MHz. The field mode for interlaced formats is always V4L2_FIELD_ALTERNATE.h]hThe HDMI output supports all CEA-861 and DMT timings, both progressive and interlaced, for pixelclock frequencies between 25 and 600 MHz. The field mode for interlaced formats is always V4L2_FIELD_ALTERNATE.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjzhhubh)}(hX!The initially selected colorspace when you switch to the HDMI output or select an HDMI timing is based on the format resolution: for resolutions less than or equal to 720x576 the colorspace is set to SMPTE-170M, for others it is set to REC-709 (CEA-861 timings) or sRGB (VESA DMT timings).h]hX!The initially selected colorspace when you switch to the HDMI output or select an HDMI timing is based on the format resolution: for resolutions less than or equal to 720x576 the colorspace is set to SMPTE-170M, for others it is set to REC-709 (CEA-861 timings) or sRGB (VESA DMT timings).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjzhhubh)}(hThe pixel aspect ratio will depend on the HDMI timing: for 720x480 is it set as for the NTSC TV standard, for 720x576 it is set as for the PAL TV standard, and for all others a 1:1 pixel aspect ratio is returned.h]hThe pixel aspect ratio will depend on the HDMI timing: for 720x480 is it set as for the NTSC TV standard, for 720x576 it is set as for the PAL TV standard, and for all others a 1:1 pixel aspect ratio is returned.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjzhhubh)}(hLAn HDMI output has a valid EDID which can be obtained through VIDIOC_G_EDID.h]hLAn HDMI output has a valid EDID which can be obtained through VIDIOC_G_EDID.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjzhhubh)}(hThere is a maximum of 15 HDMI outputs (if there are more, then they will be reduced to 15) since that's the limitation of the EDID physical address. See also the CEC section for more details.h]hThere is a maximum of 15 HDMI outputs (if there are more, then they will be reduced to 15) since that’s the limitation of the EDID physical address. See also the CEC section for more details.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjzhhubeh}(h] hdmi-outputah ]h"] hdmi outputah$]h&]uh1hhj hhhhhMubeh}(h] video-outputah ]h"] video outputah$]h&]uh1hhhhhhhhMubh)}(hhh](h)}(h VBI Captureh]h VBI Capture}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhMubh)}(hXThere are three types of VBI capture devices: those that only support raw (undecoded) VBI, those that only support sliced (decoded) VBI and those that support both. This is determined by the node_types module option. In all cases the driver will generate valid VBI data: for 60 Hz standards it will generate Closed Caption and XDS data. The closed caption stream will alternate between "Hello world!" and "Closed captions test" every second. The XDS stream will give the current time once a minute. For 50 Hz standards it will generate the Wide Screen Signal which is based on the actual Video Aspect Ratio control setting and teletext pages 100-159, one page per frame.h]hXThere are three types of VBI capture devices: those that only support raw (undecoded) VBI, those that only support sliced (decoded) VBI and those that support both. This is determined by the node_types module option. In all cases the driver will generate valid VBI data: for 60 Hz standards it will generate Closed Caption and XDS data. The closed caption stream will alternate between “Hello world!” and “Closed captions test” every second. The XDS stream will give the current time once a minute. For 50 Hz standards it will generate the Wide Screen Signal which is based on the actual Video Aspect Ratio control setting and teletext pages 100-159, one page per frame.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjhhubh)}(hThe VBI device will only work for the S-Video and TV inputs, it will give back an error if the current input is a webcam or HDMI.h]hThe VBI device will only work for the S-Video and TV inputs, it will give back an error if the current input is a webcam or HDMI.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjhhubeh}(h] vbi-captureah ]h"] vbi captureah$]h&]uh1hhhhhhhhMubh)}(hhh](h)}(h VBI Outputh]h VBI Output}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhMubh)}(hThere are three types of VBI output devices: those that only support raw (undecoded) VBI, those that only support sliced (decoded) VBI and those that support both. This is determined by the node_types module option.h]hThere are three types of VBI output devices: those that only support raw (undecoded) VBI, those that only support sliced (decoded) VBI and those that support both. This is determined by the node_types module option.}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjhhubh)}(hThe sliced VBI output supports the Wide Screen Signal and the teletext signal for 50 Hz standards and Closed Captioning + XDS for 60 Hz standards.h]hThe sliced VBI output supports the Wide Screen Signal and the teletext signal for 50 Hz standards and Closed Captioning + XDS for 60 Hz standards.}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjhhubh)}(hoThe VBI device will only work for the S-Video output, it will give back an error if the current output is HDMI.h]hoThe VBI device will only work for the S-Video output, it will give back an error if the current output is HDMI.}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjhhubeh}(h] vbi-outputah ]h"] vbi outputah$]h&]uh1hhhhhhhhMubh)}(hhh](h)}(hRadio Receiverh]hRadio Receiver}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjYhhhhhMubh)}(hjThe radio receiver emulates an FM/AM/SW receiver. The FM band also supports RDS. The frequency ranges are:h]hjThe radio receiver emulates an FM/AM/SW receiver. The FM band also supports RDS. The frequency ranges are:}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM hjYhhubj)}(hJ- FM: 64 MHz - 108 MHz - AM: 520 kHz - 1710 kHz - SW: 2300 kHz - 26.1 MHz h]j)}(hhh](j)}(hFM: 64 MHz - 108 MHzh]h)}(hjh]hFM: 64 MHz - 108 MHz}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM hjubah}(h]h ]h"]h$]h&]uh1jhj|ubj)}(hAM: 520 kHz - 1710 kHzh]h)}(hjh]hAM: 520 kHz - 1710 kHz}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jhj|ubj)}(hSW: 2300 kHz - 26.1 MHz h]h)}(hSW: 2300 kHz - 26.1 MHzh]hSW: 2300 kHz - 26.1 MHz}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jhj|ubeh}(h]h ]h"]h$]h&]jjuh1jhhhM hjxubah}(h]h ]h"]h$]h&]uh1jhhhM hjYhhubh)}(hX7Valid channels are emulated every 1 MHz for FM and every 100 kHz for AM and SW. The signal strength decreases the further the frequency is from the valid frequency until it becomes 0% at +/- 50 kHz (FM) or 5 kHz (AM/SW) from the ideal frequency. The initial frequency when the driver is loaded is set to 95 MHz.h]hX7Valid channels are emulated every 1 MHz for FM and every 100 kHz for AM and SW. The signal strength decreases the further the frequency is from the valid frequency until it becomes 0% at +/- 50 kHz (FM) or 5 kHz (AM/SW) from the ideal frequency. The initial frequency when the driver is loaded is set to 95 MHz.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjYhhubh)}(hXoThe FM receiver supports RDS as well, both using 'Block I/O' and 'Controls' modes. In the 'Controls' mode the RDS information is stored in read-only controls. These controls are updated every time the frequency is changed, or when the tuner status is requested. The Block I/O method uses the read() interface to pass the RDS blocks on to the application for decoding.h]hX{The FM receiver supports RDS as well, both using ‘Block I/O’ and ‘Controls’ modes. In the ‘Controls’ mode the RDS information is stored in read-only controls. These controls are updated every time the frequency is changed, or when the tuner status is requested. The Block I/O method uses the read() interface to pass the RDS blocks on to the application for decoding.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjYhhubh)}(hXThe RDS signal is 'detected' for +/- 12.5 kHz around the channel frequency, and the further the frequency is away from the valid frequency the more RDS errors are randomly introduced into the block I/O stream, up to 50% of all blocks if you are +/- 12.5 kHz from the channel frequency. All four errors can occur in equal proportions: blocks marked 'CORRECTED', blocks marked 'ERROR', blocks marked 'INVALID' and dropped blocks.h]hXThe RDS signal is ‘detected’ for +/- 12.5 kHz around the channel frequency, and the further the frequency is away from the valid frequency the more RDS errors are randomly introduced into the block I/O stream, up to 50% of all blocks if you are +/- 12.5 kHz from the channel frequency. All four errors can occur in equal proportions: blocks marked ‘CORRECTED’, blocks marked ‘ERROR’, blocks marked ‘INVALID’ and dropped blocks.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjYhhubh)}(h|The generated RDS stream contains all the standard fields contained in a 0B group, and also radio text and the current time.h]h|The generated RDS stream contains all the standard fields contained in a 0B group, and also radio text and the current time.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM$hjYhhubh)}(hThe receiver supports HW frequency seek, either in Bounded mode, Wrap Around mode or both, which is configurable with the "Radio HW Seek Mode" control.h]hThe receiver supports HW frequency seek, either in Bounded mode, Wrap Around mode or both, which is configurable with the “Radio HW Seek Mode” control.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM'hjYhhubeh}(h]radio-receiverah ]h"]radio receiverah$]h&]uh1hhhhhhhhMubh)}(hhh](h)}(hRadio Transmitterh]hRadio Transmitter}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhM,ubh)}(hpThe radio transmitter emulates an FM/AM/SW transmitter. The FM band also supports RDS. The frequency ranges are:h]hpThe radio transmitter emulates an FM/AM/SW transmitter. The FM band also supports RDS. The frequency ranges are:}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM.hjhhubj)}(hJ- FM: 64 MHz - 108 MHz - AM: 520 kHz - 1710 kHz - SW: 2300 kHz - 26.1 MHz h]j)}(hhh](j)}(hFM: 64 MHz - 108 MHzh]h)}(hjGh]hFM: 64 MHz - 108 MHz}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM1hjEubah}(h]h ]h"]h$]h&]uh1jhjBubj)}(hAM: 520 kHz - 1710 kHzh]h)}(hj^h]hAM: 520 kHz - 1710 kHz}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM2hj\ubah}(h]h ]h"]h$]h&]uh1jhjBubj)}(hSW: 2300 kHz - 26.1 MHz h]h)}(hSW: 2300 kHz - 26.1 MHzh]hSW: 2300 kHz - 26.1 MHz}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM3hjsubah}(h]h ]h"]h$]h&]uh1jhjBubeh}(h]h ]h"]h$]h&]jjuh1jhhhM1hj>ubah}(h]h ]h"]h$]h&]uh1jhhhM1hjhhubh)}(hubh)}(h=The SDR receiver has three frequency bands for the ADC tuner:h]h=The SDR receiver has three frequency bands for the ADC tuner:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM@hjhhubj)}(h*- 300 kHz - 900 kHz - 2800 kHz - 3200 kHz h]j)}(hhh](j)}(h300 kHzh]h)}(hjh]h300 kHz}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMBhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(h900 kHz - 2800 kHzh]h)}(hjh]h900 kHz - 2800 kHz}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMChjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(h 3200 kHz h]h)}(h3200 kHzh]h3200 kHz}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMDhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]jjuh1jhhhMBhjubah}(h]h ]h"]h$]h&]uh1jhhhMBhjhhubh)}(h(The RF tuner supports 50 MHz - 2000 MHz.h]h(The RF tuner supports 50 MHz - 2000 MHz.}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMFhjhhubh)}(htThe generated data contains the In-phase and Quadrature components of a 1 kHz tone that has an amplitude of sqrt(2).h]htThe generated data contains the In-phase and Quadrature components of a 1 kHz tone that has an amplitude of sqrt(2).}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMHhjhhubeh}(h]software-defined-radio-receiverah ]h"]software defined radio receiverah$]h&]uh1hhhhhhhhM>ubh)}(hhh](h)}(hMetadata Captureh]hMetadata Capture}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjWhhhhhMMubh)}(h~The Metadata capture generates UVC format metadata. The PTS and SCR are transmitted based on the values set in vivid controls.h]h~The Metadata capture generates UVC format metadata. The PTS and SCR are transmitted based on the values set in vivid controls.}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMOhjWhhubh)}(hiThe Metadata device will only work for the Webcam input, it will give back an error for all other inputs.h]hiThe Metadata device will only work for the Webcam input, it will give back an error for all other inputs.}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMRhjWhhubeh}(h]metadata-captureah ]h"]metadata captureah$]h&]uh1hhhhhhhhMMubh)}(hhh](h)}(hMetadata Outputh]hMetadata Output}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhMWubh)}(hPThe Metadata output can be used to set brightness, contrast, saturation and hue.h]hPThe Metadata output can be used to set brightness, contrast, saturation and hue.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMYhjhhubh)}(hkThe Metadata device will only work for the Webcam output, it will give back an error for all other outputs.h]hkThe Metadata device will only work for the Webcam output, it will give back an error for all other outputs.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM[hjhhubeh}(h]metadata-outputah ]h"]metadata outputah$]h&]uh1hhhhhhhhMWubh)}(hhh](h)}(h Touch Captureh]h Touch Capture}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhM`ubh)}(hThe Touch capture generates touch patterns simulating single tap, double tap, triple tap, move from left to right, zoom in, zoom out, palm press (simulating a large area being pressed on a touchpad), and simulating 16 simultaneous touch points.h]hThe Touch capture generates touch patterns simulating single tap, double tap, triple tap, move from left to right, zoom in, zoom out, palm press (simulating a large area being pressed on a touchpad), and simulating 16 simultaneous touch points.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMbhjhhubeh}(h] touch-captureah ]h"] touch captureah$]h&]uh1hhhhhhhhM`ubh)}(hhh](h)}(hControlsh]hControls}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhMhubh)}(h{Different devices support different controls. The sections below will describe each control and which devices support them.h]h{Different devices support different controls. The sections below will describe each control and which devices support them.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMjhjhhubh)}(hhh](h)}(hUser Controls - Test Controlsh]hUser Controls - Test Controls}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhMoubh)}(hXThe Button, Boolean, Integer 32 Bits, Integer 64 Bits, Menu, String, Bitmask and Integer Menu are controls that represent all possible control types. The Menu control and the Integer Menu control both have 'holes' in their menu list, meaning that one or more menu items return EINVAL when VIDIOC_QUERYMENU is called. Both menu controls also have a non-zero minimum control value. These features allow you to check if your application can handle such things correctly. These controls are supported for every device type.h]hX The Button, Boolean, Integer 32 Bits, Integer 64 Bits, Menu, String, Bitmask and Integer Menu are controls that represent all possible control types. The Menu control and the Integer Menu control both have ‘holes’ in their menu list, meaning that one or more menu items return EINVAL when VIDIOC_QUERYMENU is called. Both menu controls also have a non-zero minimum control value. These features allow you to check if your application can handle such things correctly. These controls are supported for every device type.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMqhjhhubeh}(h]user-controls-test-controlsah ]h"]user controls - test controlsah$]h&]uh1hhjhhhhhMoubh)}(hhh](h)}(hUser Controls - Video Captureh]hUser Controls - Video Capture}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj.hhhhhM{ubh)}(h5The following controls are specific to video capture.h]h5The following controls are specific to video capture.}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM}hj.hhubh)}(hXThe Brightness, Contrast, Saturation and Hue controls actually work and are standard. There is one special feature with the Brightness control: each video input has its own brightness value, so changing input will restore the brightness for that input. In addition, each video input uses a different brightness range (minimum and maximum control values). Switching inputs will cause a control event to be sent with the V4L2_EVENT_CTRL_CH_RANGE flag set. This allows you to test controls that can change their range.h]hXThe Brightness, Contrast, Saturation and Hue controls actually work and are standard. There is one special feature with the Brightness control: each video input has its own brightness value, so changing input will restore the brightness for that input. In addition, each video input uses a different brightness range (minimum and maximum control values). Switching inputs will cause a control event to be sent with the V4L2_EVENT_CTRL_CH_RANGE flag set. This allows you to test controls that can change their range.}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj.hhubh)}(hThe 'Gain, Automatic' and Gain controls can be used to test volatile controls: if 'Gain, Automatic' is set, then the Gain control is volatile and changes constantly. If 'Gain, Automatic' is cleared, then the Gain control is a normal control.h]hThe ‘Gain, Automatic’ and Gain controls can be used to test volatile controls: if ‘Gain, Automatic’ is set, then the Gain control is volatile and changes constantly. If ‘Gain, Automatic’ is cleared, then the Gain control is a normal control.}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj.hhubh)}(hThe 'Horizontal Flip' and 'Vertical Flip' controls can be used to flip the image. These combine with the 'Sensor Flipped Horizontally/Vertically' Vivid controls.h]hThe ‘Horizontal Flip’ and ‘Vertical Flip’ controls can be used to flip the image. These combine with the ‘Sensor Flipped Horizontally/Vertically’ Vivid controls.}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj.hhubh)}(hmThe 'Alpha Component' control can be used to set the alpha component for formats containing an alpha channel.h]hqThe ‘Alpha Component’ control can be used to set the alpha component for formats containing an alpha channel.}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj.hhubeh}(h]user-controls-video-captureah ]h"]user controls - video captureah$]h&]uh1hhjhhhhhM{ubh)}(hhh](h)}(hUser Controls - Audioh]hUser Controls - Audio}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhMubh)}(heThe following controls are specific to video capture and output and radio receivers and transmitters.h]heThe following controls are specific to video capture and output and radio receivers and transmitters.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjhhubh)}(hThe 'Volume' and 'Mute' audio controls are typical for such devices to control the volume and mute the audio. They don't actually do anything in the vivid driver.h]hThe ‘Volume’ and ‘Mute’ audio controls are typical for such devices to control the volume and mute the audio. They don’t actually do anything in the vivid driver.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjhhubeh}(h]user-controls-audioah ]h"]user controls - audioah$]h&]uh1hhjhhhhhMubh)}(hhh](h)}(hVivid Controlsh]hVivid Controls}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhMubh)}(hOThese vivid custom controls control the image generation, error injection, etc.h]hOThese vivid custom controls control the image generation, error injection, etc.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjhhubh)}(hhh](h)}(hTest Pattern Controlsh]hTest Pattern Controls}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhMubh)}(hhj=ubah}(h]h ]h"]h$]h&]uh1jhhhM>hj+ubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hEnable Capture Composing: enables composing support. This control is only present if the ccs_cap_mode module option is set to the default value of -1 and if the no_error_inj module option is set to 0 (the default). h](h)}(hEnable Capture Composing:h]hEnable Capture Composing:}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMBhj[ubj)}(henables composing support. This control is only present if the ccs_cap_mode module option is set to the default value of -1 and if the no_error_inj module option is set to 0 (the default). h]h)}(henables composing support. This control is only present if the ccs_cap_mode module option is set to the default value of -1 and if the no_error_inj module option is set to 0 (the default).h]henables composing support. This control is only present if the ccs_cap_mode module option is set to the default value of -1 and if the no_error_inj module option is set to 0 (the default).}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMDhjmubah}(h]h ]h"]h$]h&]uh1jhhhMDhj[ubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hXEnable Capture Scaler: enables support for a scaler (maximum 4 times upscaling and downscaling). This control is only present if the ccs_cap_mode module option is set to the default value of -1 and if the no_error_inj module option is set to 0 (the default). h](h)}(hEnable Capture Scaler:h]hEnable Capture Scaler:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMHhjubj)}(henables support for a scaler (maximum 4 times upscaling and downscaling). This control is only present if the ccs_cap_mode module option is set to the default value of -1 and if the no_error_inj module option is set to 0 (the default). h]h)}(henables support for a scaler (maximum 4 times upscaling and downscaling). This control is only present if the ccs_cap_mode module option is set to the default value of -1 and if the no_error_inj module option is set to 0 (the default).h]henables support for a scaler (maximum 4 times upscaling and downscaling). This control is only present if the ccs_cap_mode module option is set to the default value of -1 and if the no_error_inj module option is set to 0 (the default).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMJhjubah}(h]h ]h"]h$]h&]uh1jhhhMJhjubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hXMaximum EDID Blocks: determines how many EDID blocks the driver supports. Note that the vivid driver does not actually interpret new EDID data, it just stores it. It allows for up to 256 EDID blocks which is the maximum supported by the standard. h](h)}(hMaximum EDID Blocks:h]hMaximum EDID Blocks:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMOhjubj)}(hdetermines how many EDID blocks the driver supports. Note that the vivid driver does not actually interpret new EDID data, it just stores it. It allows for up to 256 EDID blocks which is the maximum supported by the standard. h]h)}(hdetermines how many EDID blocks the driver supports. Note that the vivid driver does not actually interpret new EDID data, it just stores it. It allows for up to 256 EDID blocks which is the maximum supported by the standard.h]hdetermines how many EDID blocks the driver supports. Note that the vivid driver does not actually interpret new EDID data, it just stores it. It allows for up to 256 EDID blocks which is the maximum supported by the standard.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMQhjubah}(h]h ]h"]h$]h&]uh1jhhhMQhjubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hX2Fill Percentage of Frame: can be used to draw only the top X percent of the image. Since each frame has to be drawn by the driver, this demands a lot of the CPU. For large resolutions this becomes problematic. By drawing only part of the image this CPU load can be reduced. h](h)}(hFill Percentage of Frame:h]hFill Percentage of Frame:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMVhjubj)}(hcan be used to draw only the top X percent of the image. Since each frame has to be drawn by the driver, this demands a lot of the CPU. For large resolutions this becomes problematic. By drawing only part of the image this CPU load can be reduced. h]h)}(hcan be used to draw only the top X percent of the image. Since each frame has to be drawn by the driver, this demands a lot of the CPU. For large resolutions this becomes problematic. By drawing only part of the image this CPU load can be reduced.h]hcan be used to draw only the top X percent of the image. Since each frame has to be drawn by the driver, this demands a lot of the CPU. For large resolutions this becomes problematic. By drawing only part of the image this CPU load can be reduced.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMXhjubah}(h]h ]h"]h$]h&]uh1jhhhMXhjubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubeh}(h]h ]h"]h$]h&]jjuh1jhhhMhjhhubeh}(h]"capture-feature-selection-controlsah ]h"]"capture feature selection controlsah$]h&]uh1hhjhhhhhMubh)}(hhh](h)}(h!Output Feature Selection Controlsh]h!Output Feature Selection Controls}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj)hhhhhM`ubh)}(h0These controls are all specific to video output.h]h0These controls are all specific to video output.}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMbhj)hhubj)}(hhh](j)}(hEnable Output Cropping: enables crop support. This control is only present if the ccs_out_mode module option is set to the default value of -1 and if the no_error_inj module option is set to 0 (the default). h](h)}(hEnable Output Cropping:h]hEnable Output Cropping:}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMdhjKubj)}(henables crop support. This control is only present if the ccs_out_mode module option is set to the default value of -1 and if the no_error_inj module option is set to 0 (the default). h]h)}(henables crop support. This control is only present if the ccs_out_mode module option is set to the default value of -1 and if the no_error_inj module option is set to 0 (the default).h]henables crop support. This control is only present if the ccs_out_mode module option is set to the default value of -1 and if the no_error_inj module option is set to 0 (the default).}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMfhj]ubah}(h]h ]h"]h$]h&]uh1jhhhMfhjKubeh}(h]h ]h"]h$]h&]uh1jhjHhhhhhNubj)}(hEnable Output Composing: enables composing support. This control is only present if the ccs_out_mode module option is set to the default value of -1 and if the no_error_inj module option is set to 0 (the default). h](h)}(hEnable Output Composing:h]hEnable Output Composing:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMjhj{ubj)}(henables composing support. This control is only present if the ccs_out_mode module option is set to the default value of -1 and if the no_error_inj module option is set to 0 (the default). h]h)}(henables composing support. This control is only present if the ccs_out_mode module option is set to the default value of -1 and if the no_error_inj module option is set to 0 (the default).h]henables composing support. This control is only present if the ccs_out_mode module option is set to the default value of -1 and if the no_error_inj module option is set to 0 (the default).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMlhjubah}(h]h ]h"]h$]h&]uh1jhhhMlhj{ubeh}(h]h ]h"]h$]h&]uh1jhjHhhhhhNubj)}(hXEnable Output Scaler: enables support for a scaler (maximum 4 times upscaling and downscaling). This control is only present if the ccs_out_mode module option is set to the default value of -1 and if the no_error_inj module option is set to 0 (the default). h](h)}(hEnable Output Scaler:h]hEnable Output Scaler:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMphjubj)}(henables support for a scaler (maximum 4 times upscaling and downscaling). This control is only present if the ccs_out_mode module option is set to the default value of -1 and if the no_error_inj module option is set to 0 (the default). h]h)}(henables support for a scaler (maximum 4 times upscaling and downscaling). This control is only present if the ccs_out_mode module option is set to the default value of -1 and if the no_error_inj module option is set to 0 (the default).h]henables support for a scaler (maximum 4 times upscaling and downscaling). This control is only present if the ccs_out_mode module option is set to the default value of -1 and if the no_error_inj module option is set to 0 (the default).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMrhjubah}(h]h ]h"]h$]h&]uh1jhhhMrhjubeh}(h]h ]h"]h$]h&]uh1jhjHhhhhhNubeh}(h]h ]h"]h$]h&]jjuh1jhhhMdhj)hhubeh}(h]!output-feature-selection-controlsah ]h"]!output feature selection controlsah$]h&]uh1hhjhhhhhM`ubh)}(hhh](h)}(hError Injection Controlsh]hError Injection Controls}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhMyubh)}(hDThe following two controls are only valid for video and vbi capture.h]hDThe following two controls are only valid for video and vbi capture.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM{hjhhubj)}(hhh](j)}(hXStandard Signal Mode: selects the behavior of VIDIOC_QUERYSTD: what should it return? Changing this control will result in the V4L2_EVENT_SOURCE_CHANGE to be sent since it emulates a changed input condition (e.g. a cable was plugged in or out). h](h)}(hStandard Signal Mode:h]hStandard Signal Mode:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM}hj ubj)}(hselects the behavior of VIDIOC_QUERYSTD: what should it return? Changing this control will result in the V4L2_EVENT_SOURCE_CHANGE to be sent since it emulates a changed input condition (e.g. a cable was plugged in or out). h](h)}(h?selects the behavior of VIDIOC_QUERYSTD: what should it return?h]h?selects the behavior of VIDIOC_QUERYSTD: what should it return?}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubh)}(hChanging this control will result in the V4L2_EVENT_SOURCE_CHANGE to be sent since it emulates a changed input condition (e.g. a cable was plugged in or out).h]hChanging this control will result in the V4L2_EVENT_SOURCE_CHANGE to be sent since it emulates a changed input condition (e.g. a cable was plugged in or out).}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubeh}(h]h ]h"]h$]h&]uh1jhhhMhj ubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hX Standard: selects the standard that VIDIOC_QUERYSTD should return if the previous control is set to "Selected Standard". Changing this control will result in the V4L2_EVENT_SOURCE_CHANGE to be sent since it emulates a changed input standard. h](h)}(h Standard:h]h Standard:}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjIubj)}(hselects the standard that VIDIOC_QUERYSTD should return if the previous control is set to "Selected Standard". Changing this control will result in the V4L2_EVENT_SOURCE_CHANGE to be sent since it emulates a changed input standard. h](h)}(hnselects the standard that VIDIOC_QUERYSTD should return if the previous control is set to "Selected Standard".h]hrselects the standard that VIDIOC_QUERYSTD should return if the previous control is set to “Selected Standard”.}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj[ubh)}(hxChanging this control will result in the V4L2_EVENT_SOURCE_CHANGE to be sent since it emulates a changed input standard.h]hxChanging this control will result in the V4L2_EVENT_SOURCE_CHANGE to be sent since it emulates a changed input standard.}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj[ubeh}(h]h ]h"]h$]h&]uh1jhhhMhjIubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubeh}(h]h ]h"]h$]h&]jjuh1jhhhM}hjhhubh)}(hhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM'hj:ubj)}(hif set, then the user can provide the lower and upper bound of the HW Seek. Otherwise the frequency range boundaries will be used. h]h)}(hif set, then the user can provide the lower and upper bound of the HW Seek. Otherwise the frequency range boundaries will be used.h]hif set, then the user can provide the lower and upper bound of the HW Seek. Otherwise the frequency range boundaries will be used.}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM)hjLubah}(h]h ]h"]h$]h&]uh1jhhhM)hj:ubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hGenerate RBDS Instead of RDS: if set, then generate RBDS (the US variant of RDS) data instead of RDS (European-style RDS). This affects only the PICODE and PTY codes. h](h)}(hGenerate RBDS Instead of RDS:h]hGenerate RBDS Instead of RDS:}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM-hjjubj)}(hif set, then generate RBDS (the US variant of RDS) data instead of RDS (European-style RDS). This affects only the PICODE and PTY codes. h]h)}(hif set, then generate RBDS (the US variant of RDS) data instead of RDS (European-style RDS). This affects only the PICODE and PTY codes.h]hif set, then generate RBDS (the US variant of RDS) data instead of RDS (European-style RDS). This affects only the PICODE and PTY codes.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM/hj|ubah}(h]h ]h"]h$]h&]uh1jhhhM/hjjubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hRDS Rx I/O Mode: this can be "Block I/O" where the RDS blocks have to be read() by the application, or "Controls" where the RDS data is provided by the RDS controls mentioned above. h](h)}(hRDS Rx I/O Mode:h]hRDS Rx I/O Mode:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM3hjubj)}(hthis can be "Block I/O" where the RDS blocks have to be read() by the application, or "Controls" where the RDS data is provided by the RDS controls mentioned above. h]h)}(hthis can be "Block I/O" where the RDS blocks have to be read() by the application, or "Controls" where the RDS data is provided by the RDS controls mentioned above.h]hthis can be “Block I/O” where the RDS blocks have to be read() by the application, or “Controls” where the RDS data is provided by the RDS controls mentioned above.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM5hjubah}(h]h ]h"]h$]h&]uh1jhhhM5hjubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubeh}(h]h ]h"]h$]h&]jjuh1jhhhM!hjhhubeh}(h]fm-radio-receiver-controlsah ]h"]fm radio receiver controlsah$]h&]uh1hhjhhhhhMubh)}(hhh](h)}(hFM Radio Modulator Controlsh]hFM Radio Modulator Controls}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhM;ubj)}(hhh](j)}(hRDS Program ID: h]h)}(hRDS Program ID:h]hRDS Program ID:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM=hjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hRDS Program Type: h]h)}(hRDS Program Type:h]hRDS Program Type:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM@hjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hRDS PS Name: h]h)}(h RDS PS Name:h]h RDS PS Name:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMChjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hRDS Radio Text: h]h)}(hRDS Radio Text:h]hRDS Radio Text:}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMFhj4ubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(h RDS Stereo: h]h)}(h RDS Stereo:h]h RDS Stereo:}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMIhjLubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hRDS Artificial Head: h]h)}(hRDS Artificial Head:h]hRDS Artificial Head:}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMLhjdubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hRDS Compressed: h]h)}(hRDS Compressed:h]hRDS Compressed:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMOhj|ubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hRDS Dynamic PTY: h]h)}(hRDS Dynamic PTY:h]hRDS Dynamic PTY:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMRhjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hRDS Traffic Announcement: h]h)}(hRDS Traffic Announcement:h]hRDS Traffic Announcement:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMUhjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hRDS Traffic Program: h]h)}(hRDS Traffic Program:h]hRDS Traffic Program:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMXhjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hnRDS Music: these are all controls that set the RDS data that is transmitted by the FM modulator. h](h)}(h RDS Music:h]h RDS Music:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM[hjubj)}(hVthese are all controls that set the RDS data that is transmitted by the FM modulator. h]h)}(hUthese are all controls that set the RDS data that is transmitted by the FM modulator.h]hUthese are all controls that set the RDS data that is transmitted by the FM modulator.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM]hjubah}(h]h ]h"]h$]h&]uh1jhhhM]hjubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hRDS Tx I/O Mode: this can be "Block I/O" where the application has to use write() to pass the RDS blocks to the driver, or "Controls" where the RDS data is Provided by the RDS controls mentioned above. h](h)}(hRDS Tx I/O Mode:h]hRDS Tx I/O Mode:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM`hj ubj)}(hthis can be "Block I/O" where the application has to use write() to pass the RDS blocks to the driver, or "Controls" where the RDS data is Provided by the RDS controls mentioned above. h]h)}(hthis can be "Block I/O" where the application has to use write() to pass the RDS blocks to the driver, or "Controls" where the RDS data is Provided by the RDS controls mentioned above.h]hthis can be “Block I/O” where the application has to use write() to pass the RDS blocks to the driver, or “Controls” where the RDS data is Provided by the RDS controls mentioned above.}(hj" hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMbhj ubah}(h]h ]h"]h$]h&]uh1jhhhMbhj ubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubeh}(h]h ]h"]h$]h&]jjuh1jhhhM=hjhhubeh}(h]fm-radio-modulator-controlsah ]h"]fm radio modulator controlsah$]h&]uh1hhjhhhhhM;ubh)}(hhh](h)}(hMetadata Capture Controlsh]hMetadata Capture Controls}(hjM hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJ hhhhhMgubj)}(hhh](j)}(h`Generate PTS if set, then the generated metadata stream contains Presentation timestamp. h](h)}(h Generate PTSh]h Generate PTS}(hjb hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMihj^ ubj)}(hLif set, then the generated metadata stream contains Presentation timestamp. h]h)}(hKif set, then the generated metadata stream contains Presentation timestamp.h]hKif set, then the generated metadata stream contains Presentation timestamp.}(hjt hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMkhjp ubah}(h]h ]h"]h$]h&]uh1jhhhMkhj^ ubeh}(h]h ]h"]h$]h&]uh1jhj[ hhhhhNubj)}(hcGenerate SCR if set, then the generated metadata stream contains Source Clock information. h](h)}(h Generate SCRh]h Generate SCR}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMmhj ubj)}(hOif set, then the generated metadata stream contains Source Clock information. h]h)}(hMif set, then the generated metadata stream contains Source Clock information.h]hMif set, then the generated metadata stream contains Source Clock information.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMohj ubah}(h]h ]h"]h$]h&]uh1jhhhMohj ubeh}(h]h ]h"]h$]h&]uh1jhj[ hhhhhNubeh}(h]h ]h"]h$]h&]jjuh1jhhhMihjJ hhubeh}(h]metadata-capture-controlsah ]h"]metadata capture controlsah$]h&]uh1hhjhhhhhMgubeh}(h]controlsah ]h"]controlsah$]h&]uh1hhhhhhhhMhubh)}(hhh](h)}(h&Video, Sliced VBI and HDMI CEC Loopingh]h&Video, Sliced VBI and HDMI CEC Looping}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhMsubh)}(hXfVideo Looping functionality is supported for devices created by the same vivid driver instance, as well as across multiple instances of the vivid driver. The vivid driver supports looping of video and Sliced VBI data between an S-Video output and an S-Video input. It also supports looping of video and HDMI CEC data between an HDMI output and an HDMI input.h]hXfVideo Looping functionality is supported for devices created by the same vivid driver instance, as well as across multiple instances of the vivid driver. The vivid driver supports looping of video and Sliced VBI data between an S-Video output and an S-Video input. It also supports looping of video and HDMI CEC data between an HDMI output and an HDMI input.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMuhj hhubh)}(hXTo enable looping, set the 'HDMI/S-Video XXX-N Is Connected To' control(s) to select whether an input uses the Test Pattern Generator, or is disconnected, or is connected to an output. An input can be connected to an output from any vivid instance. The inputs and outputs are numbered XXX-N where XXX is the vivid instance number (see module option n_devs). If there is only one vivid instance (the default), then XXX will be 000. And N is the Nth S-Video/HDMI input or output of that instance. If vivid is loaded without module options, then you can connect the S-Video 000-0 input to the S-Video 000-0 output, or the HDMI 000-0 input to the HDMI 000-0 output. This is the equivalent of connecting or disconnecting a cable between an input and an output in a physical device.h]hX To enable looping, set the ‘HDMI/S-Video XXX-N Is Connected To’ control(s) to select whether an input uses the Test Pattern Generator, or is disconnected, or is connected to an output. An input can be connected to an output from any vivid instance. The inputs and outputs are numbered XXX-N where XXX is the vivid instance number (see module option n_devs). If there is only one vivid instance (the default), then XXX will be 000. And N is the Nth S-Video/HDMI input or output of that instance. If vivid is loaded without module options, then you can connect the S-Video 000-0 input to the S-Video 000-0 output, or the HDMI 000-0 input to the HDMI 000-0 output. This is the equivalent of connecting or disconnecting a cable between an input and an output in a physical device.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM{hj hhubh)}(hIf an 'HDMI/S-Video XXX-N Is Connected To' control selected an output, then the video output will be looped to the video input provided that:h]hIf an ‘HDMI/S-Video XXX-N Is Connected To’ control selected an output, then the video output will be looped to the video input provided that:}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubj)}(hhh](j)}(hNthe currently selected input matches the input indicated by the control name. h]h)}(hMthe currently selected input matches the input indicated by the control name.h]hMthe currently selected input matches the input indicated by the control name.}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj!ubah}(h]h ]h"]h$]h&]uh1jhj!hhhhhNubj)}(hin the vivid instance of the output connector, the currently selected output matches the output indicated by the control's value. h]h)}(hin the vivid instance of the output connector, the currently selected output matches the output indicated by the control's value.h]hin the vivid instance of the output connector, the currently selected output matches the output indicated by the control’s value.}(hj.!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj*!ubah}(h]h ]h"]h$]h&]uh1jhj!hhhhhNubj)}(hthe video resolution of the video input must match that of the video output. So it is not possible to loop a 50 Hz (720x576) S-Video output to a 60 Hz (720x480) S-Video input, or a 720p60 HDMI output to a 1080p30 input. h]h)}(hthe video resolution of the video input must match that of the video output. So it is not possible to loop a 50 Hz (720x576) S-Video output to a 60 Hz (720x480) S-Video input, or a 720p60 HDMI output to a 1080p30 input.h]hthe video resolution of the video input must match that of the video output. So it is not possible to loop a 50 Hz (720x576) S-Video output to a 60 Hz (720x480) S-Video input, or a 720p60 HDMI output to a 1080p30 input.}(hjF!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjB!ubah}(h]h ]h"]h$]h&]uh1jhj!hhhhhNubj)}(hthe pixel formats must be identical on both sides. Otherwise the driver would have to do pixel format conversion as well, and that's taking things too far. h]h)}(hthe pixel formats must be identical on both sides. Otherwise the driver would have to do pixel format conversion as well, and that's taking things too far.h]hthe pixel formats must be identical on both sides. Otherwise the driver would have to do pixel format conversion as well, and that’s taking things too far.}(hj^!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjZ!ubah}(h]h ]h"]h$]h&]uh1jhj!hhhhhNubj)}(hX#the field settings must be identical on both sides. Same reason as above: requiring the driver to convert from one field format to another complicated matters too much. This also prohibits capturing with 'Field Top' or 'Field Bottom' when the output video is set to 'Field Alternate'. This combination, while legal, became too complicated to support. Both sides have to be 'Field Alternate' for this to work. Also note that for this specific case the sequence and field counting in struct v4l2_buffer on the capture side may not be 100% accurate. h]h)}(hX"the field settings must be identical on both sides. Same reason as above: requiring the driver to convert from one field format to another complicated matters too much. This also prohibits capturing with 'Field Top' or 'Field Bottom' when the output video is set to 'Field Alternate'. This combination, while legal, became too complicated to support. Both sides have to be 'Field Alternate' for this to work. Also note that for this specific case the sequence and field counting in struct v4l2_buffer on the capture side may not be 100% accurate.h]hX2the field settings must be identical on both sides. Same reason as above: requiring the driver to convert from one field format to another complicated matters too much. This also prohibits capturing with ‘Field Top’ or ‘Field Bottom’ when the output video is set to ‘Field Alternate’. This combination, while legal, became too complicated to support. Both sides have to be ‘Field Alternate’ for this to work. Also note that for this specific case the sequence and field counting in struct v4l2_buffer on the capture side may not be 100% accurate.}(hjv!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjr!ubah}(h]h ]h"]h$]h&]uh1jhj!hhhhhNubj)}(hfield settings V4L2_FIELD_SEQ_TB/BT are not supported. While it is possible to implement this, it would mean a lot of work to get this right. Since these field values are rarely used the decision was made not to implement this for now. h]h)}(hfield settings V4L2_FIELD_SEQ_TB/BT are not supported. While it is possible to implement this, it would mean a lot of work to get this right. Since these field values are rarely used the decision was made not to implement this for now.h]hfield settings V4L2_FIELD_SEQ_TB/BT are not supported. While it is possible to implement this, it would mean a lot of work to get this right. Since these field values are rarely used the decision was made not to implement this for now.}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj!ubah}(h]h ]h"]h$]h&]uh1jhj!hhhhhNubj)}(hon the input side the "Standard Signal Mode" for the S-Video input or the "DV Timings Signal Mode" for the HDMI input should be configured so that a valid signal is passed to the video input. h]h)}(hon the input side the "Standard Signal Mode" for the S-Video input or the "DV Timings Signal Mode" for the HDMI input should be configured so that a valid signal is passed to the video input.h]hon the input side the “Standard Signal Mode” for the S-Video input or the “DV Timings Signal Mode” for the HDMI input should be configured so that a valid signal is passed to the video input.}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj!ubah}(h]h ]h"]h$]h&]uh1jhj!hhhhhNubeh}(h]h ]h"]h$]h&]jjuh1jhhhMhj hhubh)}(hFIf any condition is not valid, then the 'Noise' test pattern is shown.h]hJIf any condition is not valid, then the ‘Noise’ test pattern is shown.}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubh)}(hNThe framerates do not have to match, although this might change in the future.h]hNThe framerates do not have to match, although this might change in the future.}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubh)}(hBy default you will see the OSD text superimposed on top of the looped video. This can be turned off by changing the "OSD Text Mode" control of the video capture device.h]hBy default you will see the OSD text superimposed on top of the looped video. This can be turned off by changing the “OSD Text Mode” control of the video capture device.}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubh)}(hX>For VBI looping to work all of the above must be valid and in addition the vbi output must be configured for sliced VBI. The VBI capture side can be configured for either raw or sliced VBI. Note that at the moment only CC/XDS (60 Hz formats) and WSS (50 Hz formats) VBI data is looped. Teletext VBI data is not looped.h]hX>For VBI looping to work all of the above must be valid and in addition the vbi output must be configured for sliced VBI. The VBI capture side can be configured for either raw or sliced VBI. Note that at the moment only CC/XDS (60 Hz formats) and WSS (50 Hz formats) VBI data is looped. Teletext VBI data is not looped.}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubeh}(h]%video-sliced-vbi-and-hdmi-cec-loopingah ]h"]&video, sliced vbi and hdmi cec loopingah$]h&]uh1hhhhhhhhMsubh)}(hhh](h)}(hRadio & RDS Loopingh]hRadio & RDS Looping}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj"hhhhhMubh)}(h=The vivid driver supports looping of RDS output to RDS input.h]h=The vivid driver supports looping of RDS output to RDS input.}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj"hhubh)}(hSince radio is wireless this looping always happens if the radio receiver frequency is close to the radio transmitter frequency. In that case the radio transmitter will 'override' the emulated radio stations.h]hSince radio is wireless this looping always happens if the radio receiver frequency is close to the radio transmitter frequency. In that case the radio transmitter will ‘override’ the emulated radio stations.}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj"hhubh)}(hbRDS looping is currently supported only between devices created by the same vivid driver instance.h]hbRDS looping is currently supported only between devices created by the same vivid driver instance.}(hj-"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj"hhubh)}(hXAs mentioned in the "Radio Receiver" section, the radio receiver emulates stations at regular frequency intervals. Depending on the frequency of the radio receiver a signal strength value is calculated (this is returned by VIDIOC_G_TUNER). However, it will also look at the frequency set by the radio transmitter and if that results in a higher signal strength than the settings of the radio transmitter will be used as if it was a valid station. This also includes the RDS data (if any) that the transmitter 'transmits'. This is received faithfully on the receiver side. Note that when the driver is loaded the frequencies of the radio receiver and transmitter are not identical, so initially no looping takes place.h]hXAs mentioned in the “Radio Receiver” section, the radio receiver emulates stations at regular frequency intervals. Depending on the frequency of the radio receiver a signal strength value is calculated (this is returned by VIDIOC_G_TUNER). However, it will also look at the frequency set by the radio transmitter and if that results in a higher signal strength than the settings of the radio transmitter will be used as if it was a valid station. This also includes the RDS data (if any) that the transmitter ‘transmits’. This is received faithfully on the receiver side. Note that when the driver is loaded the frequencies of the radio receiver and transmitter are not identical, so initially no looping takes place.}(hj;"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj"hhubeh}(h]radio-rds-loopingah ]h"]radio & rds loopingah$]h&]uh1hhhhhhhhMubh)}(hhh](h)}(hCropping, Composing, Scalingh]hCropping, Composing, Scaling}(hjT"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQ"hhhhhMubh)}(hXZThis driver supports cropping, composing and scaling in any combination. Normally which features are supported can be selected through the Vivid controls, but it is also possible to hardcode it when the module is loaded through the ccs_cap_mode and ccs_out_mode module options. See "Configuring the driver" on the details of these module options.h]hX^This driver supports cropping, composing and scaling in any combination. Normally which features are supported can be selected through the Vivid controls, but it is also possible to hardcode it when the module is loaded through the ccs_cap_mode and ccs_out_mode module options. See “Configuring the driver” on the details of these module options.}(hjb"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjQ"hhubh)}(hBThis allows you to test your application for all these variations.h]hBThis allows you to test your application for all these variations.}(hjp"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjQ"hhubh)}(hXNote that the webcam input never supports cropping, composing or scaling. That only applies to the TV/S-Video/HDMI inputs and outputs. The reason is that webcams, including this virtual implementation, normally use VIDIOC_ENUM_FRAMESIZES to list a set of discrete framesizes that it supports. And that does not combine with cropping, composing or scaling. This is primarily a limitation of the V4L2 API which is carefully reproduced here.h]hXNote that the webcam input never supports cropping, composing or scaling. That only applies to the TV/S-Video/HDMI inputs and outputs. The reason is that webcams, including this virtual implementation, normally use VIDIOC_ENUM_FRAMESIZES to list a set of discrete framesizes that it supports. And that does not combine with cropping, composing or scaling. This is primarily a limitation of the V4L2 API which is carefully reproduced here.}(hj~"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjQ"hhubh)}(hXlThe minimum and maximum resolutions that the scaler can achieve are 16x16 and (4096 * 4) x (2160 x 4), but it can only scale up or down by a factor of 4 or less. So for a source resolution of 1280x720 the minimum the scaler can do is 320x180 and the maximum is 5120x2880. You can play around with this using the qv4l2 test tool and you will see these dependencies.h]hXlThe minimum and maximum resolutions that the scaler can achieve are 16x16 and (4096 * 4) x (2160 x 4), but it can only scale up or down by a factor of 4 or less. So for a source resolution of 1280x720 the minimum the scaler can do is 320x180 and the maximum is 5120x2880. You can play around with this using the qv4l2 test tool and you will see these dependencies.}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjQ"hhubh)}(h|This driver also supports larger 'bytesperline' settings, something that VIDIOC_S_FMT allows but that few drivers implement.h]hThis driver also supports larger ‘bytesperline’ settings, something that VIDIOC_S_FMT allows but that few drivers implement.H}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjQ"hhubh)}(h|The scaler is a simple scaler that uses the Coarse Bresenham algorithm. It's designed for speed and simplicity, not quality.h]h~The scaler is a simple scaler that uses the Coarse Bresenham algorithm. It’s designed for speed and simplicity, not quality.}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjQ"hhubh)}(hIf the combination of crop, compose and scaling allows it, then it is possible to change crop and compose rectangles on the fly.h]hIf the combination of crop, compose and scaling allows it, then it is possible to change crop and compose rectangles on the fly.}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjQ"hhubeh}(h]cropping-composing-scalingah ]h"]cropping, composing, scalingah$]h&]uh1hhhhhhhhMubh)}(hhh](h)}(hFormatsh]hFormats}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj"hhhhhMubh)}(hThe driver supports all the regular packed and planar 4:4:4, 4:2:2 and 4:2:0 YUYV formats, 8, 16, 24 and 32 RGB packed formats and various multiplanar formats.h]hThe driver supports all the regular packed and planar 4:4:4, 4:2:2 and 4:2:0 YUYV formats, 8, 16, 24 and 32 RGB packed formats and various multiplanar formats.}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj"hhubh)}(hThe alpha component can be set through the 'Alpha Component' User control for those formats that support it. If the 'Apply Alpha To Red Only' control is set, then the alpha component is only used for the color red and set to 0 otherwise.h]hThe alpha component can be set through the ‘Alpha Component’ User control for those formats that support it. If the ‘Apply Alpha To Red Only’ control is set, then the alpha component is only used for the color red and set to 0 otherwise.}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj"hhubh)}(hThe driver has to be configured to support the multiplanar formats. By default the driver instances are single-planar. This can be changed by setting the multiplanar module option, see "Configuring the driver" for more details on that option.h]hThe driver has to be configured to support the multiplanar formats. By default the driver instances are single-planar. This can be changed by setting the multiplanar module option, see “Configuring the driver” for more details on that option.}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj"hhubh)}(hX8If the driver instance is using the multiplanar formats/API, then the first single planar format (YUYV) and the multiplanar NV16M and NV61M formats the will have a plane that has a non-zero data_offset of 128 bytes. It is rare for data_offset to be non-zero, so this is a useful feature for testing applications.h]hX8If the driver instance is using the multiplanar formats/API, then the first single planar format (YUYV) and the multiplanar NV16M and NV61M formats the will have a plane that has a non-zero data_offset of 128 bytes. It is rare for data_offset to be non-zero, so this is a useful feature for testing applications.}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj"hhubh)}(hFVideo output will also honor any data_offset that the application set.h]hFVideo output will also honor any data_offset that the application set.}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj"hhubeh}(h]formatsah ]h"]formatsah$]h&]uh1hhhhhhhhMubh)}(hhh](h)}(hOutput Overlayh]hOutput Overlay}(hj.#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+#hhhhhM ubh)}(hNote: output overlays are primarily implemented in order to test the existing V4L2 output overlay API. Whether this API should be used for new drivers is questionable.h]hNote: output overlays are primarily implemented in order to test the existing V4L2 output overlay API. Whether this API should be used for new drivers is questionable.}(hj<#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM hj+#hhubh)}(h@This driver has support for an output overlay and is capable of:h]h@This driver has support for an output overlay and is capable of:}(hjJ#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj+#hhubj)}(h- bitmap clipping, - list clipping (up to 16 rectangles) - chromakey - source chromakey - global alpha - local alpha - local inverse alpha h]j)}(hhh](j)}(hbitmap clipping,h]h)}(hja#h]hbitmap clipping,}(hjc#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj_#ubah}(h]h ]h"]h$]h&]uh1jhj\#ubj)}(h#list clipping (up to 16 rectangles)h]h)}(hjx#h]h#list clipping (up to 16 rectangles)}(hjz#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjv#ubah}(h]h ]h"]h$]h&]uh1jhj\#ubj)}(h chromakeyh]h)}(hj#h]h chromakey}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj#ubah}(h]h ]h"]h$]h&]uh1jhj\#ubj)}(hsource chromakeyh]h)}(hj#h]hsource chromakey}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj#ubah}(h]h ]h"]h$]h&]uh1jhj\#ubj)}(h global alphah]h)}(hj#h]h global alpha}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj#ubah}(h]h ]h"]h$]h&]uh1jhj\#ubj)}(h local alphah]h)}(hj#h]h local alpha}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj#ubah}(h]h ]h"]h$]h&]uh1jhj\#ubj)}(hlocal inverse alpha h]h)}(hlocal inverse alphah]hlocal inverse alpha}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj#ubah}(h]h ]h"]h$]h&]uh1jhj\#ubeh}(h]h ]h"]h$]h&]jjuh1jhhhMhjX#ubah}(h]h ]h"]h$]h&]uh1jhhhMhj+#hhubh)}(hOutput overlays are not supported for multiplanar formats. In addition, the pixelformat of the capture format and that of the framebuffer must be the same for the overlay to work. Otherwise VIDIOC_OVERLAY will return an error.h]hOutput overlays are not supported for multiplanar formats. In addition, the pixelformat of the capture format and that of the framebuffer must be the same for the overlay to work. Otherwise VIDIOC_OVERLAY will return an error.}(hj $hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj+#hhubh)}(hOutput overlays only work if the driver has been configured to create a framebuffer by setting flag 0x10000 in the node_types module option. The created framebuffer has a size of 720x576 and supports ARGB 1:5:5:5 and RGB 5:6:5.h]hOutput overlays only work if the driver has been configured to create a framebuffer by setting flag 0x10000 in the node_types module option. The created framebuffer has a size of 720x576 and supports ARGB 1:5:5:5 and RGB 5:6:5.}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj+#hhubh)}(hXMIn order to see the effects of the various clipping, chromakeying or alpha processing capabilities you need to turn on video looping and see the results on the capture side. The use of the clipping, chromakeying or alpha processing capabilities will slow down the video loop considerably as a lot of checks have to be done per pixel.h]hXMIn order to see the effects of the various clipping, chromakeying or alpha processing capabilities you need to turn on video looping and see the results on the capture side. The use of the clipping, chromakeying or alpha processing capabilities will slow down the video loop considerably as a lot of checks have to be done per pixel.}(hj)$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM"hj+#hhubeh}(h]output-overlayah ]h"]output overlayah$]h&]uh1hhhhhhhhM ubh)}(hhh](h)}(h"CEC (Consumer Electronics Control)h]h"CEC (Consumer Electronics Control)}(hjB$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj?$hhhhhM*ubh)}(hXIf there are HDMI inputs then a CEC adapter will be created that has the same number of input ports. This is the equivalent of e.g. a TV that has that number of inputs. Each HDMI output will also create a CEC adapter that is hooked up to the corresponding input port, or (if there are more outputs than inputs) is not hooked up at all. In other words, this is the equivalent of hooking up each output device to an input port of the TV. Any remaining output devices remain unconnected.h]hXIf there are HDMI inputs then a CEC adapter will be created that has the same number of input ports. This is the equivalent of e.g. a TV that has that number of inputs. Each HDMI output will also create a CEC adapter that is hooked up to the corresponding input port, or (if there are more outputs than inputs) is not hooked up at all. In other words, this is the equivalent of hooking up each output device to an input port of the TV. Any remaining output devices remain unconnected.}(hjP$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM,hj?$hhubh)}(hXThe EDID that each output reads reports a unique CEC physical address that is based on the physical address of the EDID of the input. So if the EDID of the receiver has physical address A.B.0.0, then each output will see an EDID containing physical address A.B.C.0 where C is 1 to the number of inputs. If there are more outputs than inputs then the remaining outputs have a CEC adapter that is disabled and reports an invalid physical address.h]hXThe EDID that each output reads reports a unique CEC physical address that is based on the physical address of the EDID of the input. So if the EDID of the receiver has physical address A.B.0.0, then each output will see an EDID containing physical address A.B.C.0 where C is 1 to the number of inputs. If there are more outputs than inputs then the remaining outputs have a CEC adapter that is disabled and reports an invalid physical address.}(hj^$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM4hj?$hhubeh}(h] cec-consumer-electronics-controlah ]h"]"cec (consumer electronics control)ah$]h&]uh1hhhhhhhhM*ubh)}(hhh](h)}(hSome Future Improvementsh]hSome Future Improvements}(hjw$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjt$hhhhhM=ubh)}(h.Just as a reminder and in no particular order:h]h.Just as a reminder and in no particular order:}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM?hjt$hhubj)}(hhh](j)}(h'Add a virtual alsa driver to test audioh]h)}(hj$h]h'Add a virtual alsa driver to test audio}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMAhj$ubah}(h]h ]h"]h$]h&]uh1jhj$hhhhhNubj)}(hAdd virtual sub-devicesh]h)}(hj$h]hAdd virtual sub-devices}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMBhj$ubah}(h]h ]h"]h$]h&]uh1jhj$hhhhhNubj)}(h)Some support for testing compressed videoh]h)}(hj$h]h)Some support for testing compressed video}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMChj$ubah}(h]h ]h"]h$]h&]uh1jhj$hhhhhNubj)}(h3Add support to loop raw VBI output to raw VBI inputh]h)}(hj$h]h3Add support to loop raw VBI output to raw VBI input}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMDhj$ubah}(h]h ]h"]h$]h&]uh1jhj$hhhhhNubj)}(h;Add support to loop teletext sliced VBI output to VBI inputh]h)}(hj$h]h;Add support to loop teletext sliced VBI output to VBI input}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMEhj$ubah}(h]h ]h"]h$]h&]uh1jhj$hhhhhNubj)}(hHFix sequence/field numbering when looping of video with alternate fieldsh]h)}(hj %h]hHFix sequence/field numbering when looping of video with alternate fields}(hj %hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMFhj %ubah}(h]h ]h"]h$]h&]uh1jhj$hhhhhNubj)}(h3Add support for V4L2_CID_BG_COLOR for video outputsh]h)}(hj"%h]h3Add support for V4L2_CID_BG_COLOR for video outputs}(hj$%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMGhj %ubah}(h]h ]h"]h$]h&]uh1jhj$hhhhhNubj)}(h@Add ARGB888 overlay support: better testing of the alpha channelh]h)}(hj9%h]h@Add ARGB888 overlay support: better testing of the alpha channel}(hj;%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMHhj7%ubah}(h]h ]h"]h$]h&]uh1jhj$hhhhhNubj)}(hIImprove pixel aspect support in the tpg code by passing a real v4l2_fracth]h)}(hjP%h]hIImprove pixel aspect support in the tpg code by passing a real v4l2_fract}(hjR%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMIhjN%ubah}(h]h ]h"]h$]h&]uh1jhj$hhhhhNubj)}(hAUse per-queue locks and/or per-device locks to improve throughputh]h)}(hjg%h]hAUse per-queue locks and/or per-device locks to improve throughput}(hji%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMJhje%ubah}(h]h ]h"]h$]h&]uh1jhj$hhhhhNubj)}(hThe SDR radio should use the same 'frequencies' for stations as the normal radio receiver, and give back noise if the frequency doesn't match up with a station frequencyh]h)}(hThe SDR radio should use the same 'frequencies' for stations as the normal radio receiver, and give back noise if the frequency doesn't match up with a station frequencyh]hThe SDR radio should use the same ‘frequencies’ for stations as the normal radio receiver, and give back noise if the frequency doesn’t match up with a station frequency}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMKhj|%ubah}(h]h ]h"]h$]h&]uh1jhj$hhhhhNubj)}(hMake a thread for the RDS generation, that would help in particular for the "Controls" RDS Rx I/O Mode as the read-only RDS controls could be updated in real-time.h]h)}(hMake a thread for the RDS generation, that would help in particular for the "Controls" RDS Rx I/O Mode as the read-only RDS controls could be updated in real-time.h]hMake a thread for the RDS generation, that would help in particular for the “Controls” RDS Rx I/O Mode as the read-only RDS controls could be updated in real-time.}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMNhj%ubah}(h]h ]h"]h$]h&]uh1jhj$hhhhhNubj)}(hDChanging the EDID doesn't wait 100 ms before setting the HPD signal.h]h)}(hj%h]hFChanging the EDID doesn’t wait 100 ms before setting the HPD signal.}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMQhj%ubah}(h]h ]h"]h$]h&]uh1jhj$hhhhhNubeh}(h]h ]h"]h$]h&]jjuh1jhhhMAhjt$hhubeh}(h]some-future-improvementsah ]h"]some future improvementsah$]h&]uh1hhhhhhhhM=ubeh}(h]#the-virtual-video-test-driver-vividah ]h"]%the virtual video test driver (vivid)ah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerj%error_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(j%j%jo jl jjj j j j j j jjjwjtjjjjjVjSjjjjjTjQjjjjjjj j j+j(jjjjjFjCjjj&j#jjjjj>j;jjjjjG jD j j j!j!jN"jK"j"j"j(#j%#j<$j9$jq$jn$j%j%u nametypes}(j%jo jj j j jjwjjjVjjjTjjjj j+jjjFjj&jjj>jjjG j j!jN"j"j(#j<$jq$j%uh}(j%hjl jjjr j j j j j j jj jtj7jjzjjjSjjjYjjjQjjjWjjjjj jj(jjj.jjjCjjjj#jjj)jjj;jjjIjjjD jj jJ j!j jK"j"j"jQ"j%#j"j9$j+#jn$j?$j%jt$u footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log] decorationNhhub.