Pull media updates from Mauro Carvalho Chehab: - Documentation improvements: conversion of all non-DocBook documents to Sphinx and lots of fixes to the uAPI media book - New PCI driver for Techwell TW5864 media grabber boards - New SoC driver for ATMEL Image Sensor Controller - Removal of some obsolete SoC drivers (s5p-tv driver and soc_camera drivers) - Addition of ST CEC driver - Lots of drivers fixes, improvements and additions * tag 'media/v4.9-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (464 commits) [media] ttusb_dec: avoid the risk of go past buffer [media] cx23885: Fix some smatch warnings [media] si2165: switch to regmap [media] si2165: use i2c_client->dev instead of i2c_adapter->dev for logging [media] si2165: Remove legacy attach [media] cx231xx: attach si2165 driver via i2c_client [media] cx231xx: Prepare for attaching new style i2c_client DVB demod drivers [media] cx23885: attach si2165 driver via i2c_client [media] si2165: support i2c_client attach [media] si2165: avoid division by zero [media] rcar-vin: add R-Car gen2 fallback compatibility string [media] lgdt3306a: remove 20*50 msec unnecessary timeout [media] cx25821: Remove deprecated create_singlethread_workqueue [media] cx25821: Drop Freeing of Workqueue [media] cxd2841er: force 8MHz bandwidth for DVB-C if specified bw not supported [media] redrat3: hardware-specific parameters [media] redrat3: remove hw_timeout member [media] cxd2841er: BER and SNR reading for ISDB-T [media] dvb-usb: avoid link error with dib3000m{b,c| [media] dvb-usb: split out common parts of dibusb ...
Unified · Split
| @@ -342,6 +342,8 @@ latex_documents = [ · 341 unmodified lines | |||
| 342 | 'The kernel development community', 'manual'), | 342 | 'The kernel development community', 'manual'), |
| 343 | ('gpu/index', 'gpu.tex', 'Linux GPU Driver Developer\'s Guide', | 343 | ('gpu/index', 'gpu.tex', 'Linux GPU Driver Developer\'s Guide', |
| 344 | 'The kernel development community', 'manual'), | 344 | 'The kernel development community', 'manual'), |
| 345 | ('media/index', 'media.tex', 'Linux Media Subsystem Documentation', | ||
| 346 | 'The kernel development community', 'manual'), | ||
| 345 | ] | 347 | ] |
| 346 | 348 | ||
| 347 | # The name of an image file (relative to this directory) to place at the top of | 349 | # The name of an image file (relative to this directory) to place at the top of |
| @@ -0,0 +1,65 @@ | |||
| 1 | Atmel Image Sensor Controller (ISC) | ||
| 2 | ---------------------------------------------- | ||
| 3 | |||
| 4 | Required properties for ISC: | ||
| 5 | - compatible | ||
| 6 | Must be "atmel,sama5d2-isc". | ||
| 7 | - reg | ||
| 8 | Physical base address and length of the registers set for the device. | ||
| 9 | - interrupts | ||
| 10 | Should contain IRQ line for the ISC. | ||
| 11 | - clocks | ||
| 12 | List of clock specifiers, corresponding to entries in | ||
| 13 | the clock-names property; | ||
| 14 | Please refer to clock-bindings.txt. | ||
| 15 | - clock-names | ||
| 16 | Required elements: "hclock", "iscck", "gck". | ||
| 17 | - #clock-cells | ||
| 18 | Should be 0. | ||
| 19 | - clock-output-names | ||
| 20 | Should be "isc-mck". | ||
| 21 | - pinctrl-names, pinctrl-0 | ||
| 22 | Please refer to pinctrl-bindings.txt. | ||
| 23 | |||
| 24 | ISC supports a single port node with parallel bus. It should contain one | ||
| 25 | 'port' child node with child 'endpoint' node. Please refer to the bindings | ||
| 26 | defined in Documentation/devicetree/bindings/media/video-interfaces.txt. | ||
| 27 | |||
| 28 | Example: | ||
| 29 | isc: isc@f0008000 { | ||
| 30 | compatible = "atmel,sama5d2-isc"; | ||
| 31 | reg = <0xf0008000 0x4000>; | ||
| 32 | interrupts = <46 IRQ_TYPE_LEVEL_HIGH 5>; | ||
| 33 | clocks = <&isc_clk>, <&iscck>, <&isc_gclk>; | ||
| 34 | clock-names = "hclock", "iscck", "gck"; | ||
| 35 | #clock-cells = <0>; | ||
| 36 | clock-output-names = "isc-mck"; | ||
| 37 | pinctrl-names = "default"; | ||
| 38 | pinctrl-0 = <&pinctrl_isc_base &pinctrl_isc_data_8bit &pinctrl_isc_data_9_10 &pinctrl_isc_data_11_12>; | ||
| 39 | |||
| 40 | port { | ||
| 41 | isc_0: endpoint { | ||
| 42 | remote-endpoint = <&ov7740_0>; | ||
| 43 | hsync-active = <1>; | ||
| 44 | vsync-active = <0>; | ||
| 45 | pclk-sample = <1>; | ||
| 46 | }; | ||
| 47 | }; | ||
| 48 | }; | ||
| 49 | |||
| 50 | i2c1: i2c@fc028000 { | ||
| 51 | ov7740: camera@21 { | ||
| 52 | compatible = "ovti,ov7740"; | ||
| 53 | reg = <0x21>; | ||
| 54 | clocks = <&isc>; | ||
| 55 | clock-names = "xvclk"; | ||
| 56 | assigned-clocks = <&isc>; | ||
| 57 | assigned-clock-rates = <24000000>; | ||
| 58 | |||
| 59 | port { | ||
| 60 | ov7740_0: endpoint { | ||
| 61 | remote-endpoint = <&isc_0>; | ||
| 62 | }; | ||
| 63 | }; | ||
| 64 | }; | ||
| 65 | }; | ||
| @@ -16,9 +16,10 @@ Required properties: · 15 unmodified lines | |||
| 16 | - clocks : list of clock specifiers, corresponding to entries in | 16 | - clocks : list of clock specifiers, corresponding to entries in |
| 17 | clock-names property; | 17 | clock-names property; |
| 18 | - clock-names : must contain "ppmuispx", "ppmuispx", "lite0", "lite1" | 18 | - clock-names : must contain "ppmuispx", "ppmuispx", "lite0", "lite1" |
| 19 | "mpll", "sysreg", "isp", "drc", "fd", "mcuisp", "uart", | 19 | "mpll", "sysreg", "isp", "drc", "fd", "mcuisp", "gicisp", |
| 20 | "ispdiv0", "ispdiv1", "mcuispdiv0", "mcuispdiv1", "aclk200", | 20 | "pwm_isp", "mcuctl_isp", "uart", "ispdiv0", "ispdiv1", |
| 21 | "div_aclk200", "aclk400mcuisp", "div_aclk400mcuisp" entries, | 21 | "mcuispdiv0", "mcuispdiv1", "aclk200", "div_aclk200", |
| 22 | "aclk400mcuisp", "div_aclk400mcuisp" entries, | ||
| 22 | matching entries in the clocks property. | 23 | matching entries in the clocks property. |
| 23 | pmu subnode | 24 | pmu subnode |
| 24 | ----------- | 25 | ----------- |
| @@ -0,0 +1,19 @@ | |||
| 1 | * Analog Devices AD5820 autofocus coil | ||
| 2 | |||
| 3 | Required Properties: | ||
| 4 | |||
| 5 | - compatible: Must contain "adi,ad5820" | ||
| 6 | |||
| 7 | - reg: I2C slave address | ||
| 8 | |||
| 9 | - VANA-supply: supply of voltage for VANA pin | ||
| 10 | |||
| 11 | Example: | ||
| 12 | |||
| 13 | ad5820: coil@c { | ||
| 14 | compatible = "adi,ad5820"; | ||
| 15 | reg = <0x0c>; | ||
| 16 | |||
| 17 | VANA-supply = <&vaux4>; | ||
| 18 | }; | ||
| 19 | |||
| @@ -15,6 +15,11 @@ Required Properties : · 14 unmodified lines | |||
| 15 | "adi,adv7282" | 15 | "adi,adv7282" |
| 16 | "adi,adv7282-m" | 16 | "adi,adv7282-m" |
| 17 | 17 | ||
| 18 | Optional Properties : | ||
| 19 | - powerdown-gpios: reference to the GPIO connected to the powerdown pin, | ||
| 20 | if any. | ||
| 21 | |||
| 22 | |||
| 18 | Example: | 23 | Example: |
| 19 | 24 | ||
| 20 | i2c0@1c22000 { | 25 | i2c0@1c22000 { |
| @@ -7,12 +7,14 @@ conversion of AXI transactions in order to reduce the memory bandwidth. · 6 unmodified lines | |||
| 7 | 7 | ||
| 8 | There are three types of FCP: FCP for Codec (FCPC), FCP for VSP (FCPV) and FCP | 8 | There are three types of FCP: FCP for Codec (FCPC), FCP for VSP (FCPV) and FCP |
| 9 | for FDP (FCPF). Their configuration and behaviour depend on the module they | 9 | for FDP (FCPF). Their configuration and behaviour depend on the module they |
| 10 | are paired with. These DT bindings currently support the FCPV only. | 10 | are paired with. These DT bindings currently support the FCPV and FCPF. |
| 11 | 11 | ||
| 12 | - compatible: Must be one or more of the following | 12 | - compatible: Must be one or more of the following |
| 13 | 13 | ||
| 14 | - "renesas,r8a7795-fcpv" for R8A7795 (R-Car H3) compatible 'FCP for VSP' | 14 | - "renesas,r8a7795-fcpv" for R8A7795 (R-Car H3) compatible 'FCP for VSP' |
| 15 | - "renesas,r8a7795-fcpf" for R8A7795 (R-Car H3) compatible 'FCP for FDP' | ||
| 15 | - "renesas,fcpv" for generic compatible 'FCP for VSP' | 16 | - "renesas,fcpv" for generic compatible 'FCP for VSP' |
| 17 | - "renesas,fcpf" for generic compatible 'FCP for FDP' | ||
| 16 | 18 | ||
| 17 | When compatible with the generic version, nodes must list the | 19 | When compatible with the generic version, nodes must list the |
| 18 | SoC-specific version corresponding to the platform first, followed by the | 20 | SoC-specific version corresponding to the platform first, followed by the |
| @@ -21,6 +23,10 @@ are paired with. These DT bindings currently support the FCPV only. · 2 unmodified lines | |||
| 21 | - reg: the register base and size for the device registers | 23 | - reg: the register base and size for the device registers |
| 22 | - clocks: Reference to the functional clock | 24 | - clocks: Reference to the functional clock |
| 23 | 25 | ||
| 26 | Optional properties: | ||
| 27 | - power-domains : power-domain property defined with a power domain specifier | ||
| 28 | to respective power domain. | ||
| 29 | |||
| 24 | 30 | ||
| 25 | Device node example | 31 | Device node example |
| 26 | ------------------- | 32 | ------------------- |
| @@ -29,4 +35,5 @@ Device node example · 2 unmodified lines | |||
| 29 | compatible = "renesas,r8a7795-fcpv", "renesas,fcpv"; | 35 | compatible = "renesas,r8a7795-fcpv", "renesas,fcpv"; |
| 30 | reg = <0 0xfea2f000 0 0x200>; | 36 | reg = <0 0xfea2f000 0 0x200>; |
| 31 | clocks = <&cpg CPG_MOD 602>; | 37 | clocks = <&cpg CPG_MOD 602>; |
| 38 | power-domains = <&sysc R8A7795_PD_A3VP>; | ||
| 32 | }; | 39 | }; |
| @@ -0,0 +1,24 @@ | |||
| 1 | st-hva: multi-format video encoder for STMicroelectronics SoC. | ||
| 2 | |||
| 3 | Required properties: | ||
| 4 | - compatible: should be "st,st-hva". | ||
| 5 | - reg: HVA physical address location and length, esram address location and | ||
| 6 | length. | ||
| 7 | - reg-names: names of the registers listed in registers property in the same | ||
| 8 | order. | ||
| 9 | - interrupts: HVA interrupt number. | ||
| 10 | - clocks: from common clock binding: handle hardware IP needed clocks, the | ||
| 11 | number of clocks may depend on the SoC type. | ||
| 12 | See ../clock/clock-bindings.txt for details. | ||
| 13 | - clock-names: names of the clocks listed in clocks property in the same order. | ||
| 14 | |||
| 15 | Example: | ||
| 16 | hva@8c85000{ | ||
| 17 | compatible = "st,st-hva"; | ||
| 18 | reg = <0x8c85000 0x400>, <0x6000000 0x40000>; | ||
| 19 | reg-names = "hva_registers", "hva_esram"; | ||
| 20 | interrupts = <GIC_SPI 58 IRQ_TYPE_NONE>, | ||
| 21 | <GIC_SPI 59 IRQ_TYPE_NONE>; | ||
| 22 | clock-names = "clk_hva"; | ||
| 23 | clocks = <&clk_s_c0_flexgen CLK_HVA>; | ||
| 24 | }; | ||
| @@ -0,0 +1,25 @@ | |||
| 1 | STMicroelectronics STIH4xx HDMI CEC driver | ||
| 2 | |||
| 3 | Required properties: | ||
| 4 | - compatible : value should be "st,stih-cec" | ||
| 5 | - reg : Physical base address of the IP registers and length of memory | ||
| 6 | mapped region. | ||
| 7 | - clocks : from common clock binding: handle to HDMI CEC clock | ||
| 8 | - interrupts : HDMI CEC interrupt number to the CPU. | ||
| 9 | - pinctrl-names: Contains only one value - "default" | ||
| 10 | - pinctrl-0: Specifies the pin control groups used for CEC hardware. | ||
| 11 | - resets: Reference to a reset controller | ||
| 12 | |||
| 13 | Example for STIH407: | ||
| 14 | |||
| 15 | sti-cec@094a087c { | ||
| 16 | compatible = "st,stih-cec"; | ||
| 17 | reg = <0x94a087c 0x64>; | ||
| 18 | clocks = <&clk_sysin>; | ||
| 19 | clock-names = "cec-clk"; | ||
| 20 | interrupts = <GIC_SPI 140 IRQ_TYPE_NONE>; | ||
| 21 | interrupt-names = "cec-irq"; | ||
| 22 | pinctrl-names = "default"; | ||
| 23 | pinctrl-0 = <&pinctrl_cec0_default>; | ||
| 24 | resets = <&softreset STIH407_LPM_SOFTRESET>; | ||
| 25 | }; | ||
| @@ -2,7 +2,7 @@ · 1 unmodified line | |||
| 2 | ignore define _DVBAUDIO_H_ | 2 | ignore define _DVBAUDIO_H_ |
| 3 | 3 | ||
| 4 | # Typedef pointing to structs | 4 | # Typedef pointing to structs |
| 5 | replace typedef audio_karaoke_t audio-karaoke | 5 | replace typedef audio_karaoke_t :c:type:`audio_karaoke` |
| 6 | 6 | ||
| 7 | # Undocumented audio caps, as this is a deprecated API anyway | 7 | # Undocumented audio caps, as this is a deprecated API anyway |
| 8 | ignore define AUDIO_CAP_DTS | 8 | ignore define AUDIO_CAP_DTS |
| @@ -16,5 +16,5 @@ ignore define AUDIO_CAP_SDDS · 7 unmodified lines | |||
| 16 | ignore define AUDIO_CAP_AC3 | 16 | ignore define AUDIO_CAP_AC3 |
| 17 | 17 | ||
| 18 | # some typedefs should point to struct/enums | 18 | # some typedefs should point to struct/enums |
| 19 | replace typedef audio_mixer_t audio-mixer | 19 | replace typedef audio_mixer_t :c:type:`audio_mixer` |
| 20 | replace typedef audio_status_t audio-status | 20 | replace typedef audio_status_t :c:type:`audio_status` |
| @@ -2,23 +2,23 @@ · 1 unmodified line | |||
| 2 | ignore define _DVBCA_H_ | 2 | ignore define _DVBCA_H_ |
| 3 | 3 | ||
| 4 | # struct ca_slot_info defines | 4 | # struct ca_slot_info defines |
| 5 | replace define CA_CI ca-slot-info | 5 | replace define CA_CI :c:type:`ca_slot_info` |
| 6 | replace define CA_CI_LINK ca-slot-info | 6 | replace define CA_CI_LINK :c:type:`ca_slot_info` |
| 7 | replace define CA_CI_PHYS ca-slot-info | 7 | replace define CA_CI_PHYS :c:type:`ca_slot_info` |
| 8 | replace define CA_DESCR ca-slot-info | 8 | replace define CA_DESCR :c:type:`ca_slot_info` |
| 9 | replace define CA_SC ca-slot-info | 9 | replace define CA_SC :c:type:`ca_slot_info` |
| 10 | replace define CA_CI_MODULE_PRESENT ca-slot-info | 10 | replace define CA_CI_MODULE_PRESENT :c:type:`ca_slot_info` |
| 11 | replace define CA_CI_MODULE_READY ca-slot-info | 11 | replace define CA_CI_MODULE_READY :c:type:`ca_slot_info` |
| 12 | 12 | ||
| 13 | # struct ca_descr_info defines | 13 | # struct ca_descr_info defines |
| 14 | replace define CA_ECD ca-descr-info | 14 | replace define CA_ECD :c:type:`ca_descr_info` |
| 15 | replace define CA_NDS ca-descr-info | 15 | replace define CA_NDS :c:type:`ca_descr_info` |
| 16 | replace define CA_DSS ca-descr-info | 16 | replace define CA_DSS :c:type:`ca_descr_info` |
| 17 | 17 | ||
| 18 | # some typedefs should point to struct/enums | 18 | # some typedefs should point to struct/enums |
| 19 | replace typedef ca_pid_t ca-pid | 19 | replace typedef ca_pid_t :c:type:`ca_pid` |
| 20 | replace typedef ca_slot_info_t ca-slot-info | 20 | replace typedef ca_slot_info_t :c:type:`ca_slot_info` |
| 21 | replace typedef ca_descr_info_t ca-descr-info | 21 | replace typedef ca_descr_info_t :c:type:`ca_descr_info` |
| 22 | replace typedef ca_caps_t ca-caps | 22 | replace typedef ca_caps_t :c:type:`ca_caps` |
| 23 | replace typedef ca_msg_t ca-msg | 23 | replace typedef ca_msg_t :c:type:`ca_msg` |
| 24 | replace typedef ca_descr_t ca-descr | 24 | replace typedef ca_descr_t :c:type:`ca_descr` |
| @@ -1,12 +1,6 @@ | |||
| 1 | # Ignore header name | 1 | # Ignore header name |
| 2 | ignore define _CEC_UAPI_H | 2 | ignore define _CEC_UAPI_H |
| 3 | 3 | ||
| 4 | # Rename some symbols, to avoid namespace conflicts | ||
| 5 | replace struct cec_event_state_change cec-event-state-change_s | ||
| 6 | replace struct cec_event_lost_msgs cec-event-lost-msgs_s | ||
| 7 | replace enum cec_mode_initiator cec-mode-initiator_e | ||
| 8 | replace enum cec_mode_follower cec-mode-follower_e | ||
| 9 | |||
| 10 | # define macros to ignore | 4 | # define macros to ignore |
| 11 | 5 | ||
| 12 | ignore define CEC_MAX_MSG_SIZE | 6 | ignore define CEC_MAX_MSG_SIZE |
| @@ -21,10 +21,14 @@ nitpick_ignore = [ · 20 unmodified lines | |||
| 21 | ("c:func", "clock_gettime"), | 21 | ("c:func", "clock_gettime"), |
| 22 | ("c:func", "close"), | 22 | ("c:func", "close"), |
| 23 | ("c:func", "container_of"), | 23 | ("c:func", "container_of"), |
| 24 | ("c:func", "copy_from_user"), | ||
| 25 | ("c:func", "copy_to_user"), | ||
| 24 | ("c:func", "determine_valid_ioctls"), | 26 | ("c:func", "determine_valid_ioctls"), |
| 25 | ("c:func", "ERR_PTR"), | 27 | ("c:func", "ERR_PTR"), |
| 28 | ("c:func", "i2c_new_device"), | ||
| 26 | ("c:func", "ioctl"), | 29 | ("c:func", "ioctl"), |
| 27 | ("c:func", "IS_ERR"), | 30 | ("c:func", "IS_ERR"), |
| 31 | ("c:func", "KERNEL_VERSION"), | ||
| 28 | ("c:func", "mmap"), | 32 | ("c:func", "mmap"), |
| 29 | ("c:func", "open"), | 33 | ("c:func", "open"), |
| 30 | ("c:func", "pci_name"), | 34 | ("c:func", "pci_name"), |
| @@ -36,58 +40,70 @@ nitpick_ignore = [ · 5 unmodified lines | |||
| 36 | ("c:func", "struct fd_set"), | 40 | ("c:func", "struct fd_set"), |
| 37 | ("c:func", "struct pollfd"), | 41 | ("c:func", "struct pollfd"), |
| 38 | ("c:func", "usb_make_path"), | 42 | ("c:func", "usb_make_path"), |
| 43 | ("c:func", "wait_finish"), | ||
| 44 | ("c:func", "wait_prepare"), | ||
| 39 | ("c:func", "write"), | 45 | ("c:func", "write"), |
| 46 | |||
| 40 | ("c:type", "atomic_t"), | 47 | ("c:type", "atomic_t"), |
| 41 | ("c:type", "bool"), | 48 | ("c:type", "bool"), |
| 49 | ("c:type", "boolean"), | ||
| 42 | ("c:type", "buf_queue"), | 50 | ("c:type", "buf_queue"), |
| 43 | ("c:type", "device"), | 51 | ("c:type", "device"), |
| 44 | ("c:type", "device_driver"), | 52 | ("c:type", "device_driver"), |
| 45 | ("c:type", "device_node"), | 53 | ("c:type", "device_node"), |
| 46 | ("c:type", "enum"), | 54 | ("c:type", "enum"), |
| 55 | ("c:type", "fd"), | ||
| 56 | ("c:type", "fd_set"), | ||
| 47 | ("c:type", "file"), | 57 | ("c:type", "file"), |
| 48 | ("c:type", "i2c_adapter"), | 58 | ("c:type", "i2c_adapter"), |
| 49 | ("c:type", "i2c_board_info"), | 59 | ("c:type", "i2c_board_info"), |
| 50 | ("c:type", "i2c_client"), | 60 | ("c:type", "i2c_client"), |
| 61 | ("c:type", "int16_t"), | ||
| 51 | ("c:type", "ktime_t"), | 62 | ("c:type", "ktime_t"), |
| 52 | ("c:type", "led_classdev_flash"), | 63 | ("c:type", "led_classdev_flash"), |
| 53 | ("c:type", "list_head"), | 64 | ("c:type", "list_head"), |
| 54 | ("c:type", "lock_class_key"), | 65 | ("c:type", "lock_class_key"), |
| 55 | ("c:type", "module"), | 66 | ("c:type", "module"), |
| 56 | ("c:type", "mutex"), | 67 | ("c:type", "mutex"), |
| 68 | ("c:type", "NULL"), | ||
| 69 | ("c:type", "off_t"), | ||
| 57 | ("c:type", "pci_dev"), | 70 | ("c:type", "pci_dev"), |
| 58 | ("c:type", "pdvbdev"), | 71 | ("c:type", "pdvbdev"), |
| 72 | ("c:type", "poll_table"), | ||
| 73 | ("c:type", "platform_device"), | ||
| 74 | ("c:type", "pollfd"), | ||
| 59 | ("c:type", "poll_table_struct"), | 75 | ("c:type", "poll_table_struct"), |
| 60 | ("c:type", "s32"), | 76 | ("c:type", "s32"), |
| 61 | ("c:type", "s64"), | 77 | ("c:type", "s64"), |
| 62 | ("c:type", "sd"), | 78 | ("c:type", "sd"), |
| 79 | ("c:type", "size_t"), | ||
| 63 | ("c:type", "spi_board_info"), | 80 | ("c:type", "spi_board_info"), |
| 64 | ("c:type", "spi_device"), | 81 | ("c:type", "spi_device"), |
| 65 | ("c:type", "spi_master"), | 82 | ("c:type", "spi_master"), |
| 66 | ("c:type", "struct fb_fix_screeninfo"), | 83 | ("c:type", "ssize_t"), |
| 67 | ("c:type", "struct pollfd"), | 84 | ("c:type", "fb_fix_screeninfo"), |
| 68 | ("c:type", "struct timeval"), | 85 | ("c:type", "pollfd"), |
| 69 | ("c:type", "struct video_capability"), | 86 | ("c:type", "timeval"), |
| 87 | ("c:type", "video_capability"), | ||
| 88 | ("c:type", "timeval"), | ||
| 89 | ("c:type", "__u16"), | ||
| 70 | ("c:type", "u16"), | 90 | ("c:type", "u16"), |
| 91 | ("c:type", "__u32"), | ||
| 71 | ("c:type", "u32"), | 92 | ("c:type", "u32"), |
| 93 | ("c:type", "__u64"), | ||
| 72 | ("c:type", "u64"), | 94 | ("c:type", "u64"), |
| 73 | ("c:type", "u8"), | 95 | ("c:type", "u8"), |
| 96 | ("c:type", "uint16_t"), | ||
| 97 | ("c:type", "uint32_t"), | ||
| 74 | ("c:type", "union"), | 98 | ("c:type", "union"), |
| 99 | ("c:type", "__user"), | ||
| 75 | ("c:type", "usb_device"), | 100 | ("c:type", "usb_device"), |
| 101 | ("c:type", "usb_interface"), | ||
| 102 | ("c:type", "v4l2_std_id"), | ||
| 103 | ("c:type", "video_system_t"), | ||
| 104 | ("c:type", "vm_area_struct"), | ||
| 105 | |||
| 106 | # Opaque structures | ||
| 76 | 107 | ||
| 77 | ("cpp:type", "boolean"), | 108 | ("c:type", "v4l2_m2m_dev"), |
| 78 | ("cpp:type", "fd"), | ||
| 79 | ("cpp:type", "fd_set"), | ||
| 80 | ("cpp:type", "int16_t"), | ||
| 81 | ("cpp:type", "NULL"), | ||
| 82 | ("cpp:type", "off_t"), | ||
| 83 | ("cpp:type", "pollfd"), | ||
| 84 | ("cpp:type", "size_t"), | ||
| 85 | ("cpp:type", "ssize_t"), | ||
| 86 | ("cpp:type", "timeval"), | ||
| 87 | ("cpp:type", "__u16"), | ||
| 88 | ("cpp:type", "__u32"), | ||
| 89 | ("cpp:type", "__u64"), | ||
| 90 | ("cpp:type", "uint16_t"), | ||
| 91 | ("cpp:type", "uint32_t"), | ||
| 92 | ("cpp:type", "video_system_t"), | ||
| 93 | ] | 109 | ] |
| @@ -4,29 +4,29 @@ ignore define _UAPI_DVBDMX_H_ · 3 unmodified lines | |||
| 4 | # Ignore limit constants | 4 | # Ignore limit constants |
| 5 | ignore define DMX_FILTER_SIZE | 5 | ignore define DMX_FILTER_SIZE |
| 6 | 6 | ||
| 7 | # dmx-pes-type-t enum symbols | 7 | # dmx_pes_type_t enum symbols |
| 8 | replace enum dmx_ts_pes dmx-pes-type-t | 8 | replace enum dmx_ts_pes :c:type:`dmx_pes_type` |
| 9 | replace symbol DMX_PES_AUDIO0 dmx-pes-type-t | 9 | replace symbol DMX_PES_AUDIO0 :c:type:`dmx_pes_type` |
| 10 | replace symbol DMX_PES_VIDEO0 dmx-pes-type-t | 10 | replace symbol DMX_PES_VIDEO0 :c:type:`dmx_pes_type` |
| 11 | replace symbol DMX_PES_TELETEXT0 dmx-pes-type-t | 11 | replace symbol DMX_PES_TELETEXT0 :c:type:`dmx_pes_type` |
| 12 | replace symbol DMX_PES_SUBTITLE0 dmx-pes-type-t | 12 | replace symbol DMX_PES_SUBTITLE0 :c:type:`dmx_pes_type` |
| 13 | replace symbol DMX_PES_PCR0 dmx-pes-type-t | 13 | replace symbol DMX_PES_PCR0 :c:type:`dmx_pes_type` |
| 14 | replace symbol DMX_PES_AUDIO1 dmx-pes-type-t | 14 | replace symbol DMX_PES_AUDIO1 :c:type:`dmx_pes_type` |
| 15 | replace symbol DMX_PES_VIDEO1 dmx-pes-type-t | 15 | replace symbol DMX_PES_VIDEO1 :c:type:`dmx_pes_type` |
| 16 | replace symbol DMX_PES_TELETEXT1 dmx-pes-type-t | 16 | replace symbol DMX_PES_TELETEXT1 :c:type:`dmx_pes_type` |
| 17 | replace symbol DMX_PES_SUBTITLE1 dmx-pes-type-t | 17 | replace symbol DMX_PES_SUBTITLE1 :c:type:`dmx_pes_type` |
| 18 | replace symbol DMX_PES_PCR1 dmx-pes-type-t | 18 | replace symbol DMX_PES_PCR1 :c:type:`dmx_pes_type` |
| 19 | replace symbol DMX_PES_AUDIO2 dmx-pes-type-t | 19 | replace symbol DMX_PES_AUDIO2 :c:type:`dmx_pes_type` |
| 20 | replace symbol DMX_PES_VIDEO2 dmx-pes-type-t | 20 | replace symbol DMX_PES_VIDEO2 :c:type:`dmx_pes_type` |
| 21 | replace symbol DMX_PES_TELETEXT2 dmx-pes-type-t | 21 | replace symbol DMX_PES_TELETEXT2 :c:type:`dmx_pes_type` |
| 22 | replace symbol DMX_PES_SUBTITLE2 dmx-pes-type-t | 22 | replace symbol DMX_PES_SUBTITLE2 :c:type:`dmx_pes_type` |
| 23 | replace symbol DMX_PES_PCR2 dmx-pes-type-t | 23 | replace symbol DMX_PES_PCR2 :c:type:`dmx_pes_type` |
| 24 | replace symbol DMX_PES_AUDIO3 dmx-pes-type-t | 24 | replace symbol DMX_PES_AUDIO3 :c:type:`dmx_pes_type` |
| 25 | replace symbol DMX_PES_VIDEO3 dmx-pes-type-t | 25 | replace symbol DMX_PES_VIDEO3 :c:type:`dmx_pes_type` |
| 26 | replace symbol DMX_PES_TELETEXT3 dmx-pes-type-t | 26 | replace symbol DMX_PES_TELETEXT3 :c:type:`dmx_pes_type` |
| 27 | replace symbol DMX_PES_SUBTITLE3 dmx-pes-type-t | 27 | replace symbol DMX_PES_SUBTITLE3 :c:type:`dmx_pes_type` |
| 28 | replace symbol DMX_PES_PCR3 dmx-pes-type-t | 28 | replace symbol DMX_PES_PCR3 :c:type:`dmx_pes_type` |
| 29 | replace symbol DMX_PES_OTHER dmx-pes-type-t | 29 | replace symbol DMX_PES_OTHER :c:type:`dmx_pes_type` |
| 30 | 30 | ||
| 31 | # Ignore obsolete symbols | 31 | # Ignore obsolete symbols |
| 32 | ignore define DMX_PES_AUDIO | 32 | ignore define DMX_PES_AUDIO |
| @@ -36,28 +36,31 @@ ignore define DMX_PES_SUBTITLE · 3 unmodified lines | |||
| 36 | ignore define DMX_PES_PCR | 36 | ignore define DMX_PES_PCR |
| 37 | 37 | ||
| 38 | # dmx_input_t symbols | 38 | # dmx_input_t symbols |
| 39 | replace enum dmx_input dmx-input-t | 39 | replace enum dmx_input :c:type:`dmx_input` |
| 40 | replace symbol DMX_IN_FRONTEND dmx-input-t | 40 | replace symbol DMX_IN_FRONTEND :c:type:`dmx_input` |
| 41 | replace symbol DMX_IN_DVR dmx-input-t | 41 | replace symbol DMX_IN_DVR :c:type:`dmx_input` |
| 42 | 42 | ||
| 43 | # dmx_source_t symbols | 43 | # dmx_source_t symbols |
| 44 | replace enum dmx_source dmx-source-t | 44 | replace enum dmx_source :c:type:`dmx_source` |
| 45 | replace symbol DMX_SOURCE_FRONT0 dmx-source-t | 45 | replace symbol DMX_SOURCE_FRONT0 :c:type:`dmx_source` |
| 46 | replace symbol DMX_SOURCE_FRONT1 dmx-source-t | 46 | replace symbol DMX_SOURCE_FRONT1 :c:type:`dmx_source` |
| 47 | replace symbol DMX_SOURCE_FRONT2 dmx-source-t | 47 | replace symbol DMX_SOURCE_FRONT2 :c:type:`dmx_source` |
| 48 | replace symbol DMX_SOURCE_FRONT3 dmx-source-t | 48 | replace symbol DMX_SOURCE_FRONT3 :c:type:`dmx_source` |
| 49 | replace symbol DMX_SOURCE_DVR0 dmx-source-t | 49 | replace symbol DMX_SOURCE_DVR0 :c:type:`dmx_source` |
| 50 | replace symbol DMX_SOURCE_DVR1 dmx-source-t | 50 | replace symbol DMX_SOURCE_DVR1 :c:type:`dmx_source` |
| 51 | replace symbol DMX_SOURCE_DVR2 dmx-source-t | 51 | replace symbol DMX_SOURCE_DVR2 :c:type:`dmx_source` |
| 52 | replace symbol DMX_SOURCE_DVR3 dmx-source-t | 52 | replace symbol DMX_SOURCE_DVR3 :c:type:`dmx_source` |
| 53 | 53 | ||
| 54 | 54 | ||
| 55 | # Flags for struct dmx_sct_filter_params | 55 | # Flags for struct dmx_sct_filter_params |
| 56 | replace define DMX_CHECK_CRC dmx-sct-filter-params | 56 | replace define DMX_CHECK_CRC :c:type:`dmx_sct_filter_params` |
| 57 | replace define DMX_ONESHOT dmx-sct-filter-params | 57 | replace define DMX_ONESHOT :c:type:`dmx_sct_filter_params` |
| 58 | replace define DMX_IMMEDIATE_START dmx-sct-filter-params | 58 | replace define DMX_IMMEDIATE_START :c:type:`dmx_sct_filter_params` |
| 59 | replace define DMX_KERNEL_CLIENT dmx-sct-filter-params | 59 | replace define DMX_KERNEL_CLIENT :c:type:`dmx_sct_filter_params` |
| 60 | 60 | ||
| 61 | # some typedefs should point to struct/enums | 61 | # some typedefs should point to struct/enums |
| 62 | replace typedef dmx_caps_t dmx-caps | 62 | replace typedef dmx_caps_t :c:type:`dmx_caps` |
| 63 | replace typedef dmx_filter_t dmx-filter | 63 | replace typedef dmx_filter_t :c:type:`dmx_filter` |
| 64 | replace typedef dmx_pes_type_t :c:type:`dmx_pes_type` | ||
| 65 | replace typedef dmx_input_t :c:type:`dmx_input` | ||
| 66 | replace typedef dmx_source_t :c:type:`dmx_source` | ||
| @@ -26,22 +26,22 @@ ignore define MAX_DTV_STATS · 25 unmodified lines | |||
| 26 | ignore define DTV_IOCTL_MAX_MSGS | 26 | ignore define DTV_IOCTL_MAX_MSGS |
| 27 | 27 | ||
| 28 | # Stats enum is documented altogether | 28 | # Stats enum is documented altogether |
| 29 | replace enum fecap_scale_params frontend-stat-properties | 29 | replace enum fecap_scale_params :ref:`frontend-stat-properties` |
| 30 | replace symbol FE_SCALE_COUNTER frontend-stat-properties | 30 | replace symbol FE_SCALE_COUNTER frontend-stat-properties |
| 31 | replace symbol FE_SCALE_DECIBEL frontend-stat-properties | 31 | replace symbol FE_SCALE_DECIBEL frontend-stat-properties |
| 32 | replace symbol FE_SCALE_NOT_AVAILABLE frontend-stat-properties | 32 | replace symbol FE_SCALE_NOT_AVAILABLE frontend-stat-properties |
| 33 | replace symbol FE_SCALE_RELATIVE frontend-stat-properties | 33 | replace symbol FE_SCALE_RELATIVE frontend-stat-properties |
| 34 | 34 | ||
| 35 | # the same reference is used for both get and set ioctls | 35 | # the same reference is used for both get and set ioctls |
| 36 | replace ioctl FE_SET_PROPERTY FE_GET_PROPERTY | 36 | replace ioctl FE_SET_PROPERTY :c:type:`FE_GET_PROPERTY` |
| 37 | 37 | ||
| 38 | # Ignore struct used only internally at Kernel | 38 | # Ignore struct used only internally at Kernel |
| 39 | ignore struct dtv_cmds_h | 39 | ignore struct dtv_cmds_h |
| 40 | 40 | ||
| 41 | # Typedefs that use the enum reference | 41 | # Typedefs that use the enum reference |
| 42 | replace typedef fe_sec_voltage_t fe-sec-voltage | 42 | replace typedef fe_sec_voltage_t :c:type:`fe_sec_voltage` |
| 43 | 43 | ||
| 44 | # Replaces for flag constants | 44 | # Replaces for flag constants |
| 45 | replace define FE_TUNE_MODE_ONESHOT fe_set_frontend_tune_mode | 45 | replace define FE_TUNE_MODE_ONESHOT :c:func:`FE_SET_FRONTEND_TUNE_MODE` |
| 46 | replace define LNA_AUTO dtv-lna | 46 | replace define LNA_AUTO dtv-lna |
| 47 | replace define NO_STREAM_ID_FILTER dtv-stream-id | 47 | replace define NO_STREAM_ID_FILTER dtv-stream-id |
| @@ -1,6 +1,11 @@ | |||
| 1 | Linux Media Subsystem Documentation | 1 | Linux Media Subsystem Documentation |
| 2 | =================================== | 2 | =================================== |
| 3 | 3 | ||
| 4 | .. Sphinx 1.4.x has a definition for DUrole that doesn't work on alltt blocks | ||
| 5 | .. raw:: latex | ||
| 6 | |||
| 7 | \renewcommand*{\DUrole}[2]{ #2 } | ||
| 8 | |||
| 4 | Contents: | 9 | Contents: |
| 5 | 10 | ||
| 6 | .. toctree:: | 11 | .. toctree:: |
| @@ -30,7 +30,7 @@ divided into five parts. · 29 unmodified lines | |||
| 30 | called as DVB API, in fact it covers several different video standards | 30 | called as DVB API, in fact it covers several different video standards |
| 31 | including DVB-T/T2, DVB-S/S2, DVB-C, ATSC, ISDB-T, ISDB-S, DTMB, etc. The | 31 | including DVB-T/T2, DVB-S/S2, DVB-C, ATSC, ISDB-T, ISDB-S, DTMB, etc. The |
| 32 | complete list of supported standards can be found at | 32 | complete list of supported standards can be found at |
| 33 | :ref:`fe-delivery-system-t`. | 33 | :c:type:`fe_delivery_system`. |
| 34 | 34 | ||
| 35 | 3. The :ref:`third part <remote_controllers>` covers the Remote Controller API. | 35 | 3. The :ref:`third part <remote_controllers>` covers the Remote Controller API. |
| 36 | 36 | ||
| @@ -36,39 +36,50 @@ CEC Adapter · 35 unmodified lines | |||
| 36 | The struct cec_adapter represents the CEC adapter hardware. It is created by | 36 | The struct cec_adapter represents the CEC adapter hardware. It is created by |
| 37 | calling cec_allocate_adapter() and deleted by calling cec_delete_adapter(): | 37 | calling cec_allocate_adapter() and deleted by calling cec_delete_adapter(): |
| 38 | 38 | ||
| 39 | struct cec_adapter *cec_allocate_adapter(const struct cec_adap_ops *ops, | 39 | .. c:function:: |
| 40 | struct cec_adapter *cec_allocate_adapter(const struct cec_adap_ops *ops, | ||
| 40 | void *priv, const char *name, u32 caps, u8 available_las, | 41 | void *priv, const char *name, u32 caps, u8 available_las, |
| 41 | struct device *parent); | 42 | struct device *parent); |
| 42 | void cec_delete_adapter(struct cec_adapter *adap); | 43 | |
| 44 | .. c:function:: | ||
| 45 | void cec_delete_adapter(struct cec_adapter *adap); | ||
| 43 | 46 | ||
| 44 | To create an adapter you need to pass the following information: | 47 | To create an adapter you need to pass the following information: |
| 45 | 48 | ||
| 46 | ops: adapter operations which are called by the CEC framework and that you | 49 | ops: |
| 47 | have to implement. | 50 | adapter operations which are called by the CEC framework and that you |
| 51 | have to implement. | ||
| 48 | 52 | ||
| 49 | priv: will be stored in adap->priv and can be used by the adapter ops. | 53 | priv: |
| 54 | will be stored in adap->priv and can be used by the adapter ops. | ||
| 50 | 55 | ||
| 51 | name: the name of the CEC adapter. Note: this name will be copied. | 56 | name: |
| 57 | the name of the CEC adapter. Note: this name will be copied. | ||
| 52 | 58 | ||
| 53 | caps: capabilities of the CEC adapter. These capabilities determine the | 59 | caps: |
| 60 | capabilities of the CEC adapter. These capabilities determine the | ||
| 54 | capabilities of the hardware and which parts are to be handled | 61 | capabilities of the hardware and which parts are to be handled |
| 55 | by userspace and which parts are handled by kernelspace. The | 62 | by userspace and which parts are handled by kernelspace. The |
| 56 | capabilities are returned by CEC_ADAP_G_CAPS. | 63 | capabilities are returned by CEC_ADAP_G_CAPS. |
| 57 | 64 | ||
| 58 | available_las: the number of simultaneous logical addresses that this | 65 | available_las: |
| 66 | the number of simultaneous logical addresses that this | ||
| 59 | adapter can handle. Must be 1 <= available_las <= CEC_MAX_LOG_ADDRS. | 67 | adapter can handle. Must be 1 <= available_las <= CEC_MAX_LOG_ADDRS. |
| 60 | 68 | ||
| 61 | parent: the parent device. | 69 | parent: |
| 70 | the parent device. | ||
| 62 | 71 | ||
| 63 | 72 | ||
| 64 | To register the /dev/cecX device node and the remote control device (if | 73 | To register the /dev/cecX device node and the remote control device (if |
| 65 | CEC_CAP_RC is set) you call: | 74 | CEC_CAP_RC is set) you call: |
| 66 | 75 | ||
| 67 | int cec_register_adapter(struct cec_adapter *adap); | 76 | .. c:function:: |
| 77 | int cec_register_adapter(struct cec_adapter \*adap); | ||
| 68 | 78 | ||
| 69 | To unregister the devices call: | 79 | To unregister the devices call: |
| 70 | 80 | ||
| 71 | void cec_unregister_adapter(struct cec_adapter *adap); | 81 | .. c:function:: |
| 82 | void cec_unregister_adapter(struct cec_adapter \*adap); | ||
| 72 | 83 | ||
| 73 | Note: if cec_register_adapter() fails, then call cec_delete_adapter() to | 84 | Note: if cec_register_adapter() fails, then call cec_delete_adapter() to |
| 74 | clean up. But if cec_register_adapter() succeeded, then only call | 85 | clean up. But if cec_register_adapter() succeeded, then only call |
| @@ -83,18 +94,23 @@ Implementing the Low-Level CEC Adapter · 8 unmodified lines | |||
| 83 | The following low-level adapter operations have to be implemented in | 94 | The following low-level adapter operations have to be implemented in |
| 84 | your driver: | 95 | your driver: |
| 85 | 96 | ||
| 86 | struct cec_adap_ops { | 97 | .. c:type:: struct cec_adap_ops |
| 87 | /* Low-level callbacks */ | 98 | |
| 88 | int (*adap_enable)(struct cec_adapter *adap, bool enable); | 99 | .. code-block:: none |
| 89 | int (*adap_monitor_all_enable)(struct cec_adapter *adap, bool enable); | 100 | |
| 90 | int (*adap_log_addr)(struct cec_adapter *adap, u8 logical_addr); | 101 | struct cec_adap_ops |
| 91 | int (*adap_transmit)(struct cec_adapter *adap, u8 attempts, | 102 | { |
| 92 | u32 signal_free_time, struct cec_msg *msg); | 103 | /* Low-level callbacks */ |
| 93 | void (*adap_log_status)(struct cec_adapter *adap); | 104 | int (*adap_enable)(struct cec_adapter *adap, bool enable); |
| 105 | int (*adap_monitor_all_enable)(struct cec_adapter *adap, bool enable); | ||
| 106 | int (*adap_log_addr)(struct cec_adapter *adap, u8 logical_addr); | ||
| 107 | int (*adap_transmit)(struct cec_adapter *adap, u8 attempts, | ||
| 108 | u32 signal_free_time, struct cec_msg *msg); | ||
| 109 | void (\*adap_log_status)(struct cec_adapter *adap); | ||
| 94 | 110 | ||
| 95 | /* High-level callbacks */ | 111 | /* High-level callbacks */ |
| 96 | ... | 112 | ... |
| 97 | }; | 113 | }; |
| 98 | 114 | ||
| 99 | The three low-level ops deal with various aspects of controlling the CEC adapter | 115 | The three low-level ops deal with various aspects of controlling the CEC adapter |
| 100 | hardware: | 116 | hardware: |
| @@ -102,6 +118,7 @@ hardware: · 1 unmodified line | |||
| 102 | 118 | ||
| 103 | To enable/disable the hardware: | 119 | To enable/disable the hardware: |
| 104 | 120 | ||
| 121 | .. c:function:: | ||
| 105 | int (*adap_enable)(struct cec_adapter *adap, bool enable); | 122 | int (*adap_enable)(struct cec_adapter *adap, bool enable); |
| 106 | 123 | ||
| 107 | This callback enables or disables the CEC hardware. Enabling the CEC hardware | 124 | This callback enables or disables the CEC hardware. Enabling the CEC hardware |
| @@ -115,6 +132,7 @@ Note that adap_enable must return 0 if enable is false. · 7 unmodified lines | |||
| 115 | 132 | ||
| 116 | To enable/disable the 'monitor all' mode: | 133 | To enable/disable the 'monitor all' mode: |
| 117 | 134 | ||
| 135 | .. c:function:: | ||
| 118 | int (*adap_monitor_all_enable)(struct cec_adapter *adap, bool enable); | 136 | int (*adap_monitor_all_enable)(struct cec_adapter *adap, bool enable); |
| 119 | 137 | ||
| 120 | If enabled, then the adapter should be put in a mode to also monitor messages | 138 | If enabled, then the adapter should be put in a mode to also monitor messages |
| @@ -127,6 +145,7 @@ Note that adap_monitor_all_enable must return 0 if enable is false. · 6 unmodified lines | |||
| 127 | 145 | ||
| 128 | To program a new logical address: | 146 | To program a new logical address: |
| 129 | 147 | ||
| 148 | .. c:function:: | ||
| 130 | int (*adap_log_addr)(struct cec_adapter *adap, u8 logical_addr); | 149 | int (*adap_log_addr)(struct cec_adapter *adap, u8 logical_addr); |
| 131 | 150 | ||
| 132 | If logical_addr == CEC_LOG_ADDR_INVALID then all programmed logical addresses | 151 | If logical_addr == CEC_LOG_ADDR_INVALID then all programmed logical addresses |
| @@ -140,6 +159,7 @@ Note that adap_log_addr must return 0 if logical_addr is CEC_LOG_ADDR_INVALID. · 7 unmodified lines | |||
| 140 | 159 | ||
| 141 | To transmit a new message: | 160 | To transmit a new message: |
| 142 | 161 | ||
| 162 | .. c:function:: | ||
| 143 | int (*adap_transmit)(struct cec_adapter *adap, u8 attempts, | 163 | int (*adap_transmit)(struct cec_adapter *adap, u8 attempts, |
| 144 | u32 signal_free_time, struct cec_msg *msg); | 164 | u32 signal_free_time, struct cec_msg *msg); |
| 145 | 165 | ||
| @@ -158,6 +178,7 @@ microseconds (one data bit period is 2.4 ms). · 12 unmodified lines | |||
| 158 | 178 | ||
| 159 | To log the current CEC hardware status: | 179 | To log the current CEC hardware status: |
| 160 | 180 | ||
| 181 | .. c:function:: | ||
| 161 | void (*adap_status)(struct cec_adapter *adap, struct seq_file *file); | 182 | void (*adap_status)(struct cec_adapter *adap, struct seq_file *file); |
| 162 | 183 | ||
| 163 | This optional callback can be used to show the status of the CEC hardware. | 184 | This optional callback can be used to show the status of the CEC hardware. |
| @@ -169,29 +190,41 @@ driven) by calling into the framework in the following situations: · 5 unmodified lines | |||
| 169 | 190 | ||
| 170 | When a transmit finished (successfully or otherwise): | 191 | When a transmit finished (successfully or otherwise): |
| 171 | 192 | ||
| 172 | void cec_transmit_done(struct cec_adapter *adap, u8 status, u8 arb_lost_cnt, | 193 | .. c:function:: |
| 194 | void cec_transmit_done(struct cec_adapter *adap, u8 status, u8 arb_lost_cnt, | ||
| 173 | u8 nack_cnt, u8 low_drive_cnt, u8 error_cnt); | 195 | u8 nack_cnt, u8 low_drive_cnt, u8 error_cnt); |
| 174 | 196 | ||
| 175 | The status can be one of: | 197 | The status can be one of: |
| 176 | 198 | ||
| 177 | CEC_TX_STATUS_OK: the transmit was successful. | 199 | CEC_TX_STATUS_OK: |
| 178 | CEC_TX_STATUS_ARB_LOST: arbitration was lost: another CEC initiator | 200 | the transmit was successful. |
| 179 | took control of the CEC line and you lost the arbitration. | 201 | |
| 180 | CEC_TX_STATUS_NACK: the message was nacked (for a directed message) or | 202 | CEC_TX_STATUS_ARB_LOST: |
| 181 | acked (for a broadcast message). A retransmission is needed. | 203 | arbitration was lost: another CEC initiator |
| 182 | CEC_TX_STATUS_LOW_DRIVE: low drive was detected on the CEC bus. This | 204 | took control of the CEC line and you lost the arbitration. |
| 183 | indicates that a follower detected an error on the bus and requested a | 205 | |
| 184 | retransmission. | 206 | CEC_TX_STATUS_NACK: |
| 185 | CEC_TX_STATUS_ERROR: some unspecified error occurred: this can be one of | 207 | the message was nacked (for a directed message) or |
| 186 | the previous two if the hardware cannot differentiate or something else | 208 | acked (for a broadcast message). A retransmission is needed. |
| 187 | entirely. | 209 | |
| 188 | CEC_TX_STATUS_MAX_RETRIES: could not transmit the message after | 210 | CEC_TX_STATUS_LOW_DRIVE: |
| 189 | trying multiple times. Should only be set by the driver if it has hardware | 211 | low drive was detected on the CEC bus. This indicates that |
| 190 | support for retrying messages. If set, then the framework assumes that it | 212 | a follower detected an error on the bus and requested a |
| 191 | doesn't have to make another attempt to transmit the message since the | 213 | retransmission. |
| 192 | hardware did that already. | 214 | |
| 193 | 215 | CEC_TX_STATUS_ERROR: | |
| 194 | The *_cnt arguments are the number of error conditions that were seen. | 216 | some unspecified error occurred: this can be one of |
| 217 | the previous two if the hardware cannot differentiate or something | ||
| 218 | else entirely. | ||
| 219 | |||
| 220 | CEC_TX_STATUS_MAX_RETRIES: | ||
| 221 | could not transmit the message after trying multiple times. | ||
| 222 | Should only be set by the driver if it has hardware support for | ||
| 223 | retrying messages. If set, then the framework assumes that it | ||
| 224 | doesn't have to make another attempt to transmit the message | ||
| 225 | since the hardware did that already. | ||
| 226 | |||
| 227 | The \*_cnt arguments are the number of error conditions that were seen. | ||
| 195 | This may be 0 if no information is available. Drivers that do not support | 228 | This may be 0 if no information is available. Drivers that do not support |
| 196 | hardware retry can just set the counter corresponding to the transmit error | 229 | hardware retry can just set the counter corresponding to the transmit error |
| 197 | to 1, if the hardware does support retry then either set these counters to | 230 | to 1, if the hardware does support retry then either set these counters to |
| @@ -200,7 +233,8 @@ times, or fill in the correct values as reported by the hardware. · 2 unmodified lines | |||
| 200 | 233 | ||
| 201 | When a CEC message was received: | 234 | When a CEC message was received: |
| 202 | 235 | ||
| 203 | void cec_received_msg(struct cec_adapter *adap, struct cec_msg *msg); | 236 | .. c:function:: |
| 237 | void cec_received_msg(struct cec_adapter *adap, struct cec_msg *msg); | ||
| 204 | 238 | ||
| 205 | Speaks for itself. | 239 | Speaks for itself. |
| 206 | 240 | ||
| @@ -210,17 +244,20 @@ Implementing the High-Level CEC Adapter · 3 unmodified lines | |||
| 210 | The low-level operations drive the hardware, the high-level operations are | 244 | The low-level operations drive the hardware, the high-level operations are |
| 211 | CEC protocol driven. The following high-level callbacks are available: | 245 | CEC protocol driven. The following high-level callbacks are available: |
| 212 | 246 | ||
| 213 | struct cec_adap_ops { | 247 | .. code-block:: none |
| 214 | /* Low-level callbacks */ | ||
| 215 | ... | ||
| 216 | 248 | ||
| 217 | /* High-level CEC message callback */ | 249 | struct cec_adap_ops { |
| 218 | int (*received)(struct cec_adapter *adap, struct cec_msg *msg); | 250 | /\* Low-level callbacks \*/ |
| 219 | }; | 251 | ... |
| 252 | |||
| 253 | /\* High-level CEC message callback \*/ | ||
| 254 | int (\*received)(struct cec_adapter \*adap, struct cec_msg \*msg); | ||
| 255 | }; | ||
| 220 | 256 | ||
| 221 | The received() callback allows the driver to optionally handle a newly | 257 | The received() callback allows the driver to optionally handle a newly |
| 222 | received CEC message | 258 | received CEC message |
| 223 | 259 | ||
| 260 | .. c:function:: | ||
| 224 | int (*received)(struct cec_adapter *adap, struct cec_msg *msg); | 261 | int (*received)(struct cec_adapter *adap, struct cec_msg *msg); |
| 225 | 262 | ||
| 226 | If the driver wants to process a CEC message, then it can implement this | 263 | If the driver wants to process a CEC message, then it can implement this |
| @@ -234,13 +271,16 @@ CEC framework functions · 7 unmodified lines | |||
| 234 | 271 | ||
| 235 | CEC Adapter drivers can call the following CEC framework functions: | 272 | CEC Adapter drivers can call the following CEC framework functions: |
| 236 | 273 | ||
| 237 | int cec_transmit_msg(struct cec_adapter *adap, struct cec_msg *msg, | 274 | .. c:function:: |
| 238 | bool block); | 275 | int cec_transmit_msg(struct cec_adapter *adap, struct cec_msg *msg, |
| 276 | bool block); | ||
| 239 | 277 | ||
| 240 | Transmit a CEC message. If block is true, then wait until the message has been | 278 | Transmit a CEC message. If block is true, then wait until the message has been |
| 241 | transmitted, otherwise just queue it and return. | 279 | transmitted, otherwise just queue it and return. |
| 242 | 280 | ||
| 243 | void cec_s_phys_addr(struct cec_adapter *adap, u16 phys_addr, bool block); | 281 | .. c:function:: |
| 282 | void cec_s_phys_addr(struct cec_adapter *adap, u16 phys_addr, | ||
| 283 | bool block); | ||
| 244 | 284 | ||
| 245 | Change the physical address. This function will set adap->phys_addr and | 285 | Change the physical address. This function will set adap->phys_addr and |
| 246 | send an event if it has changed. If cec_s_log_addrs() has been called and | 286 | send an event if it has changed. If cec_s_log_addrs() has been called and |
| @@ -254,8 +294,9 @@ then the CEC adapter will be disabled. If you change a valid physical address · 7 unmodified lines | |||
| 254 | to another valid physical address, then this function will first set the | 294 | to another valid physical address, then this function will first set the |
| 255 | address to CEC_PHYS_ADDR_INVALID before enabling the new physical address. | 295 | address to CEC_PHYS_ADDR_INVALID before enabling the new physical address. |
| 256 | 296 | ||
| 257 | int cec_s_log_addrs(struct cec_adapter *adap, | 297 | .. c:function:: |
| 258 | struct cec_log_addrs *log_addrs, bool block); | 298 | int cec_s_log_addrs(struct cec_adapter *adap, |
| 299 | struct cec_log_addrs *log_addrs, bool block); | ||
| 259 | 300 | ||
| 260 | Claim the CEC logical addresses. Should never be called if CEC_CAP_LOG_ADDRS | 301 | Claim the CEC logical addresses. Should never be called if CEC_CAP_LOG_ADDRS |
| 261 | is set. If block is true, then wait until the logical addresses have been | 302 | is set. If block is true, then wait until the logical addresses have been |
| @@ -6,8 +6,6 @@ Digital TV Common functions · 5 unmodified lines | |||
| 6 | 6 | ||
| 7 | .. kernel-doc:: drivers/media/dvb-core/dvb_math.h | 7 | .. kernel-doc:: drivers/media/dvb-core/dvb_math.h |
| 8 | 8 | ||
| 9 | .. kernel-doc:: drivers/media/dvb-core/dvb_ringbuffer.h | ||
| 10 | |||
| 11 | .. kernel-doc:: drivers/media/dvb-core/dvbdev.h | 9 | .. kernel-doc:: drivers/media/dvb-core/dvbdev.h |
| 12 | 10 | ||
| 13 | 11 | ||
| @@ -18,6 +16,42 @@ Digital TV Common functions · 4 unmodified lines | |||
| 18 | .. kernel-doc:: drivers/media/dvb-core/dvbdev.h | 16 | .. kernel-doc:: drivers/media/dvb-core/dvbdev.h |
| 19 | :export: drivers/media/dvb-core/dvbdev.c | 17 | :export: drivers/media/dvb-core/dvbdev.c |
| 20 | 18 | ||
| 19 | Digital TV Ring buffer | ||
| 20 | ---------------------- | ||
| 21 | |||
| 22 | Those routines implement ring buffers used to handle digital TV data and | ||
| 23 | copy it from/to userspace. | ||
| 24 | |||
| 25 | .. note:: | ||
| 26 | |||
| 27 | 1) For performance reasons read and write routines don't check buffer sizes | ||
| 28 | and/or number of bytes free/available. This has to be done before these | ||
| 29 | routines are called. For example: | ||
| 30 | |||
| 31 | .. code-block:: c | ||
| 32 | |||
| 33 | /* write @buflen: bytes */ | ||
| 34 | free = dvb_ringbuffer_free(rbuf); | ||
| 35 | if (free >= buflen) | ||
| 36 | count = dvb_ringbuffer_write(rbuf, buffer, buflen); | ||
| 37 | else | ||
| 38 | /* do something */ | ||
| 39 | |||
| 40 | /* read min. 1000, max. @bufsize: bytes */ | ||
| 41 | avail = dvb_ringbuffer_avail(rbuf); | ||
| 42 | if (avail >= 1000) | ||
| 43 | count = dvb_ringbuffer_read(rbuf, buffer, min(avail, bufsize)); | ||
| 44 | else | ||
| 45 | /* do something */ | ||
| 46 | |||
| 47 | 2) If there is exactly one reader and one writer, there is no need | ||
| 48 | to lock read or write operations. | ||
| 49 | Two or more readers must be locked against each other. | ||
| 50 | Flushing the buffer counts as a read operation. | ||
| 51 | Resetting the buffer counts as a read and write operation. | ||
| 52 | Two or more writers must be locked against each other. | ||
| 53 | |||
| 54 | .. kernel-doc:: drivers/media/dvb-core/dvb_ringbuffer.h | ||
| 21 | 55 | ||
| 22 | 56 | ||
| 23 | Digital TV Frontend kABI | 57 | Digital TV Frontend kABI |
| @@ -121,7 +155,7 @@ triggered by a hardware interrupt, it is recommended to use the Linux · 97 unmodified lines | |||
| 121 | bottom half mechanism or start a tasklet instead of making the callback | 155 | bottom half mechanism or start a tasklet instead of making the callback |
| 122 | function call directly from a hardware interrupt. | 156 | function call directly from a hardware interrupt. |
| 123 | 157 | ||
| 124 | This mechanism is implemented by :c:func:`dmx_ts_cb()` and :cpp:func:`dmx_section_cb()` | 158 | This mechanism is implemented by :c:func:`dmx_ts_cb()` and :c:func:`dmx_section_cb()` |
| 125 | callbacks. | 159 | callbacks. |
| 126 | 160 | ||
| 127 | .. kernel-doc:: drivers/media/dvb-core/demux.h | 161 | .. kernel-doc:: drivers/media/dvb-core/demux.h |
| @@ -34,7 +34,7 @@ pad to a sink pad. · 33 unmodified lines | |||
| 34 | Media device | 34 | Media device |
| 35 | ^^^^^^^^^^^^ | 35 | ^^^^^^^^^^^^ |
| 36 | 36 | ||
| 37 | A media device is represented by a :c:type:`struct media_device <media_device>` | 37 | A media device is represented by a struct :c:type:`media_device` |
| 38 | instance, defined in ``include/media/media-device.h``. | 38 | instance, defined in ``include/media/media-device.h``. |
| 39 | Allocation of the structure is handled by the media device driver, usually by | 39 | Allocation of the structure is handled by the media device driver, usually by |
| 40 | embedding the :c:type:`media_device` instance in a larger driver-specific | 40 | embedding the :c:type:`media_device` instance in a larger driver-specific |
| @@ -47,7 +47,7 @@ and unregistered by calling :c:func:`media_device_unregister()`. · 6 unmodified lines | |||
| 47 | Entities | 47 | Entities |
| 48 | ^^^^^^^^ | 48 | ^^^^^^^^ |
| 49 | 49 | ||
| 50 | Entities are represented by a :c:type:`struct media_entity <media_entity>` | 50 | Entities are represented by a struct :c:type:`media_entity` |
| 51 | instance, defined in ``include/media/media-entity.h``. The structure is usually | 51 | instance, defined in ``include/media/media-entity.h``. The structure is usually |
| 52 | embedded into a higher-level structure, such as | 52 | embedded into a higher-level structure, such as |
| 53 | :c:type:`v4l2_subdev` or :c:type:`video_device` | 53 | :c:type:`v4l2_subdev` or :c:type:`video_device` |
| @@ -65,10 +65,10 @@ Interfaces · 11 unmodified lines | |||
| 65 | ^^^^^^^^^^ | 65 | ^^^^^^^^^^ |
| 66 | 66 | ||
| 67 | Interfaces are represented by a | 67 | Interfaces are represented by a |
| 68 | :c:type:`struct media_interface <media_interface>` instance, defined in | 68 | struct :c:type:`media_interface` instance, defined in |
| 69 | ``include/media/media-entity.h``. Currently, only one type of interface is | 69 | ``include/media/media-entity.h``. Currently, only one type of interface is |
| 70 | defined: a device node. Such interfaces are represented by a | 70 | defined: a device node. Such interfaces are represented by a |
| 71 | :c:type:`struct media_intf_devnode <media_intf_devnode>`. | 71 | struct :c:type:`media_intf_devnode`. |
| 72 | 72 | ||
| 73 | Drivers initialize and create device node interfaces by calling | 73 | Drivers initialize and create device node interfaces by calling |
| 74 | :c:func:`media_devnode_create()` | 74 | :c:func:`media_devnode_create()` |
| @@ -77,7 +77,7 @@ and remove them by calling: · 2 unmodified lines | |||
| 77 | 77 | ||
| 78 | Pads | 78 | Pads |
| 79 | ^^^^ | 79 | ^^^^ |
| 80 | Pads are represented by a :c:type:`struct media_pad <media_pad>` instance, | 80 | Pads are represented by a struct :c:type:`media_pad` instance, |
| 81 | defined in ``include/media/media-entity.h``. Each entity stores its pads in | 81 | defined in ``include/media/media-entity.h``. Each entity stores its pads in |
| 82 | a pads array managed by the entity driver. Drivers usually embed the array in | 82 | a pads array managed by the entity driver. Drivers usually embed the array in |
| 83 | a driver-specific structure. | 83 | a driver-specific structure. |
| @@ -85,8 +85,9 @@ a driver-specific structure. · 1 unmodified line | |||
| 85 | Pads are identified by their entity and their 0-based index in the pads | 85 | Pads are identified by their entity and their 0-based index in the pads |
| 86 | array. | 86 | array. |
| 87 | 87 | ||
| 88 | Both information are stored in the :c:type:`struct media_pad`, making the | 88 | Both information are stored in the struct :c:type:`media_pad`, |
| 89 | :c:type:`media_pad` pointer the canonical way to store and pass link references. | 89 | making the struct :c:type:`media_pad` pointer the canonical way |
| 90 | to store and pass link references. | ||
| 90 | 91 | ||
| 91 | Pads have flags that describe the pad capabilities and state. | 92 | Pads have flags that describe the pad capabilities and state. |
| 92 | 93 | ||
| @@ -101,7 +102,7 @@ Pads have flags that describe the pad capabilities and state. · 8 unmodified lines | |||
| 101 | Links | 102 | Links |
| 102 | ^^^^^ | 103 | ^^^^^ |
| 103 | 104 | ||
| 104 | Links are represented by a :c:type:`struct media_link <media_link>` instance, | 105 | Links are represented by a struct :c:type:`media_link` instance, |
| 105 | defined in ``include/media/media-entity.h``. There are two types of links: | 106 | defined in ``include/media/media-entity.h``. There are two types of links: |
| 106 | 107 | ||
| 107 | **1. pad to pad links**: | 108 | **1. pad to pad links**: |
| @@ -184,7 +185,7 @@ Use count and power handling · 76 unmodified lines | |||
| 184 | 185 | ||
| 185 | Due to the wide differences between drivers regarding power management | 186 | Due to the wide differences between drivers regarding power management |
| 186 | needs, the media controller does not implement power management. However, | 187 | needs, the media controller does not implement power management. However, |
| 187 | the :c:type:`struct media_entity <media_entity>` includes a ``use_count`` | 188 | the struct :c:type:`media_entity` includes a ``use_count`` |
| 188 | field that media drivers | 189 | field that media drivers |
| 189 | can use to track the number of users of every entity for power management | 190 | can use to track the number of users of every entity for power management |
| 190 | needs. | 191 | needs. |
| @@ -210,11 +211,11 @@ prevent link states from being modified during streaming by calling · 19 unmodified lines | |||
| 210 | The function will mark all entities connected to the given entity through | 211 | The function will mark all entities connected to the given entity through |
| 211 | enabled links, either directly or indirectly, as streaming. | 212 | enabled links, either directly or indirectly, as streaming. |
| 212 | 213 | ||
| 213 | The :c:type:`struct media_pipeline <media_pipeline>` instance pointed to by | 214 | The struct :c:type:`media_pipeline` instance pointed to by |
| 214 | the pipe argument will be stored in every entity in the pipeline. | 215 | the pipe argument will be stored in every entity in the pipeline. |
| 215 | Drivers should embed the :c:type:`struct media_pipeline <media_pipeline>` | 216 | Drivers should embed the struct :c:type:`media_pipeline` |
| 216 | in higher-level pipeline structures and can then access the | 217 | in higher-level pipeline structures and can then access the |
| 217 | pipeline through the :c:type:`struct media_entity <media_entity>` | 218 | pipeline through the struct :c:type:`media_entity` |
| 218 | pipe field. | 219 | pipe field. |
| 219 | 220 | ||
| 220 | Calls to :c:func:`media_entity_pipeline_start()` can be nested. | 221 | Calls to :c:func:`media_entity_pipeline_start()` can be nested. |
| @@ -56,7 +56,7 @@ You should also set these fields of :c:type:`video_device`: · 55 unmodified lines | |||
| 56 | :c:type:`video_device`->vfl_dir fields are used to disable ops that do not | 56 | :c:type:`video_device`->vfl_dir fields are used to disable ops that do not |
| 57 | match the type/dir combination. E.g. VBI ops are disabled for non-VBI nodes, | 57 | match the type/dir combination. E.g. VBI ops are disabled for non-VBI nodes, |
| 58 | and output ops are disabled for a capture device. This makes it possible to | 58 | and output ops are disabled for a capture device. This makes it possible to |
| 59 | provide just one :c:type:`v4l2_ioctl_ops struct` for both vbi and | 59 | provide just one :c:type:`v4l2_ioctl_ops` struct for both vbi and |
| 60 | video nodes. | 60 | video nodes. |
| 61 | 61 | ||
| 62 | - :c:type:`video_device`->lock: leave to ``NULL`` if you want to do all the | 62 | - :c:type:`video_device`->lock: leave to ``NULL`` if you want to do all the |
| @@ -166,14 +166,14 @@ something. · 103 unmodified lines | |||
| 166 | In the case of :ref:`videobuf2 <vb2_framework>` you will need to implement the | 166 | In the case of :ref:`videobuf2 <vb2_framework>` you will need to implement the |
| 167 | ``wait_prepare()`` and ``wait_finish()`` callbacks to unlock/lock if applicable. | 167 | ``wait_prepare()`` and ``wait_finish()`` callbacks to unlock/lock if applicable. |
| 168 | If you use the ``queue->lock`` pointer, then you can use the helper functions | 168 | If you use the ``queue->lock`` pointer, then you can use the helper functions |
| 169 | :c:func:`vb2_ops_wait_prepare` and :cpp:func:`vb2_ops_wait_finish`. | 169 | :c:func:`vb2_ops_wait_prepare` and :c:func:`vb2_ops_wait_finish`. |
| 170 | 170 | ||
| 171 | The implementation of a hotplug disconnect should also take the lock from | 171 | The implementation of a hotplug disconnect should also take the lock from |
| 172 | :c:type:`video_device` before calling v4l2_device_disconnect. If you are also | 172 | :c:type:`video_device` before calling v4l2_device_disconnect. If you are also |
| 173 | using :c:type:`video_device`->queue->lock, then you have to first lock | 173 | using :c:type:`video_device`->queue->lock, then you have to first lock |
| 174 | :c:type:`video_device`->queue->lock followed by :c:type:`video_device`->lock. | 174 | :c:type:`video_device`->queue->lock followed by :c:type:`video_device`->lock. |
| 175 | That way you can be sure no ioctl is running when you call | 175 | That way you can be sure no ioctl is running when you call |
| 176 | :c:type:`v4l2_device_disconnect`. | 176 | :c:func:`v4l2_device_disconnect`. |
| 177 | 177 | ||
| 178 | Video device registration | 178 | Video device registration |
| 179 | ------------------------- | 179 | ------------------------- |
| @@ -200,6 +200,7 @@ types exist: · 20 unmodified lines | |||
| 200 | - ``VFL_TYPE_VBI``: ``/dev/vbiX`` for vertical blank data (i.e. closed captions, teletext) | 200 | - ``VFL_TYPE_VBI``: ``/dev/vbiX`` for vertical blank data (i.e. closed captions, teletext) |
| 201 | - ``VFL_TYPE_RADIO``: ``/dev/radioX`` for radio tuners | 201 | - ``VFL_TYPE_RADIO``: ``/dev/radioX`` for radio tuners |
| 202 | - ``VFL_TYPE_SDR``: ``/dev/swradioX`` for Software Defined Radio tuners | 202 | - ``VFL_TYPE_SDR``: ``/dev/swradioX`` for Software Defined Radio tuners |
| 203 | - ``VFL_TYPE_TOUCH``: ``/dev/v4l-touchX`` for touch sensors | ||
| 203 | 204 | ||
| 204 | The last argument gives you a certain amount of control over the device | 205 | The last argument gives you a certain amount of control over the device |
| 205 | device node number used (i.e. the X in ``videoX``). Normally you will pass -1 | 206 | device node number used (i.e. the X in ``videoX``). Normally you will pass -1 |
| @@ -262,6 +263,7 @@ file operations. · 56 unmodified lines | |||
| 262 | 263 | ||
| 263 | It is a bitmask and the following bits can be set: | 264 | It is a bitmask and the following bits can be set: |
| 264 | 265 | ||
| 266 | .. tabularcolumns:: |p{5ex}|L| | ||
| 265 | 267 | ||
| 266 | ===== ================================================================ | 268 | ===== ================================================================ |
| 267 | Mask Description | 269 | Mask Description |
| @@ -334,7 +336,7 @@ And this function: · 66 unmodified lines | |||
| 334 | 336 | ||
| 335 | returns the video_device belonging to the file struct. | 337 | returns the video_device belonging to the file struct. |
| 336 | 338 | ||
| 337 | The :c:func:`video_devdata` function combines :cpp:func:`video_get_drvdata` | 339 | The :c:func:`video_devdata` function combines :c:func:`video_get_drvdata` |
| 338 | with :c:func:`video_devdata`: | 340 | with :c:func:`video_devdata`: |
| 339 | 341 | ||
| 340 | :c:func:`video_drvdata <video_drvdata>` | 342 | :c:func:`video_drvdata <video_drvdata>` |
| @@ -40,7 +40,7 @@ A good example of these ``replace``/``merge`` callbacks is in v4l2-event.c: · 39 unmodified lines | |||
| 40 | In order to queue events to video device, drivers should call: | 40 | In order to queue events to video device, drivers should call: |
| 41 | 41 | ||
| 42 | :c:func:`v4l2_event_queue <v4l2_event_queue>` | 42 | :c:func:`v4l2_event_queue <v4l2_event_queue>` |
| 43 | (:c:type:`vdev <video_device>`, :ref:`ev <v4l2-event>`) | 43 | (:c:type:`vdev <video_device>`, :c:type:`ev <v4l2_event>`) |
| 44 | 44 | ||
| 45 | The driver's only responsibility is to fill in the type and the data fields. | 45 | The driver's only responsibility is to fill in the type and the data fields. |
| 46 | The other fields will be filled in by V4L2. | 46 | The other fields will be filled in by V4L2. |
| @@ -51,7 +51,7 @@ Event subscription · 4 unmodified lines | |||
| 51 | Subscribing to an event is via: | 51 | Subscribing to an event is via: |
| 52 | 52 | ||
| 53 | :c:func:`v4l2_event_subscribe <v4l2_event_subscribe>` | 53 | :c:func:`v4l2_event_subscribe <v4l2_event_subscribe>` |
| 54 | (:c:type:`fh <v4l2_fh>`, :ref:`sub <v4l2-event-subscription>` , | 54 | (:c:type:`fh <v4l2_fh>`, :c:type:`sub <v4l2_event_subscription>` , |
| 55 | elems, :c:type:`ops <v4l2_subscribed_event_ops>`) | 55 | elems, :c:type:`ops <v4l2_subscribed_event_ops>`) |
| 56 | 56 | ||
| 57 | 57 | ||
| @@ -86,7 +86,7 @@ Unsubscribing an event · 28 unmodified lines | |||
| 86 | Unsubscribing to an event is via: | 86 | Unsubscribing to an event is via: |
| 87 | 87 | ||
| 88 | :c:func:`v4l2_event_unsubscribe <v4l2_event_unsubscribe>` | 88 | :c:func:`v4l2_event_unsubscribe <v4l2_event_unsubscribe>` |
| 89 | (:c:type:`fh <v4l2_fh>`, :ref:`sub <v4l2-event-subscription>`) | 89 | (:c:type:`fh <v4l2_fh>`, :c:type:`sub <v4l2_event_subscription>`) |
| 90 | 90 | ||
| 91 | This function is used to implement :c:type:`video_device`-> | 91 | This function is used to implement :c:type:`video_device`-> |
| 92 | :c:type:`ioctl_ops <v4l2_ioctl_ops>`-> ``vidioc_unsubscribe_event``. | 92 | :c:type:`ioctl_ops <v4l2_ioctl_ops>`-> ``vidioc_unsubscribe_event``. |
| @@ -21,8 +21,8 @@ function by the driver. · 20 unmodified lines | |||
| 21 | In many cases the struct :c:type:`v4l2_fh` will be embedded in a larger | 21 | In many cases the struct :c:type:`v4l2_fh` will be embedded in a larger |
| 22 | structure. In that case you should call: | 22 | structure. In that case you should call: |
| 23 | 23 | ||
| 24 | #) :c:func:`v4l2_fh_init` and :cpp:func:`v4l2_fh_add` in ``open()`` | 24 | #) :c:func:`v4l2_fh_init` and :c:func:`v4l2_fh_add` in ``open()`` |
| 25 | #) :c:func:`v4l2_fh_del` and :cpp:func:`v4l2_fh_exit` in ``release()`` | 25 | #) :c:func:`v4l2_fh_del` and :c:func:`v4l2_fh_exit` in ``release()`` |
| 26 | 26 | ||
| 27 | Drivers can extract their own file handle structure by using the container_of | 27 | Drivers can extract their own file handle structure by using the container_of |
| 28 | macro. | 28 | macro. |
| @@ -27,7 +27,7 @@ methods. · 26 unmodified lines | |||
| 27 | Bridges might also need to store per-subdev private data, such as a pointer to | 27 | Bridges might also need to store per-subdev private data, such as a pointer to |
| 28 | bridge-specific per-subdev private data. The :c:type:`v4l2_subdev` structure | 28 | bridge-specific per-subdev private data. The :c:type:`v4l2_subdev` structure |
| 29 | provides host private data for that purpose that can be accessed with | 29 | provides host private data for that purpose that can be accessed with |
| 30 | :c:func:`v4l2_get_subdev_hostdata` and :cpp:func:`v4l2_set_subdev_hostdata`. | 30 | :c:func:`v4l2_get_subdev_hostdata` and :c:func:`v4l2_set_subdev_hostdata`. |
| 31 | 31 | ||
| 32 | From the bridge driver perspective, you load the sub-device module and somehow | 32 | From the bridge driver perspective, you load the sub-device module and somehow |
| 33 | obtain the :c:type:`v4l2_subdev` pointer. For i2c devices this is easy: you call | 33 | obtain the :c:type:`v4l2_subdev` pointer. For i2c devices this is easy: you call |
| @@ -412,19 +412,7 @@ later date. It differs between i2c drivers and as such can be confusing. · 378 unmodified lines | |||
| 412 | To see which chip variants are supported you can look in the i2c driver code | 412 | To see which chip variants are supported you can look in the i2c driver code |
| 413 | for the i2c_device_id table. This lists all the possibilities. | 413 | for the i2c_device_id table. This lists all the possibilities. |
| 414 | 414 | ||
| 415 | There are two more helper functions: | 415 | There are one more helper function: |
| 416 | |||
| 417 | :c:func:`v4l2_i2c_new_subdev_cfg`: this function adds new irq and | ||
| 418 | platform_data arguments and has both 'addr' and 'probed_addrs' arguments: | ||
| 419 | if addr is not 0 then that will be used (non-probing variant), otherwise the | ||
| 420 | probed_addrs are probed. | ||
| 421 | |||
| 422 | For example: this will probe for address 0x10: | ||
| 423 | |||
| 424 | .. code-block:: c | ||
| 425 | |||
| 426 | struct v4l2_subdev *sd = v4l2_i2c_new_subdev_cfg(v4l2_dev, adapter, | ||
| 427 | "module_foo", "chipid", 0, NULL, 0, I2C_ADDRS(0x10)); | ||
| 428 | 416 | ||
| 429 | :c:func:`v4l2_i2c_new_subdev_board` uses an :c:type:`i2c_board_info` struct | 417 | :c:func:`v4l2_i2c_new_subdev_board` uses an :c:type:`i2c_board_info` struct |
| 430 | which is passed to the i2c driver and replaces the irq, platform_data and addr | 418 | which is passed to the i2c driver and replaces the irq, platform_data and addr |
| @@ -433,9 +421,10 @@ arguments. · 2 unmodified lines | |||
| 433 | If the subdev supports the s_config core ops, then that op is called with | 421 | If the subdev supports the s_config core ops, then that op is called with |
| 434 | the irq and platform_data arguments after the subdev was setup. | 422 | the irq and platform_data arguments after the subdev was setup. |
| 435 | 423 | ||
| 436 | The older :c:func:`v4l2_i2c_new_subdev` and | 424 | The :c:func:`v4l2_i2c_new_subdev` function will call |
| 437 | :c:func:`v4l2_i2c_new_probed_subdev` functions will call ``s_config`` as | 425 | :c:func:`v4l2_i2c_new_subdev_board`, internally filling a |
| 438 | well, but with irq set to 0 and platform_data set to ``NULL``. | 426 | :c:type:`i2c_board_info` structure using the ``client_type`` and the |
| 427 | ``addr`` to fill it. | ||
| 439 | 428 | ||
| 440 | V4L2 sub-device functions and data structures | 429 | V4L2 sub-device functions and data structures |
| 441 | --------------------------------------------- | 430 | --------------------------------------------- |
Binary file not shown.
| @@ -32,3 +32,4 @@ For more details see the file COPYING in the source distribution of Linux. · 31 unmodified lines | |||
| 32 | kapi/dtv-core | 32 | kapi/dtv-core |
| 33 | kapi/rc-core | 33 | kapi/rc-core |
| 34 | kapi/mc-core | 34 | kapi/mc-core |
| 35 | kapi/cec-core | ||
| @@ -7,5 +7,5 @@ ignore ioctl __NET_GET_IF_OLD · 6 unmodified lines | |||
| 7 | ignore struct __dvb_net_if_old | 7 | ignore struct __dvb_net_if_old |
| 8 | 8 | ||
| 9 | # Macros used at struct dvb_net_if | 9 | # Macros used at struct dvb_net_if |
| 10 | replace define DVB_NET_FEEDTYPE_MPE dvb-net-if | 10 | replace define DVB_NET_FEEDTYPE_MPE :c:type:`dvb_net_if` |
| 11 | replace define DVB_NET_FEEDTYPE_ULE dvb-net-if | 11 | replace define DVB_NET_FEEDTYPE_ULE :c:type:`dvb_net_if` |
| @@ -20,19 +20,22 @@ Synopsis · 19 unmodified lines | |||
| 20 | #include <unistd.h> | 20 | #include <unistd.h> |
| 21 | 21 | ||
| 22 | 22 | ||
| 23 | .. cpp:function:: int close( int fd ) | 23 | .. c:function:: int close( int fd ) |
| 24 | :name: cec-close | ||
| 24 | 25 | ||
| 25 | Arguments | 26 | Arguments |
| 26 | ========= | 27 | ========= |
| 27 | 28 | ||
| 28 | ``fd`` | 29 | ``fd`` |
| 29 | File descriptor returned by :ref:`open() <func-open>`. | 30 | File descriptor returned by :c:func:`open() <cec-open>`. |
| 30 | 31 | ||
| 31 | 32 | ||
| 32 | Description | 33 | Description |
| 33 | =========== | 34 | =========== |
| 34 | 35 | ||
| 35 | .. note:: This documents the proposed CEC API. This API is not yet finalized | 36 | .. note:: |
| 37 | |||
| 38 | This documents the proposed CEC API. This API is not yet finalized | ||
| 36 | and is currently only available as a staging kernel module. | 39 | and is currently only available as a staging kernel module. |
| 37 | 40 | ||
| 38 | Closes the cec device. Resources associated with the file descriptor are | 41 | Closes the cec device. Resources associated with the file descriptor are |
| @@ -19,17 +19,18 @@ Synopsis · 18 unmodified lines | |||
| 19 | #include <sys/ioctl.h> | 19 | #include <sys/ioctl.h> |
| 20 | 20 | ||
| 21 | 21 | ||
| 22 | .. cpp:function:: int ioctl( int fd, int request, void *argp ) | 22 | .. c:function:: int ioctl( int fd, int request, void *argp ) |
| 23 | :name: cec-ioctl | ||
| 23 | 24 | ||
| 24 | Arguments | 25 | Arguments |
| 25 | ========= | 26 | ========= |
| 26 | 27 | ||
| 27 | ``fd`` | 28 | ``fd`` |
| 28 | File descriptor returned by :ref:`open() <func-open>`. | 29 | File descriptor returned by :c:func:`open() <cec-open>`. |
| 29 | 30 | ||
| 30 | ``request`` | 31 | ``request`` |
| 31 | CEC ioctl request code as defined in the cec.h header file, for | 32 | CEC ioctl request code as defined in the cec.h header file, for |
| 32 | example :ref:`CEC_ADAP_G_CAPS`. | 33 | example :c:func:`CEC_ADAP_G_CAPS`. |
| 33 | 34 | ||
| 34 | ``argp`` | 35 | ``argp`` |
| 35 | Pointer to a request-specific structure. | 36 | Pointer to a request-specific structure. |
| @@ -38,7 +39,9 @@ Arguments · 2 unmodified lines | |||
| 38 | Description | 39 | Description |
| 39 | =========== | 40 | =========== |
| 40 | 41 | ||
| 41 | .. note:: This documents the proposed CEC API. This API is not yet finalized | 42 | .. note:: |
| 43 | |||
| 44 | This documents the proposed CEC API. This API is not yet finalized | ||
| 42 | and is currently only available as a staging kernel module. | 45 | and is currently only available as a staging kernel module. |
| 43 | 46 | ||
| 44 | The :c:func:`ioctl()` function manipulates cec device parameters. The | 47 | The :c:func:`ioctl()` function manipulates cec device parameters. The |
| @@ -19,7 +19,8 @@ Synopsis · 18 unmodified lines | |||
| 19 | #include <fcntl.h> | 19 | #include <fcntl.h> |
| 20 | 20 | ||
| 21 | 21 | ||
| 22 | .. cpp:function:: int open( const char *device_name, int flags ) | 22 | .. c:function:: int open( const char *device_name, int flags ) |
| 23 | :name: cec-open | ||
| 23 | 24 | ||
| 24 | 25 | ||
| 25 | Arguments | 26 | Arguments |
| @@ -45,7 +46,9 @@ Arguments · 19 unmodified lines | |||
| 45 | Description | 46 | Description |
| 46 | =========== | 47 | =========== |
| 47 | 48 | ||
| 48 | .. note:: This documents the proposed CEC API. This API is not yet finalized | 49 | .. note:: |
| 50 | |||
| 51 | This documents the proposed CEC API. This API is not yet finalized | ||
| 49 | and is currently only available as a staging kernel module. | 52 | and is currently only available as a staging kernel module. |
| 50 | 53 | ||
| 51 | To open a cec device applications call :c:func:`open()` with the | 54 | To open a cec device applications call :c:func:`open()` with the |
| @@ -20,16 +20,28 @@ Synopsis · 19 unmodified lines | |||
| 20 | #include <sys/poll.h> | 20 | #include <sys/poll.h> |
| 21 | 21 | ||
| 22 | 22 | ||
| 23 | .. cpp:function:: int poll( struct pollfd *ufds, unsigned int nfds, int timeout ) | 23 | .. c:function:: int poll( struct pollfd *ufds, unsigned int nfds, int timeout ) |
| 24 | :name: cec-poll | ||
| 24 | 25 | ||
| 25 | Arguments | 26 | Arguments |
| 26 | ========= | 27 | ========= |
| 27 | 28 | ||
| 29 | ``ufds`` | ||
| 30 | List of FD events to be watched | ||
| 31 | |||
| 32 | ``nfds`` | ||
| 33 | Number of FD efents at the \*ufds array | ||
| 34 | |||
| 35 | ``timeout`` | ||
| 36 | Timeout to wait for events | ||
| 37 | |||
| 28 | 38 | ||
| 29 | Description | 39 | Description |
| 30 | =========== | 40 | =========== |
| 31 | 41 | ||
| 32 | .. note:: This documents the proposed CEC API. This API is not yet finalized | 42 | .. note:: |
| 43 | |||
| 44 | This documents the proposed CEC API. This API is not yet finalized | ||
| 33 | and is currently only available as a staging kernel module. | 45 | and is currently only available as a staging kernel module. |
| 34 | 46 | ||
| 35 | With the :c:func:`poll()` function applications can wait for CEC | 47 | With the :c:func:`poll()` function applications can wait for CEC |
| @@ -37,7 +49,7 @@ events. · 1 unmodified line | |||
| 37 | 49 | ||
| 38 | On success :c:func:`poll()` returns the number of file descriptors | 50 | On success :c:func:`poll()` returns the number of file descriptors |
| 39 | that have been selected (that is, file descriptors for which the | 51 | that have been selected (that is, file descriptors for which the |
| 40 | ``revents`` field of the respective :c:type:`struct pollfd` structure | 52 | ``revents`` field of the respective struct :c:type:`pollfd` |
| 41 | is non-zero). CEC devices set the ``POLLIN`` and ``POLLRDNORM`` flags in | 53 | is non-zero). CEC devices set the ``POLLIN`` and ``POLLRDNORM`` flags in |
| 42 | the ``revents`` field if there are messages in the receive queue. If the | 54 | the ``revents`` field if there are messages in the receive queue. If the |
| 43 | transmit queue has room for new messages, the ``POLLOUT`` and | 55 | transmit queue has room for new messages, the ``POLLOUT`` and |
| @@ -3,7 +3,9 @@ · 2 unmodified lines | |||
| 3 | Introduction | 3 | Introduction |
| 4 | ============ | 4 | ============ |
| 5 | 5 | ||
| 6 | .. note:: This documents the proposed CEC API. This API is not yet finalized | 6 | .. note:: |
| 7 | |||
| 8 | This documents the proposed CEC API. This API is not yet finalized | ||
| 7 | and is currently only available as a staging kernel module. | 9 | and is currently only available as a staging kernel module. |
| 8 | 10 | ||
| 9 | HDMI connectors provide a single pin for use by the Consumer Electronics | 11 | HDMI connectors provide a single pin for use by the Consumer Electronics |
| @@ -14,7 +14,8 @@ CEC_ADAP_G_CAPS - Query device capabilities · 13 unmodified lines | |||
| 14 | Synopsis | 14 | Synopsis |
| 15 | ======== | 15 | ======== |
| 16 | 16 | ||
| 17 | .. cpp:function:: int ioctl( int fd, int request, struct cec_caps *argp ) | 17 | .. c:function:: int ioctl( int fd, CEC_ADAP_G_CAPS, struct cec_caps *argp ) |
| 18 | :name: CEC_ADAP_G_CAPS | ||
| 18 | 19 | ||
| 19 | Arguments | 20 | Arguments |
| 20 | ========= | 21 | ========= |
| @@ -22,25 +23,25 @@ Arguments · 1 unmodified line | |||
| 22 | ``fd`` | 23 | ``fd`` |
| 23 | File descriptor returned by :ref:`open() <cec-func-open>`. | 24 | File descriptor returned by :ref:`open() <cec-func-open>`. |
| 24 | 25 | ||
| 25 | ``request`` | ||
| 26 | CEC_ADAP_G_CAPS | ||
| 27 | |||
| 28 | ``argp`` | 26 | ``argp`` |
| 29 | 27 | ||
| 30 | 28 | ||
| 31 | Description | 29 | Description |
| 32 | =========== | 30 | =========== |
| 33 | 31 | ||
| 34 | .. note:: This documents the proposed CEC API. This API is not yet finalized | 32 | .. note:: |
| 33 | |||
| 34 | This documents the proposed CEC API. This API is not yet finalized | ||
| 35 | and is currently only available as a staging kernel module. | 35 | and is currently only available as a staging kernel module. |
| 36 | 36 | ||
| 37 | All cec devices must support :ref:`ioctl CEC_ADAP_G_CAPS <CEC_ADAP_G_CAPS>`. To query | 37 | All cec devices must support :ref:`ioctl CEC_ADAP_G_CAPS <CEC_ADAP_G_CAPS>`. To query |
| 38 | device information, applications call the ioctl with a pointer to a | 38 | device information, applications call the ioctl with a pointer to a |
| 39 | struct :ref:`cec_caps <cec-caps>`. The driver fills the structure and | 39 | struct :c:type:`cec_caps`. The driver fills the structure and |
| 40 | returns the information to the application. The ioctl never fails. | 40 | returns the information to the application. The ioctl never fails. |
| 41 | 41 | ||
| 42 | .. tabularcolumns:: |p{1.2cm}|p{2.5cm}|p{13.8cm}| | ||
| 42 | 43 | ||
| 43 | .. _cec-caps: | 44 | .. c:type:: cec_caps |
| 44 | 45 | ||
| 45 | .. flat-table:: struct cec_caps | 46 | .. flat-table:: struct cec_caps |
| 46 | :header-rows: 0 | 47 | :header-rows: 0 |
| @@ -84,6 +85,7 @@ returns the information to the application. The ioctl never fails. · 37 unmodified lines | |||
| 84 | macro. | 85 | macro. |
| 85 | 86 | ||
| 86 | 87 | ||
| 88 | .. tabularcolumns:: |p{4.4cm}|p{2.5cm}|p{10.6cm}| | ||
| 87 | 89 | ||
| 88 | .. _cec-capabilities: | 90 | .. _cec-capabilities: |
| 89 | 91 | ||
| @@ -17,33 +17,35 @@ CEC_ADAP_G_LOG_ADDRS, CEC_ADAP_S_LOG_ADDRS - Get or set the logical addresses · 16 unmodified lines | |||
| 17 | Synopsis | 17 | Synopsis |
| 18 | ======== | 18 | ======== |
| 19 | 19 | ||
| 20 | .. cpp:function:: int ioctl( int fd, int request, struct cec_log_addrs *argp ) | 20 | .. c:function:: int ioctl( int fd, CEC_ADAP_G_LOG_ADDRS, struct cec_log_addrs *argp ) |
| 21 | :name: CEC_ADAP_G_LOG_ADDRS | ||
| 21 | 22 | ||
| 23 | .. c:function:: int ioctl( int fd, CEC_ADAP_S_LOG_ADDRS, struct cec_log_addrs *argp ) | ||
| 24 | :name: CEC_ADAP_S_LOG_ADDRS | ||
| 22 | 25 | ||
| 23 | Arguments | 26 | Arguments |
| 24 | ========= | 27 | ========= |
| 25 | 28 | ||
| 26 | ``fd`` | 29 | ``fd`` |
| 27 | File descriptor returned by :ref:`open() <cec-func-open>`. | 30 | File descriptor returned by :c:func:`open() <cec-open>`. |
| 28 | |||
| 29 | ``request`` | ||
| 30 | CEC_ADAP_G_LOG_ADDRS, CEC_ADAP_S_LOG_ADDRS | ||
| 31 | 31 | ||
| 32 | ``argp`` | 32 | ``argp`` |
| 33 | 33 | Pointer to struct :c:type:`cec_log_addrs`. | |
| 34 | 34 | ||
| 35 | Description | 35 | Description |
| 36 | =========== | 36 | =========== |
| 37 | 37 | ||
| 38 | .. note:: This documents the proposed CEC API. This API is not yet finalized | 38 | .. note:: |
| 39 | |||
| 40 | This documents the proposed CEC API. This API is not yet finalized | ||
| 39 | and is currently only available as a staging kernel module. | 41 | and is currently only available as a staging kernel module. |
| 40 | 42 | ||
| 41 | To query the current CEC logical addresses, applications call | 43 | To query the current CEC logical addresses, applications call |
| 42 | :ref:`ioctl CEC_ADAP_G_LOG_ADDRS <CEC_ADAP_G_LOG_ADDRS>` with a pointer to a | 44 | :ref:`ioctl CEC_ADAP_G_LOG_ADDRS <CEC_ADAP_G_LOG_ADDRS>` with a pointer to a |
| 43 | :c:type:`struct cec_log_addrs` where the driver stores the logical addresses. | 45 | struct :c:type:`cec_log_addrs` where the driver stores the logical addresses. |
| 44 | 46 | ||
| 45 | To set new logical addresses, applications fill in | 47 | To set new logical addresses, applications fill in |
| 46 | :c:type:`struct cec_log_addrs` and call :ref:`ioctl CEC_ADAP_S_LOG_ADDRS <CEC_ADAP_S_LOG_ADDRS>` | 48 | struct :c:type:`cec_log_addrs` and call :ref:`ioctl CEC_ADAP_S_LOG_ADDRS <CEC_ADAP_S_LOG_ADDRS>` |
| 47 | with a pointer to this struct. The :ref:`ioctl CEC_ADAP_S_LOG_ADDRS <CEC_ADAP_S_LOG_ADDRS>` | 49 | with a pointer to this struct. The :ref:`ioctl CEC_ADAP_S_LOG_ADDRS <CEC_ADAP_S_LOG_ADDRS>` |
| 48 | is only available if ``CEC_CAP_LOG_ADDRS`` is set (the ``ENOTTY`` error code is | 50 | is only available if ``CEC_CAP_LOG_ADDRS`` is set (the ``ENOTTY`` error code is |
| 49 | returned otherwise). The :ref:`ioctl CEC_ADAP_S_LOG_ADDRS <CEC_ADAP_S_LOG_ADDRS>` | 51 | returned otherwise). The :ref:`ioctl CEC_ADAP_S_LOG_ADDRS <CEC_ADAP_S_LOG_ADDRS>` |
| @@ -64,8 +66,11 @@ logical addresses are claimed or cleared. · 14 unmodified lines | |||
| 64 | Attempting to call :ref:`ioctl CEC_ADAP_S_LOG_ADDRS <CEC_ADAP_S_LOG_ADDRS>` when | 66 | Attempting to call :ref:`ioctl CEC_ADAP_S_LOG_ADDRS <CEC_ADAP_S_LOG_ADDRS>` when |
| 65 | logical address types are already defined will return with error ``EBUSY``. | 67 | logical address types are already defined will return with error ``EBUSY``. |
| 66 | 68 | ||
| 69 | .. c:type:: cec_log_addrs | ||
| 67 | 70 | ||
| 68 | .. _cec-log-addrs: | 71 | .. tabularcolumns:: |p{1.0cm}|p{7.5cm}|p{8.0cm}| |
| 72 | |||
| 73 | .. cssclass:: longtable | ||
| 69 | 74 | ||
| 70 | .. flat-table:: struct cec_log_addrs | 75 | .. flat-table:: struct cec_log_addrs |
| 71 | :header-rows: 0 | 76 | :header-rows: 0 |
| @@ -220,6 +225,8 @@ logical address types are already defined will return with error ``EBUSY``. · 148 unmodified lines | |||
| 220 | fallback to the Unregistered logical address. Note that if the Unregistered | 225 | fallback to the Unregistered logical address. Note that if the Unregistered |
| 221 | logical address was explicitly requested, then this flag has no effect. | 226 | logical address was explicitly requested, then this flag has no effect. |
| 222 | 227 | ||
| 228 | .. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}| | ||
| 229 | |||
| 223 | .. _cec-versions: | 230 | .. _cec-versions: |
| 224 | 231 | ||
| 225 | .. flat-table:: CEC Versions | 232 | .. flat-table:: CEC Versions |
| @@ -253,6 +260,7 @@ logical address types are already defined will return with error ``EBUSY``. · 27 unmodified lines | |||
| 253 | - CEC version according to the HDMI 2.0 standard. | 260 | - CEC version according to the HDMI 2.0 standard. |
| 254 | 261 | ||
| 255 | 262 | ||
| 263 | .. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}| | ||
| 256 | 264 | ||
| 257 | .. _cec-prim-dev-types: | 265 | .. _cec-prim-dev-types: |
| 258 | 266 | ||
| @@ -319,6 +327,7 @@ logical address types are already defined will return with error ``EBUSY``. · 60 unmodified lines | |||
| 319 | - Use for a video processor device. | 327 | - Use for a video processor device. |
| 320 | 328 | ||
| 321 | 329 | ||
| 330 | .. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}| | ||
| 322 | 331 | ||
| 323 | .. _cec-log-addr-types: | 332 | .. _cec-log-addr-types: |
| 324 | 333 | ||
| @@ -388,6 +397,8 @@ logical address types are already defined will return with error ``EBUSY``. · 63 unmodified lines | |||
| 388 | 397 | ||
| 389 | 398 | ||
| 390 | 399 | ||
| 400 | .. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}| | ||
| 401 | |||
| 391 | .. _cec-all-dev-types-flags: | 402 | .. _cec-all-dev-types-flags: |
| 392 | 403 | ||
| 393 | .. flat-table:: CEC All Device Types Flags | 404 | .. flat-table:: CEC All Device Types Flags |
| @@ -17,24 +17,27 @@ CEC_ADAP_G_PHYS_ADDR, CEC_ADAP_S_PHYS_ADDR - Get or set the physical address · 16 unmodified lines | |||
| 17 | Synopsis | 17 | Synopsis |
| 18 | ======== | 18 | ======== |
| 19 | 19 | ||
| 20 | .. cpp:function:: int ioctl( int fd, int request, __u16 *argp ) | 20 | .. c:function:: int ioctl( int fd, CEC_ADAP_G_PHYS_ADDR, __u16 *argp ) |
| 21 | :name: CEC_ADAP_G_PHYS_ADDR | ||
| 22 | |||
| 23 | .. c:function:: int ioctl( int fd, CEC_ADAP_S_PHYS_ADDR, __u16 *argp ) | ||
| 24 | :name: CEC_ADAP_S_PHYS_ADDR | ||
| 21 | 25 | ||
| 22 | Arguments | 26 | Arguments |
| 23 | ========= | 27 | ========= |
| 24 | 28 | ||
| 25 | ``fd`` | 29 | ``fd`` |
| 26 | File descriptor returned by :ref:`open() <cec-func-open>`. | 30 | File descriptor returned by :c:func:`open() <cec-open>`. |
| 27 | |||
| 28 | ``request`` | ||
| 29 | CEC_ADAP_G_PHYS_ADDR, CEC_ADAP_S_PHYS_ADDR | ||
| 30 | 31 | ||
| 31 | ``argp`` | 32 | ``argp`` |
| 32 | 33 | Pointer to the CEC address. | |
| 33 | 34 | ||
| 34 | Description | 35 | Description |
| 35 | =========== | 36 | =========== |
| 36 | 37 | ||
| 37 | .. note:: This documents the proposed CEC API. This API is not yet finalized | 38 | .. note:: |
| 39 | |||
| 40 | This documents the proposed CEC API. This API is not yet finalized | ||
| 38 | and is currently only available as a staging kernel module. | 41 | and is currently only available as a staging kernel module. |
| 39 | 42 | ||
| 40 | To query the current physical address applications call | 43 | To query the current physical address applications call |
| @@ -15,8 +15,8 @@ CEC_DQEVENT - Dequeue a CEC event · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | ======== | 16 | ======== |
| 17 | 17 | ||
| 18 | .. c:function:: int ioctl( int fd, int request, struct cec_event *argp ) | 18 | .. c:function:: int ioctl( int fd, CEC_DQEVENT, struct cec_event *argp ) |
| 19 | :name: CEC_DQEVENT | 19 | :name: CEC_DQEVENT |
| 20 | 20 | ||
| 21 | Arguments | 21 | Arguments |
| 22 | ========= | 22 | ========= |
| @@ -24,16 +24,15 @@ Arguments · 1 unmodified line | |||
| 24 | ``fd`` | 24 | ``fd`` |
| 25 | File descriptor returned by :ref:`open() <cec-func-open>`. | 25 | File descriptor returned by :ref:`open() <cec-func-open>`. |
| 26 | 26 | ||
| 27 | ``request`` | ||
| 28 | CEC_DQEVENT | ||
| 29 | |||
| 30 | ``argp`` | 27 | ``argp`` |
| 31 | 28 | ||
| 32 | 29 | ||
| 33 | Description | 30 | Description |
| 34 | =========== | 31 | =========== |
| 35 | 32 | ||
| 36 | .. note:: This documents the proposed CEC API. This API is not yet finalized | 33 | .. note:: |
| 34 | |||
| 35 | This documents the proposed CEC API. This API is not yet finalized | ||
| 37 | and is currently only available as a staging kernel module. | 36 | and is currently only available as a staging kernel module. |
| 38 | 37 | ||
| 39 | CEC devices can send asynchronous events. These can be retrieved by | 38 | CEC devices can send asynchronous events. These can be retrieved by |
| @@ -50,8 +49,9 @@ two :ref:`CEC_EVENT_STATE_CHANGE <CEC-EVENT-STATE-CHANGE>` events with · 10 unmodified lines | |||
| 50 | the same state). In that case the intermediate state changes were lost but | 49 | the same state). In that case the intermediate state changes were lost but |
| 51 | it is guaranteed that the state did change in between the two events. | 50 | it is guaranteed that the state did change in between the two events. |
| 52 | 51 | ||
| 52 | .. tabularcolumns:: |p{1.2cm}|p{2.9cm}|p{13.4cm}| | ||
| 53 | 53 | ||
| 54 | .. _cec-event-state-change_s: | 54 | .. c:type:: cec_event_state_change |
| 55 | 55 | ||
| 56 | .. flat-table:: struct cec_event_state_change | 56 | .. flat-table:: struct cec_event_state_change |
| 57 | :header-rows: 0 | 57 | :header-rows: 0 |
| @@ -80,8 +80,9 @@ it is guaranteed that the state did change in between the two events. · 22 unmodified lines | |||
| 80 | has the unregistered logical address. In that case all other bits are 0. | 80 | has the unregistered logical address. In that case all other bits are 0. |
| 81 | 81 | ||
| 82 | 82 | ||
| 83 | .. c:type:: cec_event_lost_msgs | ||
| 83 | 84 | ||
| 84 | .. _cec-event-lost-msgs_s: | 85 | .. tabularcolumns:: |p{1.0cm}|p{2.0cm}|p{14.5cm}| |
| 85 | 86 | ||
| 86 | .. flat-table:: struct cec_event_lost_msgs | 87 | .. flat-table:: struct cec_event_lost_msgs |
| 87 | :header-rows: 0 | 88 | :header-rows: 0 |
| @@ -106,8 +107,9 @@ it is guaranteed that the state did change in between the two events. · 18 unmodified lines | |||
| 106 | this is more than enough. | 107 | this is more than enough. |
| 107 | 108 | ||
| 108 | 109 | ||
| 110 | .. tabularcolumns:: |p{1.0cm}|p{4.2cm}|p{2.5cm}|p{8.8cm}| | ||
| 109 | 111 | ||
| 110 | .. _cec-event: | 112 | .. c:type:: cec_event |
| 111 | 113 | ||
| 112 | .. flat-table:: struct cec_event | 114 | .. flat-table:: struct cec_event |
| 113 | :header-rows: 0 | 115 | :header-rows: 0 |
| @@ -121,11 +123,10 @@ it is guaranteed that the state did change in between the two events. · 7 unmodified lines | |||
| 121 | 123 | ||
| 122 | - ``ts`` | 124 | - ``ts`` |
| 123 | 125 | ||
| 124 | - Timestamp of the event in ns. | 126 | - :cspan:`1` Timestamp of the event in ns. |
| 125 | The timestamp has been taken from the ``CLOCK_MONOTONIC`` clock. To access | ||
| 126 | the same clock from userspace use :c:func:`clock_gettime(2)`. | ||
| 127 | 127 | ||
| 128 | - | 128 | The timestamp has been taken from the ``CLOCK_MONOTONIC`` clock. To access |
| 129 | the same clock from userspace use :c:func:`clock_gettime`. | ||
| 129 | 130 | ||
| 130 | - .. row 2 | 131 | - .. row 2 |
| 131 | 132 | ||
| @@ -133,9 +134,7 @@ it is guaranteed that the state did change in between the two events. · 1 unmodified line | |||
| 133 | 134 | ||
| 134 | - ``event`` | 135 | - ``event`` |
| 135 | 136 | ||
| 136 | - The CEC event type, see :ref:`cec-events`. | 137 | - :cspan:`1` The CEC event type, see :ref:`cec-events`. |
| 137 | |||
| 138 | - | ||
| 139 | 138 | ||
| 140 | - .. row 3 | 139 | - .. row 3 |
| 141 | 140 | ||
| @@ -143,9 +142,7 @@ it is guaranteed that the state did change in between the two events. · 1 unmodified line | |||
| 143 | 142 | ||
| 144 | - ``flags`` | 143 | - ``flags`` |
| 145 | 144 | ||
| 146 | - Event flags, see :ref:`cec-event-flags`. | 145 | - :cspan:`1` Event flags, see :ref:`cec-event-flags`. |
| 147 | |||
| 148 | - | ||
| 149 | 146 | ||
| 150 | - .. row 4 | 147 | - .. row 4 |
| 151 | 148 | ||
| @@ -177,6 +174,7 @@ it is guaranteed that the state did change in between the two events. · 25 unmodified lines | |||
| 177 | event. | 174 | event. |
| 178 | 175 | ||
| 179 | 176 | ||
| 177 | .. tabularcolumns:: |p{5.6cm}|p{0.9cm}|p{11.0cm}| | ||
| 180 | 178 | ||
| 181 | .. _cec-events: | 179 | .. _cec-events: |
| 182 | 180 | ||
| @@ -206,6 +204,7 @@ it is guaranteed that the state did change in between the two events. · 23 unmodified lines | |||
| 206 | application didn't dequeue CEC messages fast enough. | 204 | application didn't dequeue CEC messages fast enough. |
| 207 | 205 | ||
| 208 | 206 | ||
| 207 | .. tabularcolumns:: |p{6.0cm}|p{0.6cm}|p{10.9cm}| | ||
| 209 | 208 | ||
| 210 | .. _cec-event-flags: | 209 | .. _cec-event-flags: |
| 211 | 210 | ||
| @@ -13,24 +13,27 @@ CEC_G_MODE, CEC_S_MODE - Get or set exclusive use of the CEC adapter · 12 unmodified lines | |||
| 13 | Synopsis | 13 | Synopsis |
| 14 | ======== | 14 | ======== |
| 15 | 15 | ||
| 16 | .. cpp:function:: int ioctl( int fd, int request, __u32 *argp ) | 16 | .. c:function:: int ioctl( int fd, CEC_G_MODE, __u32 *argp ) |
| 17 | :name: CEC_G_MODE | ||
| 18 | |||
| 19 | .. c:function:: int ioctl( int fd, CEC_S_MODE, __u32 *argp ) | ||
| 20 | :name: CEC_S_MODE | ||
| 17 | 21 | ||
| 18 | Arguments | 22 | Arguments |
| 19 | ========= | 23 | ========= |
| 20 | 24 | ||
| 21 | ``fd`` | 25 | ``fd`` |
| 22 | File descriptor returned by :ref:`open() <cec-func-open>`. | 26 | File descriptor returned by :c:func:`open() <cec-open>`. |
| 23 | |||
| 24 | ``request`` | ||
| 25 | CEC_G_MODE, CEC_S_MODE | ||
| 26 | 27 | ||
| 27 | ``argp`` | 28 | ``argp`` |
| 28 | 29 | Pointer to CEC mode. | |
| 29 | 30 | ||
| 30 | Description | 31 | Description |
| 31 | =========== | 32 | =========== |
| 32 | 33 | ||
| 33 | .. note:: This documents the proposed CEC API. This API is not yet finalized | 34 | .. note:: |
| 35 | |||
| 36 | This documents the proposed CEC API. This API is not yet finalized | ||
| 34 | and is currently only available as a staging kernel module. | 37 | and is currently only available as a staging kernel module. |
| 35 | 38 | ||
| 36 | By default any filehandle can use :ref:`CEC_TRANSMIT`, but in order to prevent | 39 | By default any filehandle can use :ref:`CEC_TRANSMIT`, but in order to prevent |
| @@ -71,6 +74,7 @@ always call :ref:`ioctl CEC_TRANSMIT <CEC_TRANSMIT>`. · 34 unmodified lines | |||
| 71 | 74 | ||
| 72 | Available initiator modes are: | 75 | Available initiator modes are: |
| 73 | 76 | ||
| 77 | .. tabularcolumns:: |p{5.6cm}|p{0.9cm}|p{11.0cm}| | ||
| 74 | 78 | ||
| 75 | .. _cec-mode-initiator_e: | 79 | .. _cec-mode-initiator_e: |
| 76 | 80 | ||
| @@ -114,6 +118,7 @@ Available initiator modes are: · 37 unmodified lines | |||
| 114 | 118 | ||
| 115 | Available follower modes are: | 119 | Available follower modes are: |
| 116 | 120 | ||
| 121 | .. tabularcolumns:: |p{6.6cm}|p{0.9cm}|p{10.0cm}| | ||
| 117 | 122 | ||
| 118 | .. _cec-mode-follower_e: | 123 | .. _cec-mode-follower_e: |
| 119 | 124 | ||
| @@ -206,6 +211,7 @@ Available follower modes are: · 86 unmodified lines | |||
| 206 | 211 | ||
| 207 | Core message processing details: | 212 | Core message processing details: |
| 208 | 213 | ||
| 214 | .. tabularcolumns:: |p{6.6cm}|p{10.9cm}| | ||
| 209 | 215 | ||
| 210 | .. _cec-core-processing: | 216 | .. _cec-core-processing: |
| 211 | 217 | ||
| @@ -16,28 +16,32 @@ CEC_RECEIVE, CEC_TRANSMIT - Receive or transmit a CEC message · 15 unmodified lines | |||
| 16 | Synopsis | 16 | Synopsis |
| 17 | ======== | 17 | ======== |
| 18 | 18 | ||
| 19 | .. cpp:function:: int ioctl( int fd, int request, struct cec_msg *argp ) | 19 | .. c:function:: int ioctl( int fd, CEC_RECEIVE, struct cec_msg *argp ) |
| 20 | :name: CEC_RECEIVE | ||
| 21 | |||
| 22 | .. c:function:: int ioctl( int fd, CEC_TRANSMIT, struct cec_msg *argp ) | ||
| 23 | :name: CEC_TRANSMIT | ||
| 20 | 24 | ||
| 21 | Arguments | 25 | Arguments |
| 22 | ========= | 26 | ========= |
| 23 | 27 | ||
| 24 | ``fd`` | 28 | ``fd`` |
| 25 | File descriptor returned by :ref:`open() <cec-func-open>`. | 29 | File descriptor returned by :c:func:`open() <cec-open>`. |
| 26 | |||
| 27 | ``request`` | ||
| 28 | CEC_RECEIVE, CEC_TRANSMIT | ||
| 29 | 30 | ||
| 30 | ``argp`` | 31 | ``argp`` |
| 31 | 32 | Pointer to struct cec_msg. | |
| 32 | 33 | ||
| 33 | Description | 34 | Description |
| 34 | =========== | 35 | =========== |
| 35 | 36 | ||
| 36 | .. note:: This documents the proposed CEC API. This API is not yet finalized | 37 | .. note:: |
| 38 | |||
| 39 | This documents the proposed CEC API. This API is not yet finalized | ||
| 37 | and is currently only available as a staging kernel module. | 40 | and is currently only available as a staging kernel module. |
| 38 | 41 | ||
| 39 | To receive a CEC message the application has to fill in the | 42 | To receive a CEC message the application has to fill in the |
| 40 | ``timeout`` field of :c:type:`struct cec_msg` and pass it to :ref:`ioctl CEC_RECEIVE <CEC_RECEIVE>`. | 43 | ``timeout`` field of struct :c:type:`cec_msg` and pass it to |
| 44 | :ref:`ioctl CEC_RECEIVE <CEC_RECEIVE>`. | ||
| 41 | If the file descriptor is in non-blocking mode and there are no received | 45 | If the file descriptor is in non-blocking mode and there are no received |
| 42 | messages pending, then it will return -1 and set errno to the ``EAGAIN`` | 46 | messages pending, then it will return -1 and set errno to the ``EAGAIN`` |
| 43 | error code. If the file descriptor is in blocking mode and ``timeout`` | 47 | error code. If the file descriptor is in blocking mode and ``timeout`` |
| @@ -51,9 +55,9 @@ A received message can be: · 7 unmodified lines | |||
| 51 | 2. the result of an earlier non-blocking transmit (the ``sequence`` field will | 55 | 2. the result of an earlier non-blocking transmit (the ``sequence`` field will |
| 52 | be non-zero). | 56 | be non-zero). |
| 53 | 57 | ||
| 54 | To send a CEC message the application has to fill in the | 58 | To send a CEC message the application has to fill in the struct |
| 55 | :c:type:`struct cec_msg` and pass it to | 59 | :c:type:` cec_msg` and pass it to :ref:`ioctl CEC_TRANSMIT <CEC_TRANSMIT>`. |
| 56 | :ref:`ioctl CEC_TRANSMIT <CEC_TRANSMIT>`. The :ref:`ioctl CEC_TRANSMIT <CEC_TRANSMIT>` is only available if | 60 | The :ref:`ioctl CEC_TRANSMIT <CEC_TRANSMIT>` is only available if |
| 57 | ``CEC_CAP_TRANSMIT`` is set. If there is no more room in the transmit | 61 | ``CEC_CAP_TRANSMIT`` is set. If there is no more room in the transmit |
| 58 | queue, then it will return -1 and set errno to the ``EBUSY`` error code. | 62 | queue, then it will return -1 and set errno to the ``EBUSY`` error code. |
| 59 | The transmit queue has enough room for 18 messages (about 1 second worth | 63 | The transmit queue has enough room for 18 messages (about 1 second worth |
| @@ -71,7 +75,11 @@ checked against the received messages to find the corresponding transmit · 11 unmodified lines | |||
| 71 | result. | 75 | result. |
| 72 | 76 | ||
| 73 | 77 | ||
| 74 | .. _cec-msg: | 78 | .. tabularcolumns:: |p{1.0cm}|p{3.5cm}|p{13.0cm}| |
| 79 | |||
| 80 | .. c:type:: cec_msg | ||
| 81 | |||
| 82 | .. cssclass:: longtable | ||
| 75 | 83 | ||
| 76 | .. flat-table:: struct cec_msg | 84 | .. flat-table:: struct cec_msg |
| 77 | :header-rows: 0 | 85 | :header-rows: 0 |
| @@ -87,7 +95,7 @@ result. · 9 unmodified lines | |||
| 87 | 95 | ||
| 88 | - Timestamp in ns of when the last byte of the message was transmitted. | 96 | - Timestamp in ns of when the last byte of the message was transmitted. |
| 89 | The timestamp has been taken from the ``CLOCK_MONOTONIC`` clock. To access | 97 | The timestamp has been taken from the ``CLOCK_MONOTONIC`` clock. To access |
| 90 | the same clock from userspace use :c:func:`clock_gettime(2)`. | 98 | the same clock from userspace use :c:func:`clock_gettime`. |
| 91 | 99 | ||
| 92 | - .. row 2 | 100 | - .. row 2 |
| 93 | 101 | ||
| @@ -97,7 +105,7 @@ result. · 3 unmodified lines | |||
| 97 | 105 | ||
| 98 | - Timestamp in ns of when the last byte of the message was received. | 106 | - Timestamp in ns of when the last byte of the message was received. |
| 99 | The timestamp has been taken from the ``CLOCK_MONOTONIC`` clock. To access | 107 | The timestamp has been taken from the ``CLOCK_MONOTONIC`` clock. To access |
| 100 | the same clock from userspace use :c:func:`clock_gettime(2)`. | 108 | the same clock from userspace use :c:func:`clock_gettime`. |
| 101 | 109 | ||
| 102 | - .. row 3 | 110 | - .. row 3 |
| 103 | 111 | ||
| @@ -247,6 +255,7 @@ result. · 143 unmodified lines | |||
| 247 | valid if the :ref:`CEC_TX_STATUS_ERROR <CEC-TX-STATUS-ERROR>` status bit is set. | 255 | valid if the :ref:`CEC_TX_STATUS_ERROR <CEC-TX-STATUS-ERROR>` status bit is set. |
| 248 | 256 | ||
| 249 | 257 | ||
| 258 | .. tabularcolumns:: |p{5.6cm}|p{0.9cm}|p{11.0cm}| | ||
| 250 | 259 | ||
| 251 | .. _cec-tx-status: | 260 | .. _cec-tx-status: |
| 252 | 261 | ||
| @@ -315,6 +324,7 @@ result. · 62 unmodified lines | |||
| 315 | be set to explain which failures were seen. | 324 | be set to explain which failures were seen. |
| 316 | 325 | ||
| 317 | 326 | ||
| 327 | .. tabularcolumns:: |p{5.6cm}|p{0.9cm}|p{11.0cm}| | ||
| 318 | 328 | ||
| 319 | .. _cec-rx-status: | 329 | .. _cec-rx-status: |
| 320 | 330 | ||
| @@ -11,11 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | AUDIO_BILINGUAL_CHANNEL_SELECT | 12 | AUDIO_BILINGUAL_CHANNEL_SELECT |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl(int fd, int request = AUDIO_BILINGUAL_CHANNEL_SELECT, audio_channel_select_t) | 19 | .. c:function:: int ioctl(int fd, AUDIO_BILINGUAL_CHANNEL_SELECT, struct *audio_channel_select) |
| 20 | :name: AUDIO_BILINGUAL_CHANNEL_SELECT | ||
| 19 | 21 | ||
| 20 | 22 | ||
| 21 | Arguments | 23 | Arguments |
| @@ -25,20 +27,13 @@ Arguments · 3 unmodified lines | |||
| 25 | :header-rows: 0 | 27 | :header-rows: 0 |
| 26 | :stub-columns: 0 | 28 | :stub-columns: 0 |
| 27 | 29 | ||
| 28 | 30 | - | |
| 29 | - .. row 1 | ||
| 30 | 31 | ||
| 31 | - int fd | 32 | - int fd |
| 32 | 33 | ||
| 33 | - File descriptor returned by a previous call to open(). | 34 | - File descriptor returned by a previous call to open(). |
| 34 | 35 | ||
| 35 | - .. row 2 | 36 | - |
| 36 | |||
| 37 | - int request | ||
| 38 | |||
| 39 | - Equals AUDIO_BILINGUAL_CHANNEL_SELECT for this command. | ||
| 40 | |||
| 41 | - .. row 3 | ||
| 42 | 37 | ||
| 43 | - audio_channel_select_t ch | 38 | - audio_channel_select_t ch |
| 44 | 39 | ||
| @@ -11,11 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | AUDIO_CHANNEL_SELECT | 12 | AUDIO_CHANNEL_SELECT |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl(int fd, int request = AUDIO_CHANNEL_SELECT, audio_channel_select_t) | 19 | .. c:function:: int ioctl(int fd, AUDIO_CHANNEL_SELECT, struct *audio_channel_select) |
| 20 | :name: AUDIO_CHANNEL_SELECT | ||
| 19 | 21 | ||
| 20 | 22 | ||
| 21 | Arguments | 23 | Arguments |
| @@ -26,19 +28,13 @@ Arguments · 4 unmodified lines | |||
| 26 | :stub-columns: 0 | 28 | :stub-columns: 0 |
| 27 | 29 | ||
| 28 | 30 | ||
| 29 | - .. row 1 | 31 | - |
| 30 | 32 | ||
| 31 | - int fd | 33 | - int fd |
| 32 | 34 | ||
| 33 | - File descriptor returned by a previous call to open(). | 35 | - File descriptor returned by a previous call to open(). |
| 34 | 36 | ||
| 35 | - .. row 2 | 37 | - |
| 36 | |||
| 37 | - int request | ||
| 38 | |||
| 39 | - Equals AUDIO_CHANNEL_SELECT for this command. | ||
| 40 | |||
| 41 | - .. row 3 | ||
| 42 | 38 | ||
| 43 | - audio_channel_select_t ch | 39 | - audio_channel_select_t ch |
| 44 | 40 | ||
| @@ -11,12 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | AUDIO_CLEAR_BUFFER | 12 | AUDIO_CLEAR_BUFFER |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl(int fd, int request = AUDIO_CLEAR_BUFFER) | 19 | .. c:function:: int ioctl(int fd, AUDIO_CLEAR_BUFFER) |
| 19 | 20 | :name: AUDIO_CLEAR_BUFFER | |
| 20 | 21 | ||
| 21 | Arguments | 22 | Arguments |
| 22 | --------- | 23 | --------- |
| @@ -32,13 +33,6 @@ Arguments · 9 unmodified lines | |||
| 32 | 33 | ||
| 33 | - File descriptor returned by a previous call to open(). | 34 | - File descriptor returned by a previous call to open(). |
| 34 | 35 | ||
| 35 | - .. row 2 | ||
| 36 | |||
| 37 | - int request | ||
| 38 | |||
| 39 | - Equals AUDIO_CLEAR_BUFFER for this command. | ||
| 40 | |||
| 41 | |||
| 42 | Description | 36 | Description |
| 43 | ----------- | 37 | ----------- |
| 44 | 38 | ||
| @@ -11,11 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | AUDIO_CONTINUE | 12 | AUDIO_CONTINUE |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl(int fd, int request = AUDIO_CONTINUE) | 19 | .. c:function:: int ioctl(int fd, AUDIO_CONTINUE) |
| 20 | :name: AUDIO_CONTINUE | ||
| 19 | 21 | ||
| 20 | 22 | ||
| 21 | Arguments | 23 | Arguments |
| @@ -32,13 +34,6 @@ Arguments · 10 unmodified lines | |||
| 32 | 34 | ||
| 33 | - File descriptor returned by a previous call to open(). | 35 | - File descriptor returned by a previous call to open(). |
| 34 | 36 | ||
| 35 | - .. row 2 | ||
| 36 | |||
| 37 | - int request | ||
| 38 | |||
| 39 | - Equals AUDIO_CONTINUE for this command. | ||
| 40 | |||
| 41 | |||
| 42 | Description | 37 | Description |
| 43 | ----------- | 38 | ----------- |
| 44 | 39 | ||
| @@ -11,11 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | DVB audio close() | 12 | DVB audio close() |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int close(int fd) | 19 | .. c:function:: int close(int fd) |
| 20 | :name: dvb-audio-close | ||
| 19 | 21 | ||
| 20 | 22 | ||
| 21 | Arguments | 23 | Arguments |
| @@ -11,11 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | DVB audio open() | 12 | DVB audio open() |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int open(const char *deviceName, int flags) | 19 | .. c:function:: int open(const char *deviceName, int flags) |
| 20 | :name: dvb-audio-open | ||
| 19 | 21 | ||
| 20 | 22 | ||
| 21 | Arguments | 23 | Arguments |
| @@ -80,6 +82,8 @@ AUDIO_GET_STATUS. All other call will return with an error code. · 58 unmodified lines | |||
| 80 | Return Value | 82 | Return Value |
| 81 | ------------ | 83 | ------------ |
| 82 | 84 | ||
| 85 | .. tabularcolumns:: |p{2.5cm}|p{15.0cm}| | ||
| 86 | |||
| 83 | .. flat-table:: | 87 | .. flat-table:: |
| 84 | :header-rows: 0 | 88 | :header-rows: 0 |
| 85 | :stub-columns: 0 | 89 | :stub-columns: 0 |
| @@ -11,11 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | DVB audio write() | 12 | DVB audio write() |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: size_t write(int fd, const void *buf, size_t count) | 19 | .. c:function:: size_t write(int fd, const void *buf, size_t count) |
| 20 | :name: dvb-audio-write | ||
| 19 | 21 | ||
| 20 | 22 | ||
| 21 | Arguments | 23 | Arguments |
| @@ -11,11 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | AUDIO_GET_CAPABILITIES | 12 | AUDIO_GET_CAPABILITIES |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl(int fd, int request = AUDIO_GET_CAPABILITIES, unsigned int *cap) | 19 | .. c:function:: int ioctl(int fd, AUDIO_GET_CAPABILITIES, unsigned int *cap) |
| 20 | :name: AUDIO_GET_CAPABILITIES | ||
| 19 | 21 | ||
| 20 | 22 | ||
| 21 | Arguments | 23 | Arguments |
| @@ -26,19 +28,13 @@ Arguments · 4 unmodified lines | |||
| 26 | :stub-columns: 0 | 28 | :stub-columns: 0 |
| 27 | 29 | ||
| 28 | 30 | ||
| 29 | - .. row 1 | 31 | - |
| 30 | 32 | ||
| 31 | - int fd | 33 | - int fd |
| 32 | 34 | ||
| 33 | - File descriptor returned by a previous call to open(). | 35 | - File descriptor returned by a previous call to open(). |
| 34 | 36 | ||
| 35 | - .. row 2 | 37 | - |
| 36 | |||
| 37 | - int request | ||
| 38 | |||
| 39 | - Equals AUDIO_GET_CAPABILITIES for this command. | ||
| 40 | |||
| 41 | - .. row 3 | ||
| 42 | 38 | ||
| 43 | - unsigned int \*cap | 39 | - unsigned int \*cap |
| 44 | 40 | ||
| @@ -11,11 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | AUDIO_GET_PTS | 12 | AUDIO_GET_PTS |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl(int fd, int request = AUDIO_GET_PTS, __u64 *pts) | 19 | .. c:function:: int ioctl(int fd, AUDIO_GET_PTS, __u64 *pts) |
| 20 | :name: AUDIO_GET_PTS | ||
| 19 | 21 | ||
| 20 | 22 | ||
| 21 | Arguments | 23 | Arguments |
| @@ -26,19 +28,13 @@ Arguments · 4 unmodified lines | |||
| 26 | :stub-columns: 0 | 28 | :stub-columns: 0 |
| 27 | 29 | ||
| 28 | 30 | ||
| 29 | - .. row 1 | 31 | - |
| 30 | 32 | ||
| 31 | - int fd | 33 | - int fd |
| 32 | 34 | ||
| 33 | - File descriptor returned by a previous call to open(). | 35 | - File descriptor returned by a previous call to open(). |
| 34 | 36 | ||
| 35 | - .. row 2 | 37 | - |
| 36 | |||
| 37 | - int request | ||
| 38 | |||
| 39 | - Equals AUDIO_GET_PTS for this command. | ||
| 40 | |||
| 41 | - .. row 3 | ||
| 42 | 38 | ||
| 43 | - __u64 \*pts | 39 | - __u64 \*pts |
| 44 | 40 | ||
| @@ -11,11 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | AUDIO_GET_STATUS | 12 | AUDIO_GET_STATUS |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl(int fd, int request = AUDIO_GET_STATUS, struct audio_status *status) | 19 | .. c:function:: int ioctl(int fd, AUDIO_GET_STATUS, struct audio_status *status) |
| 20 | :name: AUDIO_GET_STATUS | ||
| 19 | 21 | ||
| 20 | 22 | ||
| 21 | Arguments | 23 | Arguments |
| @@ -26,19 +28,13 @@ Arguments · 4 unmodified lines | |||
| 26 | :stub-columns: 0 | 28 | :stub-columns: 0 |
| 27 | 29 | ||
| 28 | 30 | ||
| 29 | - .. row 1 | 31 | - |
| 30 | 32 | ||
| 31 | - int fd | 33 | - int fd |
| 32 | 34 | ||
| 33 | - File descriptor returned by a previous call to open(). | 35 | - File descriptor returned by a previous call to open(). |
| 34 | 36 | ||
| 35 | - .. row 2 | 37 | - |
| 36 | |||
| 37 | - int request | ||
| 38 | |||
| 39 | - Equals AUDIO_GET_STATUS for this command. | ||
| 40 | |||
| 41 | - .. row 3 | ||
| 42 | 38 | ||
| 43 | - struct audio_status \*status | 39 | - struct audio_status \*status |
| 44 | 40 | ||
| @@ -11,12 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | AUDIO_PAUSE | 12 | AUDIO_PAUSE |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl(int fd, int request = AUDIO_PAUSE) | 19 | .. c:function:: int ioctl(int fd, AUDIO_PAUSE) |
| 19 | 20 | :name: AUDIO_PAUSE | |
| 20 | 21 | ||
| 21 | Arguments | 22 | Arguments |
| 22 | --------- | 23 | --------- |
| @@ -32,12 +33,6 @@ Arguments · 9 unmodified lines | |||
| 32 | 33 | ||
| 33 | - File descriptor returned by a previous call to open(). | 34 | - File descriptor returned by a previous call to open(). |
| 34 | 35 | ||
| 35 | - .. row 2 | ||
| 36 | |||
| 37 | - int request | ||
| 38 | |||
| 39 | - Equals AUDIO_PAUSE for this command. | ||
| 40 | |||
| 41 | 36 | ||
| 42 | Description | 37 | Description |
| 43 | ----------- | 38 | ----------- |
| @@ -11,11 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | AUDIO_PLAY | 12 | AUDIO_PLAY |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl(int fd, int request = AUDIO_PLAY) | 19 | .. c:function:: int ioctl(int fd, AUDIO_PLAY) |
| 20 | :name: AUDIO_PLAY | ||
| 19 | 21 | ||
| 20 | 22 | ||
| 21 | Arguments | 23 | Arguments |
| @@ -32,13 +34,6 @@ Arguments · 10 unmodified lines | |||
| 32 | 34 | ||
| 33 | - File descriptor returned by a previous call to open(). | 35 | - File descriptor returned by a previous call to open(). |
| 34 | 36 | ||
| 35 | - .. row 2 | ||
| 36 | |||
| 37 | - int request | ||
| 38 | |||
| 39 | - Equals AUDIO_PLAY for this command. | ||
| 40 | |||
| 41 | |||
| 42 | Description | 37 | Description |
| 43 | ----------- | 38 | ----------- |
| 44 | 39 | ||
| @@ -11,11 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | AUDIO_SELECT_SOURCE | 12 | AUDIO_SELECT_SOURCE |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl(int fd, int request = AUDIO_SELECT_SOURCE, audio_stream_source_t source) | 19 | .. c:function:: int ioctl(int fd, AUDIO_SELECT_SOURCE, struct audio_stream_source *source) |
| 20 | :name: AUDIO_SELECT_SOURCE | ||
| 19 | 21 | ||
| 20 | 22 | ||
| 21 | Arguments | 23 | Arguments |
| @@ -26,19 +28,13 @@ Arguments · 4 unmodified lines | |||
| 26 | :stub-columns: 0 | 28 | :stub-columns: 0 |
| 27 | 29 | ||
| 28 | 30 | ||
| 29 | - .. row 1 | 31 | - |
| 30 | 32 | ||
| 31 | - int fd | 33 | - int fd |
| 32 | 34 | ||
| 33 | - File descriptor returned by a previous call to open(). | 35 | - File descriptor returned by a previous call to open(). |
| 34 | 36 | ||
| 35 | - .. row 2 | 37 | - |
| 36 | |||
| 37 | - int request | ||
| 38 | |||
| 39 | - Equals AUDIO_SELECT_SOURCE for this command. | ||
| 40 | |||
| 41 | - .. row 3 | ||
| 42 | 38 | ||
| 43 | - audio_stream_source_t source | 39 | - audio_stream_source_t source |
| 44 | 40 | ||
| @@ -11,12 +11,14 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | AUDIO_SET_ATTRIBUTES | 12 | AUDIO_SET_ATTRIBUTES |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated | ||
| 15 | |||
| 14 | 16 | ||
| 15 | Synopsis | 17 | Synopsis |
| 16 | -------- | 18 | -------- |
| 17 | 19 | ||
| 18 | .. cpp:function:: int ioctl(fd, int request = AUDIO_SET_ATTRIBUTES, audio_attributes_t attr ) | 20 | .. c:function:: int ioctl(fd, AUDIO_SET_ATTRIBUTES, struct audio_attributes *attr ) |
| 19 | 21 | :name: AUDIO_SET_ATTRIBUTES | |
| 20 | 22 | ||
| 21 | Arguments | 23 | Arguments |
| 22 | --------- | 24 | --------- |
| @@ -26,19 +28,13 @@ Arguments · 3 unmodified lines | |||
| 26 | :stub-columns: 0 | 28 | :stub-columns: 0 |
| 27 | 29 | ||
| 28 | 30 | ||
| 29 | - .. row 1 | 31 | - |
| 30 | 32 | ||
| 31 | - int fd | 33 | - int fd |
| 32 | 34 | ||
| 33 | - File descriptor returned by a previous call to open(). | 35 | - File descriptor returned by a previous call to open(). |
| 34 | 36 | ||
| 35 | - .. row 2 | 37 | - |
| 36 | |||
| 37 | - int request | ||
| 38 | |||
| 39 | - Equals AUDIO_SET_ATTRIBUTES for this command. | ||
| 40 | |||
| 41 | - .. row 3 | ||
| 42 | 38 | ||
| 43 | - audio_attributes_t attr | 39 | - audio_attributes_t attr |
| 44 | 40 | ||
| @@ -11,11 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | AUDIO_SET_AV_SYNC | 12 | AUDIO_SET_AV_SYNC |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl(int fd, int request = AUDIO_SET_AV_SYNC, boolean state) | 19 | .. c:function:: int ioctl(int fd, AUDIO_SET_AV_SYNC, boolean state) |
| 20 | :name: AUDIO_SET_AV_SYNC | ||
| 19 | 21 | ||
| 20 | 22 | ||
| 21 | Arguments | 23 | Arguments |
| @@ -26,33 +28,21 @@ Arguments · 4 unmodified lines | |||
| 26 | :stub-columns: 0 | 28 | :stub-columns: 0 |
| 27 | 29 | ||
| 28 | 30 | ||
| 29 | - .. row 1 | 31 | - |
| 30 | 32 | ||
| 31 | - int fd | 33 | - int fd |
| 32 | 34 | ||
| 33 | - File descriptor returned by a previous call to open(). | 35 | - File descriptor returned by a previous call to open(). |
| 34 | 36 | ||
| 35 | - .. row 2 | 37 | - |
| 36 | |||
| 37 | - int request | ||
| 38 | |||
| 39 | - Equals AUDIO_AV_SYNC for this command. | ||
| 40 | |||
| 41 | - .. row 3 | ||
| 42 | 38 | ||
| 43 | - boolean state | 39 | - boolean state |
| 44 | 40 | ||
| 45 | - Tells the DVB subsystem if A/V synchronization shall be ON or OFF. | 41 | - Tells the DVB subsystem if A/V synchronization shall be ON or OFF. |
| 46 | 42 | ||
| 47 | - .. row 4 | 43 | TRUE: AV-sync ON |
| 48 | |||
| 49 | - | ||
| 50 | - TRUE AV-sync ON | ||
| 51 | |||
| 52 | - .. row 5 | ||
| 53 | 44 | ||
| 54 | - | 45 | FALSE: AV-sync OFF |
| 55 | - FALSE AV-sync OFF | ||
| 56 | 46 | ||
| 57 | 47 | ||
| 58 | Description | 48 | Description |
| @@ -11,12 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | AUDIO_SET_BYPASS_MODE | 12 | AUDIO_SET_BYPASS_MODE |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl(int fd, int request = AUDIO_SET_BYPASS_MODE, boolean mode) | 19 | .. c:function:: int ioctl(int fd, AUDIO_SET_BYPASS_MODE, boolean mode) |
| 19 | 20 | :name: AUDIO_SET_BYPASS_MODE | |
| 20 | 21 | ||
| 21 | Arguments | 22 | Arguments |
| 22 | --------- | 23 | --------- |
| @@ -26,34 +27,22 @@ Arguments · 3 unmodified lines | |||
| 26 | :stub-columns: 0 | 27 | :stub-columns: 0 |
| 27 | 28 | ||
| 28 | 29 | ||
| 29 | - .. row 1 | 30 | - |
| 30 | 31 | ||
| 31 | - int fd | 32 | - int fd |
| 32 | 33 | ||
| 33 | - File descriptor returned by a previous call to open(). | 34 | - File descriptor returned by a previous call to open(). |
| 34 | 35 | ||
| 35 | - .. row 2 | 36 | - |
| 36 | |||
| 37 | - int request | ||
| 38 | |||
| 39 | - Equals AUDIO_SET_BYPASS_MODE for this command. | ||
| 40 | |||
| 41 | - .. row 3 | ||
| 42 | 37 | ||
| 43 | - boolean mode | 38 | - boolean mode |
| 44 | 39 | ||
| 45 | - Enables or disables the decoding of the current Audio stream in | 40 | - Enables or disables the decoding of the current Audio stream in |
| 46 | the DVB subsystem. | 41 | the DVB subsystem. |
| 47 | 42 | ||
| 48 | - .. row 4 | 43 | TRUE: Bypass is disabled |
| 49 | |||
| 50 | - | ||
| 51 | - TRUE Bypass is disabled | ||
| 52 | |||
| 53 | - .. row 5 | ||
| 54 | 44 | ||
| 55 | - | 45 | FALSE: Bypass is enabled |
| 56 | - FALSE Bypass is enabled | ||
| 57 | 46 | ||
| 58 | 47 | ||
| 59 | Description | 48 | Description |
| @@ -11,12 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | AUDIO_SET_EXT_ID | 12 | AUDIO_SET_EXT_ID |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl(fd, int request = AUDIO_SET_EXT_ID, int id) | 19 | .. c:function:: int ioctl(fd, AUDIO_SET_EXT_ID, int id) |
| 19 | 20 | :name: AUDIO_SET_EXT_ID | |
| 20 | 21 | ||
| 21 | Arguments | 22 | Arguments |
| 22 | --------- | 23 | --------- |
| @@ -26,19 +27,13 @@ Arguments · 3 unmodified lines | |||
| 26 | :stub-columns: 0 | 27 | :stub-columns: 0 |
| 27 | 28 | ||
| 28 | 29 | ||
| 29 | - .. row 1 | 30 | - |
| 30 | 31 | ||
| 31 | - int fd | 32 | - int fd |
| 32 | 33 | ||
| 33 | - File descriptor returned by a previous call to open(). | 34 | - File descriptor returned by a previous call to open(). |
| 34 | 35 | ||
| 35 | - .. row 2 | 36 | - |
| 36 | |||
| 37 | - int request | ||
| 38 | |||
| 39 | - Equals AUDIO_SET_EXT_ID for this command. | ||
| 40 | |||
| 41 | - .. row 3 | ||
| 42 | 37 | ||
| 43 | - int id | 38 | - int id |
| 44 | 39 | ||
| @@ -11,12 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | AUDIO_SET_ID | 12 | AUDIO_SET_ID |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl(int fd, int request = AUDIO_SET_ID, int id) | 19 | .. c:function:: int ioctl(int fd, AUDIO_SET_ID, int id) |
| 19 | 20 | :name: AUDIO_SET_ID | |
| 20 | 21 | ||
| 21 | Arguments | 22 | Arguments |
| 22 | --------- | 23 | --------- |
| @@ -26,19 +27,13 @@ Arguments · 3 unmodified lines | |||
| 26 | :stub-columns: 0 | 27 | :stub-columns: 0 |
| 27 | 28 | ||
| 28 | 29 | ||
| 29 | - .. row 1 | 30 | - |
| 30 | 31 | ||
| 31 | - int fd | 32 | - int fd |
| 32 | 33 | ||
| 33 | - File descriptor returned by a previous call to open(). | 34 | - File descriptor returned by a previous call to open(). |
| 34 | 35 | ||
| 35 | - .. row 2 | 36 | - |
| 36 | |||
| 37 | - int request | ||
| 38 | |||
| 39 | - Equals AUDIO_SET_ID for this command. | ||
| 40 | |||
| 41 | - .. row 3 | ||
| 42 | 37 | ||
| 43 | - int id | 38 | - int id |
| 44 | 39 | ||
| @@ -11,11 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | AUDIO_SET_KARAOKE | 12 | AUDIO_SET_KARAOKE |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl(fd, int request = AUDIO_SET_KARAOKE, audio_karaoke_t *karaoke) | 19 | .. c:function:: int ioctl(fd, AUDIO_SET_KARAOKE, struct audio_karaoke *karaoke) |
| 20 | :name: AUDIO_SET_KARAOKE | ||
| 19 | 21 | ||
| 20 | 22 | ||
| 21 | Arguments | 23 | Arguments |
| @@ -26,19 +28,13 @@ Arguments · 4 unmodified lines | |||
| 26 | :stub-columns: 0 | 28 | :stub-columns: 0 |
| 27 | 29 | ||
| 28 | 30 | ||
| 29 | - .. row 1 | 31 | - |
| 30 | 32 | ||
| 31 | - int fd | 33 | - int fd |
| 32 | 34 | ||
| 33 | - File descriptor returned by a previous call to open(). | 35 | - File descriptor returned by a previous call to open(). |
| 34 | 36 | ||
| 35 | - .. row 2 | 37 | - |
| 36 | |||
| 37 | - int request | ||
| 38 | |||
| 39 | - Equals AUDIO_SET_KARAOKE for this command. | ||
| 40 | |||
| 41 | - .. row 3 | ||
| 42 | 38 | ||
| 43 | - audio_karaoke_t \*karaoke | 39 | - audio_karaoke_t \*karaoke |
| 44 | 40 | ||
| @@ -11,12 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | AUDIO_SET_MIXER | 12 | AUDIO_SET_MIXER |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl(int fd, int request = AUDIO_SET_MIXER, audio_mixer_t *mix) | 19 | .. c:function:: int ioctl(int fd, AUDIO_SET_MIXER, struct audio_mixer *mix) |
| 19 | 20 | :name: AUDIO_SET_MIXER | |
| 20 | 21 | ||
| 21 | Arguments | 22 | Arguments |
| 22 | --------- | 23 | --------- |
| @@ -26,19 +27,13 @@ Arguments · 3 unmodified lines | |||
| 26 | :stub-columns: 0 | 27 | :stub-columns: 0 |
| 27 | 28 | ||
| 28 | 29 | ||
| 29 | - .. row 1 | 30 | - |
| 30 | 31 | ||
| 31 | - int fd | 32 | - int fd |
| 32 | 33 | ||
| 33 | - File descriptor returned by a previous call to open(). | 34 | - File descriptor returned by a previous call to open(). |
| 34 | 35 | ||
| 35 | - .. row 2 | 36 | - |
| 36 | |||
| 37 | - int request | ||
| 38 | |||
| 39 | - Equals AUDIO_SET_ID for this command. | ||
| 40 | |||
| 41 | - .. row 3 | ||
| 42 | 37 | ||
| 43 | - audio_mixer_t \*mix | 38 | - audio_mixer_t \*mix |
| 44 | 39 | ||
| @@ -11,11 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | AUDIO_SET_MUTE | 12 | AUDIO_SET_MUTE |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl(int fd, int request = AUDIO_SET_MUTE, boolean state) | 19 | .. c:function:: int ioctl(int fd, AUDIO_SET_MUTE, boolean state) |
| 20 | :name: AUDIO_SET_MUTE | ||
| 19 | 21 | ||
| 20 | 22 | ||
| 21 | Arguments | 23 | Arguments |
| @@ -26,33 +28,21 @@ Arguments · 4 unmodified lines | |||
| 26 | :stub-columns: 0 | 28 | :stub-columns: 0 |
| 27 | 29 | ||
| 28 | 30 | ||
| 29 | - .. row 1 | 31 | - |
| 30 | 32 | ||
| 31 | - int fd | 33 | - int fd |
| 32 | 34 | ||
| 33 | - File descriptor returned by a previous call to open(). | 35 | - File descriptor returned by a previous call to open(). |
| 34 | 36 | ||
| 35 | - .. row 2 | 37 | - |
| 36 | |||
| 37 | - int request | ||
| 38 | |||
| 39 | - Equals AUDIO_SET_MUTE for this command. | ||
| 40 | |||
| 41 | - .. row 3 | ||
| 42 | 38 | ||
| 43 | - boolean state | 39 | - boolean state |
| 44 | 40 | ||
| 45 | - Indicates if audio device shall mute or not. | 41 | - Indicates if audio device shall mute or not. |
| 46 | 42 | ||
| 47 | - .. row 4 | 43 | TRUE: Audio Mute |
| 48 | |||
| 49 | - | ||
| 50 | - TRUE Audio Mute | ||
| 51 | |||
| 52 | - .. row 5 | ||
| 53 | 44 | ||
| 54 | - | 45 | FALSE: Audio Un-mute |
| 55 | - FALSE Audio Un-mute | ||
| 56 | 46 | ||
| 57 | 47 | ||
| 58 | Description | 48 | Description |
| @@ -11,11 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | AUDIO_SET_STREAMTYPE | 12 | AUDIO_SET_STREAMTYPE |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl(fd, int request = AUDIO_SET_STREAMTYPE, int type) | 19 | .. c:function:: int ioctl(fd, AUDIO_SET_STREAMTYPE, int type) |
| 20 | :name: AUDIO_SET_STREAMTYPE | ||
| 19 | 21 | ||
| 20 | 22 | ||
| 21 | Arguments | 23 | Arguments |
| @@ -26,19 +28,13 @@ Arguments · 4 unmodified lines | |||
| 26 | :stub-columns: 0 | 28 | :stub-columns: 0 |
| 27 | 29 | ||
| 28 | 30 | ||
| 29 | - .. row 1 | 31 | - |
| 30 | 32 | ||
| 31 | - int fd | 33 | - int fd |
| 32 | 34 | ||
| 33 | - File descriptor returned by a previous call to open(). | 35 | - File descriptor returned by a previous call to open(). |
| 34 | 36 | ||
| 35 | - .. row 2 | 37 | - |
| 36 | |||
| 37 | - int request | ||
| 38 | |||
| 39 | - Equals AUDIO_SET_STREAMTYPE for this command. | ||
| 40 | |||
| 41 | - .. row 3 | ||
| 42 | 38 | ||
| 43 | - int type | 39 | - int type |
| 44 | 40 | ||
| @@ -11,12 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | AUDIO_STOP | 12 | AUDIO_STOP |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl(int fd, int request = AUDIO_STOP) | 19 | .. c:function:: int ioctl(int fd, AUDIO_STOP) |
| 19 | 20 | :name: AUDIO_STOP | |
| 20 | 21 | ||
| 21 | Arguments | 22 | Arguments |
| 22 | --------- | 23 | --------- |
| @@ -32,12 +33,6 @@ Arguments · 9 unmodified lines | |||
| 32 | 33 | ||
| 33 | - File descriptor returned by a previous call to open(). | 34 | - File descriptor returned by a previous call to open(). |
| 34 | 35 | ||
| 35 | - .. row 2 | ||
| 36 | |||
| 37 | - int request | ||
| 38 | |||
| 39 | - Equals AUDIO_STOP for this command. | ||
| 40 | |||
| 41 | 36 | ||
| 42 | Description | 37 | Description |
| 43 | ----------- | 38 | ----------- |
| @@ -9,11 +9,7 @@ Audio Data Types · 8 unmodified lines | |||
| 9 | This section describes the structures, data types and defines used when | 9 | This section describes the structures, data types and defines used when |
| 10 | talking to the audio device. | 10 | talking to the audio device. |
| 11 | 11 | ||
| 12 | 12 | .. c:type:: audio_stream_source | |
| 13 | .. _audio-stream-source-t: | ||
| 14 | |||
| 15 | audio_stream_source_t | ||
| 16 | ===================== | ||
| 17 | 13 | ||
| 18 | The audio stream source is set through the AUDIO_SELECT_SOURCE call | 14 | The audio stream source is set through the AUDIO_SELECT_SOURCE call |
| 19 | and can take the following values, depending on whether we are replaying | 15 | and can take the following values, depending on whether we are replaying |
| @@ -33,10 +29,7 @@ AUDIO_SOURCE_MEMORY is selected the stream comes from the application · 13 unmodified lines | |||
| 33 | through the ``write()`` system call. | 29 | through the ``write()`` system call. |
| 34 | 30 | ||
| 35 | 31 | ||
| 36 | .. _audio-play-state-t: | 32 | .. c:type:: audio_play_state |
| 37 | |||
| 38 | audio_play_state_t | ||
| 39 | ================== | ||
| 40 | 33 | ||
| 41 | The following values can be returned by the AUDIO_GET_STATUS call | 34 | The following values can be returned by the AUDIO_GET_STATUS call |
| 42 | representing the state of audio playback. | 35 | representing the state of audio playback. |
| @@ -51,10 +44,7 @@ representing the state of audio playback. · 8 unmodified lines | |||
| 51 | } audio_play_state_t; | 44 | } audio_play_state_t; |
| 52 | 45 | ||
| 53 | 46 | ||
| 54 | .. _audio-channel-select-t: | 47 | .. c:type:: audio_channel_select |
| 55 | |||
| 56 | audio_channel_select_t | ||
| 57 | ====================== | ||
| 58 | 48 | ||
| 59 | The audio channel selected via AUDIO_CHANNEL_SELECT is determined by | 49 | The audio channel selected via AUDIO_CHANNEL_SELECT is determined by |
| 60 | the following values. | 50 | the following values. |
| @@ -71,10 +61,7 @@ the following values. · 10 unmodified lines | |||
| 71 | } audio_channel_select_t; | 61 | } audio_channel_select_t; |
| 72 | 62 | ||
| 73 | 63 | ||
| 74 | .. _audio-status: | 64 | .. c:type:: audio_status |
| 75 | |||
| 76 | struct audio_status | ||
| 77 | =================== | ||
| 78 | 65 | ||
| 79 | The AUDIO_GET_STATUS call returns the following structure informing | 66 | The AUDIO_GET_STATUS call returns the following structure informing |
| 80 | about various states of the playback operation. | 67 | about various states of the playback operation. |
| @@ -93,10 +80,7 @@ about various states of the playback operation. · 12 unmodified lines | |||
| 93 | } audio_status_t; | 80 | } audio_status_t; |
| 94 | 81 | ||
| 95 | 82 | ||
| 96 | .. _audio-mixer: | 83 | .. c:type:: audio_mixer |
| 97 | |||
| 98 | struct audio_mixer | ||
| 99 | ================== | ||
| 100 | 84 | ||
| 101 | The following structure is used by the AUDIO_SET_MIXER call to set the | 85 | The following structure is used by the AUDIO_SET_MIXER call to set the |
| 102 | audio volume. | 86 | audio volume. |
| @@ -131,11 +115,7 @@ following bits set according to the hardwares capabilities. · 28 unmodified lines | |||
| 131 | #define AUDIO_CAP_SDDS 128 | 115 | #define AUDIO_CAP_SDDS 128 |
| 132 | #define AUDIO_CAP_AC3 256 | 116 | #define AUDIO_CAP_AC3 256 |
| 133 | 117 | ||
| 134 | 118 | .. c:type:: audio_karaoke | |
| 135 | .. _audio-karaoke: | ||
| 136 | |||
| 137 | struct audio_karaoke | ||
| 138 | ==================== | ||
| 139 | 119 | ||
| 140 | The ioctl AUDIO_SET_KARAOKE uses the following format: | 120 | The ioctl AUDIO_SET_KARAOKE uses the following format: |
| 141 | 121 | ||
| @@ -155,10 +135,7 @@ into the left channel and Vocal2 into the right channel at 100% each. Ff · 13 unmodified lines | |||
| 155 | Melody is non-zero, the melody channel gets mixed into left and right. | 135 | Melody is non-zero, the melody channel gets mixed into left and right. |
| 156 | 136 | ||
| 157 | 137 | ||
| 158 | .. _audio-attributes-t: | 138 | .. c:type:: audio_attributes |
| 159 | |||
| 160 | audio attributes | ||
| 161 | ================ | ||
| 162 | 139 | ||
| 163 | The following attributes can be set by a call to AUDIO_SET_ATTRIBUTES: | 140 | The following attributes can be set by a call to AUDIO_SET_ATTRIBUTES: |
| 164 | 141 | ||
| @@ -15,28 +15,20 @@ DVB CA close() · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | -------- | 16 | -------- |
| 17 | 17 | ||
| 18 | .. cpp:function:: int close(int fd) | 18 | .. c:function:: int close(int fd) |
| 19 | :name: dvb-ca-close | ||
| 19 | 20 | ||
| 20 | 21 | ||
| 21 | Arguments | 22 | Arguments |
| 22 | --------- | 23 | --------- |
| 23 | 24 | ||
| 24 | .. flat-table:: | 25 | ``fd`` |
| 25 | :header-rows: 0 | 26 | File descriptor returned by a previous call to :c:func:`open() <dvb-ca-open>`. |
| 26 | :stub-columns: 0 | ||
| 27 | |||
| 28 | |||
| 29 | - .. row 1 | ||
| 30 | |||
| 31 | - int fd | ||
| 32 | |||
| 33 | - File descriptor returned by a previous call to open(). | ||
| 34 | |||
| 35 | 27 | ||
| 36 | Description | 28 | Description |
| 37 | ----------- | 29 | ----------- |
| 38 | 30 | ||
| 39 | This system call closes a previously opened audio device. | 31 | This system call closes a previously opened CA device. |
| 40 | 32 | ||
| 41 | 33 | ||
| 42 | Return Value | 34 | Return Value |
| @@ -15,48 +15,35 @@ DVB CA open() · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | -------- | 16 | -------- |
| 17 | 17 | ||
| 18 | .. cpp:function:: int open(const char *deviceName, int flags) | 18 | .. c:function:: int open(const char *name, int flags) |
| 19 | :name: dvb-ca-open | ||
| 19 | 20 | ||
| 20 | 21 | ||
| 21 | Arguments | 22 | Arguments |
| 22 | --------- | 23 | --------- |
| 23 | 24 | ||
| 25 | ``name`` | ||
| 26 | Name of specific DVB CA device. | ||
| 27 | |||
| 28 | ``flags`` | ||
| 29 | A bit-wise OR of the following flags: | ||
| 30 | |||
| 24 | .. flat-table:: | 31 | .. flat-table:: |
| 25 | :header-rows: 0 | 32 | :header-rows: 0 |
| 26 | :stub-columns: 0 | 33 | :stub-columns: 0 |
| 27 | 34 | ||
| 35 | - | ||
| 36 | - O_RDONLY | ||
| 37 | - read-only access | ||
| 28 | 38 | ||
| 29 | - .. row 1 | 39 | - |
| 30 | 40 | - O_RDWR | |
| 31 | - const char \*deviceName | 41 | - read/write access |
| 32 | |||
| 33 | - Name of specific video device. | ||
| 34 | 42 | ||
| 35 | - .. row 2 | 43 | - |
| 36 | 44 | - O_NONBLOCK | |
| 37 | - int flags | 45 | - open in non-blocking mode |
| 38 | 46 | (blocking mode is the default) | |
| 39 | - A bit-wise OR of the following flags: | ||
| 40 | |||
| 41 | - .. row 3 | ||
| 42 | |||
| 43 | - | ||
| 44 | - O_RDONLY read-only access | ||
| 45 | |||
| 46 | - .. row 4 | ||
| 47 | |||
| 48 | - | ||
| 49 | - O_RDWR read/write access | ||
| 50 | |||
| 51 | - .. row 5 | ||
| 52 | |||
| 53 | - | ||
| 54 | - O_NONBLOCK open in non-blocking mode | ||
| 55 | |||
| 56 | - .. row 6 | ||
| 57 | |||
| 58 | - | ||
| 59 | - (blocking mode is the default) | ||
| 60 | 47 | ||
| 61 | 48 | ||
| 62 | Description | 49 | Description |
| @@ -79,6 +66,8 @@ the device in this mode will fail, and an error code will be returned. · 16 unmodified lines | |||
| 79 | Return Value | 66 | Return Value |
| 80 | ------------ | 67 | ------------ |
| 81 | 68 | ||
| 69 | .. tabularcolumns:: |p{2.5cm}|p{15.0cm}| | ||
| 70 | |||
| 82 | .. flat-table:: | 71 | .. flat-table:: |
| 83 | :header-rows: 0 | 72 | :header-rows: 0 |
| 84 | :stub-columns: 0 | 73 | :stub-columns: 0 |
| @@ -15,40 +15,51 @@ CA_GET_CAP · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | -------- | 16 | -------- |
| 17 | 17 | ||
| 18 | .. cpp:function:: int ioctl(fd, int request = CA_GET_CAP, ca_caps_t *) | 18 | .. c:function:: int ioctl(fd, CA_GET_CAP, struct ca_caps *caps) |
| 19 | :name: CA_GET_CAP | ||
| 19 | 20 | ||
| 20 | 21 | ||
| 21 | Arguments | 22 | Arguments |
| 22 | --------- | 23 | --------- |
| 23 | 24 | ||
| 24 | .. flat-table:: | 25 | ``fd`` |
| 25 | :header-rows: 0 | 26 | File descriptor returned by a previous call to :c:func:`open() <dvb-ca-open>`. |
| 26 | :stub-columns: 0 | ||
| 27 | |||
| 28 | |||
| 29 | - .. row 1 | ||
| 30 | |||
| 31 | - int fd | ||
| 32 | 27 | ||
| 33 | - File descriptor returned by a previous call to open(). | 28 | ``caps`` |
| 29 | Pointer to struct :c:type:`ca_caps`. | ||
| 34 | 30 | ||
| 35 | - .. row 2 | 31 | .. c:type:: struct ca_caps |
| 36 | 32 | ||
| 37 | - int request | 33 | .. flat-table:: struct ca_caps |
| 38 | 34 | :header-rows: 1 | |
| 39 | - Equals CA_GET_CAP for this command. | 35 | :stub-columns: 0 |
| 40 | |||
| 41 | - .. row 3 | ||
| 42 | |||
| 43 | - ca_caps_t * | ||
| 44 | 36 | ||
| 45 | - Undocumented. | 37 | - |
| 38 | - type | ||
| 39 | - name | ||
| 40 | - description | ||
| 41 | - | ||
| 42 | - unsigned int | ||
| 43 | - slot_num | ||
| 44 | - total number of CA card and module slots | ||
| 45 | - | ||
| 46 | - unsigned int | ||
| 47 | - slot_type | ||
| 48 | - bitmask with all supported slot types | ||
| 49 | - | ||
| 50 | - unsigned int | ||
| 51 | - descr_num | ||
| 52 | - total number of descrambler slots (keys) | ||
| 53 | - | ||
| 54 | - unsigned int | ||
| 55 | - descr_type | ||
| 56 | - bit mask with all supported descr types | ||
| 46 | 57 | ||
| 47 | 58 | ||
| 48 | Description | 59 | Description |
| 49 | ----------- | 60 | ----------- |
| 50 | 61 | ||
| 51 | This ioctl is undocumented. Documentation is welcome. | 62 | .. note:: This ioctl is undocumented. Documentation is welcome. |
| 52 | 63 | ||
| 53 | 64 | ||
| 54 | Return Value | 65 | Return Value |
| @@ -15,40 +15,44 @@ CA_GET_DESCR_INFO · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | -------- | 16 | -------- |
| 17 | 17 | ||
| 18 | .. cpp:function:: int ioctl(fd, int request = CA_GET_DESCR_INFO, ca_descr_info_t *) | 18 | .. c:function:: int ioctl(fd, CA_GET_DESCR_INFO, struct ca_descr_info *desc) |
| 19 | 19 | :name: CA_GET_DESCR_INFO | |
| 20 | 20 | ||
| 21 | Arguments | 21 | Arguments |
| 22 | --------- | 22 | --------- |
| 23 | 23 | ||
| 24 | .. flat-table:: | 24 | ``fd`` |
| 25 | :header-rows: 0 | 25 | File descriptor returned by a previous call to :c:func:`open() <dvb-ca-open>`. |
| 26 | :stub-columns: 0 | ||
| 27 | |||
| 28 | |||
| 29 | - .. row 1 | ||
| 30 | 26 | ||
| 31 | - int fd | 27 | ``desc`` |
| 28 | Pointer to struct :c:type:`ca_descr_info`. | ||
| 32 | 29 | ||
| 33 | - File descriptor returned by a previous call to open(). | 30 | .. c:type:: struct ca_descr_info |
| 34 | 31 | ||
| 35 | - .. row 2 | 32 | .. flat-table:: struct ca_descr_info |
| 36 | 33 | :header-rows: 1 | |
| 37 | - int request | 34 | :stub-columns: 0 |
| 38 | |||
| 39 | - Equals CA_GET_DESCR_INFO for this command. | ||
| 40 | |||
| 41 | - .. row 3 | ||
| 42 | 35 | ||
| 43 | - ca_descr_info_t \* | 36 | - |
| 37 | - type | ||
| 38 | - name | ||
| 39 | - description | ||
| 44 | 40 | ||
| 45 | - Undocumented. | 41 | - |
| 42 | - unsigned int | ||
| 43 | - num | ||
| 44 | - number of available descramblers (keys) | ||
| 45 | - | ||
| 46 | - unsigned int | ||
| 47 | - type | ||
| 48 | - type of supported scrambling system. Valid values are: | ||
| 49 | ``CA_ECD``, ``CA_NDS`` and ``CA_DSS``. | ||
| 46 | 50 | ||
| 47 | 51 | ||
| 48 | Description | 52 | Description |
| 49 | ----------- | 53 | ----------- |
| 50 | 54 | ||
| 51 | This ioctl is undocumented. Documentation is welcome. | 55 | .. note:: This ioctl is undocumented. Documentation is welcome. |
| 52 | 56 | ||
| 53 | 57 | ||
| 54 | Return Value | 58 | Return Value |
| @@ -15,40 +15,55 @@ CA_GET_MSG · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | -------- | 16 | -------- |
| 17 | 17 | ||
| 18 | .. cpp:function:: int ioctl(fd, int request = CA_GET_MSG, ca_msg_t *) | 18 | .. c:function:: int ioctl(fd, CA_GET_MSG, struct ca_msg *msg) |
| 19 | :name: CA_GET_MSG | ||
| 19 | 20 | ||
| 20 | 21 | ||
| 21 | Arguments | 22 | Arguments |
| 22 | --------- | 23 | --------- |
| 23 | 24 | ||
| 24 | .. flat-table:: | 25 | ``fd`` |
| 25 | :header-rows: 0 | 26 | File descriptor returned by a previous call to :c:func:`open() <dvb-ca-open>`. |
| 26 | :stub-columns: 0 | ||
| 27 | |||
| 28 | 27 | ||
| 29 | - .. row 1 | 28 | ``msg`` |
| 29 | Pointer to struct :c:type:`ca_msg`. | ||
| 30 | 30 | ||
| 31 | - int fd | ||
| 32 | 31 | ||
| 33 | - File descriptor returned by a previous call to open(). | 32 | .. c:type:: struct ca_msg |
| 34 | 33 | ||
| 35 | - .. row 2 | 34 | .. flat-table:: struct ca_msg |
| 36 | 35 | :header-rows: 1 | |
| 37 | - int request | 36 | :stub-columns: 0 |
| 38 | 37 | ||
| 39 | - Equals CA_GET_MSG for this command. | 38 | - |
| 39 | - type | ||
| 40 | - name | ||
| 41 | - description | ||
| 42 | - | ||
| 43 | - unsigned int | ||
| 44 | - index | ||
| 45 | - | ||
| 40 | 46 | ||
| 41 | - .. row 3 | 47 | - |
| 48 | - unsigned int | ||
| 49 | - type | ||
| 50 | - | ||
| 42 | 51 | ||
| 43 | - ca_msg_t \* | 52 | - |
| 53 | - unsigned int | ||
| 54 | - length | ||
| 55 | - | ||
| 44 | 56 | ||
| 45 | - Undocumented. | 57 | - |
| 58 | - unsigned char | ||
| 59 | - msg[256] | ||
| 60 | - | ||
| 46 | 61 | ||
| 47 | 62 | ||
| 48 | Description | 63 | Description |
| 49 | ----------- | 64 | ----------- |
| 50 | 65 | ||
| 51 | This ioctl is undocumented. Documentation is welcome. | 66 | .. note:: This ioctl is undocumented. Documentation is welcome. |
| 52 | 67 | ||
| 53 | 68 | ||
| 54 | Return Value | 69 | Return Value |
| @@ -15,40 +15,106 @@ CA_GET_SLOT_INFO · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | -------- | 16 | -------- |
| 17 | 17 | ||
| 18 | .. cpp:function:: int ioctl(fd, int request = CA_GET_SLOT_INFO, ca_slot_info_t *) | 18 | .. c:function:: int ioctl(fd, CA_GET_SLOT_INFO, struct ca_slot_info *info) |
| 19 | :name: CA_GET_SLOT_INFO | ||
| 19 | 20 | ||
| 20 | 21 | ||
| 21 | Arguments | 22 | Arguments |
| 22 | --------- | 23 | --------- |
| 23 | 24 | ||
| 24 | .. flat-table:: | 25 | ``fd`` |
| 25 | :header-rows: 0 | 26 | File descriptor returned by a previous call to :c:func:`open() <cec-open>`. |
| 27 | |||
| 28 | ``info`` | ||
| 29 | Pointer to struct c:type:`ca_slot_info`. | ||
| 30 | |||
| 31 | .. _ca_slot_info_type: | ||
| 32 | |||
| 33 | .. flat-table:: ca_slot_info types | ||
| 34 | :header-rows: 1 | ||
| 26 | :stub-columns: 0 | 35 | :stub-columns: 0 |
| 27 | 36 | ||
| 37 | - | ||
| 38 | - type | ||
| 39 | - name | ||
| 40 | - description | ||
| 41 | - | ||
| 42 | - CA_CI | ||
| 43 | - 1 | ||
| 44 | - CI high level interface | ||
| 45 | |||
| 46 | - | ||
| 47 | - CA_CI_LINK | ||
| 48 | - 2 | ||
| 49 | - CI link layer level interface | ||
| 50 | |||
| 51 | - | ||
| 52 | - CA_CI_PHYS | ||
| 53 | - 4 | ||
| 54 | - CI physical layer level interface | ||
| 55 | |||
| 56 | - | ||
| 57 | - CA_DESCR | ||
| 58 | - 8 | ||
| 59 | - built-in descrambler | ||
| 60 | |||
| 61 | - | ||
| 62 | - CA_SC | ||
| 63 | - 128 | ||
| 64 | - simple smart card interface | ||
| 65 | |||
| 66 | .. _ca_slot_info_flag: | ||
| 67 | |||
| 68 | .. flat-table:: ca_slot_info flags | ||
| 69 | :header-rows: 1 | ||
| 70 | :stub-columns: 0 | ||
| 28 | 71 | ||
| 29 | - .. row 1 | 72 | - |
| 73 | - type | ||
| 74 | - name | ||
| 75 | - description | ||
| 30 | 76 | ||
| 31 | - int fd | 77 | - |
| 78 | - CA_CI_MODULE_PRESENT | ||
| 79 | - 1 | ||
| 80 | - module (or card) inserted | ||
| 32 | 81 | ||
| 33 | - File descriptor returned by a previous call to open(). | 82 | - |
| 83 | - CA_CI_MODULE_READY | ||
| 84 | - 2 | ||
| 85 | - | ||
| 34 | 86 | ||
| 35 | - .. row 2 | 87 | .. c:type:: ca_slot_info |
| 36 | 88 | ||
| 37 | - int request | 89 | .. flat-table:: struct ca_slot_info |
| 90 | :header-rows: 1 | ||
| 91 | :stub-columns: 0 | ||
| 38 | 92 | ||
| 39 | - Equals CA_GET_SLOT_INFO for this command. | 93 | - |
| 94 | - type | ||
| 95 | - name | ||
| 96 | - description | ||
| 40 | 97 | ||
| 41 | - .. row 3 | 98 | - |
| 99 | - int | ||
| 100 | - num | ||
| 101 | - slot number | ||
| 42 | 102 | ||
| 43 | - ca_slot_info_t \* | 103 | - |
| 104 | - int | ||
| 105 | - type | ||
| 106 | - CA interface this slot supports, as defined at :ref:`ca_slot_info_type`. | ||
| 44 | 107 | ||
| 45 | - Undocumented. | 108 | - |
| 109 | - unsigned int | ||
| 110 | - flags | ||
| 111 | - flags as defined at :ref:`ca_slot_info_flag`. | ||
| 46 | 112 | ||
| 47 | 113 | ||
| 48 | Description | 114 | Description |
| 49 | ----------- | 115 | ----------- |
| 50 | 116 | ||
| 51 | This ioctl is undocumented. Documentation is welcome. | 117 | .. note:: This ioctl is undocumented. Documentation is welcome. |
| 52 | 118 | ||
| 53 | 119 | ||
| 54 | Return Value | 120 | Return Value |
| @@ -15,34 +15,20 @@ CA_RESET · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | -------- | 16 | -------- |
| 17 | 17 | ||
| 18 | .. cpp:function:: int ioctl(fd, int request = CA_RESET) | 18 | .. c:function:: int ioctl(fd, CA_RESET) |
| 19 | :name: CA_RESET | ||
| 19 | 20 | ||
| 20 | 21 | ||
| 21 | Arguments | 22 | Arguments |
| 22 | --------- | 23 | --------- |
| 23 | 24 | ||
| 24 | .. flat-table:: | 25 | ``fd`` |
| 25 | :header-rows: 0 | 26 | File descriptor returned by a previous call to :c:func:`open() <cec-open>`. |
| 26 | :stub-columns: 0 | ||
| 27 | |||
| 28 | |||
| 29 | - .. row 1 | ||
| 30 | |||
| 31 | - int fd | ||
| 32 | |||
| 33 | - File descriptor returned by a previous call to open(). | ||
| 34 | |||
| 35 | - .. row 2 | ||
| 36 | |||
| 37 | - int request | ||
| 38 | |||
| 39 | - Equals CA_RESET for this command. | ||
| 40 | |||
| 41 | 27 | ||
| 42 | Description | 28 | Description |
| 43 | ----------- | 29 | ----------- |
| 44 | 30 | ||
| 45 | This ioctl is undocumented. Documentation is welcome. | 31 | .. note:: This ioctl is undocumented. Documentation is welcome. |
| 46 | 32 | ||
| 47 | 33 | ||
| 48 | Return Value | 34 | Return Value |
| @@ -15,40 +15,24 @@ CA_SEND_MSG · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | -------- | 16 | -------- |
| 17 | 17 | ||
| 18 | .. cpp:function:: int ioctl(fd, int request = CA_SEND_MSG, ca_msg_t *) | 18 | .. c:function:: int ioctl(fd, CA_SEND_MSG, struct ca_msg *msg) |
| 19 | :name: CA_SEND_MSG | ||
| 19 | 20 | ||
| 20 | 21 | ||
| 21 | Arguments | 22 | Arguments |
| 22 | --------- | 23 | --------- |
| 23 | 24 | ||
| 24 | .. flat-table:: | 25 | ``fd`` |
| 25 | :header-rows: 0 | 26 | File descriptor returned by a previous call to :c:func:`open() <cec-open>`. |
| 26 | :stub-columns: 0 | ||
| 27 | 27 | ||
| 28 | 28 | ``msg`` | |
| 29 | - .. row 1 | 29 | Pointer to struct :c:type:`ca_msg`. |
| 30 | |||
| 31 | - int fd | ||
| 32 | |||
| 33 | - File descriptor returned by a previous call to open(). | ||
| 34 | |||
| 35 | - .. row 2 | ||
| 36 | |||
| 37 | - int request | ||
| 38 | |||
| 39 | - Equals CA_SEND_MSG for this command. | ||
| 40 | |||
| 41 | - .. row 3 | ||
| 42 | |||
| 43 | - ca_msg_t \* | ||
| 44 | |||
| 45 | - Undocumented. | ||
| 46 | 30 | ||
| 47 | 31 | ||
| 48 | Description | 32 | Description |
| 49 | ----------- | 33 | ----------- |
| 50 | 34 | ||
| 51 | This ioctl is undocumented. Documentation is welcome. | 35 | .. note:: This ioctl is undocumented. Documentation is welcome. |
| 52 | 36 | ||
| 53 | 37 | ||
| 54 | Return Value | 38 | Return Value |
| @@ -15,40 +15,24 @@ CA_SET_DESCR · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | -------- | 16 | -------- |
| 17 | 17 | ||
| 18 | .. cpp:function:: int ioctl(fd, int request = CA_SET_DESCR, ca_descr_t *) | 18 | .. c:function:: int ioctl(fd, CA_SET_DESCR, struct ca_descr *desc) |
| 19 | :name: CA_SET_DESCR | ||
| 19 | 20 | ||
| 20 | 21 | ||
| 21 | Arguments | 22 | Arguments |
| 22 | --------- | 23 | --------- |
| 23 | 24 | ||
| 24 | .. flat-table:: | 25 | ``fd`` |
| 25 | :header-rows: 0 | 26 | File descriptor returned by a previous call to :c:func:`open() <cec-open>`. |
| 26 | :stub-columns: 0 | ||
| 27 | 27 | ||
| 28 | 28 | ``msg`` | |
| 29 | - .. row 1 | 29 | Pointer to struct :c:type:`ca_descr`. |
| 30 | |||
| 31 | - int fd | ||
| 32 | |||
| 33 | - File descriptor returned by a previous call to open(). | ||
| 34 | |||
| 35 | - .. row 2 | ||
| 36 | |||
| 37 | - int request | ||
| 38 | |||
| 39 | - Equals CA_SET_DESCR for this command. | ||
| 40 | |||
| 41 | - .. row 3 | ||
| 42 | |||
| 43 | - ca_descr_t \* | ||
| 44 | |||
| 45 | - Undocumented. | ||
| 46 | 30 | ||
| 47 | 31 | ||
| 48 | Description | 32 | Description |
| 49 | ----------- | 33 | ----------- |
| 50 | 34 | ||
| 51 | This ioctl is undocumented. Documentation is welcome. | 35 | .. note:: This ioctl is undocumented. Documentation is welcome. |
| 52 | 36 | ||
| 53 | 37 | ||
| 54 | Return Value | 38 | Return Value |
| @@ -15,40 +15,41 @@ CA_SET_PID · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | -------- | 16 | -------- |
| 17 | 17 | ||
| 18 | .. cpp:function:: int ioctl(fd, int request = CA_SET_PID, ca_pid_t *) | 18 | .. c:function:: int ioctl(fd, CA_SET_PID, struct ca_pid *pid) |
| 19 | :name: CA_SET_PID | ||
| 19 | 20 | ||
| 20 | 21 | ||
| 21 | Arguments | 22 | Arguments |
| 22 | --------- | 23 | --------- |
| 23 | 24 | ||
| 24 | .. flat-table:: | 25 | ``fd`` |
| 25 | :header-rows: 0 | 26 | File descriptor returned by a previous call to :c:func:`open() <dvb-ca-open>`. |
| 26 | :stub-columns: 0 | ||
| 27 | |||
| 28 | |||
| 29 | - .. row 1 | ||
| 30 | 27 | ||
| 31 | - int fd | 28 | ``pid`` |
| 29 | Pointer to struct :c:type:`ca_pid`. | ||
| 32 | 30 | ||
| 33 | - File descriptor returned by a previous call to open(). | 31 | .. c:type:: ca_pid |
| 34 | 32 | ||
| 35 | - .. row 2 | 33 | .. flat-table:: struct ca_pid |
| 36 | 34 | :header-rows: 1 | |
| 37 | - int request | 35 | :stub-columns: 0 |
| 38 | |||
| 39 | - Equals CA_SET_PID for this command. | ||
| 40 | 36 | ||
| 41 | - .. row 3 | 37 | - |
| 38 | - unsigned int | ||
| 39 | - pid | ||
| 40 | - Program ID | ||
| 42 | 41 | ||
| 43 | - ca_pid_t \* | 42 | - |
| 43 | - int | ||
| 44 | - index | ||
| 45 | - PID index. Use -1 to disable. | ||
| 44 | 46 | ||
| 45 | - Undocumented. | ||
| 46 | 47 | ||
| 47 | 48 | ||
| 48 | Description | 49 | Description |
| 49 | ----------- | 50 | ----------- |
| 50 | 51 | ||
| 51 | This ioctl is undocumented. Documentation is welcome. | 52 | .. note:: This ioctl is undocumented. Documentation is welcome. |
| 52 | 53 | ||
| 53 | 54 | ||
| 54 | Return Value | 55 | Return Value |
| @@ -7,7 +7,7 @@ CA Data Types · 6 unmodified lines | |||
| 7 | ************* | 7 | ************* |
| 8 | 8 | ||
| 9 | 9 | ||
| 10 | .. _ca-slot-info: | 10 | .. c:type:: ca_slot_info |
| 11 | 11 | ||
| 12 | ca_slot_info_t | 12 | ca_slot_info_t |
| 13 | ============== | 13 | ============== |
| @@ -31,7 +31,7 @@ ca_slot_info_t · 17 unmodified lines | |||
| 31 | } ca_slot_info_t; | 31 | } ca_slot_info_t; |
| 32 | 32 | ||
| 33 | 33 | ||
| 34 | .. _ca-descr-info: | 34 | .. c:type:: ca_descr_info |
| 35 | 35 | ||
| 36 | ca_descr_info_t | 36 | ca_descr_info_t |
| 37 | =============== | 37 | =============== |
| @@ -48,7 +48,7 @@ ca_descr_info_t · 10 unmodified lines | |||
| 48 | } ca_descr_info_t; | 48 | } ca_descr_info_t; |
| 49 | 49 | ||
| 50 | 50 | ||
| 51 | .. _ca-caps: | 51 | .. c:type:: ca_caps |
| 52 | 52 | ||
| 53 | ca_caps_t | 53 | ca_caps_t |
| 54 | ========= | 54 | ========= |
| @@ -64,7 +64,7 @@ ca_caps_t · 9 unmodified lines | |||
| 64 | } ca_cap_t; | 64 | } ca_cap_t; |
| 65 | 65 | ||
| 66 | 66 | ||
| 67 | .. _ca-msg: | 67 | .. c:type:: ca_msg |
| 68 | 68 | ||
| 69 | ca_msg_t | 69 | ca_msg_t |
| 70 | ======== | 70 | ======== |
| @@ -81,7 +81,7 @@ ca_msg_t · 10 unmodified lines | |||
| 81 | } ca_msg_t; | 81 | } ca_msg_t; |
| 82 | 82 | ||
| 83 | 83 | ||
| 84 | .. _ca-descr: | 84 | .. c:type:: ca_descr |
| 85 | 85 | ||
| 86 | ca_descr_t | 86 | ca_descr_t |
| 87 | ========== | 87 | ========== |
| @@ -96,7 +96,7 @@ ca_descr_t · 8 unmodified lines | |||
| 96 | } ca_descr_t; | 96 | } ca_descr_t; |
| 97 | 97 | ||
| 98 | 98 | ||
| 99 | .. _ca-pid: | 99 | .. c:type:: ca_pid |
| 100 | 100 | ||
| 101 | ca-pid | 101 | ca-pid |
| 102 | ====== | 102 | ====== |
| @@ -15,34 +15,18 @@ DMX_ADD_PID · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | -------- | 16 | -------- |
| 17 | 17 | ||
| 18 | .. cpp:function:: int ioctl(fd, int request = DMX_ADD_PID, __u16 *) | 18 | .. c:function:: int ioctl(fd, DMX_ADD_PID, __u16 *pid) |
| 19 | :name: DMX_ADD_PID | ||
| 19 | 20 | ||
| 20 | 21 | ||
| 21 | Arguments | 22 | Arguments |
| 22 | --------- | 23 | --------- |
| 23 | 24 | ||
| 24 | .. flat-table:: | 25 | ``fd`` |
| 25 | :header-rows: 0 | 26 | File descriptor returned by :c:func:`open() <dvb-dmx-open>`. |
| 26 | :stub-columns: 0 | ||
| 27 | 27 | ||
| 28 | 28 | ``pid`` | |
| 29 | - .. row 1 | 29 | PID number to be filtered. |
| 30 | |||
| 31 | - int fd | ||
| 32 | |||
| 33 | - File descriptor returned by a previous call to open(). | ||
| 34 | |||
| 35 | - .. row 2 | ||
| 36 | |||
| 37 | - int request | ||
| 38 | |||
| 39 | - Equals DMX_ADD_PID for this command. | ||
| 40 | |||
| 41 | - .. row 3 | ||
| 42 | |||
| 43 | - __u16 * | ||
| 44 | |||
| 45 | - PID number to be filtered. | ||
| 46 | 30 | ||
| 47 | 31 | ||
| 48 | Description | 32 | Description |
| @@ -15,23 +15,15 @@ DVB demux close() · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | -------- | 16 | -------- |
| 17 | 17 | ||
| 18 | .. cpp:function:: int close(int fd) | 18 | .. c:function:: int close(int fd) |
| 19 | :name: dvb-dmx-close | ||
| 19 | 20 | ||
| 20 | 21 | ||
| 21 | Arguments | 22 | Arguments |
| 22 | --------- | 23 | --------- |
| 23 | 24 | ||
| 24 | .. flat-table:: | 25 | ``fd`` |
| 25 | :header-rows: 0 | 26 | File descriptor returned by a previous call to :c:func:`open() <dvb-ca-open>`. |
| 26 | :stub-columns: 0 | ||
| 27 | |||
| 28 | |||
| 29 | - .. row 1 | ||
| 30 | |||
| 31 | - int fd | ||
| 32 | |||
| 33 | - File descriptor returned by a previous call to open(). | ||
| 34 | |||
| 35 | 27 | ||
| 36 | Description | 28 | Description |
| 37 | ----------- | 29 | ----------- |
| @@ -15,43 +15,34 @@ DVB demux open() · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | -------- | 16 | -------- |
| 17 | 17 | ||
| 18 | .. cpp:function:: int open(const char *deviceName, int flags) | 18 | .. c:function:: int open(const char *deviceName, int flags) |
| 19 | 19 | :name: dvb-dmx-open | |
| 20 | 20 | ||
| 21 | Arguments | 21 | Arguments |
| 22 | --------- | 22 | --------- |
| 23 | 23 | ||
| 24 | ``name`` | ||
| 25 | Name of specific DVB demux device. | ||
| 26 | |||
| 27 | ``flags`` | ||
| 28 | A bit-wise OR of the following flags: | ||
| 29 | |||
| 24 | .. flat-table:: | 30 | .. flat-table:: |
| 25 | :header-rows: 0 | 31 | :header-rows: 0 |
| 26 | :stub-columns: 0 | 32 | :stub-columns: 0 |
| 27 | 33 | ||
| 34 | - | ||
| 35 | - O_RDONLY | ||
| 36 | - read-only access | ||
| 28 | 37 | ||
| 29 | - .. row 1 | 38 | - |
| 30 | 39 | - O_RDWR | |
| 31 | - const char \*deviceName | 40 | - read/write access |
| 32 | |||
| 33 | - Name of demux device. | ||
| 34 | |||
| 35 | - .. row 2 | ||
| 36 | |||
| 37 | - int flags | ||
| 38 | |||
| 39 | - A bit-wise OR of the following flags: | ||
| 40 | |||
| 41 | - .. row 3 | ||
| 42 | |||
| 43 | - | ||
| 44 | - O_RDWR read/write access | ||
| 45 | |||
| 46 | - .. row 4 | ||
| 47 | |||
| 48 | - | ||
| 49 | - O_NONBLOCK open in non-blocking mode | ||
| 50 | |||
| 51 | - .. row 5 | ||
| 52 | 41 | ||
| 53 | - | 42 | - |
| 54 | - (blocking mode is the default) | 43 | - O_NONBLOCK |
| 44 | - open in non-blocking mode | ||
| 45 | (blocking mode is the default) | ||
| 55 | 46 | ||
| 56 | 47 | ||
| 57 | Description | 48 | Description |
| @@ -15,35 +15,20 @@ DVB demux read() · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | -------- | 16 | -------- |
| 17 | 17 | ||
| 18 | .. cpp:function:: size_t read(int fd, void *buf, size_t count) | 18 | .. c:function:: size_t read(int fd, void *buf, size_t count) |
| 19 | 19 | :name: dvb-dmx-read | |
| 20 | 20 | ||
| 21 | Arguments | 21 | Arguments |
| 22 | --------- | 22 | --------- |
| 23 | 23 | ||
| 24 | .. flat-table:: | 24 | ``fd`` |
| 25 | :header-rows: 0 | 25 | File descriptor returned by a previous call to :c:func:`open() <dvb-ca-open>`. |
| 26 | :stub-columns: 0 | ||
| 27 | |||
| 28 | |||
| 29 | - .. row 1 | ||
| 30 | |||
| 31 | - int fd | ||
| 32 | |||
| 33 | - File descriptor returned by a previous call to open(). | ||
| 34 | 26 | ||
| 35 | - .. row 2 | 27 | ``buf`` |
| 36 | 28 | Buffer to be filled | |
| 37 | - void \*buf | ||
| 38 | |||
| 39 | - Pointer to the buffer to be used for returned filtered data. | ||
| 40 | |||
| 41 | - .. row 3 | ||
| 42 | |||
| 43 | - size_t count | ||
| 44 | |||
| 45 | - Size of buf. | ||
| 46 | 29 | ||
| 30 | ``count`` | ||
| 31 | Max number of bytes to read | ||
| 47 | 32 | ||
| 48 | Description | 33 | Description |
| 49 | ----------- | 34 | ----------- |
| @@ -53,10 +38,11 @@ data. The filtered data is transferred from the driver’s internal · 3 unmodified lines | |||
| 53 | circular buffer to buf. The maximum amount of data to be transferred is | 38 | circular buffer to buf. The maximum amount of data to be transferred is |
| 54 | implied by count. | 39 | implied by count. |
| 55 | 40 | ||
| 56 | |||
| 57 | Return Value | 41 | Return Value |
| 58 | ------------ | 42 | ------------ |
| 59 | 43 | ||
| 44 | .. tabularcolumns:: |p{2.5cm}|p{15.0cm}| | ||
| 45 | |||
| 60 | .. flat-table:: | 46 | .. flat-table:: |
| 61 | :header-rows: 0 | 47 | :header-rows: 0 |
| 62 | :stub-columns: 0 | 48 | :stub-columns: 0 |
| @@ -15,35 +15,20 @@ DVB demux write() · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | -------- | 16 | -------- |
| 17 | 17 | ||
| 18 | .. cpp:function:: ssize_t write(int fd, const void *buf, size_t count) | 18 | .. c:function:: ssize_t write(int fd, const void *buf, size_t count) |
| 19 | 19 | :name: dvb-dmx-write | |
| 20 | 20 | ||
| 21 | Arguments | 21 | Arguments |
| 22 | --------- | 22 | --------- |
| 23 | 23 | ||
| 24 | .. flat-table:: | 24 | ``fd`` |
| 25 | :header-rows: 0 | 25 | File descriptor returned by a previous call to :c:func:`open() <dvb-ca-open>`. |
| 26 | :stub-columns: 0 | ||
| 27 | |||
| 28 | |||
| 29 | - .. row 1 | ||
| 30 | |||
| 31 | - int fd | ||
| 32 | |||
| 33 | - File descriptor returned by a previous call to open(). | ||
| 34 | 26 | ||
| 35 | - .. row 2 | 27 | ``buf`` |
| 36 | 28 | Buffer with data to be written | |
| 37 | - void \*buf | ||
| 38 | |||
| 39 | - Pointer to the buffer containing the Transport Stream. | ||
| 40 | |||
| 41 | - .. row 3 | ||
| 42 | |||
| 43 | - size_t count | ||
| 44 | |||
| 45 | - Size of buf. | ||
| 46 | 29 | ||
| 30 | ``count`` | ||
| 31 | Number of bytes at the buffer | ||
| 47 | 32 | ||
| 48 | Description | 33 | Description |
| 49 | ----------- | 34 | ----------- |
| @@ -59,11 +44,12 @@ The amount of data to be transferred is implied by count. · 9 unmodified lines | |||
| 59 | Return Value | 44 | Return Value |
| 60 | ------------ | 45 | ------------ |
| 61 | 46 | ||
| 47 | .. tabularcolumns:: |p{2.5cm}|p{15.0cm}| | ||
| 48 | |||
| 62 | .. flat-table:: | 49 | .. flat-table:: |
| 63 | :header-rows: 0 | 50 | :header-rows: 0 |
| 64 | :stub-columns: 0 | 51 | :stub-columns: 0 |
| 65 | 52 | ||
| 66 | |||
| 67 | - .. row 1 | 53 | - .. row 1 |
| 68 | 54 | ||
| 69 | - ``EWOULDBLOCK`` | 55 | - ``EWOULDBLOCK`` |
| @@ -15,41 +15,23 @@ DMX_GET_CAPS · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | -------- | 16 | -------- |
| 17 | 17 | ||
| 18 | .. cpp:function:: int ioctl(fd, int request = DMX_GET_CAPS, dmx_caps_t *) | 18 | .. c:function:: int ioctl(fd, DMX_GET_CAPS, struct dmx_caps *caps) |
| 19 | 19 | :name: DMX_GET_CAPS | |
| 20 | 20 | ||
| 21 | Arguments | 21 | Arguments |
| 22 | --------- | 22 | --------- |
| 23 | 23 | ||
| 24 | .. flat-table:: | 24 | ``fd`` |
| 25 | :header-rows: 0 | 25 | File descriptor returned by :c:func:`open() <dvb-dmx-open>`. |
| 26 | :stub-columns: 0 | ||
| 27 | |||
| 28 | |||
| 29 | - .. row 1 | ||
| 30 | |||
| 31 | - int fd | ||
| 32 | |||
| 33 | - File descriptor returned by a previous call to open(). | ||
| 34 | |||
| 35 | - .. row 2 | ||
| 36 | 26 | ||
| 37 | - int request | 27 | ``caps`` |
| 38 | 28 | Pointer to struct :c:type:`dmx_caps` | |
| 39 | - Equals DMX_GET_CAPS for this command. | ||
| 40 | |||
| 41 | - .. row 3 | ||
| 42 | |||
| 43 | - dmx_caps_t * | ||
| 44 | |||
| 45 | - Undocumented. | ||
| 46 | 29 | ||
| 47 | 30 | ||
| 48 | Description | 31 | Description |
| 49 | ----------- | 32 | ----------- |
| 50 | 33 | ||
| 51 | This ioctl is undocumented. Documentation is welcome. | 34 | .. note:: This ioctl is undocumented. Documentation is welcome. |
| 52 | |||
| 53 | 35 | ||
| 54 | Return Value | 36 | Return Value |
| 55 | ------------ | 37 | ------------ |
| @@ -15,34 +15,18 @@ DMX_GET_EVENT · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | -------- | 16 | -------- |
| 17 | 17 | ||
| 18 | .. cpp:function:: int ioctl( int fd, int request = DMX_GET_EVENT, struct dmx_event *ev) | 18 | .. c:function:: int ioctl( int fd, DMX_GET_EVENT, struct dmx_event *ev) |
| 19 | :name: DMX_GET_EVENT | ||
| 19 | 20 | ||
| 20 | 21 | ||
| 21 | Arguments | 22 | Arguments |
| 22 | --------- | 23 | --------- |
| 23 | 24 | ||
| 24 | .. flat-table:: | 25 | ``fd`` |
| 25 | :header-rows: 0 | 26 | File descriptor returned by :c:func:`open() <dvb-dmx-open>`. |
| 26 | :stub-columns: 0 | ||
| 27 | |||
| 28 | |||
| 29 | - .. row 1 | ||
| 30 | |||
| 31 | - int fd | ||
| 32 | |||
| 33 | - File descriptor returned by a previous call to open(). | ||
| 34 | |||
| 35 | - .. row 2 | ||
| 36 | |||
| 37 | - int request | ||
| 38 | |||
| 39 | - Equals DMX_GET_EVENT for this command. | ||
| 40 | |||
| 41 | - .. row 3 | ||
| 42 | |||
| 43 | - struct dmx_event \*ev | ||
| 44 | 27 | ||
| 45 | - Pointer to the location where the event is to be stored. | 28 | ``ev`` |
| 29 | Pointer to the location where the event is to be stored. | ||
| 46 | 30 | ||
| 47 | 31 | ||
| 48 | Description | 32 | Description |
| @@ -15,40 +15,23 @@ DMX_GET_PES_PIDS · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | -------- | 16 | -------- |
| 17 | 17 | ||
| 18 | .. cpp:function:: int ioctl(fd, int request = DMX_GET_PES_PIDS, __u16[5]) | 18 | .. c:function:: int ioctl(fd, DMX_GET_PES_PIDS, __u16 pids[5]) |
| 19 | 19 | :name: DMX_GET_PES_PIDS | |
| 20 | 20 | ||
| 21 | Arguments | 21 | Arguments |
| 22 | --------- | 22 | --------- |
| 23 | 23 | ||
| 24 | .. flat-table:: | 24 | ``fd`` |
| 25 | :header-rows: 0 | 25 | File descriptor returned by :c:func:`open() <dvb-dmx-open>`. |
| 26 | :stub-columns: 0 | ||
| 27 | |||
| 28 | |||
| 29 | - .. row 1 | ||
| 30 | |||
| 31 | - int fd | ||
| 32 | |||
| 33 | - File descriptor returned by a previous call to open(). | ||
| 34 | |||
| 35 | - .. row 2 | ||
| 36 | |||
| 37 | - int request | ||
| 38 | |||
| 39 | - Equals DMX_GET_PES_PIDS for this command. | ||
| 40 | |||
| 41 | - .. row 3 | ||
| 42 | |||
| 43 | - __u16[5] | ||
| 44 | 26 | ||
| 45 | - Undocumented. | 27 | ``pids`` |
| 28 | Undocumented. | ||
| 46 | 29 | ||
| 47 | 30 | ||
| 48 | Description | 31 | Description |
| 49 | ----------- | 32 | ----------- |
| 50 | 33 | ||
| 51 | This ioctl is undocumented. Documentation is welcome. | 34 | .. note:: This ioctl is undocumented. Documentation is welcome. |
| 52 | 35 | ||
| 53 | 36 | ||
| 54 | Return Value | 37 | Return Value |
| @@ -15,34 +15,17 @@ DMX_GET_STC · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | -------- | 16 | -------- |
| 17 | 17 | ||
| 18 | .. cpp:function:: int ioctl( int fd, int request = DMX_GET_STC, struct dmx_stc *stc) | 18 | .. c:function:: int ioctl( int fd, DMX_GET_STC, struct dmx_stc *stc) |
| 19 | 19 | :name: DMX_GET_STC | |
| 20 | 20 | ||
| 21 | Arguments | 21 | Arguments |
| 22 | --------- | 22 | --------- |
| 23 | 23 | ||
| 24 | .. flat-table:: | 24 | ``fd`` |
| 25 | :header-rows: 0 | 25 | File descriptor returned by :c:func:`open() <dvb-dmx-open>`. |
| 26 | :stub-columns: 0 | ||
| 27 | |||
| 28 | |||
| 29 | - .. row 1 | ||
| 30 | |||
| 31 | - int fd | ||
| 32 | 26 | ||
| 33 | - File descriptor returned by a previous call to open(). | 27 | ``stc`` |
| 34 | 28 | Pointer to the location where the stc is to be stored. | |
| 35 | - .. row 2 | ||
| 36 | |||
| 37 | - int request | ||
| 38 | |||
| 39 | - Equals DMX_GET_STC for this command. | ||
| 40 | |||
| 41 | - .. row 3 | ||
| 42 | |||
| 43 | - struct dmx_stc \*stc | ||
| 44 | |||
| 45 | - Pointer to the location where the stc is to be stored. | ||
| 46 | 29 | ||
| 47 | 30 | ||
| 48 | Description | 31 | Description |
| @@ -63,8 +46,6 @@ On success 0 is returned, on error -1 and the ``errno`` variable is set · 14 unmodified lines | |||
| 63 | appropriately. The generic error codes are described at the | 46 | appropriately. The generic error codes are described at the |
| 64 | :ref:`Generic Error Codes <gen-errors>` chapter. | 47 | :ref:`Generic Error Codes <gen-errors>` chapter. |
| 65 | 48 | ||
| 66 | |||
| 67 | |||
| 68 | .. flat-table:: | 49 | .. flat-table:: |
| 69 | :header-rows: 0 | 50 | :header-rows: 0 |
| 70 | :stub-columns: 0 | 51 | :stub-columns: 0 |
| @@ -15,34 +15,18 @@ DMX_REMOVE_PID · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | -------- | 16 | -------- |
| 17 | 17 | ||
| 18 | .. cpp:function:: int ioctl(fd, int request = DMX_REMOVE_PID, __u16 *) | 18 | .. c:function:: int ioctl(fd, DMX_REMOVE_PID, __u16 *pid) |
| 19 | :name: DMX_REMOVE_PID | ||
| 19 | 20 | ||
| 20 | 21 | ||
| 21 | Arguments | 22 | Arguments |
| 22 | --------- | 23 | --------- |
| 23 | 24 | ||
| 24 | .. flat-table:: | 25 | ``fd`` |
| 25 | :header-rows: 0 | 26 | File descriptor returned by :c:func:`open() <dvb-dmx-open>`. |
| 26 | :stub-columns: 0 | ||
| 27 | 27 | ||
| 28 | 28 | ``pid`` | |
| 29 | - .. row 1 | 29 | PID of the PES filter to be removed. |
| 30 | |||
| 31 | - int fd | ||
| 32 | |||
| 33 | - File descriptor returned by a previous call to open(). | ||
| 34 | |||
| 35 | - .. row 2 | ||
| 36 | |||
| 37 | - int request | ||
| 38 | |||
| 39 | - Equals DMX_REMOVE_PID for this command. | ||
| 40 | |||
| 41 | - .. row 3 | ||
| 42 | |||
| 43 | - __u16 * | ||
| 44 | |||
| 45 | - PID of the PES filter to be removed. | ||
| 46 | 30 | ||
| 47 | 31 | ||
| 48 | Description | 32 | Description |
| @@ -15,35 +15,18 @@ DMX_SET_BUFFER_SIZE · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | -------- | 16 | -------- |
| 17 | 17 | ||
| 18 | .. cpp:function:: int ioctl( int fd, int request = DMX_SET_BUFFER_SIZE, unsigned long size) | 18 | .. c:function:: int ioctl( int fd, DMX_SET_BUFFER_SIZE, unsigned long size) |
| 19 | :name: DMX_SET_BUFFER_SIZE | ||
| 19 | 20 | ||
| 20 | 21 | ||
| 21 | Arguments | 22 | Arguments |
| 22 | --------- | 23 | --------- |
| 23 | 24 | ||
| 24 | .. flat-table:: | 25 | ``fd`` |
| 25 | :header-rows: 0 | 26 | File descriptor returned by :c:func:`open() <dvb-dmx-open>`. |
| 26 | :stub-columns: 0 | ||
| 27 | |||
| 28 | |||
| 29 | - .. row 1 | ||
| 30 | |||
| 31 | - int fd | ||
| 32 | |||
| 33 | - File descriptor returned by a previous call to open(). | ||
| 34 | |||
| 35 | - .. row 2 | ||
| 36 | |||
| 37 | - int request | ||
| 38 | |||
| 39 | - Equals DMX_SET_BUFFER_SIZE for this command. | ||
| 40 | |||
| 41 | - .. row 3 | ||
| 42 | |||
| 43 | - unsigned long size | ||
| 44 | |||
| 45 | - Size of circular buffer. | ||
| 46 | 27 | ||
| 28 | ``size`` | ||
| 29 | Unsigned long size | ||
| 47 | 30 | ||
| 48 | Description | 31 | Description |
| 49 | ----------- | 32 | ----------- |
| @@ -15,34 +15,18 @@ DMX_SET_FILTER · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | -------- | 16 | -------- |
| 17 | 17 | ||
| 18 | .. cpp:function:: int ioctl( int fd, int request = DMX_SET_FILTER, struct dmx_sct_filter_params *params) | 18 | .. c:function:: int ioctl( int fd, DMX_SET_FILTER, struct dmx_sct_filter_params *params) |
| 19 | 19 | :name: DMX_SET_FILTER | |
| 20 | 20 | ||
| 21 | Arguments | 21 | Arguments |
| 22 | --------- | 22 | --------- |
| 23 | 23 | ||
| 24 | .. flat-table:: | 24 | ``fd`` |
| 25 | :header-rows: 0 | 25 | File descriptor returned by :c:func:`open() <dvb-dmx-open>`. |
| 26 | :stub-columns: 0 | ||
| 27 | |||
| 28 | |||
| 29 | - .. row 1 | ||
| 30 | |||
| 31 | - int fd | ||
| 32 | |||
| 33 | - File descriptor returned by a previous call to open(). | ||
| 34 | |||
| 35 | - .. row 2 | ||
| 36 | |||
| 37 | - int request | ||
| 38 | |||
| 39 | - Equals DMX_SET_FILTER for this command. | ||
| 40 | |||
| 41 | - .. row 3 | ||
| 42 | 26 | ||
| 43 | - struct dmx_sct_filter_params \*params | 27 | ``params`` |
| 44 | 28 | ||
| 45 | - Pointer to structure containing filter parameters. | 29 | Pointer to structure containing filter parameters. |
| 46 | 30 | ||
| 47 | 31 | ||
| 48 | Description | 32 | Description |
| @@ -15,34 +15,19 @@ DMX_SET_PES_FILTER · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | -------- | 16 | -------- |
| 17 | 17 | ||
| 18 | .. cpp:function:: int ioctl( int fd, int request = DMX_SET_PES_FILTER, struct dmx_pes_filter_params *params) | 18 | .. c:function:: int ioctl( int fd, DMX_SET_PES_FILTER, struct dmx_pes_filter_params *params) |
| 19 | :name: DMX_SET_PES_FILTER | ||
| 19 | 20 | ||
| 20 | 21 | ||
| 21 | Arguments | 22 | Arguments |
| 22 | --------- | 23 | --------- |
| 23 | 24 | ||
| 24 | .. flat-table:: | ||
| 25 | :header-rows: 0 | ||
| 26 | :stub-columns: 0 | ||
| 27 | |||
| 28 | |||
| 29 | - .. row 1 | ||
| 30 | |||
| 31 | - int fd | ||
| 32 | 25 | ||
| 33 | - File descriptor returned by a previous call to open(). | 26 | ``fd`` |
| 27 | File descriptor returned by :c:func:`open() <dvb-dmx-open>`. | ||
| 34 | 28 | ||
| 35 | - .. row 2 | 29 | ``params`` |
| 36 | 30 | Pointer to structure containing filter parameters. | |
| 37 | - int request | ||
| 38 | |||
| 39 | - Equals DMX_SET_PES_FILTER for this command. | ||
| 40 | |||
| 41 | - .. row 3 | ||
| 42 | |||
| 43 | - struct dmx_pes_filter_params \*params | ||
| 44 | |||
| 45 | - Pointer to structure containing filter parameters. | ||
| 46 | 31 | ||
| 47 | 32 | ||
| 48 | Description | 33 | Description |
| @@ -61,7 +46,7 @@ On success 0 is returned, on error -1 and the ``errno`` variable is set · 12 unmodified lines | |||
| 61 | appropriately. The generic error codes are described at the | 46 | appropriately. The generic error codes are described at the |
| 62 | :ref:`Generic Error Codes <gen-errors>` chapter. | 47 | :ref:`Generic Error Codes <gen-errors>` chapter. |
| 63 | 48 | ||
| 64 | 49 | .. tabularcolumns:: |p{2.5cm}|p{15.0cm}| | |
| 65 | 50 | ||
| 66 | .. flat-table:: | 51 | .. flat-table:: |
| 67 | :header-rows: 0 | 52 | :header-rows: 0 |
| @@ -15,40 +15,25 @@ DMX_SET_SOURCE · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | -------- | 16 | -------- |
| 17 | 17 | ||
| 18 | .. cpp:function:: int ioctl(fd, int request = DMX_SET_SOURCE, dmx_source_t *) | 18 | .. c:function:: int ioctl(fd, DMX_SET_SOURCE, struct dmx_source *src) |
| 19 | :name: DMX_SET_SOURCE | ||
| 19 | 20 | ||
| 20 | 21 | ||
| 21 | Arguments | 22 | Arguments |
| 22 | --------- | 23 | --------- |
| 23 | 24 | ||
| 24 | .. flat-table:: | ||
| 25 | :header-rows: 0 | ||
| 26 | :stub-columns: 0 | ||
| 27 | 25 | ||
| 26 | ``fd`` | ||
| 27 | File descriptor returned by :c:func:`open() <dvb-dmx-open>`. | ||
| 28 | 28 | ||
| 29 | - .. row 1 | 29 | ``src`` |
| 30 | 30 | Undocumented. | |
| 31 | - int fd | ||
| 32 | |||
| 33 | - File descriptor returned by a previous call to open(). | ||
| 34 | |||
| 35 | - .. row 2 | ||
| 36 | |||
| 37 | - int request | ||
| 38 | |||
| 39 | - Equals DMX_SET_SOURCE for this command. | ||
| 40 | |||
| 41 | - .. row 3 | ||
| 42 | |||
| 43 | - dmx_source_t * | ||
| 44 | |||
| 45 | - Undocumented. | ||
| 46 | 31 | ||
| 47 | 32 | ||
| 48 | Description | 33 | Description |
| 49 | ----------- | 34 | ----------- |
| 50 | 35 | ||
| 51 | This ioctl is undocumented. Documentation is welcome. | 36 | .. note:: This ioctl is undocumented. Documentation is welcome. |
| 52 | 37 | ||
| 53 | 38 | ||
| 54 | Return Value | 39 | Return Value |
| @@ -15,29 +15,15 @@ DMX_START · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | -------- | 16 | -------- |
| 17 | 17 | ||
| 18 | .. cpp:function:: int ioctl( int fd, int request = DMX_START) | 18 | .. c:function:: int ioctl( int fd, DMX_START) |
| 19 | :name: DMX_START | ||
| 19 | 20 | ||
| 20 | 21 | ||
| 21 | Arguments | 22 | Arguments |
| 22 | --------- | 23 | --------- |
| 23 | 24 | ||
| 24 | .. flat-table:: | 25 | ``fd`` |
| 25 | :header-rows: 0 | 26 | File descriptor returned by :c:func:`open() <dvb-dmx-open>`. |
| 26 | :stub-columns: 0 | ||
| 27 | |||
| 28 | |||
| 29 | - .. row 1 | ||
| 30 | |||
| 31 | - int fd | ||
| 32 | |||
| 33 | - File descriptor returned by a previous call to open(). | ||
| 34 | |||
| 35 | - .. row 2 | ||
| 36 | |||
| 37 | - int request | ||
| 38 | |||
| 39 | - Equals DMX_START for this command. | ||
| 40 | |||
| 41 | 27 | ||
| 42 | Description | 28 | Description |
| 43 | ----------- | 29 | ----------- |
| @@ -53,7 +39,7 @@ On success 0 is returned, on error -1 and the ``errno`` variable is set · 9 unmodified lines | |||
| 53 | appropriately. The generic error codes are described at the | 39 | appropriately. The generic error codes are described at the |
| 54 | :ref:`Generic Error Codes <gen-errors>` chapter. | 40 | :ref:`Generic Error Codes <gen-errors>` chapter. |
| 55 | 41 | ||
| 56 | 42 | .. tabularcolumns:: |p{2.5cm}|p{15.0cm}| | |
| 57 | 43 | ||
| 58 | .. flat-table:: | 44 | .. flat-table:: |
| 59 | :header-rows: 0 | 45 | :header-rows: 0 |
| @@ -15,29 +15,15 @@ DMX_STOP · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | -------- | 16 | -------- |
| 17 | 17 | ||
| 18 | .. cpp:function:: int ioctl( int fd, int request = DMX_STOP) | 18 | .. c:function:: int ioctl( int fd, DMX_STOP) |
| 19 | :name: DMX_STOP | ||
| 19 | 20 | ||
| 20 | 21 | ||
| 21 | Arguments | 22 | Arguments |
| 22 | --------- | 23 | --------- |
| 23 | 24 | ||
| 24 | .. flat-table:: | 25 | ``fd`` |
| 25 | :header-rows: 0 | 26 | File descriptor returned by :c:func:`open() <dvb-dmx-open>`. |
| 26 | :stub-columns: 0 | ||
| 27 | |||
| 28 | |||
| 29 | - .. row 1 | ||
| 30 | |||
| 31 | - int fd | ||
| 32 | |||
| 33 | - File descriptor returned by a previous call to open(). | ||
| 34 | |||
| 35 | - .. row 2 | ||
| 36 | |||
| 37 | - int request | ||
| 38 | |||
| 39 | - Equals DMX_STOP for this command. | ||
| 40 | |||
| 41 | 27 | ||
| 42 | Description | 28 | Description |
| 43 | ----------- | 29 | ----------- |
| @@ -6,14 +6,12 @@ · 5 unmodified lines | |||
| 6 | Demux Data Types | 6 | Demux Data Types |
| 7 | **************** | 7 | **************** |
| 8 | 8 | ||
| 9 | |||
| 10 | .. _dmx-output-t: | ||
| 11 | |||
| 12 | Output for the demux | 9 | Output for the demux |
| 13 | ==================== | 10 | ==================== |
| 14 | 11 | ||
| 12 | .. c:type:: dmx_output | ||
| 15 | 13 | ||
| 16 | .. _dmx-output: | 14 | .. tabularcolumns:: |p{5.0cm}|p{12.5cm}| |
| 17 | 15 | ||
| 18 | .. flat-table:: enum dmx_output | 16 | .. flat-table:: enum dmx_output |
| 19 | :header-rows: 1 | 17 | :header-rows: 1 |
| @@ -65,12 +63,10 @@ Output for the demux · 45 unmodified lines | |||
| 65 | from the DMX device. | 63 | from the DMX device. |
| 66 | 64 | ||
| 67 | 65 | ||
| 68 | |||
| 69 | .. _dmx-input-t: | ||
| 70 | |||
| 71 | dmx_input_t | 66 | dmx_input_t |
| 72 | =========== | 67 | =========== |
| 73 | 68 | ||
| 69 | .. c:type:: dmx_input | ||
| 74 | 70 | ||
| 75 | .. code-block:: c | 71 | .. code-block:: c |
| 76 | 72 | ||
| @@ -81,11 +77,11 @@ dmx_input_t · 4 unmodified lines | |||
| 81 | } dmx_input_t; | 77 | } dmx_input_t; |
| 82 | 78 | ||
| 83 | 79 | ||
| 84 | .. _dmx-pes-type-t: | ||
| 85 | |||
| 86 | dmx_pes_type_t | 80 | dmx_pes_type_t |
| 87 | ============== | 81 | ============== |
| 88 | 82 | ||
| 83 | .. c:type:: dmx_pes_type | ||
| 84 | |||
| 89 | 85 | ||
| 90 | .. code-block:: c | 86 | .. code-block:: c |
| 91 | 87 | ||
| @@ -119,11 +115,10 @@ dmx_pes_type_t · 27 unmodified lines | |||
| 119 | } dmx_pes_type_t; | 115 | } dmx_pes_type_t; |
| 120 | 116 | ||
| 121 | 117 | ||
| 122 | .. _dmx-filter: | ||
| 123 | |||
| 124 | struct dmx_filter | 118 | struct dmx_filter |
| 125 | ================= | 119 | ================= |
| 126 | 120 | ||
| 121 | .. c:type:: dmx_filter | ||
| 127 | 122 | ||
| 128 | .. code-block:: c | 123 | .. code-block:: c |
| 129 | 124 | ||
| @@ -135,7 +130,7 @@ struct dmx_filter · 5 unmodified lines | |||
| 135 | } dmx_filter_t; | 130 | } dmx_filter_t; |
| 136 | 131 | ||
| 137 | 132 | ||
| 138 | .. _dmx-sct-filter-params: | 133 | .. c:type:: dmx_sct_filter_params |
| 139 | 134 | ||
| 140 | struct dmx_sct_filter_params | 135 | struct dmx_sct_filter_params |
| 141 | ============================ | 136 | ============================ |
| @@ -156,11 +151,10 @@ struct dmx_sct_filter_params · 14 unmodified lines | |||
| 156 | }; | 151 | }; |
| 157 | 152 | ||
| 158 | 153 | ||
| 159 | .. _dmx-pes-filter-params: | ||
| 160 | |||
| 161 | struct dmx_pes_filter_params | 154 | struct dmx_pes_filter_params |
| 162 | ============================ | 155 | ============================ |
| 163 | 156 | ||
| 157 | .. c:type:: dmx_pes_filter_params | ||
| 164 | 158 | ||
| 165 | .. code-block:: c | 159 | .. code-block:: c |
| 166 | 160 | ||
| @@ -174,11 +168,10 @@ struct dmx_pes_filter_params · 7 unmodified lines | |||
| 174 | }; | 168 | }; |
| 175 | 169 | ||
| 176 | 170 | ||
| 177 | .. _dmx-event: | ||
| 178 | |||
| 179 | struct dmx_event | 171 | struct dmx_event |
| 180 | ================ | 172 | ================ |
| 181 | 173 | ||
| 174 | .. c:type:: dmx_event | ||
| 182 | 175 | ||
| 183 | .. code-block:: c | 176 | .. code-block:: c |
| 184 | 177 | ||
| @@ -193,11 +186,10 @@ struct dmx_event · 8 unmodified lines | |||
| 193 | }; | 186 | }; |
| 194 | 187 | ||
| 195 | 188 | ||
| 196 | .. _dmx-stc: | ||
| 197 | |||
| 198 | struct dmx_stc | 189 | struct dmx_stc |
| 199 | ============== | 190 | ============== |
| 200 | 191 | ||
| 192 | .. c:type:: dmx_stc | ||
| 201 | 193 | ||
| 202 | .. code-block:: c | 194 | .. code-block:: c |
| 203 | 195 | ||
| @@ -208,11 +200,10 @@ struct dmx_stc · 4 unmodified lines | |||
| 208 | }; | 200 | }; |
| 209 | 201 | ||
| 210 | 202 | ||
| 211 | .. _dmx-caps: | ||
| 212 | |||
| 213 | struct dmx_caps | 203 | struct dmx_caps |
| 214 | =============== | 204 | =============== |
| 215 | 205 | ||
| 206 | .. c:type:: dmx_caps | ||
| 216 | 207 | ||
| 217 | .. code-block:: c | 208 | .. code-block:: c |
| 218 | 209 | ||
| @@ -222,15 +213,14 @@ struct dmx_caps · 3 unmodified lines | |||
| 222 | } dmx_caps_t; | 213 | } dmx_caps_t; |
| 223 | 214 | ||
| 224 | 215 | ||
| 225 | .. _dmx-source-t: | 216 | enum dmx_source |
| 226 | 217 | =============== | |
| 227 | enum dmx_source_t | ||
| 228 | ================= | ||
| 229 | 218 | ||
| 219 | .. c:type:: dmx_source | ||
| 230 | 220 | ||
| 231 | .. code-block:: c | 221 | .. code-block:: c |
| 232 | 222 | ||
| 233 | typedef enum { | 223 | typedef enum dmx_source { |
| 234 | DMX_SOURCE_FRONT0 = 0, | 224 | DMX_SOURCE_FRONT0 = 0, |
| 235 | DMX_SOURCE_FRONT1, | 225 | DMX_SOURCE_FRONT1, |
| 236 | DMX_SOURCE_FRONT2, | 226 | DMX_SOURCE_FRONT2, |
| @@ -1,6 +1,6 @@ | |||
| 1 | .. -*- coding: utf-8; mode: rst -*- | 1 | .. -*- coding: utf-8; mode: rst -*- |
| 2 | 2 | ||
| 3 | .. _dtv-fe-stats: | 3 | .. c:type:: dtv_fe_stats |
| 4 | 4 | ||
| 5 | ******************* | 5 | ******************* |
| 6 | struct dtv_fe_stats | 6 | struct dtv_fe_stats |
| @@ -1,6 +1,6 @@ | |||
| 1 | .. -*- coding: utf-8; mode: rst -*- | 1 | .. -*- coding: utf-8; mode: rst -*- |
| 2 | 2 | ||
| 3 | .. _dtv-properties: | 3 | .. c:type:: dtv_properties |
| 4 | 4 | ||
| 5 | ********************* | 5 | ********************* |
| 6 | struct dtv_properties | 6 | struct dtv_properties |
| @@ -1,6 +1,6 @@ | |||
| 1 | .. -*- coding: utf-8; mode: rst -*- | 1 | .. -*- coding: utf-8; mode: rst -*- |
| 2 | 2 | ||
| 3 | .. _dtv-property: | 3 | .. c:type:: dtv_property |
| 4 | 4 | ||
| 5 | ******************* | 5 | ******************* |
| 6 | struct dtv_property | 6 | struct dtv_property |
| @@ -1,6 +1,6 @@ | |||
| 1 | .. -*- coding: utf-8; mode: rst -*- | 1 | .. -*- coding: utf-8; mode: rst -*- |
| 2 | 2 | ||
| 3 | .. _dtv-stats: | 3 | .. c:type:: dtv_stats |
| 4 | 4 | ||
| 5 | **************** | 5 | **************** |
| 6 | struct dtv_stats | 6 | struct dtv_stats |
| @@ -17,7 +17,9 @@ using :ref:`FE_READ_STATUS`. · 16 unmodified lines | |||
| 17 | Signal statistics are provided via | 17 | Signal statistics are provided via |
| 18 | :ref:`FE_GET_PROPERTY`. | 18 | :ref:`FE_GET_PROPERTY`. |
| 19 | 19 | ||
| 20 | .. note:: Most statistics require the demodulator to be fully locked | 20 | .. note:: |
| 21 | |||
| 22 | Most statistics require the demodulator to be fully locked | ||
| 21 | (e. g. with FE_HAS_LOCK bit set). See | 23 | (e. g. with FE_HAS_LOCK bit set). See |
| 22 | :ref:`Frontend statistics indicators <frontend-stat-properties>` for | 24 | :ref:`Frontend statistics indicators <frontend-stat-properties>` for |
| 23 | more details. | 25 | more details. |
| @@ -1,6 +1,6 @@ | |||
| 1 | .. -*- coding: utf-8; mode: rst -*- | 1 | .. -*- coding: utf-8; mode: rst -*- |
| 2 | 2 | ||
| 3 | .. _dvb-frontend-event: | 3 | .. c:type:: dvb_frontend_event |
| 4 | 4 | ||
| 5 | *************** | 5 | *************** |
| 6 | frontend events | 6 | frontend events |
| @@ -1,6 +1,6 @@ | |||
| 1 | .. -*- coding: utf-8; mode: rst -*- | 1 | .. -*- coding: utf-8; mode: rst -*- |
| 2 | 2 | ||
| 3 | .. _dvb-frontend-parameters: | 3 | .. c:type:: dvb_frontend_parameters |
| 4 | 4 | ||
| 5 | ******************* | 5 | ******************* |
| 6 | frontend parameters | 6 | frontend parameters |
| @@ -49,7 +49,7 @@ frontends the ``frequency`` specifies the absolute frequency and is · 42 unmodified lines | |||
| 49 | given in Hz. | 49 | given in Hz. |
| 50 | 50 | ||
| 51 | 51 | ||
| 52 | .. _dvb-qpsk-parameters: | 52 | .. c:type:: dvb_qpsk_parameters |
| 53 | 53 | ||
| 54 | QPSK parameters | 54 | QPSK parameters |
| 55 | =============== | 55 | =============== |
| @@ -66,7 +66,7 @@ structure: · 10 unmodified lines | |||
| 66 | }; | 66 | }; |
| 67 | 67 | ||
| 68 | 68 | ||
| 69 | .. _dvb-qam-parameters: | 69 | .. c:type:: dvb_qam_parameters |
| 70 | 70 | ||
| 71 | QAM parameters | 71 | QAM parameters |
| 72 | ============== | 72 | ============== |
| @@ -83,7 +83,7 @@ for cable QAM frontend you use the ``dvb_qam_parameters`` structure: · 10 unmodified lines | |||
| 83 | }; | 83 | }; |
| 84 | 84 | ||
| 85 | 85 | ||
| 86 | .. _dvb-vsb-parameters: | 86 | .. c:type:: dvb_vsb_parameters |
| 87 | 87 | ||
| 88 | VSB parameters | 88 | VSB parameters |
| 89 | ============== | 89 | ============== |
| @@ -98,7 +98,7 @@ ATSC frontends are supported by the ``dvb_vsb_parameters`` structure: · 8 unmodified lines | |||
| 98 | }; | 98 | }; |
| 99 | 99 | ||
| 100 | 100 | ||
| 101 | .. _dvb-ofdm-parameters: | 101 | .. c:type:: dvb_ofdm_parameters |
| 102 | 102 | ||
| 103 | OFDM parameters | 103 | OFDM parameters |
| 104 | =============== | 104 | =============== |
| @@ -8,7 +8,9 @@ · 7 unmodified lines | |||
| 8 | Part II - Digital TV API | 8 | Part II - Digital TV API |
| 9 | ######################## | 9 | ######################## |
| 10 | 10 | ||
| 11 | .. note:: This API is also known as **DVB API**, although it is generic | 11 | .. note:: |
| 12 | |||
| 13 | This API is also known as **DVB API**, although it is generic | ||
| 12 | enough to support all digital TV standards. | 14 | enough to support all digital TV standards. |
| 13 | 15 | ||
| 14 | **Version 5.10** | 16 | **Version 5.10** |
| @@ -20,8 +20,10 @@ Also, the union didn't have any space left to be expanded without · 19 unmodified lines | |||
| 20 | breaking userspace. So, the decision was to deprecate the legacy | 20 | breaking userspace. So, the decision was to deprecate the legacy |
| 21 | union/struct based approach, in favor of a properties set approach. | 21 | union/struct based approach, in favor of a properties set approach. |
| 22 | 22 | ||
| 23 | .. note:: On Linux DVB API version 3, setting a frontend were done via | 23 | .. note:: |
| 24 | :ref:`struct dvb_frontend_parameters <dvb-frontend-parameters>`. | 24 | |
| 25 | On Linux DVB API version 3, setting a frontend were done via | ||
| 26 | struct :c:type:`dvb_frontend_parameters`. | ||
| 25 | This got replaced on version 5 (also called "S2API", as this API were | 27 | This got replaced on version 5 (also called "S2API", as this API were |
| 26 | added originally_enabled to provide support for DVB-S2), because the | 28 | added originally_enabled to provide support for DVB-S2), because the |
| 27 | old API has a very limited support to new standards and new hardware. | 29 | old API has a very limited support to new standards and new hardware. |
| @@ -9,7 +9,9 @@ Examples · 8 unmodified lines | |||
| 9 | In this section we would like to present some examples for using the DVB | 9 | In this section we would like to present some examples for using the DVB |
| 10 | API. | 10 | API. |
| 11 | 11 | ||
| 12 | ..note:: This section is out of date, and the code below won't even | 12 | .. note:: |
| 13 | |||
| 14 | This section is out of date, and the code below won't even | ||
| 13 | compile. Please refer to the | 15 | compile. Please refer to the |
| 14 | `libdvbv5 <https://linuxtv.org/docs/libdvbv5/index.html>`__ for | 16 | `libdvbv5 <https://linuxtv.org/docs/libdvbv5/index.html>`__ for |
| 15 | updated/recommended examples. | 17 | updated/recommended examples. |
| @@ -1,13 +1,10 @@ | |||
| 1 | .. -*- coding: utf-8; mode: rst -*- | 1 | .. -*- coding: utf-8; mode: rst -*- |
| 2 | 2 | ||
| 3 | .. _fe-bandwidth-t: | ||
| 4 | |||
| 5 | ****************** | 3 | ****************** |
| 6 | Frontend bandwidth | 4 | Frontend bandwidth |
| 7 | ****************** | 5 | ****************** |
| 8 | 6 | ||
| 9 | 7 | .. c:type:: fe_bandwidth | |
| 10 | .. _fe-bandwidth: | ||
| 11 | 8 | ||
| 12 | .. flat-table:: enum fe_bandwidth | 9 | .. flat-table:: enum fe_bandwidth |
| 13 | :header-rows: 1 | 10 | :header-rows: 1 |
| @@ -15,7 +15,8 @@ FE_DISEQC_RECV_SLAVE_REPLY - Receives reply from a DiSEqC 2.0 command · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | ======== | 16 | ======== |
| 17 | 17 | ||
| 18 | .. cpp:function:: int ioctl( int fd, int request, struct dvb_diseqc_slave_reply *argp ) | 18 | .. c:function:: int ioctl( int fd, FE_DISEQC_RECV_SLAVE_REPLY, struct dvb_diseqc_slave_reply *argp ) |
| 19 | :name: FE_DISEQC_RECV_SLAVE_REPLY | ||
| 19 | 20 | ||
| 20 | 21 | ||
| 21 | Arguments | 22 | Arguments |
| @@ -24,12 +25,9 @@ Arguments · 2 unmodified lines | |||
| 24 | ``fd`` | 25 | ``fd`` |
| 25 | File descriptor returned by :ref:`open() <frontend_f_open>`. | 26 | File descriptor returned by :ref:`open() <frontend_f_open>`. |
| 26 | 27 | ||
| 27 | ``request`` | ||
| 28 | FE_DISEQC_RECV_SLAVE_REPLY | ||
| 29 | |||
| 30 | ``argp`` | 28 | ``argp`` |
| 31 | pointer to struct | 29 | pointer to struct |
| 32 | :ref:`dvb_diseqc_slave_reply <dvb-diseqc-slave-reply>` | 30 | :c:type:`dvb_diseqc_slave_reply` |
| 33 | 31 | ||
| 34 | 32 | ||
| 35 | Description | 33 | Description |
| @@ -37,10 +35,9 @@ Description · 1 unmodified line | |||
| 37 | 35 | ||
| 38 | Receives reply from a DiSEqC 2.0 command. | 36 | Receives reply from a DiSEqC 2.0 command. |
| 39 | 37 | ||
| 40 | .. _dvb-diseqc-slave-reply: | 38 | .. c:type:: dvb_diseqc_slave_reply |
| 41 | 39 | ||
| 42 | struct dvb_diseqc_slave_reply | 40 | .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| |
| 43 | ----------------------------- | ||
| 44 | 41 | ||
| 45 | .. flat-table:: struct dvb_diseqc_slave_reply | 42 | .. flat-table:: struct dvb_diseqc_slave_reply |
| 46 | :header-rows: 0 | 43 | :header-rows: 0 |
| @@ -15,7 +15,8 @@ FE_DISEQC_RESET_OVERLOAD - Restores the power to the antenna subsystem, if it wa · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | ======== | 16 | ======== |
| 17 | 17 | ||
| 18 | .. cpp:function:: int ioctl( int fd, int request, NULL ) | 18 | .. c:function:: int ioctl( int fd, FE_DISEQC_RESET_OVERLOAD, NULL ) |
| 19 | :name: FE_DISEQC_RESET_OVERLOAD | ||
| 19 | 20 | ||
| 20 | 21 | ||
| 21 | Arguments | 22 | Arguments |
| @@ -24,10 +25,6 @@ Arguments · 2 unmodified lines | |||
| 24 | ``fd`` | 25 | ``fd`` |
| 25 | File descriptor returned by :ref:`open() <frontend_f_open>`. | 26 | File descriptor returned by :ref:`open() <frontend_f_open>`. |
| 26 | 27 | ||
| 27 | ``request`` | ||
| 28 | FE_DISEQC_RESET_OVERLOAD | ||
| 29 | |||
| 30 | |||
| 31 | Description | 28 | Description |
| 32 | =========== | 29 | =========== |
| 33 | 30 | ||
| @@ -15,7 +15,8 @@ FE_DISEQC_SEND_BURST - Sends a 22KHz tone burst for 2x1 mini DiSEqC satellite se · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | ======== | 16 | ======== |
| 17 | 17 | ||
| 18 | .. cpp:function:: int ioctl( int fd, int request, enum fe_sec_mini_cmd *tone ) | 18 | .. c:function:: int ioctl( int fd, FE_DISEQC_SEND_BURST, enum fe_sec_mini_cmd *tone ) |
| 19 | :name: FE_DISEQC_SEND_BURST | ||
| 19 | 20 | ||
| 20 | 21 | ||
| 21 | Arguments | 22 | Arguments |
| @@ -24,11 +25,8 @@ Arguments · 2 unmodified lines | |||
| 24 | ``fd`` | 25 | ``fd`` |
| 25 | File descriptor returned by :ref:`open() <frontend_f_open>`. | 26 | File descriptor returned by :ref:`open() <frontend_f_open>`. |
| 26 | 27 | ||
| 27 | ``request`` | ||
| 28 | FE_DISEQC_SEND_BURST | ||
| 29 | |||
| 30 | ``tone`` | 28 | ``tone`` |
| 31 | pointer to enum :ref:`fe_sec_mini_cmd <fe-sec-mini-cmd>` | 29 | pointer to enum :c:type:`fe_sec_mini_cmd` |
| 32 | 30 | ||
| 33 | 31 | ||
| 34 | Description | 32 | Description |
| @@ -41,12 +39,7 @@ read/write permissions. · 6 unmodified lines | |||
| 41 | It provides support for what's specified at | 39 | It provides support for what's specified at |
| 42 | `Digital Satellite Equipment Control (DiSEqC) - Simple "ToneBurst" Detection Circuit specification. <http://www.eutelsat.com/files/contributed/satellites/pdf/Diseqc/associated%20docs/simple_tone_burst_detec.pdf>`__ | 40 | `Digital Satellite Equipment Control (DiSEqC) - Simple "ToneBurst" Detection Circuit specification. <http://www.eutelsat.com/files/contributed/satellites/pdf/Diseqc/associated%20docs/simple_tone_burst_detec.pdf>`__ |
| 43 | 41 | ||
| 44 | .. _fe-sec-mini-cmd-t: | 42 | .. c:type:: fe_sec_mini_cmd |
| 45 | |||
| 46 | enum fe_sec_mini_cmd | ||
| 47 | ==================== | ||
| 48 | |||
| 49 | .. _fe-sec-mini-cmd: | ||
| 50 | 43 | ||
| 51 | .. flat-table:: enum fe_sec_mini_cmd | 44 | .. flat-table:: enum fe_sec_mini_cmd |
| 52 | :header-rows: 1 | 45 | :header-rows: 1 |
| @@ -15,7 +15,8 @@ FE_DISEQC_SEND_MASTER_CMD - Sends a DiSEqC command · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | ======== | 16 | ======== |
| 17 | 17 | ||
| 18 | .. cpp:function:: int ioctl( int fd, int request, struct dvb_diseqc_master_cmd *argp ) | 18 | .. c:function:: int ioctl( int fd, FE_DISEQC_SEND_MASTER_CMD, struct dvb_diseqc_master_cmd *argp ) |
| 19 | :name: FE_DISEQC_SEND_MASTER_CMD | ||
| 19 | 20 | ||
| 20 | 21 | ||
| 21 | Arguments | 22 | Arguments |
| @@ -24,12 +25,9 @@ Arguments · 2 unmodified lines | |||
| 24 | ``fd`` | 25 | ``fd`` |
| 25 | File descriptor returned by :ref:`open() <frontend_f_open>`. | 26 | File descriptor returned by :ref:`open() <frontend_f_open>`. |
| 26 | 27 | ||
| 27 | ``request`` | ||
| 28 | FE_DISEQC_SEND_MASTER_CMD | ||
| 29 | |||
| 30 | ``argp`` | 28 | ``argp`` |
| 31 | pointer to struct | 29 | pointer to struct |
| 32 | :ref:`dvb_diseqc_master_cmd <dvb-diseqc-master-cmd>` | 30 | :c:type:`dvb_diseqc_master_cmd` |
| 33 | 31 | ||
| 34 | 32 | ||
| 35 | Description | 33 | Description |
| @@ -37,10 +35,10 @@ Description · 1 unmodified line | |||
| 37 | 35 | ||
| 38 | Sends a DiSEqC command to the antenna subsystem. | 36 | Sends a DiSEqC command to the antenna subsystem. |
| 39 | 37 | ||
| 40 | .. _dvb-diseqc-master-cmd: | ||
| 41 | 38 | ||
| 42 | struct dvb_diseqc_master_cmd | 39 | .. c:type:: dvb_diseqc_master_cmd |
| 43 | ============================ | 40 | |
| 41 | .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| | ||
| 44 | 42 | ||
| 45 | .. flat-table:: struct dvb_diseqc_master_cmd | 43 | .. flat-table:: struct dvb_diseqc_master_cmd |
| 46 | :header-rows: 0 | 44 | :header-rows: 0 |
| @@ -15,22 +15,18 @@ FE_DISHNETWORK_SEND_LEGACY_CMD · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | ======== | 16 | ======== |
| 17 | 17 | ||
| 18 | .. cpp:function:: int ioctl(int fd, int request = FE_DISHNETWORK_SEND_LEGACY_CMD, unsigned long cmd) | 18 | .. c:function:: int ioctl(int fd, FE_DISHNETWORK_SEND_LEGACY_CMD, unsigned long cmd) |
| 19 | :name: FE_DISHNETWORK_SEND_LEGACY_CMD | ||
| 19 | 20 | ||
| 20 | 21 | ||
| 21 | Arguments | 22 | Arguments |
| 22 | ========= | 23 | ========= |
| 23 | 24 | ||
| 24 | .. flat-table:: | 25 | ``fd`` |
| 25 | :header-rows: 0 | 26 | File descriptor returned by :c:func:`open() <dvb-fe-open>`. |
| 26 | :stub-columns: 0 | ||
| 27 | 27 | ||
| 28 | 28 | ``cmd`` | |
| 29 | - .. row 1 | 29 | Sends the specified raw cmd to the dish via DISEqC. |
| 30 | |||
| 31 | - unsigned long cmd | ||
| 32 | |||
| 33 | - sends the specified raw cmd to the dish via DISEqC. | ||
| 34 | 30 | ||
| 35 | 31 | ||
| 36 | Description | 32 | Description |
| @@ -15,7 +15,8 @@ FE_ENABLE_HIGH_LNB_VOLTAGE - Select output DC level between normal LNBf voltages · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | ======== | 16 | ======== |
| 17 | 17 | ||
| 18 | .. cpp:function:: int ioctl( int fd, int request, unsigned int high ) | 18 | .. c:function:: int ioctl( int fd, FE_ENABLE_HIGH_LNB_VOLTAGE, unsigned int high ) |
| 19 | :name: FE_ENABLE_HIGH_LNB_VOLTAGE | ||
| 19 | 20 | ||
| 20 | 21 | ||
| 21 | Arguments | 22 | Arguments |
| @@ -24,9 +25,6 @@ Arguments · 2 unmodified lines | |||
| 24 | ``fd`` | 25 | ``fd`` |
| 25 | File descriptor returned by :ref:`open() <frontend_f_open>`. | 26 | File descriptor returned by :ref:`open() <frontend_f_open>`. |
| 26 | 27 | ||
| 27 | ``request`` | ||
| 28 | FE_ENABLE_HIGH_LNB_VOLTAGE | ||
| 29 | |||
| 30 | ``high`` | 28 | ``high`` |
| 31 | Valid flags: | 29 | Valid flags: |
| 32 | 30 | ||
| @@ -11,43 +11,24 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | FE_GET_EVENT | 12 | FE_GET_EVENT |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated. | ||
| 15 | |||
| 14 | 16 | ||
| 15 | Synopsis | 17 | Synopsis |
| 16 | ======== | 18 | ======== |
| 17 | 19 | ||
| 18 | .. cpp:function:: int ioctl(int fd, int request = QPSK_GET_EVENT, struct dvb_frontend_event *ev) | 20 | .. c:function:: int ioctl(int fd, FE_GET_EVENT, struct dvb_frontend_event *ev) |
| 21 | :name: FE_GET_EVENT | ||
| 19 | 22 | ||
| 20 | 23 | ||
| 21 | Arguments | 24 | Arguments |
| 22 | ========= | 25 | ========= |
| 23 | 26 | ||
| 24 | .. flat-table:: | 27 | ``fd`` |
| 25 | :header-rows: 0 | 28 | File descriptor returned by :c:func:`open() <dvb-fe-open>`. |
| 26 | :stub-columns: 0 | ||
| 27 | |||
| 28 | |||
| 29 | - .. row 1 | ||
| 30 | |||
| 31 | - int fd | ||
| 32 | |||
| 33 | - File descriptor returned by a previous call to open(). | ||
| 34 | |||
| 35 | - .. row 2 | ||
| 36 | |||
| 37 | - int request | ||
| 38 | |||
| 39 | - Equals :ref:`FE_GET_EVENT` for this command. | ||
| 40 | |||
| 41 | - .. row 3 | ||
| 42 | |||
| 43 | - struct dvb_frontend_event \*ev | ||
| 44 | |||
| 45 | - Points to the location where the event, | ||
| 46 | |||
| 47 | - .. row 4 | ||
| 48 | 29 | ||
| 49 | - | 30 | ``ev`` |
| 50 | - if any, is to be stored. | 31 | Points to the location where the event, if any, is to be stored. |
| 51 | 32 | ||
| 52 | 33 | ||
| 53 | Description | 34 | Description |
| @@ -11,39 +11,25 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | FE_GET_FRONTEND | 12 | FE_GET_FRONTEND |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated. | ||
| 15 | |||
| 14 | 16 | ||
| 15 | Synopsis | 17 | Synopsis |
| 16 | ======== | 18 | ======== |
| 17 | 19 | ||
| 18 | .. cpp:function:: int ioctl(int fd, int request = FE_GET_FRONTEND, struct dvb_frontend_parameters *p) | 20 | .. c:function:: int ioctl(int fd, FE_GET_FRONTEND, struct dvb_frontend_parameters *p) |
| 21 | :name: FE_GET_FRONTEND | ||
| 19 | 22 | ||
| 20 | 23 | ||
| 21 | Arguments | 24 | Arguments |
| 22 | ========= | 25 | ========= |
| 23 | 26 | ||
| 24 | .. flat-table:: | 27 | ``fd`` |
| 25 | :header-rows: 0 | 28 | File descriptor returned by :c:func:`open() <dvb-fe-open>`. |
| 26 | :stub-columns: 0 | ||
| 27 | |||
| 28 | |||
| 29 | - .. row 1 | ||
| 30 | |||
| 31 | - int fd | ||
| 32 | |||
| 33 | - File descriptor returned by a previous call to open(). | ||
| 34 | |||
| 35 | - .. row 2 | ||
| 36 | |||
| 37 | - int request | ||
| 38 | |||
| 39 | - Equals :ref:`FE_SET_FRONTEND` for this | ||
| 40 | command. | ||
| 41 | |||
| 42 | - .. row 3 | ||
| 43 | 29 | ||
| 44 | - struct dvb_frontend_parameters \*p | ||
| 45 | 30 | ||
| 46 | - Points to parameters for tuning operation. | 31 | ``p`` |
| 32 | Points to parameters for tuning operation. | ||
| 47 | 33 | ||
| 48 | 34 | ||
| 49 | Description | 35 | Description |
| @@ -15,7 +15,8 @@ FE_GET_INFO - Query DVB frontend capabilities and returns information about the · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | ======== | 16 | ======== |
| 17 | 17 | ||
| 18 | .. cpp:function:: int ioctl( int fd, int request, struct dvb_frontend_info *argp ) | 18 | .. c:function:: int ioctl( int fd, FE_GET_INFO, struct dvb_frontend_info *argp ) |
| 19 | :name: FE_GET_INFO | ||
| 19 | 20 | ||
| 20 | 21 | ||
| 21 | Arguments | 22 | Arguments |
| @@ -24,12 +25,9 @@ Arguments · 2 unmodified lines | |||
| 24 | ``fd`` | 25 | ``fd`` |
| 25 | File descriptor returned by :ref:`open() <frontend_f_open>`. | 26 | File descriptor returned by :ref:`open() <frontend_f_open>`. |
| 26 | 27 | ||
| 27 | ``request`` | ||
| 28 | FE_GET_INFO | ||
| 29 | |||
| 30 | ``argp`` | 28 | ``argp`` |
| 31 | pointer to struct struct | 29 | pointer to struct struct |
| 32 | :ref:`dvb_frontend_info <dvb-frontend-info>` | 30 | :c:type:`dvb_frontend_info` |
| 33 | 31 | ||
| 34 | 32 | ||
| 35 | Description | 33 | Description |
| @@ -42,10 +40,9 @@ takes a pointer to dvb_frontend_info which is filled by the driver. · 6 unmodified lines | |||
| 42 | When the driver is not compatible with this specification the ioctl | 40 | When the driver is not compatible with this specification the ioctl |
| 43 | returns an error. | 41 | returns an error. |
| 44 | 42 | ||
| 45 | .. _dvb-frontend-info: | 43 | .. c:type:: dvb_frontend_info |
| 46 | 44 | ||
| 47 | struct dvb_frontend_info | 45 | .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| |
| 48 | ======================== | ||
| 49 | 46 | ||
| 50 | .. flat-table:: struct dvb_frontend_info | 47 | .. flat-table:: struct dvb_frontend_info |
| 51 | :header-rows: 0 | 48 | :header-rows: 0 |
| @@ -137,18 +134,18 @@ struct dvb_frontend_info · 85 unmodified lines | |||
| 137 | 134 | ||
| 138 | - .. row 11 | 135 | - .. row 11 |
| 139 | 136 | ||
| 140 | - enum :ref:`fe_caps <fe-caps>` | 137 | - enum :c:type:`fe_caps` |
| 141 | 138 | ||
| 142 | - caps | 139 | - caps |
| 143 | 140 | ||
| 144 | - Capabilities supported by the frontend | 141 | - Capabilities supported by the frontend |
| 145 | 142 | ||
| 146 | 143 | ||
| 147 | .. note:: The frequencies are specified in Hz for Terrestrial and Cable | 144 | .. note:: |
| 148 | systems. They're specified in kHz for Satellite systems | ||
| 149 | 145 | ||
| 146 | The frequencies are specified in Hz for Terrestrial and Cable | ||
| 147 | systems. They're specified in kHz for Satellite systems | ||
| 150 | 148 | ||
| 151 | .. _fe-caps-t: | ||
| 152 | 149 | ||
| 153 | frontend capabilities | 150 | frontend capabilities |
| 154 | ===================== | 151 | ===================== |
| @@ -156,8 +153,9 @@ frontend capabilities · 1 unmodified line | |||
| 156 | Capabilities describe what a frontend can do. Some capabilities are | 153 | Capabilities describe what a frontend can do. Some capabilities are |
| 157 | supported only on some specific frontend types. | 154 | supported only on some specific frontend types. |
| 158 | 155 | ||
| 156 | .. c:type:: fe_caps | ||
| 159 | 157 | ||
| 160 | .. _fe-caps: | 158 | .. tabularcolumns:: |p{6.5cm}|p{11.0cm}| |
| 161 | 159 | ||
| 162 | .. flat-table:: enum fe_caps | 160 | .. flat-table:: enum fe_caps |
| 163 | :header-rows: 1 | 161 | :header-rows: 1 |
| @@ -15,7 +15,11 @@ FE_SET_PROPERTY - FE_GET_PROPERTY - FE_SET_PROPERTY sets one or more frontend pr · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | ======== | 16 | ======== |
| 17 | 17 | ||
| 18 | .. cpp:function:: int ioctl( int fd, int request, struct dtv_properties *argp ) | 18 | .. c:function:: int ioctl( int fd, FE_GET_PROPERTY, struct dtv_properties *argp ) |
| 19 | :name: FE_GET_PROPERTY | ||
| 20 | |||
| 21 | .. c:function:: int ioctl( int fd, FE_SET_PROPERTY, struct dtv_properties *argp ) | ||
| 22 | :name: FE_SET_PROPERTY | ||
| 19 | 23 | ||
| 20 | 24 | ||
| 21 | Arguments | 25 | Arguments |
| @@ -24,11 +28,8 @@ Arguments · 2 unmodified lines | |||
| 24 | ``fd`` | 28 | ``fd`` |
| 25 | File descriptor returned by :ref:`open() <frontend_f_open>`. | 29 | File descriptor returned by :ref:`open() <frontend_f_open>`. |
| 26 | 30 | ||
| 27 | ``request`` | ||
| 28 | FE_SET_PROPERTY, FE_GET_PROPERTY | ||
| 29 | |||
| 30 | ``argp`` | 31 | ``argp`` |
| 31 | pointer to struct :ref:`dtv_properties <dtv-properties>` | 32 | pointer to struct :c:type:`dtv_properties` |
| 32 | 33 | ||
| 33 | 34 | ||
| 34 | Description | 35 | Description |
| @@ -11,37 +11,23 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | FE_READ_BER | 12 | FE_READ_BER |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated. | ||
| 15 | |||
| 14 | Synopsis | 16 | Synopsis |
| 15 | ======== | 17 | ======== |
| 16 | 18 | ||
| 17 | .. cpp:function:: int ioctl(int fd, int request = FE_READ_BER, uint32_t *ber) | 19 | .. c:function:: int ioctl(int fd, FE_READ_BER, uint32_t *ber) |
| 20 | :name: FE_READ_BER | ||
| 18 | 21 | ||
| 19 | 22 | ||
| 20 | Arguments | 23 | Arguments |
| 21 | ========= | 24 | ========= |
| 22 | 25 | ||
| 23 | .. flat-table:: | 26 | ``fd`` |
| 24 | :header-rows: 0 | 27 | File descriptor returned by :c:func:`open() <dvb-fe-open>`. |
| 25 | :stub-columns: 0 | ||
| 26 | |||
| 27 | |||
| 28 | - .. row 1 | ||
| 29 | |||
| 30 | - int fd | ||
| 31 | |||
| 32 | - File descriptor returned by a previous call to open(). | ||
| 33 | |||
| 34 | - .. row 2 | ||
| 35 | |||
| 36 | - int request | ||
| 37 | |||
| 38 | - Equals :ref:`FE_READ_BER` for this command. | ||
| 39 | |||
| 40 | - .. row 3 | ||
| 41 | |||
| 42 | - uint32_t \*ber | ||
| 43 | 28 | ||
| 44 | - The bit error rate is stored into \*ber. | 29 | ``ber`` |
| 30 | The bit error rate is stored into \*ber. | ||
| 45 | 31 | ||
| 46 | 32 | ||
| 47 | Description | 33 | Description |
| @@ -11,40 +11,23 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | FE_READ_SIGNAL_STRENGTH | 12 | FE_READ_SIGNAL_STRENGTH |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated. | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | ======== | 17 | ======== |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl( int fd, int request = FE_READ_SIGNAL_STRENGTH, uint16_t *strength) | 19 | .. c:function:: int ioctl( int fd, FE_READ_SIGNAL_STRENGTH, uint16_t *strength) |
| 20 | :name: FE_READ_SIGNAL_STRENGTH | ||
| 19 | 21 | ||
| 20 | 22 | ||
| 21 | Arguments | 23 | Arguments |
| 22 | ========= | 24 | ========= |
| 23 | 25 | ||
| 24 | .. flat-table:: | 26 | ``fd`` |
| 25 | :header-rows: 0 | 27 | File descriptor returned by :c:func:`open() <dvb-fe-open>`. |
| 26 | :stub-columns: 0 | ||
| 27 | 28 | ||
| 28 | 29 | ``strength`` | |
| 29 | - .. row 1 | 30 | The signal strength value is stored into \*strength. |
| 30 | |||
| 31 | - int fd | ||
| 32 | |||
| 33 | - File descriptor returned by a previous call to open(). | ||
| 34 | |||
| 35 | - .. row 2 | ||
| 36 | |||
| 37 | - int request | ||
| 38 | |||
| 39 | - Equals | ||
| 40 | :ref:`FE_READ_SIGNAL_STRENGTH` | ||
| 41 | for this command. | ||
| 42 | |||
| 43 | - .. row 3 | ||
| 44 | |||
| 45 | - uint16_t \*strength | ||
| 46 | |||
| 47 | - The signal strength value is stored into \*strength. | ||
| 48 | 31 | ||
| 49 | 32 | ||
| 50 | Description | 33 | Description |
| @@ -11,38 +11,23 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | FE_READ_SNR | 12 | FE_READ_SNR |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated. | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | ======== | 17 | ======== |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl(int fd, int request = FE_READ_SNR, int16_t *snr) | 19 | .. c:function:: int ioctl(int fd, FE_READ_SNR, int16_t *snr) |
| 20 | :name: FE_READ_SNR | ||
| 19 | 21 | ||
| 20 | 22 | ||
| 21 | Arguments | 23 | Arguments |
| 22 | ========= | 24 | ========= |
| 23 | 25 | ||
| 24 | .. flat-table:: | 26 | ``fd`` |
| 25 | :header-rows: 0 | 27 | File descriptor returned by :c:func:`open() <dvb-fe-open>`. |
| 26 | :stub-columns: 0 | ||
| 27 | 28 | ||
| 28 | 29 | ``snr`` | |
| 29 | - .. row 1 | 30 | The signal-to-noise ratio is stored into \*snr. |
| 30 | |||
| 31 | - int fd | ||
| 32 | |||
| 33 | - File descriptor returned by a previous call to open(). | ||
| 34 | |||
| 35 | - .. row 2 | ||
| 36 | |||
| 37 | - int request | ||
| 38 | |||
| 39 | - Equals :ref:`FE_READ_SNR` for this command. | ||
| 40 | |||
| 41 | - .. row 3 | ||
| 42 | |||
| 43 | - uint16_t \*snr | ||
| 44 | |||
| 45 | - The signal-to-noise ratio is stored into \*snr. | ||
| 46 | 31 | ||
| 47 | 32 | ||
| 48 | Description | 33 | Description |
| @@ -15,7 +15,8 @@ FE_READ_STATUS - Returns status information about the front-end. This call only · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | ======== | 16 | ======== |
| 17 | 17 | ||
| 18 | .. cpp:function:: int ioctl( int fd, int request, unsigned int *status ) | 18 | .. c:function:: int ioctl( int fd, FE_READ_STATUS, unsigned int *status ) |
| 19 | :name: FE_READ_STATUS | ||
| 19 | 20 | ||
| 20 | 21 | ||
| 21 | Arguments | 22 | Arguments |
| @@ -24,12 +25,9 @@ Arguments · 2 unmodified lines | |||
| 24 | ``fd`` | 25 | ``fd`` |
| 25 | File descriptor returned by :ref:`open() <frontend_f_open>`. | 26 | File descriptor returned by :ref:`open() <frontend_f_open>`. |
| 26 | 27 | ||
| 27 | ``request`` | ||
| 28 | FE_READ_STATUS | ||
| 29 | |||
| 30 | ``status`` | 28 | ``status`` |
| 31 | pointer to a bitmask integer filled with the values defined by enum | 29 | pointer to a bitmask integer filled with the values defined by enum |
| 32 | :ref:`fe_status <fe-status>`. | 30 | :c:type:`fe_status`. |
| 33 | 31 | ||
| 34 | 32 | ||
| 35 | Description | 33 | Description |
| @@ -40,20 +38,23 @@ used to check about the locking status of the frontend after being · 4 unmodified lines | |||
| 40 | tuned. The ioctl takes a pointer to an integer where the status will be | 38 | tuned. The ioctl takes a pointer to an integer where the status will be |
| 41 | written. | 39 | written. |
| 42 | 40 | ||
| 43 | .. note:: The size of status is actually sizeof(enum fe_status), with | 41 | .. note:: |
| 42 | |||
| 43 | The size of status is actually sizeof(enum fe_status), with | ||
| 44 | varies according with the architecture. This needs to be fixed in the | 44 | varies according with the architecture. This needs to be fixed in the |
| 45 | future. | 45 | future. |
| 46 | 46 | ||
| 47 | 47 | ||
| 48 | .. _fe-status-t: | ||
| 49 | |||
| 50 | int fe_status | 48 | int fe_status |
| 51 | ============= | 49 | ============= |
| 52 | 50 | ||
| 53 | The fe_status parameter is used to indicate the current state and/or | 51 | The fe_status parameter is used to indicate the current state and/or |
| 54 | state changes of the frontend hardware. It is produced using the enum | 52 | state changes of the frontend hardware. It is produced using the enum |
| 55 | :ref:`fe_status <fe-status>` values on a bitmask | 53 | :c:type:`fe_status` values on a bitmask |
| 54 | |||
| 55 | .. c:type:: fe_status | ||
| 56 | 56 | ||
| 57 | .. tabularcolumns:: |p{3.5cm}|p{14.0cm}| | ||
| 57 | 58 | ||
| 58 | .. _fe-status: | 59 | .. _fe-status: |
| 59 | 60 | ||
| @@ -11,40 +11,23 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | FE_READ_UNCORRECTED_BLOCKS | 12 | FE_READ_UNCORRECTED_BLOCKS |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated. | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | ======== | 17 | ======== |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl( int fd, int request =FE_READ_UNCORRECTED_BLOCKS, uint32_t *ublocks) | 19 | .. c:function:: int ioctl( int fd, FE_READ_UNCORRECTED_BLOCKS, uint32_t *ublocks) |
| 20 | :name: FE_READ_UNCORRECTED_BLOCKS | ||
| 19 | 21 | ||
| 20 | 22 | ||
| 21 | Arguments | 23 | Arguments |
| 22 | ========= | 24 | ========= |
| 23 | 25 | ||
| 24 | .. flat-table:: | 26 | ``fd`` |
| 25 | :header-rows: 0 | 27 | File descriptor returned by :c:func:`open() <dvb-fe-open>`. |
| 26 | :stub-columns: 0 | ||
| 27 | 28 | ||
| 28 | 29 | ``ublocks`` | |
| 29 | - .. row 1 | 30 | The total number of uncorrected blocks seen by the driver so far. |
| 30 | |||
| 31 | - int fd | ||
| 32 | |||
| 33 | - File descriptor returned by a previous call to open(). | ||
| 34 | |||
| 35 | - .. row 2 | ||
| 36 | |||
| 37 | - int request | ||
| 38 | |||
| 39 | - Equals | ||
| 40 | :ref:`FE_READ_UNCORRECTED_BLOCKS` | ||
| 41 | for this command. | ||
| 42 | |||
| 43 | - .. row 3 | ||
| 44 | |||
| 45 | - uint32_t \*ublocks | ||
| 46 | |||
| 47 | - The total number of uncorrected blocks seen by the driver so far. | ||
| 48 | 31 | ||
| 49 | 32 | ||
| 50 | Description | 33 | Description |
| @@ -15,7 +15,8 @@ FE_SET_FRONTEND_TUNE_MODE - Allow setting tuner mode flags to the frontend. · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | ======== | 16 | ======== |
| 17 | 17 | ||
| 18 | .. cpp:function:: int ioctl( int fd, int request, unsigned int flags ) | 18 | .. c:function:: int ioctl( int fd, FE_SET_FRONTEND_TUNE_MODE, unsigned int flags ) |
| 19 | :name: FE_SET_FRONTEND_TUNE_MODE | ||
| 19 | 20 | ||
| 20 | 21 | ||
| 21 | Arguments | 22 | Arguments |
| @@ -24,9 +25,6 @@ Arguments · 2 unmodified lines | |||
| 24 | ``fd`` | 25 | ``fd`` |
| 25 | File descriptor returned by :ref:`open() <frontend_f_open>`. | 26 | File descriptor returned by :ref:`open() <frontend_f_open>`. |
| 26 | 27 | ||
| 27 | ``request`` | ||
| 28 | FE_SET_FRONTEND_TUNE_MODE | ||
| 29 | |||
| 30 | ``flags`` | 28 | ``flags`` |
| 31 | Valid flags: | 29 | Valid flags: |
| 32 | 30 | ||
| @@ -6,6 +6,8 @@ · 5 unmodified lines | |||
| 6 | FE_SET_FRONTEND | 6 | FE_SET_FRONTEND |
| 7 | *************** | 7 | *************** |
| 8 | 8 | ||
| 9 | .. attention:: This ioctl is deprecated. | ||
| 10 | |||
| 9 | Name | 11 | Name |
| 10 | ==== | 12 | ==== |
| 11 | 13 | ||
| @@ -15,35 +17,18 @@ FE_SET_FRONTEND · 3 unmodified lines | |||
| 15 | Synopsis | 17 | Synopsis |
| 16 | ======== | 18 | ======== |
| 17 | 19 | ||
| 18 | .. cpp:function:: int ioctl(int fd, int request = FE_SET_FRONTEND, struct dvb_frontend_parameters *p) | 20 | .. c:function:: int ioctl(int fd, FE_SET_FRONTEND, struct dvb_frontend_parameters *p) |
| 21 | :name: FE_SET_FRONTEND | ||
| 19 | 22 | ||
| 20 | 23 | ||
| 21 | Arguments | 24 | Arguments |
| 22 | ========= | 25 | ========= |
| 23 | 26 | ||
| 24 | .. flat-table:: | 27 | ``fd`` |
| 25 | :header-rows: 0 | 28 | File descriptor returned by :c:func:`open() <dvb-fe-open>`. |
| 26 | :stub-columns: 0 | ||
| 27 | |||
| 28 | |||
| 29 | - .. row 1 | ||
| 30 | |||
| 31 | - int fd | ||
| 32 | |||
| 33 | - File descriptor returned by a previous call to open(). | ||
| 34 | |||
| 35 | - .. row 2 | ||
| 36 | |||
| 37 | - int request | ||
| 38 | |||
| 39 | - Equals :ref:`FE_SET_FRONTEND` for this | ||
| 40 | command. | ||
| 41 | |||
| 42 | - .. row 3 | ||
| 43 | |||
| 44 | - struct dvb_frontend_parameters \*p | ||
| 45 | 29 | ||
| 46 | - Points to parameters for tuning operation. | 30 | ``p`` |
| 31 | Points to parameters for tuning operation. | ||
| 47 | 32 | ||
| 48 | 33 | ||
| 49 | Description | 34 | Description |
| @@ -15,7 +15,8 @@ FE_SET_TONE - Sets/resets the generation of the continuous 22kHz tone. · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | ======== | 16 | ======== |
| 17 | 17 | ||
| 18 | .. cpp:function:: int ioctl( int fd, int request, enum fe_sec_tone_mode *tone ) | 18 | .. c:function:: int ioctl( int fd, FE_SET_TONE, enum fe_sec_tone_mode *tone ) |
| 19 | :name: FE_SET_TONE | ||
| 19 | 20 | ||
| 20 | 21 | ||
| 21 | Arguments | 22 | Arguments |
| @@ -24,11 +25,8 @@ Arguments · 2 unmodified lines | |||
| 24 | ``fd`` | 25 | ``fd`` |
| 25 | File descriptor returned by :ref:`open() <frontend_f_open>`. | 26 | File descriptor returned by :ref:`open() <frontend_f_open>`. |
| 26 | 27 | ||
| 27 | ``request`` | ||
| 28 | FE_SET_TONE | ||
| 29 | |||
| 30 | ``tone`` | 28 | ``tone`` |
| 31 | pointer to enum :ref:`fe_sec_tone_mode <fe-sec-tone-mode>` | 29 | pointer to enum :c:type:`fe_sec_tone_mode` |
| 32 | 30 | ||
| 33 | 31 | ||
| 34 | Description | 32 | Description |
| @@ -47,12 +45,7 @@ this is done using the DiSEqC ioctls. · 12 unmodified lines | |||
| 47 | capability of selecting the band. So, it is recommended that applications | 45 | capability of selecting the band. So, it is recommended that applications |
| 48 | would change to SEC_TONE_OFF when the device is not used. | 46 | would change to SEC_TONE_OFF when the device is not used. |
| 49 | 47 | ||
| 50 | .. _fe-sec-tone-mode-t: | 48 | .. c:type:: fe_sec_tone_mode |
| 51 | |||
| 52 | enum fe_sec_tone_mode | ||
| 53 | ===================== | ||
| 54 | |||
| 55 | .. _fe-sec-tone-mode: | ||
| 56 | 49 | ||
| 57 | .. flat-table:: enum fe_sec_tone_mode | 50 | .. flat-table:: enum fe_sec_tone_mode |
| 58 | :header-rows: 1 | 51 | :header-rows: 1 |
| @@ -15,7 +15,8 @@ FE_SET_VOLTAGE - Allow setting the DC level sent to the antenna subsystem. · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | ======== | 16 | ======== |
| 17 | 17 | ||
| 18 | .. cpp:function:: int ioctl( int fd, int request, enum fe_sec_voltage *voltage ) | 18 | .. c:function:: int ioctl( int fd, FE_SET_VOLTAGE, enum fe_sec_voltage *voltage ) |
| 19 | :name: FE_SET_VOLTAGE | ||
| 19 | 20 | ||
| 20 | 21 | ||
| 21 | Arguments | 22 | Arguments |
| @@ -24,14 +25,11 @@ Arguments · 2 unmodified lines | |||
| 24 | ``fd`` | 25 | ``fd`` |
| 25 | File descriptor returned by :ref:`open() <frontend_f_open>`. | 26 | File descriptor returned by :ref:`open() <frontend_f_open>`. |
| 26 | 27 | ||
| 27 | ``request`` | ||
| 28 | FE_SET_VOLTAGE | ||
| 29 | |||
| 30 | ``voltage`` | 28 | ``voltage`` |
| 31 | pointer to enum :ref:`fe_sec_voltage <fe-sec-voltage>` | 29 | pointer to enum :c:type:`fe_sec_voltage` |
| 32 | 30 | ||
| 33 | Valid values are described at enum | 31 | Valid values are described at enum |
| 34 | :ref:`fe_sec_voltage <fe-sec-voltage>`. | 32 | :c:type:`fe_sec_voltage`. |
| 35 | 33 | ||
| 36 | 34 | ||
| 37 | Description | 35 | Description |
| @@ -1,7 +1,5 @@ | |||
| 1 | .. -*- coding: utf-8; mode: rst -*- | 1 | .. -*- coding: utf-8; mode: rst -*- |
| 2 | 2 | ||
| 3 | .. _fe-type-t: | ||
| 4 | |||
| 5 | ************* | 3 | ************* |
| 6 | Frontend type | 4 | Frontend type |
| 7 | ************* | 5 | ************* |
| @@ -11,7 +9,9 @@ modulation used in transmission. The fontend types are given by · 3 unmodified lines | |||
| 11 | fe_type_t type, defined as: | 9 | fe_type_t type, defined as: |
| 12 | 10 | ||
| 13 | 11 | ||
| 14 | .. _fe-type: | 12 | .. c:type:: fe_type |
| 13 | |||
| 14 | .. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}| | ||
| 15 | 15 | ||
| 16 | .. flat-table:: Frontend types | 16 | .. flat-table:: Frontend types |
| 17 | :header-rows: 1 | 17 | :header-rows: 1 |
| @@ -76,7 +76,7 @@ at the above, as they're supported via the new · 58 unmodified lines | |||
| 76 | ioctl's, using the :ref:`DTV_DELIVERY_SYSTEM <DTV-DELIVERY-SYSTEM>` | 76 | ioctl's, using the :ref:`DTV_DELIVERY_SYSTEM <DTV-DELIVERY-SYSTEM>` |
| 77 | parameter. | 77 | parameter. |
| 78 | 78 | ||
| 79 | In the old days, struct :ref:`dvb_frontend_info <dvb-frontend-info>` | 79 | In the old days, struct :c:type:`dvb_frontend_info` |
| 80 | used to contain ``fe_type_t`` field to indicate the delivery systems, | 80 | used to contain ``fe_type_t`` field to indicate the delivery systems, |
| 81 | filled with either FE_QPSK, FE_QAM, FE_OFDM or FE_ATSC. While this | 81 | filled with either FE_QPSK, FE_QAM, FE_OFDM or FE_ATSC. While this |
| 82 | is still filled to keep backward compatibility, the usage of this field | 82 | is still filled to keep backward compatibility, the usage of this field |
| @@ -85,7 +85,7 @@ devices support multiple delivery systems. Please use · 2 unmodified lines | |||
| 85 | :ref:`DTV_ENUM_DELSYS <DTV-ENUM-DELSYS>` instead. | 85 | :ref:`DTV_ENUM_DELSYS <DTV-ENUM-DELSYS>` instead. |
| 86 | 86 | ||
| 87 | On devices that support multiple delivery systems, struct | 87 | On devices that support multiple delivery systems, struct |
| 88 | :ref:`dvb_frontend_info <dvb-frontend-info>`::``fe_type_t`` is | 88 | :c:type:`dvb_frontend_info`::``fe_type_t`` is |
| 89 | filled with the currently standard, as selected by the last call to | 89 | filled with the currently standard, as selected by the last call to |
| 90 | :ref:`FE_SET_PROPERTY <FE_GET_PROPERTY>` using the | 90 | :ref:`FE_SET_PROPERTY <FE_GET_PROPERTY>` using the |
| 91 | :ref:`DTV_DELIVERY_SYSTEM <DTV-DELIVERY-SYSTEM>` property. | 91 | :ref:`DTV_DELIVERY_SYSTEM <DTV-DELIVERY-SYSTEM>` property. |
| @@ -68,10 +68,10 @@ DTV_MODULATION · 67 unmodified lines | |||
| 68 | 68 | ||
| 69 | Specifies the frontend modulation type for delivery systems that | 69 | Specifies the frontend modulation type for delivery systems that |
| 70 | supports more than one modulation type. The modulation can be one of the | 70 | supports more than one modulation type. The modulation can be one of the |
| 71 | types defined by enum :ref:`fe_modulation <fe-modulation>`. | 71 | types defined by enum :c:type:`fe_modulation`. |
| 72 | 72 | ||
| 73 | 73 | ||
| 74 | .. _fe-modulation-t: | 74 | .. c:type:: fe_modulation |
| 75 | 75 | ||
| 76 | Modulation property | 76 | Modulation property |
| 77 | ------------------- | 77 | ------------------- |
| @@ -82,8 +82,6 @@ enum contains the values used by the Kernel. Please note that not all · 4 unmodified lines | |||
| 82 | modulations are supported by a given standard. | 82 | modulations are supported by a given standard. |
| 83 | 83 | ||
| 84 | 84 | ||
| 85 | .. _fe-modulation: | ||
| 86 | |||
| 87 | .. flat-table:: enum fe_modulation | 85 | .. flat-table:: enum fe_modulation |
| 88 | :header-rows: 1 | 86 | :header-rows: 1 |
| 89 | :stub-columns: 0 | 87 | :stub-columns: 0 |
| @@ -251,8 +249,7 @@ DTV_INVERSION · 161 unmodified lines | |||
| 251 | 249 | ||
| 252 | Specifies if the frontend should do spectral inversion or not. | 250 | Specifies if the frontend should do spectral inversion or not. |
| 253 | 251 | ||
| 254 | 252 | .. c:type:: fe_spectral_inversion | |
| 255 | .. _fe-spectral-inversion-t: | ||
| 256 | 253 | ||
| 257 | enum fe_modulation: Frontend spectral inversion | 254 | enum fe_modulation: Frontend spectral inversion |
| 258 | ----------------------------------------------- | 255 | ----------------------------------------------- |
| @@ -264,8 +261,6 @@ support, the DVB core will try to lock at the carrier first with · 5 unmodified lines | |||
| 264 | inversion off. If it fails, it will try to enable inversion. | 261 | inversion off. If it fails, it will try to enable inversion. |
| 265 | 262 | ||
| 266 | 263 | ||
| 267 | .. _fe-spectral-inversion: | ||
| 268 | |||
| 269 | .. flat-table:: enum fe_modulation | 264 | .. flat-table:: enum fe_modulation |
| 270 | :header-rows: 1 | 265 | :header-rows: 1 |
| 271 | :stub-columns: 0 | 266 | :stub-columns: 0 |
| @@ -327,15 +322,11 @@ DTV_INNER_FEC · 55 unmodified lines | |||
| 327 | 322 | ||
| 328 | Used cable/satellite transmissions. The acceptable values are: | 323 | Used cable/satellite transmissions. The acceptable values are: |
| 329 | 324 | ||
| 330 | 325 | .. c:type:: fe_code_rate | |
| 331 | .. _fe-code-rate-t: | ||
| 332 | 326 | ||
| 333 | enum fe_code_rate: type of the Forward Error Correction. | 327 | enum fe_code_rate: type of the Forward Error Correction. |
| 334 | -------------------------------------------------------- | 328 | -------------------------------------------------------- |
| 335 | 329 | ||
| 336 | |||
| 337 | .. _fe-code-rate: | ||
| 338 | |||
| 339 | .. flat-table:: enum fe_code_rate | 330 | .. flat-table:: enum fe_code_rate |
| 340 | :header-rows: 1 | 331 | :header-rows: 1 |
| 341 | :stub-columns: 0 | 332 | :stub-columns: 0 |
| @@ -464,7 +455,7 @@ voltage has to be switched consistently to the DiSEqC commands as · 122 unmodified lines | |||
| 464 | described in the DiSEqC spec. | 455 | described in the DiSEqC spec. |
| 465 | 456 | ||
| 466 | 457 | ||
| 467 | .. _fe-sec-voltage: | 458 | .. c:type:: fe_sec_voltage |
| 468 | 459 | ||
| 469 | .. flat-table:: enum fe_sec_voltage | 460 | .. flat-table:: enum fe_sec_voltage |
| 470 | :header-rows: 1 | 461 | :header-rows: 1 |
| @@ -519,14 +510,12 @@ DTV_PILOT · 48 unmodified lines | |||
| 519 | Sets DVB-S2 pilot | 510 | Sets DVB-S2 pilot |
| 520 | 511 | ||
| 521 | 512 | ||
| 522 | .. _fe-pilot-t: | 513 | .. c:type:: fe_pilot |
| 523 | 514 | ||
| 524 | fe_pilot type | 515 | fe_pilot type |
| 525 | ------------- | 516 | ------------- |
| 526 | 517 | ||
| 527 | 518 | ||
| 528 | .. _fe-pilot: | ||
| 529 | |||
| 530 | .. flat-table:: enum fe_pilot | 519 | .. flat-table:: enum fe_pilot |
| 531 | :header-rows: 1 | 520 | :header-rows: 1 |
| 532 | :stub-columns: 0 | 521 | :stub-columns: 0 |
| @@ -572,14 +561,12 @@ DTV_ROLLOFF · 39 unmodified lines | |||
| 572 | Sets DVB-S2 rolloff | 561 | Sets DVB-S2 rolloff |
| 573 | 562 | ||
| 574 | 563 | ||
| 575 | .. _fe-rolloff-t: | 564 | .. c:type:: fe_rolloff |
| 576 | 565 | ||
| 577 | fe_rolloff type | 566 | fe_rolloff type |
| 578 | --------------- | 567 | --------------- |
| 579 | 568 | ||
| 580 | 569 | ||
| 581 | .. _fe-rolloff: | ||
| 582 | |||
| 583 | .. flat-table:: enum fe_rolloff | 570 | .. flat-table:: enum fe_rolloff |
| 584 | :header-rows: 1 | 571 | :header-rows: 1 |
| 585 | :stub-columns: 0 | 572 | :stub-columns: 0 |
| @@ -657,7 +644,7 @@ DTV_DELIVERY_SYSTEM · 71 unmodified lines | |||
| 657 | Specifies the type of Delivery system | 644 | Specifies the type of Delivery system |
| 658 | 645 | ||
| 659 | 646 | ||
| 660 | .. _fe-delivery-system-t: | 647 | .. c:type:: fe_delivery_system |
| 661 | 648 | ||
| 662 | fe_delivery_system type | 649 | fe_delivery_system type |
| 663 | ----------------------- | 650 | ----------------------- |
| @@ -665,8 +652,6 @@ fe_delivery_system type · 1 unmodified line | |||
| 665 | Possible values: | 652 | Possible values: |
| 666 | 653 | ||
| 667 | 654 | ||
| 668 | .. _fe-delivery-system: | ||
| 669 | |||
| 670 | .. flat-table:: enum fe_delivery_system | 655 | .. flat-table:: enum fe_delivery_system |
| 671 | :header-rows: 1 | 656 | :header-rows: 1 |
| 672 | :stub-columns: 0 | 657 | :stub-columns: 0 |
| @@ -1005,10 +990,9 @@ Possible values: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, -1 (AUTO) · 332 unmodified lines | |||
| 1005 | Note: Truth table for ``DTV_ISDBT_SOUND_BROADCASTING`` and | 990 | Note: Truth table for ``DTV_ISDBT_SOUND_BROADCASTING`` and |
| 1006 | ``DTV_ISDBT_PARTIAL_RECEPTION`` and ``LAYER[A-C]_SEGMENT_COUNT`` | 991 | ``DTV_ISDBT_PARTIAL_RECEPTION`` and ``LAYER[A-C]_SEGMENT_COUNT`` |
| 1007 | 992 | ||
| 1008 | |||
| 1009 | .. _isdbt-layer_seg-cnt-table: | 993 | .. _isdbt-layer_seg-cnt-table: |
| 1010 | 994 | ||
| 1011 | .. flat-table:: | 995 | .. flat-table:: Truth table for ISDB-T Sound Broadcasting |
| 1012 | :header-rows: 0 | 996 | :header-rows: 0 |
| 1013 | :stub-columns: 0 | 997 | :stub-columns: 0 |
| 1014 | 998 | ||
| @@ -1099,9 +1083,9 @@ The values here are referring to what can be found in the · 84 unmodified lines | |||
| 1099 | TMCC-structure, as shown in the table below. | 1083 | TMCC-structure, as shown in the table below. |
| 1100 | 1084 | ||
| 1101 | 1085 | ||
| 1102 | .. _isdbt-layer-interleaving-table: | 1086 | .. c:type:: isdbt_layer_interleaving_table |
| 1103 | 1087 | ||
| 1104 | .. flat-table:: | 1088 | .. flat-table:: ISDB-T time interleaving modes |
| 1105 | :header-rows: 0 | 1089 | :header-rows: 0 |
| 1106 | :stub-columns: 0 | 1090 | :stub-columns: 0 |
| 1107 | 1091 | ||
| @@ -1234,8 +1218,9 @@ Reed Solomon (RS) frame mode. · 126 unmodified lines | |||
| 1234 | 1218 | ||
| 1235 | Possible values are: | 1219 | Possible values are: |
| 1236 | 1220 | ||
| 1221 | .. tabularcolumns:: |p{5.0cm}|p{12.5cm}| | ||
| 1237 | 1222 | ||
| 1238 | .. _atscmh-rs-frame-mode: | 1223 | .. c:type:: atscmh_rs_frame_mode |
| 1239 | 1224 | ||
| 1240 | .. flat-table:: enum atscmh_rs_frame_mode | 1225 | .. flat-table:: enum atscmh_rs_frame_mode |
| 1241 | :header-rows: 1 | 1226 | :header-rows: 1 |
| @@ -1279,7 +1264,7 @@ Reed Solomon(RS) frame ensemble. · 37 unmodified lines | |||
| 1279 | Possible values are: | 1264 | Possible values are: |
| 1280 | 1265 | ||
| 1281 | 1266 | ||
| 1282 | .. _atscmh-rs-frame-ensemble: | 1267 | .. c:type:: atscmh_rs_frame_ensemble |
| 1283 | 1268 | ||
| 1284 | .. flat-table:: enum atscmh_rs_frame_ensemble | 1269 | .. flat-table:: enum atscmh_rs_frame_ensemble |
| 1285 | :header-rows: 1 | 1270 | :header-rows: 1 |
| @@ -1328,7 +1313,7 @@ Reed Solomon (RS) code mode (primary). · 42 unmodified lines | |||
| 1328 | Possible values are: | 1313 | Possible values are: |
| 1329 | 1314 | ||
| 1330 | 1315 | ||
| 1331 | .. _atscmh-rs-code-mode: | 1316 | .. c:type:: atscmh_rs_code_mode |
| 1332 | 1317 | ||
| 1333 | .. flat-table:: enum atscmh_rs_code_mode | 1318 | .. flat-table:: enum atscmh_rs_code_mode |
| 1334 | :header-rows: 1 | 1319 | :header-rows: 1 |
| @@ -1383,7 +1368,7 @@ DTV_ATSCMH_RS_CODE_MODE_SEC · 48 unmodified lines | |||
| 1383 | Reed Solomon (RS) code mode (secondary). | 1368 | Reed Solomon (RS) code mode (secondary). |
| 1384 | 1369 | ||
| 1385 | Possible values are the same as documented on enum | 1370 | Possible values are the same as documented on enum |
| 1386 | :ref:`atscmh_rs_code_mode <atscmh-rs-code-mode>`: | 1371 | :c:type:`atscmh_rs_code_mode`: |
| 1387 | 1372 | ||
| 1388 | 1373 | ||
| 1389 | .. _DTV-ATSCMH-SCCC-BLOCK-MODE: | 1374 | .. _DTV-ATSCMH-SCCC-BLOCK-MODE: |
| @@ -1395,8 +1380,9 @@ Series Concatenated Convolutional Code Block Mode. · 5 unmodified lines | |||
| 1395 | 1380 | ||
| 1396 | Possible values are: | 1381 | Possible values are: |
| 1397 | 1382 | ||
| 1383 | .. tabularcolumns:: |p{4.5cm}|p{13.0cm}| | ||
| 1398 | 1384 | ||
| 1399 | .. _atscmh-sccc-block-mode: | 1385 | .. c:type:: atscmh_sccc_block_mode |
| 1400 | 1386 | ||
| 1401 | .. flat-table:: enum atscmh_scc_block_mode | 1387 | .. flat-table:: enum atscmh_scc_block_mode |
| 1402 | :header-rows: 1 | 1388 | :header-rows: 1 |
| @@ -1447,7 +1433,7 @@ Series Concatenated Convolutional Code Rate. · 44 unmodified lines | |||
| 1447 | Possible values are: | 1433 | Possible values are: |
| 1448 | 1434 | ||
| 1449 | 1435 | ||
| 1450 | .. _atscmh-sccc-code-mode: | 1436 | .. c:type:: atscmh_sccc_code_mode |
| 1451 | 1437 | ||
| 1452 | .. flat-table:: enum atscmh_sccc_code_mode | 1438 | .. flat-table:: enum atscmh_sccc_code_mode |
| 1453 | :header-rows: 1 | 1439 | :header-rows: 1 |
| @@ -1494,7 +1480,7 @@ DTV_ATSCMH_SCCC_CODE_MODE_B · 40 unmodified lines | |||
| 1494 | Series Concatenated Convolutional Code Rate. | 1480 | Series Concatenated Convolutional Code Rate. |
| 1495 | 1481 | ||
| 1496 | Possible values are the same as documented on enum | 1482 | Possible values are the same as documented on enum |
| 1497 | :ref:`atscmh_sccc_code_mode <atscmh-sccc-code-mode>`. | 1483 | :c:type:`atscmh_sccc_code_mode`. |
| 1498 | 1484 | ||
| 1499 | 1485 | ||
| 1500 | .. _DTV-ATSCMH-SCCC-CODE-MODE-C: | 1486 | .. _DTV-ATSCMH-SCCC-CODE-MODE-C: |
| @@ -1505,7 +1491,7 @@ DTV_ATSCMH_SCCC_CODE_MODE_C · 4 unmodified lines | |||
| 1505 | Series Concatenated Convolutional Code Rate. | 1491 | Series Concatenated Convolutional Code Rate. |
| 1506 | 1492 | ||
| 1507 | Possible values are the same as documented on enum | 1493 | Possible values are the same as documented on enum |
| 1508 | :ref:`atscmh_sccc_code_mode <atscmh-sccc-code-mode>`. | 1494 | :c:type:`atscmh_sccc_code_mode`. |
| 1509 | 1495 | ||
| 1510 | 1496 | ||
| 1511 | .. _DTV-ATSCMH-SCCC-CODE-MODE-D: | 1497 | .. _DTV-ATSCMH-SCCC-CODE-MODE-D: |
| @@ -1516,7 +1502,7 @@ DTV_ATSCMH_SCCC_CODE_MODE_D · 4 unmodified lines | |||
| 1516 | Series Concatenated Convolutional Code Rate. | 1502 | Series Concatenated Convolutional Code Rate. |
| 1517 | 1503 | ||
| 1518 | Possible values are the same as documented on enum | 1504 | Possible values are the same as documented on enum |
| 1519 | :ref:`atscmh_sccc_code_mode <atscmh-sccc-code-mode>`. | 1505 | :c:type:`atscmh_sccc_code_mode`. |
| 1520 | 1506 | ||
| 1521 | 1507 | ||
| 1522 | .. _DTV-API-VERSION: | 1508 | .. _DTV-API-VERSION: |
| @@ -1533,7 +1519,7 @@ DTV_CODE_RATE_HP · 10 unmodified lines | |||
| 1533 | ================ | 1519 | ================ |
| 1534 | 1520 | ||
| 1535 | Used on terrestrial transmissions. The acceptable values are the ones | 1521 | Used on terrestrial transmissions. The acceptable values are the ones |
| 1536 | described at :ref:`fe_transmit_mode_t <fe-transmit-mode-t>`. | 1522 | described at :c:type:`fe_transmit_mode`. |
| 1537 | 1523 | ||
| 1538 | 1524 | ||
| 1539 | .. _DTV-CODE-RATE-LP: | 1525 | .. _DTV-CODE-RATE-LP: |
| @@ -1542,7 +1528,7 @@ DTV_CODE_RATE_LP · 2 unmodified lines | |||
| 1542 | ================ | 1528 | ================ |
| 1543 | 1529 | ||
| 1544 | Used on terrestrial transmissions. The acceptable values are the ones | 1530 | Used on terrestrial transmissions. The acceptable values are the ones |
| 1545 | described at :ref:`fe_transmit_mode_t <fe-transmit-mode-t>`. | 1531 | described at :c:type:`fe_transmit_mode`. |
| 1546 | 1532 | ||
| 1547 | 1533 | ||
| 1548 | .. _DTV-GUARD-INTERVAL: | 1534 | .. _DTV-GUARD-INTERVAL: |
| @@ -1553,14 +1539,12 @@ DTV_GUARD_INTERVAL · 4 unmodified lines | |||
| 1553 | Possible values are: | 1539 | Possible values are: |
| 1554 | 1540 | ||
| 1555 | 1541 | ||
| 1556 | .. _fe-guard-interval-t: | 1542 | .. c:type:: fe_guard_interval |
| 1557 | 1543 | ||
| 1558 | Modulation guard interval | 1544 | Modulation guard interval |
| 1559 | ------------------------- | 1545 | ------------------------- |
| 1560 | 1546 | ||
| 1561 | 1547 | ||
| 1562 | .. _fe-guard-interval: | ||
| 1563 | |||
| 1564 | .. flat-table:: enum fe_guard_interval | 1548 | .. flat-table:: enum fe_guard_interval |
| 1565 | :header-rows: 1 | 1549 | :header-rows: 1 |
| 1566 | :stub-columns: 0 | 1550 | :stub-columns: 0 |
| @@ -1682,13 +1666,12 @@ Specifies the number of carriers used by the standard. This is used only · 115 unmodified lines | |||
| 1682 | on OFTM-based standards, e. g. DVB-T/T2, ISDB-T, DTMB | 1666 | on OFTM-based standards, e. g. DVB-T/T2, ISDB-T, DTMB |
| 1683 | 1667 | ||
| 1684 | 1668 | ||
| 1685 | .. _fe-transmit-mode-t: | 1669 | .. c:type:: fe_transmit_mode |
| 1686 | 1670 | ||
| 1687 | enum fe_transmit_mode: Number of carriers per channel | 1671 | enum fe_transmit_mode: Number of carriers per channel |
| 1688 | ----------------------------------------------------- | 1672 | ----------------------------------------------------- |
| 1689 | 1673 | ||
| 1690 | 1674 | .. tabularcolumns:: |p{5.0cm}|p{12.5cm}| | |
| 1691 | .. _fe-transmit-mode: | ||
| 1692 | 1675 | ||
| 1693 | .. flat-table:: enum fe_transmit_mode | 1676 | .. flat-table:: enum fe_transmit_mode |
| 1694 | :header-rows: 1 | 1677 | :header-rows: 1 |
| @@ -1799,14 +1782,12 @@ DTV_HIERARCHY · 104 unmodified lines | |||
| 1799 | Frontend hierarchy | 1782 | Frontend hierarchy |
| 1800 | 1783 | ||
| 1801 | 1784 | ||
| 1802 | .. _fe-hierarchy-t: | 1785 | .. c:type:: fe_hierarchy |
| 1803 | 1786 | ||
| 1804 | Frontend hierarchy | 1787 | Frontend hierarchy |
| 1805 | ------------------ | 1788 | ------------------ |
| 1806 | 1789 | ||
| 1807 | 1790 | ||
| 1808 | .. _fe-hierarchy: | ||
| 1809 | |||
| 1810 | .. flat-table:: enum fe_hierarchy | 1791 | .. flat-table:: enum fe_hierarchy |
| 1811 | :header-rows: 1 | 1792 | :header-rows: 1 |
| 1812 | :stub-columns: 0 | 1793 | :stub-columns: 0 |
| @@ -1912,7 +1893,7 @@ DTV_INTERLEAVING · 99 unmodified lines | |||
| 1912 | Time interleaving to be used. Currently, used only on DTMB. | 1893 | Time interleaving to be used. Currently, used only on DTMB. |
| 1913 | 1894 | ||
| 1914 | 1895 | ||
| 1915 | .. _fe-interleaving: | 1896 | .. c:type:: fe_interleaving |
| 1916 | 1897 | ||
| 1917 | .. flat-table:: enum fe_interleaving | 1898 | .. flat-table:: enum fe_interleaving |
| 1918 | :header-rows: 1 | 1899 | :header-rows: 1 |
| @@ -20,7 +20,7 @@ standards, up to 3 groups of statistics can be provided, and · 19 unmodified lines | |||
| 20 | plus one metric per each carrier group (called "layer" on ISDB). | 20 | plus one metric per each carrier group (called "layer" on ISDB). |
| 21 | 21 | ||
| 22 | So, in order to be consistent with other delivery systems, the first | 22 | So, in order to be consistent with other delivery systems, the first |
| 23 | value at :ref:`dtv_property.stat.dtv_stats <dtv-stats>` array refers | 23 | value at :c:type:`dtv_property.stat.dtv_stats <dtv_stats>` array refers |
| 24 | to the global metric. The other elements of the array represent each | 24 | to the global metric. The other elements of the array represent each |
| 25 | layer, starting from layer A(index 1), layer B (index 2) and so on. | 25 | layer, starting from layer A(index 1), layer B (index 2) and so on. |
| 26 | 26 | ||
| @@ -29,7 +29,9 @@ The frontend can be accessed through ``/dev/dvb/adapter?/frontend?``. · 28 unmodified lines | |||
| 29 | Data types and ioctl definitions can be accessed by including | 29 | Data types and ioctl definitions can be accessed by including |
| 30 | ``linux/dvb/frontend.h`` in your application. | 30 | ``linux/dvb/frontend.h`` in your application. |
| 31 | 31 | ||
| 32 | .. note:: Transmission via the internet (DVB-IP) is not yet handled by this | 32 | .. note:: |
| 33 | |||
| 34 | Transmission via the internet (DVB-IP) is not yet handled by this | ||
| 33 | API but a future extension is possible. | 35 | API but a future extension is possible. |
| 34 | 36 | ||
| 35 | On Satellite systems, the API support for the Satellite Equipment | 37 | On Satellite systems, the API support for the Satellite Equipment |
| @@ -20,14 +20,14 @@ Synopsis · 19 unmodified lines | |||
| 20 | #include <unistd.h> | 20 | #include <unistd.h> |
| 21 | 21 | ||
| 22 | 22 | ||
| 23 | .. cpp:function:: int close( int fd ) | 23 | .. c:function:: int close( int fd ) |
| 24 | 24 | :name: dvb-fe-close | |
| 25 | 25 | ||
| 26 | Arguments | 26 | Arguments |
| 27 | ========= | 27 | ========= |
| 28 | 28 | ||
| 29 | ``fd`` | 29 | ``fd`` |
| 30 | File descriptor returned by :ref:`open() <func-open>`. | 30 | File descriptor returned by :c:func:`open() <dvb-fe-open>`. |
| 31 | 31 | ||
| 32 | 32 | ||
| 33 | Description | 33 | Description |
| @@ -20,8 +20,8 @@ Synopsis · 19 unmodified lines | |||
| 20 | #include <fcntl.h> | 20 | #include <fcntl.h> |
| 21 | 21 | ||
| 22 | 22 | ||
| 23 | .. cpp:function:: int open( const char *device_name, int flags ) | 23 | .. c:function:: int open( const char *device_name, int flags ) |
| 24 | 24 | :name: dvb-fe-open | |
| 25 | 25 | ||
| 26 | Arguments | 26 | Arguments |
| 27 | ========= | 27 | ========= |
| @@ -15,7 +15,8 @@ NET_ADD_IF - Creates a new network interface for a given Packet ID. · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | ======== | 16 | ======== |
| 17 | 17 | ||
| 18 | .. cpp:function:: int ioctl( int fd, int request, struct dvb_net_if *net_if ) | 18 | .. c:function:: int ioctl( int fd, NET_ADD_IF, struct dvb_net_if *net_if ) |
| 19 | :name: NET_ADD_IF | ||
| 19 | 20 | ||
| 20 | 21 | ||
| 21 | Arguments | 22 | Arguments |
| @@ -24,11 +25,8 @@ Arguments · 2 unmodified lines | |||
| 24 | ``fd`` | 25 | ``fd`` |
| 25 | File descriptor returned by :ref:`open() <frontend_f_open>`. | 26 | File descriptor returned by :ref:`open() <frontend_f_open>`. |
| 26 | 27 | ||
| 27 | ``request`` | ||
| 28 | FE_SET_TONE | ||
| 29 | |||
| 30 | ``net_if`` | 28 | ``net_if`` |
| 31 | pointer to struct :ref:`dvb_net_if <dvb-net-if>` | 29 | pointer to struct :c:type:`dvb_net_if` |
| 32 | 30 | ||
| 33 | 31 | ||
| 34 | Description | 32 | Description |
| @@ -40,16 +38,10 @@ ULE) and the interface number for the new interface to be created. When · 5 unmodified lines | |||
| 40 | the system call successfully returns, a new virtual network interface is | 38 | the system call successfully returns, a new virtual network interface is |
| 41 | created. | 39 | created. |
| 42 | 40 | ||
| 43 | The struct :ref:`dvb_net_if <dvb-net-if>`::ifnum field will be | 41 | The struct :c:type:`dvb_net_if`::ifnum field will be |
| 44 | filled with the number of the created interface. | 42 | filled with the number of the created interface. |
| 45 | 43 | ||
| 46 | 44 | .. c:type:: dvb_net_if | |
| 47 | .. _dvb-net-if-t: | ||
| 48 | |||
| 49 | struct dvb_net_if description | ||
| 50 | ============================= | ||
| 51 | |||
| 52 | .. _dvb-net-if: | ||
| 53 | 45 | ||
| 54 | .. flat-table:: struct dvb_net_if | 46 | .. flat-table:: struct dvb_net_if |
| 55 | :header-rows: 1 | 47 | :header-rows: 1 |
| @@ -15,7 +15,8 @@ NET_GET_IF - Read the configuration data of an interface created via - :ref:`NET · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | ======== | 16 | ======== |
| 17 | 17 | ||
| 18 | .. cpp:function:: int ioctl( int fd, int request, struct dvb_net_if *net_if ) | 18 | .. c:function:: int ioctl( int fd, NET_GET_IF, struct dvb_net_if *net_if ) |
| 19 | :name: NET_GET_IF | ||
| 19 | 20 | ||
| 20 | 21 | ||
| 21 | Arguments | 22 | Arguments |
| @@ -24,19 +25,16 @@ Arguments · 2 unmodified lines | |||
| 24 | ``fd`` | 25 | ``fd`` |
| 25 | File descriptor returned by :ref:`open() <frontend_f_open>`. | 26 | File descriptor returned by :ref:`open() <frontend_f_open>`. |
| 26 | 27 | ||
| 27 | ``request`` | ||
| 28 | FE_SET_TONE | ||
| 29 | |||
| 30 | ``net_if`` | 28 | ``net_if`` |
| 31 | pointer to struct :ref:`dvb_net_if <dvb-net-if>` | 29 | pointer to struct :c:type:`dvb_net_if` |
| 32 | 30 | ||
| 33 | 31 | ||
| 34 | Description | 32 | Description |
| 35 | =========== | 33 | =========== |
| 36 | 34 | ||
| 37 | The NET_GET_IF ioctl uses the interface number given by the struct | 35 | The NET_GET_IF ioctl uses the interface number given by the struct |
| 38 | :ref:`dvb_net_if <dvb-net-if>`::ifnum field and fills the content of | 36 | :c:type:`dvb_net_if`::ifnum field and fills the content of |
| 39 | struct :ref:`dvb_net_if <dvb-net-if>` with the packet ID and | 37 | struct :c:type:`dvb_net_if` with the packet ID and |
| 40 | encapsulation type used on such interface. If the interface was not | 38 | encapsulation type used on such interface. If the interface was not |
| 41 | created yet with :ref:`NET_ADD_IF <net>`, it will return -1 and fill | 39 | created yet with :ref:`NET_ADD_IF <net>`, it will return -1 and fill |
| 42 | the ``errno`` with ``EINVAL`` error code. | 40 | the ``errno`` with ``EINVAL`` error code. |
| @@ -15,7 +15,8 @@ NET_REMOVE_IF - Removes a network interface. · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | ======== | 16 | ======== |
| 17 | 17 | ||
| 18 | .. cpp:function:: int ioctl( int fd, int request, int ifnum ) | 18 | .. c:function:: int ioctl( int fd, NET_REMOVE_IF, int ifnum ) |
| 19 | :name: NET_REMOVE_IF | ||
| 19 | 20 | ||
| 20 | 21 | ||
| 21 | Arguments | 22 | Arguments |
| @@ -24,9 +25,6 @@ Arguments · 2 unmodified lines | |||
| 24 | ``fd`` | 25 | ``fd`` |
| 25 | File descriptor returned by :ref:`open() <frontend_f_open>`. | 26 | File descriptor returned by :ref:`open() <frontend_f_open>`. |
| 26 | 27 | ||
| 27 | ``request`` | ||
| 28 | FE_SET_TONE | ||
| 29 | |||
| 30 | ``net_if`` | 28 | ``net_if`` |
| 31 | number of the interface to be removed | 29 | number of the interface to be removed |
| 32 | 30 | ||
| @@ -11,11 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | VIDEO_CLEAR_BUFFER | 12 | VIDEO_CLEAR_BUFFER |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated. | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl(fd, int request = VIDEO_CLEAR_BUFFER) | 19 | .. c:function:: int ioctl(fd, VIDEO_CLEAR_BUFFER) |
| 20 | :name: VIDEO_CLEAR_BUFFER | ||
| 19 | 21 | ||
| 20 | 22 | ||
| 21 | Arguments | 23 | Arguments |
| @@ -11,11 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | VIDEO_COMMAND | 12 | VIDEO_COMMAND |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated. | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl(int fd, int request = VIDEO_COMMAND, struct video_command *cmd) | 19 | .. c:function:: int ioctl(int fd, VIDEO_COMMAND, struct video_command *cmd) |
| 20 | :name: VIDEO_COMMAND | ||
| 19 | 21 | ||
| 20 | 22 | ||
| 21 | Arguments | 23 | Arguments |
| @@ -57,6 +59,36 @@ subset of the ``v4l2_decoder_cmd`` struct, so refer to the · 35 unmodified lines | |||
| 57 | :ref:`VIDIOC_DECODER_CMD` documentation for | 59 | :ref:`VIDIOC_DECODER_CMD` documentation for |
| 58 | more information. | 60 | more information. |
| 59 | 61 | ||
| 62 | .. c:type:: struct video_command | ||
| 63 | |||
| 64 | .. code-block:: c | ||
| 65 | |||
| 66 | /* The structure must be zeroed before use by the application | ||
| 67 | This ensures it can be extended safely in the future. */ | ||
| 68 | struct video_command { | ||
| 69 | __u32 cmd; | ||
| 70 | __u32 flags; | ||
| 71 | union { | ||
| 72 | struct { | ||
| 73 | __u64 pts; | ||
| 74 | } stop; | ||
| 75 | |||
| 76 | struct { | ||
| 77 | /* 0 or 1000 specifies normal speed, | ||
| 78 | 1 specifies forward single stepping, | ||
| 79 | -1 specifies backward single stepping, | ||
| 80 | >1: playback at speed/1000 of the normal speed, | ||
| 81 | <-1: reverse playback at (-speed/1000) of the normal speed. */ | ||
| 82 | __s32 speed; | ||
| 83 | __u32 format; | ||
| 84 | } play; | ||
| 85 | |||
| 86 | struct { | ||
| 87 | __u32 data[16]; | ||
| 88 | } raw; | ||
| 89 | }; | ||
| 90 | }; | ||
| 91 | |||
| 60 | 92 | ||
| 61 | Return Value | 93 | Return Value |
| 62 | ------------ | 94 | ------------ |
| @@ -11,11 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | VIDEO_CONTINUE | 12 | VIDEO_CONTINUE |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated. | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl(fd, int request = VIDEO_CONTINUE) | 19 | .. c:function:: int ioctl(fd, VIDEO_CONTINUE) |
| 20 | :name: VIDEO_CONTINUE | ||
| 19 | 21 | ||
| 20 | 22 | ||
| 21 | Arguments | 23 | Arguments |
| @@ -11,11 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | VIDEO_FAST_FORWARD | 12 | VIDEO_FAST_FORWARD |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated. | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl(fd, int request = VIDEO_FAST_FORWARD, int nFrames) | 19 | .. c:function:: int ioctl(fd, VIDEO_FAST_FORWARD, int nFrames) |
| 20 | :name: VIDEO_FAST_FORWARD | ||
| 19 | 21 | ||
| 20 | 22 | ||
| 21 | Arguments | 23 | Arguments |
| @@ -11,11 +11,12 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | dvb video close() | 12 | dvb video close() |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated. | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int close(int fd) | 19 | .. c:function:: int close(int fd) |
| 19 | 20 | ||
| 20 | 21 | ||
| 21 | Arguments | 22 | Arguments |
| @@ -11,11 +11,12 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | dvb video open() | 12 | dvb video open() |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated. | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int open(const char *deviceName, int flags) | 19 | .. c:function:: int open(const char *deviceName, int flags) |
| 19 | 20 | ||
| 20 | 21 | ||
| 21 | Arguments | 22 | Arguments |
| @@ -82,6 +83,8 @@ return an error code. · 60 unmodified lines | |||
| 82 | Return Value | 83 | Return Value |
| 83 | ------------ | 84 | ------------ |
| 84 | 85 | ||
| 86 | .. tabularcolumns:: |p{2.5cm}|p{15.0cm}| | ||
| 87 | |||
| 85 | .. flat-table:: | 88 | .. flat-table:: |
| 86 | :header-rows: 0 | 89 | :header-rows: 0 |
| 87 | :stub-columns: 0 | 90 | :stub-columns: 0 |
| @@ -11,11 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | VIDEO_FREEZE | 12 | VIDEO_FREEZE |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated. | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl(fd, int request = VIDEO_FREEZE) | 19 | .. c:function:: int ioctl(fd, VIDEO_FREEZE) |
| 20 | :name: VIDEO_FREEZE | ||
| 19 | 21 | ||
| 20 | 22 | ||
| 21 | Arguments | 23 | Arguments |
| @@ -11,11 +11,12 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | dvb video write() | 12 | dvb video write() |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated. | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: size_t write(int fd, const void *buf, size_t count) | 19 | .. c:function:: size_t write(int fd, const void *buf, size_t count) |
| 19 | 20 | ||
| 20 | 21 | ||
| 21 | Arguments | 22 | Arguments |
| @@ -11,11 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | VIDEO_GET_CAPABILITIES | 12 | VIDEO_GET_CAPABILITIES |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated. | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl(fd, int request = VIDEO_GET_CAPABILITIES, unsigned int *cap) | 19 | .. c:function:: int ioctl(fd, VIDEO_GET_CAPABILITIES, unsigned int *cap) |
| 20 | :name: VIDEO_GET_CAPABILITIES | ||
| 19 | 21 | ||
| 20 | 22 | ||
| 21 | Arguments | 23 | Arguments |
| @@ -11,11 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | VIDEO_GET_EVENT | 12 | VIDEO_GET_EVENT |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated. | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl(fd, int request = VIDEO_GET_EVENT, struct video_event *ev) | 19 | .. c:function:: int ioctl(fd, VIDEO_GET_EVENT, struct video_event *ev) |
| 20 | :name: VIDEO_GET_EVENT | ||
| 19 | 21 | ||
| 20 | 22 | ||
| 21 | Arguments | 23 | Arguments |
| @@ -62,6 +64,23 @@ included in the exceptfds argument, and for poll(), POLLPRI should be · 40 unmodified lines | |||
| 62 | specified as the wake-up condition. Read-only permissions are sufficient | 64 | specified as the wake-up condition. Read-only permissions are sufficient |
| 63 | for this ioctl call. | 65 | for this ioctl call. |
| 64 | 66 | ||
| 67 | .. c:type:: video_event | ||
| 68 | |||
| 69 | .. code-block:: c | ||
| 70 | |||
| 71 | struct video_event { | ||
| 72 | __s32 type; | ||
| 73 | #define VIDEO_EVENT_SIZE_CHANGED 1 | ||
| 74 | #define VIDEO_EVENT_FRAME_RATE_CHANGED 2 | ||
| 75 | #define VIDEO_EVENT_DECODER_STOPPED 3 | ||
| 76 | #define VIDEO_EVENT_VSYNC 4 | ||
| 77 | __kernel_time_t timestamp; | ||
| 78 | union { | ||
| 79 | video_size_t size; | ||
| 80 | unsigned int frame_rate; /* in frames per 1000sec */ | ||
| 81 | unsigned char vsync_field; /* unknown/odd/even/progressive */ | ||
| 82 | } u; | ||
| 83 | }; | ||
| 65 | 84 | ||
| 66 | Return Value | 85 | Return Value |
| 67 | ------------ | 86 | ------------ |
| @@ -11,11 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | VIDEO_GET_FRAME_COUNT | 12 | VIDEO_GET_FRAME_COUNT |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated. | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl(int fd, int request = VIDEO_GET_FRAME_COUNT, __u64 *pts) | 19 | .. c:function:: int ioctl(int fd, VIDEO_GET_FRAME_COUNT, __u64 *pts) |
| 20 | :name: VIDEO_GET_FRAME_COUNT | ||
| 19 | 21 | ||
| 20 | 22 | ||
| 21 | Arguments | 23 | Arguments |
| @@ -11,11 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | VIDEO_GET_FRAME_RATE | 12 | VIDEO_GET_FRAME_RATE |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated. | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl(int fd, int request = VIDEO_GET_FRAME_RATE, unsigned int *rate) | 19 | .. c:function:: int ioctl(int fd, VIDEO_GET_FRAME_RATE, unsigned int *rate) |
| 20 | :name: VIDEO_GET_FRAME_RATE | ||
| 19 | 21 | ||
| 20 | 22 | ||
| 21 | Arguments | 23 | Arguments |
| @@ -11,11 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | VIDEO_GET_NAVI | 12 | VIDEO_GET_NAVI |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated. | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl(fd, int request = VIDEO_GET_NAVI , video_navi_pack_t *navipack) | 19 | .. c:function:: int ioctl(fd, VIDEO_GET_NAVI , struct video_navi_pack *navipack) |
| 20 | :name: VIDEO_GET_NAVI | ||
| 19 | 21 | ||
| 20 | 22 | ||
| 21 | Arguments | 23 | Arguments |
| @@ -52,6 +54,14 @@ This ioctl returns navigational information from the DVD stream. This is · 30 unmodified lines | |||
| 52 | especially needed if an encoded stream has to be decoded by the | 54 | especially needed if an encoded stream has to be decoded by the |
| 53 | hardware. | 55 | hardware. |
| 54 | 56 | ||
| 57 | .. c:type:: video_navi_pack | ||
| 58 | |||
| 59 | .. code-block::c | ||
| 60 | |||
| 61 | typedef struct video_navi_pack { | ||
| 62 | int length; /* 0 ... 1024 */ | ||
| 63 | __u8 data[1024]; | ||
| 64 | } video_navi_pack_t; | ||
| 55 | 65 | ||
| 56 | Return Value | 66 | Return Value |
| 57 | ------------ | 67 | ------------ |
| @@ -11,11 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | VIDEO_GET_PTS | 12 | VIDEO_GET_PTS |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated. | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl(int fd, int request = VIDEO_GET_PTS, __u64 *pts) | 19 | .. c:function:: int ioctl(int fd, VIDEO_GET_PTS, __u64 *pts) |
| 20 | :name: VIDEO_GET_PTS | ||
| 19 | 21 | ||
| 20 | 22 | ||
| 21 | Arguments | 23 | Arguments |
| @@ -11,11 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | VIDEO_GET_SIZE | 12 | VIDEO_GET_SIZE |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated. | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl(int fd, int request = VIDEO_GET_SIZE, video_size_t *size) | 19 | .. c:function:: int ioctl(int fd, VIDEO_GET_SIZE, video_size_t *size) |
| 20 | :name: VIDEO_GET_SIZE | ||
| 19 | 21 | ||
| 20 | 22 | ||
| 21 | Arguments | 23 | Arguments |
| @@ -50,6 +52,16 @@ Description · 28 unmodified lines | |||
| 50 | 52 | ||
| 51 | This ioctl returns the size and aspect ratio. | 53 | This ioctl returns the size and aspect ratio. |
| 52 | 54 | ||
| 55 | .. c:type:: video_size_t | ||
| 56 | |||
| 57 | .. code-block::c | ||
| 58 | |||
| 59 | typedef struct { | ||
| 60 | int w; | ||
| 61 | int h; | ||
| 62 | video_format_t aspect_ratio; | ||
| 63 | } video_size_t; | ||
| 64 | |||
| 53 | 65 | ||
| 54 | Return Value | 66 | Return Value |
| 55 | ------------ | 67 | ------------ |
| @@ -11,11 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | VIDEO_GET_STATUS | 12 | VIDEO_GET_STATUS |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated. | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl(fd, int request = VIDEO_GET_STATUS, struct video_status *status) | 19 | .. c:function:: int ioctl(fd, VIDEO_GET_STATUS, struct video_status *status) |
| 20 | :name: VIDEO_GET_STATUS | ||
| 19 | 21 | ||
| 20 | 22 | ||
| 21 | Arguments | 23 | Arguments |
| @@ -51,6 +53,17 @@ Description · 29 unmodified lines | |||
| 51 | This ioctl call asks the Video Device to return the current status of | 53 | This ioctl call asks the Video Device to return the current status of |
| 52 | the device. | 54 | the device. |
| 53 | 55 | ||
| 56 | .. c:type:: video_status | ||
| 57 | |||
| 58 | .. code-block:: c | ||
| 59 | |||
| 60 | struct video_status { | ||
| 61 | int video_blank; /* blank video on freeze? */ | ||
| 62 | video_play_state_t play_state; /* current state of playback */ | ||
| 63 | video_stream_source_t stream_source; /* current source (demux/memory) */ | ||
| 64 | video_format_t video_format; /* current aspect ratio of stream*/ | ||
| 65 | video_displayformat_t display_format;/* selected cropping mode */ | ||
| 66 | }; | ||
| 54 | 67 | ||
| 55 | Return Value | 68 | Return Value |
| 56 | ------------ | 69 | ------------ |
| @@ -11,11 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | VIDEO_PLAY | 12 | VIDEO_PLAY |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated. | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl(fd, int request = VIDEO_PLAY) | 19 | .. c:function:: int ioctl(fd, VIDEO_PLAY) |
| 20 | :name: VIDEO_PLAY | ||
| 19 | 21 | ||
| 20 | 22 | ||
| 21 | Arguments | 23 | Arguments |
| @@ -11,11 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | VIDEO_SELECT_SOURCE | 12 | VIDEO_SELECT_SOURCE |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated. | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl(fd, int request = VIDEO_SELECT_SOURCE, video_stream_source_t source) | 19 | .. c:function:: int ioctl(fd, VIDEO_SELECT_SOURCE, video_stream_source_t source) |
| 20 | :name: VIDEO_SELECT_SOURCE | ||
| 19 | 21 | ||
| 20 | 22 | ||
| 21 | Arguments | 23 | Arguments |
| @@ -56,6 +58,16 @@ This ioctl call informs the video device which source shall be used for · 34 unmodified lines | |||
| 56 | the input data. The possible sources are demux or memory. If memory is | 58 | the input data. The possible sources are demux or memory. If memory is |
| 57 | selected, the data is fed to the video device through the write command. | 59 | selected, the data is fed to the video device through the write command. |
| 58 | 60 | ||
| 61 | .. c:type:: video_stream_source_t | ||
| 62 | |||
| 63 | .. code-block:: c | ||
| 64 | |||
| 65 | typedef enum { | ||
| 66 | VIDEO_SOURCE_DEMUX, /* Select the demux as the main source */ | ||
| 67 | VIDEO_SOURCE_MEMORY /* If this source is selected, the stream | ||
| 68 | comes from the user through the write | ||
| 69 | system call */ | ||
| 70 | } video_stream_source_t; | ||
| 59 | 71 | ||
| 60 | Return Value | 72 | Return Value |
| 61 | ------------ | 73 | ------------ |
| @@ -11,11 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | VIDEO_SET_ATTRIBUTES | 12 | VIDEO_SET_ATTRIBUTES |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated. | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl(fd, int request = VIDEO_SET_ATTRIBUTE ,video_attributes_t vattr) | 19 | .. c:function:: int ioctl(fd, VIDEO_SET_ATTRIBUTE ,video_attributes_t vattr) |
| 20 | :name: VIDEO_SET_ATTRIBUTE | ||
| 19 | 21 | ||
| 20 | 22 | ||
| 21 | Arguments | 23 | Arguments |
| @@ -53,6 +55,22 @@ information about the stream. Some hardware may not need this · 31 unmodified lines | |||
| 53 | information, but the call also tells the hardware to prepare for DVD | 55 | information, but the call also tells the hardware to prepare for DVD |
| 54 | playback. | 56 | playback. |
| 55 | 57 | ||
| 58 | .. c:type:: video_attributes_t | ||
| 59 | |||
| 60 | .. code-block::c | ||
| 61 | |||
| 62 | typedef __u16 video_attributes_t; | ||
| 63 | /* bits: descr. */ | ||
| 64 | /* 15-14 Video compression mode (0=MPEG-1, 1=MPEG-2) */ | ||
| 65 | /* 13-12 TV system (0=525/60, 1=625/50) */ | ||
| 66 | /* 11-10 Aspect ratio (0=4:3, 3=16:9) */ | ||
| 67 | /* 9- 8 permitted display mode on 4:3 monitor (0=both, 1=only pan-sca */ | ||
| 68 | /* 7 line 21-1 data present in GOP (1=yes, 0=no) */ | ||
| 69 | /* 6 line 21-2 data present in GOP (1=yes, 0=no) */ | ||
| 70 | /* 5- 3 source resolution (0=720x480/576, 1=704x480/576, 2=352x480/57 */ | ||
| 71 | /* 2 source letterboxed (1=yes, 0=no) */ | ||
| 72 | /* 0 film/camera mode (0=camera, 1=film (625/50 only)) */ | ||
| 73 | |||
| 56 | 74 | ||
| 57 | Return Value | 75 | Return Value |
| 58 | ------------ | 76 | ------------ |
| @@ -11,11 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | VIDEO_SET_BLANK | 12 | VIDEO_SET_BLANK |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated. | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl(fd, int request = VIDEO_SET_BLANK, boolean mode) | 19 | .. c:function:: int ioctl(fd, VIDEO_SET_BLANK, boolean mode) |
| 20 | :name: VIDEO_SET_BLANK | ||
| 19 | 21 | ||
| 20 | 22 | ||
| 21 | Arguments | 23 | Arguments |
| @@ -11,11 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | VIDEO_SET_DISPLAY_FORMAT | 12 | VIDEO_SET_DISPLAY_FORMAT |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated. | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl(fd, int request = VIDEO_SET_DISPLAY_FORMAT, video_display_format_t format) | 19 | .. c:function:: int ioctl(fd, VIDEO_SET_DISPLAY_FORMAT) |
| 20 | :name: VIDEO_SET_DISPLAY_FORMAT | ||
| 19 | 21 | ||
| 20 | 22 | ||
| 21 | Arguments | 23 | Arguments |
| @@ -11,11 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | VIDEO_SET_FORMAT | 12 | VIDEO_SET_FORMAT |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated. | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl(fd, int request = VIDEO_SET_FORMAT, video_format_t format) | 19 | .. c:function:: int ioctl(fd, VIDEO_SET_FORMAT, video_format_t format) |
| 20 | :name: VIDEO_SET_FORMAT | ||
| 19 | 21 | ||
| 20 | 22 | ||
| 21 | Arguments | 23 | Arguments |
| @@ -52,6 +54,15 @@ This ioctl sets the screen format (aspect ratio) of the connected output · 30 unmodified lines | |||
| 52 | device (TV) so that the output of the decoder can be adjusted | 54 | device (TV) so that the output of the decoder can be adjusted |
| 53 | accordingly. | 55 | accordingly. |
| 54 | 56 | ||
| 57 | .. c:type:: video_format_t | ||
| 58 | |||
| 59 | .. code-block:: c | ||
| 60 | |||
| 61 | typedef enum { | ||
| 62 | VIDEO_FORMAT_4_3, /* Select 4:3 format */ | ||
| 63 | VIDEO_FORMAT_16_9, /* Select 16:9 format. */ | ||
| 64 | VIDEO_FORMAT_221_1 /* 2.21:1 */ | ||
| 65 | } video_format_t; | ||
| 55 | 66 | ||
| 56 | Return Value | 67 | Return Value |
| 57 | ------------ | 68 | ------------ |
| @@ -11,11 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | VIDEO_SET_HIGHLIGHT | 12 | VIDEO_SET_HIGHLIGHT |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated. | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl(fd, int request = VIDEO_SET_HIGHLIGHT ,video_highlight_t *vhilite) | 19 | .. c:function:: int ioctl(fd, VIDEO_SET_HIGHLIGHT, struct video_highlight *vhilite) |
| 20 | :name: VIDEO_SET_HIGHLIGHT | ||
| 19 | 21 | ||
| 20 | 22 | ||
| 21 | Arguments | 23 | Arguments |
| @@ -51,6 +53,30 @@ Description · 29 unmodified lines | |||
| 51 | This ioctl sets the SPU highlight information for the menu access of a | 53 | This ioctl sets the SPU highlight information for the menu access of a |
| 52 | DVD. | 54 | DVD. |
| 53 | 55 | ||
| 56 | .. c:type:: video_highlight | ||
| 57 | |||
| 58 | .. code-block:: c | ||
| 59 | |||
| 60 | typedef | ||
| 61 | struct video_highlight { | ||
| 62 | int active; /* 1=show highlight, 0=hide highlight */ | ||
| 63 | __u8 contrast1; /* 7- 4 Pattern pixel contrast */ | ||
| 64 | /* 3- 0 Background pixel contrast */ | ||
| 65 | __u8 contrast2; /* 7- 4 Emphasis pixel-2 contrast */ | ||
| 66 | /* 3- 0 Emphasis pixel-1 contrast */ | ||
| 67 | __u8 color1; /* 7- 4 Pattern pixel color */ | ||
| 68 | /* 3- 0 Background pixel color */ | ||
| 69 | __u8 color2; /* 7- 4 Emphasis pixel-2 color */ | ||
| 70 | /* 3- 0 Emphasis pixel-1 color */ | ||
| 71 | __u32 ypos; /* 23-22 auto action mode */ | ||
| 72 | /* 21-12 start y */ | ||
| 73 | /* 9- 0 end y */ | ||
| 74 | __u32 xpos; /* 23-22 button color number */ | ||
| 75 | /* 21-12 start x */ | ||
| 76 | /* 9- 0 end x */ | ||
| 77 | } video_highlight_t; | ||
| 78 | |||
| 79 | |||
| 54 | 80 | ||
| 55 | Return Value | 81 | Return Value |
| 56 | ------------ | 82 | ------------ |
| @@ -11,11 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | VIDEO_SET_ID | 12 | VIDEO_SET_ID |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated. | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl(int fd, int request = VIDEO_SET_ID, int id) | 19 | .. c:function:: int ioctl(int fd, VIDEO_SET_ID, int id) |
| 20 | :name: VIDEO_SET_ID | ||
| 19 | 21 | ||
| 20 | 22 | ||
| 21 | Arguments | 23 | Arguments |
| @@ -11,11 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | VIDEO_SET_SPU_PALETTE | 12 | VIDEO_SET_SPU_PALETTE |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated. | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl(fd, int request = VIDEO_SET_SPU_PALETTE, video_spu_palette_t *palette ) | 19 | .. c:function:: int ioctl(fd, VIDEO_SET_SPU_PALETTE, struct video_spu_palette *palette ) |
| 20 | :name: VIDEO_SET_SPU_PALETTE | ||
| 19 | 21 | ||
| 20 | 22 | ||
| 21 | Arguments | 23 | Arguments |
| @@ -50,6 +52,14 @@ Description · 28 unmodified lines | |||
| 50 | 52 | ||
| 51 | This ioctl sets the SPU color palette. | 53 | This ioctl sets the SPU color palette. |
| 52 | 54 | ||
| 55 | .. c:type:: video_spu_palette | ||
| 56 | |||
| 57 | .. code-block::c | ||
| 58 | |||
| 59 | typedef struct video_spu_palette { /* SPU Palette information */ | ||
| 60 | int length; | ||
| 61 | __u8 __user *palette; | ||
| 62 | } video_spu_palette_t; | ||
| 53 | 63 | ||
| 54 | Return Value | 64 | Return Value |
| 55 | ------------ | 65 | ------------ |
| @@ -11,11 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | VIDEO_SET_SPU | 12 | VIDEO_SET_SPU |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated. | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl(fd, int request = VIDEO_SET_SPU , video_spu_t *spu) | 19 | .. c:function:: int ioctl(fd, VIDEO_SET_SPU , struct video_spu *spu) |
| 20 | :name: VIDEO_SET_SPU | ||
| 19 | 21 | ||
| 20 | 22 | ||
| 21 | Arguments | 23 | Arguments |
| @@ -52,6 +54,15 @@ Description · 30 unmodified lines | |||
| 52 | This ioctl activates or deactivates SPU decoding in a DVD input stream. | 54 | This ioctl activates or deactivates SPU decoding in a DVD input stream. |
| 53 | It can only be used, if the driver is able to handle a DVD stream. | 55 | It can only be used, if the driver is able to handle a DVD stream. |
| 54 | 56 | ||
| 57 | .. c:type:: struct video_spu | ||
| 58 | |||
| 59 | .. code-block:: c | ||
| 60 | |||
| 61 | typedef struct video_spu { | ||
| 62 | int active; | ||
| 63 | int stream_id; | ||
| 64 | } video_spu_t; | ||
| 65 | |||
| 55 | 66 | ||
| 56 | Return Value | 67 | Return Value |
| 57 | ------------ | 68 | ------------ |
| @@ -11,11 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | VIDEO_SET_STREAMTYPE | 12 | VIDEO_SET_STREAMTYPE |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated. | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl(fd, int request = VIDEO_SET_STREAMTYPE, int type) | 19 | .. c:function:: int ioctl(fd, VIDEO_SET_STREAMTYPE, int type) |
| 20 | :name: VIDEO_SET_STREAMTYPE | ||
| 19 | 21 | ||
| 20 | 22 | ||
| 21 | Arguments | 23 | Arguments |
| @@ -11,11 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | VIDEO_SET_SYSTEM | 12 | VIDEO_SET_SYSTEM |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated. | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl(fd, int request = VIDEO_SET_SYSTEM , video_system_t system) | 19 | .. c:function:: int ioctl(fd, VIDEO_SET_SYSTEM , video_system_t system) |
| 20 | :name: VIDEO_SET_SYSTEM | ||
| 19 | 21 | ||
| 20 | 22 | ||
| 21 | Arguments | 23 | Arguments |
| @@ -11,11 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | VIDEO_SLOWMOTION | 12 | VIDEO_SLOWMOTION |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated. | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl(fd, int request = VIDEO_SLOWMOTION, int nFrames) | 19 | .. c:function:: int ioctl(fd, VIDEO_SLOWMOTION, int nFrames) |
| 20 | :name: VIDEO_SLOWMOTION | ||
| 19 | 21 | ||
| 20 | 22 | ||
| 21 | Arguments | 23 | Arguments |
| @@ -11,11 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | VIDEO_STILLPICTURE | 12 | VIDEO_STILLPICTURE |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated. | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl(fd, int request = VIDEO_STILLPICTURE, struct video_still_picture *sp) | 19 | .. c:function:: int ioctl(fd, VIDEO_STILLPICTURE, struct video_still_picture *sp) |
| 20 | :name: VIDEO_STILLPICTURE | ||
| 19 | 21 | ||
| 20 | 22 | ||
| 21 | Arguments | 23 | Arguments |
| @@ -11,11 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | VIDEO_STOP | 12 | VIDEO_STOP |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated. | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl(fd, int request = VIDEO_STOP, boolean mode) | 19 | .. c:function:: int ioctl(fd, VIDEO_STOP, boolean mode) |
| 20 | :name: VIDEO_STOP | ||
| 19 | 21 | ||
| 20 | 22 | ||
| 21 | Arguments | 23 | Arguments |
| @@ -11,11 +11,13 @@ Name · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | VIDEO_TRY_COMMAND | 12 | VIDEO_TRY_COMMAND |
| 13 | 13 | ||
| 14 | .. attention:: This ioctl is deprecated. | ||
| 14 | 15 | ||
| 15 | Synopsis | 16 | Synopsis |
| 16 | -------- | 17 | -------- |
| 17 | 18 | ||
| 18 | .. cpp:function:: int ioctl(int fd, int request = VIDEO_TRY_COMMAND, struct video_command *cmd) | 19 | .. c:function:: int ioctl(int fd, VIDEO_TRY_COMMAND, struct video_command *cmd) |
| 20 | :name: VIDEO_TRY_COMMAND | ||
| 19 | 21 | ||
| 20 | 22 | ||
| 21 | Arguments | 23 | Arguments |
| @@ -95,7 +95,7 @@ representing the state of video playback. · 94 unmodified lines | |||
| 95 | } video_play_state_t; | 95 | } video_play_state_t; |
| 96 | 96 | ||
| 97 | 97 | ||
| 98 | .. _video-command: | 98 | .. c:type:: video_command |
| 99 | 99 | ||
| 100 | struct video_command | 100 | struct video_command |
| 101 | ==================== | 101 | ==================== |
| @@ -146,7 +146,7 @@ video_size_t · 44 unmodified lines | |||
| 146 | } video_size_t; | 146 | } video_size_t; |
| 147 | 147 | ||
| 148 | 148 | ||
| 149 | .. _video-event: | 149 | .. c:type:: video_event |
| 150 | 150 | ||
| 151 | struct video_event | 151 | struct video_event |
| 152 | ================== | 152 | ================== |
| @@ -172,7 +172,7 @@ VIDEO_GET_EVENT call. · 19 unmodified lines | |||
| 172 | }; | 172 | }; |
| 173 | 173 | ||
| 174 | 174 | ||
| 175 | .. _video-status: | 175 | .. c:type:: video_status |
| 176 | 176 | ||
| 177 | struct video_status | 177 | struct video_status |
| 178 | =================== | 178 | =================== |
| @@ -203,7 +203,7 @@ case the source video format is not the same as the format of the output · 24 unmodified lines | |||
| 203 | device. | 203 | device. |
| 204 | 204 | ||
| 205 | 205 | ||
| 206 | .. _video-still-picture: | 206 | .. c:type:: video_still_picture |
| 207 | 207 | ||
| 208 | struct video_still_picture | 208 | struct video_still_picture |
| 209 | ========================== | 209 | ========================== |
| @@ -271,7 +271,7 @@ output. The following system types can be set: · 61 unmodified lines | |||
| 271 | } video_system_t; | 271 | } video_system_t; |
| 272 | 272 | ||
| 273 | 273 | ||
| 274 | .. _video-highlight: | 274 | .. c:type:: video_highlight |
| 275 | 275 | ||
| 276 | struct video_highlight | 276 | struct video_highlight |
| 277 | ====================== | 277 | ====================== |
| @@ -302,7 +302,7 @@ information. The call expects the following format for that information: · 24 unmodified lines | |||
| 302 | } video_highlight_t; | 302 | } video_highlight_t; |
| 303 | 303 | ||
| 304 | 304 | ||
| 305 | .. _video-spu: | 305 | .. c:type:: video_spu |
| 306 | 306 | ||
| 307 | struct video_spu | 307 | struct video_spu |
| 308 | ================ | 308 | ================ |
| @@ -320,7 +320,7 @@ to the following format: · 11 unmodified lines | |||
| 320 | } video_spu_t; | 320 | } video_spu_t; |
| 321 | 321 | ||
| 322 | 322 | ||
| 323 | .. _video-spu-palette: | 323 | .. c:type:: video_spu_palette |
| 324 | 324 | ||
| 325 | struct video_spu_palette | 325 | struct video_spu_palette |
| 326 | ======================== | 326 | ======================== |
| @@ -338,7 +338,7 @@ VIDEO_SPU_PALETTE: · 11 unmodified lines | |||
| 338 | } video_spu_palette_t; | 338 | } video_spu_palette_t; |
| 339 | 339 | ||
| 340 | 340 | ||
| 341 | .. _video-navi-pack: | 341 | .. c:type:: video_navi_pack |
| 342 | 342 | ||
| 343 | struct video_navi_pack | 343 | struct video_navi_pack |
| 344 | ====================== | 344 | ====================== |
| @@ -9,6 +9,8 @@ Generic Error Codes · 8 unmodified lines | |||
| 9 | 9 | ||
| 10 | .. _gen-errors: | 10 | .. _gen-errors: |
| 11 | 11 | ||
| 12 | .. tabularcolumns:: |p{2.5cm}|p{15.0cm}| | ||
| 13 | |||
| 12 | .. flat-table:: Generic error codes | 14 | .. flat-table:: Generic error codes |
| 13 | :header-rows: 0 | 15 | :header-rows: 0 |
| 14 | :stub-columns: 0 | 16 | :stub-columns: 0 |
| @@ -20,14 +20,14 @@ Synopsis · 19 unmodified lines | |||
| 20 | #include <unistd.h> | 20 | #include <unistd.h> |
| 21 | 21 | ||
| 22 | 22 | ||
| 23 | .. cpp:function:: int close( int fd ) | 23 | .. c:function:: int close( int fd ) |
| 24 | 24 | :name: mc-close | |
| 25 | 25 | ||
| 26 | Arguments | 26 | Arguments |
| 27 | ========= | 27 | ========= |
| 28 | 28 | ||
| 29 | ``fd`` | 29 | ``fd`` |
| 30 | File descriptor returned by :ref:`open() <func-open>`. | 30 | File descriptor returned by :c:func:`open() <mc-open>`. |
| 31 | 31 | ||
| 32 | 32 | ||
| 33 | Description | 33 | Description |
| @@ -20,14 +20,14 @@ Synopsis · 19 unmodified lines | |||
| 20 | #include <sys/ioctl.h> | 20 | #include <sys/ioctl.h> |
| 21 | 21 | ||
| 22 | 22 | ||
| 23 | .. cpp:function:: int ioctl( int fd, int request, void *argp ) | 23 | .. c:function:: int ioctl( int fd, int request, void *argp ) |
| 24 | 24 | :name: mc-ioctl | |
| 25 | 25 | ||
| 26 | Arguments | 26 | Arguments |
| 27 | ========= | 27 | ========= |
| 28 | 28 | ||
| 29 | ``fd`` | 29 | ``fd`` |
| 30 | File descriptor returned by :ref:`open() <func-open>`. | 30 | File descriptor returned by :c:func:`open() <mc-open>`. |
| 31 | 31 | ||
| 32 | ``request`` | 32 | ``request`` |
| 33 | Media ioctl request code as defined in the media.h header file, for | 33 | Media ioctl request code as defined in the media.h header file, for |
| @@ -20,8 +20,8 @@ Synopsis · 19 unmodified lines | |||
| 20 | #include <fcntl.h> | 20 | #include <fcntl.h> |
| 21 | 21 | ||
| 22 | 22 | ||
| 23 | .. cpp:function:: int open( const char *device_name, int flags ) | 23 | .. c:function:: int open( const char *device_name, int flags ) |
| 24 | 24 | :name: mc-open | |
| 25 | 25 | ||
| 26 | Arguments | 26 | Arguments |
| 27 | ========= | 27 | ========= |
| @@ -15,7 +15,8 @@ MEDIA_IOC_DEVICE_INFO - Query device information · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | ======== | 16 | ======== |
| 17 | 17 | ||
| 18 | .. cpp:function:: int ioctl( int fd, int request, struct media_device_info *argp ) | 18 | .. c:function:: int ioctl( int fd, MEDIA_IOC_DEVICE_INFO, struct media_device_info *argp ) |
| 19 | :name: MEDIA_IOC_DEVICE_INFO | ||
| 19 | 20 | ||
| 20 | 21 | ||
| 21 | Arguments | 22 | Arguments |
| @@ -24,9 +25,6 @@ Arguments · 2 unmodified lines | |||
| 24 | ``fd`` | 25 | ``fd`` |
| 25 | File descriptor returned by :ref:`open() <media-func-open>`. | 26 | File descriptor returned by :ref:`open() <media-func-open>`. |
| 26 | 27 | ||
| 27 | ``request`` | ||
| 28 | MEDIA_IOC_DEVICE_INFO | ||
| 29 | |||
| 30 | ``argp`` | 28 | ``argp`` |
| 31 | 29 | ||
| 32 | 30 | ||
| @@ -35,12 +33,14 @@ Description · 2 unmodified lines | |||
| 35 | 33 | ||
| 36 | All media devices must support the ``MEDIA_IOC_DEVICE_INFO`` ioctl. To | 34 | All media devices must support the ``MEDIA_IOC_DEVICE_INFO`` ioctl. To |
| 37 | query device information, applications call the ioctl with a pointer to | 35 | query device information, applications call the ioctl with a pointer to |
| 38 | a struct :ref:`media_device_info <media-device-info>`. The driver | 36 | a struct :c:type:`media_device_info`. The driver |
| 39 | fills the structure and returns the information to the application. The | 37 | fills the structure and returns the information to the application. The |
| 40 | ioctl never fails. | 38 | ioctl never fails. |
| 41 | 39 | ||
| 42 | 40 | ||
| 43 | .. _media-device-info: | 41 | .. c:type:: media_device_info |
| 42 | |||
| 43 | .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| | ||
| 44 | 44 | ||
| 45 | .. flat-table:: struct media_device_info | 45 | .. flat-table:: struct media_device_info |
| 46 | :header-rows: 0 | 46 | :header-rows: 0 |
| @@ -15,7 +15,8 @@ MEDIA_IOC_ENUM_ENTITIES - Enumerate entities and their properties · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | ======== | 16 | ======== |
| 17 | 17 | ||
| 18 | .. cpp:function:: int ioctl( int fd, int request, struct media_entity_desc *argp ) | 18 | .. c:function:: int ioctl( int fd, MEDIA_IOC_ENUM_ENTITIES, struct media_entity_desc *argp ) |
| 19 | :name: MEDIA_IOC_ENUM_ENTITIES | ||
| 19 | 20 | ||
| 20 | 21 | ||
| 21 | Arguments | 22 | Arguments |
| @@ -24,9 +25,6 @@ Arguments · 2 unmodified lines | |||
| 24 | ``fd`` | 25 | ``fd`` |
| 25 | File descriptor returned by :ref:`open() <media-func-open>`. | 26 | File descriptor returned by :ref:`open() <media-func-open>`. |
| 26 | 27 | ||
| 27 | ``request`` | ||
| 28 | MEDIA_IOC_ENUM_ENTITIES | ||
| 29 | |||
| 30 | ``argp`` | 28 | ``argp`` |
| 31 | 29 | ||
| 32 | 30 | ||
| @@ -34,7 +32,7 @@ Description · 1 unmodified line | |||
| 34 | =========== | 32 | =========== |
| 35 | 33 | ||
| 36 | To query the attributes of an entity, applications set the id field of a | 34 | To query the attributes of an entity, applications set the id field of a |
| 37 | struct :ref:`media_entity_desc <media-entity-desc>` structure and | 35 | struct :c:type:`media_entity_desc` structure and |
| 38 | call the MEDIA_IOC_ENUM_ENTITIES ioctl with a pointer to this | 36 | call the MEDIA_IOC_ENUM_ENTITIES ioctl with a pointer to this |
| 39 | structure. The driver fills the rest of the structure or returns an | 37 | structure. The driver fills the rest of the structure or returns an |
| 40 | EINVAL error code when the id is invalid. | 38 | EINVAL error code when the id is invalid. |
| @@ -51,7 +49,9 @@ enumerate entities by calling MEDIA_IOC_ENUM_ENTITIES with increasing · 10 unmodified lines | |||
| 51 | id's until they get an error. | 49 | id's until they get an error. |
| 52 | 50 | ||
| 53 | 51 | ||
| 54 | .. _media-entity-desc: | 52 | .. c:type:: media_entity_desc |
| 53 | |||
| 54 | .. tabularcolumns:: |p{1.5cm}|p{1.5cm}|p{1.5cm}|p{1.5cm}|p{11.5cm}| | ||
| 55 | 55 | ||
| 56 | .. flat-table:: struct media_entity_desc | 56 | .. flat-table:: struct media_entity_desc |
| 57 | :header-rows: 0 | 57 | :header-rows: 0 |
| @@ -195,5 +195,5 @@ appropriately. The generic error codes are described at the · 137 unmodified lines | |||
| 195 | :ref:`Generic Error Codes <gen-errors>` chapter. | 195 | :ref:`Generic Error Codes <gen-errors>` chapter. |
| 196 | 196 | ||
| 197 | EINVAL | 197 | EINVAL |
| 198 | The struct :ref:`media_entity_desc <media-entity-desc>` ``id`` | 198 | The struct :c:type:`media_entity_desc` ``id`` |
| 199 | references a non-existing entity. | 199 | references a non-existing entity. |
| @@ -15,7 +15,8 @@ MEDIA_IOC_ENUM_LINKS - Enumerate all pads and links for a given entity · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | ======== | 16 | ======== |
| 17 | 17 | ||
| 18 | .. cpp:function:: int ioctl( int fd, int request, struct media_links_enum *argp ) | 18 | .. c:function:: int ioctl( int fd, MEDIA_IOC_ENUM_LINKS, struct media_links_enum *argp ) |
| 19 | :name: MEDIA_IOC_ENUM_LINKS | ||
| 19 | 20 | ||
| 20 | 21 | ||
| 21 | Arguments | 22 | Arguments |
| @@ -24,9 +25,6 @@ Arguments · 2 unmodified lines | |||
| 24 | ``fd`` | 25 | ``fd`` |
| 25 | File descriptor returned by :ref:`open() <media-func-open>`. | 26 | File descriptor returned by :ref:`open() <media-func-open>`. |
| 26 | 27 | ||
| 27 | ``request`` | ||
| 28 | MEDIA_IOC_ENUM_LINKS | ||
| 29 | |||
| 30 | ``argp`` | 28 | ``argp`` |
| 31 | 29 | ||
| 32 | 30 | ||
| @@ -34,10 +32,10 @@ Description · 1 unmodified line | |||
| 34 | =========== | 32 | =========== |
| 35 | 33 | ||
| 36 | To enumerate pads and/or links for a given entity, applications set the | 34 | To enumerate pads and/or links for a given entity, applications set the |
| 37 | entity field of a struct :ref:`media_links_enum <media-links-enum>` | 35 | entity field of a struct :c:type:`media_links_enum` |
| 38 | structure and initialize the struct | 36 | structure and initialize the struct |
| 39 | :ref:`media_pad_desc <media-pad-desc>` and struct | 37 | :c:type:`media_pad_desc` and struct |
| 40 | :ref:`media_link_desc <media-link-desc>` structure arrays pointed by | 38 | :c:type:`media_link_desc` structure arrays pointed by |
| 41 | the ``pads`` and ``links`` fields. They then call the | 39 | the ``pads`` and ``links`` fields. They then call the |
| 42 | MEDIA_IOC_ENUM_LINKS ioctl with a pointer to this structure. | 40 | MEDIA_IOC_ENUM_LINKS ioctl with a pointer to this structure. |
| 43 | 41 | ||
| @@ -55,7 +53,9 @@ Only forward links that originate at one of the entity's source pads are · 11 unmodified lines | |||
| 55 | returned during the enumeration process. | 53 | returned during the enumeration process. |
| 56 | 54 | ||
| 57 | 55 | ||
| 58 | .. _media-links-enum: | 56 | .. c:type:: media_links_enum |
| 57 | |||
| 58 | .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| | ||
| 59 | 59 | ||
| 60 | .. flat-table:: struct media_links_enum | 60 | .. flat-table:: struct media_links_enum |
| 61 | :header-rows: 0 | 61 | :header-rows: 0 |
| @@ -73,7 +73,7 @@ returned during the enumeration process. · 11 unmodified lines | |||
| 73 | 73 | ||
| 74 | - .. row 2 | 74 | - .. row 2 |
| 75 | 75 | ||
| 76 | - struct :ref:`media_pad_desc <media-pad-desc>` | 76 | - struct :c:type:`media_pad_desc` |
| 77 | 77 | ||
| 78 | - \*\ ``pads`` | 78 | - \*\ ``pads`` |
| 79 | 79 | ||
| @@ -82,7 +82,7 @@ returned during the enumeration process. · 2 unmodified lines | |||
| 82 | 82 | ||
| 83 | - .. row 3 | 83 | - .. row 3 |
| 84 | 84 | ||
| 85 | - struct :ref:`media_link_desc <media-link-desc>` | 85 | - struct :c:type:`media_link_desc` |
| 86 | 86 | ||
| 87 | - \*\ ``links`` | 87 | - \*\ ``links`` |
| 88 | 88 | ||
| @@ -91,7 +91,9 @@ returned during the enumeration process. · 2 unmodified lines | |||
| 91 | 91 | ||
| 92 | 92 | ||
| 93 | 93 | ||
| 94 | .. _media-pad-desc: | 94 | .. c:type:: media_pad_desc |
| 95 | |||
| 96 | .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| | ||
| 95 | 97 | ||
| 96 | .. flat-table:: struct media_pad_desc | 98 | .. flat-table:: struct media_pad_desc |
| 97 | :header-rows: 0 | 99 | :header-rows: 0 |
| @@ -125,7 +127,9 @@ returned during the enumeration process. · 27 unmodified lines | |||
| 125 | 127 | ||
| 126 | 128 | ||
| 127 | 129 | ||
| 128 | .. _media-link-desc: | 130 | .. c:type:: media_link_desc |
| 131 | |||
| 132 | .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| | ||
| 129 | 133 | ||
| 130 | .. flat-table:: struct media_link_desc | 134 | .. flat-table:: struct media_link_desc |
| 131 | :header-rows: 0 | 135 | :header-rows: 0 |
| @@ -135,7 +139,7 @@ returned during the enumeration process. · 3 unmodified lines | |||
| 135 | 139 | ||
| 136 | - .. row 1 | 140 | - .. row 1 |
| 137 | 141 | ||
| 138 | - struct :ref:`media_pad_desc <media-pad-desc>` | 142 | - struct :c:type:`media_pad_desc` |
| 139 | 143 | ||
| 140 | - ``source`` | 144 | - ``source`` |
| 141 | 145 | ||
| @@ -143,7 +147,7 @@ returned during the enumeration process. · 1 unmodified line | |||
| 143 | 147 | ||
| 144 | - .. row 2 | 148 | - .. row 2 |
| 145 | 149 | ||
| 146 | - struct :ref:`media_pad_desc <media-pad-desc>` | 150 | - struct :c:type:`media_pad_desc` |
| 147 | 151 | ||
| 148 | - ``sink`` | 152 | - ``sink`` |
| 149 | 153 | ||
| @@ -166,5 +170,5 @@ appropriately. The generic error codes are described at the · 16 unmodified lines | |||
| 166 | :ref:`Generic Error Codes <gen-errors>` chapter. | 170 | :ref:`Generic Error Codes <gen-errors>` chapter. |
| 167 | 171 | ||
| 168 | EINVAL | 172 | EINVAL |
| 169 | The struct :ref:`media_links_enum <media-links-enum>` ``id`` | 173 | The struct :c:type:`media_links_enum` ``id`` |
| 170 | references a non-existing entity. | 174 | references a non-existing entity. |
| @@ -15,7 +15,8 @@ MEDIA_IOC_G_TOPOLOGY - Enumerate the graph topology and graph element properties · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | ======== | 16 | ======== |
| 17 | 17 | ||
| 18 | .. cpp:function:: int ioctl( int fd, int request, struct media_v2_topology *argp ) | 18 | .. c:function:: int ioctl( int fd, MEDIA_IOC_G_TOPOLOGY, struct media_v2_topology *argp ) |
| 19 | :name: MEDIA_IOC_G_TOPOLOGY | ||
| 19 | 20 | ||
| 20 | 21 | ||
| 21 | Arguments | 22 | Arguments |
| @@ -24,9 +25,6 @@ Arguments · 2 unmodified lines | |||
| 24 | ``fd`` | 25 | ``fd`` |
| 25 | File descriptor returned by :ref:`open() <media-func-open>`. | 26 | File descriptor returned by :ref:`open() <media-func-open>`. |
| 26 | 27 | ||
| 27 | ``request`` | ||
| 28 | MEDIA_IOC_G_TOPOLOGY | ||
| 29 | |||
| 30 | ``argp`` | 28 | ``argp`` |
| 31 | 29 | ||
| 32 | 30 | ||
| @@ -35,7 +33,7 @@ Description · 2 unmodified lines | |||
| 35 | 33 | ||
| 36 | The typical usage of this ioctl is to call it twice. On the first call, | 34 | The typical usage of this ioctl is to call it twice. On the first call, |
| 37 | the structure defined at struct | 35 | the structure defined at struct |
| 38 | :ref:`media_v2_topology <media-v2-topology>` should be zeroed. At | 36 | :c:type:`media_v2_topology` should be zeroed. At |
| 39 | return, if no errors happen, this ioctl will return the | 37 | return, if no errors happen, this ioctl will return the |
| 40 | ``topology_version`` and the total number of entities, interfaces, pads | 38 | ``topology_version`` and the total number of entities, interfaces, pads |
| 41 | and links. | 39 | and links. |
| @@ -48,8 +46,9 @@ other values untouched. · 6 unmodified lines | |||
| 48 | If the ``topology_version`` remains the same, the ioctl should fill the | 46 | If the ``topology_version`` remains the same, the ioctl should fill the |
| 49 | desired arrays with the media graph elements. | 47 | desired arrays with the media graph elements. |
| 50 | 48 | ||
| 49 | .. tabularcolumns:: |p{1.6cm}|p{3.2cm}|p{12.7cm}| | ||
| 51 | 50 | ||
| 52 | .. _media-v2-topology: | 51 | .. c:type:: media_v2_topology |
| 53 | 52 | ||
| 54 | .. flat-table:: struct media_v2_topology | 53 | .. flat-table:: struct media_v2_topology |
| 55 | :header-rows: 0 | 54 | :header-rows: 0 |
| @@ -142,8 +141,9 @@ desired arrays with the media graph elements. · 86 unmodified lines | |||
| 142 | won't store the links. It will just update ``num_links`` | 141 | won't store the links. It will just update ``num_links`` |
| 143 | 142 | ||
| 144 | 143 | ||
| 144 | .. tabularcolumns:: |p{1.6cm}|p{3.2cm}|p{12.7cm}| | ||
| 145 | 145 | ||
| 146 | .. _media-v2-entity: | 146 | .. c:type:: media_v2_entity |
| 147 | 147 | ||
| 148 | .. flat-table:: struct media_v2_entity | 148 | .. flat-table:: struct media_v2_entity |
| 149 | :header-rows: 0 | 149 | :header-rows: 0 |
| @@ -185,8 +185,9 @@ desired arrays with the media graph elements. · 35 unmodified lines | |||
| 185 | this array to zero. | 185 | this array to zero. |
| 186 | 186 | ||
| 187 | 187 | ||
| 188 | .. tabularcolumns:: |p{1.6cm}|p{3.2cm}|p{12.7cm}| | ||
| 188 | 189 | ||
| 189 | .. _media-v2-interface: | 190 | .. c:type:: media_v2_interface |
| 190 | 191 | ||
| 191 | .. flat-table:: struct media_v2_interface | 192 | .. flat-table:: struct media_v2_interface |
| 192 | :header-rows: 0 | 193 | :header-rows: 0 |
| @@ -233,11 +234,12 @@ desired arrays with the media graph elements. · 40 unmodified lines | |||
| 233 | - ``devnode`` | 234 | - ``devnode`` |
| 234 | 235 | ||
| 235 | - Used only for device node interfaces. See | 236 | - Used only for device node interfaces. See |
| 236 | :ref:`media-v2-intf-devnode` for details.. | 237 | :c:type:`media_v2_intf_devnode` for details.. |
| 237 | 238 | ||
| 238 | 239 | ||
| 240 | .. tabularcolumns:: |p{1.6cm}|p{3.2cm}|p{12.7cm}| | ||
| 239 | 241 | ||
| 240 | .. _media-v2-intf-devnode: | 242 | .. c:type:: media_v2_intf_devnode |
| 241 | 243 | ||
| 242 | .. flat-table:: struct media_v2_interface | 244 | .. flat-table:: struct media_v2_interface |
| 243 | :header-rows: 0 | 245 | :header-rows: 0 |
| @@ -262,8 +264,9 @@ desired arrays with the media graph elements. · 18 unmodified lines | |||
| 262 | - Device node minor number. | 264 | - Device node minor number. |
| 263 | 265 | ||
| 264 | 266 | ||
| 267 | .. tabularcolumns:: |p{1.6cm}|p{3.2cm}|p{12.7cm}| | ||
| 265 | 268 | ||
| 266 | .. _media-v2-pad: | 269 | .. c:type:: media_v2_pad |
| 267 | 270 | ||
| 268 | .. flat-table:: struct media_v2_pad | 271 | .. flat-table:: struct media_v2_pad |
| 269 | :header-rows: 0 | 272 | :header-rows: 0 |
| @@ -305,8 +308,9 @@ desired arrays with the media graph elements. · 35 unmodified lines | |||
| 305 | this array to zero. | 308 | this array to zero. |
| 306 | 309 | ||
| 307 | 310 | ||
| 311 | .. tabularcolumns:: |p{1.6cm}|p{3.2cm}|p{12.7cm}| | ||
| 308 | 312 | ||
| 309 | .. _media-v2-link: | 313 | .. c:type:: media_v2_link |
| 310 | 314 | ||
| 311 | .. flat-table:: struct media_v2_pad | 315 | .. flat-table:: struct media_v2_pad |
| 312 | :header-rows: 0 | 316 | :header-rows: 0 |
| @@ -15,7 +15,8 @@ MEDIA_IOC_SETUP_LINK - Modify the properties of a link · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | ======== | 16 | ======== |
| 17 | 17 | ||
| 18 | .. cpp:function:: int ioctl( int fd, int request, struct media_link_desc *argp ) | 18 | .. c:function:: int ioctl( int fd, MEDIA_IOC_SETUP_LINK, struct media_link_desc *argp ) |
| 19 | :name: MEDIA_IOC_SETUP_LINK | ||
| 19 | 20 | ||
| 20 | 21 | ||
| 21 | Arguments | 22 | Arguments |
| @@ -24,9 +25,6 @@ Arguments · 2 unmodified lines | |||
| 24 | ``fd`` | 25 | ``fd`` |
| 25 | File descriptor returned by :ref:`open() <media-func-open>`. | 26 | File descriptor returned by :ref:`open() <media-func-open>`. |
| 26 | 27 | ||
| 27 | ``request`` | ||
| 28 | MEDIA_IOC_SETUP_LINK | ||
| 29 | |||
| 30 | ``argp`` | 28 | ``argp`` |
| 31 | 29 | ||
| 32 | 30 | ||
| @@ -34,7 +32,7 @@ Description · 1 unmodified line | |||
| 34 | =========== | 32 | =========== |
| 35 | 33 | ||
| 36 | To change link properties applications fill a struct | 34 | To change link properties applications fill a struct |
| 37 | :ref:`media_link_desc <media-link-desc>` with link identification | 35 | :c:type:`media_link_desc` with link identification |
| 38 | information (source and sink pad) and the new requested link flags. They | 36 | information (source and sink pad) and the new requested link flags. They |
| 39 | then call the MEDIA_IOC_SETUP_LINK ioctl with a pointer to that | 37 | then call the MEDIA_IOC_SETUP_LINK ioctl with a pointer to that |
| 40 | structure. | 38 | structure. |
| @@ -63,6 +61,6 @@ appropriately. The generic error codes are described at the · 22 unmodified lines | |||
| 63 | :ref:`Generic Error Codes <gen-errors>` chapter. | 61 | :ref:`Generic Error Codes <gen-errors>` chapter. |
| 64 | 62 | ||
| 65 | EINVAL | 63 | EINVAL |
| 66 | The struct :ref:`media_link_desc <media-link-desc>` references a | 64 | The struct :c:type:`media_link_desc` references a |
| 67 | non-existing link, or the link is immutable and an attempt to modify | 65 | non-existing link, or the link is immutable and an attempt to modify |
| 68 | its configuration was made. | 66 | its configuration was made. |
| @@ -5,9 +5,12 @@ · 4 unmodified lines | |||
| 5 | Types and flags used to represent the media graph elements | 5 | Types and flags used to represent the media graph elements |
| 6 | ========================================================== | 6 | ========================================================== |
| 7 | 7 | ||
| 8 | .. tabularcolumns:: |p{8.0cm}|p{10.5cm}| | ||
| 8 | 9 | ||
| 9 | .. _media-entity-type: | 10 | .. _media-entity-type: |
| 10 | 11 | ||
| 12 | .. cssclass:: longtable | ||
| 13 | |||
| 11 | .. flat-table:: Media entity types | 14 | .. flat-table:: Media entity types |
| 12 | :header-rows: 0 | 15 | :header-rows: 0 |
| 13 | :stub-columns: 0 | 16 | :stub-columns: 0 |
| @@ -15,10 +18,12 @@ Types and flags used to represent the media graph elements · 1 unmodified line | |||
| 15 | 18 | ||
| 16 | - .. row 1 | 19 | - .. row 1 |
| 17 | 20 | ||
| 18 | .. _MEDIA-ENT-F-UNKNOWN: | 21 | .. _MEDIA-ENT-F-UNKNOWN: |
| 19 | .. _MEDIA-ENT-F-V4L2-SUBDEV-UNKNOWN: | 22 | .. _MEDIA-ENT-F-V4L2-SUBDEV-UNKNOWN: |
| 20 | 23 | ||
| 21 | - ``MEDIA_ENT_F_UNKNOWN`` and ``MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN`` | 24 | - ``MEDIA_ENT_F_UNKNOWN`` and |
| 25 | |||
| 26 | ``MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN`` | ||
| 22 | 27 | ||
| 23 | - Unknown entity. That generally indicates that a driver didn't | 28 | - Unknown entity. That generally indicates that a driver didn't |
| 24 | initialize properly the entity, with is a Kernel bug | 29 | initialize properly the entity, with is a Kernel bug |
| @@ -294,6 +299,8 @@ Types and flags used to represent the media graph elements · 269 unmodified lines | |||
| 294 | its source pad. | 299 | its source pad. |
| 295 | 300 | ||
| 296 | 301 | ||
| 302 | .. tabularcolumns:: |p{5.5cm}|p{12.0cm}| | ||
| 303 | |||
| 297 | .. _media-entity-flag: | 304 | .. _media-entity-flag: |
| 298 | 305 | ||
| 299 | .. flat-table:: Media entity flags | 306 | .. flat-table:: Media entity flags |
| @@ -319,6 +326,7 @@ Types and flags used to represent the media graph elements · 19 unmodified lines | |||
| 319 | - The entity represents a data conector | 326 | - The entity represents a data conector |
| 320 | 327 | ||
| 321 | 328 | ||
| 329 | .. tabularcolumns:: |p{6.5cm}|p{6.0cm}|p{5.0cm}| | ||
| 322 | 330 | ||
| 323 | .. _media-intf-type: | 331 | .. _media-intf-type: |
| 324 | 332 | ||
| @@ -405,7 +413,7 @@ Types and flags used to represent the media graph elements · 80 unmodified lines | |||
| 405 | 413 | ||
| 406 | - Device node interface for radio (V4L) | 414 | - Device node interface for radio (V4L) |
| 407 | 415 | ||
| 408 | - typically, /dev/vbi? | 416 | - typically, /dev/radio? |
| 409 | 417 | ||
| 410 | - .. row 9 | 418 | - .. row 9 |
| 411 | 419 | ||
| @@ -429,6 +437,16 @@ Types and flags used to represent the media graph elements · 17 unmodified lines | |||
| 429 | 437 | ||
| 430 | - .. row 11 | 438 | - .. row 11 |
| 431 | 439 | ||
| 440 | .. _MEDIA-INTF-T-V4L-TOUCH: | ||
| 441 | |||
| 442 | - ``MEDIA_INTF_T_V4L_TOUCH`` | ||
| 443 | |||
| 444 | - Device node interface for Touch device (V4L) | ||
| 445 | |||
| 446 | - typically, /dev/v4l-touch? | ||
| 447 | |||
| 448 | - .. row 12 | ||
| 449 | |||
| 432 | .. _MEDIA-INTF-T-ALSA-PCM-CAPTURE: | 450 | .. _MEDIA-INTF-T-ALSA-PCM-CAPTURE: |
| 433 | 451 | ||
| 434 | - ``MEDIA_INTF_T_ALSA_PCM_CAPTURE`` | 452 | - ``MEDIA_INTF_T_ALSA_PCM_CAPTURE`` |
| @@ -437,7 +455,7 @@ Types and flags used to represent the media graph elements · 2 unmodified lines | |||
| 437 | 455 | ||
| 438 | - typically, /dev/snd/pcmC?D?c | 456 | - typically, /dev/snd/pcmC?D?c |
| 439 | 457 | ||
| 440 | - .. row 12 | 458 | - .. row 13 |
| 441 | 459 | ||
| 442 | .. _MEDIA-INTF-T-ALSA-PCM-PLAYBACK: | 460 | .. _MEDIA-INTF-T-ALSA-PCM-PLAYBACK: |
| 443 | 461 | ||
| @@ -447,7 +465,7 @@ Types and flags used to represent the media graph elements · 3 unmodified lines | |||
| 447 | 465 | ||
| 448 | - typically, /dev/snd/pcmC?D?p | 466 | - typically, /dev/snd/pcmC?D?p |
| 449 | 467 | ||
| 450 | - .. row 13 | 468 | - .. row 14 |
| 451 | 469 | ||
| 452 | .. _MEDIA-INTF-T-ALSA-CONTROL: | 470 | .. _MEDIA-INTF-T-ALSA-CONTROL: |
| 453 | 471 | ||
| @@ -457,7 +475,7 @@ Types and flags used to represent the media graph elements · 3 unmodified lines | |||
| 457 | 475 | ||
| 458 | - typically, /dev/snd/controlC? | 476 | - typically, /dev/snd/controlC? |
| 459 | 477 | ||
| 460 | - .. row 14 | 478 | - .. row 15 |
| 461 | 479 | ||
| 462 | .. _MEDIA-INTF-T-ALSA-COMPRESS: | 480 | .. _MEDIA-INTF-T-ALSA-COMPRESS: |
| 463 | 481 | ||
| @@ -467,7 +485,7 @@ Types and flags used to represent the media graph elements · 3 unmodified lines | |||
| 467 | 485 | ||
| 468 | - typically, /dev/snd/compr? | 486 | - typically, /dev/snd/compr? |
| 469 | 487 | ||
| 470 | - .. row 15 | 488 | - .. row 16 |
| 471 | 489 | ||
| 472 | .. _MEDIA-INTF-T-ALSA-RAWMIDI: | 490 | .. _MEDIA-INTF-T-ALSA-RAWMIDI: |
| 473 | 491 | ||
| @@ -477,7 +495,7 @@ Types and flags used to represent the media graph elements · 3 unmodified lines | |||
| 477 | 495 | ||
| 478 | - typically, /dev/snd/midi? | 496 | - typically, /dev/snd/midi? |
| 479 | 497 | ||
| 480 | - .. row 16 | 498 | - .. row 17 |
| 481 | 499 | ||
| 482 | .. _MEDIA-INTF-T-ALSA-HWDEP: | 500 | .. _MEDIA-INTF-T-ALSA-HWDEP: |
| 483 | 501 | ||
| @@ -487,7 +505,7 @@ Types and flags used to represent the media graph elements · 3 unmodified lines | |||
| 487 | 505 | ||
| 488 | - typically, /dev/snd/hwC?D? | 506 | - typically, /dev/snd/hwC?D? |
| 489 | 507 | ||
| 490 | - .. row 17 | 508 | - .. row 18 |
| 491 | 509 | ||
| 492 | .. _MEDIA-INTF-T-ALSA-SEQUENCER: | 510 | .. _MEDIA-INTF-T-ALSA-SEQUENCER: |
| 493 | 511 | ||
| @@ -497,7 +515,7 @@ Types and flags used to represent the media graph elements · 3 unmodified lines | |||
| 497 | 515 | ||
| 498 | - typically, /dev/snd/seq | 516 | - typically, /dev/snd/seq |
| 499 | 517 | ||
| 500 | - .. row 18 | 518 | - .. row 19 |
| 501 | 519 | ||
| 502 | .. _MEDIA-INTF-T-ALSA-TIMER: | 520 | .. _MEDIA-INTF-T-ALSA-TIMER: |
| 503 | 521 | ||
| @@ -508,6 +526,7 @@ Types and flags used to represent the media graph elements · 4 unmodified lines | |||
| 508 | - typically, /dev/snd/timer | 526 | - typically, /dev/snd/timer |
| 509 | 527 | ||
| 510 | 528 | ||
| 529 | .. tabularcolumns:: |p{5.5cm}|p{12.0cm}| | ||
| 511 | 530 | ||
| 512 | .. _media-pad-flag: | 531 | .. _media-pad-flag: |
| 513 | 532 | ||
| @@ -551,6 +570,7 @@ Types and flags used to represent the media graph elements · 37 unmodified lines | |||
| 551 | One and only one of ``MEDIA_PAD_FL_SINK`` and ``MEDIA_PAD_FL_SOURCE`` | 570 | One and only one of ``MEDIA_PAD_FL_SINK`` and ``MEDIA_PAD_FL_SOURCE`` |
| 552 | must be set for every pad. | 571 | must be set for every pad. |
| 553 | 572 | ||
| 573 | .. tabularcolumns:: |p{5.5cm}|p{12.0cm}| | ||
| 554 | 574 | ||
| 555 | .. _media-link-flag: | 575 | .. _media-link-flag: |
| 556 | 576 | ||
| @@ -14,7 +14,8 @@ LIRC_GET_FEATURES - Get the underlying hardware device's features · 13 unmodified lines | |||
| 14 | Synopsis | 14 | Synopsis |
| 15 | ======== | 15 | ======== |
| 16 | 16 | ||
| 17 | .. cpp:function:: int ioctl( int fd, int request, __u32 *features) | 17 | .. c:function:: int ioctl( int fd, LIRC_GET_FEATURES, __u32 *features) |
| 18 | :name: LIRC_GET_FEATURES | ||
| 18 | 19 | ||
| 19 | Arguments | 20 | Arguments |
| 20 | ========= | 21 | ========= |
| @@ -22,9 +23,6 @@ Arguments · 1 unmodified line | |||
| 22 | ``fd`` | 23 | ``fd`` |
| 23 | File descriptor returned by open(). | 24 | File descriptor returned by open(). |
| 24 | 25 | ||
| 25 | ``request`` | ||
| 26 | LIRC_GET_FEATURES | ||
| 27 | |||
| 28 | ``features`` | 26 | ``features`` |
| 29 | Bitmask with the LIRC features. | 27 | Bitmask with the LIRC features. |
| 30 | 28 | ||
| @@ -14,7 +14,8 @@ LIRC_GET_LENGTH - Retrieves the code length in bits. · 13 unmodified lines | |||
| 14 | Synopsis | 14 | Synopsis |
| 15 | ======== | 15 | ======== |
| 16 | 16 | ||
| 17 | .. cpp:function:: int ioctl( int fd, int request, __u32 *length ) | 17 | .. c:function:: int ioctl( int fd, LIRC_GET_LENGTH, __u32 *length ) |
| 18 | :name: LIRC_GET_LENGTH | ||
| 18 | 19 | ||
| 19 | Arguments | 20 | Arguments |
| 20 | ========= | 21 | ========= |
| @@ -22,9 +23,6 @@ Arguments · 1 unmodified line | |||
| 22 | ``fd`` | 23 | ``fd`` |
| 23 | File descriptor returned by open(). | 24 | File descriptor returned by open(). |
| 24 | 25 | ||
| 25 | ``request`` | ||
| 26 | LIRC_GET_LENGTH | ||
| 27 | |||
| 28 | ``length`` | 26 | ``length`` |
| 29 | length, in bits | 27 | length, in bits |
| 30 | 28 | ||
| @@ -10,12 +10,16 @@ ioctls LIRC_GET_REC_MODE and LIRC_SET_REC_MODE · 9 unmodified lines | |||
| 10 | Name | 10 | Name |
| 11 | ==== | 11 | ==== |
| 12 | 12 | ||
| 13 | LIRC_GET_REC_MODE/LIRC_GET_REC_MODE - Get/set supported receive modes. | 13 | LIRC_GET_REC_MODE/LIRC_SET_REC_MODE - Get/set supported receive modes. |
| 14 | 14 | ||
| 15 | Synopsis | 15 | Synopsis |
| 16 | ======== | 16 | ======== |
| 17 | 17 | ||
| 18 | .. cpp:function:: int ioctl( int fd, int request, __u32 rx_modes) | 18 | .. c:function:: int ioctl( int fd, LIRC_GET_REC_MODE, __u32 rx_modes) |
| 19 | :name: LIRC_GET_REC_MODE | ||
| 20 | |||
| 21 | .. c:function:: int ioctl( int fd, LIRC_SET_REC_MODE, __u32 rx_modes) | ||
| 22 | :name: LIRC_SET_REC_MODE | ||
| 19 | 23 | ||
| 20 | Arguments | 24 | Arguments |
| 21 | ========= | 25 | ========= |
| @@ -23,9 +27,6 @@ Arguments · 1 unmodified line | |||
| 23 | ``fd`` | 27 | ``fd`` |
| 24 | File descriptor returned by open(). | 28 | File descriptor returned by open(). |
| 25 | 29 | ||
| 26 | ``request`` | ||
| 27 | LIRC_GET_REC_MODE or LIRC_GET_REC_MODE | ||
| 28 | |||
| 29 | ``rx_modes`` | 30 | ``rx_modes`` |
| 30 | Bitmask with the supported transmit modes. | 31 | Bitmask with the supported transmit modes. |
| 31 | 32 | ||
| @@ -14,7 +14,8 @@ LIRC_GET_REC_RESOLUTION - Obtain the value of receive resolution, in microsecond · 13 unmodified lines | |||
| 14 | Synopsis | 14 | Synopsis |
| 15 | ======== | 15 | ======== |
| 16 | 16 | ||
| 17 | .. cpp:function:: int ioctl( int fd, int request, __u32 *microseconds) | 17 | .. c:function:: int ioctl( int fd, LIRC_GET_REC_RESOLUTION, __u32 *microseconds) |
| 18 | :name: LIRC_GET_REC_RESOLUTION | ||
| 18 | 19 | ||
| 19 | Arguments | 20 | Arguments |
| 20 | ========= | 21 | ========= |
| @@ -22,9 +23,6 @@ Arguments · 1 unmodified line | |||
| 22 | ``fd`` | 23 | ``fd`` |
| 23 | File descriptor returned by open(). | 24 | File descriptor returned by open(). |
| 24 | 25 | ||
| 25 | ``request`` | ||
| 26 | LIRC_GET_REC_RESOLUTION | ||
| 27 | |||
| 28 | ``microseconds`` | 26 | ``microseconds`` |
| 29 | Resolution, in microseconds. | 27 | Resolution, in microseconds. |
| 30 | 28 | ||
| @@ -15,7 +15,11 @@ LIRC_GET_SEND_MODE/LIRC_SET_SEND_MODE - Get/set supported transmit mode. · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | ======== | 16 | ======== |
| 17 | 17 | ||
| 18 | .. cpp:function:: int ioctl( int fd, int request, __u32 *tx_modes ) | 18 | .. c:function:: int ioctl( int fd, LIRC_GET_SEND_MODE, __u32 *tx_modes ) |
| 19 | :name: LIRC_GET_SEND_MODE | ||
| 20 | |||
| 21 | .. c:function:: int ioctl( int fd, LIRC_SET_SEND_MODE, __u32 *tx_modes ) | ||
| 22 | :name: LIRC_SET_SEND_MODE | ||
| 19 | 23 | ||
| 20 | Arguments | 24 | Arguments |
| 21 | ========= | 25 | ========= |
| @@ -23,9 +27,6 @@ Arguments · 1 unmodified line | |||
| 23 | ``fd`` | 27 | ``fd`` |
| 24 | File descriptor returned by open(). | 28 | File descriptor returned by open(). |
| 25 | 29 | ||
| 26 | ``request`` | ||
| 27 | LIRC_GET_SEND_MODE | ||
| 28 | |||
| 29 | ``tx_modes`` | 30 | ``tx_modes`` |
| 30 | Bitmask with the supported transmit modes. | 31 | Bitmask with the supported transmit modes. |
| 31 | 32 | ||
| @@ -16,7 +16,11 @@ range for IR receive. · 15 unmodified lines | |||
| 16 | Synopsis | 16 | Synopsis |
| 17 | ======== | 17 | ======== |
| 18 | 18 | ||
| 19 | .. cpp:function:: int ioctl( int fd, int request, __u32 *timeout) | 19 | .. c:function:: int ioctl( int fd, LIRC_GET_MIN_TIMEOUT, __u32 *timeout) |
| 20 | :name: LIRC_GET_MIN_TIMEOUT | ||
| 21 | |||
| 22 | .. c:function:: int ioctl( int fd, LIRC_GET_MAX_TIMEOUT, __u32 *timeout) | ||
| 23 | :name: LIRC_GET_MAX_TIMEOUT | ||
| 20 | 24 | ||
| 21 | Arguments | 25 | Arguments |
| 22 | ========= | 26 | ========= |
| @@ -24,9 +28,6 @@ Arguments · 1 unmodified line | |||
| 24 | ``fd`` | 28 | ``fd`` |
| 25 | File descriptor returned by open(). | 29 | File descriptor returned by open(). |
| 26 | 30 | ||
| 27 | ``request`` | ||
| 28 | LIRC_GET_MIN_TIMEOUT or LIRC_GET_MAX_TIMEOUT | ||
| 29 | |||
| 30 | ``timeout`` | 31 | ``timeout`` |
| 31 | Timeout, in microseconds. | 32 | Timeout, in microseconds. |
| 32 | 33 | ||
| @@ -20,7 +20,8 @@ Synopsis · 19 unmodified lines | |||
| 20 | #include <unistd.h> | 20 | #include <unistd.h> |
| 21 | 21 | ||
| 22 | 22 | ||
| 23 | .. cpp:function:: ssize_t read( int fd, void *buf, size_t count ) | 23 | .. c:function:: ssize_t read( int fd, void *buf, size_t count ) |
| 24 | :name: lirc-read | ||
| 24 | 25 | ||
| 25 | 26 | ||
| 26 | Arguments | 27 | Arguments |
| @@ -30,8 +31,10 @@ Arguments · 3 unmodified lines | |||
| 30 | File descriptor returned by ``open()``. | 31 | File descriptor returned by ``open()``. |
| 31 | 32 | ||
| 32 | ``buf`` | 33 | ``buf`` |
| 33 | ``count`` | 34 | Buffer to be filled |
| 34 | 35 | ||
| 36 | ``count`` | ||
| 37 | Max number of bytes to read | ||
| 35 | 38 | ||
| 36 | Description | 39 | Description |
| 37 | =========== | 40 | =========== |
| @@ -14,7 +14,8 @@ LIRC_SET_MEASURE_CARRIER_MODE - enable or disable measure mode · 13 unmodified lines | |||
| 14 | Synopsis | 14 | Synopsis |
| 15 | ======== | 15 | ======== |
| 16 | 16 | ||
| 17 | .. cpp:function:: int ioctl( int fd, int request, __u32 *enable ) | 17 | .. c:function:: int ioctl( int fd, LIRC_SET_MEASURE_CARRIER_MODE, __u32 *enable ) |
| 18 | :name: LIRC_SET_MEASURE_CARRIER_MODE | ||
| 18 | 19 | ||
| 19 | Arguments | 20 | Arguments |
| 20 | ========= | 21 | ========= |
| @@ -22,9 +23,6 @@ Arguments · 1 unmodified line | |||
| 22 | ``fd`` | 23 | ``fd`` |
| 23 | File descriptor returned by open(). | 24 | File descriptor returned by open(). |
| 24 | 25 | ||
| 25 | ``request`` | ||
| 26 | LIRC_SET_MEASURE_CARRIER_MODE | ||
| 27 | |||
| 28 | ``enable`` | 26 | ``enable`` |
| 29 | enable = 1 means enable measure mode, enable = 0 means disable measure | 27 | enable = 1 means enable measure mode, enable = 0 means disable measure |
| 30 | mode. | 28 | mode. |
| @@ -15,7 +15,8 @@ IR receive. · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | ======== | 16 | ======== |
| 17 | 17 | ||
| 18 | .. cpp:function:: int ioctl( int fd, int request, __u32 *frequency ) | 18 | .. c:function:: int ioctl( int fd, LIRC_SET_REC_CARRIER_RANGE, __u32 *frequency ) |
| 19 | :name: LIRC_SET_REC_CARRIER_RANGE | ||
| 19 | 20 | ||
| 20 | Arguments | 21 | Arguments |
| 21 | ========= | 22 | ========= |
| @@ -23,9 +24,6 @@ Arguments · 1 unmodified line | |||
| 23 | ``fd`` | 24 | ``fd`` |
| 24 | File descriptor returned by open(). | 25 | File descriptor returned by open(). |
| 25 | 26 | ||
| 26 | ``request`` | ||
| 27 | LIRC_SET_REC_CARRIER_RANGE | ||
| 28 | |||
| 29 | ``frequency`` | 27 | ``frequency`` |
| 30 | Frequency of the carrier that modulates PWM data, in Hz. | 28 | Frequency of the carrier that modulates PWM data, in Hz. |
| 31 | 29 | ||
| @@ -15,7 +15,8 @@ LIRC_SET_REC_CARRIER - Set carrier used to modulate IR receive. · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | ======== | 16 | ======== |
| 17 | 17 | ||
| 18 | .. cpp:function:: int ioctl( int fd, int request, __u32 *frequency ) | 18 | .. c:function:: int ioctl( int fd, LIRC_SET_REC_CARRIER, __u32 *frequency ) |
| 19 | :name: LIRC_SET_REC_CARRIER | ||
| 19 | 20 | ||
| 20 | Arguments | 21 | Arguments |
| 21 | ========= | 22 | ========= |
| @@ -23,9 +24,6 @@ Arguments · 1 unmodified line | |||
| 23 | ``fd`` | 24 | ``fd`` |
| 24 | File descriptor returned by open(). | 25 | File descriptor returned by open(). |
| 25 | 26 | ||
| 26 | ``request`` | ||
| 27 | LIRC_SET_REC_CARRIER | ||
| 28 | |||
| 29 | ``frequency`` | 27 | ``frequency`` |
| 30 | Frequency of the carrier that modulates PWM data, in Hz. | 28 | Frequency of the carrier that modulates PWM data, in Hz. |
| 31 | 29 | ||
| @@ -14,7 +14,8 @@ LIRC_SET_REC_TIMEOUT_REPORTS - enable or disable timeout reports for IR receive · 13 unmodified lines | |||
| 14 | Synopsis | 14 | Synopsis |
| 15 | ======== | 15 | ======== |
| 16 | 16 | ||
| 17 | .. cpp:function:: int ioctl( int fd, int request, __u32 *enable ) | 17 | .. c:function:: int ioctl( int fd, LIRC_SET_REC_TIMEOUT_REPORTS, __u32 *enable ) |
| 18 | :name: LIRC_SET_REC_TIMEOUT_REPORTS | ||
| 18 | 19 | ||
| 19 | Arguments | 20 | Arguments |
| 20 | ========= | 21 | ========= |
| @@ -22,9 +23,6 @@ Arguments · 1 unmodified line | |||
| 22 | ``fd`` | 23 | ``fd`` |
| 23 | File descriptor returned by open(). | 24 | File descriptor returned by open(). |
| 24 | 25 | ||
| 25 | ``request`` | ||
| 26 | LIRC_SET_REC_TIMEOUT_REPORTS | ||
| 27 | |||
| 28 | ``enable`` | 26 | ``enable`` |
| 29 | enable = 1 means enable timeout report, enable = 0 means disable timeout | 27 | enable = 1 means enable timeout report, enable = 0 means disable timeout |
| 30 | reports. | 28 | reports. |
| @@ -14,7 +14,8 @@ LIRC_SET_REC_TIMEOUT - sets the integer value for IR inactivity timeout. · 13 unmodified lines | |||
| 14 | Synopsis | 14 | Synopsis |
| 15 | ======== | 15 | ======== |
| 16 | 16 | ||
| 17 | .. cpp:function:: int ioctl( int fd, int request, __u32 *timeout ) | 17 | .. c:function:: int ioctl( int fd, LIRC_SET_REC_TIMEOUT, __u32 *timeout ) |
| 18 | :name: LIRC_SET_REC_TIMEOUT | ||
| 18 | 19 | ||
| 19 | Arguments | 20 | Arguments |
| 20 | ========= | 21 | ========= |
| @@ -22,9 +23,6 @@ Arguments · 1 unmodified line | |||
| 22 | ``fd`` | 23 | ``fd`` |
| 23 | File descriptor returned by open(). | 24 | File descriptor returned by open(). |
| 24 | 25 | ||
| 25 | ``request`` | ||
| 26 | LIRC_SET_REC_TIMEOUT | ||
| 27 | |||
| 28 | ``timeout`` | 26 | ``timeout`` |
| 29 | Timeout, in microseconds. | 27 | Timeout, in microseconds. |
| 30 | 28 | ||
| @@ -15,7 +15,8 @@ LIRC_SET_SEND_CARRIER - Set send carrier used to modulate IR TX. · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | ======== | 16 | ======== |
| 17 | 17 | ||
| 18 | .. cpp:function:: int ioctl( int fd, int request, __u32 *frequency ) | 18 | .. c:function:: int ioctl( int fd, LIRC_SET_SEND_CARRIER, __u32 *frequency ) |
| 19 | :name: LIRC_SET_SEND_CARRIER | ||
| 19 | 20 | ||
| 20 | Arguments | 21 | Arguments |
| 21 | ========= | 22 | ========= |
| @@ -23,9 +24,6 @@ Arguments · 1 unmodified line | |||
| 23 | ``fd`` | 24 | ``fd`` |
| 24 | File descriptor returned by open(). | 25 | File descriptor returned by open(). |
| 25 | 26 | ||
| 26 | ``request`` | ||
| 27 | LIRC_SET_SEND_CARRIER | ||
| 28 | |||
| 29 | ``frequency`` | 27 | ``frequency`` |
| 30 | Frequency of the carrier to be modulated, in Hz. | 28 | Frequency of the carrier to be modulated, in Hz. |
| 31 | 29 | ||
| @@ -15,7 +15,8 @@ IR transmit. · 14 unmodified lines | |||
| 15 | Synopsis | 15 | Synopsis |
| 16 | ======== | 16 | ======== |
| 17 | 17 | ||
| 18 | .. cpp:function:: int ioctl( int fd, int request, __u32 *duty_cycle) | 18 | .. c:function:: int ioctl( int fd, LIRC_SET_SEND_DUTY_CYCLE, __u32 *duty_cycle) |
| 19 | :name: LIRC_SET_SEND_DUTY_CYCLE | ||
| 19 | 20 | ||
| 20 | Arguments | 21 | Arguments |
| 21 | ========= | 22 | ========= |
| @@ -23,9 +24,6 @@ Arguments · 1 unmodified line | |||
| 23 | ``fd`` | 24 | ``fd`` |
| 24 | File descriptor returned by open(). | 25 | File descriptor returned by open(). |
| 25 | 26 | ||
| 26 | ``request`` | ||
| 27 | LIRC_SET_SEND_DUTY_CYCLE | ||
| 28 | |||
| 29 | ``duty_cycle`` | 27 | ``duty_cycle`` |
| 30 | Duty cicle, describing the pulse width in percent (from 1 to 99) of | 28 | Duty cicle, describing the pulse width in percent (from 1 to 99) of |
| 31 | the total cycle. Values 0 and 100 are reserved. | 29 | the total cycle. Values 0 and 100 are reserved. |
| @@ -14,7 +14,8 @@ LIRC_SET_TRANSMITTER_MASK - Enables send codes on a given set of transmitters · 13 unmodified lines | |||
| 14 | Synopsis | 14 | Synopsis |
| 15 | ======== | 15 | ======== |
| 16 | 16 | ||
| 17 | .. cpp:function:: int ioctl( int fd, int request, __u32 *mask ) | 17 | .. c:function:: int ioctl( int fd, LIRC_SET_TRANSMITTER_MASK, __u32 *mask ) |
| 18 | :name: LIRC_SET_TRANSMITTER_MASK | ||
| 18 | 19 | ||
| 19 | Arguments | 20 | Arguments |
| 20 | ========= | 21 | ========= |
| @@ -22,9 +23,6 @@ Arguments · 1 unmodified line | |||
| 22 | ``fd`` | 23 | ``fd`` |
| 23 | File descriptor returned by open(). | 24 | File descriptor returned by open(). |
| 24 | 25 | ||
| 25 | ``request`` | ||
| 26 | LIRC_SET_TRANSMITTER_MASK | ||
| 27 | |||
| 28 | ``mask`` | 26 | ``mask`` |
| 29 | Mask with channels to enable tx. Channel 0 is the least significant bit. | 27 | Mask with channels to enable tx. Channel 0 is the least significant bit. |
| 30 | 28 | ||
| @@ -14,7 +14,8 @@ LIRC_SET_WIDEBAND_RECEIVER - enable wide band receiver. · 13 unmodified lines | |||
| 14 | Synopsis | 14 | Synopsis |
| 15 | ======== | 15 | ======== |
| 16 | 16 | ||
| 17 | .. cpp:function:: int ioctl( int fd, int request, __u32 *enable ) | 17 | .. c:function:: int ioctl( int fd, LIRC_SET_WIDEBAND_RECEIVER, __u32 *enable ) |
| 18 | :name: LIRC_SET_WIDEBAND_RECEIVER | ||
| 18 | 19 | ||
| 19 | Arguments | 20 | Arguments |
| 20 | ========= | 21 | ========= |
| @@ -22,9 +23,6 @@ Arguments · 1 unmodified line | |||
| 22 | ``fd`` | 23 | ``fd`` |
| 23 | File descriptor returned by open(). | 24 | File descriptor returned by open(). |
| 24 | 25 | ||
| 25 | ``request`` | ||
| 26 | LIRC_SET_WIDEBAND_RECEIVER | ||
| 27 | |||
| 28 | ``enable`` | 26 | ``enable`` |
| 29 | enable = 1 means enable wideband receiver, enable = 0 means disable | 27 | enable = 1 means enable wideband receiver, enable = 0 means disable |
| 30 | wideband receiver. | 28 | wideband receiver. |
| @@ -42,7 +40,9 @@ that prevents them to be used with some remotes. Wide band receiver might · 11 unmodified lines | |||
| 42 | also be more precise. On the other hand its disadvantage it usually | 40 | also be more precise. On the other hand its disadvantage it usually |
| 43 | reduced range of reception. | 41 | reduced range of reception. |
| 44 | 42 | ||
| 45 | .. note:: Wide band receiver might be implictly enabled if you enable | 43 | .. note:: |
| 44 | |||
| 45 | Wide band receiver might be implictly enabled if you enable | ||
| 46 | carrier reports. In that case it will be disabled as soon as you disable | 46 | carrier reports. In that case it will be disabled as soon as you disable |
| 47 | carrier reports. Trying to disable wide band receiver while carrier | 47 | carrier reports. Trying to disable wide band receiver while carrier |
| 48 | reports are active will do nothing. | 48 | reports are active will do nothing. |
| @@ -20,8 +20,8 @@ Synopsis · 19 unmodified lines | |||
| 20 | #include <unistd.h> | 20 | #include <unistd.h> |
| 21 | 21 | ||
| 22 | 22 | ||
| 23 | .. cpp:function:: ssize_t write( int fd, void *buf, size_t count ) | 23 | .. c:function:: ssize_t write( int fd, void *buf, size_t count ) |
| 24 | 24 | :name: lirc-write | |
| 25 | 25 | ||
| 26 | Arguments | 26 | Arguments |
| 27 | ========= | 27 | ========= |
| @@ -30,8 +30,10 @@ Arguments · 2 unmodified lines | |||
| 30 | File descriptor returned by ``open()``. | 30 | File descriptor returned by ``open()``. |
| 31 | 31 | ||
| 32 | ``buf`` | 32 | ``buf`` |
| 33 | ``count`` | 33 | Buffer with data to be written |
| 34 | 34 | ||
| 35 | ``count`` | ||
| 36 | Number of bytes at the buffer | ||
| 35 | 37 | ||
| 36 | Description | 38 | Description |
| 37 | =========== | 39 | =========== |
| @@ -25,6 +25,8 @@ the remote via /dev/input/event devices. · 24 unmodified lines | |||
| 25 | 25 | ||
| 26 | .. _rc_standard_keymap: | 26 | .. _rc_standard_keymap: |
| 27 | 27 | ||
| 28 | .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| | ||
| 29 | |||
| 28 | .. flat-table:: IR default keymapping | 30 | .. flat-table:: IR default keymapping |
| 29 | :header-rows: 0 | 31 | :header-rows: 0 |
| 30 | :stub-columns: 0 | 32 | :stub-columns: 0 |
| @@ -21,15 +21,15 @@ more than one video input or output. Assumed two composite video inputs · 20 unmodified lines | |||
| 21 | and two audio inputs exist, there may be up to four valid combinations. | 21 | and two audio inputs exist, there may be up to four valid combinations. |
| 22 | The relation of video and audio connectors is defined in the | 22 | The relation of video and audio connectors is defined in the |
| 23 | ``audioset`` field of the respective struct | 23 | ``audioset`` field of the respective struct |
| 24 | :ref:`v4l2_input <v4l2-input>` or struct | 24 | :c:type:`v4l2_input` or struct |
| 25 | :ref:`v4l2_output <v4l2-output>`, where each bit represents the index | 25 | :c:type:`v4l2_output`, where each bit represents the index |
| 26 | number, starting at zero, of one audio input or output. | 26 | number, starting at zero, of one audio input or output. |
| 27 | 27 | ||
| 28 | To learn about the number and attributes of the available inputs and | 28 | To learn about the number and attributes of the available inputs and |
| 29 | outputs applications can enumerate them with the | 29 | outputs applications can enumerate them with the |
| 30 | :ref:`VIDIOC_ENUMAUDIO` and | 30 | :ref:`VIDIOC_ENUMAUDIO` and |
| 31 | :ref:`VIDIOC_ENUMAUDOUT <VIDIOC_ENUMAUDOUT>` ioctl, respectively. | 31 | :ref:`VIDIOC_ENUMAUDOUT <VIDIOC_ENUMAUDOUT>` ioctl, respectively. |
| 32 | The struct :ref:`v4l2_audio <v4l2-audio>` returned by the | 32 | The struct :c:type:`v4l2_audio` returned by the |
| 33 | :ref:`VIDIOC_ENUMAUDIO` ioctl also contains signal | 33 | :ref:`VIDIOC_ENUMAUDIO` ioctl also contains signal |
| 34 | :status information applicable when the current audio input is queried. | 34 | :status information applicable when the current audio input is queried. |
| 35 | 35 | ||
| @@ -37,7 +37,9 @@ The :ref:`VIDIOC_G_AUDIO <VIDIOC_G_AUDIO>` and · 1 unmodified line | |||
| 37 | :ref:`VIDIOC_G_AUDOUT <VIDIOC_G_AUDOUT>` ioctls report the current | 37 | :ref:`VIDIOC_G_AUDOUT <VIDIOC_G_AUDOUT>` ioctls report the current |
| 38 | audio input and output, respectively. | 38 | audio input and output, respectively. |
| 39 | 39 | ||
| 40 | .. note:: Note that, unlike :ref:`VIDIOC_G_INPUT <VIDIOC_G_INPUT>` and | 40 | .. note:: |
| 41 | |||
| 42 | Note that, unlike :ref:`VIDIOC_G_INPUT <VIDIOC_G_INPUT>` and | ||
| 41 | :ref:`VIDIOC_G_OUTPUT <VIDIOC_G_OUTPUT>` these ioctls return a | 43 | :ref:`VIDIOC_G_OUTPUT <VIDIOC_G_OUTPUT>` these ioctls return a |
| 42 | structure as :ref:`VIDIOC_ENUMAUDIO` and | 44 | structure as :ref:`VIDIOC_ENUMAUDIO` and |
| 43 | :ref:`VIDIOC_ENUMAUDOUT <VIDIOC_ENUMAUDOUT>` do, not just an index. | 45 | :ref:`VIDIOC_ENUMAUDOUT <VIDIOC_ENUMAUDOUT>` do, not just an index. |
| @@ -51,7 +53,7 @@ Drivers must implement all audio input ioctls when the device has · 7 unmodified lines | |||
| 51 | multiple selectable audio inputs, all audio output ioctls when the | 53 | multiple selectable audio inputs, all audio output ioctls when the |
| 52 | device has multiple selectable audio outputs. When the device has any | 54 | device has multiple selectable audio outputs. When the device has any |
| 53 | audio inputs or outputs the driver must set the ``V4L2_CAP_AUDIO`` flag | 55 | audio inputs or outputs the driver must set the ``V4L2_CAP_AUDIO`` flag |
| 54 | in the struct :ref:`v4l2_capability <v4l2-capability>` returned by | 56 | in the struct :c:type:`v4l2_capability` returned by |
| 55 | the :ref:`VIDIOC_QUERYCAP` ioctl. | 57 | the :ref:`VIDIOC_QUERYCAP` ioctl. |
| 56 | 58 | ||
| 57 | 59 | ||
| @@ -89,7 +91,7 @@ Example: Switching to the first audio input · 31 unmodified lines | |||
| 89 | } | 91 | } |
| 90 | 92 | ||
| 91 | .. [#f1] | 93 | .. [#f1] |
| 92 | Actually struct :ref:`v4l2_audio <v4l2-audio>` ought to have a | 94 | Actually struct :c:type:`v4l2_audio` ought to have a |
| 93 | ``tuner`` field like struct :ref:`v4l2_input <v4l2-input>`, not | 95 | ``tuner`` field like struct :c:type:`v4l2_input`, not |
| 94 | only making the API more consistent but also permitting radio devices | 96 | only making the API more consistent but also permitting radio devices |
| 95 | with multiple tuners. | 97 | with multiple tuners. |
| @@ -11,14 +11,14 @@ the Streaming I/O methods. In the multi-planar API, the data is held in · 10 unmodified lines | |||
| 11 | planes, while the buffer structure acts as a container for the planes. | 11 | planes, while the buffer structure acts as a container for the planes. |
| 12 | Only pointers to buffers (planes) are exchanged, the data itself is not | 12 | Only pointers to buffers (planes) are exchanged, the data itself is not |
| 13 | copied. These pointers, together with meta-information like timestamps | 13 | copied. These pointers, together with meta-information like timestamps |
| 14 | or field parity, are stored in a struct :ref:`struct v4l2_buffer <v4l2-buffer>`, | 14 | or field parity, are stored in a struct :c:type:`v4l2_buffer`, |
| 15 | argument to the :ref:`VIDIOC_QUERYBUF`, | 15 | argument to the :ref:`VIDIOC_QUERYBUF`, |
| 16 | :ref:`VIDIOC_QBUF` and | 16 | :ref:`VIDIOC_QBUF` and |
| 17 | :ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl. In the multi-planar API, | 17 | :ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl. In the multi-planar API, |
| 18 | some plane-specific members of struct :ref:`struct v4l2_buffer <v4l2-buffer>`, | 18 | some plane-specific members of struct :c:type:`v4l2_buffer`, |
| 19 | such as pointers and sizes for each plane, are stored in struct | 19 | such as pointers and sizes for each plane, are stored in struct |
| 20 | :ref:`struct v4l2_plane <v4l2-plane>` instead. In that case, struct | 20 | struct :c:type:`v4l2_plane` instead. In that case, struct |
| 21 | :ref:`struct v4l2_buffer <v4l2-buffer>` contains an array of plane structures. | 21 | struct :c:type:`v4l2_buffer` contains an array of plane structures. |
| 22 | 22 | ||
| 23 | Dequeued video buffers come with timestamps. The driver decides at which | 23 | Dequeued video buffers come with timestamps. The driver decides at which |
| 24 | part of the frame and with which clock the timestamp is taken. Please | 24 | part of the frame and with which clock the timestamp is taken. Please |
| @@ -34,470 +34,302 @@ flags are copied from the OUTPUT video buffer to the CAPTURE video · 9 unmodified lines | |||
| 34 | buffer. | 34 | buffer. |
| 35 | 35 | ||
| 36 | 36 | ||
| 37 | .. _v4l2-buffer: | 37 | .. c:type:: v4l2_buffer |
| 38 | 38 | ||
| 39 | struct v4l2_buffer | 39 | struct v4l2_buffer |
| 40 | ================== | 40 | ================== |
| 41 | 41 | ||
| 42 | .. tabularcolumns:: |p{2.8cm}|p{2.5cm}|p{1.3cm}|p{10.5cm}| | ||
| 43 | |||
| 44 | .. cssclass:: longtable | ||
| 45 | |||
| 42 | .. flat-table:: struct v4l2_buffer | 46 | .. flat-table:: struct v4l2_buffer |
| 43 | :header-rows: 0 | 47 | :header-rows: 0 |
| 44 | :stub-columns: 0 | 48 | :stub-columns: 0 |
| 45 | :widths: 1 1 1 2 | 49 | :widths: 1 2 1 10 |
| 46 | 50 | ||
| 47 | 51 | * - __u32 | |
| 48 | - .. row 1 | 52 | - ``index`` |
| 49 | 53 | - | |
| 50 | - __u32 | 54 | - Number of the buffer, set by the application except when calling |
| 51 | 55 | :ref:`VIDIOC_DQBUF <VIDIOC_QBUF>`, then it is set by the | |
| 52 | - ``index`` | 56 | driver. This field can range from zero to the number of buffers |
| 53 | 57 | allocated with the :ref:`VIDIOC_REQBUFS` ioctl | |
| 54 | - | 58 | (struct :c:type:`v4l2_requestbuffers` |
| 55 | - Number of the buffer, set by the application except when calling | 59 | ``count``), plus any buffers allocated with |
| 56 | :ref:`VIDIOC_DQBUF <VIDIOC_QBUF>`, then it is set by the | 60 | :ref:`VIDIOC_CREATE_BUFS` minus one. |
| 57 | driver. This field can range from zero to the number of buffers | 61 | * - __u32 |
| 58 | allocated with the :ref:`VIDIOC_REQBUFS` ioctl | 62 | - ``type`` |
| 59 | (struct :ref:`v4l2_requestbuffers <v4l2-requestbuffers>` | 63 | - |
| 60 | ``count``), plus any buffers allocated with | 64 | - Type of the buffer, same as struct |
| 61 | :ref:`VIDIOC_CREATE_BUFS` minus one. | 65 | :c:type:`v4l2_format` ``type`` or struct |
| 62 | 66 | :c:type:`v4l2_requestbuffers` ``type``, set | |
| 63 | - .. row 2 | 67 | by the application. See :c:type:`v4l2_buf_type` |
| 64 | 68 | * - __u32 | |
| 65 | - __u32 | 69 | - ``bytesused`` |
| 66 | 70 | - | |
| 67 | - ``type`` | 71 | - The number of bytes occupied by the data in the buffer. It depends |
| 68 | 72 | on the negotiated data format and may change with each buffer for | |
| 69 | - | 73 | compressed variable size data like JPEG images. Drivers must set |
| 70 | - Type of the buffer, same as struct | 74 | this field when ``type`` refers to a capture stream, applications |
| 71 | :ref:`v4l2_format <v4l2-format>` ``type`` or struct | 75 | when it refers to an output stream. If the application sets this |
| 72 | :ref:`v4l2_requestbuffers <v4l2-requestbuffers>` ``type``, set | 76 | to 0 for an output stream, then ``bytesused`` will be set to the |
| 73 | by the application. See :ref:`v4l2-buf-type` | 77 | size of the buffer (see the ``length`` field of this struct) by |
| 74 | 78 | the driver. For multiplanar formats this field is ignored and the | |
| 75 | - .. row 3 | 79 | ``planes`` pointer is used instead. |
| 76 | 80 | * - __u32 | |
| 77 | - __u32 | 81 | - ``flags`` |
| 78 | 82 | - | |
| 79 | - ``bytesused`` | 83 | - Flags set by the application or driver, see :ref:`buffer-flags`. |
| 80 | 84 | * - __u32 | |
| 81 | - | 85 | - ``field`` |
| 82 | - The number of bytes occupied by the data in the buffer. It depends | 86 | - |
| 83 | on the negotiated data format and may change with each buffer for | 87 | - Indicates the field order of the image in the buffer, see |
| 84 | compressed variable size data like JPEG images. Drivers must set | 88 | :c:type:`v4l2_field`. This field is not used when the buffer |
| 85 | this field when ``type`` refers to a capture stream, applications | 89 | contains VBI data. Drivers must set it when ``type`` refers to a |
| 86 | when it refers to an output stream. If the application sets this | 90 | capture stream, applications when it refers to an output stream. |
| 87 | to 0 for an output stream, then ``bytesused`` will be set to the | 91 | * - struct timeval |
| 88 | size of the buffer (see the ``length`` field of this struct) by | 92 | - ``timestamp`` |
| 89 | the driver. For multiplanar formats this field is ignored and the | 93 | - |
| 90 | ``planes`` pointer is used instead. | 94 | - For capture streams this is time when the first data byte was |
| 91 | 95 | captured, as returned by the :c:func:`clock_gettime()` function | |
| 92 | - .. row 4 | 96 | for the relevant clock id; see ``V4L2_BUF_FLAG_TIMESTAMP_*`` in |
| 93 | 97 | :ref:`buffer-flags`. For output streams the driver stores the | |
| 94 | - __u32 | 98 | time at which the last data byte was actually sent out in the |
| 95 | 99 | ``timestamp`` field. This permits applications to monitor the | |
| 96 | - ``flags`` | 100 | drift between the video and system clock. For output streams that |
| 97 | 101 | use ``V4L2_BUF_FLAG_TIMESTAMP_COPY`` the application has to fill | |
| 98 | - | 102 | in the timestamp which will be copied by the driver to the capture |
| 99 | - Flags set by the application or driver, see :ref:`buffer-flags`. | 103 | stream. |
| 100 | 104 | * - struct :c:type:`v4l2_timecode` | |
| 101 | - .. row 5 | 105 | - ``timecode`` |
| 102 | 106 | - | |
| 103 | - __u32 | 107 | - When ``type`` is ``V4L2_BUF_TYPE_VIDEO_CAPTURE`` and the |
| 104 | 108 | ``V4L2_BUF_FLAG_TIMECODE`` flag is set in ``flags``, this | |
| 105 | - ``field`` | 109 | structure contains a frame timecode. In |
| 106 | 110 | :c:type:`V4L2_FIELD_ALTERNATE <v4l2_field>` mode the top and | |
| 107 | - | 111 | bottom field contain the same timecode. Timecodes are intended to |
| 108 | - Indicates the field order of the image in the buffer, see | 112 | help video editing and are typically recorded on video tapes, but |
| 109 | :ref:`v4l2-field`. This field is not used when the buffer | 113 | also embedded in compressed formats like MPEG. This field is |
| 110 | contains VBI data. Drivers must set it when ``type`` refers to a | 114 | independent of the ``timestamp`` and ``sequence`` fields. |
| 111 | capture stream, applications when it refers to an output stream. | 115 | * - __u32 |
| 112 | 116 | - ``sequence`` | |
| 113 | - .. row 6 | 117 | - |
| 114 | 118 | - Set by the driver, counting the frames (not fields!) in sequence. | |
| 115 | - struct timeval | 119 | This field is set for both input and output devices. |
| 116 | 120 | * - :cspan:`3` | |
| 117 | - ``timestamp`` | 121 | |
| 118 | 122 | In :c:type:`V4L2_FIELD_ALTERNATE <v4l2_field>` mode the top and | |
| 119 | - | 123 | bottom field have the same sequence number. The count starts at |
| 120 | - For capture streams this is time when the first data byte was | 124 | zero and includes dropped or repeated frames. A dropped frame was |
| 121 | captured, as returned by the :c:func:`clock_gettime()` function | 125 | received by an input device but could not be stored due to lack of |
| 122 | for the relevant clock id; see ``V4L2_BUF_FLAG_TIMESTAMP_*`` in | 126 | free buffer space. A repeated frame was displayed again by an |
| 123 | :ref:`buffer-flags`. For output streams the driver stores the | 127 | output device because the application did not pass new data in |
| 124 | time at which the last data byte was actually sent out in the | 128 | time. |
| 125 | ``timestamp`` field. This permits applications to monitor the | 129 | |
| 126 | drift between the video and system clock. For output streams that | 130 | .. note:: |
| 127 | use ``V4L2_BUF_FLAG_TIMESTAMP_COPY`` the application has to fill | 131 | |
| 128 | in the timestamp which will be copied by the driver to the capture | 132 | This may count the frames received e.g. over USB, without |
| 129 | stream. | 133 | taking into account the frames dropped by the remote hardware due |
| 130 | 134 | to limited compression throughput or bus bandwidth. These devices | |
| 131 | - .. row 7 | 135 | identify by not enumerating any video standards, see |
| 132 | 136 | :ref:`standard`. | |
| 133 | - struct :ref:`v4l2_timecode <v4l2-timecode>` | 137 | |
| 134 | 138 | * - __u32 | |
| 135 | - ``timecode`` | 139 | - ``memory`` |
| 136 | 140 | - | |
| 137 | - | 141 | - This field must be set by applications and/or drivers in |
| 138 | - When ``type`` is ``V4L2_BUF_TYPE_VIDEO_CAPTURE`` and the | 142 | accordance with the selected I/O method. See :c:type:`v4l2_memory` |
| 139 | ``V4L2_BUF_FLAG_TIMECODE`` flag is set in ``flags``, this | 143 | * - union |
| 140 | structure contains a frame timecode. In | 144 | - ``m`` |
| 141 | :ref:`V4L2_FIELD_ALTERNATE <v4l2-field>` mode the top and | 145 | * - |
| 142 | bottom field contain the same timecode. Timecodes are intended to | 146 | - __u32 |
| 143 | help video editing and are typically recorded on video tapes, but | 147 | - ``offset`` |
| 144 | also embedded in compressed formats like MPEG. This field is | 148 | - For the single-planar API and when ``memory`` is |
| 145 | independent of the ``timestamp`` and ``sequence`` fields. | 149 | ``V4L2_MEMORY_MMAP`` this is the offset of the buffer from the |
| 146 | 150 | start of the device memory. The value is returned by the driver | |
| 147 | - .. row 8 | 151 | and apart of serving as parameter to the |
| 148 | 152 | :ref:`mmap() <func-mmap>` function not useful for applications. | |
| 149 | - __u32 | 153 | See :ref:`mmap` for details |
| 150 | 154 | * - | |
| 151 | - ``sequence`` | 155 | - unsigned long |
| 152 | 156 | - ``userptr`` | |
| 153 | - | 157 | - For the single-planar API and when ``memory`` is |
| 154 | - Set by the driver, counting the frames (not fields!) in sequence. | 158 | ``V4L2_MEMORY_USERPTR`` this is a pointer to the buffer (casted to |
| 155 | This field is set for both input and output devices. | 159 | unsigned long type) in virtual memory, set by the application. See |
| 156 | 160 | :ref:`userp` for details. | |
| 157 | - .. row 9 | 161 | * - |
| 158 | 162 | - struct v4l2_plane | |
| 159 | - :cspan:`3` | 163 | - ``*planes`` |
| 160 | 164 | - When using the multi-planar API, contains a userspace pointer to | |
| 161 | In :ref:`V4L2_FIELD_ALTERNATE <v4l2-field>` mode the top and | 165 | an array of struct :c:type:`v4l2_plane`. The size of |
| 162 | bottom field have the same sequence number. The count starts at | 166 | the array should be put in the ``length`` field of this |
| 163 | zero and includes dropped or repeated frames. A dropped frame was | 167 | struct :c:type:`v4l2_buffer` structure. |
| 164 | received by an input device but could not be stored due to lack of | 168 | * - |
| 165 | free buffer space. A repeated frame was displayed again by an | 169 | - int |
| 166 | output device because the application did not pass new data in | 170 | - ``fd`` |
| 167 | time. | 171 | - For the single-plane API and when ``memory`` is |
| 168 | 172 | ``V4L2_MEMORY_DMABUF`` this is the file descriptor associated with | |
| 169 | .. note:: This may count the frames received e.g. over USB, without | 173 | a DMABUF buffer. |
| 170 | taking into account the frames dropped by the remote hardware due | 174 | * - __u32 |
| 171 | to limited compression throughput or bus bandwidth. These devices | 175 | - ``length`` |
| 172 | identify by not enumerating any video standards, see | 176 | - |
| 173 | :ref:`standard`. | 177 | - Size of the buffer (not the payload) in bytes for the |
| 174 | 178 | single-planar API. This is set by the driver based on the calls to | |
| 175 | - .. row 10 | 179 | :ref:`VIDIOC_REQBUFS` and/or |
| 176 | 180 | :ref:`VIDIOC_CREATE_BUFS`. For the | |
| 177 | - __u32 | 181 | multi-planar API the application sets this to the number of |
| 178 | 182 | elements in the ``planes`` array. The driver will fill in the | |
| 179 | - ``memory`` | 183 | actual number of valid elements in that array. |
| 180 | 184 | * - __u32 | |
| 181 | - | 185 | - ``reserved2`` |
| 182 | - This field must be set by applications and/or drivers in | 186 | - |
| 183 | accordance with the selected I/O method. See :ref:`v4l2-memory` | 187 | - A place holder for future extensions. Drivers and applications |
| 184 | 188 | must set this to 0. | |
| 185 | - .. row 11 | 189 | * - __u32 |
| 186 | 190 | - ``reserved`` | |
| 187 | - union | 191 | - |
| 188 | 192 | - A place holder for future extensions. Drivers and applications | |
| 189 | - ``m`` | 193 | must set this to 0. |
| 190 | 194 | ||
| 191 | - .. row 12 | 195 | |
| 192 | 196 | ||
| 193 | - | 197 | .. c:type:: v4l2_plane |
| 194 | - __u32 | ||
| 195 | |||
| 196 | - ``offset`` | ||
| 197 | |||
| 198 | - For the single-planar API and when ``memory`` is | ||
| 199 | ``V4L2_MEMORY_MMAP`` this is the offset of the buffer from the | ||
| 200 | start of the device memory. The value is returned by the driver | ||
| 201 | and apart of serving as parameter to the | ||
| 202 | :ref:`mmap() <func-mmap>` function not useful for applications. | ||
| 203 | See :ref:`mmap` for details | ||
| 204 | |||
| 205 | - .. row 13 | ||
| 206 | |||
| 207 | - | ||
| 208 | - unsigned long | ||
| 209 | |||
| 210 | - ``userptr`` | ||
| 211 | |||
| 212 | - For the single-planar API and when ``memory`` is | ||
| 213 | ``V4L2_MEMORY_USERPTR`` this is a pointer to the buffer (casted to | ||
| 214 | unsigned long type) in virtual memory, set by the application. See | ||
| 215 | :ref:`userp` for details. | ||
| 216 | |||
| 217 | - .. row 14 | ||
| 218 | |||
| 219 | - | ||
| 220 | - struct v4l2_plane | ||
| 221 | |||
| 222 | - ``*planes`` | ||
| 223 | |||
| 224 | - When using the multi-planar API, contains a userspace pointer to | ||
| 225 | an array of struct :ref:`v4l2_plane <v4l2-plane>`. The size of | ||
| 226 | the array should be put in the ``length`` field of this | ||
| 227 | :ref:`struct v4l2_buffer <v4l2-buffer>` structure. | ||
| 228 | |||
| 229 | - .. row 15 | ||
| 230 | |||
| 231 | - | ||
| 232 | - int | ||
| 233 | |||
| 234 | - ``fd`` | ||
| 235 | |||
| 236 | - For the single-plane API and when ``memory`` is | ||
| 237 | ``V4L2_MEMORY_DMABUF`` this is the file descriptor associated with | ||
| 238 | a DMABUF buffer. | ||
| 239 | |||
| 240 | - .. row 16 | ||
| 241 | |||
| 242 | - __u32 | ||
| 243 | |||
| 244 | - ``length`` | ||
| 245 | |||
| 246 | - | ||
| 247 | - Size of the buffer (not the payload) in bytes for the | ||
| 248 | single-planar API. This is set by the driver based on the calls to | ||
| 249 | :ref:`VIDIOC_REQBUFS` and/or | ||
| 250 | :ref:`VIDIOC_CREATE_BUFS`. For the | ||
| 251 | multi-planar API the application sets this to the number of | ||
| 252 | elements in the ``planes`` array. The driver will fill in the | ||
| 253 | actual number of valid elements in that array. | ||
| 254 | |||
| 255 | - .. row 17 | ||
| 256 | |||
| 257 | - __u32 | ||
| 258 | |||
| 259 | - ``reserved2`` | ||
| 260 | |||
| 261 | - | ||
| 262 | - A place holder for future extensions. Drivers and applications | ||
| 263 | must set this to 0. | ||
| 264 | |||
| 265 | - .. row 18 | ||
| 266 | |||
| 267 | - __u32 | ||
| 268 | |||
| 269 | - ``reserved`` | ||
| 270 | |||
| 271 | - | ||
| 272 | - A place holder for future extensions. Drivers and applications | ||
| 273 | must set this to 0. | ||
| 274 | |||
| 275 | |||
| 276 | |||
| 277 | .. _v4l2-plane: | ||
| 278 | 198 | ||
| 279 | struct v4l2_plane | 199 | struct v4l2_plane |
| 280 | ================= | 200 | ================= |
| 281 | 201 | ||
| 202 | .. tabularcolumns:: |p{3.5cm}|p{3.5cm}|p{3.5cm}|p{7.0cm}| | ||
| 203 | |||
| 204 | .. cssclass:: longtable | ||
| 205 | |||
| 282 | .. flat-table:: | 206 | .. flat-table:: |
| 283 | :header-rows: 0 | 207 | :header-rows: 0 |
| 284 | :stub-columns: 0 | 208 | :stub-columns: 0 |
| 285 | :widths: 1 1 1 2 | 209 | :widths: 1 1 1 2 |
| 286 | 210 | ||
| 287 | 211 | * - __u32 | |
| 288 | - .. row 1 | 212 | - ``bytesused`` |
| 289 | 213 | - | |
| 290 | - __u32 | 214 | - The number of bytes occupied by data in the plane (its payload). |
| 291 | 215 | Drivers must set this field when ``type`` refers to a capture | |
| 292 | - ``bytesused`` | 216 | stream, applications when it refers to an output stream. If the |
| 293 | 217 | application sets this to 0 for an output stream, then | |
| 294 | - | 218 | ``bytesused`` will be set to the size of the plane (see the |
| 295 | - The number of bytes occupied by data in the plane (its payload). | 219 | ``length`` field of this struct) by the driver. |
| 296 | Drivers must set this field when ``type`` refers to a capture | 220 | |
| 297 | stream, applications when it refers to an output stream. If the | 221 | .. note:: |
| 298 | application sets this to 0 for an output stream, then | 222 | |
| 299 | ``bytesused`` will be set to the size of the plane (see the | 223 | Note that the actual image data starts at ``data_offset`` |
| 300 | ``length`` field of this struct) by the driver. | 224 | which may not be 0. |
| 301 | 225 | * - __u32 | |
| 302 | .. note:: Note that the actual image data starts at ``data_offset`` | 226 | - ``length`` |
| 303 | which may not be 0. | 227 | - |
| 304 | 228 | - Size in bytes of the plane (not its payload). This is set by the | |
| 305 | - .. row 2 | 229 | driver based on the calls to |
| 306 | 230 | :ref:`VIDIOC_REQBUFS` and/or | |
| 307 | - __u32 | 231 | :ref:`VIDIOC_CREATE_BUFS`. |
| 308 | 232 | * - union | |
| 309 | - ``length`` | 233 | - ``m`` |
| 310 | 234 | - | |
| 311 | - | 235 | - |
| 312 | - Size in bytes of the plane (not its payload). This is set by the | 236 | * - |
| 313 | driver based on the calls to | 237 | - __u32 |
| 314 | :ref:`VIDIOC_REQBUFS` and/or | 238 | - ``mem_offset`` |
| 315 | :ref:`VIDIOC_CREATE_BUFS`. | 239 | - When the memory type in the containing struct |
| 316 | 240 | :c:type:`v4l2_buffer` is ``V4L2_MEMORY_MMAP``, this | |
| 317 | - .. row 3 | 241 | is the value that should be passed to :ref:`mmap() <func-mmap>`, |
| 318 | 242 | similar to the ``offset`` field in struct | |
| 319 | - union | 243 | :c:type:`v4l2_buffer`. |
| 320 | 244 | * - | |
| 321 | - ``m`` | 245 | - unsigned long |
| 322 | 246 | - ``userptr`` | |
| 323 | - | 247 | - When the memory type in the containing struct |
| 324 | - | 248 | :c:type:`v4l2_buffer` is ``V4L2_MEMORY_USERPTR``, |
| 325 | 249 | this is a userspace pointer to the memory allocated for this plane | |
| 326 | - .. row 4 | 250 | by an application. |
| 327 | 251 | * - | |
| 328 | - | 252 | - int |
| 329 | - __u32 | 253 | - ``fd`` |
| 330 | 254 | - When the memory type in the containing struct | |
| 331 | - ``mem_offset`` | 255 | :c:type:`v4l2_buffer` is ``V4L2_MEMORY_DMABUF``, |
| 332 | 256 | this is a file descriptor associated with a DMABUF buffer, similar | |
| 333 | - When the memory type in the containing struct | 257 | to the ``fd`` field in struct :c:type:`v4l2_buffer`. |
| 334 | :ref:`v4l2_buffer <v4l2-buffer>` is ``V4L2_MEMORY_MMAP``, this | 258 | * - __u32 |
| 335 | is the value that should be passed to :ref:`mmap() <func-mmap>`, | 259 | - ``data_offset`` |
| 336 | similar to the ``offset`` field in struct | 260 | - |
| 337 | :ref:`v4l2_buffer <v4l2-buffer>`. | 261 | - Offset in bytes to video data in the plane. Drivers must set this |
| 338 | 262 | field when ``type`` refers to a capture stream, applications when | |
| 339 | - .. row 5 | 263 | it refers to an output stream. |
| 340 | 264 | ||
| 341 | - | 265 | .. note:: |
| 342 | - unsigned long | 266 | |
| 343 | 267 | That data_offset is included in ``bytesused``. So the | |
| 344 | - ``userptr`` | 268 | size of the image in the plane is ``bytesused``-``data_offset`` |
| 345 | 269 | at offset ``data_offset`` from the start of the plane. | |
| 346 | - When the memory type in the containing struct | 270 | * - __u32 |
| 347 | :ref:`v4l2_buffer <v4l2-buffer>` is ``V4L2_MEMORY_USERPTR``, | 271 | - ``reserved[11]`` |
| 348 | this is a userspace pointer to the memory allocated for this plane | 272 | - |
| 349 | by an application. | 273 | - Reserved for future use. Should be zeroed by drivers and |
| 350 | 274 | applications. | |
| 351 | - .. row 6 | 275 | |
| 352 | 276 | ||
| 353 | - | 277 | |
| 354 | - int | 278 | .. c:type:: v4l2_buf_type |
| 355 | |||
| 356 | - ``fd`` | ||
| 357 | |||
| 358 | - When the memory type in the containing struct | ||
| 359 | :ref:`v4l2_buffer <v4l2-buffer>` is ``V4L2_MEMORY_DMABUF``, | ||
| 360 | this is a file descriptor associated with a DMABUF buffer, similar | ||
| 361 | to the ``fd`` field in struct :ref:`v4l2_buffer <v4l2-buffer>`. | ||
| 362 | |||
| 363 | - .. row 7 | ||
| 364 | |||
| 365 | - __u32 | ||
| 366 | |||
| 367 | - ``data_offset`` | ||
| 368 | |||
| 369 | - | ||
| 370 | - Offset in bytes to video data in the plane. Drivers must set this | ||
| 371 | field when ``type`` refers to a capture stream, applications when | ||
| 372 | it refers to an output stream. | ||
| 373 | |||
| 374 | .. note:: That data_offset is included in ``bytesused``. So the | ||
| 375 | size of the image in the plane is ``bytesused``-``data_offset`` | ||
| 376 | at offset ``data_offset`` from the start of the plane. | ||
| 377 | |||
| 378 | - .. row 8 | ||
| 379 | |||
| 380 | - __u32 | ||
| 381 | |||
| 382 | - ``reserved[11]`` | ||
| 383 | |||
| 384 | - | ||
| 385 | - Reserved for future use. Should be zeroed by drivers and | ||
| 386 | applications. | ||
| 387 | |||
| 388 | |||
| 389 | |||
| 390 | .. _v4l2-buf-type: | ||
| 391 | 279 | ||
| 392 | enum v4l2_buf_type | 280 | enum v4l2_buf_type |
| 393 | ================== | 281 | ================== |
| 394 | 282 | ||
| 283 | .. cssclass:: longtable | ||
| 284 | |||
| 285 | .. tabularcolumns:: |p{7.2cm}|p{0.6cm}|p{9.7cm}| | ||
| 286 | |||
| 395 | .. flat-table:: | 287 | .. flat-table:: |
| 396 | :header-rows: 0 | 288 | :header-rows: 0 |
| 397 | :stub-columns: 0 | 289 | :stub-columns: 0 |
| 398 | :widths: 3 1 4 | 290 | :widths: 4 1 9 |
| 399 | 291 | ||
| 400 | 292 | * - ``V4L2_BUF_TYPE_VIDEO_CAPTURE`` | |
| 401 | - .. row 1 | 293 | - 1 |
| 402 | 294 | - Buffer of a single-planar video capture stream, see | |
| 403 | - ``V4L2_BUF_TYPE_VIDEO_CAPTURE`` | 295 | :ref:`capture`. |
| 404 | 296 | * - ``V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE`` | |
| 405 | - 1 | 297 | - 9 |
| 406 | 298 | - Buffer of a multi-planar video capture stream, see | |
| 407 | - Buffer of a single-planar video capture stream, see | 299 | :ref:`capture`. |
| 408 | :ref:`capture`. | 300 | * - ``V4L2_BUF_TYPE_VIDEO_OUTPUT`` |
| 409 | 301 | - 2 | |
| 410 | - .. row 2 | 302 | - Buffer of a single-planar video output stream, see |
| 411 | 303 | :ref:`output`. | |
| 412 | - ``V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE`` | 304 | * - ``V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE`` |
| 413 | 305 | - 10 | |
| 414 | - 9 | 306 | - Buffer of a multi-planar video output stream, see :ref:`output`. |
| 415 | 307 | * - ``V4L2_BUF_TYPE_VIDEO_OVERLAY`` | |
| 416 | - Buffer of a multi-planar video capture stream, see | 308 | - 3 |
| 417 | :ref:`capture`. | 309 | - Buffer for video overlay, see :ref:`overlay`. |
| 418 | 310 | * - ``V4L2_BUF_TYPE_VBI_CAPTURE`` | |
| 419 | - .. row 3 | 311 | - 4 |
| 420 | 312 | - Buffer of a raw VBI capture stream, see :ref:`raw-vbi`. | |
| 421 | - ``V4L2_BUF_TYPE_VIDEO_OUTPUT`` | 313 | * - ``V4L2_BUF_TYPE_VBI_OUTPUT`` |
| 422 | 314 | - 5 | |
| 423 | - 2 | 315 | - Buffer of a raw VBI output stream, see :ref:`raw-vbi`. |
| 424 | 316 | * - ``V4L2_BUF_TYPE_SLICED_VBI_CAPTURE`` | |
| 425 | - Buffer of a single-planar video output stream, see | 317 | - 6 |
| 426 | :ref:`output`. | 318 | - Buffer of a sliced VBI capture stream, see :ref:`sliced`. |
| 427 | 319 | * - ``V4L2_BUF_TYPE_SLICED_VBI_OUTPUT`` | |
| 428 | - .. row 4 | 320 | - 7 |
| 429 | 321 | - Buffer of a sliced VBI output stream, see :ref:`sliced`. | |
| 430 | - ``V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE`` | 322 | * - ``V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY`` |
| 431 | 323 | - 8 | |
| 432 | - 10 | 324 | - Buffer for video output overlay (OSD), see :ref:`osd`. |
| 433 | 325 | * - ``V4L2_BUF_TYPE_SDR_CAPTURE`` | |
| 434 | - Buffer of a multi-planar video output stream, see :ref:`output`. | 326 | - 11 |
| 435 | 327 | - Buffer for Software Defined Radio (SDR) capture stream, see | |
| 436 | - .. row 5 | 328 | :ref:`sdr`. |
| 437 | 329 | * - ``V4L2_BUF_TYPE_SDR_OUTPUT`` | |
| 438 | - ``V4L2_BUF_TYPE_VIDEO_OVERLAY`` | 330 | - 12 |
| 439 | 331 | - Buffer for Software Defined Radio (SDR) output stream, see | |
| 440 | - 3 | 332 | :ref:`sdr`. |
| 441 | |||
| 442 | - Buffer for video overlay, see :ref:`overlay`. | ||
| 443 | |||
| 444 | - .. row 6 | ||
| 445 | |||
| 446 | - ``V4L2_BUF_TYPE_VBI_CAPTURE`` | ||
| 447 | |||
| 448 | - 4 | ||
| 449 | |||
| 450 | - Buffer of a raw VBI capture stream, see :ref:`raw-vbi`. | ||
| 451 | |||
| 452 | - .. row 7 | ||
| 453 | |||
| 454 | - ``V4L2_BUF_TYPE_VBI_OUTPUT`` | ||
| 455 | |||
| 456 | - 5 | ||
| 457 | |||
| 458 | - Buffer of a raw VBI output stream, see :ref:`raw-vbi`. | ||
| 459 | |||
| 460 | - .. row 8 | ||
| 461 | |||
| 462 | - ``V4L2_BUF_TYPE_SLICED_VBI_CAPTURE`` | ||
| 463 | |||
| 464 | - 6 | ||
| 465 | |||
| 466 | - Buffer of a sliced VBI capture stream, see :ref:`sliced`. | ||
| 467 | |||
| 468 | - .. row 9 | ||
| 469 | |||
| 470 | - ``V4L2_BUF_TYPE_SLICED_VBI_OUTPUT`` | ||
| 471 | |||
| 472 | - 7 | ||
| 473 | |||
| 474 | - Buffer of a sliced VBI output stream, see :ref:`sliced`. | ||
| 475 | |||
| 476 | - .. row 10 | ||
| 477 | |||
| 478 | - ``V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY`` | ||
| 479 | |||
| 480 | - 8 | ||
| 481 | |||
| 482 | - Buffer for video output overlay (OSD), see :ref:`osd`. | ||
| 483 | |||
| 484 | - .. row 11 | ||
| 485 | |||
| 486 | - ``V4L2_BUF_TYPE_SDR_CAPTURE`` | ||
| 487 | |||
| 488 | - 11 | ||
| 489 | |||
| 490 | - Buffer for Software Defined Radio (SDR) capture stream, see | ||
| 491 | :ref:`sdr`. | ||
| 492 | |||
| 493 | - .. row 12 | ||
| 494 | |||
| 495 | - ``V4L2_BUF_TYPE_SDR_OUTPUT`` | ||
| 496 | |||
| 497 | - 12 | ||
| 498 | |||
| 499 | - Buffer for Software Defined Radio (SDR) output stream, see | ||
| 500 | :ref:`sdr`. | ||
| 501 | 333 | ||
| 502 | 334 | ||
| 503 | 335 | ||
| @@ -506,371 +338,267 @@ enum v4l2_buf_type · 2 unmodified lines | |||
| 506 | Buffer Flags | 338 | Buffer Flags |
| 507 | ============ | 339 | ============ |
| 508 | 340 | ||
| 341 | .. tabularcolumns:: |p{7.0cm}|p{2.2cm}|p{8.3cm}| | ||
| 342 | |||
| 343 | .. cssclass:: longtable | ||
| 344 | |||
| 509 | .. flat-table:: | 345 | .. flat-table:: |
| 510 | :header-rows: 0 | 346 | :header-rows: 0 |
| 511 | :stub-columns: 0 | 347 | :stub-columns: 0 |
| 512 | :widths: 3 1 4 | 348 | :widths: 3 1 4 |
| 513 | 349 | ||
| 514 | 350 | * .. _`V4L2-BUF-FLAG-MAPPED`: | |
| 515 | - .. _`V4L2-BUF-FLAG-MAPPED`: | 351 | |
| 516 | 352 | - ``V4L2_BUF_FLAG_MAPPED`` | |
| 517 | - ``V4L2_BUF_FLAG_MAPPED`` | 353 | - 0x00000001 |
| 518 | 354 | - The buffer resides in device memory and has been mapped into the | |
| 519 | - 0x00000001 | 355 | application's address space, see :ref:`mmap` for details. |
| 520 | 356 | Drivers set or clear this flag when the | |
| 521 | - The buffer resides in device memory and has been mapped into the | 357 | :ref:`VIDIOC_QUERYBUF`, |
| 522 | application's address space, see :ref:`mmap` for details. | 358 | :ref:`VIDIOC_QBUF` or |
| 523 | Drivers set or clear this flag when the | 359 | :ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl is called. Set by the |
| 524 | :ref:`VIDIOC_QUERYBUF`, | 360 | driver. |
| 525 | :ref:`VIDIOC_QBUF` or | 361 | * .. _`V4L2-BUF-FLAG-QUEUED`: |
| 526 | :ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl is called. Set by the | 362 | |
| 527 | driver. | 363 | - ``V4L2_BUF_FLAG_QUEUED`` |
| 528 | 364 | - 0x00000002 | |
| 529 | - .. _`V4L2-BUF-FLAG-QUEUED`: | 365 | - Internally drivers maintain two buffer queues, an incoming and |
| 530 | 366 | outgoing queue. When this flag is set, the buffer is currently on | |
| 531 | - ``V4L2_BUF_FLAG_QUEUED`` | 367 | the incoming queue. It automatically moves to the outgoing queue |
| 532 | 368 | after the buffer has been filled (capture devices) or displayed | |
| 533 | - 0x00000002 | 369 | (output devices). Drivers set or clear this flag when the |
| 534 | 370 | ``VIDIOC_QUERYBUF`` ioctl is called. After (successful) calling | |
| 535 | - Internally drivers maintain two buffer queues, an incoming and | 371 | the ``VIDIOC_QBUF``\ ioctl it is always set and after |
| 536 | outgoing queue. When this flag is set, the buffer is currently on | 372 | ``VIDIOC_DQBUF`` always cleared. |
| 537 | the incoming queue. It automatically moves to the outgoing queue | 373 | * .. _`V4L2-BUF-FLAG-DONE`: |
| 538 | after the buffer has been filled (capture devices) or displayed | 374 | |
| 539 | (output devices). Drivers set or clear this flag when the | 375 | - ``V4L2_BUF_FLAG_DONE`` |
| 540 | ``VIDIOC_QUERYBUF`` ioctl is called. After (successful) calling | 376 | - 0x00000004 |
| 541 | the ``VIDIOC_QBUF``\ ioctl it is always set and after | 377 | - When this flag is set, the buffer is currently on the outgoing |
| 542 | ``VIDIOC_DQBUF`` always cleared. | 378 | queue, ready to be dequeued from the driver. Drivers set or clear |
| 543 | 379 | this flag when the ``VIDIOC_QUERYBUF`` ioctl is called. After | |
| 544 | - .. _`V4L2-BUF-FLAG-DONE`: | 380 | calling the ``VIDIOC_QBUF`` or ``VIDIOC_DQBUF`` it is always |
| 545 | 381 | cleared. Of course a buffer cannot be on both queues at the same | |
| 546 | - ``V4L2_BUF_FLAG_DONE`` | 382 | time, the ``V4L2_BUF_FLAG_QUEUED`` and ``V4L2_BUF_FLAG_DONE`` flag |
| 547 | 383 | are mutually exclusive. They can be both cleared however, then the | |
| 548 | - 0x00000004 | 384 | buffer is in "dequeued" state, in the application domain so to |
| 549 | 385 | say. | |
| 550 | - When this flag is set, the buffer is currently on the outgoing | 386 | * .. _`V4L2-BUF-FLAG-ERROR`: |
| 551 | queue, ready to be dequeued from the driver. Drivers set or clear | 387 | |
| 552 | this flag when the ``VIDIOC_QUERYBUF`` ioctl is called. After | 388 | - ``V4L2_BUF_FLAG_ERROR`` |
| 553 | calling the ``VIDIOC_QBUF`` or ``VIDIOC_DQBUF`` it is always | 389 | - 0x00000040 |
| 554 | cleared. Of course a buffer cannot be on both queues at the same | 390 | - When this flag is set, the buffer has been dequeued successfully, |
| 555 | time, the ``V4L2_BUF_FLAG_QUEUED`` and ``V4L2_BUF_FLAG_DONE`` flag | 391 | although the data might have been corrupted. This is recoverable, |
| 556 | are mutually exclusive. They can be both cleared however, then the | 392 | streaming may continue as normal and the buffer may be reused |
| 557 | buffer is in "dequeued" state, in the application domain so to | 393 | normally. Drivers set this flag when the ``VIDIOC_DQBUF`` ioctl is |
| 558 | say. | 394 | called. |
| 559 | 395 | * .. _`V4L2-BUF-FLAG-KEYFRAME`: | |
| 560 | - .. _`V4L2-BUF-FLAG-ERROR`: | 396 | |
| 561 | 397 | - ``V4L2_BUF_FLAG_KEYFRAME`` | |
| 562 | - ``V4L2_BUF_FLAG_ERROR`` | 398 | - 0x00000008 |
| 563 | 399 | - Drivers set or clear this flag when calling the ``VIDIOC_DQBUF`` | |
| 564 | - 0x00000040 | 400 | ioctl. It may be set by video capture devices when the buffer |
| 565 | 401 | contains a compressed image which is a key frame (or field), i. e. | |
| 566 | - When this flag is set, the buffer has been dequeued successfully, | 402 | can be decompressed on its own. Also known as an I-frame. |
| 567 | although the data might have been corrupted. This is recoverable, | 403 | Applications can set this bit when ``type`` refers to an output |
| 568 | streaming may continue as normal and the buffer may be reused | 404 | stream. |
| 569 | normally. Drivers set this flag when the ``VIDIOC_DQBUF`` ioctl is | 405 | * .. _`V4L2-BUF-FLAG-PFRAME`: |
| 570 | called. | 406 | |
| 571 | 407 | - ``V4L2_BUF_FLAG_PFRAME`` | |
| 572 | - .. _`V4L2-BUF-FLAG-KEYFRAME`: | 408 | - 0x00000010 |
| 573 | 409 | - Similar to ``V4L2_BUF_FLAG_KEYFRAME`` this flags predicted frames | |
| 574 | - ``V4L2_BUF_FLAG_KEYFRAME`` | 410 | or fields which contain only differences to a previous key frame. |
| 575 | 411 | Applications can set this bit when ``type`` refers to an output | |
| 576 | - 0x00000008 | 412 | stream. |
| 577 | 413 | * .. _`V4L2-BUF-FLAG-BFRAME`: | |
| 578 | - Drivers set or clear this flag when calling the ``VIDIOC_DQBUF`` | 414 | |
| 579 | ioctl. It may be set by video capture devices when the buffer | 415 | - ``V4L2_BUF_FLAG_BFRAME`` |
| 580 | contains a compressed image which is a key frame (or field), i. e. | 416 | - 0x00000020 |
| 581 | can be decompressed on its own. Also known as an I-frame. | 417 | - Similar to ``V4L2_BUF_FLAG_KEYFRAME`` this flags a bi-directional |
| 582 | Applications can set this bit when ``type`` refers to an output | 418 | predicted frame or field which contains only the differences |
| 583 | stream. | 419 | between the current frame and both the preceding and following key |
| 584 | 420 | frames to specify its content. Applications can set this bit when | |
| 585 | - .. _`V4L2-BUF-FLAG-PFRAME`: | 421 | ``type`` refers to an output stream. |
| 586 | 422 | * .. _`V4L2-BUF-FLAG-TIMECODE`: | |
| 587 | - ``V4L2_BUF_FLAG_PFRAME`` | 423 | |
| 588 | 424 | - ``V4L2_BUF_FLAG_TIMECODE`` | |
| 589 | - 0x00000010 | 425 | - 0x00000100 |
| 590 | 426 | - The ``timecode`` field is valid. Drivers set or clear this flag | |
| 591 | - Similar to ``V4L2_BUF_FLAG_KEYFRAME`` this flags predicted frames | 427 | when the ``VIDIOC_DQBUF`` ioctl is called. Applications can set |
| 592 | or fields which contain only differences to a previous key frame. | 428 | this bit and the corresponding ``timecode`` structure when |
| 593 | Applications can set this bit when ``type`` refers to an output | 429 | ``type`` refers to an output stream. |
| 594 | stream. | 430 | * .. _`V4L2-BUF-FLAG-PREPARED`: |
| 595 | 431 | ||
| 596 | - .. _`V4L2-BUF-FLAG-BFRAME`: | 432 | - ``V4L2_BUF_FLAG_PREPARED`` |
| 597 | 433 | - 0x00000400 | |
| 598 | - ``V4L2_BUF_FLAG_BFRAME`` | 434 | - The buffer has been prepared for I/O and can be queued by the |
| 599 | 435 | application. Drivers set or clear this flag when the | |
| 600 | - 0x00000020 | 436 | :ref:`VIDIOC_QUERYBUF`, |
| 601 | 437 | :ref:`VIDIOC_PREPARE_BUF <VIDIOC_QBUF>`, | |
| 602 | - Similar to ``V4L2_BUF_FLAG_KEYFRAME`` this flags a bi-directional | 438 | :ref:`VIDIOC_QBUF` or |
| 603 | predicted frame or field which contains only the differences | 439 | :ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl is called. |
| 604 | between the current frame and both the preceding and following key | 440 | * .. _`V4L2-BUF-FLAG-NO-CACHE-INVALIDATE`: |
| 605 | frames to specify its content. Applications can set this bit when | 441 | |
| 606 | ``type`` refers to an output stream. | 442 | - ``V4L2_BUF_FLAG_NO_CACHE_INVALIDATE`` |
| 607 | 443 | - 0x00000800 | |
| 608 | - .. _`V4L2-BUF-FLAG-TIMECODE`: | 444 | - Caches do not have to be invalidated for this buffer. Typically |
| 609 | 445 | applications shall use this flag if the data captured in the | |
| 610 | - ``V4L2_BUF_FLAG_TIMECODE`` | 446 | buffer is not going to be touched by the CPU, instead the buffer |
| 611 | 447 | will, probably, be passed on to a DMA-capable hardware unit for | |
| 612 | - 0x00000100 | 448 | further processing or output. |
| 613 | 449 | * .. _`V4L2-BUF-FLAG-NO-CACHE-CLEAN`: | |
| 614 | - The ``timecode`` field is valid. Drivers set or clear this flag | 450 | |
| 615 | when the ``VIDIOC_DQBUF`` ioctl is called. Applications can set | 451 | - ``V4L2_BUF_FLAG_NO_CACHE_CLEAN`` |
| 616 | this bit and the corresponding ``timecode`` structure when | 452 | - 0x00001000 |
| 617 | ``type`` refers to an output stream. | 453 | - Caches do not have to be cleaned for this buffer. Typically |
| 618 | 454 | applications shall use this flag for output buffers if the data in | |
| 619 | - .. _`V4L2-BUF-FLAG-PREPARED`: | 455 | this buffer has not been created by the CPU but by some |
| 620 | 456 | DMA-capable unit, in which case caches have not been used. | |
| 621 | - ``V4L2_BUF_FLAG_PREPARED`` | 457 | * .. _`V4L2-BUF-FLAG-LAST`: |
| 622 | 458 | ||
| 623 | - 0x00000400 | 459 | - ``V4L2_BUF_FLAG_LAST`` |
| 624 | 460 | - 0x00100000 | |
| 625 | - The buffer has been prepared for I/O and can be queued by the | 461 | - Last buffer produced by the hardware. mem2mem codec drivers set |
| 626 | application. Drivers set or clear this flag when the | 462 | this flag on the capture queue for the last buffer when the |
| 627 | :ref:`VIDIOC_QUERYBUF`, | 463 | :ref:`VIDIOC_QUERYBUF` or |
| 628 | :ref:`VIDIOC_PREPARE_BUF <VIDIOC_QBUF>`, | 464 | :ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl is called. Due to |
| 629 | :ref:`VIDIOC_QBUF` or | 465 | hardware limitations, the last buffer may be empty. In this case |
| 630 | :ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl is called. | 466 | the driver will set the ``bytesused`` field to 0, regardless of |
| 631 | 467 | the format. Any Any subsequent call to the | |
| 632 | - .. _`V4L2-BUF-FLAG-NO-CACHE-INVALIDATE`: | 468 | :ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl will not block anymore, |
| 633 | 469 | but return an ``EPIPE`` error code. | |
| 634 | - ``V4L2_BUF_FLAG_NO_CACHE_INVALIDATE`` | 470 | * .. _`V4L2-BUF-FLAG-TIMESTAMP-MASK`: |
| 635 | 471 | ||
| 636 | - 0x00000800 | 472 | - ``V4L2_BUF_FLAG_TIMESTAMP_MASK`` |
| 637 | 473 | - 0x0000e000 | |
| 638 | - Caches do not have to be invalidated for this buffer. Typically | 474 | - Mask for timestamp types below. To test the timestamp type, mask |
| 639 | applications shall use this flag if the data captured in the | 475 | out bits not belonging to timestamp type by performing a logical |
| 640 | buffer is not going to be touched by the CPU, instead the buffer | 476 | and operation with buffer flags and timestamp mask. |
| 641 | will, probably, be passed on to a DMA-capable hardware unit for | 477 | * .. _`V4L2-BUF-FLAG-TIMESTAMP-UNKNOWN`: |
| 642 | further processing or output. | 478 | |
| 643 | 479 | - ``V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN`` | |
| 644 | - .. _`V4L2-BUF-FLAG-NO-CACHE-CLEAN`: | 480 | - 0x00000000 |
| 645 | 481 | - Unknown timestamp type. This type is used by drivers before Linux | |
| 646 | - ``V4L2_BUF_FLAG_NO_CACHE_CLEAN`` | 482 | 3.9 and may be either monotonic (see below) or realtime (wall |
| 647 | 483 | clock). Monotonic clock has been favoured in embedded systems | |
| 648 | - 0x00001000 | 484 | whereas most of the drivers use the realtime clock. Either kinds |
| 649 | 485 | of timestamps are available in user space via | |
| 650 | - Caches do not have to be cleaned for this buffer. Typically | 486 | :c:func:`clock_gettime` using clock IDs ``CLOCK_MONOTONIC`` |
| 651 | applications shall use this flag for output buffers if the data in | 487 | and ``CLOCK_REALTIME``, respectively. |
| 652 | this buffer has not been created by the CPU but by some | 488 | * .. _`V4L2-BUF-FLAG-TIMESTAMP-MONOTONIC`: |
| 653 | DMA-capable unit, in which case caches have not been used. | 489 | |
| 654 | 490 | - ``V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC`` | |
| 655 | - .. _`V4L2-BUF-FLAG-LAST`: | 491 | - 0x00002000 |
| 656 | 492 | - The buffer timestamp has been taken from the ``CLOCK_MONOTONIC`` | |
| 657 | - ``V4L2_BUF_FLAG_LAST`` | 493 | clock. To access the same clock outside V4L2, use |
| 658 | 494 | :c:func:`clock_gettime`. | |
| 659 | - 0x00100000 | 495 | * .. _`V4L2-BUF-FLAG-TIMESTAMP-COPY`: |
| 660 | 496 | ||
| 661 | - Last buffer produced by the hardware. mem2mem codec drivers set | 497 | - ``V4L2_BUF_FLAG_TIMESTAMP_COPY`` |
| 662 | this flag on the capture queue for the last buffer when the | 498 | - 0x00004000 |
| 663 | :ref:`VIDIOC_QUERYBUF` or | 499 | - The CAPTURE buffer timestamp has been taken from the corresponding |
| 664 | :ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl is called. Due to | 500 | OUTPUT buffer. This flag applies only to mem2mem devices. |
| 665 | hardware limitations, the last buffer may be empty. In this case | 501 | * .. _`V4L2-BUF-FLAG-TSTAMP-SRC-MASK`: |
| 666 | the driver will set the ``bytesused`` field to 0, regardless of | 502 | |
| 667 | the format. Any Any subsequent call to the | 503 | - ``V4L2_BUF_FLAG_TSTAMP_SRC_MASK`` |
| 668 | :ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl will not block anymore, | 504 | - 0x00070000 |
| 669 | but return an ``EPIPE`` error code. | 505 | - Mask for timestamp sources below. The timestamp source defines the |
| 670 | 506 | point of time the timestamp is taken in relation to the frame. | |
| 671 | - .. _`V4L2-BUF-FLAG-TIMESTAMP-MASK`: | 507 | Logical 'and' operation between the ``flags`` field and |
| 672 | 508 | ``V4L2_BUF_FLAG_TSTAMP_SRC_MASK`` produces the value of the | |
| 673 | - ``V4L2_BUF_FLAG_TIMESTAMP_MASK`` | 509 | timestamp source. Applications must set the timestamp source when |
| 674 | 510 | ``type`` refers to an output stream and | |
| 675 | - 0x0000e000 | 511 | ``V4L2_BUF_FLAG_TIMESTAMP_COPY`` is set. |
| 676 | 512 | * .. _`V4L2-BUF-FLAG-TSTAMP-SRC-EOF`: | |
| 677 | - Mask for timestamp types below. To test the timestamp type, mask | 513 | |
| 678 | out bits not belonging to timestamp type by performing a logical | 514 | - ``V4L2_BUF_FLAG_TSTAMP_SRC_EOF`` |
| 679 | and operation with buffer flags and timestamp mask. | 515 | - 0x00000000 |
| 680 | 516 | - End Of Frame. The buffer timestamp has been taken when the last | |
| 681 | - .. _`V4L2-BUF-FLAG-TIMESTAMP-UNKNOWN`: | 517 | pixel of the frame has been received or the last pixel of the |
| 682 | 518 | frame has been transmitted. In practice, software generated | |
| 683 | - ``V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN`` | 519 | timestamps will typically be read from the clock a small amount of |
| 684 | 520 | time after the last pixel has been received or transmitten, | |
| 685 | - 0x00000000 | 521 | depending on the system and other activity in it. |
| 686 | 522 | * .. _`V4L2-BUF-FLAG-TSTAMP-SRC-SOE`: | |
| 687 | - Unknown timestamp type. This type is used by drivers before Linux | 523 | |
| 688 | 3.9 and may be either monotonic (see below) or realtime (wall | 524 | - ``V4L2_BUF_FLAG_TSTAMP_SRC_SOE`` |
| 689 | clock). Monotonic clock has been favoured in embedded systems | 525 | - 0x00010000 |
| 690 | whereas most of the drivers use the realtime clock. Either kinds | 526 | - Start Of Exposure. The buffer timestamp has been taken when the |
| 691 | of timestamps are available in user space via | 527 | exposure of the frame has begun. This is only valid for the |
| 692 | :c:func:`clock_gettime(2)` using clock IDs ``CLOCK_MONOTONIC`` | 528 | ``V4L2_BUF_TYPE_VIDEO_CAPTURE`` buffer type. |
| 693 | and ``CLOCK_REALTIME``, respectively. | 529 | |
| 694 | 530 | ||
| 695 | - .. _`V4L2-BUF-FLAG-TIMESTAMP-MONOTONIC`: | 531 | |
| 696 | 532 | .. c:type:: v4l2_memory | |
| 697 | - ``V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC`` | ||
| 698 | |||
| 699 | - 0x00002000 | ||
| 700 | |||
| 701 | - The buffer timestamp has been taken from the ``CLOCK_MONOTONIC`` | ||
| 702 | clock. To access the same clock outside V4L2, use | ||
| 703 | :c:func:`clock_gettime(2)`. | ||
| 704 | |||
| 705 | - .. _`V4L2-BUF-FLAG-TIMESTAMP-COPY`: | ||
| 706 | |||
| 707 | - ``V4L2_BUF_FLAG_TIMESTAMP_COPY`` | ||
| 708 | |||
| 709 | - 0x00004000 | ||
| 710 | |||
| 711 | - The CAPTURE buffer timestamp has been taken from the corresponding | ||
| 712 | OUTPUT buffer. This flag applies only to mem2mem devices. | ||
| 713 | |||
| 714 | - .. _`V4L2-BUF-FLAG-TSTAMP-SRC-MASK`: | ||
| 715 | |||
| 716 | - ``V4L2_BUF_FLAG_TSTAMP_SRC_MASK`` | ||
| 717 | |||
| 718 | - 0x00070000 | ||
| 719 | |||
| 720 | - Mask for timestamp sources below. The timestamp source defines the | ||
| 721 | point of time the timestamp is taken in relation to the frame. | ||
| 722 | Logical 'and' operation between the ``flags`` field and | ||
| 723 | ``V4L2_BUF_FLAG_TSTAMP_SRC_MASK`` produces the value of the | ||
| 724 | timestamp source. Applications must set the timestamp source when | ||
| 725 | ``type`` refers to an output stream and | ||
| 726 | ``V4L2_BUF_FLAG_TIMESTAMP_COPY`` is set. | ||
| 727 | |||
| 728 | - .. _`V4L2-BUF-FLAG-TSTAMP-SRC-EOF`: | ||
| 729 | |||
| 730 | - ``V4L2_BUF_FLAG_TSTAMP_SRC_EOF`` | ||
| 731 | |||
| 732 | - 0x00000000 | ||
| 733 | |||
| 734 | - End Of Frame. The buffer timestamp has been taken when the last | ||
| 735 | pixel of the frame has been received or the last pixel of the | ||
| 736 | frame has been transmitted. In practice, software generated | ||
| 737 | timestamps will typically be read from the clock a small amount of | ||
| 738 | time after the last pixel has been received or transmitten, | ||
| 739 | depending on the system and other activity in it. | ||
| 740 | |||
| 741 | - .. _`V4L2-BUF-FLAG-TSTAMP-SRC-SOE`: | ||
| 742 | |||
| 743 | - ``V4L2_BUF_FLAG_TSTAMP_SRC_SOE`` | ||
| 744 | |||
| 745 | - 0x00010000 | ||
| 746 | |||
| 747 | - Start Of Exposure. The buffer timestamp has been taken when the | ||
| 748 | exposure of the frame has begun. This is only valid for the | ||
| 749 | ``V4L2_BUF_TYPE_VIDEO_CAPTURE`` buffer type. | ||
| 750 | |||
| 751 | |||
| 752 | |||
| 753 | .. _v4l2-memory: | ||
| 754 | 533 | ||
| 755 | enum v4l2_memory | 534 | enum v4l2_memory |
| 756 | ================ | 535 | ================ |
| 757 | 536 | ||
| 537 | .. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}| | ||
| 538 | |||
| 758 | .. flat-table:: | 539 | .. flat-table:: |
| 759 | :header-rows: 0 | 540 | :header-rows: 0 |
| 760 | :stub-columns: 0 | 541 | :stub-columns: 0 |
| 761 | :widths: 3 1 4 | 542 | :widths: 3 1 4 |
| 762 | 543 | ||
| 763 | 544 | * - ``V4L2_MEMORY_MMAP`` | |
| 764 | - .. row 1 | 545 | - 1 |
| 765 | 546 | - The buffer is used for :ref:`memory mapping <mmap>` I/O. | |
| 766 | - ``V4L2_MEMORY_MMAP`` | 547 | * - ``V4L2_MEMORY_USERPTR`` |
| 767 | 548 | - 2 | |
| 768 | - 1 | 549 | - The buffer is used for :ref:`user pointer <userp>` I/O. |
| 769 | 550 | * - ``V4L2_MEMORY_OVERLAY`` | |
| 770 | - The buffer is used for :ref:`memory mapping <mmap>` I/O. | 551 | - 3 |
| 771 | 552 | - [to do] | |
| 772 | - .. row 2 | 553 | * - ``V4L2_MEMORY_DMABUF`` |
| 773 | 554 | - 4 | |
| 774 | - ``V4L2_MEMORY_USERPTR`` | 555 | - The buffer is used for :ref:`DMA shared buffer <dmabuf>` I/O. |
| 775 | |||
| 776 | - 2 | ||
| 777 | |||
| 778 | - The buffer is used for :ref:`user pointer <userp>` I/O. | ||
| 779 | |||
| 780 | - .. row 3 | ||
| 781 | |||
| 782 | - ``V4L2_MEMORY_OVERLAY`` | ||
| 783 | |||
| 784 | - 3 | ||
| 785 | |||
| 786 | - [to do] | ||
| 787 | |||
| 788 | - .. row 4 | ||
| 789 | |||
| 790 | - ``V4L2_MEMORY_DMABUF`` | ||
| 791 | |||
| 792 | - 4 | ||
| 793 | |||
| 794 | - The buffer is used for :ref:`DMA shared buffer <dmabuf>` I/O. | ||
| 795 | 556 | ||
| 796 | 557 | ||
| 797 | 558 | ||
| 798 | Timecodes | 559 | Timecodes |
| 799 | ========= | 560 | ========= |
| 800 | 561 | ||
| 801 | The :ref:`struct v4l2_timecode <v4l2-timecode>` structure is designed to hold a | 562 | The struct :c:type:`v4l2_timecode` structure is designed to hold a |
| 802 | :ref:`smpte12m` or similar timecode. (struct | 563 | :ref:`smpte12m` or similar timecode. (struct |
| 803 | :c:type:`struct timeval` timestamps are stored in struct | 564 | struct :c:type:`timeval` timestamps are stored in struct |
| 804 | :ref:`v4l2_buffer <v4l2-buffer>` field ``timestamp``.) | 565 | :c:type:`v4l2_buffer` field ``timestamp``.) |
| 805 | 566 | ||
| 806 | 567 | ||
| 807 | .. _v4l2-timecode: | 568 | .. c:type:: v4l2_timecode |
| 808 | 569 | ||
| 809 | struct v4l2_timecode | 570 | struct v4l2_timecode |
| 810 | -------------------- | 571 | -------------------- |
| 811 | 572 | ||
| 573 | .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| | ||
| 574 | |||
| 812 | .. flat-table:: | 575 | .. flat-table:: |
| 813 | :header-rows: 0 | 576 | :header-rows: 0 |
| 814 | :stub-columns: 0 | 577 | :stub-columns: 0 |
| 815 | :widths: 1 1 2 | 578 | :widths: 1 1 2 |
| 816 | 579 | ||
| 817 | 580 | * - __u32 | |
| 818 | - .. row 1 | 581 | - ``type`` |
| 819 | 582 | - Frame rate the timecodes are based on, see :ref:`timecode-type`. | |
| 820 | - __u32 | 583 | * - __u32 |
| 821 | 584 | - ``flags`` | |
| 822 | - ``type`` | 585 | - Timecode flags, see :ref:`timecode-flags`. |
| 823 | 586 | * - __u8 | |
| 824 | - Frame rate the timecodes are based on, see :ref:`timecode-type`. | 587 | - ``frames`` |
| 825 | 588 | - Frame count, 0 ... 23/24/29/49/59, depending on the type of | |
| 826 | - .. row 2 | 589 | timecode. |
| 827 | 590 | * - __u8 | |
| 828 | - __u32 | 591 | - ``seconds`` |
| 829 | 592 | - Seconds count, 0 ... 59. This is a binary, not BCD number. | |
| 830 | - ``flags`` | 593 | * - __u8 |
| 831 | 594 | - ``minutes`` | |
| 832 | - Timecode flags, see :ref:`timecode-flags`. | 595 | - Minutes count, 0 ... 59. This is a binary, not BCD number. |
| 833 | 596 | * - __u8 | |
| 834 | - .. row 3 | 597 | - ``hours`` |
| 835 | 598 | - Hours count, 0 ... 29. This is a binary, not BCD number. | |
| 836 | - __u8 | 599 | * - __u8 |
| 837 | 600 | - ``userbits``\ [4] | |
| 838 | - ``frames`` | 601 | - The "user group" bits from the timecode. |
| 839 | |||
| 840 | - Frame count, 0 ... 23/24/29/49/59, depending on the type of | ||
| 841 | timecode. | ||
| 842 | |||
| 843 | - .. row 4 | ||
| 844 | |||
| 845 | - __u8 | ||
| 846 | |||
| 847 | - ``seconds`` | ||
| 848 | |||
| 849 | - Seconds count, 0 ... 59. This is a binary, not BCD number. | ||
| 850 | |||
| 851 | - .. row 5 | ||
| 852 | |||
| 853 | - __u8 | ||
| 854 | |||
| 855 | - ``minutes`` | ||
| 856 | |||
| 857 | - Minutes count, 0 ... 59. This is a binary, not BCD number. | ||
| 858 | |||
| 859 | - .. row 6 | ||
| 860 | |||
| 861 | - __u8 | ||
| 862 | |||
| 863 | - ``hours`` | ||
| 864 | |||
| 865 | - Hours count, 0 ... 29. This is a binary, not BCD number. | ||
| 866 | |||
| 867 | - .. row 7 | ||
| 868 | |||
| 869 | - __u8 | ||
| 870 | |||
| 871 | - ``userbits``\ [4] | ||
| 872 | |||
| 873 | - The "user group" bits from the timecode. | ||
| 874 | 602 | ||
| 875 | 603 | ||
| 876 | 604 | ||
| @@ -879,51 +607,28 @@ struct v4l2_timecode · 2 unmodified lines | |||
| 879 | Timecode Types | 607 | Timecode Types |
| 880 | -------------- | 608 | -------------- |
| 881 | 609 | ||
| 610 | .. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}| | ||
| 611 | |||
| 882 | .. flat-table:: | 612 | .. flat-table:: |
| 883 | :header-rows: 0 | 613 | :header-rows: 0 |
| 884 | :stub-columns: 0 | 614 | :stub-columns: 0 |
| 885 | :widths: 3 1 4 | 615 | :widths: 3 1 4 |
| 886 | 616 | ||
| 887 | 617 | * - ``V4L2_TC_TYPE_24FPS`` | |
| 888 | - .. row 1 | 618 | - 1 |
| 889 | 619 | - 24 frames per second, i. e. film. | |
| 890 | - ``V4L2_TC_TYPE_24FPS`` | 620 | * - ``V4L2_TC_TYPE_25FPS`` |
| 891 | 621 | - 2 | |
| 892 | - 1 | 622 | - 25 frames per second, i. e. PAL or SECAM video. |
| 893 | 623 | * - ``V4L2_TC_TYPE_30FPS`` | |
| 894 | - 24 frames per second, i. e. film. | 624 | - 3 |
| 895 | 625 | - 30 frames per second, i. e. NTSC video. | |
| 896 | - .. row 2 | 626 | * - ``V4L2_TC_TYPE_50FPS`` |
| 897 | 627 | - 4 | |
| 898 | - ``V4L2_TC_TYPE_25FPS`` | 628 | - |
| 899 | 629 | * - ``V4L2_TC_TYPE_60FPS`` | |
| 900 | - 2 | 630 | - 5 |
| 901 | 631 | - | |
| 902 | - 25 frames per second, i. e. PAL or SECAM video. | ||
| 903 | |||
| 904 | - .. row 3 | ||
| 905 | |||
| 906 | - ``V4L2_TC_TYPE_30FPS`` | ||
| 907 | |||
| 908 | - 3 | ||
| 909 | |||
| 910 | - 30 frames per second, i. e. NTSC video. | ||
| 911 | |||
| 912 | - .. row 4 | ||
| 913 | |||
| 914 | - ``V4L2_TC_TYPE_50FPS`` | ||
| 915 | |||
| 916 | - 4 | ||
| 917 | |||
| 918 | - | ||
| 919 | |||
| 920 | - .. row 5 | ||
| 921 | |||
| 922 | - ``V4L2_TC_TYPE_60FPS`` | ||
| 923 | |||
| 924 | - 5 | ||
| 925 | |||
| 926 | - | ||
| 927 | 632 | ||
| 928 | 633 | ||
| 929 | 634 | ||
| @@ -932,51 +637,28 @@ Timecode Types · 2 unmodified lines | |||
| 932 | Timecode Flags | 637 | Timecode Flags |
| 933 | -------------- | 638 | -------------- |
| 934 | 639 | ||
| 640 | .. tabularcolumns:: |p{6.6cm}|p{1.4cm}|p{9.5cm}| | ||
| 641 | |||
| 935 | .. flat-table:: | 642 | .. flat-table:: |
| 936 | :header-rows: 0 | 643 | :header-rows: 0 |
| 937 | :stub-columns: 0 | 644 | :stub-columns: 0 |
| 938 | :widths: 3 1 4 | 645 | :widths: 3 1 4 |
| 939 | 646 | ||
| 940 | 647 | * - ``V4L2_TC_FLAG_DROPFRAME`` | |
| 941 | - .. row 1 | 648 | - 0x0001 |
| 942 | 649 | - Indicates "drop frame" semantics for counting frames in 29.97 fps | |
| 943 | - ``V4L2_TC_FLAG_DROPFRAME`` | 650 | material. When set, frame numbers 0 and 1 at the start of each |
| 944 | 651 | minute, except minutes 0, 10, 20, 30, 40, 50 are omitted from the | |
| 945 | - 0x0001 | 652 | count. |
| 946 | 653 | * - ``V4L2_TC_FLAG_COLORFRAME`` | |
| 947 | - Indicates "drop frame" semantics for counting frames in 29.97 fps | 654 | - 0x0002 |
| 948 | material. When set, frame numbers 0 and 1 at the start of each | 655 | - The "color frame" flag. |
| 949 | minute, except minutes 0, 10, 20, 30, 40, 50 are omitted from the | 656 | * - ``V4L2_TC_USERBITS_field`` |
| 950 | count. | 657 | - 0x000C |
| 951 | 658 | - Field mask for the "binary group flags". | |
| 952 | - .. row 2 | 659 | * - ``V4L2_TC_USERBITS_USERDEFINED`` |
| 953 | 660 | - 0x0000 | |
| 954 | - ``V4L2_TC_FLAG_COLORFRAME`` | 661 | - Unspecified format. |
| 955 | 662 | * - ``V4L2_TC_USERBITS_8BITCHARS`` | |
| 956 | - 0x0002 | 663 | - 0x0008 |
| 957 | 664 | - 8-bit ISO characters. | |
| 958 | - The "color frame" flag. | ||
| 959 | |||
| 960 | - .. row 3 | ||
| 961 | |||
| 962 | - ``V4L2_TC_USERBITS_field`` | ||
| 963 | |||
| 964 | - 0x000C | ||
| 965 | |||
| 966 | - Field mask for the "binary group flags". | ||
| 967 | |||
| 968 | - .. row 4 | ||
| 969 | |||
| 970 | - ``V4L2_TC_USERBITS_USERDEFINED`` | ||
| 971 | |||
| 972 | - 0x0000 | ||
| 973 | |||
| 974 | - Unspecified format. | ||
| 975 | |||
| 976 | - .. row 5 | ||
| 977 | |||
| 978 | - ``V4L2_TC_USERBITS_8BITCHARS`` | ||
| 979 | |||
| 980 | - 0x0008 | ||
| 981 | |||
| 982 | - 8-bit ISO characters. | ||
| @@ -191,109 +191,48 @@ Control IDs · 190 unmodified lines | |||
| 191 | 191 | ||
| 192 | 192 | ||
| 193 | 193 | ||
| 194 | .. tabularcolumns:: |p{5.5cm}|p{12cm}| | ||
| 195 | |||
| 194 | .. flat-table:: | 196 | .. flat-table:: |
| 195 | :header-rows: 0 | 197 | :header-rows: 0 |
| 196 | :stub-columns: 0 | 198 | :stub-columns: 0 |
| 197 | 199 | :widths: 11 24 | |
| 198 | 200 | ||
| 199 | - .. row 1 | 201 | * - ``V4L2_COLORFX_NONE`` |
| 200 | 202 | - Color effect is disabled. | |
| 201 | - ``V4L2_COLORFX_NONE`` | 203 | * - ``V4L2_COLORFX_ANTIQUE`` |
| 202 | 204 | - An aging (old photo) effect. | |
| 203 | - Color effect is disabled. | 205 | * - ``V4L2_COLORFX_ART_FREEZE`` |
| 204 | 206 | - Frost color effect. | |
| 205 | - .. row 2 | 207 | * - ``V4L2_COLORFX_AQUA`` |
| 206 | 208 | - Water color, cool tone. | |
| 207 | - ``V4L2_COLORFX_ANTIQUE`` | 209 | * - ``V4L2_COLORFX_BW`` |
| 208 | 210 | - Black and white. | |
| 209 | - An aging (old photo) effect. | 211 | * - ``V4L2_COLORFX_EMBOSS`` |
| 210 | 212 | - Emboss, the highlights and shadows replace light/dark boundaries | |
| 211 | - .. row 3 | 213 | and low contrast areas are set to a gray background. |
| 212 | 214 | * - ``V4L2_COLORFX_GRASS_GREEN`` | |
| 213 | - ``V4L2_COLORFX_ART_FREEZE`` | 215 | - Grass green. |
| 214 | 216 | * - ``V4L2_COLORFX_NEGATIVE`` | |
| 215 | - Frost color effect. | 217 | - Negative. |
| 216 | 218 | * - ``V4L2_COLORFX_SEPIA`` | |
| 217 | - .. row 4 | 219 | - Sepia tone. |
| 218 | 220 | * - ``V4L2_COLORFX_SKETCH`` | |
| 219 | - ``V4L2_COLORFX_AQUA`` | 221 | - Sketch. |
| 220 | 222 | * - ``V4L2_COLORFX_SKIN_WHITEN`` | |
| 221 | - Water color, cool tone. | 223 | - Skin whiten. |
| 222 | 224 | * - ``V4L2_COLORFX_SKY_BLUE`` | |
| 223 | - .. row 5 | 225 | - Sky blue. |
| 224 | 226 | * - ``V4L2_COLORFX_SOLARIZATION`` | |
| 225 | - ``V4L2_COLORFX_BW`` | 227 | - Solarization, the image is partially reversed in tone, only color |
| 226 | 228 | values above or below a certain threshold are inverted. | |
| 227 | - Black and white. | 229 | * - ``V4L2_COLORFX_SILHOUETTE`` |
| 228 | 230 | - Silhouette (outline). | |
| 229 | - .. row 6 | 231 | * - ``V4L2_COLORFX_VIVID`` |
| 230 | 232 | - Vivid colors. | |
| 231 | - ``V4L2_COLORFX_EMBOSS`` | 233 | * - ``V4L2_COLORFX_SET_CBCR`` |
| 232 | 234 | - The Cb and Cr chroma components are replaced by fixed coefficients | |
| 233 | - Emboss, the highlights and shadows replace light/dark boundaries | 235 | determined by ``V4L2_CID_COLORFX_CBCR`` control. |
| 234 | and low contrast areas are set to a gray background. | ||
| 235 | |||
| 236 | - .. row 7 | ||
| 237 | |||
| 238 | - ``V4L2_COLORFX_GRASS_GREEN`` | ||
| 239 | |||
| 240 | - Grass green. | ||
| 241 | |||
| 242 | - .. row 8 | ||
| 243 | |||
| 244 | - ``V4L2_COLORFX_NEGATIVE`` | ||
| 245 | |||
| 246 | - Negative. | ||
| 247 | |||
| 248 | - .. row 9 | ||
| 249 | |||
| 250 | - ``V4L2_COLORFX_SEPIA`` | ||
| 251 | |||
| 252 | - Sepia tone. | ||
| 253 | |||
| 254 | - .. row 10 | ||
| 255 | |||
| 256 | - ``V4L2_COLORFX_SKETCH`` | ||
| 257 | |||
| 258 | - Sketch. | ||
| 259 | |||
| 260 | - .. row 11 | ||
| 261 | |||
| 262 | - ``V4L2_COLORFX_SKIN_WHITEN`` | ||
| 263 | |||
| 264 | - Skin whiten. | ||
| 265 | |||
| 266 | - .. row 12 | ||
| 267 | |||
| 268 | - ``V4L2_COLORFX_SKY_BLUE`` | ||
| 269 | |||
| 270 | - Sky blue. | ||
| 271 | |||
| 272 | - .. row 13 | ||
| 273 | |||
| 274 | - ``V4L2_COLORFX_SOLARIZATION`` | ||
| 275 | |||
| 276 | - Solarization, the image is partially reversed in tone, only color | ||
| 277 | values above or below a certain threshold are inverted. | ||
| 278 | |||
| 279 | - .. row 14 | ||
| 280 | |||
| 281 | - ``V4L2_COLORFX_SILHOUETTE`` | ||
| 282 | |||
| 283 | - Silhouette (outline). | ||
| 284 | |||
| 285 | - .. row 15 | ||
| 286 | |||
| 287 | - ``V4L2_COLORFX_VIVID`` | ||
| 288 | |||
| 289 | - Vivid colors. | ||
| 290 | |||
| 291 | - .. row 16 | ||
| 292 | |||
| 293 | - ``V4L2_COLORFX_SET_CBCR`` | ||
| 294 | |||
| 295 | - The Cb and Cr chroma components are replaced by fixed coefficients | ||
| 296 | determined by ``V4L2_CID_COLORFX_CBCR`` control. | ||
| 297 | 236 | ||
| 298 | 237 | ||
| 299 | 238 | ||
| @@ -15,7 +15,9 @@ offset into a video signal. · 14 unmodified lines | |||
| 15 | Applications can use the following API to select an area in the video | 15 | Applications can use the following API to select an area in the video |
| 16 | signal, query the default area and the hardware limits. | 16 | signal, query the default area and the hardware limits. |
| 17 | 17 | ||
| 18 | .. note:: Despite their name, the :ref:`VIDIOC_CROPCAP <VIDIOC_CROPCAP>`, | 18 | .. note:: |
| 19 | |||
| 20 | Despite their name, the :ref:`VIDIOC_CROPCAP <VIDIOC_CROPCAP>`, | ||
| 19 | :ref:`VIDIOC_G_CROP <VIDIOC_G_CROP>` and :ref:`VIDIOC_S_CROP | 21 | :ref:`VIDIOC_G_CROP <VIDIOC_G_CROP>` and :ref:`VIDIOC_S_CROP |
| 20 | <VIDIOC_G_CROP>` ioctls apply to input as well as output devices. | 22 | <VIDIOC_G_CROP>` ioctls apply to input as well as output devices. |
| 21 | 23 | ||
| @@ -38,7 +40,9 @@ support scaling or the :ref:`VIDIOC_G_CROP <VIDIOC_G_CROP>` and · 16 unmodified lines | |||
| 38 | :ref:`VIDIOC_S_CROP <VIDIOC_G_CROP>` ioctls. Their size (and position | 40 | :ref:`VIDIOC_S_CROP <VIDIOC_G_CROP>` ioctls. Their size (and position |
| 39 | where applicable) will be fixed in this case. | 41 | where applicable) will be fixed in this case. |
| 40 | 42 | ||
| 41 | .. note:: All capture and output devices must support the | 43 | .. note:: |
| 44 | |||
| 45 | All capture and output devices must support the | ||
| 42 | :ref:`VIDIOC_CROPCAP <VIDIOC_CROPCAP>` ioctl such that applications | 46 | :ref:`VIDIOC_CROPCAP <VIDIOC_CROPCAP>` ioctl such that applications |
| 43 | can determine if scaling takes place. | 47 | can determine if scaling takes place. |
| 44 | 48 | ||
| @@ -61,7 +65,7 @@ Cropping Structures · 16 unmodified lines | |||
| 61 | 65 | ||
| 62 | For capture devices the coordinates of the top left corner, width and | 66 | For capture devices the coordinates of the top left corner, width and |
| 63 | height of the area which can be sampled is given by the ``bounds`` | 67 | height of the area which can be sampled is given by the ``bounds`` |
| 64 | substructure of the struct :ref:`v4l2_cropcap <v4l2-cropcap>` returned | 68 | substructure of the struct :c:type:`v4l2_cropcap` returned |
| 65 | by the :ref:`VIDIOC_CROPCAP <VIDIOC_CROPCAP>` ioctl. To support a wide | 69 | by the :ref:`VIDIOC_CROPCAP <VIDIOC_CROPCAP>` ioctl. To support a wide |
| 66 | range of hardware this specification does not define an origin or units. | 70 | range of hardware this specification does not define an origin or units. |
| 67 | However by convention drivers should horizontally count unscaled samples | 71 | However by convention drivers should horizontally count unscaled samples |
| @@ -73,8 +77,8 @@ can capture both fields. · 5 unmodified lines | |||
| 73 | 77 | ||
| 74 | The top left corner, width and height of the source rectangle, that is | 78 | The top left corner, width and height of the source rectangle, that is |
| 75 | the area actually sampled, is given by struct | 79 | the area actually sampled, is given by struct |
| 76 | :ref:`v4l2_crop <v4l2-crop>` using the same coordinate system as | 80 | :c:type:`v4l2_crop` using the same coordinate system as |
| 77 | struct :ref:`v4l2_cropcap <v4l2-cropcap>`. Applications can use the | 81 | struct :c:type:`v4l2_cropcap`. Applications can use the |
| 78 | :ref:`VIDIOC_G_CROP <VIDIOC_G_CROP>` and :ref:`VIDIOC_S_CROP <VIDIOC_G_CROP>` | 82 | :ref:`VIDIOC_G_CROP <VIDIOC_G_CROP>` and :ref:`VIDIOC_S_CROP <VIDIOC_G_CROP>` |
| 79 | ioctls to get and set this rectangle. It must lie completely within the | 83 | ioctls to get and set this rectangle. It must lie completely within the |
| 80 | capture boundaries and the driver may further adjust the requested size | 84 | capture boundaries and the driver may further adjust the requested size |
| @@ -82,7 +86,7 @@ and/or position according to hardware limitations. · 1 unmodified line | |||
| 82 | 86 | ||
| 83 | Each capture device has a default source rectangle, given by the | 87 | Each capture device has a default source rectangle, given by the |
| 84 | ``defrect`` substructure of struct | 88 | ``defrect`` substructure of struct |
| 85 | :ref:`v4l2_cropcap <v4l2-cropcap>`. The center of this rectangle | 89 | :c:type:`v4l2_cropcap`. The center of this rectangle |
| 86 | shall align with the center of the active picture area of the video | 90 | shall align with the center of the active picture area of the video |
| 87 | signal, and cover what the driver writer considers the complete picture. | 91 | signal, and cover what the driver writer considers the complete picture. |
| 88 | Drivers shall reset the source rectangle to the default when the driver | 92 | Drivers shall reset the source rectangle to the default when the driver |
| @@ -100,11 +104,11 @@ Video hardware can have various cropping, insertion and scaling · 11 unmodified lines | |||
| 100 | limitations. It may only scale up or down, support only discrete scaling | 104 | limitations. It may only scale up or down, support only discrete scaling |
| 101 | factors, or have different scaling abilities in horizontal and vertical | 105 | factors, or have different scaling abilities in horizontal and vertical |
| 102 | direction. Also it may not support scaling at all. At the same time the | 106 | direction. Also it may not support scaling at all. At the same time the |
| 103 | struct :ref:`v4l2_crop <v4l2-crop>` rectangle may have to be aligned, | 107 | struct :c:type:`v4l2_crop` rectangle may have to be aligned, |
| 104 | and both the source and target rectangles may have arbitrary upper and | 108 | and both the source and target rectangles may have arbitrary upper and |
| 105 | lower size limits. In particular the maximum ``width`` and ``height`` in | 109 | lower size limits. In particular the maximum ``width`` and ``height`` in |
| 106 | struct :ref:`v4l2_crop <v4l2-crop>` may be smaller than the struct | 110 | struct :c:type:`v4l2_crop` may be smaller than the struct |
| 107 | :ref:`v4l2_cropcap <v4l2-cropcap>`. ``bounds`` area. Therefore, as | 111 | :c:type:`v4l2_cropcap`. ``bounds`` area. Therefore, as |
| 108 | usual, drivers are expected to adjust the requested parameters and | 112 | usual, drivers are expected to adjust the requested parameters and |
| 109 | return the actual values selected. | 113 | return the actual values selected. |
| 110 | 114 | ||
| @@ -144,7 +148,9 @@ reopening a device, such that piping data into or out of a device will · 33 unmodified lines | |||
| 144 | work without special preparations. More advanced applications should | 148 | work without special preparations. More advanced applications should |
| 145 | ensure the parameters are suitable before starting I/O. | 149 | ensure the parameters are suitable before starting I/O. |
| 146 | 150 | ||
| 147 | .. note:: On the next two examples, a video capture device is assumed; | 151 | .. note:: |
| 152 | |||
| 153 | On the next two examples, a video capture device is assumed; | ||
| 148 | change ``V4L2_BUF_TYPE_VIDEO_CAPTURE`` for other types of device. | 154 | change ``V4L2_BUF_TYPE_VIDEO_CAPTURE`` for other types of device. |
| 149 | 155 | ||
| 150 | Example: Resetting the cropping parameters | 156 | Example: Resetting the cropping parameters |
| @@ -26,7 +26,7 @@ Querying Capabilities · 25 unmodified lines | |||
| 26 | Devices supporting the video capture interface set the | 26 | Devices supporting the video capture interface set the |
| 27 | ``V4L2_CAP_VIDEO_CAPTURE`` or ``V4L2_CAP_VIDEO_CAPTURE_MPLANE`` flag in | 27 | ``V4L2_CAP_VIDEO_CAPTURE`` or ``V4L2_CAP_VIDEO_CAPTURE_MPLANE`` flag in |
| 28 | the ``capabilities`` field of struct | 28 | the ``capabilities`` field of struct |
| 29 | :ref:`v4l2_capability <v4l2-capability>` returned by the | 29 | :c:type:`v4l2_capability` returned by the |
| 30 | :ref:`VIDIOC_QUERYCAP` ioctl. As secondary device | 30 | :ref:`VIDIOC_QUERYCAP` ioctl. As secondary device |
| 31 | functions they may also support the :ref:`video overlay <overlay>` | 31 | functions they may also support the :ref:`video overlay <overlay>` |
| 32 | (``V4L2_CAP_VIDEO_OVERLAY``) and the :ref:`raw VBI capture <raw-vbi>` | 32 | (``V4L2_CAP_VIDEO_OVERLAY``) and the :ref:`raw VBI capture <raw-vbi>` |
| @@ -64,18 +64,18 @@ Cropping initialization at minimum requires to reset the parameters to · 31 unmodified lines | |||
| 64 | defaults. An example is given in :ref:`crop`. | 64 | defaults. An example is given in :ref:`crop`. |
| 65 | 65 | ||
| 66 | To query the current image format applications set the ``type`` field of | 66 | To query the current image format applications set the ``type`` field of |
| 67 | a struct :ref:`v4l2_format <v4l2-format>` to | 67 | a struct :c:type:`v4l2_format` to |
| 68 | ``V4L2_BUF_TYPE_VIDEO_CAPTURE`` or | 68 | ``V4L2_BUF_TYPE_VIDEO_CAPTURE`` or |
| 69 | ``V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE`` and call the | 69 | ``V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE`` and call the |
| 70 | :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` ioctl with a pointer to this | 70 | :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` ioctl with a pointer to this |
| 71 | structure. Drivers fill the struct | 71 | structure. Drivers fill the struct |
| 72 | :ref:`v4l2_pix_format <v4l2-pix-format>` ``pix`` or the struct | 72 | :c:type:`v4l2_pix_format` ``pix`` or the struct |
| 73 | :ref:`v4l2_pix_format_mplane <v4l2-pix-format-mplane>` ``pix_mp`` | 73 | :c:type:`v4l2_pix_format_mplane` ``pix_mp`` |
| 74 | member of the ``fmt`` union. | 74 | member of the ``fmt`` union. |
| 75 | 75 | ||
| 76 | To request different parameters applications set the ``type`` field of a | 76 | To request different parameters applications set the ``type`` field of a |
| 77 | struct :ref:`v4l2_format <v4l2-format>` as above and initialize all | 77 | struct :c:type:`v4l2_format` as above and initialize all |
| 78 | fields of the struct :ref:`v4l2_pix_format <v4l2-pix-format>` | 78 | fields of the struct :c:type:`v4l2_pix_format` |
| 79 | ``vbi`` member of the ``fmt`` union, or better just modify the results | 79 | ``vbi`` member of the ``fmt`` union, or better just modify the results |
| 80 | of :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>`, and call the :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` | 80 | of :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>`, and call the :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` |
| 81 | ioctl with a pointer to this structure. Drivers may adjust the | 81 | ioctl with a pointer to this structure. Drivers may adjust the |
| @@ -86,8 +86,8 @@ Like :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` the :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` · 4 unmodified lines | |||
| 86 | can be used to learn about hardware limitations without disabling I/O or | 86 | can be used to learn about hardware limitations without disabling I/O or |
| 87 | possibly time consuming hardware preparations. | 87 | possibly time consuming hardware preparations. |
| 88 | 88 | ||
| 89 | The contents of struct :ref:`v4l2_pix_format <v4l2-pix-format>` and | 89 | The contents of struct :c:type:`v4l2_pix_format` and |
| 90 | struct :ref:`v4l2_pix_format_mplane <v4l2-pix-format-mplane>` are | 90 | struct :c:type:`v4l2_pix_format_mplane` are |
| 91 | discussed in :ref:`pixfmt`. See also the specification of the | 91 | discussed in :ref:`pixfmt`. See also the specification of the |
| 92 | :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>`, :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` and :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` ioctls for | 92 | :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>`, :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` and :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` ioctls for |
| 93 | details. Video capture devices must implement both the :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` | 93 | details. Video capture devices must implement both the :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` |
| @@ -21,7 +21,9 @@ for both capture and output to start the codec. · 20 unmodified lines | |||
| 21 | Video compression codecs use the MPEG controls to setup their codec | 21 | Video compression codecs use the MPEG controls to setup their codec |
| 22 | parameters | 22 | parameters |
| 23 | 23 | ||
| 24 | .. note:: The MPEG controls actually support many more codecs than | 24 | .. note:: |
| 25 | |||
| 26 | The MPEG controls actually support many more codecs than | ||
| 25 | just MPEG. See :ref:`mpeg-controls`. | 27 | just MPEG. See :ref:`mpeg-controls`. |
| 26 | 28 | ||
| 27 | Memory-to-memory devices can often be used as a shared resource: you can | 29 | Memory-to-memory devices can often be used as a shared resource: you can |
| @@ -16,7 +16,9 @@ this interface, which borrows structures and ioctls of the · 15 unmodified lines | |||
| 16 | The OSD function is accessible through the same character special file | 16 | The OSD function is accessible through the same character special file |
| 17 | as the :ref:`Video Output <capture>` function. | 17 | as the :ref:`Video Output <capture>` function. |
| 18 | 18 | ||
| 19 | .. note:: The default function of such a ``/dev/video`` device is video | 19 | .. note:: |
| 20 | |||
| 21 | The default function of such a ``/dev/video`` device is video | ||
| 20 | capturing or output. The OSD function is only available after calling | 22 | capturing or output. The OSD function is only available after calling |
| 21 | the :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl. | 23 | the :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl. |
| 22 | 24 | ||
| @@ -26,7 +28,7 @@ Querying Capabilities · 3 unmodified lines | |||
| 26 | 28 | ||
| 27 | Devices supporting the *Video Output Overlay* interface set the | 29 | Devices supporting the *Video Output Overlay* interface set the |
| 28 | ``V4L2_CAP_VIDEO_OUTPUT_OVERLAY`` flag in the ``capabilities`` field of | 30 | ``V4L2_CAP_VIDEO_OUTPUT_OVERLAY`` flag in the ``capabilities`` field of |
| 29 | struct :ref:`v4l2_capability <v4l2-capability>` returned by the | 31 | struct :c:type:`v4l2_capability` returned by the |
| 30 | :ref:`VIDIOC_QUERYCAP` ioctl. | 32 | :ref:`VIDIOC_QUERYCAP` ioctl. |
| 31 | 33 | ||
| 32 | 34 | ||
| @@ -39,11 +41,11 @@ accessible as a framebuffer device (``/dev/fbN``). Given a V4L2 device, · 6 unmodified lines | |||
| 39 | applications can find the corresponding framebuffer device by calling | 41 | applications can find the corresponding framebuffer device by calling |
| 40 | the :ref:`VIDIOC_G_FBUF <VIDIOC_G_FBUF>` ioctl. It returns, amongst | 42 | the :ref:`VIDIOC_G_FBUF <VIDIOC_G_FBUF>` ioctl. It returns, amongst |
| 41 | other information, the physical address of the framebuffer in the | 43 | other information, the physical address of the framebuffer in the |
| 42 | ``base`` field of struct :ref:`v4l2_framebuffer <v4l2-framebuffer>`. | 44 | ``base`` field of struct :c:type:`v4l2_framebuffer`. |
| 43 | The framebuffer device ioctl ``FBIOGET_FSCREENINFO`` returns the same | 45 | The framebuffer device ioctl ``FBIOGET_FSCREENINFO`` returns the same |
| 44 | address in the ``smem_start`` field of struct | 46 | address in the ``smem_start`` field of struct |
| 45 | :c:type:`struct fb_fix_screeninfo`. The ``FBIOGET_FSCREENINFO`` | 47 | struct :c:type:`fb_fix_screeninfo`. The ``FBIOGET_FSCREENINFO`` |
| 46 | ioctl and struct :c:type:`struct fb_fix_screeninfo` are defined in | 48 | ioctl and struct :c:type:`fb_fix_screeninfo` are defined in |
| 47 | the ``linux/fb.h`` header file. | 49 | the ``linux/fb.h`` header file. |
| 48 | 50 | ||
| 49 | The width and height of the framebuffer depends on the current video | 51 | The width and height of the framebuffer depends on the current video |
| @@ -112,18 +114,18 @@ sizes and positions of these rectangles. Further drivers may support any · 62 unmodified lines | |||
| 112 | (or none) of the clipping/blending methods defined for the | 114 | (or none) of the clipping/blending methods defined for the |
| 113 | :ref:`Video Overlay <overlay>` interface. | 115 | :ref:`Video Overlay <overlay>` interface. |
| 114 | 116 | ||
| 115 | A struct :ref:`v4l2_window <v4l2-window>` defines the size of the | 117 | A struct :c:type:`v4l2_window` defines the size of the |
| 116 | source rectangle, its position in the framebuffer and the | 118 | source rectangle, its position in the framebuffer and the |
| 117 | clipping/blending method to be used for the overlay. To get the current | 119 | clipping/blending method to be used for the overlay. To get the current |
| 118 | parameters applications set the ``type`` field of a struct | 120 | parameters applications set the ``type`` field of a struct |
| 119 | :ref:`v4l2_format <v4l2-format>` to | 121 | :c:type:`v4l2_format` to |
| 120 | ``V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY`` and call the | 122 | ``V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY`` and call the |
| 121 | :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` ioctl. The driver fills the | 123 | :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` ioctl. The driver fills the |
| 122 | :ref:`struct v4l2_window <v4l2-window>` substructure named ``win``. It is not | 124 | struct :c:type:`v4l2_window` substructure named ``win``. It is not |
| 123 | possible to retrieve a previously programmed clipping list or bitmap. | 125 | possible to retrieve a previously programmed clipping list or bitmap. |
| 124 | 126 | ||
| 125 | To program the source rectangle applications set the ``type`` field of a | 127 | To program the source rectangle applications set the ``type`` field of a |
| 126 | struct :ref:`v4l2_format <v4l2-format>` to | 128 | struct :c:type:`v4l2_format` to |
| 127 | ``V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY``, initialize the ``win`` | 129 | ``V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY``, initialize the ``win`` |
| 128 | substructure and call the :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl. | 130 | substructure and call the :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl. |
| 129 | The driver adjusts the parameters against hardware limits and returns | 131 | The driver adjusts the parameters against hardware limits and returns |
| @@ -132,10 +134,10 @@ the :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` ioctl can be used to learn · 2 unmodified lines | |||
| 132 | about driver capabilities without actually changing driver state. Unlike | 134 | about driver capabilities without actually changing driver state. Unlike |
| 133 | :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` this also works after the overlay has been enabled. | 135 | :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` this also works after the overlay has been enabled. |
| 134 | 136 | ||
| 135 | A struct :ref:`v4l2_crop <v4l2-crop>` defines the size and position | 137 | A struct :c:type:`v4l2_crop` defines the size and position |
| 136 | of the target rectangle. The scaling factor of the overlay is implied by | 138 | of the target rectangle. The scaling factor of the overlay is implied by |
| 137 | the width and height given in struct :ref:`v4l2_window <v4l2-window>` | 139 | the width and height given in struct :c:type:`v4l2_window` |
| 138 | and struct :ref:`v4l2_crop <v4l2-crop>`. The cropping API applies to | 140 | and struct :c:type:`v4l2_crop`. The cropping API applies to |
| 139 | *Video Output* and *Video Output Overlay* devices in the same way as to | 141 | *Video Output* and *Video Output Overlay* devices in the same way as to |
| 140 | *Video Capture* and *Video Overlay* devices, merely reversing the | 142 | *Video Capture* and *Video Overlay* devices, merely reversing the |
| 141 | direction of the data flow. For more information see :ref:`crop`. | 143 | direction of the data flow. For more information see :ref:`crop`. |
| @@ -16,7 +16,7 @@ device special files named ``/dev/video`` and ``/dev/video0`` to · 15 unmodified lines | |||
| 16 | ``/dev/video`` is typically a symbolic link to the preferred video | 16 | ``/dev/video`` is typically a symbolic link to the preferred video |
| 17 | device. | 17 | device. |
| 18 | 18 | ||
| 19 | ..note:: The same device file names are used also for video capture devices. | 19 | .. note:: The same device file names are used also for video capture devices. |
| 20 | 20 | ||
| 21 | 21 | ||
| 22 | Querying Capabilities | 22 | Querying Capabilities |
| @@ -25,7 +25,7 @@ Querying Capabilities · 2 unmodified lines | |||
| 25 | Devices supporting the video output interface set the | 25 | Devices supporting the video output interface set the |
| 26 | ``V4L2_CAP_VIDEO_OUTPUT`` or ``V4L2_CAP_VIDEO_OUTPUT_MPLANE`` flag in | 26 | ``V4L2_CAP_VIDEO_OUTPUT`` or ``V4L2_CAP_VIDEO_OUTPUT_MPLANE`` flag in |
| 27 | the ``capabilities`` field of struct | 27 | the ``capabilities`` field of struct |
| 28 | :ref:`v4l2_capability <v4l2-capability>` returned by the | 28 | :c:type:`v4l2_capability` returned by the |
| 29 | :ref:`VIDIOC_QUERYCAP` ioctl. As secondary device | 29 | :ref:`VIDIOC_QUERYCAP` ioctl. As secondary device |
| 30 | functions they may also support the :ref:`raw VBI output <raw-vbi>` | 30 | functions they may also support the :ref:`raw VBI output <raw-vbi>` |
| 31 | (``V4L2_CAP_VBI_OUTPUT``) interface. At least one of the read/write or | 31 | (``V4L2_CAP_VBI_OUTPUT``) interface. At least one of the read/write or |
| @@ -62,17 +62,17 @@ Cropping initialization at minimum requires to reset the parameters to · 30 unmodified lines | |||
| 62 | defaults. An example is given in :ref:`crop`. | 62 | defaults. An example is given in :ref:`crop`. |
| 63 | 63 | ||
| 64 | To query the current image format applications set the ``type`` field of | 64 | To query the current image format applications set the ``type`` field of |
| 65 | a struct :ref:`v4l2_format <v4l2-format>` to | 65 | a struct :c:type:`v4l2_format` to |
| 66 | ``V4L2_BUF_TYPE_VIDEO_OUTPUT`` or ``V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE`` | 66 | ``V4L2_BUF_TYPE_VIDEO_OUTPUT`` or ``V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE`` |
| 67 | and call the :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` ioctl with a pointer | 67 | and call the :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` ioctl with a pointer |
| 68 | to this structure. Drivers fill the struct | 68 | to this structure. Drivers fill the struct |
| 69 | :ref:`v4l2_pix_format <v4l2-pix-format>` ``pix`` or the struct | 69 | :c:type:`v4l2_pix_format` ``pix`` or the struct |
| 70 | :ref:`v4l2_pix_format_mplane <v4l2-pix-format-mplane>` ``pix_mp`` | 70 | :c:type:`v4l2_pix_format_mplane` ``pix_mp`` |
| 71 | member of the ``fmt`` union. | 71 | member of the ``fmt`` union. |
| 72 | 72 | ||
| 73 | To request different parameters applications set the ``type`` field of a | 73 | To request different parameters applications set the ``type`` field of a |
| 74 | struct :ref:`v4l2_format <v4l2-format>` as above and initialize all | 74 | struct :c:type:`v4l2_format` as above and initialize all |
| 75 | fields of the struct :ref:`v4l2_pix_format <v4l2-pix-format>` | 75 | fields of the struct :c:type:`v4l2_pix_format` |
| 76 | ``vbi`` member of the ``fmt`` union, or better just modify the results | 76 | ``vbi`` member of the ``fmt`` union, or better just modify the results |
| 77 | of :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>`, and call the :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` | 77 | of :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>`, and call the :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` |
| 78 | ioctl with a pointer to this structure. Drivers may adjust the | 78 | ioctl with a pointer to this structure. Drivers may adjust the |
| @@ -83,8 +83,8 @@ Like :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` the :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` · 4 unmodified lines | |||
| 83 | can be used to learn about hardware limitations without disabling I/O or | 83 | can be used to learn about hardware limitations without disabling I/O or |
| 84 | possibly time consuming hardware preparations. | 84 | possibly time consuming hardware preparations. |
| 85 | 85 | ||
| 86 | The contents of struct :ref:`v4l2_pix_format <v4l2-pix-format>` and | 86 | The contents of struct :c:type:`v4l2_pix_format` and |
| 87 | struct :ref:`v4l2_pix_format_mplane <v4l2-pix-format-mplane>` are | 87 | struct :c:type:`v4l2_pix_format_mplane` are |
| 88 | discussed in :ref:`pixfmt`. See also the specification of the | 88 | discussed in :ref:`pixfmt`. See also the specification of the |
| 89 | :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>`, :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` and :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` ioctls for | 89 | :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>`, :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` and :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` ioctls for |
| 90 | details. Video output devices must implement both the :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` | 90 | details. Video output devices must implement both the :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` |
| @@ -19,7 +19,9 @@ video into a window. · 18 unmodified lines | |||
| 19 | Video overlay devices are accessed through the same character special | 19 | Video overlay devices are accessed through the same character special |
| 20 | files as :ref:`video capture <capture>` devices. | 20 | files as :ref:`video capture <capture>` devices. |
| 21 | 21 | ||
| 22 | .. note:: The default function of a ``/dev/video`` device is video | 22 | .. note:: |
| 23 | |||
| 24 | The default function of a ``/dev/video`` device is video | ||
| 23 | capturing. The overlay function is only available after calling | 25 | capturing. The overlay function is only available after calling |
| 24 | the :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl. | 26 | the :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl. |
| 25 | 27 | ||
| @@ -41,7 +43,7 @@ Querying Capabilities · 15 unmodified lines | |||
| 41 | 43 | ||
| 42 | Devices supporting the video overlay interface set the | 44 | Devices supporting the video overlay interface set the |
| 43 | ``V4L2_CAP_VIDEO_OVERLAY`` flag in the ``capabilities`` field of struct | 45 | ``V4L2_CAP_VIDEO_OVERLAY`` flag in the ``capabilities`` field of struct |
| 44 | :ref:`v4l2_capability <v4l2-capability>` returned by the | 46 | :c:type:`v4l2_capability` returned by the |
| 45 | :ref:`VIDIOC_QUERYCAP` ioctl. The overlay I/O | 47 | :ref:`VIDIOC_QUERYCAP` ioctl. The overlay I/O |
| 46 | method specified below must be supported. Tuners and audio inputs are | 48 | method specified below must be supported. Tuners and audio inputs are |
| 47 | optional. | 49 | optional. |
| @@ -117,17 +119,17 @@ at minimum requires to reset the parameters to defaults. An example is · 69 unmodified lines | |||
| 117 | given in :ref:`crop`. | 119 | given in :ref:`crop`. |
| 118 | 120 | ||
| 119 | The overlay window is described by a struct | 121 | The overlay window is described by a struct |
| 120 | :ref:`v4l2_window <v4l2-window>`. It defines the size of the image, | 122 | :c:type:`v4l2_window`. It defines the size of the image, |
| 121 | its position over the graphics surface and the clipping to be applied. | 123 | its position over the graphics surface and the clipping to be applied. |
| 122 | To get the current parameters applications set the ``type`` field of a | 124 | To get the current parameters applications set the ``type`` field of a |
| 123 | struct :ref:`v4l2_format <v4l2-format>` to | 125 | struct :c:type:`v4l2_format` to |
| 124 | ``V4L2_BUF_TYPE_VIDEO_OVERLAY`` and call the | 126 | ``V4L2_BUF_TYPE_VIDEO_OVERLAY`` and call the |
| 125 | :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` ioctl. The driver fills the | 127 | :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` ioctl. The driver fills the |
| 126 | :ref:`struct v4l2_window <v4l2-window>` substructure named ``win``. It is not | 128 | struct :c:type:`v4l2_window` substructure named ``win``. It is not |
| 127 | possible to retrieve a previously programmed clipping list or bitmap. | 129 | possible to retrieve a previously programmed clipping list or bitmap. |
| 128 | 130 | ||
| 129 | To program the overlay window applications set the ``type`` field of a | 131 | To program the overlay window applications set the ``type`` field of a |
| 130 | struct :ref:`v4l2_format <v4l2-format>` to | 132 | struct :c:type:`v4l2_format` to |
| 131 | ``V4L2_BUF_TYPE_VIDEO_OVERLAY``, initialize the ``win`` substructure and | 133 | ``V4L2_BUF_TYPE_VIDEO_OVERLAY``, initialize the ``win`` substructure and |
| 132 | call the :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl. The driver | 134 | call the :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl. The driver |
| 133 | adjusts the parameters against hardware limits and returns the actual | 135 | adjusts the parameters against hardware limits and returns the actual |
| @@ -137,7 +139,7 @@ about driver capabilities without actually changing driver state. Unlike · 3 unmodified lines | |||
| 137 | :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` this also works after the overlay has been enabled. | 139 | :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` this also works after the overlay has been enabled. |
| 138 | 140 | ||
| 139 | The scaling factor of the overlaid image is implied by the width and | 141 | The scaling factor of the overlaid image is implied by the width and |
| 140 | height given in struct :ref:`v4l2_window <v4l2-window>` and the size | 142 | height given in struct :c:type:`v4l2_window` and the size |
| 141 | of the cropping rectangle. For more information see :ref:`crop`. | 143 | of the cropping rectangle. For more information see :ref:`crop`. |
| 142 | 144 | ||
| 143 | When simultaneous capturing and overlay is supported and the hardware | 145 | When simultaneous capturing and overlay is supported and the hardware |
| @@ -147,7 +149,7 @@ takes precedence. The attempt to capture or overlay as well · 3 unmodified lines | |||
| 147 | code or return accordingly modified parameters. | 149 | code or return accordingly modified parameters. |
| 148 | 150 | ||
| 149 | 151 | ||
| 150 | .. _v4l2-window: | 152 | .. c:type:: v4l2_window |
| 151 | 153 | ||
| 152 | struct v4l2_window | 154 | struct v4l2_window |
| 153 | ------------------ | 155 | ------------------ |
| @@ -173,7 +175,7 @@ struct v4l2_window · 19 unmodified lines | |||
| 173 | :ref:`VIDIOC_S_FBUF <VIDIOC_G_FBUF>` applications set this field | 175 | :ref:`VIDIOC_S_FBUF <VIDIOC_G_FBUF>` applications set this field |
| 174 | to the desired pixel value for the chroma key. The format is the | 176 | to the desired pixel value for the chroma key. The format is the |
| 175 | same as the pixel format of the framebuffer (struct | 177 | same as the pixel format of the framebuffer (struct |
| 176 | :ref:`v4l2_framebuffer <v4l2-framebuffer>` ``fmt.pixelformat`` | 178 | :c:type:`v4l2_framebuffer` ``fmt.pixelformat`` |
| 177 | field), with bytes in host order. E. g. for | 179 | field), with bytes in host order. E. g. for |
| 178 | :ref:`V4L2_PIX_FMT_BGR24 <V4L2-PIX-FMT-BGR32>` the value should | 180 | :ref:`V4L2_PIX_FMT_BGR24 <V4L2-PIX-FMT-BGR32>` the value should |
| 179 | be 0xRRGGBB on a little endian, 0xBBGGRR on a big endian host. | 181 | be 0xRRGGBB on a little endian, 0xBBGGRR on a big endian host. |
| @@ -236,13 +238,15 @@ exceeded are undefined. [#f3]_ · 56 unmodified lines | |||
| 236 | :ref:`VIDIOC_S_FBUF <VIDIOC_G_FBUF>`, | 238 | :ref:`VIDIOC_S_FBUF <VIDIOC_G_FBUF>`, |
| 237 | :ref:`framebuffer-flags`). | 239 | :ref:`framebuffer-flags`). |
| 238 | 240 | ||
| 239 | .. note:: This field was added in Linux 2.6.23, extending the | 241 | .. note:: |
| 240 | structure. However the :ref:`VIDIOC_[G|S|TRY]_FMT <VIDIOC_G_FMT>` | 242 | |
| 241 | ioctls, which take a pointer to a :ref:`v4l2_format <v4l2-format>` | 243 | This field was added in Linux 2.6.23, extending the |
| 242 | parent structure with padding bytes at the end, are not affected. | 244 | structure. However the :ref:`VIDIOC_[G|S|TRY]_FMT <VIDIOC_G_FMT>` |
| 245 | ioctls, which take a pointer to a :c:type:`v4l2_format` | ||
| 246 | parent structure with padding bytes at the end, are not affected. | ||
| 243 | 247 | ||
| 244 | 248 | ||
| 245 | .. _v4l2-clip: | 249 | .. c:type:: v4l2_clip |
| 246 | 250 | ||
| 247 | struct v4l2_clip [#f4]_ | 251 | struct v4l2_clip [#f4]_ |
| 248 | ----------------------- | 252 | ----------------------- |
| @@ -258,7 +262,7 @@ struct v4l2_clip [#f4]_ · 9 unmodified lines | |||
| 258 | linked list of clipping rectangles. | 262 | linked list of clipping rectangles. |
| 259 | 263 | ||
| 260 | 264 | ||
| 261 | .. _v4l2-rect: | 265 | .. c:type:: v4l2_rect |
| 262 | 266 | ||
| 263 | struct v4l2_rect | 267 | struct v4l2_rect |
| 264 | ---------------- | 268 | ---------------- |
| @@ -20,7 +20,7 @@ Querying Capabilities · 19 unmodified lines | |||
| 20 | Devices supporting the radio interface set the ``V4L2_CAP_RADIO`` and | 20 | Devices supporting the radio interface set the ``V4L2_CAP_RADIO`` and |
| 21 | ``V4L2_CAP_TUNER`` or ``V4L2_CAP_MODULATOR`` flag in the | 21 | ``V4L2_CAP_TUNER`` or ``V4L2_CAP_MODULATOR`` flag in the |
| 22 | ``capabilities`` field of struct | 22 | ``capabilities`` field of struct |
| 23 | :ref:`v4l2_capability <v4l2-capability>` returned by the | 23 | :c:type:`v4l2_capability` returned by the |
| 24 | :ref:`VIDIOC_QUERYCAP` ioctl. Other combinations of | 24 | :ref:`VIDIOC_QUERYCAP` ioctl. Other combinations of |
| 25 | capability flags are reserved for future extensions. | 25 | capability flags are reserved for future extensions. |
| 26 | 26 | ||
| @@ -39,7 +39,7 @@ Querying Capabilities · 38 unmodified lines | |||
| 39 | Devices supporting the raw VBI capturing or output API set the | 39 | Devices supporting the raw VBI capturing or output API set the |
| 40 | ``V4L2_CAP_VBI_CAPTURE`` or ``V4L2_CAP_VBI_OUTPUT`` flags, respectively, | 40 | ``V4L2_CAP_VBI_CAPTURE`` or ``V4L2_CAP_VBI_OUTPUT`` flags, respectively, |
| 41 | in the ``capabilities`` field of struct | 41 | in the ``capabilities`` field of struct |
| 42 | :ref:`v4l2_capability <v4l2-capability>` returned by the | 42 | :c:type:`v4l2_capability` returned by the |
| 43 | :ref:`VIDIOC_QUERYCAP` ioctl. At least one of the | 43 | :ref:`VIDIOC_QUERYCAP` ioctl. At least one of the |
| 44 | read/write, streaming or asynchronous I/O methods must be supported. VBI | 44 | read/write, streaming or asynchronous I/O methods must be supported. VBI |
| 45 | devices may or may not have a tuner or modulator. | 45 | devices may or may not have a tuner or modulator. |
| @@ -69,16 +69,16 @@ always ensure they really get what they want, requesting reasonable · 23 unmodified lines | |||
| 69 | parameters and then checking if the actual parameters are suitable. | 69 | parameters and then checking if the actual parameters are suitable. |
| 70 | 70 | ||
| 71 | To query the current raw VBI capture parameters applications set the | 71 | To query the current raw VBI capture parameters applications set the |
| 72 | ``type`` field of a struct :ref:`v4l2_format <v4l2-format>` to | 72 | ``type`` field of a struct :c:type:`v4l2_format` to |
| 73 | ``V4L2_BUF_TYPE_VBI_CAPTURE`` or ``V4L2_BUF_TYPE_VBI_OUTPUT``, and call | 73 | ``V4L2_BUF_TYPE_VBI_CAPTURE`` or ``V4L2_BUF_TYPE_VBI_OUTPUT``, and call |
| 74 | the :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` ioctl with a pointer to this | 74 | the :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` ioctl with a pointer to this |
| 75 | structure. Drivers fill the struct | 75 | structure. Drivers fill the struct |
| 76 | :ref:`v4l2_vbi_format <v4l2-vbi-format>` ``vbi`` member of the | 76 | :c:type:`v4l2_vbi_format` ``vbi`` member of the |
| 77 | ``fmt`` union. | 77 | ``fmt`` union. |
| 78 | 78 | ||
| 79 | To request different parameters applications set the ``type`` field of a | 79 | To request different parameters applications set the ``type`` field of a |
| 80 | struct :ref:`v4l2_format <v4l2-format>` as above and initialize all | 80 | struct :c:type:`v4l2_format` as above and initialize all |
| 81 | fields of the struct :ref:`v4l2_vbi_format <v4l2-vbi-format>` | 81 | fields of the struct :c:type:`v4l2_vbi_format` |
| 82 | ``vbi`` member of the ``fmt`` union, or better just modify the results | 82 | ``vbi`` member of the ``fmt`` union, or better just modify the results |
| 83 | of :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>`, and call the :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` | 83 | of :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>`, and call the :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` |
| 84 | ioctl with a pointer to this structure. Drivers return an ``EINVAL`` error | 84 | ioctl with a pointer to this structure. Drivers return an ``EINVAL`` error |
| @@ -99,131 +99,91 @@ VBI devices must implement both the :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` and · 14 unmodified lines | |||
| 99 | and always returns default parameters as :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` does. | 99 | and always returns default parameters as :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` does. |
| 100 | :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` is optional. | 100 | :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` is optional. |
| 101 | 101 | ||
| 102 | .. tabularcolumns:: |p{2.4cm}|p{4.4cm}|p{10.7cm}| | ||
| 102 | 103 | ||
| 103 | .. _v4l2-vbi-format: | 104 | .. c:type:: v4l2_vbi_format |
| 105 | |||
| 106 | .. cssclass:: longtable | ||
| 104 | 107 | ||
| 105 | .. flat-table:: struct v4l2_vbi_format | 108 | .. flat-table:: struct v4l2_vbi_format |
| 106 | :header-rows: 0 | 109 | :header-rows: 0 |
| 107 | :stub-columns: 0 | 110 | :stub-columns: 0 |
| 108 | :widths: 1 1 2 | 111 | :widths: 1 1 2 |
| 109 | 112 | ||
| 110 | 113 | * - __u32 | |
| 111 | - .. row 1 | 114 | - ``sampling_rate`` |
| 112 | 115 | - Samples per second, i. e. unit 1 Hz. | |
| 113 | - __u32 | 116 | * - __u32 |
| 114 | 117 | - ``offset`` | |
| 115 | - ``sampling_rate`` | 118 | - Horizontal offset of the VBI image, relative to the leading edge |
| 116 | 119 | of the line synchronization pulse and counted in samples: The | |
| 117 | - Samples per second, i. e. unit 1 Hz. | 120 | first sample in the VBI image will be located ``offset`` / |
| 118 | 121 | ``sampling_rate`` seconds following the leading edge. See also | |
| 119 | - .. row 2 | 122 | :ref:`vbi-hsync`. |
| 120 | 123 | * - __u32 | |
| 121 | - __u32 | 124 | - ``samples_per_line`` |
| 122 | 125 | - | |
| 123 | - ``offset`` | 126 | * - __u32 |
| 124 | 127 | - ``sample_format`` | |
| 125 | - Horizontal offset of the VBI image, relative to the leading edge | 128 | - Defines the sample format as in :ref:`pixfmt`, a |
| 126 | of the line synchronization pulse and counted in samples: The | 129 | four-character-code. [#f2]_ Usually this is ``V4L2_PIX_FMT_GREY``, |
| 127 | first sample in the VBI image will be located ``offset`` / | 130 | i. e. each sample consists of 8 bits with lower values oriented |
| 128 | ``sampling_rate`` seconds following the leading edge. See also | 131 | towards the black level. Do not assume any other correlation of |
| 129 | :ref:`vbi-hsync`. | 132 | values with the signal level. For example, the MSB does not |
| 130 | 133 | necessarily indicate if the signal is 'high' or 'low' because 128 | |
| 131 | - .. row 3 | 134 | may not be the mean value of the signal. Drivers shall not convert |
| 132 | 135 | the sample format by software. | |
| 133 | - __u32 | 136 | * - __u32 |
| 134 | 137 | - ``start``\ [#f2]_ | |
| 135 | - ``samples_per_line`` | 138 | - This is the scanning system line number associated with the first |
| 136 | 139 | line of the VBI image, of the first and the second field | |
| 137 | - | 140 | respectively. See :ref:`vbi-525` and :ref:`vbi-625` for valid |
| 138 | 141 | values. The ``V4L2_VBI_ITU_525_F1_START``, | |
| 139 | - .. row 4 | 142 | ``V4L2_VBI_ITU_525_F2_START``, ``V4L2_VBI_ITU_625_F1_START`` and |
| 140 | 143 | ``V4L2_VBI_ITU_625_F2_START`` defines give the start line numbers | |
| 141 | - __u32 | 144 | for each field for each 525 or 625 line format as a convenience. |
| 142 | 145 | Don't forget that ITU line numbering starts at 1, not 0. VBI input | |
| 143 | - ``sample_format`` | 146 | drivers can return start values 0 if the hardware cannot reliable |
| 144 | 147 | identify scanning lines, VBI acquisition may not require this | |
| 145 | - Defines the sample format as in :ref:`pixfmt`, a | 148 | information. |
| 146 | four-character-code. [#f2]_ Usually this is ``V4L2_PIX_FMT_GREY``, | 149 | * - __u32 |
| 147 | i. e. each sample consists of 8 bits with lower values oriented | 150 | - ``count``\ [#f2]_ |
| 148 | towards the black level. Do not assume any other correlation of | 151 | - The number of lines in the first and second field image, |
| 149 | values with the signal level. For example, the MSB does not | 152 | respectively. |
| 150 | necessarily indicate if the signal is 'high' or 'low' because 128 | 153 | * - :cspan:`2` |
| 151 | may not be the mean value of the signal. Drivers shall not convert | 154 | |
| 152 | the sample format by software. | 155 | Drivers should be as flexibility as possible. For example, it may |
| 153 | 156 | be possible to extend or move the VBI capture window down to the | |
| 154 | - .. row 5 | 157 | picture area, implementing a 'full field mode' to capture data |
| 155 | 158 | service transmissions embedded in the picture. | |
| 156 | - __u32 | 159 | |
| 157 | 160 | An application can set the first or second ``count`` value to zero | |
| 158 | - ``start``\ [#f2]_ | 161 | if no data is required from the respective field; ``count``\ [1] |
| 159 | 162 | if the scanning system is progressive, i. e. not interlaced. The | |
| 160 | - This is the scanning system line number associated with the first | 163 | corresponding start value shall be ignored by the application and |
| 161 | line of the VBI image, of the first and the second field | 164 | driver. Anyway, drivers may not support single field capturing and |
| 162 | respectively. See :ref:`vbi-525` and :ref:`vbi-625` for valid | 165 | return both count values non-zero. |
| 163 | values. The ``V4L2_VBI_ITU_525_F1_START``, | 166 | |
| 164 | ``V4L2_VBI_ITU_525_F2_START``, ``V4L2_VBI_ITU_625_F1_START`` and | 167 | Both ``count`` values set to zero, or line numbers are outside the |
| 165 | ``V4L2_VBI_ITU_625_F2_START`` defines give the start line numbers | 168 | bounds depicted\ [#f4]_, or a field image covering lines of two |
| 166 | for each field for each 525 or 625 line format as a convenience. | 169 | fields, are invalid and shall not be returned by the driver. |
| 167 | Don't forget that ITU line numbering starts at 1, not 0. VBI input | 170 | |
| 168 | drivers can return start values 0 if the hardware cannot reliable | 171 | To initialize the ``start`` and ``count`` fields, applications |
| 169 | identify scanning lines, VBI acquisition may not require this | 172 | must first determine the current video standard selection. The |
| 170 | information. | 173 | :ref:`v4l2_std_id <v4l2-std-id>` or the ``framelines`` field |
| 171 | 174 | of struct :c:type:`v4l2_standard` can be evaluated | |
| 172 | - .. row 6 | 175 | for this purpose. |
| 173 | 176 | * - __u32 | |
| 174 | - __u32 | 177 | - ``flags`` |
| 175 | 178 | - See :ref:`vbifmt-flags` below. Currently only drivers set flags, | |
| 176 | - ``count``\ [#f2]_ | 179 | applications must set this field to zero. |
| 177 | 180 | * - __u32 | |
| 178 | - The number of lines in the first and second field image, | 181 | - ``reserved``\ [#f2]_ |
| 179 | respectively. | 182 | - This array is reserved for future extensions. Drivers and |
| 180 | 183 | applications must set it to zero. | |
| 181 | - .. row 7 | 184 | |
| 182 | 185 | ||
| 183 | - :cspan:`2` | 186 | .. tabularcolumns:: |p{4.0cm}|p{1.5cm}|p{12.0cm}| |
| 184 | |||
| 185 | Drivers should be as flexibility as possible. For example, it may | ||
| 186 | be possible to extend or move the VBI capture window down to the | ||
| 187 | picture area, implementing a 'full field mode' to capture data | ||
| 188 | service transmissions embedded in the picture. | ||
| 189 | |||
| 190 | An application can set the first or second ``count`` value to zero | ||
| 191 | if no data is required from the respective field; ``count``\ [1] | ||
| 192 | if the scanning system is progressive, i. e. not interlaced. The | ||
| 193 | corresponding start value shall be ignored by the application and | ||
| 194 | driver. Anyway, drivers may not support single field capturing and | ||
| 195 | return both count values non-zero. | ||
| 196 | |||
| 197 | Both ``count`` values set to zero, or line numbers outside the | ||
| 198 | bounds depicted in :ref:`vbi-525` and :ref:`vbi-625`, or a | ||
| 199 | field image covering lines of two fields, are invalid and shall | ||
| 200 | not be returned by the driver. | ||
| 201 | |||
| 202 | To initialize the ``start`` and ``count`` fields, applications | ||
| 203 | must first determine the current video standard selection. The | ||
| 204 | :ref:`v4l2_std_id <v4l2-std-id>` or the ``framelines`` field | ||
| 205 | of struct :ref:`v4l2_standard <v4l2-standard>` can be evaluated | ||
| 206 | for this purpose. | ||
| 207 | |||
| 208 | - .. row 8 | ||
| 209 | |||
| 210 | - __u32 | ||
| 211 | |||
| 212 | - ``flags`` | ||
| 213 | |||
| 214 | - See :ref:`vbifmt-flags` below. Currently only drivers set flags, | ||
| 215 | applications must set this field to zero. | ||
| 216 | |||
| 217 | - .. row 9 | ||
| 218 | |||
| 219 | - __u32 | ||
| 220 | |||
| 221 | - ``reserved``\ [#f2]_ | ||
| 222 | |||
| 223 | - This array is reserved for future extensions. Drivers and | ||
| 224 | applications must set it to zero. | ||
| 225 | |||
| 226 | |||
| 227 | 187 | ||
| 228 | .. _vbifmt-flags: | 188 | .. _vbifmt-flags: |
| 229 | 189 | ||
| @@ -232,40 +192,30 @@ and always returns default parameters as :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` does · 2 unmodified lines | |||
| 232 | :stub-columns: 0 | 192 | :stub-columns: 0 |
| 233 | :widths: 3 1 4 | 193 | :widths: 3 1 4 |
| 234 | 194 | ||
| 235 | 195 | * - ``V4L2_VBI_UNSYNC`` | |
| 236 | - .. row 1 | 196 | - 0x0001 |
| 237 | 197 | - This flag indicates hardware which does not properly distinguish | |
| 238 | - ``V4L2_VBI_UNSYNC`` | 198 | between fields. Normally the VBI image stores the first field |
| 239 | 199 | (lower scanning line numbers) first in memory. This may be a top | |
| 240 | - 0x0001 | 200 | or bottom field depending on the video standard. When this flag is |
| 241 | 201 | set the first or second field may be stored first, however the | |
| 242 | - This flag indicates hardware which does not properly distinguish | 202 | fields are still in correct temporal order with the older field |
| 243 | between fields. Normally the VBI image stores the first field | 203 | first in memory. [#f3]_ |
| 244 | (lower scanning line numbers) first in memory. This may be a top | 204 | * - ``V4L2_VBI_INTERLACED`` |
| 245 | or bottom field depending on the video standard. When this flag is | 205 | - 0x0002 |
| 246 | set the first or second field may be stored first, however the | 206 | - By default the two field images will be passed sequentially; all |
| 247 | fields are still in correct temporal order with the older field | 207 | lines of the first field followed by all lines of the second field |
| 248 | first in memory. [#f3]_ | 208 | (compare :ref:`field-order` ``V4L2_FIELD_SEQ_TB`` and |
| 249 | 209 | ``V4L2_FIELD_SEQ_BT``, whether the top or bottom field is first in | |
| 250 | - .. row 2 | 210 | memory depends on the video standard). When this flag is set, the |
| 251 | 211 | two fields are interlaced (cf. ``V4L2_FIELD_INTERLACED``). The | |
| 252 | - ``V4L2_VBI_INTERLACED`` | 212 | first line of the first field followed by the first line of the |
| 253 | 213 | second field, then the two second lines, and so on. Such a layout | |
| 254 | - 0x0002 | 214 | may be necessary when the hardware has been programmed to capture |
| 255 | 215 | or output interlaced video images and is unable to separate the | |
| 256 | - By default the two field images will be passed sequentially; all | 216 | fields for VBI capturing at the same time. For simplicity setting |
| 257 | lines of the first field followed by all lines of the second field | 217 | this flag implies that both ``count`` values are equal and |
| 258 | (compare :ref:`field-order` ``V4L2_FIELD_SEQ_TB`` and | 218 | non-zero. |
| 259 | ``V4L2_FIELD_SEQ_BT``, whether the top or bottom field is first in | ||
| 260 | memory depends on the video standard). When this flag is set, the | ||
| 261 | two fields are interlaced (cf. ``V4L2_FIELD_INTERLACED``). The | ||
| 262 | first line of the first field followed by the first line of the | ||
| 263 | second field, then the two second lines, and so on. Such a layout | ||
| 264 | may be necessary when the hardware has been programmed to capture | ||
| 265 | or output interlaced video images and is unable to separate the | ||
| 266 | fields for VBI capturing at the same time. For simplicity setting | ||
| 267 | this flag implies that both ``count`` values are equal and | ||
| 268 | non-zero. | ||
| 269 | 219 | ||
| 270 | 220 | ||
| 271 | 221 | ||
| @@ -348,3 +298,6 @@ another process. · 76 unmodified lines | |||
| 348 | Most VBI services transmit on both fields, but some have different | 298 | Most VBI services transmit on both fields, but some have different |
| 349 | semantics depending on the field number. These cannot be reliable | 299 | semantics depending on the field number. These cannot be reliable |
| 350 | decoded or encoded when ``V4L2_VBI_UNSYNC`` is set. | 300 | decoded or encoded when ``V4L2_VBI_UNSYNC`` is set. |
| 301 | |||
| 302 | .. [#f4] | ||
| 303 | The valid values ar shown at :ref:`vbi-525` and :ref:`vbi-625`. | ||
Binary file not shown.
Binary file not shown.
| @@ -14,7 +14,9 @@ at devices capable of receiving and/or transmitting RDS information. · 13 unmodified lines | |||
| 14 | For more information see the core RDS standard :ref:`iec62106` and the | 14 | For more information see the core RDS standard :ref:`iec62106` and the |
| 15 | RBDS standard :ref:`nrsc4`. | 15 | RBDS standard :ref:`nrsc4`. |
| 16 | 16 | ||
| 17 | .. note:: Note that the RBDS standard as is used in the USA is almost | 17 | .. note:: |
| 18 | |||
| 19 | Note that the RBDS standard as is used in the USA is almost | ||
| 18 | identical to the RDS standard. Any RDS decoder/encoder can also handle | 20 | identical to the RDS standard. Any RDS decoder/encoder can also handle |
| 19 | RBDS. Only some of the fields have slightly different meanings. See the | 21 | RBDS. Only some of the fields have slightly different meanings. See the |
| 20 | RBDS standard for more information. | 22 | RBDS standard for more information. |
| @@ -32,10 +34,10 @@ Querying Capabilities · 11 unmodified lines | |||
| 32 | 34 | ||
| 33 | Devices supporting the RDS capturing API set the | 35 | Devices supporting the RDS capturing API set the |
| 34 | ``V4L2_CAP_RDS_CAPTURE`` flag in the ``capabilities`` field of struct | 36 | ``V4L2_CAP_RDS_CAPTURE`` flag in the ``capabilities`` field of struct |
| 35 | :ref:`v4l2_capability <v4l2-capability>` returned by the | 37 | :c:type:`v4l2_capability` returned by the |
| 36 | :ref:`VIDIOC_QUERYCAP` ioctl. Any tuner that | 38 | :ref:`VIDIOC_QUERYCAP` ioctl. Any tuner that |
| 37 | supports RDS will set the ``V4L2_TUNER_CAP_RDS`` flag in the | 39 | supports RDS will set the ``V4L2_TUNER_CAP_RDS`` flag in the |
| 38 | ``capability`` field of struct :ref:`v4l2_tuner <v4l2-tuner>`. If the | 40 | ``capability`` field of struct :c:type:`v4l2_tuner`. If the |
| 39 | driver only passes RDS blocks without interpreting the data the | 41 | driver only passes RDS blocks without interpreting the data the |
| 40 | ``V4L2_TUNER_CAP_RDS_BLOCK_IO`` flag has to be set, see | 42 | ``V4L2_TUNER_CAP_RDS_BLOCK_IO`` flag has to be set, see |
| 41 | :ref:`Reading RDS data <reading-rds-data>`. For future use the flag | 43 | :ref:`Reading RDS data <reading-rds-data>`. For future use the flag |
| @@ -46,19 +48,19 @@ linux-media mailing list: · 4 unmodified lines | |||
| 46 | `https://linuxtv.org/lists.php <https://linuxtv.org/lists.php>`__. | 48 | `https://linuxtv.org/lists.php <https://linuxtv.org/lists.php>`__. |
| 47 | 49 | ||
| 48 | Whether an RDS signal is present can be detected by looking at the | 50 | Whether an RDS signal is present can be detected by looking at the |
| 49 | ``rxsubchans`` field of struct :ref:`v4l2_tuner <v4l2-tuner>`: the | 51 | ``rxsubchans`` field of struct :c:type:`v4l2_tuner`: the |
| 50 | ``V4L2_TUNER_SUB_RDS`` will be set if RDS data was detected. | 52 | ``V4L2_TUNER_SUB_RDS`` will be set if RDS data was detected. |
| 51 | 53 | ||
| 52 | Devices supporting the RDS output API set the ``V4L2_CAP_RDS_OUTPUT`` | 54 | Devices supporting the RDS output API set the ``V4L2_CAP_RDS_OUTPUT`` |
| 53 | flag in the ``capabilities`` field of struct | 55 | flag in the ``capabilities`` field of struct |
| 54 | :ref:`v4l2_capability <v4l2-capability>` returned by the | 56 | :c:type:`v4l2_capability` returned by the |
| 55 | :ref:`VIDIOC_QUERYCAP` ioctl. Any modulator that | 57 | :ref:`VIDIOC_QUERYCAP` ioctl. Any modulator that |
| 56 | supports RDS will set the ``V4L2_TUNER_CAP_RDS`` flag in the | 58 | supports RDS will set the ``V4L2_TUNER_CAP_RDS`` flag in the |
| 57 | ``capability`` field of struct | 59 | ``capability`` field of struct |
| 58 | :ref:`v4l2_modulator <v4l2-modulator>`. In order to enable the RDS | 60 | :c:type:`v4l2_modulator`. In order to enable the RDS |
| 59 | transmission one must set the ``V4L2_TUNER_SUB_RDS`` bit in the | 61 | transmission one must set the ``V4L2_TUNER_SUB_RDS`` bit in the |
| 60 | ``txsubchans`` field of struct | 62 | ``txsubchans`` field of struct |
| 61 | :ref:`v4l2_modulator <v4l2-modulator>`. If the driver only passes RDS | 63 | :c:type:`v4l2_modulator`. If the driver only passes RDS |
| 62 | blocks without interpreting the data the ``V4L2_TUNER_CAP_RDS_BLOCK_IO`` | 64 | blocks without interpreting the data the ``V4L2_TUNER_CAP_RDS_BLOCK_IO`` |
| 63 | flag has to be set. If the tuner is capable of handling RDS entities | 65 | flag has to be set. If the tuner is capable of handling RDS entities |
| 64 | like program identification codes and radio text, the flag | 66 | like program identification codes and radio text, the flag |
| @@ -91,165 +93,92 @@ RDS datastructures · 26 unmodified lines | |||
| 91 | ================== | 93 | ================== |
| 92 | 94 | ||
| 93 | 95 | ||
| 94 | .. _v4l2-rds-data: | 96 | .. c:type:: v4l2_rds_data |
| 97 | |||
| 98 | .. tabularcolumns:: |p{2.5cm}|p{2.5cm}|p{12.5cm}| | ||
| 95 | 99 | ||
| 96 | .. flat-table:: struct v4l2_rds_data | 100 | .. flat-table:: struct v4l2_rds_data |
| 97 | :header-rows: 0 | 101 | :header-rows: 0 |
| 98 | :stub-columns: 0 | 102 | :stub-columns: 0 |
| 99 | :widths: 1 1 5 | 103 | :widths: 1 1 5 |
| 100 | 104 | ||
| 101 | 105 | * - __u8 | |
| 102 | - .. row 1 | 106 | - ``lsb`` |
| 103 | 107 | - Least Significant Byte of RDS Block | |
| 104 | - __u8 | 108 | * - __u8 |
| 105 | 109 | - ``msb`` | |
| 106 | - ``lsb`` | 110 | - Most Significant Byte of RDS Block |
| 107 | 111 | * - __u8 | |
| 108 | - Least Significant Byte of RDS Block | 112 | - ``block`` |
| 109 | 113 | - Block description | |
| 110 | - .. row 2 | ||
| 111 | |||
| 112 | - __u8 | ||
| 113 | |||
| 114 | - ``msb`` | ||
| 115 | |||
| 116 | - Most Significant Byte of RDS Block | ||
| 117 | |||
| 118 | - .. row 3 | ||
| 119 | |||
| 120 | - __u8 | ||
| 121 | |||
| 122 | - ``block`` | ||
| 123 | |||
| 124 | - Block description | ||
| 125 | 114 | ||
| 126 | 115 | ||
| 127 | 116 | ||
| 128 | .. _v4l2-rds-block: | 117 | .. _v4l2-rds-block: |
| 129 | 118 | ||
| 119 | .. tabularcolumns:: |p{2.9cm}|p{14.6cm}| | ||
| 120 | |||
| 130 | .. flat-table:: Block description | 121 | .. flat-table:: Block description |
| 131 | :header-rows: 0 | 122 | :header-rows: 0 |
| 132 | :stub-columns: 0 | 123 | :stub-columns: 0 |
| 133 | :widths: 1 5 | 124 | :widths: 1 5 |
| 134 | 125 | ||
| 135 | 126 | * - Bits 0-2 | |
| 136 | - .. row 1 | 127 | - Block (aka offset) of the received data. |
| 137 | 128 | * - Bits 3-5 | |
| 138 | - Bits 0-2 | 129 | - Deprecated. Currently identical to bits 0-2. Do not use these |
| 139 | 130 | bits. | |
| 140 | - Block (aka offset) of the received data. | 131 | * - Bit 6 |
| 141 | 132 | - Corrected bit. Indicates that an error was corrected for this data | |
| 142 | - .. row 2 | 133 | block. |
| 143 | 134 | * - Bit 7 | |
| 144 | - Bits 3-5 | 135 | - Error bit. Indicates that an uncorrectable error occurred during |
| 145 | 136 | reception of this block. | |
| 146 | - Deprecated. Currently identical to bits 0-2. Do not use these | ||
| 147 | bits. | ||
| 148 | |||
| 149 | - .. row 3 | ||
| 150 | |||
| 151 | - Bit 6 | ||
| 152 | |||
| 153 | - Corrected bit. Indicates that an error was corrected for this data | ||
| 154 | block. | ||
| 155 | |||
| 156 | - .. row 4 | ||
| 157 | |||
| 158 | - Bit 7 | ||
| 159 | |||
| 160 | - Error bit. Indicates that an uncorrectable error occurred during | ||
| 161 | reception of this block. | ||
| 162 | 137 | ||
| 163 | 138 | ||
| 164 | 139 | ||
| 165 | .. _v4l2-rds-block-codes: | 140 | .. _v4l2-rds-block-codes: |
| 166 | 141 | ||
| 142 | .. tabularcolumns:: |p{5.6cm}|p{2.0cm}|p{1.5cm}|p{7.0cm}| | ||
| 143 | |||
| 167 | .. flat-table:: Block defines | 144 | .. flat-table:: Block defines |
| 168 | :header-rows: 0 | 145 | :header-rows: 0 |
| 169 | :stub-columns: 0 | 146 | :stub-columns: 0 |
| 170 | :widths: 1 1 1 5 | 147 | :widths: 1 1 1 5 |
| 171 | 148 | ||
| 172 | 149 | * - V4L2_RDS_BLOCK_MSK | |
| 173 | - .. row 1 | 150 | - |
| 174 | 151 | - 7 | |
| 175 | - V4L2_RDS_BLOCK_MSK | 152 | - Mask for bits 0-2 to get the block ID. |
| 176 | 153 | * - V4L2_RDS_BLOCK_A | |
| 177 | - | 154 | - |
| 178 | - 7 | 155 | - 0 |
| 179 | 156 | - Block A. | |
| 180 | - Mask for bits 0-2 to get the block ID. | 157 | * - V4L2_RDS_BLOCK_B |
| 181 | 158 | - | |
| 182 | - .. row 2 | 159 | - 1 |
| 183 | 160 | - Block B. | |
| 184 | - V4L2_RDS_BLOCK_A | 161 | * - V4L2_RDS_BLOCK_C |
| 185 | 162 | - | |
| 186 | - | 163 | - 2 |
| 187 | - 0 | 164 | - Block C. |
| 188 | 165 | * - V4L2_RDS_BLOCK_D | |
| 189 | - Block A. | 166 | - |
| 190 | 167 | - 3 | |
| 191 | - .. row 3 | 168 | - Block D. |
| 192 | 169 | * - V4L2_RDS_BLOCK_C_ALT | |
| 193 | - V4L2_RDS_BLOCK_B | 170 | - |
| 194 | 171 | - 4 | |
| 195 | - | 172 | - Block C'. |
| 196 | - 1 | 173 | * - V4L2_RDS_BLOCK_INVALID |
| 197 | 174 | - read-only | |
| 198 | - Block B. | 175 | - 7 |
| 199 | 176 | - An invalid block. | |
| 200 | - .. row 4 | 177 | * - V4L2_RDS_BLOCK_CORRECTED |
| 201 | 178 | - read-only | |
| 202 | - V4L2_RDS_BLOCK_C | 179 | - 0x40 |
| 203 | 180 | - A bit error was detected but corrected. | |
| 204 | - | 181 | * - V4L2_RDS_BLOCK_ERROR |
| 205 | - 2 | 182 | - read-only |
| 206 | 183 | - 0x80 | |
| 207 | - Block C. | 184 | - An uncorrectable error occurred. |
| 208 | |||
| 209 | - .. row 5 | ||
| 210 | |||
| 211 | - V4L2_RDS_BLOCK_D | ||
| 212 | |||
| 213 | - | ||
| 214 | - 3 | ||
| 215 | |||
| 216 | - Block D. | ||
| 217 | |||
| 218 | - .. row 6 | ||
| 219 | |||
| 220 | - V4L2_RDS_BLOCK_C_ALT | ||
| 221 | |||
| 222 | - | ||
| 223 | - 4 | ||
| 224 | |||
| 225 | - Block C'. | ||
| 226 | |||
| 227 | - .. row 7 | ||
| 228 | |||
| 229 | - V4L2_RDS_BLOCK_INVALID | ||
| 230 | |||
| 231 | - read-only | ||
| 232 | |||
| 233 | - 7 | ||
| 234 | |||
| 235 | - An invalid block. | ||
| 236 | |||
| 237 | - .. row 8 | ||
| 238 | |||
| 239 | - V4L2_RDS_BLOCK_CORRECTED | ||
| 240 | |||
| 241 | - read-only | ||
| 242 | |||
| 243 | - 0x40 | ||
| 244 | |||
| 245 | - A bit error was detected but corrected. | ||
| 246 | |||
| 247 | - .. row 9 | ||
| 248 | |||
| 249 | - V4L2_RDS_BLOCK_ERROR | ||
| 250 | |||
| 251 | - read-only | ||
| 252 | |||
| 253 | - 0x80 | ||
| 254 | |||
| 255 | - An uncorrectable error occurred. | ||
| @@ -21,7 +21,7 @@ Querying Capabilities · 20 unmodified lines | |||
| 21 | Devices supporting the SDR receiver interface set the | 21 | Devices supporting the SDR receiver interface set the |
| 22 | ``V4L2_CAP_SDR_CAPTURE`` and ``V4L2_CAP_TUNER`` flag in the | 22 | ``V4L2_CAP_SDR_CAPTURE`` and ``V4L2_CAP_TUNER`` flag in the |
| 23 | ``capabilities`` field of struct | 23 | ``capabilities`` field of struct |
| 24 | :ref:`v4l2_capability <v4l2-capability>` returned by the | 24 | :c:type:`v4l2_capability` returned by the |
| 25 | :ref:`VIDIOC_QUERYCAP` ioctl. That flag means the | 25 | :ref:`VIDIOC_QUERYCAP` ioctl. That flag means the |
| 26 | device has an Analog to Digital Converter (ADC), which is a mandatory | 26 | device has an Analog to Digital Converter (ADC), which is a mandatory |
| 27 | element for the SDR receiver. | 27 | element for the SDR receiver. |
| @@ -29,7 +29,7 @@ element for the SDR receiver. · 1 unmodified line | |||
| 29 | Devices supporting the SDR transmitter interface set the | 29 | Devices supporting the SDR transmitter interface set the |
| 30 | ``V4L2_CAP_SDR_OUTPUT`` and ``V4L2_CAP_MODULATOR`` flag in the | 30 | ``V4L2_CAP_SDR_OUTPUT`` and ``V4L2_CAP_MODULATOR`` flag in the |
| 31 | ``capabilities`` field of struct | 31 | ``capabilities`` field of struct |
| 32 | :ref:`v4l2_capability <v4l2-capability>` returned by the | 32 | :c:type:`v4l2_capability` returned by the |
| 33 | :ref:`VIDIOC_QUERYCAP` ioctl. That flag means the | 33 | :ref:`VIDIOC_QUERYCAP` ioctl. That flag means the |
| 34 | device has an Digital to Analog Converter (DAC), which is a mandatory | 34 | device has an Digital to Analog Converter (DAC), which is a mandatory |
| 35 | element for the SDR transmitter. | 35 | element for the SDR transmitter. |
| @@ -67,53 +67,40 @@ basic :ref:`format` ioctls, the · 31 unmodified lines | |||
| 67 | well. | 67 | well. |
| 68 | 68 | ||
| 69 | To use the :ref:`format` ioctls applications set the ``type`` | 69 | To use the :ref:`format` ioctls applications set the ``type`` |
| 70 | field of a struct :ref:`v4l2_format <v4l2-format>` to | 70 | field of a struct :c:type:`v4l2_format` to |
| 71 | ``V4L2_BUF_TYPE_SDR_CAPTURE`` or ``V4L2_BUF_TYPE_SDR_OUTPUT`` and use | 71 | ``V4L2_BUF_TYPE_SDR_CAPTURE`` or ``V4L2_BUF_TYPE_SDR_OUTPUT`` and use |
| 72 | the struct :ref:`v4l2_sdr_format <v4l2-sdr-format>` ``sdr`` member | 72 | the struct :c:type:`v4l2_sdr_format` ``sdr`` member |
| 73 | of the ``fmt`` union as needed per the desired operation. Currently | 73 | of the ``fmt`` union as needed per the desired operation. Currently |
| 74 | there is two fields, ``pixelformat`` and ``buffersize``, of struct | 74 | there is two fields, ``pixelformat`` and ``buffersize``, of struct |
| 75 | struct :ref:`v4l2_sdr_format <v4l2-sdr-format>` which are used. | 75 | struct :c:type:`v4l2_sdr_format` which are used. |
| 76 | Content of the ``pixelformat`` is V4L2 FourCC code of the data format. | 76 | Content of the ``pixelformat`` is V4L2 FourCC code of the data format. |
| 77 | The ``buffersize`` field is maximum buffer size in bytes required for | 77 | The ``buffersize`` field is maximum buffer size in bytes required for |
| 78 | data transfer, set by the driver in order to inform application. | 78 | data transfer, set by the driver in order to inform application. |
| 79 | 79 | ||
| 80 | 80 | ||
| 81 | .. _v4l2-sdr-format: | 81 | .. c:type:: v4l2_sdr_format |
| 82 | |||
| 83 | .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| | ||
| 82 | 84 | ||
| 83 | .. flat-table:: struct v4l2_sdr_format | 85 | .. flat-table:: struct v4l2_sdr_format |
| 84 | :header-rows: 0 | 86 | :header-rows: 0 |
| 85 | :stub-columns: 0 | 87 | :stub-columns: 0 |
| 86 | :widths: 1 1 2 | 88 | :widths: 1 1 2 |
| 87 | 89 | ||
| 88 | 90 | * - __u32 | |
| 89 | - .. row 1 | 91 | - ``pixelformat`` |
| 90 | 92 | - The data format or type of compression, set by the application. | |
| 91 | - __u32 | 93 | This is a little endian |
| 92 | 94 | :ref:`four character code <v4l2-fourcc>`. V4L2 defines SDR | |
| 93 | - ``pixelformat`` | 95 | formats in :ref:`sdr-formats`. |
| 94 | 96 | * - __u32 | |
| 95 | - The data format or type of compression, set by the application. | 97 | - ``buffersize`` |
| 96 | This is a little endian | 98 | - Maximum size in bytes required for data. Value is set by the |
| 97 | :ref:`four character code <v4l2-fourcc>`. V4L2 defines SDR | 99 | driver. |
| 98 | formats in :ref:`sdr-formats`. | 100 | * - __u8 |
| 99 | 101 | - ``reserved[24]`` | |
| 100 | - .. row 2 | 102 | - This array is reserved for future extensions. Drivers and |
| 101 | 103 | applications must set it to zero. | |
| 102 | - __u32 | ||
| 103 | |||
| 104 | - ``buffersize`` | ||
| 105 | |||
| 106 | - Maximum size in bytes required for data. Value is set by the | ||
| 107 | driver. | ||
| 108 | |||
| 109 | - .. row 3 | ||
| 110 | |||
| 111 | - __u8 | ||
| 112 | |||
| 113 | - ``reserved[24]`` | ||
| 114 | |||
| 115 | - This array is reserved for future extensions. Drivers and | ||
| 116 | applications must set it to zero. | ||
| 117 | 104 | ||
| 118 | 105 | ||
| 119 | An SDR device may support :ref:`read/write <rw>` and/or streaming | 106 | An SDR device may support :ref:`read/write <rw>` and/or streaming |
| @@ -34,7 +34,7 @@ Querying Capabilities · 33 unmodified lines | |||
| 34 | Devices supporting the sliced VBI capturing or output API set the | 34 | Devices supporting the sliced VBI capturing or output API set the |
| 35 | ``V4L2_CAP_SLICED_VBI_CAPTURE`` or ``V4L2_CAP_SLICED_VBI_OUTPUT`` flag | 35 | ``V4L2_CAP_SLICED_VBI_CAPTURE`` or ``V4L2_CAP_SLICED_VBI_OUTPUT`` flag |
| 36 | respectively, in the ``capabilities`` field of struct | 36 | respectively, in the ``capabilities`` field of struct |
| 37 | :ref:`v4l2_capability <v4l2-capability>` returned by the | 37 | :c:type:`v4l2_capability` returned by the |
| 38 | :ref:`VIDIOC_QUERYCAP` ioctl. At least one of the | 38 | :ref:`VIDIOC_QUERYCAP` ioctl. At least one of the |
| 39 | read/write, streaming or asynchronous :ref:`I/O methods <io>` must be | 39 | read/write, streaming or asynchronous :ref:`I/O methods <io>` must be |
| 40 | supported. Sliced VBI devices may have a tuner or modulator. | 40 | supported. Sliced VBI devices may have a tuner or modulator. |
| @@ -67,17 +67,17 @@ line 16 the hardware may be able to look for a VPS or Teletext signal, · 26 unmodified lines | |||
| 67 | but not both at the same time. | 67 | but not both at the same time. |
| 68 | 68 | ||
| 69 | To determine the currently selected services applications set the | 69 | To determine the currently selected services applications set the |
| 70 | ``type`` field of struct :ref:`v4l2_format <v4l2-format>` to | 70 | ``type`` field of struct :c:type:`v4l2_format` to |
| 71 | ``V4L2_BUF_TYPE_SLICED_VBI_CAPTURE`` or | 71 | ``V4L2_BUF_TYPE_SLICED_VBI_CAPTURE`` or |
| 72 | ``V4L2_BUF_TYPE_SLICED_VBI_OUTPUT``, and the | 72 | ``V4L2_BUF_TYPE_SLICED_VBI_OUTPUT``, and the |
| 73 | :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` ioctl fills the ``fmt.sliced`` | 73 | :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` ioctl fills the ``fmt.sliced`` |
| 74 | member, a struct | 74 | member, a struct |
| 75 | :ref:`v4l2_sliced_vbi_format <v4l2-sliced-vbi-format>`. | 75 | :c:type:`v4l2_sliced_vbi_format`. |
| 76 | 76 | ||
| 77 | Applications can request different parameters by initializing or | 77 | Applications can request different parameters by initializing or |
| 78 | modifying the ``fmt.sliced`` member and calling the | 78 | modifying the ``fmt.sliced`` member and calling the |
| 79 | :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl with a pointer to the | 79 | :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl with a pointer to the |
| 80 | :ref:`struct v4l2_format <v4l2-format>` structure. | 80 | struct :c:type:`v4l2_format` structure. |
| 81 | 81 | ||
| 82 | The sliced VBI API is more complicated than the raw VBI API because the | 82 | The sliced VBI API is more complicated than the raw VBI API because the |
| 83 | hardware must be told which VBI service to expect on each scan line. Not | 83 | hardware must be told which VBI service to expect on each scan line. Not |
| @@ -100,149 +100,104 @@ which may return ``EBUSY`` can be the · 16 unmodified lines | |||
| 100 | :ref:`select() <func-select>` call. | 100 | :ref:`select() <func-select>` call. |
| 101 | 101 | ||
| 102 | 102 | ||
| 103 | .. _v4l2-sliced-vbi-format: | 103 | .. c:type:: v4l2_sliced_vbi_format |
| 104 | 104 | ||
| 105 | struct v4l2_sliced_vbi_format | 105 | struct v4l2_sliced_vbi_format |
| 106 | ----------------------------- | 106 | ----------------------------- |
| 107 | 107 | ||
| 108 | .. tabularcolumns:: |p{1.0cm}|p{4.5cm}|p{4.0cm}|p{4.0cm}|p{4.0cm}| | ||
| 109 | |||
| 110 | .. cssclass:: longtable | ||
| 111 | |||
| 108 | .. flat-table:: | 112 | .. flat-table:: |
| 109 | :header-rows: 0 | 113 | :header-rows: 0 |
| 110 | :stub-columns: 0 | 114 | :stub-columns: 0 |
| 111 | :widths: 3 3 2 2 2 | 115 | :widths: 3 3 2 2 2 |
| 112 | 116 | ||
| 113 | 117 | * - __u32 | |
| 114 | - .. row 1 | 118 | - ``service_set`` |
| 115 | 119 | - :cspan:`2` | |
| 116 | - __u32 | 120 | |
| 117 | 121 | If ``service_set`` is non-zero when passed with | |
| 118 | - ``service_set`` | 122 | :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` or |
| 119 | 123 | :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>`, the ``service_lines`` | |
| 120 | - :cspan:`2` | 124 | array will be filled by the driver according to the services |
| 121 | 125 | specified in this field. For example, if ``service_set`` is | |
| 122 | If ``service_set`` is non-zero when passed with | 126 | initialized with ``V4L2_SLICED_TELETEXT_B | V4L2_SLICED_WSS_625``, |
| 123 | :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` or | 127 | a driver for the cx25840 video decoder sets lines 7-22 of both |
| 124 | :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>`, the ``service_lines`` | 128 | fields [#f1]_ to ``V4L2_SLICED_TELETEXT_B`` and line 23 of the first |
| 125 | array will be filled by the driver according to the services | 129 | field to ``V4L2_SLICED_WSS_625``. If ``service_set`` is set to |
| 126 | specified in this field. For example, if ``service_set`` is | 130 | zero, then the values of ``service_lines`` will be used instead. |
| 127 | initialized with ``V4L2_SLICED_TELETEXT_B | V4L2_SLICED_WSS_625``, | 131 | |
| 128 | a driver for the cx25840 video decoder sets lines 7-22 of both | 132 | On return the driver sets this field to the union of all elements |
| 129 | fields [#f1]_ to ``V4L2_SLICED_TELETEXT_B`` and line 23 of the first | 133 | of the returned ``service_lines`` array. It may contain less |
| 130 | field to ``V4L2_SLICED_WSS_625``. If ``service_set`` is set to | 134 | services than requested, perhaps just one, if the hardware cannot |
| 131 | zero, then the values of ``service_lines`` will be used instead. | 135 | handle more services simultaneously. It may be empty (zero) if |
| 132 | 136 | none of the requested services are supported by the hardware. | |
| 133 | On return the driver sets this field to the union of all elements | 137 | * - __u16 |
| 134 | of the returned ``service_lines`` array. It may contain less | 138 | - ``service_lines``\ [2][24] |
| 135 | services than requested, perhaps just one, if the hardware cannot | 139 | - :cspan:`2` |
| 136 | handle more services simultaneously. It may be empty (zero) if | 140 | |
| 137 | none of the requested services are supported by the hardware. | 141 | Applications initialize this array with sets of data services the |
| 138 | 142 | driver shall look for or insert on the respective scan line. | |
| 139 | - .. row 2 | 143 | Subject to hardware capabilities drivers return the requested set, |
| 140 | 144 | a subset, which may be just a single service, or an empty set. | |
| 141 | - __u16 | 145 | When the hardware cannot handle multiple services on the same line |
| 142 | 146 | the driver shall choose one. No assumptions can be made on which | |
| 143 | - ``service_lines``\ [2][24] | 147 | service the driver chooses. |
| 144 | 148 | ||
| 145 | - :cspan:`2` | 149 | Data services are defined in :ref:`vbi-services2`. Array indices |
| 146 | 150 | map to ITU-R line numbers\ [#f2]_ as follows: | |
| 147 | Applications initialize this array with sets of data services the | 151 | * - |
| 148 | driver shall look for or insert on the respective scan line. | 152 | - |
| 149 | Subject to hardware capabilities drivers return the requested set, | 153 | - Element |
| 150 | a subset, which may be just a single service, or an empty set. | 154 | - 525 line systems |
| 151 | When the hardware cannot handle multiple services on the same line | 155 | - 625 line systems |
| 152 | the driver shall choose one. No assumptions can be made on which | 156 | * - |
| 153 | service the driver chooses. | 157 | - |
| 154 | 158 | - ``service_lines``\ [0][1] | |
| 155 | Data services are defined in :ref:`vbi-services2`. Array indices | 159 | - 1 |
| 156 | map to ITU-R line numbers (see also :ref:`vbi-525` and | 160 | - 1 |
| 157 | :ref:`vbi-625`) as follows: | 161 | * - |
| 158 | 162 | - | |
| 159 | - .. row 3 | 163 | - ``service_lines``\ [0][23] |
| 160 | 164 | - 23 | |
| 161 | - | 165 | - 23 |
| 162 | - | 166 | * - |
| 163 | - Element | 167 | - |
| 164 | 168 | - ``service_lines``\ [1][1] | |
| 165 | - 525 line systems | 169 | - 264 |
| 166 | 170 | - 314 | |
| 167 | - 625 line systems | 171 | * - |
| 168 | 172 | - | |
| 169 | - .. row 4 | 173 | - ``service_lines``\ [1][23] |
| 170 | 174 | - 286 | |
| 171 | - | 175 | - 336 |
| 172 | - | 176 | * - |
| 173 | - ``service_lines``\ [0][1] | 177 | - |
| 174 | 178 | - :cspan:`2` Drivers must set ``service_lines`` [0][0] and | |
| 175 | - 1 | 179 | ``service_lines``\ [1][0] to zero. The |
| 176 | 180 | ``V4L2_VBI_ITU_525_F1_START``, ``V4L2_VBI_ITU_525_F2_START``, | |
| 177 | - 1 | 181 | ``V4L2_VBI_ITU_625_F1_START`` and ``V4L2_VBI_ITU_625_F2_START`` |
| 178 | 182 | defines give the start line numbers for each field for each 525 or | |
| 179 | - .. row 5 | 183 | 625 line format as a convenience. Don't forget that ITU line |
| 180 | 184 | numbering starts at 1, not 0. | |
| 181 | - | 185 | * - __u32 |
| 182 | - | 186 | - ``io_size`` |
| 183 | - ``service_lines``\ [0][23] | 187 | - :cspan:`2` Maximum number of bytes passed by one |
| 184 | 188 | :ref:`read() <func-read>` or :ref:`write() <func-write>` call, | |
| 185 | - 23 | 189 | and the buffer size in bytes for the |
| 186 | 190 | :ref:`VIDIOC_QBUF` and | |
| 187 | - 23 | 191 | :ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl. Drivers set this field |
| 188 | 192 | to the size of struct | |
| 189 | - .. row 6 | 193 | :c:type:`v4l2_sliced_vbi_data` times the |
| 190 | 194 | number of non-zero elements in the returned ``service_lines`` | |
| 191 | - | 195 | array (that is the number of lines potentially carrying data). |
| 192 | - | 196 | * - __u32 |
| 193 | - ``service_lines``\ [1][1] | 197 | - ``reserved``\ [2] |
| 194 | 198 | - :cspan:`2` This array is reserved for future extensions. | |
| 195 | - 264 | 199 | |
| 196 | 200 | Applications and drivers must set it to zero. | |
| 197 | - 314 | ||
| 198 | |||
| 199 | - .. row 7 | ||
| 200 | |||
| 201 | - | ||
| 202 | - | ||
| 203 | - ``service_lines``\ [1][23] | ||
| 204 | |||
| 205 | - 286 | ||
| 206 | |||
| 207 | - 336 | ||
| 208 | |||
| 209 | - .. row 8 | ||
| 210 | |||
| 211 | - | ||
| 212 | - | ||
| 213 | - :cspan:`2` Drivers must set ``service_lines`` [0][0] and | ||
| 214 | ``service_lines``\ [1][0] to zero. The | ||
| 215 | ``V4L2_VBI_ITU_525_F1_START``, ``V4L2_VBI_ITU_525_F2_START``, | ||
| 216 | ``V4L2_VBI_ITU_625_F1_START`` and ``V4L2_VBI_ITU_625_F2_START`` | ||
| 217 | defines give the start line numbers for each field for each 525 or | ||
| 218 | 625 line format as a convenience. Don't forget that ITU line | ||
| 219 | numbering starts at 1, not 0. | ||
| 220 | |||
| 221 | - .. row 9 | ||
| 222 | |||
| 223 | - __u32 | ||
| 224 | |||
| 225 | - ``io_size`` | ||
| 226 | |||
| 227 | - :cspan:`2` Maximum number of bytes passed by one | ||
| 228 | :ref:`read() <func-read>` or :ref:`write() <func-write>` call, | ||
| 229 | and the buffer size in bytes for the | ||
| 230 | :ref:`VIDIOC_QBUF` and | ||
| 231 | :ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl. Drivers set this field | ||
| 232 | to the size of struct | ||
| 233 | :ref:`v4l2_sliced_vbi_data <v4l2-sliced-vbi-data>` times the | ||
| 234 | number of non-zero elements in the returned ``service_lines`` | ||
| 235 | array (that is the number of lines potentially carrying data). | ||
| 236 | |||
| 237 | - .. row 10 | ||
| 238 | |||
| 239 | - __u32 | ||
| 240 | |||
| 241 | - ``reserved``\ [2] | ||
| 242 | |||
| 243 | - :cspan:`2` This array is reserved for future extensions. | ||
| 244 | Applications and drivers must set it to zero. | ||
| 245 | |||
| 246 | 201 | ||
| 247 | 202 | ||
| 248 | .. _vbi-services2: | 203 | .. _vbi-services2: |
| @@ -250,96 +205,65 @@ struct v4l2_sliced_vbi_format · 1 unmodified line | |||
| 250 | Sliced VBI services | 205 | Sliced VBI services |
| 251 | ------------------- | 206 | ------------------- |
| 252 | 207 | ||
| 208 | .. raw:: latex | ||
| 209 | |||
| 210 | \begin{adjustbox}{width=\columnwidth} | ||
| 211 | |||
| 212 | .. tabularcolumns:: |p{5.0cm}|p{1.4cm}|p{3.0cm}|p{2.5cm}|p{9.0cm}| | ||
| 213 | |||
| 253 | .. flat-table:: | 214 | .. flat-table:: |
| 254 | :header-rows: 1 | 215 | :header-rows: 1 |
| 255 | :stub-columns: 0 | 216 | :stub-columns: 0 |
| 256 | :widths: 2 1 1 2 2 | 217 | :widths: 2 1 1 2 2 |
| 257 | 218 | ||
| 258 | 219 | * - Symbol | |
| 259 | - .. row 1 | 220 | - Value |
| 260 | 221 | - Reference | |
| 261 | - Symbol | 222 | - Lines, usually |
| 262 | 223 | - Payload | |
| 263 | - Value | 224 | * - ``V4L2_SLICED_TELETEXT_B`` (Teletext System B) |
| 264 | 225 | - 0x0001 | |
| 265 | - Reference | 226 | - :ref:`ets300706`, |
| 266 | 227 | ||
| 267 | - Lines, usually | 228 | :ref:`itu653` |
| 268 | 229 | - PAL/SECAM line 7-22, 320-335 (second field 7-22) | |
| 269 | - Payload | 230 | - Last 42 of the 45 byte Teletext packet, that is without clock |
| 270 | 231 | run-in and framing code, lsb first transmitted. | |
| 271 | - .. row 2 | 232 | * - ``V4L2_SLICED_VPS`` |
| 272 | 233 | - 0x0400 | |
| 273 | - ``V4L2_SLICED_TELETEXT_B`` (Teletext System B) | 234 | - :ref:`ets300231` |
| 274 | 235 | - PAL line 16 | |
| 275 | - 0x0001 | 236 | - Byte number 3 to 15 according to Figure 9 of ETS 300 231, lsb |
| 276 | 237 | first transmitted. | |
| 277 | - :ref:`ets300706`, :ref:`itu653` | 238 | * - ``V4L2_SLICED_CAPTION_525`` |
| 278 | 239 | - 0x1000 | |
| 279 | - PAL/SECAM line 7-22, 320-335 (second field 7-22) | 240 | - :ref:`cea608` |
| 280 | 241 | - NTSC line 21, 284 (second field 21) | |
| 281 | - Last 42 of the 45 byte Teletext packet, that is without clock | 242 | - Two bytes in transmission order, including parity bit, lsb first |
| 282 | run-in and framing code, lsb first transmitted. | 243 | transmitted. |
| 283 | 244 | * - ``V4L2_SLICED_WSS_625`` | |
| 284 | - .. row 3 | 245 | - 0x4000 |
| 285 | 246 | - :ref:`itu1119`, | |
| 286 | - ``V4L2_SLICED_VPS`` | 247 | |
| 287 | 248 | :ref:`en300294` | |
| 288 | - 0x0400 | 249 | - PAL/SECAM line 23 |
| 289 | 250 | - | |
| 290 | - :ref:`ets300231` | 251 | |
| 291 | 252 | :: | |
| 292 | - PAL line 16 | 253 | |
| 293 | 254 | Byte 0 1 | |
| 294 | - Byte number 3 to 15 according to Figure 9 of ETS 300 231, lsb | 255 | msb lsb msb lsb |
| 295 | first transmitted. | 256 | Bit 7 6 5 4 3 2 1 0 x x 13 12 11 10 9 |
| 296 | 257 | * - ``V4L2_SLICED_VBI_525`` | |
| 297 | - .. row 4 | 258 | - 0x1000 |
| 298 | 259 | - :cspan:`2` Set of services applicable to 525 line systems. | |
| 299 | - ``V4L2_SLICED_CAPTION_525`` | 260 | * - ``V4L2_SLICED_VBI_625`` |
| 300 | 261 | - 0x4401 | |
| 301 | - 0x1000 | 262 | - :cspan:`2` Set of services applicable to 625 line systems. |
| 302 | 263 | ||
| 303 | - :ref:`cea608` | 264 | .. raw:: latex |
| 304 | 265 | ||
| 305 | - NTSC line 21, 284 (second field 21) | 266 | \end{adjustbox}\newline\newline |
| 306 | |||
| 307 | - Two bytes in transmission order, including parity bit, lsb first | ||
| 308 | transmitted. | ||
| 309 | |||
| 310 | - .. row 5 | ||
| 311 | |||
| 312 | - ``V4L2_SLICED_WSS_625`` | ||
| 313 | |||
| 314 | - 0x4000 | ||
| 315 | |||
| 316 | - :ref:`itu1119`, :ref:`en300294` | ||
| 317 | |||
| 318 | - PAL/SECAM line 23 | ||
| 319 | |||
| 320 | - | ||
| 321 | |||
| 322 | :: | ||
| 323 | |||
| 324 | Byte 0 1 | ||
| 325 | msb lsb msb lsb | ||
| 326 | Bit 7 6 5 4 3 2 1 0 x x 13 12 11 10 9 | ||
| 327 | |||
| 328 | - .. row 6 | ||
| 329 | |||
| 330 | - ``V4L2_SLICED_VBI_525`` | ||
| 331 | |||
| 332 | - 0x1000 | ||
| 333 | |||
| 334 | - :cspan:`2` Set of services applicable to 525 line systems. | ||
| 335 | |||
| 336 | - .. row 7 | ||
| 337 | |||
| 338 | - ``V4L2_SLICED_VBI_625`` | ||
| 339 | |||
| 340 | - 0x4401 | ||
| 341 | |||
| 342 | - :cspan:`2` Set of services applicable to 625 line systems. | ||
| 343 | 267 | ||
| 344 | 268 | ||
| 345 | Drivers may return an ``EINVAL`` error code when applications attempt to | 269 | Drivers may return an ``EINVAL`` error code when applications attempt to |
| @@ -359,80 +283,57 @@ Reading and writing sliced VBI data · 13 unmodified lines | |||
| 359 | 283 | ||
| 360 | A single :ref:`read() <func-read>` or :ref:`write() <func-write>` | 284 | A single :ref:`read() <func-read>` or :ref:`write() <func-write>` |
| 361 | call must pass all data belonging to one video frame. That is an array | 285 | call must pass all data belonging to one video frame. That is an array |
| 362 | of :ref:`struct v4l2_sliced_vbi_data <v4l2-sliced-vbi-data>` structures with one or | 286 | of struct :c:type:`v4l2_sliced_vbi_data` structures with one or |
| 363 | more elements and a total size not exceeding ``io_size`` bytes. Likewise | 287 | more elements and a total size not exceeding ``io_size`` bytes. Likewise |
| 364 | in streaming I/O mode one buffer of ``io_size`` bytes must contain data | 288 | in streaming I/O mode one buffer of ``io_size`` bytes must contain data |
| 365 | of one video frame. The ``id`` of unused | 289 | of one video frame. The ``id`` of unused |
| 366 | :ref:`struct v4l2_sliced_vbi_data <v4l2-sliced-vbi-data>` elements must be zero. | 290 | struct :c:type:`v4l2_sliced_vbi_data` elements must be zero. |
| 367 | 291 | ||
| 368 | 292 | ||
| 369 | .. _v4l2-sliced-vbi-data: | 293 | .. c:type:: v4l2_sliced_vbi_data |
| 370 | 294 | ||
| 371 | struct v4l2_sliced_vbi_data | 295 | struct v4l2_sliced_vbi_data |
| 372 | --------------------------- | 296 | --------------------------- |
| 373 | 297 | ||
| 298 | .. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}| | ||
| 299 | |||
| 374 | .. flat-table:: | 300 | .. flat-table:: |
| 375 | :header-rows: 0 | 301 | :header-rows: 0 |
| 376 | :stub-columns: 0 | 302 | :stub-columns: 0 |
| 377 | :widths: 3 1 4 | 303 | :widths: 3 1 4 |
| 378 | 304 | ||
| 379 | 305 | * - __u32 | |
| 380 | - .. row 1 | 306 | - ``id`` |
| 381 | 307 | - A flag from :ref:`vbi-services` identifying the type of data in | |
| 382 | - __u32 | 308 | this packet. Only a single bit must be set. When the ``id`` of a |
| 383 | 309 | captured packet is zero, the packet is empty and the contents of | |
| 384 | - ``id`` | 310 | other fields are undefined. Applications shall ignore empty |
| 385 | 311 | packets. When the ``id`` of a packet for output is zero the | |
| 386 | - A flag from :ref:`vbi-services` identifying the type of data in | 312 | contents of the ``data`` field are undefined and the driver must |
| 387 | this packet. Only a single bit must be set. When the ``id`` of a | 313 | no longer insert data on the requested ``field`` and ``line``. |
| 388 | captured packet is zero, the packet is empty and the contents of | 314 | * - __u32 |
| 389 | other fields are undefined. Applications shall ignore empty | 315 | - ``field`` |
| 390 | packets. When the ``id`` of a packet for output is zero the | 316 | - The video field number this data has been captured from, or shall |
| 391 | contents of the ``data`` field are undefined and the driver must | 317 | be inserted at. ``0`` for the first field, ``1`` for the second |
| 392 | no longer insert data on the requested ``field`` and ``line``. | 318 | field. |
| 393 | 319 | * - __u32 | |
| 394 | - .. row 2 | 320 | - ``line`` |
| 395 | 321 | - The field (as opposed to frame) line number this data has been | |
| 396 | - __u32 | 322 | captured from, or shall be inserted at. See :ref:`vbi-525` and |
| 397 | 323 | :ref:`vbi-625` for valid values. Sliced VBI capture devices can | |
| 398 | - ``field`` | 324 | set the line number of all packets to ``0`` if the hardware cannot |
| 399 | 325 | reliably identify scan lines. The field number must always be | |
| 400 | - The video field number this data has been captured from, or shall | 326 | valid. |
| 401 | be inserted at. ``0`` for the first field, ``1`` for the second | 327 | * - __u32 |
| 402 | field. | 328 | - ``reserved`` |
| 403 | 329 | - This field is reserved for future extensions. Applications and | |
| 404 | - .. row 3 | 330 | drivers must set it to zero. |
| 405 | 331 | * - __u8 | |
| 406 | - __u32 | 332 | - ``data``\ [48] |
| 407 | 333 | - The packet payload. See :ref:`vbi-services` for the contents and | |
| 408 | - ``line`` | 334 | number of bytes passed for each data type. The contents of padding |
| 409 | 335 | bytes at the end of this array are undefined, drivers and | |
| 410 | - The field (as opposed to frame) line number this data has been | 336 | applications shall ignore them. |
| 411 | captured from, or shall be inserted at. See :ref:`vbi-525` and | ||
| 412 | :ref:`vbi-625` for valid values. Sliced VBI capture devices can | ||
| 413 | set the line number of all packets to ``0`` if the hardware cannot | ||
| 414 | reliably identify scan lines. The field number must always be | ||
| 415 | valid. | ||
| 416 | |||
| 417 | - .. row 4 | ||
| 418 | |||
| 419 | - __u32 | ||
| 420 | |||
| 421 | - ``reserved`` | ||
| 422 | |||
| 423 | - This field is reserved for future extensions. Applications and | ||
| 424 | drivers must set it to zero. | ||
| 425 | |||
| 426 | - .. row 5 | ||
| 427 | |||
| 428 | - __u8 | ||
| 429 | |||
| 430 | - ``data``\ [48] | ||
| 431 | |||
| 432 | - The packet payload. See :ref:`vbi-services` for the contents and | ||
| 433 | number of bytes passed for each data type. The contents of padding | ||
| 434 | bytes at the end of this array are undefined, drivers and | ||
| 435 | applications shall ignore them. | ||
| 436 | 337 | ||
| 437 | 338 | ||
| 438 | Packets are always passed in ascending line number order, without | 339 | Packets are always passed in ascending line number order, without |
| @@ -542,7 +443,7 @@ refer to the MPEG-2 specifications for details on those packet headers.) · 103 unmodified lines | |||
| 542 | 443 | ||
| 543 | The payload of the MPEG-2 *Private Stream 1 PES* packets that contain | 444 | The payload of the MPEG-2 *Private Stream 1 PES* packets that contain |
| 544 | sliced VBI data is specified by struct | 445 | sliced VBI data is specified by struct |
| 545 | :ref:`v4l2_mpeg_vbi_fmt_ivtv <v4l2-mpeg-vbi-fmt-ivtv>`. The | 446 | :c:type:`v4l2_mpeg_vbi_fmt_ivtv`. The |
| 546 | payload is variable length, depending on the actual number of lines of | 447 | payload is variable length, depending on the actual number of lines of |
| 547 | sliced VBI data present in a video frame. The payload may be padded at | 448 | sliced VBI data present in a video frame. The payload may be padded at |
| 548 | the end with unspecified fill bytes to align the end of the payload to a | 449 | the end with unspecified fill bytes to align the end of the payload to a |
| @@ -551,58 +452,41 @@ with 18 lines/field with 43 bytes of data/line and a 4 byte magic · 2 unmodified lines | |||
| 551 | number). | 452 | number). |
| 552 | 453 | ||
| 553 | 454 | ||
| 554 | .. _v4l2-mpeg-vbi-fmt-ivtv: | 455 | .. c:type:: v4l2_mpeg_vbi_fmt_ivtv |
| 555 | 456 | ||
| 556 | struct v4l2_mpeg_vbi_fmt_ivtv | 457 | struct v4l2_mpeg_vbi_fmt_ivtv |
| 557 | ----------------------------- | 458 | ----------------------------- |
| 558 | 459 | ||
| 460 | .. tabularcolumns:: |p{1.0cm}|p{3.5cm}|p{1.0cm}|p{11.5cm}| | ||
| 461 | |||
| 559 | .. flat-table:: | 462 | .. flat-table:: |
| 560 | :header-rows: 0 | 463 | :header-rows: 0 |
| 561 | :stub-columns: 0 | 464 | :stub-columns: 0 |
| 562 | :widths: 1 1 1 2 | 465 | :widths: 1 1 1 2 |
| 563 | 466 | ||
| 564 | 467 | * - __u8 | |
| 565 | - .. row 1 | 468 | - ``magic``\ [4] |
| 566 | 469 | - | |
| 567 | - __u8 | 470 | - A "magic" constant from :ref:`v4l2-mpeg-vbi-fmt-ivtv-magic` that |
| 568 | 471 | indicates this is a valid sliced VBI data payload and also | |
| 569 | - ``magic``\ [4] | 472 | indicates which member of the anonymous union, ``itv0`` or |
| 570 | 473 | ``ITV0``, to use for the payload data. | |
| 571 | - | 474 | * - union |
| 572 | - A "magic" constant from :ref:`v4l2-mpeg-vbi-fmt-ivtv-magic` that | 475 | - (anonymous) |
| 573 | indicates this is a valid sliced VBI data payload and also | 476 | * - |
| 574 | indicates which member of the anonymous union, ``itv0`` or | 477 | - struct :c:type:`v4l2_mpeg_vbi_itv0` |
| 575 | ``ITV0``, to use for the payload data. | 478 | - ``itv0`` |
| 576 | 479 | - The primary form of the sliced VBI data payload that contains | |
| 577 | - .. row 2 | 480 | anywhere from 1 to 35 lines of sliced VBI data. Line masks are |
| 578 | 481 | provided in this form of the payload indicating which VBI lines | |
| 579 | - union | 482 | are provided. |
| 580 | 483 | * - | |
| 581 | - (anonymous) | 484 | - struct :ref:`v4l2_mpeg_vbi_ITV0 <v4l2-mpeg-vbi-itv0-1>` |
| 582 | 485 | - ``ITV0`` | |
| 583 | - .. row 3 | 486 | - An alternate form of the sliced VBI data payload used when 36 |
| 584 | 487 | lines of sliced VBI data are present. No line masks are provided | |
| 585 | - | 488 | in this form of the payload; all valid line mask bits are |
| 586 | - struct :ref:`v4l2_mpeg_vbi_itv0 <v4l2-mpeg-vbi-itv0>` | 489 | implcitly set. |
| 587 | |||
| 588 | - ``itv0`` | ||
| 589 | |||
| 590 | - The primary form of the sliced VBI data payload that contains | ||
| 591 | anywhere from 1 to 35 lines of sliced VBI data. Line masks are | ||
| 592 | provided in this form of the payload indicating which VBI lines | ||
| 593 | are provided. | ||
| 594 | |||
| 595 | - .. row 4 | ||
| 596 | |||
| 597 | - | ||
| 598 | - struct :ref:`v4l2_mpeg_vbi_ITV0 <v4l2-mpeg-vbi-itv0-1>` | ||
| 599 | |||
| 600 | - ``ITV0`` | ||
| 601 | |||
| 602 | - An alternate form of the sliced VBI data payload used when 36 | ||
| 603 | lines of sliced VBI data are present. No line masks are provided | ||
| 604 | in this form of the payload; all valid line mask bits are | ||
| 605 | implcitly set. | ||
| 606 | 490 | ||
| 607 | 491 | ||
| 608 | 492 | ||
| @@ -611,96 +495,77 @@ struct v4l2_mpeg_vbi_fmt_ivtv · 2 unmodified lines | |||
| 611 | Magic Constants for struct v4l2_mpeg_vbi_fmt_ivtv magic field | 495 | Magic Constants for struct v4l2_mpeg_vbi_fmt_ivtv magic field |
| 612 | ------------------------------------------------------------- | 496 | ------------------------------------------------------------- |
| 613 | 497 | ||
| 498 | .. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}| | ||
| 499 | |||
| 614 | .. flat-table:: | 500 | .. flat-table:: |
| 615 | :header-rows: 1 | 501 | :header-rows: 1 |
| 616 | :stub-columns: 0 | 502 | :stub-columns: 0 |
| 617 | :widths: 3 1 4 | 503 | :widths: 3 1 4 |
| 618 | 504 | ||
| 505 | * - Defined Symbol | ||
| 506 | - Value | ||
| 507 | - Description | ||
| 508 | * - ``V4L2_MPEG_VBI_IVTV_MAGIC0`` | ||
| 509 | - "itv0" | ||
| 510 | - Indicates the ``itv0`` member of the union in struct | ||
| 511 | :c:type:`v4l2_mpeg_vbi_fmt_ivtv` is | ||
| 512 | valid. | ||
| 513 | * - ``V4L2_MPEG_VBI_IVTV_MAGIC1`` | ||
| 514 | - "ITV0" | ||
| 515 | - Indicates the ``ITV0`` member of the union in struct | ||
| 516 | :c:type:`v4l2_mpeg_vbi_fmt_ivtv` is | ||
| 517 | valid and that 36 lines of sliced VBI data are present. | ||
| 619 | 518 | ||
| 620 | - .. row 1 | ||
| 621 | |||
| 622 | - Defined Symbol | ||
| 623 | |||
| 624 | - Value | ||
| 625 | 519 | ||
| 626 | - Description | ||
| 627 | 520 | ||
| 628 | - .. row 2 | 521 | .. c:type:: v4l2_mpeg_vbi_itv0 |
| 629 | 522 | ||
| 630 | - ``V4L2_MPEG_VBI_IVTV_MAGIC0`` | 523 | .. c:type:: v4l2_mpeg_vbi_ITV0 |
| 631 | 524 | ||
| 632 | - "itv0" | 525 | structs v4l2_mpeg_vbi_itv0 and v4l2_mpeg_vbi_ITV0 |
| 526 | ------------------------------------------------- | ||
| 633 | 527 | ||
| 634 | - Indicates the ``itv0`` member of the union in struct | 528 | .. tabularcolumns:: |p{4.4cm}|p{2.4cm}|p{10.7cm}| |
| 635 | :ref:`v4l2_mpeg_vbi_fmt_ivtv <v4l2-mpeg-vbi-fmt-ivtv>` is | ||
| 636 | valid. | ||
| 637 | |||
| 638 | - .. row 3 | ||
| 639 | |||
| 640 | - ``V4L2_MPEG_VBI_IVTV_MAGIC1`` | ||
| 641 | |||
| 642 | - "ITV0" | ||
| 643 | |||
| 644 | - Indicates the ``ITV0`` member of the union in struct | ||
| 645 | :ref:`v4l2_mpeg_vbi_fmt_ivtv <v4l2-mpeg-vbi-fmt-ivtv>` is | ||
| 646 | valid and that 36 lines of sliced VBI data are present. | ||
| 647 | |||
| 648 | |||
| 649 | |||
| 650 | .. _v4l2-mpeg-vbi-itv0: | ||
| 651 | |||
| 652 | struct v4l2_mpeg_vbi_itv0 | ||
| 653 | ------------------------- | ||
| 654 | 529 | ||
| 655 | .. flat-table:: | 530 | .. flat-table:: |
| 656 | :header-rows: 0 | 531 | :header-rows: 0 |
| 657 | :stub-columns: 0 | 532 | :stub-columns: 0 |
| 658 | :widths: 1 1 2 | 533 | :widths: 1 1 2 |
| 659 | 534 | ||
| 660 | 535 | * - __le32 | |
| 661 | - .. row 1 | 536 | - ``linemask``\ [2] |
| 662 | 537 | - Bitmasks indicating the VBI service lines present. These | |
| 663 | - __le32 | 538 | ``linemask`` values are stored in little endian byte order in the |
| 664 | 539 | MPEG stream. Some reference ``linemask`` bit positions with their | |
| 665 | - ``linemask``\ [2] | 540 | corresponding VBI line number and video field are given below. |
| 666 | 541 | b\ :sub:`0` indicates the least significant bit of a ``linemask`` | |
| 667 | - Bitmasks indicating the VBI service lines present. These | 542 | value: |
| 668 | ``linemask`` values are stored in little endian byte order in the | 543 | |
| 669 | MPEG stream. Some reference ``linemask`` bit positions with their | 544 | |
| 670 | corresponding VBI line number and video field are given below. | 545 | |
| 671 | b\ :sub:`0` indicates the least significant bit of a ``linemask`` | 546 | :: |
| 672 | value: | 547 | |
| 673 | 548 | linemask[0] b0: line 6 first field | |
| 674 | 549 | linemask[0] b17: line 23 first field | |
| 675 | 550 | linemask[0] b18: line 6 second field | |
| 676 | :: | 551 | linemask[0] b31: line 19 second field |
| 677 | 552 | linemask[1] b0: line 20 second field | |
| 678 | linemask[0] b0: line 6 first field | 553 | linemask[1] b3: line 23 second field |
| 679 | linemask[0] b17: line 23 first field | 554 | linemask[1] b4-b31: unused and set to 0 |
| 680 | linemask[0] b18: line 6 second field | 555 | * - struct |
| 681 | linemask[0] b31: line 19 second field | 556 | :c:type:`v4l2_mpeg_vbi_itv0_line` |
| 682 | linemask[1] b0: line 20 second field | 557 | - ``line``\ [35] |
| 683 | linemask[1] b3: line 23 second field | 558 | - This is a variable length array that holds from 1 to 35 lines of |
| 684 | linemask[1] b4-b31: unused and set to 0 | 559 | sliced VBI data. The sliced VBI data lines present correspond to |
| 685 | 560 | the bits set in the ``linemask`` array, starting from b\ :sub:`0` | |
| 686 | - .. row 2 | 561 | of ``linemask``\ [0] up through b\ :sub:`31` of ``linemask``\ [0], |
| 687 | 562 | and from b\ :sub:`0` of ``linemask``\ [1] up through b\ :sub:`3` of | |
| 688 | - struct | 563 | ``linemask``\ [1]. ``line``\ [0] corresponds to the first bit |
| 689 | :ref:`v4l2_mpeg_vbi_itv0_line <v4l2-mpeg-vbi-itv0-line>` | 564 | found set in the ``linemask`` array, ``line``\ [1] corresponds to |
| 690 | 565 | the second bit found set in the ``linemask`` array, etc. If no | |
| 691 | - ``line``\ [35] | 566 | ``linemask`` array bits are set, then ``line``\ [0] may contain |
| 692 | 567 | one line of unspecified data that should be ignored by | |
| 693 | - This is a variable length array that holds from 1 to 35 lines of | 568 | applications. |
| 694 | sliced VBI data. The sliced VBI data lines present correspond to | ||
| 695 | the bits set in the ``linemask`` array, starting from b\ :sub:`0` | ||
| 696 | of ``linemask``\ [0] up through b\ :sub:`31` of ``linemask``\ [0], | ||
| 697 | and from b\ :sub:`0` of ``linemask``\ [1] up through b\ :sub:`3` of | ||
| 698 | ``linemask``\ [1]. ``line``\ [0] corresponds to the first bit | ||
| 699 | found set in the ``linemask`` array, ``line``\ [1] corresponds to | ||
| 700 | the second bit found set in the ``linemask`` array, etc. If no | ||
| 701 | ``linemask`` array bits are set, then ``line``\ [0] may contain | ||
| 702 | one line of unspecified data that should be ignored by | ||
| 703 | applications. | ||
| 704 | 569 | ||
| 705 | 570 | ||
| 706 | 571 | ||
| @@ -709,54 +574,43 @@ struct v4l2_mpeg_vbi_itv0 · 2 unmodified lines | |||
| 709 | struct v4l2_mpeg_vbi_ITV0 | 574 | struct v4l2_mpeg_vbi_ITV0 |
| 710 | ------------------------- | 575 | ------------------------- |
| 711 | 576 | ||
| 577 | .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| | ||
| 578 | |||
| 712 | .. flat-table:: | 579 | .. flat-table:: |
| 713 | :header-rows: 0 | 580 | :header-rows: 0 |
| 714 | :stub-columns: 0 | 581 | :stub-columns: 0 |
| 715 | :widths: 1 1 2 | 582 | :widths: 1 1 2 |
| 716 | 583 | ||
| 584 | * - struct | ||
| 585 | :c:type:`v4l2_mpeg_vbi_itv0_line` | ||
| 586 | - ``line``\ [36] | ||
| 587 | - A fixed length array of 36 lines of sliced VBI data. ``line``\ [0] | ||
| 588 | through ``line``\ [17] correspond to lines 6 through 23 of the | ||
| 589 | first field. ``line``\ [18] through ``line``\ [35] corresponds to | ||
| 590 | lines 6 through 23 of the second field. | ||
| 717 | 591 | ||
| 718 | - .. row 1 | ||
| 719 | |||
| 720 | - struct | ||
| 721 | :ref:`v4l2_mpeg_vbi_itv0_line <v4l2-mpeg-vbi-itv0-line>` | ||
| 722 | 592 | ||
| 723 | - ``line``\ [36] | ||
| 724 | 593 | ||
| 725 | - A fixed length array of 36 lines of sliced VBI data. ``line``\ [0] | 594 | .. c:type:: v4l2_mpeg_vbi_itv0_line |
| 726 | through ``line``\ [17] correspond to lines 6 through 23 of the | ||
| 727 | first field. ``line``\ [18] through ``line``\ [35] corresponds to | ||
| 728 | lines 6 through 23 of the second field. | ||
| 729 | |||
| 730 | |||
| 731 | |||
| 732 | .. _v4l2-mpeg-vbi-itv0-line: | ||
| 733 | 595 | ||
| 734 | struct v4l2_mpeg_vbi_itv0_line | 596 | struct v4l2_mpeg_vbi_itv0_line |
| 735 | ------------------------------ | 597 | ------------------------------ |
| 736 | 598 | ||
| 599 | .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| | ||
| 600 | |||
| 737 | .. flat-table:: | 601 | .. flat-table:: |
| 738 | :header-rows: 0 | 602 | :header-rows: 0 |
| 739 | :stub-columns: 0 | 603 | :stub-columns: 0 |
| 740 | :widths: 1 1 2 | 604 | :widths: 1 1 2 |
| 741 | 605 | ||
| 742 | 606 | * - __u8 | |
| 743 | - .. row 1 | 607 | - ``id`` |
| 744 | 608 | - A line identifier value from | |
| 745 | - __u8 | 609 | :ref:`ITV0-Line-Identifier-Constants` that indicates the type of |
| 746 | 610 | sliced VBI data stored on this line. | |
| 747 | - ``id`` | 611 | * - __u8 |
| 748 | 612 | - ``data``\ [42] | |
| 749 | - A line identifier value from | 613 | - The sliced VBI data for the line. |
| 750 | :ref:`ITV0-Line-Identifier-Constants` that indicates the type of | ||
| 751 | sliced VBI data stored on this line. | ||
| 752 | |||
| 753 | - .. row 2 | ||
| 754 | |||
| 755 | - __u8 | ||
| 756 | |||
| 757 | - ``data``\ [42] | ||
| 758 | |||
| 759 | - The sliced VBI data for the line. | ||
| 760 | 614 | ||
| 761 | 615 | ||
| 762 | 616 | ||
| @@ -765,58 +619,38 @@ struct v4l2_mpeg_vbi_itv0_line · 2 unmodified lines | |||
| 765 | Line Identifiers for struct v4l2_mpeg_vbi_itv0_line id field | 619 | Line Identifiers for struct v4l2_mpeg_vbi_itv0_line id field |
| 766 | ------------------------------------------------------------ | 620 | ------------------------------------------------------------ |
| 767 | 621 | ||
| 622 | .. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}| | ||
| 623 | |||
| 768 | .. flat-table:: | 624 | .. flat-table:: |
| 769 | :header-rows: 1 | 625 | :header-rows: 1 |
| 770 | :stub-columns: 0 | 626 | :stub-columns: 0 |
| 771 | :widths: 3 1 4 | 627 | :widths: 3 1 4 |
| 772 | 628 | ||
| 773 | 629 | * - Defined Symbol | |
| 774 | - .. row 1 | 630 | - Value |
| 775 | 631 | - Description | |
| 776 | - Defined Symbol | 632 | * - ``V4L2_MPEG_VBI_IVTV_TELETEXT_B`` |
| 777 | 633 | - 1 | |
| 778 | - Value | 634 | - Refer to :ref:`Sliced VBI services <vbi-services2>` for a |
| 779 | 635 | description of the line payload. | |
| 780 | - Description | 636 | * - ``V4L2_MPEG_VBI_IVTV_CAPTION_525`` |
| 781 | 637 | - 4 | |
| 782 | - .. row 2 | 638 | - Refer to :ref:`Sliced VBI services <vbi-services2>` for a |
| 783 | 639 | description of the line payload. | |
| 784 | - ``V4L2_MPEG_VBI_IVTV_TELETEXT_B`` | 640 | * - ``V4L2_MPEG_VBI_IVTV_WSS_625`` |
| 785 | 641 | - 5 | |
| 786 | - 1 | 642 | - Refer to :ref:`Sliced VBI services <vbi-services2>` for a |
| 787 | 643 | description of the line payload. | |
| 788 | - Refer to :ref:`Sliced VBI services <vbi-services2>` for a | 644 | * - ``V4L2_MPEG_VBI_IVTV_VPS`` |
| 789 | description of the line payload. | 645 | - 7 |
| 790 | 646 | - Refer to :ref:`Sliced VBI services <vbi-services2>` for a | |
| 791 | - .. row 3 | 647 | description of the line payload. |
| 792 | |||
| 793 | - ``V4L2_MPEG_VBI_IVTV_CAPTION_525`` | ||
| 794 | |||
| 795 | - 4 | ||
| 796 | |||
| 797 | - Refer to :ref:`Sliced VBI services <vbi-services2>` for a | ||
| 798 | description of the line payload. | ||
| 799 | |||
| 800 | - .. row 4 | ||
| 801 | |||
| 802 | - ``V4L2_MPEG_VBI_IVTV_WSS_625`` | ||
| 803 | |||
| 804 | - 5 | ||
| 805 | |||
| 806 | - Refer to :ref:`Sliced VBI services <vbi-services2>` for a | ||
| 807 | description of the line payload. | ||
| 808 | |||
| 809 | - .. row 5 | ||
| 810 | |||
| 811 | - ``V4L2_MPEG_VBI_IVTV_VPS`` | ||
| 812 | |||
| 813 | - 7 | ||
| 814 | |||
| 815 | - Refer to :ref:`Sliced VBI services <vbi-services2>` for a | ||
| 816 | description of the line payload. | ||
| 817 | 648 | ||
| 818 | 649 | ||
| 819 | 650 | ||
| 820 | .. [#f1] | 651 | .. [#f1] |
| 821 | According to :ref:`ETS 300 706 <ets300706>` lines 6-22 of the first | 652 | According to :ref:`ETS 300 706 <ets300706>` lines 6-22 of the first |
| 822 | field and lines 5-22 of the second field may carry Teletext data. | 653 | field and lines 5-22 of the second field may carry Teletext data. |
| 654 | |||
| 655 | .. [#f2] | ||
| 656 | See also :ref:`vbi-525` and :ref:`vbi-625`. | ||
| @@ -202,93 +202,58 @@ for the pipeline described in :ref:`pipeline-scaling` (table columns · 201 unmodified lines | |||
| 202 | list entity names and pad numbers). | 202 | list entity names and pad numbers). |
| 203 | 203 | ||
| 204 | 204 | ||
| 205 | .. raw:: latex | ||
| 206 | |||
| 207 | \begin{adjustbox}{width=\columnwidth} | ||
| 208 | |||
| 209 | .. tabularcolumns:: |p{4.5cm}|p{4.5cm}|p{4.5cm}|p{4.5cm}|p{4.5cm}|p{4.5cm}|p{4.5cm}| | ||
| 210 | |||
| 205 | .. _sample-pipeline-config: | 211 | .. _sample-pipeline-config: |
| 206 | 212 | ||
| 207 | .. flat-table:: Sample Pipeline Configuration | 213 | .. flat-table:: Sample Pipeline Configuration |
| 208 | :header-rows: 1 | 214 | :header-rows: 1 |
| 209 | :stub-columns: 0 | 215 | :stub-columns: 0 |
| 210 | 216 | :widths: 5 5 5 5 5 5 5 | |
| 211 | 217 | ||
| 212 | - .. row 1 | 218 | * - |
| 213 | 219 | - Sensor/0 format | |
| 214 | - | 220 | - Frontend/0 format |
| 215 | - Sensor/0 format | 221 | - Frontend/1 format |
| 216 | 222 | - Scaler/0 format | |
| 217 | - Frontend/0 format | 223 | - Scaler/0 compose selection rectangle |
| 218 | 224 | - Scaler/1 format | |
| 219 | - Frontend/1 format | 225 | * - Initial state |
| 220 | 226 | - 2048x1536/SGRBG8_1X8 | |
| 221 | - Scaler/0 format | 227 | - (default) |
| 222 | 228 | - (default) | |
| 223 | - Scaler/0 compose selection rectangle | 229 | - (default) |
| 224 | 230 | - (default) | |
| 225 | - Scaler/1 format | 231 | - (default) |
| 226 | 232 | * - Configure frontend sink format | |
| 227 | - .. row 2 | 233 | - 2048x1536/SGRBG8_1X8 |
| 228 | 234 | - *2048x1536/SGRBG8_1X8* | |
| 229 | - Initial state | 235 | - *2046x1534/SGRBG8_1X8* |
| 230 | 236 | - (default) | |
| 231 | - 2048x1536/SGRBG8_1X8 | 237 | - (default) |
| 232 | 238 | - (default) | |
| 233 | - (default) | 239 | * - Configure scaler sink format |
| 234 | 240 | - 2048x1536/SGRBG8_1X8 | |
| 235 | - (default) | 241 | - 2048x1536/SGRBG8_1X8 |
| 236 | 242 | - 2046x1534/SGRBG8_1X8 | |
| 237 | - (default) | 243 | - *2046x1534/SGRBG8_1X8* |
| 238 | 244 | - *0,0/2046x1534* | |
| 239 | - (default) | 245 | - *2046x1534/SGRBG8_1X8* |
| 240 | 246 | * - Configure scaler sink compose selection | |
| 241 | - (default) | 247 | - 2048x1536/SGRBG8_1X8 |
| 242 | 248 | - 2048x1536/SGRBG8_1X8 | |
| 243 | - .. row 3 | 249 | - 2046x1534/SGRBG8_1X8 |
| 244 | 250 | - 2046x1534/SGRBG8_1X8 | |
| 245 | - Configure frontend sink format | 251 | - *0,0/1280x960* |
| 246 | 252 | - *1280x960/SGRBG8_1X8* | |
| 247 | - 2048x1536/SGRBG8_1X8 | 253 | |
| 248 | 254 | .. raw:: latex | |
| 249 | - *2048x1536/SGRBG8_1X8* | 255 | |
| 250 | 256 | \end{adjustbox}\newline\newline | |
| 251 | - *2046x1534/SGRBG8_1X8* | ||
| 252 | |||
| 253 | - (default) | ||
| 254 | |||
| 255 | - (default) | ||
| 256 | |||
| 257 | - (default) | ||
| 258 | |||
| 259 | - .. row 4 | ||
| 260 | |||
| 261 | - Configure scaler sink format | ||
| 262 | |||
| 263 | - 2048x1536/SGRBG8_1X8 | ||
| 264 | |||
| 265 | - 2048x1536/SGRBG8_1X8 | ||
| 266 | |||
| 267 | - 2046x1534/SGRBG8_1X8 | ||
| 268 | |||
| 269 | - *2046x1534/SGRBG8_1X8* | ||
| 270 | |||
| 271 | - *0,0/2046x1534* | ||
| 272 | |||
| 273 | - *2046x1534/SGRBG8_1X8* | ||
| 274 | |||
| 275 | - .. row 5 | ||
| 276 | |||
| 277 | - Configure scaler sink compose selection | ||
| 278 | |||
| 279 | - 2048x1536/SGRBG8_1X8 | ||
| 280 | |||
| 281 | - 2048x1536/SGRBG8_1X8 | ||
| 282 | |||
| 283 | - 2046x1534/SGRBG8_1X8 | ||
| 284 | |||
| 285 | - 2046x1534/SGRBG8_1X8 | ||
| 286 | |||
| 287 | - *0,0/1280x960* | ||
| 288 | |||
| 289 | - *1280x960/SGRBG8_1X8* | ||
| 290 | |||
| 291 | |||
| 292 | 257 | ||
| 293 | 1. Initial state. The sensor source pad format is set to its native 3MP | 258 | 1. Initial state. The sensor source pad format is set to its native 3MP |
| 294 | size and V4L2_MBUS_FMT_SGRBG8_1X8 media bus code. Formats on the | 259 | size and V4L2_MBUS_FMT_SGRBG8_1X8 media bus code. Formats on the |
| @@ -332,7 +297,7 @@ It can also be used as part of digital zoom implementations to select · 37 unmodified lines | |||
| 332 | the area of the image that will be scaled up. | 297 | the area of the image that will be scaled up. |
| 333 | 298 | ||
| 334 | Crop settings are defined by a crop rectangle and represented in a | 299 | Crop settings are defined by a crop rectangle and represented in a |
| 335 | struct :ref:`v4l2_rect <v4l2-rect>` by the coordinates of the top | 300 | struct :c:type:`v4l2_rect` by the coordinates of the top |
| 336 | left corner and the rectangle size. Both the coordinates and sizes are | 301 | left corner and the rectangle size. Both the coordinates and sizes are |
| 337 | expressed in pixels. | 302 | expressed in pixels. |
| 338 | 303 | ||
| @@ -348,7 +313,7 @@ sub-device for processing. · 9 unmodified lines | |||
| 348 | The scaling operation changes the size of the image by scaling it to new | 313 | The scaling operation changes the size of the image by scaling it to new |
| 349 | dimensions. The scaling ratio isn't specified explicitly, but is implied | 314 | dimensions. The scaling ratio isn't specified explicitly, but is implied |
| 350 | from the original and scaled image sizes. Both sizes are represented by | 315 | from the original and scaled image sizes. Both sizes are represented by |
| 351 | struct :ref:`v4l2_rect <v4l2-rect>`. | 316 | struct :c:type:`v4l2_rect`. |
| 352 | 317 | ||
| 353 | Scaling support is optional. When supported by a subdev, the crop | 318 | Scaling support is optional. When supported by a subdev, the crop |
| 354 | rectangle on the subdev's sink pad is scaled to the size configured | 319 | rectangle on the subdev's sink pad is scaled to the size configured |
| @@ -0,0 +1,56 @@ | |||
| 1 | .. -*- coding: utf-8; mode: rst -*- | ||
| 2 | |||
| 3 | .. _touch: | ||
| 4 | |||
| 5 | ************* | ||
| 6 | Touch Devices | ||
| 7 | ************* | ||
| 8 | |||
| 9 | Touch devices are accessed through character device special files named | ||
| 10 | ``/dev/v4l-touch0`` to ``/dev/v4l-touch255`` with major number 81 and | ||
| 11 | dynamically allocated minor numbers 0 to 255. | ||
| 12 | |||
| 13 | Overview | ||
| 14 | ======== | ||
| 15 | |||
| 16 | Sensors may be Optical, or Projected Capacitive touch (PCT). | ||
| 17 | |||
| 18 | Processing is required to analyse the raw data and produce input events. In | ||
| 19 | some systems, this may be performed on the ASIC and the raw data is purely a | ||
| 20 | side-channel for diagnostics or tuning. In other systems, the ASIC is a simple | ||
| 21 | analogue front end device which delivers touch data at high rate, and any touch | ||
| 22 | processing must be done on the host. | ||
| 23 | |||
| 24 | For capacitive touch sensing, the touchscreen is composed of an array of | ||
| 25 | horizontal and vertical conductors (alternatively called rows/columns, X/Y | ||
| 26 | lines, or tx/rx). Mutual Capacitance measured is at the nodes where the | ||
| 27 | conductors cross. Alternatively, Self Capacitance measures the signal from each | ||
| 28 | column and row independently. | ||
| 29 | |||
| 30 | A touch input may be determined by comparing the raw capacitance measurement to | ||
| 31 | a no-touch reference (or "baseline") measurement: | ||
| 32 | |||
| 33 | Delta = Raw - Reference | ||
| 34 | |||
| 35 | The reference measurement takes account of variations in the capacitance across | ||
| 36 | the touch sensor matrix, for example manufacturing irregularities, | ||
| 37 | environmental or edge effects. | ||
| 38 | |||
| 39 | Querying Capabilities | ||
| 40 | ===================== | ||
| 41 | |||
| 42 | Devices supporting the touch interface set the ``V4L2_CAP_VIDEO_CAPTURE`` flag | ||
| 43 | and the ``V4L2_CAP_TOUCH`` flag in the ``capabilities`` field of | ||
| 44 | :c:type:`v4l2_capability` returned by the | ||
| 45 | :ref:`VIDIOC_QUERYCAP` ioctl. | ||
| 46 | |||
| 47 | At least one of the read/write or streaming I/O methods must be | ||
| 48 | supported. | ||
| 49 | |||
| 50 | The formats supported by touch devices are documented in | ||
| 51 | :ref:`Touch Formats <tch-formats>`. | ||
| 52 | |||
| 53 | Data Format Negotiation | ||
| 54 | ======================= | ||
| 55 | |||
| 56 | A touch device may support any I/O method. | ||
| @@ -22,5 +22,6 @@ Interfaces · 21 unmodified lines | |||
| 22 | dev-radio | 22 | dev-radio |
| 23 | dev-rds | 23 | dev-rds |
| 24 | dev-sdr | 24 | dev-sdr |
| 25 | dev-touch | ||
| 25 | dev-event | 26 | dev-event |
| 26 | dev-subdev | 27 | dev-subdev |
| @@ -39,39 +39,19 @@ using driver module options. The major device number remains 81. · 38 unmodified lines | |||
| 39 | :header-rows: 1 | 39 | :header-rows: 1 |
| 40 | :stub-columns: 0 | 40 | :stub-columns: 0 |
| 41 | 41 | ||
| 42 | 42 | * - Device Type | |
| 43 | - .. row 1 | 43 | - File Name |
| 44 | 44 | - Minor Numbers | |
| 45 | - Device Type | 45 | * - Video capture and overlay |
| 46 | 46 | - ``/dev/video`` and ``/dev/bttv0``\ [#f1]_, ``/dev/video0`` to | |
| 47 | - File Name | 47 | ``/dev/video63`` |
| 48 | 48 | - 0-63 | |
| 49 | - Minor Numbers | 49 | * - Radio receiver |
| 50 | 50 | - ``/dev/radio``\ [#f2]_, ``/dev/radio0`` to ``/dev/radio63`` | |
| 51 | - .. row 2 | 51 | - 64-127 |
| 52 | 52 | * - Raw VBI capture | |
| 53 | - Video capture and overlay | 53 | - ``/dev/vbi``, ``/dev/vbi0`` to ``/dev/vbi31`` |
| 54 | 54 | - 224-255 | |
| 55 | - ``/dev/video`` and ``/dev/bttv0``\ [#f1]_, ``/dev/video0`` to | ||
| 56 | ``/dev/video63`` | ||
| 57 | |||
| 58 | - 0-63 | ||
| 59 | |||
| 60 | - .. row 3 | ||
| 61 | |||
| 62 | - Radio receiver | ||
| 63 | |||
| 64 | - ``/dev/radio``\ [#f2]_, ``/dev/radio0`` to ``/dev/radio63`` | ||
| 65 | |||
| 66 | - 64-127 | ||
| 67 | |||
| 68 | - .. row 4 | ||
| 69 | |||
| 70 | - Raw VBI capture | ||
| 71 | |||
| 72 | - ``/dev/vbi``, ``/dev/vbi0`` to ``/dev/vbi31`` | ||
| 73 | |||
| 74 | - 224-255 | ||
| 75 | 55 | ||
| 76 | 56 | ||
| 77 | V4L prohibits (or used to prohibit) multiple opens of a device file. | 57 | V4L prohibits (or used to prohibit) multiple opens of a device file. |
| @@ -87,162 +67,89 @@ Querying Capabilities · 9 unmodified lines | |||
| 87 | The V4L ``VIDIOCGCAP`` ioctl is equivalent to V4L2's | 67 | The V4L ``VIDIOCGCAP`` ioctl is equivalent to V4L2's |
| 88 | :ref:`VIDIOC_QUERYCAP`. | 68 | :ref:`VIDIOC_QUERYCAP`. |
| 89 | 69 | ||
| 90 | The ``name`` field in struct :c:type:`struct video_capability` became | 70 | The ``name`` field in struct ``video_capability`` became |
| 91 | ``card`` in struct :ref:`v4l2_capability <v4l2-capability>`, ``type`` | 71 | ``card`` in struct :c:type:`v4l2_capability`, ``type`` |
| 92 | was replaced by ``capabilities``. Note V4L2 does not distinguish between | 72 | was replaced by ``capabilities``. Note V4L2 does not distinguish between |
| 93 | device types like this, better think of basic video input, video output | 73 | device types like this, better think of basic video input, video output |
| 94 | and radio devices supporting a set of related functions like video | 74 | and radio devices supporting a set of related functions like video |
| 95 | capturing, video overlay and VBI capturing. See :ref:`open` for an | 75 | capturing, video overlay and VBI capturing. See :ref:`open` for an |
| 96 | introduction. | 76 | introduction. |
| 97 | 77 | ||
| 78 | .. tabularcolumns:: |p{5.5cm}|p{6.5cm}|p{5.5cm} | ||
| 98 | 79 | ||
| 80 | .. cssclass:: longtable | ||
| 99 | 81 | ||
| 100 | .. flat-table:: | 82 | .. flat-table:: |
| 101 | :header-rows: 1 | 83 | :header-rows: 1 |
| 102 | :stub-columns: 0 | 84 | :stub-columns: 0 |
| 103 | 85 | ||
| 104 | 86 | * - ``struct video_capability`` ``type`` | |
| 105 | - .. row 1 | 87 | - struct :c:type:`v4l2_capability` |
| 106 | 88 | ``capabilities`` flags | |
| 107 | - struct :c:type:`struct video_capability` ``type`` | 89 | - Purpose |
| 108 | 90 | * - ``VID_TYPE_CAPTURE`` | |
| 109 | - struct :ref:`v4l2_capability <v4l2-capability>` | 91 | - ``V4L2_CAP_VIDEO_CAPTURE`` |
| 110 | ``capabilities`` flags | 92 | - The :ref:`video capture <capture>` interface is supported. |
| 111 | 93 | * - ``VID_TYPE_TUNER`` | |
| 112 | - Purpose | 94 | - ``V4L2_CAP_TUNER`` |
| 113 | 95 | - The device has a :ref:`tuner or modulator <tuner>`. | |
| 114 | - .. row 2 | 96 | * - ``VID_TYPE_TELETEXT`` |
| 115 | 97 | - ``V4L2_CAP_VBI_CAPTURE`` | |
| 116 | - ``VID_TYPE_CAPTURE`` | 98 | - The :ref:`raw VBI capture <raw-vbi>` interface is supported. |
| 117 | 99 | * - ``VID_TYPE_OVERLAY`` | |
| 118 | - ``V4L2_CAP_VIDEO_CAPTURE`` | 100 | - ``V4L2_CAP_VIDEO_OVERLAY`` |
| 119 | 101 | - The :ref:`video overlay <overlay>` interface is supported. | |
| 120 | - The :ref:`video capture <capture>` interface is supported. | 102 | * - ``VID_TYPE_CHROMAKEY`` |
| 121 | 103 | - ``V4L2_FBUF_CAP_CHROMAKEY`` in field ``capability`` of struct | |
| 122 | - .. row 3 | 104 | :c:type:`v4l2_framebuffer` |
| 123 | 105 | - Whether chromakey overlay is supported. For more information on | |
| 124 | - ``VID_TYPE_TUNER`` | 106 | overlay see :ref:`overlay`. |
| 125 | 107 | * - ``VID_TYPE_CLIPPING`` | |
| 126 | - ``V4L2_CAP_TUNER`` | 108 | - ``V4L2_FBUF_CAP_LIST_CLIPPING`` and |
| 127 | 109 | ``V4L2_FBUF_CAP_BITMAP_CLIPPING`` in field ``capability`` of | |
| 128 | - The device has a :ref:`tuner or modulator <tuner>`. | 110 | struct :c:type:`v4l2_framebuffer` |
| 129 | 111 | - Whether clipping the overlaid image is supported, see | |
| 130 | - .. row 4 | 112 | :ref:`overlay`. |
| 131 | 113 | * - ``VID_TYPE_FRAMERAM`` | |
| 132 | - ``VID_TYPE_TELETEXT`` | 114 | - ``V4L2_FBUF_CAP_EXTERNOVERLAY`` *not set* in field ``capability`` |
| 133 | 115 | of struct :c:type:`v4l2_framebuffer` | |
| 134 | - ``V4L2_CAP_VBI_CAPTURE`` | 116 | - Whether overlay overwrites frame buffer memory, see |
| 135 | 117 | :ref:`overlay`. | |
| 136 | - The :ref:`raw VBI capture <raw-vbi>` interface is supported. | 118 | * - ``VID_TYPE_SCALES`` |
| 137 | 119 | - ``-`` | |
| 138 | - .. row 5 | 120 | - This flag indicates if the hardware can scale images. The V4L2 API |
| 139 | 121 | implies the scale factor by setting the cropping dimensions and | |
| 140 | - ``VID_TYPE_OVERLAY`` | 122 | image size with the :ref:`VIDIOC_S_CROP <VIDIOC_G_CROP>` and |
| 141 | 123 | :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl, respectively. The | |
| 142 | - ``V4L2_CAP_VIDEO_OVERLAY`` | 124 | driver returns the closest sizes possible. For more information on |
| 143 | 125 | cropping and scaling see :ref:`crop`. | |
| 144 | - The :ref:`video overlay <overlay>` interface is supported. | 126 | * - ``VID_TYPE_MONOCHROME`` |
| 145 | 127 | - ``-`` | |
| 146 | - .. row 6 | 128 | - Applications can enumerate the supported image formats with the |
| 147 | 129 | :ref:`VIDIOC_ENUM_FMT` ioctl to determine if | |
| 148 | - ``VID_TYPE_CHROMAKEY`` | 130 | the device supports grey scale capturing only. For more |
| 149 | 131 | information on image formats see :ref:`pixfmt`. | |
| 150 | - ``V4L2_FBUF_CAP_CHROMAKEY`` in field ``capability`` of struct | 132 | * - ``VID_TYPE_SUBCAPTURE`` |
| 151 | :ref:`v4l2_framebuffer <v4l2-framebuffer>` | 133 | - ``-`` |
| 152 | 134 | - Applications can call the :ref:`VIDIOC_G_CROP <VIDIOC_G_CROP>` | |
| 153 | - Whether chromakey overlay is supported. For more information on | 135 | ioctl to determine if the device supports capturing a subsection |
| 154 | overlay see :ref:`overlay`. | 136 | of the full picture ("cropping" in V4L2). If not, the ioctl |
| 155 | 137 | returns the ``EINVAL`` error code. For more information on cropping | |
| 156 | - .. row 7 | 138 | and scaling see :ref:`crop`. |
| 157 | 139 | * - ``VID_TYPE_MPEG_DECODER`` | |
| 158 | - ``VID_TYPE_CLIPPING`` | 140 | - ``-`` |
| 159 | 141 | - Applications can enumerate the supported image formats with the | |
| 160 | - ``V4L2_FBUF_CAP_LIST_CLIPPING`` and | 142 | :ref:`VIDIOC_ENUM_FMT` ioctl to determine if |
| 161 | ``V4L2_FBUF_CAP_BITMAP_CLIPPING`` in field ``capability`` of | 143 | the device supports MPEG streams. |
| 162 | struct :ref:`v4l2_framebuffer <v4l2-framebuffer>` | 144 | * - ``VID_TYPE_MPEG_ENCODER`` |
| 163 | 145 | - ``-`` | |
| 164 | - Whether clipping the overlaid image is supported, see | 146 | - See above. |
| 165 | :ref:`overlay`. | 147 | * - ``VID_TYPE_MJPEG_DECODER`` |
| 166 | 148 | - ``-`` | |
| 167 | - .. row 8 | 149 | - See above. |
| 168 | 150 | * - ``VID_TYPE_MJPEG_ENCODER`` | |
| 169 | - ``VID_TYPE_FRAMERAM`` | 151 | - ``-`` |
| 170 | 152 | - See above. | |
| 171 | - ``V4L2_FBUF_CAP_EXTERNOVERLAY`` *not set* in field ``capability`` | ||
| 172 | of struct :ref:`v4l2_framebuffer <v4l2-framebuffer>` | ||
| 173 | |||
| 174 | - Whether overlay overwrites frame buffer memory, see | ||
| 175 | :ref:`overlay`. | ||
| 176 | |||
| 177 | - .. row 9 | ||
| 178 | |||
| 179 | - ``VID_TYPE_SCALES`` | ||
| 180 | |||
| 181 | - ``-`` | ||
| 182 | |||
| 183 | - This flag indicates if the hardware can scale images. The V4L2 API | ||
| 184 | implies the scale factor by setting the cropping dimensions and | ||
| 185 | image size with the :ref:`VIDIOC_S_CROP <VIDIOC_G_CROP>` and | ||
| 186 | :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl, respectively. The | ||
| 187 | driver returns the closest sizes possible. For more information on | ||
| 188 | cropping and scaling see :ref:`crop`. | ||
| 189 | |||
| 190 | - .. row 10 | ||
| 191 | |||
| 192 | - ``VID_TYPE_MONOCHROME`` | ||
| 193 | |||
| 194 | - ``-`` | ||
| 195 | |||
| 196 | - Applications can enumerate the supported image formats with the | ||
| 197 | :ref:`VIDIOC_ENUM_FMT` ioctl to determine if | ||
| 198 | the device supports grey scale capturing only. For more | ||
| 199 | information on image formats see :ref:`pixfmt`. | ||
| 200 | |||
| 201 | - .. row 11 | ||
| 202 | |||
| 203 | - ``VID_TYPE_SUBCAPTURE`` | ||
| 204 | |||
| 205 | - ``-`` | ||
| 206 | |||
| 207 | - Applications can call the :ref:`VIDIOC_G_CROP <VIDIOC_G_CROP>` | ||
| 208 | ioctl to determine if the device supports capturing a subsection | ||
| 209 | of the full picture ("cropping" in V4L2). If not, the ioctl | ||
| 210 | returns the ``EINVAL`` error code. For more information on cropping | ||
| 211 | and scaling see :ref:`crop`. | ||
| 212 | |||
| 213 | - .. row 12 | ||
| 214 | |||
| 215 | - ``VID_TYPE_MPEG_DECODER`` | ||
| 216 | |||
| 217 | - ``-`` | ||
| 218 | |||
| 219 | - Applications can enumerate the supported image formats with the | ||
| 220 | :ref:`VIDIOC_ENUM_FMT` ioctl to determine if | ||
| 221 | the device supports MPEG streams. | ||
| 222 | |||
| 223 | - .. row 13 | ||
| 224 | |||
| 225 | - ``VID_TYPE_MPEG_ENCODER`` | ||
| 226 | |||
| 227 | - ``-`` | ||
| 228 | |||
| 229 | - See above. | ||
| 230 | |||
| 231 | - .. row 14 | ||
| 232 | |||
| 233 | - ``VID_TYPE_MJPEG_DECODER`` | ||
| 234 | |||
| 235 | - ``-`` | ||
| 236 | |||
| 237 | - See above. | ||
| 238 | |||
| 239 | - .. row 15 | ||
| 240 | |||
| 241 | - ``VID_TYPE_MJPEG_ENCODER`` | ||
| 242 | |||
| 243 | - ``-`` | ||
| 244 | |||
| 245 | - See above. | ||
| 246 | 153 | ||
| 247 | 154 | ||
| 248 | The ``audios`` field was replaced by ``capabilities`` flag | 155 | The ``audios`` field was replaced by ``capabilities`` flag |
| @@ -262,12 +169,12 @@ Video Sources · 13 unmodified lines | |||
| 262 | ============= | 169 | ============= |
| 263 | 170 | ||
| 264 | V4L provides the ``VIDIOCGCHAN`` and ``VIDIOCSCHAN`` ioctl using struct | 171 | V4L provides the ``VIDIOCGCHAN`` and ``VIDIOCSCHAN`` ioctl using struct |
| 265 | :c:type:`struct video_channel` to enumerate the video inputs of a V4L | 172 | ``video_channel`` to enumerate the video inputs of a V4L |
| 266 | device. The equivalent V4L2 ioctls are | 173 | device. The equivalent V4L2 ioctls are |
| 267 | :ref:`VIDIOC_ENUMINPUT`, | 174 | :ref:`VIDIOC_ENUMINPUT`, |
| 268 | :ref:`VIDIOC_G_INPUT <VIDIOC_G_INPUT>` and | 175 | :ref:`VIDIOC_G_INPUT <VIDIOC_G_INPUT>` and |
| 269 | :ref:`VIDIOC_S_INPUT <VIDIOC_G_INPUT>` using struct | 176 | :ref:`VIDIOC_S_INPUT <VIDIOC_G_INPUT>` using struct |
| 270 | :ref:`v4l2_input <v4l2-input>` as discussed in :ref:`video`. | 177 | :c:type:`v4l2_input` as discussed in :ref:`video`. |
| 271 | 178 | ||
| 272 | The ``channel`` field counting inputs was renamed to ``index``, the | 179 | The ``channel`` field counting inputs was renamed to ``index``, the |
| 273 | video input types were renamed as follows: | 180 | video input types were renamed as follows: |
| @@ -278,24 +185,12 @@ video input types were renamed as follows: · 4 unmodified lines | |||
| 278 | :header-rows: 1 | 185 | :header-rows: 1 |
| 279 | :stub-columns: 0 | 186 | :stub-columns: 0 |
| 280 | 187 | ||
| 281 | 188 | * - struct ``video_channel`` ``type`` | |
| 282 | - .. row 1 | 189 | - struct :c:type:`v4l2_input` ``type`` |
| 283 | 190 | * - ``VIDEO_TYPE_TV`` | |
| 284 | - struct :c:type:`struct video_channel` ``type`` | 191 | - ``V4L2_INPUT_TYPE_TUNER`` |
| 285 | 192 | * - ``VIDEO_TYPE_CAMERA`` | |
| 286 | - struct :ref:`v4l2_input <v4l2-input>` ``type`` | 193 | - ``V4L2_INPUT_TYPE_CAMERA`` |
| 287 | |||
| 288 | - .. row 2 | ||
| 289 | |||
| 290 | - ``VIDEO_TYPE_TV`` | ||
| 291 | |||
| 292 | - ``V4L2_INPUT_TYPE_TUNER`` | ||
| 293 | |||
| 294 | - .. row 3 | ||
| 295 | |||
| 296 | - ``VIDEO_TYPE_CAMERA`` | ||
| 297 | |||
| 298 | - ``V4L2_INPUT_TYPE_CAMERA`` | ||
| 299 | 194 | ||
| 300 | 195 | ||
| 301 | Unlike the ``tuners`` field expressing the number of tuners of this | 196 | Unlike the ``tuners`` field expressing the number of tuners of this |
| @@ -303,7 +198,7 @@ input, V4L2 assumes each video input is connected to at most one tuner. · 1 unmodified line | |||
| 303 | However a tuner can have more than one input, i. e. RF connectors, and a | 198 | However a tuner can have more than one input, i. e. RF connectors, and a |
| 304 | device can have multiple tuners. The index number of the tuner | 199 | device can have multiple tuners. The index number of the tuner |
| 305 | associated with the input, if any, is stored in field ``tuner`` of | 200 | associated with the input, if any, is stored in field ``tuner`` of |
| 306 | struct :ref:`v4l2_input <v4l2-input>`. Enumeration of tuners is | 201 | struct :c:type:`v4l2_input`. Enumeration of tuners is |
| 307 | discussed in :ref:`tuner`. | 202 | discussed in :ref:`tuner`. |
| 308 | 203 | ||
| 309 | The redundant ``VIDEO_VC_TUNER`` flag was dropped. Video inputs | 204 | The redundant ``VIDEO_VC_TUNER`` flag was dropped. Video inputs |
| @@ -326,11 +221,11 @@ Tuning · 16 unmodified lines | |||
| 326 | ====== | 221 | ====== |
| 327 | 222 | ||
| 328 | The V4L ``VIDIOCGTUNER`` and ``VIDIOCSTUNER`` ioctl and struct | 223 | The V4L ``VIDIOCGTUNER`` and ``VIDIOCSTUNER`` ioctl and struct |
| 329 | :c:type:`struct video_tuner` can be used to enumerate the tuners of a | 224 | ``video_tuner`` can be used to enumerate the tuners of a |
| 330 | V4L TV or radio device. The equivalent V4L2 ioctls are | 225 | V4L TV or radio device. The equivalent V4L2 ioctls are |
| 331 | :ref:`VIDIOC_G_TUNER <VIDIOC_G_TUNER>` and | 226 | :ref:`VIDIOC_G_TUNER <VIDIOC_G_TUNER>` and |
| 332 | :ref:`VIDIOC_S_TUNER <VIDIOC_G_TUNER>` using struct | 227 | :ref:`VIDIOC_S_TUNER <VIDIOC_G_TUNER>` using struct |
| 333 | :ref:`v4l2_tuner <v4l2-tuner>`. Tuners are covered in :ref:`tuner`. | 228 | :c:type:`v4l2_tuner`. Tuners are covered in :ref:`tuner`. |
| 334 | 229 | ||
| 335 | The ``tuner`` field counting tuners was renamed to ``index``. The fields | 230 | The ``tuner`` field counting tuners was renamed to ``index``. The fields |
| 336 | ``name``, ``rangelow`` and ``rangehigh`` remained unchanged. | 231 | ``name``, ``rangelow`` and ``rangehigh`` remained unchanged. |
| @@ -338,7 +233,7 @@ The ``tuner`` field counting tuners was renamed to ``index``. The fields · 1 unmodified line | |||
| 338 | The ``VIDEO_TUNER_PAL``, ``VIDEO_TUNER_NTSC`` and ``VIDEO_TUNER_SECAM`` | 233 | The ``VIDEO_TUNER_PAL``, ``VIDEO_TUNER_NTSC`` and ``VIDEO_TUNER_SECAM`` |
| 339 | flags indicating the supported video standards were dropped. This | 234 | flags indicating the supported video standards were dropped. This |
| 340 | information is now contained in the associated struct | 235 | information is now contained in the associated struct |
| 341 | :ref:`v4l2_input <v4l2-input>`. No replacement exists for the | 236 | :c:type:`v4l2_input`. No replacement exists for the |
| 342 | ``VIDEO_TUNER_NORM`` flag indicating whether the video standard can be | 237 | ``VIDEO_TUNER_NORM`` flag indicating whether the video standard can be |
| 343 | switched. The ``mode`` field to select a different video standard was | 238 | switched. The ``mode`` field to select a different video standard was |
| 344 | replaced by a whole new set of ioctls and structures described in | 239 | replaced by a whole new set of ioctls and structures described in |
| @@ -351,18 +246,18 @@ Japan with numbers 3-6 (sic). · 6 unmodified lines | |||
| 351 | The ``VIDEO_TUNER_STEREO_ON`` flag indicating stereo reception became | 246 | The ``VIDEO_TUNER_STEREO_ON`` flag indicating stereo reception became |
| 352 | ``V4L2_TUNER_SUB_STEREO`` in field ``rxsubchans``. This field also | 247 | ``V4L2_TUNER_SUB_STEREO`` in field ``rxsubchans``. This field also |
| 353 | permits the detection of monaural and bilingual audio, see the | 248 | permits the detection of monaural and bilingual audio, see the |
| 354 | definition of struct :ref:`v4l2_tuner <v4l2-tuner>` for details. | 249 | definition of struct :c:type:`v4l2_tuner` for details. |
| 355 | Presently no replacement exists for the ``VIDEO_TUNER_RDS_ON`` and | 250 | Presently no replacement exists for the ``VIDEO_TUNER_RDS_ON`` and |
| 356 | ``VIDEO_TUNER_MBS_ON`` flags. | 251 | ``VIDEO_TUNER_MBS_ON`` flags. |
| 357 | 252 | ||
| 358 | The ``VIDEO_TUNER_LOW`` flag was renamed to ``V4L2_TUNER_CAP_LOW`` in | 253 | The ``VIDEO_TUNER_LOW`` flag was renamed to ``V4L2_TUNER_CAP_LOW`` in |
| 359 | the struct :ref:`v4l2_tuner <v4l2-tuner>` ``capability`` field. | 254 | the struct :c:type:`v4l2_tuner` ``capability`` field. |
| 360 | 255 | ||
| 361 | The ``VIDIOCGFREQ`` and ``VIDIOCSFREQ`` ioctl to change the tuner | 256 | The ``VIDIOCGFREQ`` and ``VIDIOCSFREQ`` ioctl to change the tuner |
| 362 | frequency where renamed to | 257 | frequency where renamed to |
| 363 | :ref:`VIDIOC_G_FREQUENCY <VIDIOC_G_FREQUENCY>` and | 258 | :ref:`VIDIOC_G_FREQUENCY <VIDIOC_G_FREQUENCY>` and |
| 364 | :ref:`VIDIOC_S_FREQUENCY <VIDIOC_G_FREQUENCY>`. They take a pointer | 259 | :ref:`VIDIOC_S_FREQUENCY <VIDIOC_G_FREQUENCY>`. They take a pointer |
| 365 | to a struct :ref:`v4l2_frequency <v4l2-frequency>` instead of an | 260 | to a struct :c:type:`v4l2_frequency` instead of an |
| 366 | unsigned long integer. | 261 | unsigned long integer. |
| 367 | 262 | ||
| 368 | 263 | ||
| @@ -372,7 +267,7 @@ Image Properties · 3 unmodified lines | |||
| 372 | ================ | 267 | ================ |
| 373 | 268 | ||
| 374 | V4L2 has no equivalent of the ``VIDIOCGPICT`` and ``VIDIOCSPICT`` ioctl | 269 | V4L2 has no equivalent of the ``VIDIOCGPICT`` and ``VIDIOCSPICT`` ioctl |
| 375 | and struct :c:type:`struct video_picture`. The following fields where | 270 | and struct ``video_picture``. The following fields where |
| 376 | replaced by V4L2 controls accessible with the | 271 | replaced by V4L2 controls accessible with the |
| 377 | :ref:`VIDIOC_QUERYCTRL`, | 272 | :ref:`VIDIOC_QUERYCTRL`, |
| 378 | :ref:`VIDIOC_G_CTRL <VIDIOC_G_CTRL>` and | 273 | :ref:`VIDIOC_G_CTRL <VIDIOC_G_CTRL>` and |
| @@ -384,42 +279,18 @@ replaced by V4L2 controls accessible with the · 5 unmodified lines | |||
| 384 | :header-rows: 1 | 279 | :header-rows: 1 |
| 385 | :stub-columns: 0 | 280 | :stub-columns: 0 |
| 386 | 281 | ||
| 387 | 282 | * - struct ``video_picture`` | |
| 388 | - .. row 1 | 283 | - V4L2 Control ID |
| 389 | 284 | * - ``brightness`` | |
| 390 | - struct :c:type:`struct video_picture` | 285 | - ``V4L2_CID_BRIGHTNESS`` |
| 391 | 286 | * - ``hue`` | |
| 392 | - V4L2 Control ID | 287 | - ``V4L2_CID_HUE`` |
| 393 | 288 | * - ``colour`` | |
| 394 | - .. row 2 | 289 | - ``V4L2_CID_SATURATION`` |
| 395 | 290 | * - ``contrast`` | |
| 396 | - ``brightness`` | 291 | - ``V4L2_CID_CONTRAST`` |
| 397 | 292 | * - ``whiteness`` | |
| 398 | - ``V4L2_CID_BRIGHTNESS`` | 293 | - ``V4L2_CID_WHITENESS`` |
| 399 | |||
| 400 | - .. row 3 | ||
| 401 | |||
| 402 | - ``hue`` | ||
| 403 | |||
| 404 | - ``V4L2_CID_HUE`` | ||
| 405 | |||
| 406 | - .. row 4 | ||
| 407 | |||
| 408 | - ``colour`` | ||
| 409 | |||
| 410 | - ``V4L2_CID_SATURATION`` | ||
| 411 | |||
| 412 | - .. row 5 | ||
| 413 | |||
| 414 | - ``contrast`` | ||
| 415 | |||
| 416 | - ``V4L2_CID_CONTRAST`` | ||
| 417 | |||
| 418 | - .. row 6 | ||
| 419 | |||
| 420 | - ``whiteness`` | ||
| 421 | |||
| 422 | - ``V4L2_CID_WHITENESS`` | ||
| 423 | 294 | ||
| 424 | 295 | ||
| 425 | The V4L picture controls are assumed to range from 0 to 65535 with no | 296 | The V4L picture controls are assumed to range from 0 to 65535 with no |
| @@ -432,7 +303,7 @@ The ``depth`` (average number of bits per pixel) of a video image is · 6 unmodified lines | |||
| 432 | implied by the selected image format. V4L2 does not explicitly provide | 303 | implied by the selected image format. V4L2 does not explicitly provide |
| 433 | such information assuming applications recognizing the format are aware | 304 | such information assuming applications recognizing the format are aware |
| 434 | of the image depth and others need not know. The ``palette`` field moved | 305 | of the image depth and others need not know. The ``palette`` field moved |
| 435 | into the struct :ref:`v4l2_pix_format <v4l2-pix-format>`: | 306 | into the struct :c:type:`v4l2_pix_format`: |
| 436 | 307 | ||
| 437 | 308 | ||
| 438 | 309 | ||
| @@ -440,108 +311,40 @@ into the struct :ref:`v4l2_pix_format <v4l2-pix-format>`: · 1 unmodified line | |||
| 440 | :header-rows: 1 | 311 | :header-rows: 1 |
| 441 | :stub-columns: 0 | 312 | :stub-columns: 0 |
| 442 | 313 | ||
| 443 | 314 | * - struct ``video_picture`` ``palette`` | |
| 444 | - .. row 1 | 315 | - struct :c:type:`v4l2_pix_format` ``pixfmt`` |
| 445 | 316 | * - ``VIDEO_PALETTE_GREY`` | |
| 446 | - struct :c:type:`struct video_picture` ``palette`` | 317 | - :ref:`V4L2_PIX_FMT_GREY <V4L2-PIX-FMT-GREY>` |
| 447 | 318 | * - ``VIDEO_PALETTE_HI240`` | |
| 448 | - struct :ref:`v4l2_pix_format <v4l2-pix-format>` ``pixfmt`` | 319 | - :ref:`V4L2_PIX_FMT_HI240 <pixfmt-reserved>` [#f3]_ |
| 449 | 320 | * - ``VIDEO_PALETTE_RGB565`` | |
| 450 | - .. row 2 | 321 | - :ref:`V4L2_PIX_FMT_RGB565 <pixfmt-rgb>` |
| 451 | 322 | * - ``VIDEO_PALETTE_RGB555`` | |
| 452 | - ``VIDEO_PALETTE_GREY`` | 323 | - :ref:`V4L2_PIX_FMT_RGB555 <pixfmt-rgb>` |
| 453 | 324 | * - ``VIDEO_PALETTE_RGB24`` | |
| 454 | - :ref:`V4L2_PIX_FMT_GREY <V4L2-PIX-FMT-GREY>` | 325 | - :ref:`V4L2_PIX_FMT_BGR24 <pixfmt-rgb>` |
| 455 | 326 | * - ``VIDEO_PALETTE_RGB32`` | |
| 456 | - .. row 3 | 327 | - :ref:`V4L2_PIX_FMT_BGR32 <pixfmt-rgb>` [#f4]_ |
| 457 | 328 | * - ``VIDEO_PALETTE_YUV422`` | |
| 458 | - ``VIDEO_PALETTE_HI240`` | 329 | - :ref:`V4L2_PIX_FMT_YUYV <V4L2-PIX-FMT-YUYV>` |
| 459 | 330 | * - ``VIDEO_PALETTE_YUYV``\ [#f5]_ | |
| 460 | - :ref:`V4L2_PIX_FMT_HI240 <pixfmt-reserved>` [#f3]_ | 331 | - :ref:`V4L2_PIX_FMT_YUYV <V4L2-PIX-FMT-YUYV>` |
| 461 | 332 | * - ``VIDEO_PALETTE_UYVY`` | |
| 462 | - .. row 4 | 333 | - :ref:`V4L2_PIX_FMT_UYVY <V4L2-PIX-FMT-UYVY>` |
| 463 | 334 | * - ``VIDEO_PALETTE_YUV420`` | |
| 464 | - ``VIDEO_PALETTE_RGB565`` | 335 | - None |
| 465 | 336 | * - ``VIDEO_PALETTE_YUV411`` | |
| 466 | - :ref:`V4L2_PIX_FMT_RGB565 <pixfmt-rgb>` | 337 | - :ref:`V4L2_PIX_FMT_Y41P <V4L2-PIX-FMT-Y41P>` [#f6]_ |
| 467 | 338 | * - ``VIDEO_PALETTE_RAW`` | |
| 468 | - .. row 5 | 339 | - None [#f7]_ |
| 469 | 340 | * - ``VIDEO_PALETTE_YUV422P`` | |
| 470 | - ``VIDEO_PALETTE_RGB555`` | 341 | - :ref:`V4L2_PIX_FMT_YUV422P <V4L2-PIX-FMT-YUV422P>` |
| 471 | 342 | * - ``VIDEO_PALETTE_YUV411P`` | |
| 472 | - :ref:`V4L2_PIX_FMT_RGB555 <pixfmt-rgb>` | 343 | - :ref:`V4L2_PIX_FMT_YUV411P <V4L2-PIX-FMT-YUV411P>` [#f8]_ |
| 473 | 344 | * - ``VIDEO_PALETTE_YUV420P`` | |
| 474 | - .. row 6 | 345 | - :ref:`V4L2_PIX_FMT_YVU420 <V4L2-PIX-FMT-YVU420>` |
| 475 | 346 | * - ``VIDEO_PALETTE_YUV410P`` | |
| 476 | - ``VIDEO_PALETTE_RGB24`` | 347 | - :ref:`V4L2_PIX_FMT_YVU410 <V4L2-PIX-FMT-YVU410>` |
| 477 | |||
| 478 | - :ref:`V4L2_PIX_FMT_BGR24 <pixfmt-rgb>` | ||
| 479 | |||
| 480 | - .. row 7 | ||
| 481 | |||
| 482 | - ``VIDEO_PALETTE_RGB32`` | ||
| 483 | |||
| 484 | - :ref:`V4L2_PIX_FMT_BGR32 <pixfmt-rgb>` [#f4]_ | ||
| 485 | |||
| 486 | - .. row 8 | ||
| 487 | |||
| 488 | - ``VIDEO_PALETTE_YUV422`` | ||
| 489 | |||
| 490 | - :ref:`V4L2_PIX_FMT_YUYV <V4L2-PIX-FMT-YUYV>` | ||
| 491 | |||
| 492 | - .. row 9 | ||
| 493 | |||
| 494 | - ``VIDEO_PALETTE_YUYV``\ [#f5]_ | ||
| 495 | |||
| 496 | - :ref:`V4L2_PIX_FMT_YUYV <V4L2-PIX-FMT-YUYV>` | ||
| 497 | |||
| 498 | - .. row 10 | ||
| 499 | |||
| 500 | - ``VIDEO_PALETTE_UYVY`` | ||
| 501 | |||
| 502 | - :ref:`V4L2_PIX_FMT_UYVY <V4L2-PIX-FMT-UYVY>` | ||
| 503 | |||
| 504 | - .. row 11 | ||
| 505 | |||
| 506 | - ``VIDEO_PALETTE_YUV420`` | ||
| 507 | |||
| 508 | - None | ||
| 509 | |||
| 510 | - .. row 12 | ||
| 511 | |||
| 512 | - ``VIDEO_PALETTE_YUV411`` | ||
| 513 | |||
| 514 | - :ref:`V4L2_PIX_FMT_Y41P <V4L2-PIX-FMT-Y41P>` [#f6]_ | ||
| 515 | |||
| 516 | - .. row 13 | ||
| 517 | |||
| 518 | - ``VIDEO_PALETTE_RAW`` | ||
| 519 | |||
| 520 | - None [#f7]_ | ||
| 521 | |||
| 522 | - .. row 14 | ||
| 523 | |||
| 524 | - ``VIDEO_PALETTE_YUV422P`` | ||
| 525 | |||
| 526 | - :ref:`V4L2_PIX_FMT_YUV422P <V4L2-PIX-FMT-YUV422P>` | ||
| 527 | |||
| 528 | - .. row 15 | ||
| 529 | |||
| 530 | - ``VIDEO_PALETTE_YUV411P`` | ||
| 531 | |||
| 532 | - :ref:`V4L2_PIX_FMT_YUV411P <V4L2-PIX-FMT-YUV411P>` [#f8]_ | ||
| 533 | |||
| 534 | - .. row 16 | ||
| 535 | |||
| 536 | - ``VIDEO_PALETTE_YUV420P`` | ||
| 537 | |||
| 538 | - :ref:`V4L2_PIX_FMT_YVU420 <V4L2-PIX-FMT-YVU420>` | ||
| 539 | |||
| 540 | - .. row 17 | ||
| 541 | |||
| 542 | - ``VIDEO_PALETTE_YUV410P`` | ||
| 543 | |||
| 544 | - :ref:`V4L2_PIX_FMT_YVU410 <V4L2-PIX-FMT-YVU410>` | ||
| 545 | 348 | ||
| 546 | 349 | ||
| 547 | V4L2 image formats are defined in :ref:`pixfmt`. The image format can | 350 | V4L2 image formats are defined in :ref:`pixfmt`. The image format can |
| @@ -552,11 +355,11 @@ Audio · 4 unmodified lines | |||
| 552 | ===== | 355 | ===== |
| 553 | 356 | ||
| 554 | The ``VIDIOCGAUDIO`` and ``VIDIOCSAUDIO`` ioctl and struct | 357 | The ``VIDIOCGAUDIO`` and ``VIDIOCSAUDIO`` ioctl and struct |
| 555 | :c:type:`struct video_audio` are used to enumerate the audio inputs | 358 | ``video_audio`` are used to enumerate the audio inputs |
| 556 | of a V4L device. The equivalent V4L2 ioctls are | 359 | of a V4L device. The equivalent V4L2 ioctls are |
| 557 | :ref:`VIDIOC_G_AUDIO <VIDIOC_G_AUDIO>` and | 360 | :ref:`VIDIOC_G_AUDIO <VIDIOC_G_AUDIO>` and |
| 558 | :ref:`VIDIOC_S_AUDIO <VIDIOC_G_AUDIO>` using struct | 361 | :ref:`VIDIOC_S_AUDIO <VIDIOC_G_AUDIO>` using struct |
| 559 | :ref:`v4l2_audio <v4l2-audio>` as discussed in :ref:`audio`. | 362 | :c:type:`v4l2_audio` as discussed in :ref:`audio`. |
| 560 | 363 | ||
| 561 | The ``audio`` "channel number" field counting audio inputs was renamed | 364 | The ``audio`` "channel number" field counting audio inputs was renamed |
| 562 | to ``index``. | 365 | to ``index``. |
| @@ -569,10 +372,10 @@ standard is BTSC ``VIDEO_SOUND_LANG2`` refers to SAP and · 6 unmodified lines | |||
| 569 | specification, there is no way to query the selected mode. On | 372 | specification, there is no way to query the selected mode. On |
| 570 | ``VIDIOCGAUDIO`` the driver returns the *actually received* audio | 373 | ``VIDIOCGAUDIO`` the driver returns the *actually received* audio |
| 571 | programmes in this field. In the V4L2 API this information is stored in | 374 | programmes in this field. In the V4L2 API this information is stored in |
| 572 | the struct :ref:`v4l2_tuner <v4l2-tuner>` ``rxsubchans`` and | 375 | the struct :c:type:`v4l2_tuner` ``rxsubchans`` and |
| 573 | ``audmode`` fields, respectively. See :ref:`tuner` for more | 376 | ``audmode`` fields, respectively. See :ref:`tuner` for more |
| 574 | information on tuners. Related to audio modes struct | 377 | information on tuners. Related to audio modes struct |
| 575 | :ref:`v4l2_audio <v4l2-audio>` also reports if this is a mono or | 378 | :c:type:`v4l2_audio` also reports if this is a mono or |
| 576 | stereo input, regardless if the source is a tuner. | 379 | stereo input, regardless if the source is a tuner. |
| 577 | 380 | ||
| 578 | The following fields where replaced by V4L2 controls accessible with the | 381 | The following fields where replaced by V4L2 controls accessible with the |
| @@ -586,36 +389,16 @@ The following fields where replaced by V4L2 controls accessible with the · 7 unmodified lines | |||
| 586 | :header-rows: 1 | 389 | :header-rows: 1 |
| 587 | :stub-columns: 0 | 390 | :stub-columns: 0 |
| 588 | 391 | ||
| 589 | 392 | * - struct ``video_audio`` | |
| 590 | - .. row 1 | 393 | - V4L2 Control ID |
| 591 | 394 | * - ``volume`` | |
| 592 | - struct :c:type:`struct video_audio` | 395 | - ``V4L2_CID_AUDIO_VOLUME`` |
| 593 | 396 | * - ``bass`` | |
| 594 | - V4L2 Control ID | 397 | - ``V4L2_CID_AUDIO_BASS`` |
| 595 | 398 | * - ``treble`` | |
| 596 | - .. row 2 | 399 | - ``V4L2_CID_AUDIO_TREBLE`` |
| 597 | 400 | * - ``balance`` | |
| 598 | - ``volume`` | 401 | - ``V4L2_CID_AUDIO_BALANCE`` |
| 599 | |||
| 600 | - ``V4L2_CID_AUDIO_VOLUME`` | ||
| 601 | |||
| 602 | - .. row 3 | ||
| 603 | |||
| 604 | - ``bass`` | ||
| 605 | |||
| 606 | - ``V4L2_CID_AUDIO_BASS`` | ||
| 607 | |||
| 608 | - .. row 4 | ||
| 609 | |||
| 610 | - ``treble`` | ||
| 611 | |||
| 612 | - ``V4L2_CID_AUDIO_TREBLE`` | ||
| 613 | |||
| 614 | - .. row 5 | ||
| 615 | |||
| 616 | - ``balance`` | ||
| 617 | |||
| 618 | - ``V4L2_CID_AUDIO_BALANCE`` | ||
| 619 | 402 | ||
| 620 | 403 | ||
| 621 | To determine which of these controls are supported by a driver V4L | 404 | To determine which of these controls are supported by a driver V4L |
| @@ -627,7 +410,7 @@ and ``VIDEO_AUDIO_MUTE`` flags where replaced by the boolean · 5 unmodified lines | |||
| 627 | ``V4L2_CID_AUDIO_MUTE`` control. | 410 | ``V4L2_CID_AUDIO_MUTE`` control. |
| 628 | 411 | ||
| 629 | All V4L2 controls have a ``step`` attribute replacing the struct | 412 | All V4L2 controls have a ``step`` attribute replacing the struct |
| 630 | :c:type:`struct video_audio` ``step`` field. The V4L audio controls | 413 | ``video_audio`` ``step`` field. The V4L audio controls |
| 631 | are assumed to range from 0 to 65535 with no particular reset value. The | 414 | are assumed to range from 0 to 65535 with no particular reset value. The |
| 632 | V4L2 API permits arbitrary limits and defaults which can be queried with | 415 | V4L2 API permits arbitrary limits and defaults which can be queried with |
| 633 | the :ref:`VIDIOC_QUERYCTRL` ioctl. For general | 416 | the :ref:`VIDIOC_QUERYCTRL` ioctl. For general |
| @@ -640,11 +423,11 @@ Frame Buffer Overlay · 6 unmodified lines | |||
| 640 | The V4L2 ioctls equivalent to ``VIDIOCGFBUF`` and ``VIDIOCSFBUF`` are | 423 | The V4L2 ioctls equivalent to ``VIDIOCGFBUF`` and ``VIDIOCSFBUF`` are |
| 641 | :ref:`VIDIOC_G_FBUF <VIDIOC_G_FBUF>` and | 424 | :ref:`VIDIOC_G_FBUF <VIDIOC_G_FBUF>` and |
| 642 | :ref:`VIDIOC_S_FBUF <VIDIOC_G_FBUF>`. The ``base`` field of struct | 425 | :ref:`VIDIOC_S_FBUF <VIDIOC_G_FBUF>`. The ``base`` field of struct |
| 643 | :c:type:`struct video_buffer` remained unchanged, except V4L2 defines | 426 | ``video_buffer`` remained unchanged, except V4L2 defines |
| 644 | a flag to indicate non-destructive overlays instead of a ``NULL`` | 427 | a flag to indicate non-destructive overlays instead of a ``NULL`` |
| 645 | pointer. All other fields moved into the struct | 428 | pointer. All other fields moved into the struct |
| 646 | :ref:`v4l2_pix_format <v4l2-pix-format>` ``fmt`` substructure of | 429 | :c:type:`v4l2_pix_format` ``fmt`` substructure of |
| 647 | struct :ref:`v4l2_framebuffer <v4l2-framebuffer>`. The ``depth`` | 430 | struct :c:type:`v4l2_framebuffer`. The ``depth`` |
| 648 | field was replaced by ``pixelformat``. See :ref:`pixfmt-rgb` for a | 431 | field was replaced by ``pixelformat``. See :ref:`pixfmt-rgb` for a |
| 649 | list of RGB formats and their respective color depths. | 432 | list of RGB formats and their respective color depths. |
| 650 | 433 | ||
| @@ -652,28 +435,28 @@ Instead of the special ioctls ``VIDIOCGWIN`` and ``VIDIOCSWIN`` V4L2 · 1 unmodified line | |||
| 652 | uses the general-purpose data format negotiation ioctls | 435 | uses the general-purpose data format negotiation ioctls |
| 653 | :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` and | 436 | :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` and |
| 654 | :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>`. They take a pointer to a struct | 437 | :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>`. They take a pointer to a struct |
| 655 | :ref:`v4l2_format <v4l2-format>` as argument. Here the ``win`` member | 438 | :c:type:`v4l2_format` as argument. Here the ``win`` member |
| 656 | of the ``fmt`` union is used, a struct | 439 | of the ``fmt`` union is used, a struct |
| 657 | :ref:`v4l2_window <v4l2-window>`. | 440 | :c:type:`v4l2_window`. |
| 658 | 441 | ||
| 659 | The ``x``, ``y``, ``width`` and ``height`` fields of struct | 442 | The ``x``, ``y``, ``width`` and ``height`` fields of struct |
| 660 | :c:type:`struct video_window` moved into struct | 443 | ``video_window`` moved into struct |
| 661 | :ref:`v4l2_rect <v4l2-rect>` substructure ``w`` of struct | 444 | :c:type:`v4l2_rect` substructure ``w`` of struct |
| 662 | :c:type:`struct v4l2_window`. The ``chromakey``, ``clips``, and | 445 | :c:type:`v4l2_window`. The ``chromakey``, ``clips``, and |
| 663 | ``clipcount`` fields remained unchanged. Struct | 446 | ``clipcount`` fields remained unchanged. Struct |
| 664 | :c:type:`struct video_clip` was renamed to struct | 447 | ``video_clip`` was renamed to struct |
| 665 | :ref:`v4l2_clip <v4l2-clip>`, also containing a struct | 448 | :c:type:`v4l2_clip`, also containing a struct |
| 666 | :c:type:`struct v4l2_rect`, but the semantics are still the same. | 449 | :c:type:`v4l2_rect`, but the semantics are still the same. |
| 667 | 450 | ||
| 668 | The ``VIDEO_WINDOW_INTERLACE`` flag was dropped. Instead applications | 451 | The ``VIDEO_WINDOW_INTERLACE`` flag was dropped. Instead applications |
| 669 | must set the ``field`` field to ``V4L2_FIELD_ANY`` or | 452 | must set the ``field`` field to ``V4L2_FIELD_ANY`` or |
| 670 | ``V4L2_FIELD_INTERLACED``. The ``VIDEO_WINDOW_CHROMAKEY`` flag moved | 453 | ``V4L2_FIELD_INTERLACED``. The ``VIDEO_WINDOW_CHROMAKEY`` flag moved |
| 671 | into struct :ref:`v4l2_framebuffer <v4l2-framebuffer>`, under the new | 454 | into struct :c:type:`v4l2_framebuffer`, under the new |
| 672 | name ``V4L2_FBUF_FLAG_CHROMAKEY``. | 455 | name ``V4L2_FBUF_FLAG_CHROMAKEY``. |
| 673 | 456 | ||
| 674 | In V4L, storing a bitmap pointer in ``clips`` and setting ``clipcount`` | 457 | In V4L, storing a bitmap pointer in ``clips`` and setting ``clipcount`` |
| 675 | to ``VIDEO_CLIP_BITMAP`` (-1) requests bitmap clipping, using a fixed | 458 | to ``VIDEO_CLIP_BITMAP`` (-1) requests bitmap clipping, using a fixed |
| 676 | size bitmap of 1024 × 625 bits. Struct :c:type:`struct v4l2_window` | 459 | size bitmap of 1024 × 625 bits. Struct :c:type:`v4l2_window` |
| 677 | has a separate ``bitmap`` pointer field for this purpose and the bitmap | 460 | has a separate ``bitmap`` pointer field for this purpose and the bitmap |
| 678 | size is determined by ``w.width`` and ``w.height``. | 461 | size is determined by ``w.width`` and ``w.height``. |
| 679 | 462 | ||
| @@ -686,24 +469,24 @@ Cropping · 6 unmodified lines | |||
| 686 | 469 | ||
| 687 | To capture only a subsection of the full picture V4L defines the | 470 | To capture only a subsection of the full picture V4L defines the |
| 688 | ``VIDIOCGCAPTURE`` and ``VIDIOCSCAPTURE`` ioctls using struct | 471 | ``VIDIOCGCAPTURE`` and ``VIDIOCSCAPTURE`` ioctls using struct |
| 689 | :c:type:`struct video_capture`. The equivalent V4L2 ioctls are | 472 | ``video_capture``. The equivalent V4L2 ioctls are |
| 690 | :ref:`VIDIOC_G_CROP <VIDIOC_G_CROP>` and | 473 | :ref:`VIDIOC_G_CROP <VIDIOC_G_CROP>` and |
| 691 | :ref:`VIDIOC_S_CROP <VIDIOC_G_CROP>` using struct | 474 | :ref:`VIDIOC_S_CROP <VIDIOC_G_CROP>` using struct |
| 692 | :ref:`v4l2_crop <v4l2-crop>`, and the related | 475 | :c:type:`v4l2_crop`, and the related |
| 693 | :ref:`VIDIOC_CROPCAP` ioctl. This is a rather | 476 | :ref:`VIDIOC_CROPCAP` ioctl. This is a rather |
| 694 | complex matter, see :ref:`crop` for details. | 477 | complex matter, see :ref:`crop` for details. |
| 695 | 478 | ||
| 696 | The ``x``, ``y``, ``width`` and ``height`` fields moved into struct | 479 | The ``x``, ``y``, ``width`` and ``height`` fields moved into struct |
| 697 | :ref:`v4l2_rect <v4l2-rect>` substructure ``c`` of struct | 480 | :c:type:`v4l2_rect` substructure ``c`` of struct |
| 698 | :c:type:`struct v4l2_crop`. The ``decimation`` field was dropped. In | 481 | :c:type:`v4l2_crop`. The ``decimation`` field was dropped. In |
| 699 | the V4L2 API the scaling factor is implied by the size of the cropping | 482 | the V4L2 API the scaling factor is implied by the size of the cropping |
| 700 | rectangle and the size of the captured or overlaid image. | 483 | rectangle and the size of the captured or overlaid image. |
| 701 | 484 | ||
| 702 | The ``VIDEO_CAPTURE_ODD`` and ``VIDEO_CAPTURE_EVEN`` flags to capture | 485 | The ``VIDEO_CAPTURE_ODD`` and ``VIDEO_CAPTURE_EVEN`` flags to capture |
| 703 | only the odd or even field, respectively, were replaced by | 486 | only the odd or even field, respectively, were replaced by |
| 704 | ``V4L2_FIELD_TOP`` and ``V4L2_FIELD_BOTTOM`` in the field named | 487 | ``V4L2_FIELD_TOP`` and ``V4L2_FIELD_BOTTOM`` in the field named |
| 705 | ``field`` of struct :ref:`v4l2_pix_format <v4l2-pix-format>` and | 488 | ``field`` of struct :c:type:`v4l2_pix_format` and |
| 706 | struct :ref:`v4l2_window <v4l2-window>`. These structures are used to | 489 | struct :c:type:`v4l2_window`. These structures are used to |
| 707 | select a capture or overlay format with the | 490 | select a capture or overlay format with the |
| 708 | :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl. | 491 | :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl. |
| 709 | 492 | ||
| @@ -728,8 +511,8 @@ To select an image format and size, V4L provides the ``VIDIOCSPICT`` and · 18 unmodified lines | |||
| 728 | ``VIDIOCSWIN`` ioctls. V4L2 uses the general-purpose data format | 511 | ``VIDIOCSWIN`` ioctls. V4L2 uses the general-purpose data format |
| 729 | negotiation ioctls :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` and | 512 | negotiation ioctls :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` and |
| 730 | :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>`. They take a pointer to a struct | 513 | :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>`. They take a pointer to a struct |
| 731 | :ref:`v4l2_format <v4l2-format>` as argument, here the struct | 514 | :c:type:`v4l2_format` as argument, here the struct |
| 732 | :ref:`v4l2_pix_format <v4l2-pix-format>` named ``pix`` of its | 515 | :c:type:`v4l2_pix_format` named ``pix`` of its |
| 733 | ``fmt`` union is used. | 516 | ``fmt`` union is used. |
| 734 | 517 | ||
| 735 | For more information about the V4L2 read interface see :ref:`rw`. | 518 | For more information about the V4L2 read interface see :ref:`rw`. |
| @@ -750,68 +533,49 @@ differences. · 14 unmodified lines | |||
| 750 | :header-rows: 1 | 533 | :header-rows: 1 |
| 751 | :stub-columns: 0 | 534 | :stub-columns: 0 |
| 752 | 535 | ||
| 753 | 536 | * - V4L | |
| 754 | - .. row 1 | 537 | - V4L2 |
| 755 | 538 | * - | |
| 756 | - V4L | 539 | - The image format must be selected before buffers are allocated, |
| 757 | 540 | with the :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl. When no | |
| 758 | - V4L2 | 541 | format is selected the driver may use the last, possibly by |
| 759 | 542 | another application requested format. | |
| 760 | - .. row 2 | 543 | * - Applications cannot change the number of buffers. The it is built |
| 761 | 544 | into the driver, unless it has a module option to change the | |
| 762 | - | 545 | number when the driver module is loaded. |
| 763 | - The image format must be selected before buffers are allocated, | 546 | - The :ref:`VIDIOC_REQBUFS` ioctl allocates the |
| 764 | with the :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl. When no | 547 | desired number of buffers, this is a required step in the |
| 765 | format is selected the driver may use the last, possibly by | 548 | initialization sequence. |
| 766 | another application requested format. | 549 | * - Drivers map all buffers as one contiguous range of memory. The |
| 767 | 550 | ``VIDIOCGMBUF`` ioctl is available to query the number of buffers, | |
| 768 | - .. row 3 | 551 | the offset of each buffer from the start of the virtual file, and |
| 769 | 552 | the overall amount of memory used, which can be used as arguments | |
| 770 | - Applications cannot change the number of buffers. The it is built | 553 | for the :ref:`mmap() <func-mmap>` function. |
| 771 | into the driver, unless it has a module option to change the | 554 | - Buffers are individually mapped. The offset and size of each |
| 772 | number when the driver module is loaded. | 555 | buffer can be determined with the |
| 773 | 556 | :ref:`VIDIOC_QUERYBUF` ioctl. | |
| 774 | - The :ref:`VIDIOC_REQBUFS` ioctl allocates the | 557 | * - The ``VIDIOCMCAPTURE`` ioctl prepares a buffer for capturing. It |
| 775 | desired number of buffers, this is a required step in the | 558 | also determines the image format for this buffer. The ioctl |
| 776 | initialization sequence. | 559 | returns immediately, eventually with an ``EAGAIN`` error code if no |
| 777 | 560 | video signal had been detected. When the driver supports more than | |
| 778 | - .. row 4 | 561 | one buffer applications can call the ioctl multiple times and thus |
| 779 | 562 | have multiple outstanding capture requests. | |
| 780 | - Drivers map all buffers as one contiguous range of memory. The | 563 | |
| 781 | ``VIDIOCGMBUF`` ioctl is available to query the number of buffers, | 564 | The ``VIDIOCSYNC`` ioctl suspends execution until a particular |
| 782 | the offset of each buffer from the start of the virtual file, and | 565 | buffer has been filled. |
| 783 | the overall amount of memory used, which can be used as arguments | 566 | - Drivers maintain an incoming and outgoing queue. |
| 784 | for the :ref:`mmap() <func-mmap>` function. | 567 | :ref:`VIDIOC_QBUF` enqueues any empty buffer into |
| 785 | 568 | the incoming queue. Filled buffers are dequeued from the outgoing | |
| 786 | - Buffers are individually mapped. The offset and size of each | 569 | queue with the :ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl. To wait |
| 787 | buffer can be determined with the | 570 | until filled buffers become available this function, |
| 788 | :ref:`VIDIOC_QUERYBUF` ioctl. | 571 | :ref:`select() <func-select>` or :ref:`poll() <func-poll>` can |
| 789 | 572 | be used. The :ref:`VIDIOC_STREAMON` ioctl | |
| 790 | - .. row 5 | 573 | must be called once after enqueuing one or more buffers to start |
| 791 | 574 | capturing. Its counterpart | |
| 792 | - The ``VIDIOCMCAPTURE`` ioctl prepares a buffer for capturing. It | 575 | :ref:`VIDIOC_STREAMOFF <VIDIOC_STREAMON>` stops capturing and |
| 793 | also determines the image format for this buffer. The ioctl | 576 | dequeues all buffers from both queues. Applications can query the |
| 794 | returns immediately, eventually with an ``EAGAIN`` error code if no | 577 | signal status, if known, with the |
| 795 | video signal had been detected. When the driver supports more than | 578 | :ref:`VIDIOC_ENUMINPUT` ioctl. |
| 796 | one buffer applications can call the ioctl multiple times and thus | ||
| 797 | have multiple outstanding capture requests. | ||
| 798 | |||
| 799 | The ``VIDIOCSYNC`` ioctl suspends execution until a particular | ||
| 800 | buffer has been filled. | ||
| 801 | |||
| 802 | - Drivers maintain an incoming and outgoing queue. | ||
| 803 | :ref:`VIDIOC_QBUF` enqueues any empty buffer into | ||
| 804 | the incoming queue. Filled buffers are dequeued from the outgoing | ||
| 805 | queue with the :ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl. To wait | ||
| 806 | until filled buffers become available this function, | ||
| 807 | :ref:`select() <func-select>` or :ref:`poll() <func-poll>` can | ||
| 808 | be used. The :ref:`VIDIOC_STREAMON` ioctl | ||
| 809 | must be called once after enqueuing one or more buffers to start | ||
| 810 | capturing. Its counterpart | ||
| 811 | :ref:`VIDIOC_STREAMOFF <VIDIOC_STREAMON>` stops capturing and | ||
| 812 | dequeues all buffers from both queues. Applications can query the | ||
| 813 | signal status, if known, with the | ||
| 814 | :ref:`VIDIOC_ENUMINPUT` ioctl. | ||
| 815 | 579 | ||
| 816 | 580 | ||
| 817 | For a more in-depth discussion of memory mapping and examples, see | 581 | For a more in-depth discussion of memory mapping and examples, see |
| @@ -833,68 +597,36 @@ with the following parameters: · 15 unmodified lines | |||
| 833 | :header-rows: 1 | 597 | :header-rows: 1 |
| 834 | :stub-columns: 0 | 598 | :stub-columns: 0 |
| 835 | 599 | ||
| 836 | 600 | * - struct :c:type:`v4l2_vbi_format` | |
| 837 | - .. row 1 | 601 | - V4L, BTTV driver |
| 838 | 602 | * - sampling_rate | |
| 839 | - struct :ref:`v4l2_vbi_format <v4l2-vbi-format>` | 603 | - 28636363 Hz NTSC (or any other 525-line standard); 35468950 Hz PAL |
| 840 | 604 | and SECAM (625-line standards) | |
| 841 | - V4L, BTTV driver | 605 | * - offset |
| 842 | 606 | - ? | |
| 843 | - .. row 2 | 607 | * - samples_per_line |
| 844 | 608 | - 2048 | |
| 845 | - sampling_rate | 609 | * - sample_format |
| 846 | 610 | - V4L2_PIX_FMT_GREY. The last four bytes (a machine endianness | |
| 847 | - 28636363 Hz NTSC (or any other 525-line standard); 35468950 Hz PAL | 611 | integer) contain a frame counter. |
| 848 | and SECAM (625-line standards) | 612 | * - start[] |
| 849 | 613 | - 10, 273 NTSC; 22, 335 PAL and SECAM | |
| 850 | - .. row 3 | 614 | * - count[] |
| 851 | 615 | - 16, 16 [#f9]_ | |
| 852 | - offset | 616 | * - flags |
| 853 | 617 | - 0 | |
| 854 | - ? | ||
| 855 | |||
| 856 | - .. row 4 | ||
| 857 | |||
| 858 | - samples_per_line | ||
| 859 | |||
| 860 | - 2048 | ||
| 861 | |||
| 862 | - .. row 5 | ||
| 863 | |||
| 864 | - sample_format | ||
| 865 | |||
| 866 | - V4L2_PIX_FMT_GREY. The last four bytes (a machine endianness | ||
| 867 | integer) contain a frame counter. | ||
| 868 | |||
| 869 | - .. row 6 | ||
| 870 | |||
| 871 | - start[] | ||
| 872 | |||
| 873 | - 10, 273 NTSC; 22, 335 PAL and SECAM | ||
| 874 | |||
| 875 | - .. row 7 | ||
| 876 | |||
| 877 | - count[] | ||
| 878 | |||
| 879 | - 16, 16 [#f9]_ | ||
| 880 | |||
| 881 | - .. row 8 | ||
| 882 | |||
| 883 | - flags | ||
| 884 | |||
| 885 | - 0 | ||
| 886 | 618 | ||
| 887 | 619 | ||
| 888 | Undocumented in the V4L specification, in Linux 2.3 the | 620 | Undocumented in the V4L specification, in Linux 2.3 the |
| 889 | ``VIDIOCGVBIFMT`` and ``VIDIOCSVBIFMT`` ioctls using struct | 621 | ``VIDIOCGVBIFMT`` and ``VIDIOCSVBIFMT`` ioctls using struct |
| 890 | :c:type:`struct vbi_format` were added to determine the VBI image | 622 | ``vbi_format`` were added to determine the VBI image |
| 891 | parameters. These ioctls are only partially compatible with the V4L2 VBI | 623 | parameters. These ioctls are only partially compatible with the V4L2 VBI |
| 892 | interface specified in :ref:`raw-vbi`. | 624 | interface specified in :ref:`raw-vbi`. |
| 893 | 625 | ||
| 894 | An ``offset`` field does not exist, ``sample_format`` is supposed to be | 626 | An ``offset`` field does not exist, ``sample_format`` is supposed to be |
| 895 | ``VIDEO_PALETTE_RAW``, equivalent to ``V4L2_PIX_FMT_GREY``. The | 627 | ``VIDEO_PALETTE_RAW``, equivalent to ``V4L2_PIX_FMT_GREY``. The |
| 896 | remaining fields are probably equivalent to struct | 628 | remaining fields are probably equivalent to struct |
| 897 | :ref:`v4l2_vbi_format <v4l2-vbi-format>`. | 629 | :c:type:`v4l2_vbi_format`. |
| 898 | 630 | ||
| 899 | Apparently only the Zoran (ZR 36120) driver implements these ioctls. The | 631 | Apparently only the Zoran (ZR 36120) driver implements these ioctls. The |
| 900 | semantics differ from those specified for V4L2 in two ways. The | 632 | semantics differ from those specified for V4L2 in two ways. The |
| @@ -19,7 +19,7 @@ exporting V4L2 buffers as DMABUF file descriptors. · 18 unmodified lines | |||
| 19 | 19 | ||
| 20 | Input and output devices support the streaming I/O method when the | 20 | Input and output devices support the streaming I/O method when the |
| 21 | ``V4L2_CAP_STREAMING`` flag in the ``capabilities`` field of struct | 21 | ``V4L2_CAP_STREAMING`` flag in the ``capabilities`` field of struct |
| 22 | :ref:`v4l2_capability <v4l2-capability>` returned by the | 22 | :c:type:`v4l2_capability` returned by the |
| 23 | :ref:`VIDIOC_QUERYCAP <VIDIOC_QUERYCAP>` ioctl is set. Whether | 23 | :ref:`VIDIOC_QUERYCAP <VIDIOC_QUERYCAP>` ioctl is set. Whether |
| 24 | importing DMA buffers through DMABUF file descriptors is supported is | 24 | importing DMA buffers through DMABUF file descriptors is supported is |
| 25 | determined by calling the :ref:`VIDIOC_REQBUFS <VIDIOC_REQBUFS>` | 25 | determined by calling the :ref:`VIDIOC_REQBUFS <VIDIOC_REQBUFS>` |
| @@ -31,8 +31,8 @@ DRM). Buffers (planes) are allocated by a driver on behalf of an · 5 unmodified lines | |||
| 31 | application. Next, these buffers are exported to the application as file | 31 | application. Next, these buffers are exported to the application as file |
| 32 | descriptors using an API which is specific for an allocator driver. Only | 32 | descriptors using an API which is specific for an allocator driver. Only |
| 33 | such file descriptor are exchanged. The descriptors and meta-information | 33 | such file descriptor are exchanged. The descriptors and meta-information |
| 34 | are passed in struct :ref:`v4l2_buffer <v4l2-buffer>` (or in struct | 34 | are passed in struct :c:type:`v4l2_buffer` (or in struct |
| 35 | :ref:`v4l2_plane <v4l2-plane>` in the multi-planar API case). The | 35 | :c:type:`v4l2_plane` in the multi-planar API case). The |
| 36 | driver must be switched into DMABUF I/O mode by calling the | 36 | driver must be switched into DMABUF I/O mode by calling the |
| 37 | :ref:`VIDIOC_REQBUFS <VIDIOC_REQBUFS>` with the desired buffer type. | 37 | :ref:`VIDIOC_REQBUFS <VIDIOC_REQBUFS>` with the desired buffer type. |
| 38 | 38 | ||
| @@ -151,7 +151,7 @@ To start and stop capturing or displaying applications call the · 112 unmodified lines | |||
| 151 | both queues and unlocks all buffers as a side effect. Since there is no | 151 | both queues and unlocks all buffers as a side effect. Since there is no |
| 152 | notion of doing anything "now" on a multitasking system, if an | 152 | notion of doing anything "now" on a multitasking system, if an |
| 153 | application needs to synchronize with another event it should examine | 153 | application needs to synchronize with another event it should examine |
| 154 | the struct :ref:`v4l2_buffer <v4l2-buffer>` ``timestamp`` of captured or | 154 | the struct :c:type:`v4l2_buffer` ``timestamp`` of captured or |
| 155 | outputted buffers. | 155 | outputted buffers. |
| 156 | 156 | ||
| 157 | Drivers implementing DMABUF importing I/O must support the | 157 | Drivers implementing DMABUF importing I/O must support the |
| @@ -49,7 +49,7 @@ control). This is needed since it is often required to atomically change · 48 unmodified lines | |||
| 49 | several controls at once. | 49 | several controls at once. |
| 50 | 50 | ||
| 51 | Each of the new ioctls expects a pointer to a struct | 51 | Each of the new ioctls expects a pointer to a struct |
| 52 | :ref:`v4l2_ext_controls <v4l2-ext-controls>`. This structure | 52 | :c:type:`v4l2_ext_controls`. This structure |
| 53 | contains a pointer to the control array, a count of the number of | 53 | contains a pointer to the control array, a count of the number of |
| 54 | controls in that array and a control class. Control classes are used to | 54 | controls in that array and a control class. Control classes are used to |
| 55 | group similar controls into a single class. For example, control class | 55 | group similar controls into a single class. For example, control class |
| @@ -65,12 +65,12 @@ It is also possible to use an empty control array (``count`` == 0) to check · 9 unmodified lines | |||
| 65 | whether the specified control class is supported. | 65 | whether the specified control class is supported. |
| 66 | 66 | ||
| 67 | The control array is a struct | 67 | The control array is a struct |
| 68 | :ref:`v4l2_ext_control <v4l2-ext-control>` array. The | 68 | :c:type:`v4l2_ext_control` array. The |
| 69 | :ref:`struct v4l2_ext_control <v4l2-ext-control>` structure is very similar to | 69 | struct :c:type:`v4l2_ext_control` is very similar to |
| 70 | struct :ref:`v4l2_control <v4l2-control>`, except for the fact that | 70 | struct :c:type:`v4l2_control`, except for the fact that |
| 71 | it also allows for 64-bit values and pointers to be passed. | 71 | it also allows for 64-bit values and pointers to be passed. |
| 72 | 72 | ||
| 73 | Since the struct :ref:`v4l2_ext_control <v4l2-ext-control>` supports | 73 | Since the struct :c:type:`v4l2_ext_control` supports |
| 74 | pointers it is now also possible to have controls with compound types | 74 | pointers it is now also possible to have controls with compound types |
| 75 | such as N-dimensional arrays and/or structures. You need to specify the | 75 | such as N-dimensional arrays and/or structures. You need to specify the |
| 76 | ``V4L2_CTRL_FLAG_NEXT_COMPOUND`` when enumerating controls to actually | 76 | ``V4L2_CTRL_FLAG_NEXT_COMPOUND`` when enumerating controls to actually |
| @@ -184,7 +184,9 @@ Codec Control Reference · 107 unmodified lines | |||
| 184 | Below all controls within the Codec control class are described. First | 184 | Below all controls within the Codec control class are described. First |
| 185 | the generic controls, then controls specific for certain hardware. | 185 | the generic controls, then controls specific for certain hardware. |
| 186 | 186 | ||
| 187 | .. note:: These controls are applicable to all codecs and not just MPEG. The | 187 | .. note:: |
| 188 | |||
| 189 | These controls are applicable to all codecs and not just MPEG. The | ||
| 188 | defines are prefixed with V4L2_CID_MPEG/V4L2_MPEG as the controls | 190 | defines are prefixed with V4L2_CID_MPEG/V4L2_MPEG as the controls |
| 189 | were originally made for MPEG codecs and later extended to cover all | 191 | were originally made for MPEG codecs and later extended to cover all |
| 190 | encoding formats. | 192 | encoding formats. |
| @@ -207,7 +209,10 @@ Codec Control IDs · 16 unmodified lines | |||
| 207 | 209 | ||
| 208 | .. _v4l2-mpeg-stream-type: | 210 | .. _v4l2-mpeg-stream-type: |
| 209 | 211 | ||
| 210 | ``V4L2_CID_MPEG_STREAM_TYPE (enum v4l2_mpeg_stream_type)`` | 212 | ``V4L2_CID_MPEG_STREAM_TYPE`` |
| 213 | (enum) | ||
| 214 | |||
| 215 | enum v4l2_mpeg_stream_type - | ||
| 211 | The MPEG-1, -2 or -4 output stream type. One cannot assume anything | 216 | The MPEG-1, -2 or -4 output stream type. One cannot assume anything |
| 212 | here. Each hardware MPEG encoder tends to support different subsets | 217 | here. Each hardware MPEG encoder tends to support different subsets |
| 213 | of the available MPEG stream types. This control is specific to | 218 | of the available MPEG stream types. This control is specific to |
| @@ -219,42 +224,18 @@ Codec Control IDs · 5 unmodified lines | |||
| 219 | :header-rows: 0 | 224 | :header-rows: 0 |
| 220 | :stub-columns: 0 | 225 | :stub-columns: 0 |
| 221 | 226 | ||
| 222 | 227 | * - ``V4L2_MPEG_STREAM_TYPE_MPEG2_PS`` | |
| 223 | - .. row 1 | 228 | - MPEG-2 program stream |
| 224 | 229 | * - ``V4L2_MPEG_STREAM_TYPE_MPEG2_TS`` | |
| 225 | - ``V4L2_MPEG_STREAM_TYPE_MPEG2_PS`` | 230 | - MPEG-2 transport stream |
| 226 | 231 | * - ``V4L2_MPEG_STREAM_TYPE_MPEG1_SS`` | |
| 227 | - MPEG-2 program stream | 232 | - MPEG-1 system stream |
| 228 | 233 | * - ``V4L2_MPEG_STREAM_TYPE_MPEG2_DVD`` | |
| 229 | - .. row 2 | 234 | - MPEG-2 DVD-compatible stream |
| 230 | 235 | * - ``V4L2_MPEG_STREAM_TYPE_MPEG1_VCD`` | |
| 231 | - ``V4L2_MPEG_STREAM_TYPE_MPEG2_TS`` | 236 | - MPEG-1 VCD-compatible stream |
| 232 | 237 | * - ``V4L2_MPEG_STREAM_TYPE_MPEG2_SVCD`` | |
| 233 | - MPEG-2 transport stream | 238 | - MPEG-2 SVCD-compatible stream |
| 234 | |||
| 235 | - .. row 3 | ||
| 236 | |||
| 237 | - ``V4L2_MPEG_STREAM_TYPE_MPEG1_SS`` | ||
| 238 | |||
| 239 | - MPEG-1 system stream | ||
| 240 | |||
| 241 | - .. row 4 | ||
| 242 | |||
| 243 | - ``V4L2_MPEG_STREAM_TYPE_MPEG2_DVD`` | ||
| 244 | |||
| 245 | - MPEG-2 DVD-compatible stream | ||
| 246 | |||
| 247 | - .. row 5 | ||
| 248 | |||
| 249 | - ``V4L2_MPEG_STREAM_TYPE_MPEG1_VCD`` | ||
| 250 | |||
| 251 | - MPEG-1 VCD-compatible stream | ||
| 252 | |||
| 253 | - .. row 6 | ||
| 254 | |||
| 255 | - ``V4L2_MPEG_STREAM_TYPE_MPEG2_SVCD`` | ||
| 256 | |||
| 257 | - MPEG-2 SVCD-compatible stream | ||
| 258 | 239 | ||
| 259 | 240 | ||
| 260 | 241 | ||
| @@ -280,7 +261,10 @@ Codec Control IDs · 19 unmodified lines | |||
| 280 | 261 | ||
| 281 | .. _v4l2-mpeg-stream-vbi-fmt: | 262 | .. _v4l2-mpeg-stream-vbi-fmt: |
| 282 | 263 | ||
| 283 | ``V4L2_CID_MPEG_STREAM_VBI_FMT (enum v4l2_mpeg_stream_vbi_fmt)`` | 264 | ``V4L2_CID_MPEG_STREAM_VBI_FMT`` |
| 265 | (enum) | ||
| 266 | |||
| 267 | enum v4l2_mpeg_stream_vbi_fmt - | ||
| 284 | Some cards can embed VBI data (e. g. Closed Caption, Teletext) into | 268 | Some cards can embed VBI data (e. g. Closed Caption, Teletext) into |
| 285 | the MPEG stream. This control selects whether VBI data should be | 269 | the MPEG stream. This control selects whether VBI data should be |
| 286 | embedded, and if so, what embedding method should be used. The list | 270 | embedded, and if so, what embedding method should be used. The list |
| @@ -289,30 +273,27 @@ Codec Control IDs · 2 unmodified lines | |||
| 289 | 273 | ||
| 290 | 274 | ||
| 291 | 275 | ||
| 276 | .. tabularcolumns:: |p{6 cm}|p{11.5cm}| | ||
| 277 | |||
| 292 | .. flat-table:: | 278 | .. flat-table:: |
| 293 | :header-rows: 0 | 279 | :header-rows: 0 |
| 294 | :stub-columns: 0 | 280 | :stub-columns: 0 |
| 295 | 281 | ||
| 296 | 282 | * - ``V4L2_MPEG_STREAM_VBI_FMT_NONE`` | |
| 297 | - .. row 1 | 283 | - No VBI in the MPEG stream |
| 298 | 284 | * - ``V4L2_MPEG_STREAM_VBI_FMT_IVTV`` | |
| 299 | - ``V4L2_MPEG_STREAM_VBI_FMT_NONE`` | 285 | - VBI in private packets, IVTV format (documented in the kernel |
| 300 | 286 | sources in the file | |
| 301 | - No VBI in the MPEG stream | 287 | ``Documentation/video4linux/cx2341x/README.vbi``) |
| 302 | |||
| 303 | - .. row 2 | ||
| 304 | |||
| 305 | - ``V4L2_MPEG_STREAM_VBI_FMT_IVTV`` | ||
| 306 | |||
| 307 | - VBI in private packets, IVTV format (documented in the kernel | ||
| 308 | sources in the file | ||
| 309 | ``Documentation/video4linux/cx2341x/README.vbi``) | ||
| 310 | 288 | ||
| 311 | 289 | ||
| 312 | 290 | ||
| 313 | .. _v4l2-mpeg-audio-sampling-freq: | 291 | .. _v4l2-mpeg-audio-sampling-freq: |
| 314 | 292 | ||
| 315 | ``V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ (enum v4l2_mpeg_audio_sampling_freq)`` | 293 | ``V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ`` |
| 294 | (enum) | ||
| 295 | |||
| 296 | enum v4l2_mpeg_audio_sampling_freq - | ||
| 316 | MPEG Audio sampling frequency. Possible values are: | 297 | MPEG Audio sampling frequency. Possible values are: |
| 317 | 298 | ||
| 318 | 299 | ||
| @@ -321,30 +302,21 @@ Codec Control IDs · 2 unmodified lines | |||
| 321 | :header-rows: 0 | 302 | :header-rows: 0 |
| 322 | :stub-columns: 0 | 303 | :stub-columns: 0 |
| 323 | 304 | ||
| 324 | 305 | * - ``V4L2_MPEG_AUDIO_SAMPLING_FREQ_44100`` | |
| 325 | - .. row 1 | 306 | - 44.1 kHz |
| 326 | 307 | * - ``V4L2_MPEG_AUDIO_SAMPLING_FREQ_48000`` | |
| 327 | - ``V4L2_MPEG_AUDIO_SAMPLING_FREQ_44100`` | 308 | - 48 kHz |
| 328 | 309 | * - ``V4L2_MPEG_AUDIO_SAMPLING_FREQ_32000`` | |
| 329 | - 44.1 kHz | 310 | - 32 kHz |
| 330 | |||
| 331 | - .. row 2 | ||
| 332 | |||
| 333 | - ``V4L2_MPEG_AUDIO_SAMPLING_FREQ_48000`` | ||
| 334 | |||
| 335 | - 48 kHz | ||
| 336 | |||
| 337 | - .. row 3 | ||
| 338 | |||
| 339 | - ``V4L2_MPEG_AUDIO_SAMPLING_FREQ_32000`` | ||
| 340 | |||
| 341 | - 32 kHz | ||
| 342 | 311 | ||
| 343 | 312 | ||
| 344 | 313 | ||
| 345 | .. _v4l2-mpeg-audio-encoding: | 314 | .. _v4l2-mpeg-audio-encoding: |
| 346 | 315 | ||
| 347 | ``V4L2_CID_MPEG_AUDIO_ENCODING (enum v4l2_mpeg_audio_encoding)`` | 316 | ``V4L2_CID_MPEG_AUDIO_ENCODING`` |
| 317 | (enum) | ||
| 318 | |||
| 319 | enum v4l2_mpeg_audio_encoding - | ||
| 348 | MPEG Audio encoding. This control is specific to multiplexed MPEG | 320 | MPEG Audio encoding. This control is specific to multiplexed MPEG |
| 349 | streams. Possible values are: | 321 | streams. Possible values are: |
| 350 | 322 | ||
| @@ -354,42 +326,25 @@ Codec Control IDs · 3 unmodified lines | |||
| 354 | :header-rows: 0 | 326 | :header-rows: 0 |
| 355 | :stub-columns: 0 | 327 | :stub-columns: 0 |
| 356 | 328 | ||
| 357 | 329 | * - ``V4L2_MPEG_AUDIO_ENCODING_LAYER_1`` | |
| 358 | - .. row 1 | 330 | - MPEG-1/2 Layer I encoding |
| 359 | 331 | * - ``V4L2_MPEG_AUDIO_ENCODING_LAYER_2`` | |
| 360 | - ``V4L2_MPEG_AUDIO_ENCODING_LAYER_1`` | 332 | - MPEG-1/2 Layer II encoding |
| 361 | 333 | * - ``V4L2_MPEG_AUDIO_ENCODING_LAYER_3`` | |
| 362 | - MPEG-1/2 Layer I encoding | 334 | - MPEG-1/2 Layer III encoding |
| 363 | 335 | * - ``V4L2_MPEG_AUDIO_ENCODING_AAC`` | |
| 364 | - .. row 2 | 336 | - MPEG-2/4 AAC (Advanced Audio Coding) |
| 365 | 337 | * - ``V4L2_MPEG_AUDIO_ENCODING_AC3`` | |
| 366 | - ``V4L2_MPEG_AUDIO_ENCODING_LAYER_2`` | 338 | - AC-3 aka ATSC A/52 encoding |
| 367 | |||
| 368 | - MPEG-1/2 Layer II encoding | ||
| 369 | |||
| 370 | - .. row 3 | ||
| 371 | |||
| 372 | - ``V4L2_MPEG_AUDIO_ENCODING_LAYER_3`` | ||
| 373 | |||
| 374 | - MPEG-1/2 Layer III encoding | ||
| 375 | |||
| 376 | - .. row 4 | ||
| 377 | |||
| 378 | - ``V4L2_MPEG_AUDIO_ENCODING_AAC`` | ||
| 379 | |||
| 380 | - MPEG-2/4 AAC (Advanced Audio Coding) | ||
| 381 | |||
| 382 | - .. row 5 | ||
| 383 | |||
| 384 | - ``V4L2_MPEG_AUDIO_ENCODING_AC3`` | ||
| 385 | |||
| 386 | - AC-3 aka ATSC A/52 encoding | ||
| 387 | 339 | ||
| 388 | 340 | ||
| 389 | 341 | ||
| 390 | .. _v4l2-mpeg-audio-l1-bitrate: | 342 | .. _v4l2-mpeg-audio-l1-bitrate: |
| 391 | 343 | ||
| 392 | ``V4L2_CID_MPEG_AUDIO_L1_BITRATE (enum v4l2_mpeg_audio_l1_bitrate)`` | 344 | ``V4L2_CID_MPEG_AUDIO_L1_BITRATE`` |
| 345 | (enum) | ||
| 346 | |||
| 347 | enum v4l2_mpeg_audio_l1_bitrate - | ||
| 393 | MPEG-1/2 Layer I bitrate. Possible values are: | 348 | MPEG-1/2 Layer I bitrate. Possible values are: |
| 394 | 349 | ||
| 395 | 350 | ||
| @@ -398,97 +353,89 @@ Codec Control IDs · 2 unmodified lines | |||
| 398 | :header-rows: 0 | 353 | :header-rows: 0 |
| 399 | :stub-columns: 0 | 354 | :stub-columns: 0 |
| 400 | 355 | ||
| 356 | * - ``V4L2_MPEG_AUDIO_L1_BITRATE_32K`` | ||
| 357 | - 32 kbit/s | ||
| 358 | * - ``V4L2_MPEG_AUDIO_L1_BITRATE_64K`` | ||
| 359 | - 64 kbit/s | ||
| 360 | * - ``V4L2_MPEG_AUDIO_L1_BITRATE_96K`` | ||
| 361 | - 96 kbit/s | ||
| 362 | * - ``V4L2_MPEG_AUDIO_L1_BITRATE_128K`` | ||
| 363 | - 128 kbit/s | ||
| 364 | * - ``V4L2_MPEG_AUDIO_L1_BITRATE_160K`` | ||
| 365 | - 160 kbit/s | ||
| 366 | * - ``V4L2_MPEG_AUDIO_L1_BITRATE_192K`` | ||
| 367 | - 192 kbit/s | ||
| 368 | * - ``V4L2_MPEG_AUDIO_L1_BITRATE_224K`` | ||
| 369 | - 224 kbit/s | ||
| 370 | * - ``V4L2_MPEG_AUDIO_L1_BITRATE_256K`` | ||
| 371 | - 256 kbit/s | ||
| 372 | * - ``V4L2_MPEG_AUDIO_L1_BITRATE_288K`` | ||
| 373 | - 288 kbit/s | ||
| 374 | * - ``V4L2_MPEG_AUDIO_L1_BITRATE_320K`` | ||
| 375 | - 320 kbit/s | ||
| 376 | * - ``V4L2_MPEG_AUDIO_L1_BITRATE_352K`` | ||
| 377 | - 352 kbit/s | ||
| 378 | * - ``V4L2_MPEG_AUDIO_L1_BITRATE_384K`` | ||
| 379 | - 384 kbit/s | ||
| 380 | * - ``V4L2_MPEG_AUDIO_L1_BITRATE_416K`` | ||
| 381 | - 416 kbit/s | ||
| 382 | * - ``V4L2_MPEG_AUDIO_L1_BITRATE_448K`` | ||
| 383 | - 448 kbit/s | ||
| 401 | 384 | ||
| 402 | - .. row 1 | ||
| 403 | |||
| 404 | - ``V4L2_MPEG_AUDIO_L1_BITRATE_32K`` | ||
| 405 | |||
| 406 | - 32 kbit/s | ||
| 407 | |||
| 408 | - .. row 2 | ||
| 409 | |||
| 410 | - ``V4L2_MPEG_AUDIO_L1_BITRATE_64K`` | ||
| 411 | |||
| 412 | - 64 kbit/s | ||
| 413 | |||
| 414 | - .. row 3 | ||
| 415 | |||
| 416 | - ``V4L2_MPEG_AUDIO_L1_BITRATE_96K`` | ||
| 417 | |||
| 418 | - 96 kbit/s | ||
| 419 | 385 | ||
| 420 | - .. row 4 | ||
| 421 | 386 | ||
| 422 | - ``V4L2_MPEG_AUDIO_L1_BITRATE_128K`` | 387 | .. _v4l2-mpeg-audio-l2-bitrate: |
| 423 | |||
| 424 | - 128 kbit/s | ||
| 425 | |||
| 426 | - .. row 5 | ||
| 427 | |||
| 428 | - ``V4L2_MPEG_AUDIO_L1_BITRATE_160K`` | ||
| 429 | |||
| 430 | - 160 kbit/s | ||
| 431 | |||
| 432 | - .. row 6 | ||
| 433 | |||
| 434 | - ``V4L2_MPEG_AUDIO_L1_BITRATE_192K`` | ||
| 435 | |||
| 436 | - 192 kbit/s | ||
| 437 | |||
| 438 | - .. row 7 | ||
| 439 | |||
| 440 | - ``V4L2_MPEG_AUDIO_L1_BITRATE_224K`` | ||
| 441 | |||
| 442 | - 224 kbit/s | ||
| 443 | |||
| 444 | - .. row 8 | ||
| 445 | |||
| 446 | - ``V4L2_MPEG_AUDIO_L1_BITRATE_256K`` | ||
| 447 | |||
| 448 | - 256 kbit/s | ||
| 449 | |||
| 450 | - .. row 9 | ||
| 451 | |||
| 452 | - ``V4L2_MPEG_AUDIO_L1_BITRATE_288K`` | ||
| 453 | |||
| 454 | - 288 kbit/s | ||
| 455 | |||
| 456 | - .. row 10 | ||
| 457 | |||
| 458 | - ``V4L2_MPEG_AUDIO_L1_BITRATE_320K`` | ||
| 459 | |||
| 460 | - 320 kbit/s | ||
| 461 | |||
| 462 | - .. row 11 | ||
| 463 | |||
| 464 | - ``V4L2_MPEG_AUDIO_L1_BITRATE_352K`` | ||
| 465 | |||
| 466 | - 352 kbit/s | ||
| 467 | |||
| 468 | - .. row 12 | ||
| 469 | |||
| 470 | - ``V4L2_MPEG_AUDIO_L1_BITRATE_384K`` | ||
| 471 | 388 | ||
| 472 | - 384 kbit/s | 389 | ``V4L2_CID_MPEG_AUDIO_L2_BITRATE`` |
| 390 | (enum) | ||
| 473 | 391 | ||
| 474 | - .. row 13 | 392 | enum v4l2_mpeg_audio_l2_bitrate - |
| 393 | MPEG-1/2 Layer II bitrate. Possible values are: | ||
| 475 | 394 | ||
| 476 | - ``V4L2_MPEG_AUDIO_L1_BITRATE_416K`` | ||
| 477 | 395 | ||
| 478 | - 416 kbit/s | ||
| 479 | 396 | ||
| 480 | - .. row 14 | 397 | .. flat-table:: |
| 398 | :header-rows: 0 | ||
| 399 | :stub-columns: 0 | ||
| 481 | 400 | ||
| 482 | - ``V4L2_MPEG_AUDIO_L1_BITRATE_448K`` | 401 | * - ``V4L2_MPEG_AUDIO_L2_BITRATE_32K`` |
| 402 | - 32 kbit/s | ||
| 403 | * - ``V4L2_MPEG_AUDIO_L2_BITRATE_48K`` | ||
| 404 | - 48 kbit/s | ||
| 405 | * - ``V4L2_MPEG_AUDIO_L2_BITRATE_56K`` | ||
| 406 | - 56 kbit/s | ||
| 407 | * - ``V4L2_MPEG_AUDIO_L2_BITRATE_64K`` | ||
| 408 | - 64 kbit/s | ||
| 409 | * - ``V4L2_MPEG_AUDIO_L2_BITRATE_80K`` | ||
| 410 | - 80 kbit/s | ||
| 411 | * - ``V4L2_MPEG_AUDIO_L2_BITRATE_96K`` | ||
| 412 | - 96 kbit/s | ||
| 413 | * - ``V4L2_MPEG_AUDIO_L2_BITRATE_112K`` | ||
| 414 | - 112 kbit/s | ||
| 415 | * - ``V4L2_MPEG_AUDIO_L2_BITRATE_128K`` | ||
| 416 | - 128 kbit/s | ||
| 417 | * - ``V4L2_MPEG_AUDIO_L2_BITRATE_160K`` | ||
| 418 | - 160 kbit/s | ||
| 419 | * - ``V4L2_MPEG_AUDIO_L2_BITRATE_192K`` | ||
| 420 | - 192 kbit/s | ||
| 421 | * - ``V4L2_MPEG_AUDIO_L2_BITRATE_224K`` | ||
| 422 | - 224 kbit/s | ||
| 423 | * - ``V4L2_MPEG_AUDIO_L2_BITRATE_256K`` | ||
| 424 | - 256 kbit/s | ||
| 425 | * - ``V4L2_MPEG_AUDIO_L2_BITRATE_320K`` | ||
| 426 | - 320 kbit/s | ||
| 427 | * - ``V4L2_MPEG_AUDIO_L2_BITRATE_384K`` | ||
| 428 | - 384 kbit/s | ||
| 483 | 429 | ||
| 484 | - 448 kbit/s | ||
| 485 | 430 | ||
| 486 | 431 | ||
| 432 | .. _v4l2-mpeg-audio-l3-bitrate: | ||
| 487 | 433 | ||
| 488 | .. _v4l2-mpeg-audio-l2-bitrate: | 434 | ``V4L2_CID_MPEG_AUDIO_L3_BITRATE`` |
| 435 | (enum) | ||
| 489 | 436 | ||
| 490 | ``V4L2_CID_MPEG_AUDIO_L2_BITRATE (enum v4l2_mpeg_audio_l2_bitrate)`` | 437 | enum v4l2_mpeg_audio_l3_bitrate - |
| 491 | MPEG-1/2 Layer II bitrate. Possible values are: | 438 | MPEG-1/2 Layer III bitrate. Possible values are: |
| 492 | 439 | ||
| 493 | 440 | ||
| 494 | 441 | ||
| @@ -496,97 +443,177 @@ Codec Control IDs · 1 unmodified line | |||
| 496 | :header-rows: 0 | 443 | :header-rows: 0 |
| 497 | :stub-columns: 0 | 444 | :stub-columns: 0 |
| 498 | 445 | ||
| 446 | * - ``V4L2_MPEG_AUDIO_L3_BITRATE_32K`` | ||
| 447 | - 32 kbit/s | ||
| 448 | * - ``V4L2_MPEG_AUDIO_L3_BITRATE_40K`` | ||
| 449 | - 40 kbit/s | ||
| 450 | * - ``V4L2_MPEG_AUDIO_L3_BITRATE_48K`` | ||
| 451 | - 48 kbit/s | ||
| 452 | * - ``V4L2_MPEG_AUDIO_L3_BITRATE_56K`` | ||
| 453 | - 56 kbit/s | ||
| 454 | * - ``V4L2_MPEG_AUDIO_L3_BITRATE_64K`` | ||
| 455 | - 64 kbit/s | ||
| 456 | * - ``V4L2_MPEG_AUDIO_L3_BITRATE_80K`` | ||
| 457 | - 80 kbit/s | ||
| 458 | * - ``V4L2_MPEG_AUDIO_L3_BITRATE_96K`` | ||
| 459 | - 96 kbit/s | ||
| 460 | * - ``V4L2_MPEG_AUDIO_L3_BITRATE_112K`` | ||
| 461 | - 112 kbit/s | ||
| 462 | * - ``V4L2_MPEG_AUDIO_L3_BITRATE_128K`` | ||
| 463 | - 128 kbit/s | ||
| 464 | * - ``V4L2_MPEG_AUDIO_L3_BITRATE_160K`` | ||
| 465 | - 160 kbit/s | ||
| 466 | * - ``V4L2_MPEG_AUDIO_L3_BITRATE_192K`` | ||
| 467 | - 192 kbit/s | ||
| 468 | * - ``V4L2_MPEG_AUDIO_L3_BITRATE_224K`` | ||
| 469 | - 224 kbit/s | ||
| 470 | * - ``V4L2_MPEG_AUDIO_L3_BITRATE_256K`` | ||
| 471 | - 256 kbit/s | ||
| 472 | * - ``V4L2_MPEG_AUDIO_L3_BITRATE_320K`` | ||
| 473 | - 320 kbit/s | ||
| 499 | 474 | ||
| 500 | - .. row 1 | ||
| 501 | |||
| 502 | - ``V4L2_MPEG_AUDIO_L2_BITRATE_32K`` | ||
| 503 | |||
| 504 | - 32 kbit/s | ||
| 505 | |||
| 506 | - .. row 2 | ||
| 507 | 475 | ||
| 508 | - ``V4L2_MPEG_AUDIO_L2_BITRATE_48K`` | ||
| 509 | 476 | ||
| 510 | - 48 kbit/s | 477 | ``V4L2_CID_MPEG_AUDIO_AAC_BITRATE (integer)`` |
| 511 | 478 | AAC bitrate in bits per second. | |
| 512 | - .. row 3 | ||
| 513 | 479 | ||
| 514 | - ``V4L2_MPEG_AUDIO_L2_BITRATE_56K`` | 480 | .. _v4l2-mpeg-audio-ac3-bitrate: |
| 515 | 481 | ||
| 516 | - 56 kbit/s | 482 | ``V4L2_CID_MPEG_AUDIO_AC3_BITRATE`` |
| 483 | (enum) | ||
| 517 | 484 | ||
| 518 | - .. row 4 | 485 | enum v4l2_mpeg_audio_ac3_bitrate - |
| 486 | AC-3 bitrate. Possible values are: | ||
| 519 | 487 | ||
| 520 | - ``V4L2_MPEG_AUDIO_L2_BITRATE_64K`` | ||
| 521 | 488 | ||
| 522 | - 64 kbit/s | ||
| 523 | 489 | ||
| 524 | - .. row 5 | 490 | .. flat-table:: |
| 491 | :header-rows: 0 | ||
| 492 | :stub-columns: 0 | ||
| 525 | 493 | ||
| 526 | - ``V4L2_MPEG_AUDIO_L2_BITRATE_80K`` | 494 | * - ``V4L2_MPEG_AUDIO_AC3_BITRATE_32K`` |
| 495 | - 32 kbit/s | ||
| 496 | * - ``V4L2_MPEG_AUDIO_AC3_BITRATE_40K`` | ||
| 497 | - 40 kbit/s | ||
| 498 | * - ``V4L2_MPEG_AUDIO_AC3_BITRATE_48K`` | ||
| 499 | - 48 kbit/s | ||
| 500 | * - ``V4L2_MPEG_AUDIO_AC3_BITRATE_56K`` | ||
| 501 | - 56 kbit/s | ||
| 502 | * - ``V4L2_MPEG_AUDIO_AC3_BITRATE_64K`` | ||
| 503 | - 64 kbit/s | ||
| 504 | * - ``V4L2_MPEG_AUDIO_AC3_BITRATE_80K`` | ||
| 505 | - 80 kbit/s | ||
| 506 | * - ``V4L2_MPEG_AUDIO_AC3_BITRATE_96K`` | ||
| 507 | - 96 kbit/s | ||
| 508 | * - ``V4L2_MPEG_AUDIO_AC3_BITRATE_112K`` | ||
| 509 | - 112 kbit/s | ||
| 510 | * - ``V4L2_MPEG_AUDIO_AC3_BITRATE_128K`` | ||
| 511 | - 128 kbit/s | ||
| 512 | * - ``V4L2_MPEG_AUDIO_AC3_BITRATE_160K`` | ||
| 513 | - 160 kbit/s | ||
| 514 | * - ``V4L2_MPEG_AUDIO_AC3_BITRATE_192K`` | ||
| 515 | - 192 kbit/s | ||
| 516 | * - ``V4L2_MPEG_AUDIO_AC3_BITRATE_224K`` | ||
| 517 | - 224 kbit/s | ||
| 518 | * - ``V4L2_MPEG_AUDIO_AC3_BITRATE_256K`` | ||
| 519 | - 256 kbit/s | ||
| 520 | * - ``V4L2_MPEG_AUDIO_AC3_BITRATE_320K`` | ||
| 521 | - 320 kbit/s | ||
| 522 | * - ``V4L2_MPEG_AUDIO_AC3_BITRATE_384K`` | ||
| 523 | - 384 kbit/s | ||
| 524 | * - ``V4L2_MPEG_AUDIO_AC3_BITRATE_448K`` | ||
| 525 | - 448 kbit/s | ||
| 526 | * - ``V4L2_MPEG_AUDIO_AC3_BITRATE_512K`` | ||
| 527 | - 512 kbit/s | ||
| 528 | * - ``V4L2_MPEG_AUDIO_AC3_BITRATE_576K`` | ||
| 529 | - 576 kbit/s | ||
| 530 | * - ``V4L2_MPEG_AUDIO_AC3_BITRATE_640K`` | ||
| 531 | - 640 kbit/s | ||
| 527 | 532 | ||
| 528 | - 80 kbit/s | ||
| 529 | 533 | ||
| 530 | - .. row 6 | ||
| 531 | 534 | ||
| 532 | - ``V4L2_MPEG_AUDIO_L2_BITRATE_96K`` | 535 | .. _v4l2-mpeg-audio-mode: |
| 533 | 536 | ||
| 534 | - 96 kbit/s | 537 | ``V4L2_CID_MPEG_AUDIO_MODE`` |
| 538 | (enum) | ||
| 535 | 539 | ||
| 536 | - .. row 7 | 540 | enum v4l2_mpeg_audio_mode - |
| 541 | MPEG Audio mode. Possible values are: | ||
| 537 | 542 | ||
| 538 | - ``V4L2_MPEG_AUDIO_L2_BITRATE_112K`` | ||
| 539 | 543 | ||
| 540 | - 112 kbit/s | ||
| 541 | 544 | ||
| 542 | - .. row 8 | 545 | .. flat-table:: |
| 546 | :header-rows: 0 | ||
| 547 | :stub-columns: 0 | ||
| 543 | 548 | ||
| 544 | - ``V4L2_MPEG_AUDIO_L2_BITRATE_128K`` | 549 | * - ``V4L2_MPEG_AUDIO_MODE_STEREO`` |
| 550 | - Stereo | ||
| 551 | * - ``V4L2_MPEG_AUDIO_MODE_JOINT_STEREO`` | ||
| 552 | - Joint Stereo | ||
| 553 | * - ``V4L2_MPEG_AUDIO_MODE_DUAL`` | ||
| 554 | - Bilingual | ||
| 555 | * - ``V4L2_MPEG_AUDIO_MODE_MONO`` | ||
| 556 | - Mono | ||
| 545 | 557 | ||
| 546 | - 128 kbit/s | ||
| 547 | 558 | ||
| 548 | - .. row 9 | ||
| 549 | 559 | ||
| 550 | - ``V4L2_MPEG_AUDIO_L2_BITRATE_160K`` | 560 | .. _v4l2-mpeg-audio-mode-extension: |
| 551 | 561 | ||
| 552 | - 160 kbit/s | 562 | ``V4L2_CID_MPEG_AUDIO_MODE_EXTENSION`` |
| 563 | (enum) | ||
| 553 | 564 | ||
| 554 | - .. row 10 | 565 | enum v4l2_mpeg_audio_mode_extension - |
| 566 | Joint Stereo audio mode extension. In Layer I and II they indicate | ||
| 567 | which subbands are in intensity stereo. All other subbands are coded | ||
| 568 | in stereo. Layer III is not (yet) supported. Possible values are: | ||
| 555 | 569 | ||
| 556 | - ``V4L2_MPEG_AUDIO_L2_BITRATE_192K`` | ||
| 557 | 570 | ||
| 558 | - 192 kbit/s | ||
| 559 | 571 | ||
| 560 | - .. row 11 | 572 | .. flat-table:: |
| 573 | :header-rows: 0 | ||
| 574 | :stub-columns: 0 | ||
| 561 | 575 | ||
| 562 | - ``V4L2_MPEG_AUDIO_L2_BITRATE_224K`` | 576 | * - ``V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_4`` |
| 577 | - Subbands 4-31 in intensity stereo | ||
| 578 | * - ``V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_8`` | ||
| 579 | - Subbands 8-31 in intensity stereo | ||
| 580 | * - ``V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_12`` | ||
| 581 | - Subbands 12-31 in intensity stereo | ||
| 582 | * - ``V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_16`` | ||
| 583 | - Subbands 16-31 in intensity stereo | ||
| 563 | 584 | ||
| 564 | - 224 kbit/s | ||
| 565 | 585 | ||
| 566 | - .. row 12 | ||
| 567 | 586 | ||
| 568 | - ``V4L2_MPEG_AUDIO_L2_BITRATE_256K`` | 587 | .. _v4l2-mpeg-audio-emphasis: |
| 569 | 588 | ||
| 570 | - 256 kbit/s | 589 | ``V4L2_CID_MPEG_AUDIO_EMPHASIS`` |
| 590 | (enum) | ||
| 571 | 591 | ||
| 572 | - .. row 13 | 592 | enum v4l2_mpeg_audio_emphasis - |
| 593 | Audio Emphasis. Possible values are: | ||
| 573 | 594 | ||
| 574 | - ``V4L2_MPEG_AUDIO_L2_BITRATE_320K`` | ||
| 575 | 595 | ||
| 576 | - 320 kbit/s | ||
| 577 | 596 | ||
| 578 | - .. row 14 | 597 | .. flat-table:: |
| 598 | :header-rows: 0 | ||
| 599 | :stub-columns: 0 | ||
| 579 | 600 | ||
| 580 | - ``V4L2_MPEG_AUDIO_L2_BITRATE_384K`` | 601 | * - ``V4L2_MPEG_AUDIO_EMPHASIS_NONE`` |
| 602 | - None | ||
| 603 | * - ``V4L2_MPEG_AUDIO_EMPHASIS_50_DIV_15_uS`` | ||
| 604 | - 50/15 microsecond emphasis | ||
| 605 | * - ``V4L2_MPEG_AUDIO_EMPHASIS_CCITT_J17`` | ||
| 606 | - CCITT J.17 | ||
| 581 | 607 | ||
| 582 | - 384 kbit/s | ||
| 583 | 608 | ||
| 584 | 609 | ||
| 610 | .. _v4l2-mpeg-audio-crc: | ||
| 585 | 611 | ||
| 586 | .. _v4l2-mpeg-audio-l3-bitrate: | 612 | ``V4L2_CID_MPEG_AUDIO_CRC`` |
| 613 | (enum) | ||
| 587 | 614 | ||
| 588 | ``V4L2_CID_MPEG_AUDIO_L3_BITRATE (enum v4l2_mpeg_audio_l3_bitrate)`` | 615 | enum v4l2_mpeg_audio_crc - |
| 589 | MPEG-1/2 Layer III bitrate. Possible values are: | 616 | CRC method. Possible values are: |
| 590 | 617 | ||
| 591 | 618 | ||
| 592 | 619 | ||
| @@ -594,100 +621,123 @@ Codec Control IDs · 1 unmodified line | |||
| 594 | :header-rows: 0 | 621 | :header-rows: 0 |
| 595 | :stub-columns: 0 | 622 | :stub-columns: 0 |
| 596 | 623 | ||
| 624 | * - ``V4L2_MPEG_AUDIO_CRC_NONE`` | ||
| 625 | - None | ||
| 626 | * - ``V4L2_MPEG_AUDIO_CRC_CRC16`` | ||
| 627 | - 16 bit parity check | ||
| 597 | 628 | ||
| 598 | - .. row 1 | ||
| 599 | |||
| 600 | - ``V4L2_MPEG_AUDIO_L3_BITRATE_32K`` | ||
| 601 | |||
| 602 | - 32 kbit/s | ||
| 603 | |||
| 604 | - .. row 2 | ||
| 605 | 629 | ||
| 606 | - ``V4L2_MPEG_AUDIO_L3_BITRATE_40K`` | ||
| 607 | 630 | ||
| 608 | - 40 kbit/s | 631 | ``V4L2_CID_MPEG_AUDIO_MUTE (boolean)`` |
| 609 | 632 | Mutes the audio when capturing. This is not done by muting audio | |
| 610 | - .. row 3 | 633 | hardware, which can still produce a slight hiss, but in the encoder |
| 611 | 634 | itself, guaranteeing a fixed and reproducible audio bitstream. 0 = | |
| 612 | - ``V4L2_MPEG_AUDIO_L3_BITRATE_48K`` | 635 | unmuted, 1 = muted. |
| 613 | |||
| 614 | - 48 kbit/s | ||
| 615 | 636 | ||
| 616 | - .. row 4 | 637 | .. _v4l2-mpeg-audio-dec-playback: |
| 617 | 638 | ||
| 618 | - ``V4L2_MPEG_AUDIO_L3_BITRATE_56K`` | 639 | ``V4L2_CID_MPEG_AUDIO_DEC_PLAYBACK`` |
| 640 | (enum) | ||
| 619 | 641 | ||
| 620 | - 56 kbit/s | 642 | enum v4l2_mpeg_audio_dec_playback - |
| 643 | Determines how monolingual audio should be played back. Possible | ||
| 644 | values are: | ||
| 621 | 645 | ||
| 622 | - .. row 5 | ||
| 623 | 646 | ||
| 624 | - ``V4L2_MPEG_AUDIO_L3_BITRATE_64K`` | ||
| 625 | 647 | ||
| 626 | - 64 kbit/s | 648 | .. tabularcolumns:: |p{9.0cm}|p{8.5cm}| |
| 627 | 649 | ||
| 628 | - .. row 6 | 650 | .. flat-table:: |
| 651 | :header-rows: 0 | ||
| 652 | :stub-columns: 0 | ||
| 629 | 653 | ||
| 630 | - ``V4L2_MPEG_AUDIO_L3_BITRATE_80K`` | 654 | * - ``V4L2_MPEG_AUDIO_DEC_PLAYBACK_AUTO`` |
| 655 | - Automatically determines the best playback mode. | ||
| 656 | * - ``V4L2_MPEG_AUDIO_DEC_PLAYBACK_STEREO`` | ||
| 657 | - Stereo playback. | ||
| 658 | * - ``V4L2_MPEG_AUDIO_DEC_PLAYBACK_LEFT`` | ||
| 659 | - Left channel playback. | ||
| 660 | * - ``V4L2_MPEG_AUDIO_DEC_PLAYBACK_RIGHT`` | ||
| 661 | - Right channel playback. | ||
| 662 | * - ``V4L2_MPEG_AUDIO_DEC_PLAYBACK_MONO`` | ||
| 663 | - Mono playback. | ||
| 664 | * - ``V4L2_MPEG_AUDIO_DEC_PLAYBACK_SWAPPED_STEREO`` | ||
| 665 | - Stereo playback with swapped left and right channels. | ||
| 631 | 666 | ||
| 632 | - 80 kbit/s | ||
| 633 | 667 | ||
| 634 | - .. row 7 | ||
| 635 | 668 | ||
| 636 | - ``V4L2_MPEG_AUDIO_L3_BITRATE_96K`` | 669 | .. _v4l2-mpeg-audio-dec-multilingual-playback: |
| 637 | 670 | ||
| 638 | - 96 kbit/s | 671 | ``V4L2_CID_MPEG_AUDIO_DEC_MULTILINGUAL_PLAYBACK`` |
| 672 | (enum) | ||
| 639 | 673 | ||
| 640 | - .. row 8 | 674 | enum v4l2_mpeg_audio_dec_playback - |
| 675 | Determines how multilingual audio should be played back. | ||
| 641 | 676 | ||
| 642 | - ``V4L2_MPEG_AUDIO_L3_BITRATE_112K`` | 677 | .. _v4l2-mpeg-video-encoding: |
| 643 | 678 | ||
| 644 | - 112 kbit/s | 679 | ``V4L2_CID_MPEG_VIDEO_ENCODING`` |
| 680 | (enum) | ||
| 645 | 681 | ||
| 646 | - .. row 9 | 682 | enum v4l2_mpeg_video_encoding - |
| 683 | MPEG Video encoding method. This control is specific to multiplexed | ||
| 684 | MPEG streams. Possible values are: | ||
| 647 | 685 | ||
| 648 | - ``V4L2_MPEG_AUDIO_L3_BITRATE_128K`` | ||
| 649 | 686 | ||
| 650 | - 128 kbit/s | ||
| 651 | 687 | ||
| 652 | - .. row 10 | 688 | .. flat-table:: |
| 689 | :header-rows: 0 | ||
| 690 | :stub-columns: 0 | ||
| 653 | 691 | ||
| 654 | - ``V4L2_MPEG_AUDIO_L3_BITRATE_160K`` | 692 | * - ``V4L2_MPEG_VIDEO_ENCODING_MPEG_1`` |
| 693 | - MPEG-1 Video encoding | ||
| 694 | * - ``V4L2_MPEG_VIDEO_ENCODING_MPEG_2`` | ||
| 695 | - MPEG-2 Video encoding | ||
| 696 | * - ``V4L2_MPEG_VIDEO_ENCODING_MPEG_4_AVC`` | ||
| 697 | - MPEG-4 AVC (H.264) Video encoding | ||
| 655 | 698 | ||
| 656 | - 160 kbit/s | ||
| 657 | 699 | ||
| 658 | - .. row 11 | ||
| 659 | 700 | ||
| 660 | - ``V4L2_MPEG_AUDIO_L3_BITRATE_192K`` | 701 | .. _v4l2-mpeg-video-aspect: |
| 661 | 702 | ||
| 662 | - 192 kbit/s | 703 | ``V4L2_CID_MPEG_VIDEO_ASPECT`` |
| 704 | (enum) | ||
| 663 | 705 | ||
| 664 | - .. row 12 | 706 | enum v4l2_mpeg_video_aspect - |
| 707 | Video aspect. Possible values are: | ||
| 665 | 708 | ||
| 666 | - ``V4L2_MPEG_AUDIO_L3_BITRATE_224K`` | ||
| 667 | 709 | ||
| 668 | - 224 kbit/s | ||
| 669 | 710 | ||
| 670 | - .. row 13 | 711 | .. flat-table:: |
| 712 | :header-rows: 0 | ||
| 713 | :stub-columns: 0 | ||
| 671 | 714 | ||
| 672 | - ``V4L2_MPEG_AUDIO_L3_BITRATE_256K`` | 715 | * - ``V4L2_MPEG_VIDEO_ASPECT_1x1`` |
| 716 | * - ``V4L2_MPEG_VIDEO_ASPECT_4x3`` | ||
| 717 | * - ``V4L2_MPEG_VIDEO_ASPECT_16x9`` | ||
| 718 | * - ``V4L2_MPEG_VIDEO_ASPECT_221x100`` | ||
| 673 | 719 | ||
| 674 | - 256 kbit/s | ||
| 675 | 720 | ||
| 676 | - .. row 14 | ||
| 677 | 721 | ||
| 678 | - ``V4L2_MPEG_AUDIO_L3_BITRATE_320K`` | 722 | ``V4L2_CID_MPEG_VIDEO_B_FRAMES (integer)`` |
| 723 | Number of B-Frames (default 2) | ||
| 679 | 724 | ||
| 680 | - 320 kbit/s | 725 | ``V4L2_CID_MPEG_VIDEO_GOP_SIZE (integer)`` |
| 726 | GOP size (default 12) | ||
| 681 | 727 | ||
| 728 | ``V4L2_CID_MPEG_VIDEO_GOP_CLOSURE (boolean)`` | ||
| 729 | GOP closure (default 1) | ||
| 682 | 730 | ||
| 731 | ``V4L2_CID_MPEG_VIDEO_PULLDOWN (boolean)`` | ||
| 732 | Enable 3:2 pulldown (default 0) | ||
| 683 | 733 | ||
| 684 | ``V4L2_CID_MPEG_AUDIO_AAC_BITRATE (integer)`` | 734 | .. _v4l2-mpeg-video-bitrate-mode: |
| 685 | AAC bitrate in bits per second. | ||
| 686 | 735 | ||
| 687 | .. _v4l2-mpeg-audio-ac3-bitrate: | 736 | ``V4L2_CID_MPEG_VIDEO_BITRATE_MODE`` |
| 737 | (enum) | ||
| 688 | 738 | ||
| 689 | ``V4L2_CID_MPEG_AUDIO_AC3_BITRATE (enum v4l2_mpeg_audio_ac3_bitrate)`` | 739 | enum v4l2_mpeg_video_bitrate_mode - |
| 690 | AC-3 bitrate. Possible values are: | 740 | Video bitrate mode. Possible values are: |
| 691 | 741 | ||
| 692 | 742 | ||
| 693 | 743 | ||
| @@ -695,127 +745,230 @@ Codec Control IDs · 1 unmodified line | |||
| 695 | :header-rows: 0 | 745 | :header-rows: 0 |
| 696 | :stub-columns: 0 | 746 | :stub-columns: 0 |
| 697 | 747 | ||
| 748 | * - ``V4L2_MPEG_VIDEO_BITRATE_MODE_VBR`` | ||
| 749 | - Variable bitrate | ||
| 750 | * - ``V4L2_MPEG_VIDEO_BITRATE_MODE_CBR`` | ||
| 751 | - Constant bitrate | ||
| 698 | 752 | ||
| 699 | - .. row 1 | ||
| 700 | |||
| 701 | - ``V4L2_MPEG_AUDIO_AC3_BITRATE_32K`` | ||
| 702 | |||
| 703 | - 32 kbit/s | ||
| 704 | |||
| 705 | - .. row 2 | ||
| 706 | 753 | ||
| 707 | - ``V4L2_MPEG_AUDIO_AC3_BITRATE_40K`` | ||
| 708 | 754 | ||
| 709 | - 40 kbit/s | 755 | ``V4L2_CID_MPEG_VIDEO_BITRATE (integer)`` |
| 710 | 756 | Video bitrate in bits per second. | |
| 711 | - .. row 3 | ||
| 712 | |||
| 713 | - ``V4L2_MPEG_AUDIO_AC3_BITRATE_48K`` | ||
| 714 | |||
| 715 | - 48 kbit/s | ||
| 716 | |||
| 717 | - .. row 4 | ||
| 718 | |||
| 719 | - ``V4L2_MPEG_AUDIO_AC3_BITRATE_56K`` | ||
| 720 | |||
| 721 | - 56 kbit/s | ||
| 722 | |||
| 723 | - .. row 5 | ||
| 724 | 757 | ||
| 725 | - ``V4L2_MPEG_AUDIO_AC3_BITRATE_64K`` | 758 | ``V4L2_CID_MPEG_VIDEO_BITRATE_PEAK (integer)`` |
| 759 | Peak video bitrate in bits per second. Must be larger or equal to | ||
| 760 | the average video bitrate. It is ignored if the video bitrate mode | ||
| 761 | is set to constant bitrate. | ||
| 726 | 762 | ||
| 727 | - 64 kbit/s | 763 | ``V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION (integer)`` |
| 764 | For every captured frame, skip this many subsequent frames (default | ||
| 765 | 0). | ||
| 728 | 766 | ||
| 729 | - .. row 6 | 767 | ``V4L2_CID_MPEG_VIDEO_MUTE (boolean)`` |
| 768 | "Mutes" the video to a fixed color when capturing. This is useful | ||
| 769 | for testing, to produce a fixed video bitstream. 0 = unmuted, 1 = | ||
| 770 | muted. | ||
| 730 | 771 | ||
| 731 | - ``V4L2_MPEG_AUDIO_AC3_BITRATE_80K`` | 772 | ``V4L2_CID_MPEG_VIDEO_MUTE_YUV (integer)`` |
| 773 | Sets the "mute" color of the video. The supplied 32-bit integer is | ||
| 774 | interpreted as follows (bit 0 = least significant bit): | ||
| 732 | 775 | ||
| 733 | - 80 kbit/s | ||
| 734 | 776 | ||
| 735 | - .. row 7 | ||
| 736 | 777 | ||
| 737 | - ``V4L2_MPEG_AUDIO_AC3_BITRATE_96K`` | 778 | .. flat-table:: |
| 779 | :header-rows: 0 | ||
| 780 | :stub-columns: 0 | ||
| 738 | 781 | ||
| 739 | - 96 kbit/s | 782 | * - Bit 0:7 |
| 783 | - V chrominance information | ||
| 784 | * - Bit 8:15 | ||
| 785 | - U chrominance information | ||
| 786 | * - Bit 16:23 | ||
| 787 | - Y luminance information | ||
| 788 | * - Bit 24:31 | ||
| 789 | - Must be zero. | ||
| 740 | 790 | ||
| 741 | - .. row 8 | ||
| 742 | 791 | ||
| 743 | - ``V4L2_MPEG_AUDIO_AC3_BITRATE_112K`` | ||
| 744 | 792 | ||
| 745 | - 112 kbit/s | 793 | .. _v4l2-mpeg-video-dec-pts: |
| 746 | 794 | ||
| 747 | - .. row 9 | 795 | ``V4L2_CID_MPEG_VIDEO_DEC_PTS (integer64)`` |
| 796 | This read-only control returns the 33-bit video Presentation Time | ||
| 797 | Stamp as defined in ITU T-REC-H.222.0 and ISO/IEC 13818-1 of the | ||
| 798 | currently displayed frame. This is the same PTS as is used in | ||
| 799 | :ref:`VIDIOC_DECODER_CMD`. | ||
| 748 | 800 | ||
| 749 | - ``V4L2_MPEG_AUDIO_AC3_BITRATE_128K`` | 801 | .. _v4l2-mpeg-video-dec-frame: |
| 750 | 802 | ||
| 751 | - 128 kbit/s | 803 | ``V4L2_CID_MPEG_VIDEO_DEC_FRAME (integer64)`` |
| 804 | This read-only control returns the frame counter of the frame that | ||
| 805 | is currently displayed (decoded). This value is reset to 0 whenever | ||
| 806 | the decoder is started. | ||
| 752 | 807 | ||
| 753 | - .. row 10 | 808 | ``V4L2_CID_MPEG_VIDEO_DECODER_SLICE_INTERFACE (boolean)`` |
| 809 | If enabled the decoder expects to receive a single slice per buffer, | ||
| 810 | otherwise the decoder expects a single frame in per buffer. | ||
| 811 | Applicable to the decoder, all codecs. | ||
| 754 | 812 | ||
| 755 | - ``V4L2_MPEG_AUDIO_AC3_BITRATE_160K`` | 813 | ``V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_ENABLE (boolean)`` |
| 814 | Enable writing sample aspect ratio in the Video Usability | ||
| 815 | Information. Applicable to the H264 encoder. | ||
| 756 | 816 | ||
| 757 | - 160 kbit/s | 817 | .. _v4l2-mpeg-video-h264-vui-sar-idc: |
| 758 | 818 | ||
| 759 | - .. row 11 | 819 | ``V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_IDC`` |
| 820 | (enum) | ||
| 760 | 821 | ||
| 761 | - ``V4L2_MPEG_AUDIO_AC3_BITRATE_192K`` | 822 | enum v4l2_mpeg_video_h264_vui_sar_idc - |
| 823 | VUI sample aspect ratio indicator for H.264 encoding. The value is | ||
| 824 | defined in the table E-1 in the standard. Applicable to the H264 | ||
| 825 | encoder. | ||
| 762 | 826 | ||
| 763 | - 192 kbit/s | ||
| 764 | 827 | ||
| 765 | - .. row 12 | ||
| 766 | 828 | ||
| 767 | - ``V4L2_MPEG_AUDIO_AC3_BITRATE_224K`` | 829 | .. flat-table:: |
| 830 | :header-rows: 0 | ||
| 831 | :stub-columns: 0 | ||
| 768 | 832 | ||
| 769 | - 224 kbit/s | 833 | * - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_UNSPECIFIED`` |
| 834 | - Unspecified | ||
| 835 | * - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_1x1`` | ||
| 836 | - 1x1 | ||
| 837 | * - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_12x11`` | ||
| 838 | - 12x11 | ||
| 839 | * - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_10x11`` | ||
| 840 | - 10x11 | ||
| 841 | * - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_16x11`` | ||
| 842 | - 16x11 | ||
| 843 | * - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_40x33`` | ||
| 844 | - 40x33 | ||
| 845 | * - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_24x11`` | ||
| 846 | - 24x11 | ||
| 847 | * - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_20x11`` | ||
| 848 | - 20x11 | ||
| 849 | * - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_32x11`` | ||
| 850 | - 32x11 | ||
| 851 | * - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_80x33`` | ||
| 852 | - 80x33 | ||
| 853 | * - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_18x11`` | ||
| 854 | - 18x11 | ||
| 855 | * - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_15x11`` | ||
| 856 | - 15x11 | ||
| 857 | * - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_64x33`` | ||
| 858 | - 64x33 | ||
| 859 | * - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_160x99`` | ||
| 860 | - 160x99 | ||
| 861 | * - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_4x3`` | ||
| 862 | - 4x3 | ||
| 863 | * - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_3x2`` | ||
| 864 | - 3x2 | ||
| 865 | * - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_2x1`` | ||
| 866 | - 2x1 | ||
| 867 | * - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_EXTENDED`` | ||
| 868 | - Extended SAR | ||
| 770 | 869 | ||
| 771 | - .. row 13 | ||
| 772 | 870 | ||
| 773 | - ``V4L2_MPEG_AUDIO_AC3_BITRATE_256K`` | ||
| 774 | 871 | ||
| 775 | - 256 kbit/s | 872 | ``V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_WIDTH (integer)`` |
| 873 | Extended sample aspect ratio width for H.264 VUI encoding. | ||
| 874 | Applicable to the H264 encoder. | ||
| 776 | 875 | ||
| 777 | - .. row 14 | 876 | ``V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_HEIGHT (integer)`` |
| 877 | Extended sample aspect ratio height for H.264 VUI encoding. | ||
| 878 | Applicable to the H264 encoder. | ||
| 778 | 879 | ||
| 779 | - ``V4L2_MPEG_AUDIO_AC3_BITRATE_320K`` | 880 | .. _v4l2-mpeg-video-h264-level: |
| 780 | 881 | ||
| 781 | - 320 kbit/s | 882 | ``V4L2_CID_MPEG_VIDEO_H264_LEVEL`` |
| 883 | (enum) | ||
| 782 | 884 | ||
| 783 | - .. row 15 | 885 | enum v4l2_mpeg_video_h264_level - |
| 886 | The level information for the H264 video elementary stream. | ||
| 887 | Applicable to the H264 encoder. Possible values are: | ||
| 784 | 888 | ||
| 785 | - ``V4L2_MPEG_AUDIO_AC3_BITRATE_384K`` | ||
| 786 | 889 | ||
| 787 | - 384 kbit/s | ||
| 788 | 890 | ||
| 789 | - .. row 16 | 891 | .. flat-table:: |
| 892 | :header-rows: 0 | ||
| 893 | :stub-columns: 0 | ||
| 790 | 894 | ||
| 791 | - ``V4L2_MPEG_AUDIO_AC3_BITRATE_448K`` | 895 | * - ``V4L2_MPEG_VIDEO_H264_LEVEL_1_0`` |
| 896 | - Level 1.0 | ||
| 897 | * - ``V4L2_MPEG_VIDEO_H264_LEVEL_1B`` | ||
| 898 | - Level 1B | ||
| 899 | * - ``V4L2_MPEG_VIDEO_H264_LEVEL_1_1`` | ||
| 900 | - Level 1.1 | ||
| 901 | * - ``V4L2_MPEG_VIDEO_H264_LEVEL_1_2`` | ||
| 902 | - Level 1.2 | ||
| 903 | * - ``V4L2_MPEG_VIDEO_H264_LEVEL_1_3`` | ||
| 904 | - Level 1.3 | ||
| 905 | * - ``V4L2_MPEG_VIDEO_H264_LEVEL_2_0`` | ||
| 906 | - Level 2.0 | ||
| 907 | * - ``V4L2_MPEG_VIDEO_H264_LEVEL_2_1`` | ||
| 908 | - Level 2.1 | ||
| 909 | * - ``V4L2_MPEG_VIDEO_H264_LEVEL_2_2`` | ||
| 910 | - Level 2.2 | ||
| 911 | * - ``V4L2_MPEG_VIDEO_H264_LEVEL_3_0`` | ||
| 912 | - Level 3.0 | ||
| 913 | * - ``V4L2_MPEG_VIDEO_H264_LEVEL_3_1`` | ||
| 914 | - Level 3.1 | ||
| 915 | * - ``V4L2_MPEG_VIDEO_H264_LEVEL_3_2`` | ||
| 916 | - Level 3.2 | ||
| 917 | * - ``V4L2_MPEG_VIDEO_H264_LEVEL_4_0`` | ||
| 918 | - Level 4.0 | ||
| 919 | * - ``V4L2_MPEG_VIDEO_H264_LEVEL_4_1`` | ||
| 920 | - Level 4.1 | ||
| 921 | * - ``V4L2_MPEG_VIDEO_H264_LEVEL_4_2`` | ||
| 922 | - Level 4.2 | ||
| 923 | * - ``V4L2_MPEG_VIDEO_H264_LEVEL_5_0`` | ||
| 924 | - Level 5.0 | ||
| 925 | * - ``V4L2_MPEG_VIDEO_H264_LEVEL_5_1`` | ||
| 926 | - Level 5.1 | ||
| 792 | 927 | ||
| 793 | - 448 kbit/s | ||
| 794 | 928 | ||
| 795 | - .. row 17 | ||
| 796 | 929 | ||
| 797 | - ``V4L2_MPEG_AUDIO_AC3_BITRATE_512K`` | 930 | .. _v4l2-mpeg-video-mpeg4-level: |
| 798 | 931 | ||
| 799 | - 512 kbit/s | 932 | ``V4L2_CID_MPEG_VIDEO_MPEG4_LEVEL`` |
| 933 | (enum) | ||
| 800 | 934 | ||
| 801 | - .. row 18 | 935 | enum v4l2_mpeg_video_mpeg4_level - |
| 936 | The level information for the MPEG4 elementary stream. Applicable to | ||
| 937 | the MPEG4 encoder. Possible values are: | ||
| 802 | 938 | ||
| 803 | - ``V4L2_MPEG_AUDIO_AC3_BITRATE_576K`` | ||
| 804 | 939 | ||
| 805 | - 576 kbit/s | ||
| 806 | 940 | ||
| 807 | - .. row 19 | 941 | .. flat-table:: |
| 942 | :header-rows: 0 | ||
| 943 | :stub-columns: 0 | ||
| 808 | 944 | ||
| 809 | - ``V4L2_MPEG_AUDIO_AC3_BITRATE_640K`` | 945 | * - ``V4L2_MPEG_VIDEO_LEVEL_0`` |
| 946 | - Level 0 | ||
| 947 | * - ``V4L2_MPEG_VIDEO_LEVEL_0B`` | ||
| 948 | - Level 0b | ||
| 949 | * - ``V4L2_MPEG_VIDEO_LEVEL_1`` | ||
| 950 | - Level 1 | ||
| 951 | * - ``V4L2_MPEG_VIDEO_LEVEL_2`` | ||
| 952 | - Level 2 | ||
| 953 | * - ``V4L2_MPEG_VIDEO_LEVEL_3`` | ||
| 954 | - Level 3 | ||
| 955 | * - ``V4L2_MPEG_VIDEO_LEVEL_3B`` | ||
| 956 | - Level 3b | ||
| 957 | * - ``V4L2_MPEG_VIDEO_LEVEL_4`` | ||
| 958 | - Level 4 | ||
| 959 | * - ``V4L2_MPEG_VIDEO_LEVEL_5`` | ||
| 960 | - Level 5 | ||
| 810 | 961 | ||
| 811 | - 640 kbit/s | ||
| 812 | 962 | ||
| 813 | 963 | ||
| 964 | .. _v4l2-mpeg-video-h264-profile: | ||
| 814 | 965 | ||
| 815 | .. _v4l2-mpeg-audio-mode: | 966 | ``V4L2_CID_MPEG_VIDEO_H264_PROFILE`` |
| 967 | (enum) | ||
| 816 | 968 | ||
| 817 | ``V4L2_CID_MPEG_AUDIO_MODE (enum v4l2_mpeg_audio_mode)`` | 969 | enum v4l2_mpeg_video_h264_profile - |
| 818 | MPEG Audio mode. Possible values are: | 970 | The profile information for H264. Applicable to the H264 encoder. |
| 971 | Possible values are: | ||
| 819 | 972 | ||
| 820 | 973 | ||
| 821 | 974 | ||
| @@ -823,837 +976,68 @@ Codec Control IDs · 1 unmodified line | |||
| 823 | :header-rows: 0 | 976 | :header-rows: 0 |
| 824 | :stub-columns: 0 | 977 | :stub-columns: 0 |
| 825 | 978 | ||
| 979 | * - ``V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE`` | ||
| 980 | - Baseline profile | ||
| 981 | * - ``V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_BASELINE`` | ||
| 982 | - Constrained Baseline profile | ||
| 983 | * - ``V4L2_MPEG_VIDEO_H264_PROFILE_MAIN`` | ||
| 984 | - Main profile | ||
| 985 | * - ``V4L2_MPEG_VIDEO_H264_PROFILE_EXTENDED`` | ||
| 986 | - Extended profile | ||
| 987 | * - ``V4L2_MPEG_VIDEO_H264_PROFILE_HIGH`` | ||
| 988 | - High profile | ||
| 989 | * - ``V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_10`` | ||
| 990 | - High 10 profile | ||
| 991 | * - ``V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_422`` | ||
| 992 | - High 422 profile | ||
| 993 | * - ``V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_444_PREDICTIVE`` | ||
| 994 | - High 444 Predictive profile | ||
| 995 | * - ``V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_10_INTRA`` | ||
| 996 | - High 10 Intra profile | ||
| 997 | * - ``V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_422_INTRA`` | ||
| 998 | - High 422 Intra profile | ||
| 999 | * - ``V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_444_INTRA`` | ||
| 1000 | - High 444 Intra profile | ||
| 1001 | * - ``V4L2_MPEG_VIDEO_H264_PROFILE_CAVLC_444_INTRA`` | ||
| 1002 | - CAVLC 444 Intra profile | ||
| 1003 | * - ``V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_BASELINE`` | ||
| 1004 | - Scalable Baseline profile | ||
| 1005 | * - ``V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_HIGH`` | ||
| 1006 | - Scalable High profile | ||
| 1007 | * - ``V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_HIGH_INTRA`` | ||
| 1008 | - Scalable High Intra profile | ||
| 1009 | * - ``V4L2_MPEG_VIDEO_H264_PROFILE_STEREO_HIGH`` | ||
| 1010 | - Stereo High profile | ||
| 1011 | * - ``V4L2_MPEG_VIDEO_H264_PROFILE_MULTIVIEW_HIGH`` | ||
| 1012 | - Multiview High profile | ||
| 826 | 1013 | ||
| 827 | - .. row 1 | ||
| 828 | |||
| 829 | - ``V4L2_MPEG_AUDIO_MODE_STEREO`` | ||
| 830 | |||
| 831 | - Stereo | ||
| 832 | 1014 | ||
| 833 | - .. row 2 | ||
| 834 | 1015 | ||
| 835 | - ``V4L2_MPEG_AUDIO_MODE_JOINT_STEREO`` | 1016 | .. _v4l2-mpeg-video-mpeg4-profile: |
| 836 | |||
| 837 | - Joint Stereo | ||
| 838 | |||
| 839 | - .. row 3 | ||
| 840 | |||
| 841 | - ``V4L2_MPEG_AUDIO_MODE_DUAL`` | ||
| 842 | 1017 | ||
| 843 | - Bilingual | 1018 | ``V4L2_CID_MPEG_VIDEO_MPEG4_PROFILE`` |
| 1019 | (enum) | ||
| 844 | 1020 | ||
| 845 | - .. row 4 | 1021 | enum v4l2_mpeg_video_mpeg4_profile - |
| 846 | |||
| 847 | - ``V4L2_MPEG_AUDIO_MODE_MONO`` | ||
| 848 | |||
| 849 | - Mono | ||
| 850 | |||
| 851 | |||
| 852 | |||
| 853 | .. _v4l2-mpeg-audio-mode-extension: | ||
| 854 | |||
| 855 | ``V4L2_CID_MPEG_AUDIO_MODE_EXTENSION (enum v4l2_mpeg_audio_mode_extension)`` | ||
| 856 | Joint Stereo audio mode extension. In Layer I and II they indicate | ||
| 857 | which subbands are in intensity stereo. All other subbands are coded | ||
| 858 | in stereo. Layer III is not (yet) supported. Possible values are: | ||
| 859 | |||
| 860 | |||
| 861 | |||
| 862 | .. flat-table:: | ||
| 863 | :header-rows: 0 | ||
| 864 | :stub-columns: 0 | ||
| 865 | |||
| 866 | |||
| 867 | - .. row 1 | ||
| 868 | |||
| 869 | - ``V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_4`` | ||
| 870 | |||
| 871 | - Subbands 4-31 in intensity stereo | ||
| 872 | |||
| 873 | - .. row 2 | ||
| 874 | |||
| 875 | - ``V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_8`` | ||
| 876 | |||
| 877 | - Subbands 8-31 in intensity stereo | ||
| 878 | |||
| 879 | - .. row 3 | ||
| 880 | |||
| 881 | - ``V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_12`` | ||
| 882 | |||
| 883 | - Subbands 12-31 in intensity stereo | ||
| 884 | |||
| 885 | - .. row 4 | ||
| 886 | |||
| 887 | - ``V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_16`` | ||
| 888 | |||
| 889 | - Subbands 16-31 in intensity stereo | ||
| 890 | |||
| 891 | |||
| 892 | |||
| 893 | .. _v4l2-mpeg-audio-emphasis: | ||
| 894 | |||
| 895 | ``V4L2_CID_MPEG_AUDIO_EMPHASIS (enum v4l2_mpeg_audio_emphasis)`` | ||
| 896 | Audio Emphasis. Possible values are: | ||
| 897 | |||
| 898 | |||
| 899 | |||
| 900 | .. flat-table:: | ||
| 901 | :header-rows: 0 | ||
| 902 | :stub-columns: 0 | ||
| 903 | |||
| 904 | |||
| 905 | - .. row 1 | ||
| 906 | |||
| 907 | - ``V4L2_MPEG_AUDIO_EMPHASIS_NONE`` | ||
| 908 | |||
| 909 | - None | ||
| 910 | |||
| 911 | - .. row 2 | ||
| 912 | |||
| 913 | - ``V4L2_MPEG_AUDIO_EMPHASIS_50_DIV_15_uS`` | ||
| 914 | |||
| 915 | - 50/15 microsecond emphasis | ||
| 916 | |||
| 917 | - .. row 3 | ||
| 918 | |||
| 919 | - ``V4L2_MPEG_AUDIO_EMPHASIS_CCITT_J17`` | ||
| 920 | |||
| 921 | - CCITT J.17 | ||
| 922 | |||
| 923 | |||
| 924 | |||
| 925 | .. _v4l2-mpeg-audio-crc: | ||
| 926 | |||
| 927 | ``V4L2_CID_MPEG_AUDIO_CRC (enum v4l2_mpeg_audio_crc)`` | ||
| 928 | CRC method. Possible values are: | ||
| 929 | |||
| 930 | |||
| 931 | |||
| 932 | .. flat-table:: | ||
| 933 | :header-rows: 0 | ||
| 934 | :stub-columns: 0 | ||
| 935 | |||
| 936 | |||
| 937 | - .. row 1 | ||
| 938 | |||
| 939 | - ``V4L2_MPEG_AUDIO_CRC_NONE`` | ||
| 940 | |||
| 941 | - None | ||
| 942 | |||
| 943 | - .. row 2 | ||
| 944 | |||
| 945 | - ``V4L2_MPEG_AUDIO_CRC_CRC16`` | ||
| 946 | |||
| 947 | - 16 bit parity check | ||
| 948 | |||
| 949 | |||
| 950 | |||
| 951 | ``V4L2_CID_MPEG_AUDIO_MUTE (boolean)`` | ||
| 952 | Mutes the audio when capturing. This is not done by muting audio | ||
| 953 | hardware, which can still produce a slight hiss, but in the encoder | ||
| 954 | itself, guaranteeing a fixed and reproducible audio bitstream. 0 = | ||
| 955 | unmuted, 1 = muted. | ||
| 956 | |||
| 957 | .. _v4l2-mpeg-audio-dec-playback: | ||
| 958 | |||
| 959 | ``V4L2_CID_MPEG_AUDIO_DEC_PLAYBACK (enum v4l2_mpeg_audio_dec_playback)`` | ||
| 960 | Determines how monolingual audio should be played back. Possible | ||
| 961 | values are: | ||
| 962 | |||
| 963 | |||
| 964 | |||
| 965 | .. flat-table:: | ||
| 966 | :header-rows: 0 | ||
| 967 | :stub-columns: 0 | ||
| 968 | |||
| 969 | |||
| 970 | - .. row 1 | ||
| 971 | |||
| 972 | - ``V4L2_MPEG_AUDIO_DEC_PLAYBACK_AUTO`` | ||
| 973 | |||
| 974 | - Automatically determines the best playback mode. | ||
| 975 | |||
| 976 | - .. row 2 | ||
| 977 | |||
| 978 | - ``V4L2_MPEG_AUDIO_DEC_PLAYBACK_STEREO`` | ||
| 979 | |||
| 980 | - Stereo playback. | ||
| 981 | |||
| 982 | - .. row 3 | ||
| 983 | |||
| 984 | - ``V4L2_MPEG_AUDIO_DEC_PLAYBACK_LEFT`` | ||
| 985 | |||
| 986 | - Left channel playback. | ||
| 987 | |||
| 988 | - .. row 4 | ||
| 989 | |||
| 990 | - ``V4L2_MPEG_AUDIO_DEC_PLAYBACK_RIGHT`` | ||
| 991 | |||
| 992 | - Right channel playback. | ||
| 993 | |||
| 994 | - .. row 5 | ||
| 995 | |||
| 996 | - ``V4L2_MPEG_AUDIO_DEC_PLAYBACK_MONO`` | ||
| 997 | |||
| 998 | - Mono playback. | ||
| 999 | |||
| 1000 | - .. row 6 | ||
| 1001 | |||
| 1002 | - ``V4L2_MPEG_AUDIO_DEC_PLAYBACK_SWAPPED_STEREO`` | ||
| 1003 | |||
| 1004 | - Stereo playback with swapped left and right channels. | ||
| 1005 | |||
| 1006 | |||
| 1007 | |||
| 1008 | .. _v4l2-mpeg-audio-dec-multilingual-playback: | ||
| 1009 | |||
| 1010 | ``V4L2_CID_MPEG_AUDIO_DEC_MULTILINGUAL_PLAYBACK (enum v4l2_mpeg_audio_dec_playback)`` | ||
| 1011 | Determines how multilingual audio should be played back. | ||
| 1012 | |||
| 1013 | .. _v4l2-mpeg-video-encoding: | ||
| 1014 | |||
| 1015 | ``V4L2_CID_MPEG_VIDEO_ENCODING (enum v4l2_mpeg_video_encoding)`` | ||
| 1016 | MPEG Video encoding method. This control is specific to multiplexed | ||
| 1017 | MPEG streams. Possible values are: | ||
| 1018 | |||
| 1019 | |||
| 1020 | |||
| 1021 | .. flat-table:: | ||
| 1022 | :header-rows: 0 | ||
| 1023 | :stub-columns: 0 | ||
| 1024 | |||
| 1025 | |||
| 1026 | - .. row 1 | ||
| 1027 | |||
| 1028 | - ``V4L2_MPEG_VIDEO_ENCODING_MPEG_1`` | ||
| 1029 | |||
| 1030 | - MPEG-1 Video encoding | ||
| 1031 | |||
| 1032 | - .. row 2 | ||
| 1033 | |||
| 1034 | - ``V4L2_MPEG_VIDEO_ENCODING_MPEG_2`` | ||
| 1035 | |||
| 1036 | - MPEG-2 Video encoding | ||
| 1037 | |||
| 1038 | - .. row 3 | ||
| 1039 | |||
| 1040 | - ``V4L2_MPEG_VIDEO_ENCODING_MPEG_4_AVC`` | ||
| 1041 | |||
| 1042 | - MPEG-4 AVC (H.264) Video encoding | ||
| 1043 | |||
| 1044 | |||
| 1045 | |||
| 1046 | .. _v4l2-mpeg-video-aspect: | ||
| 1047 | |||
| 1048 | ``V4L2_CID_MPEG_VIDEO_ASPECT (enum v4l2_mpeg_video_aspect)`` | ||
| 1049 | Video aspect. Possible values are: | ||
| 1050 | |||
| 1051 | |||
| 1052 | |||
| 1053 | .. flat-table:: | ||
| 1054 | :header-rows: 0 | ||
| 1055 | :stub-columns: 0 | ||
| 1056 | |||
| 1057 | |||
| 1058 | - .. row 1 | ||
| 1059 | |||
| 1060 | - ``V4L2_MPEG_VIDEO_ASPECT_1x1`` | ||
| 1061 | |||
| 1062 | - .. row 2 | ||
| 1063 | |||
| 1064 | - ``V4L2_MPEG_VIDEO_ASPECT_4x3`` | ||
| 1065 | |||
| 1066 | - .. row 3 | ||
| 1067 | |||
| 1068 | - ``V4L2_MPEG_VIDEO_ASPECT_16x9`` | ||
| 1069 | |||
| 1070 | - .. row 4 | ||
| 1071 | |||
| 1072 | - ``V4L2_MPEG_VIDEO_ASPECT_221x100`` | ||
| 1073 | |||
| 1074 | |||
| 1075 | |||
| 1076 | ``V4L2_CID_MPEG_VIDEO_B_FRAMES (integer)`` | ||
| 1077 | Number of B-Frames (default 2) | ||
| 1078 | |||
| 1079 | ``V4L2_CID_MPEG_VIDEO_GOP_SIZE (integer)`` | ||
| 1080 | GOP size (default 12) | ||
| 1081 | |||
| 1082 | ``V4L2_CID_MPEG_VIDEO_GOP_CLOSURE (boolean)`` | ||
| 1083 | GOP closure (default 1) | ||
| 1084 | |||
| 1085 | ``V4L2_CID_MPEG_VIDEO_PULLDOWN (boolean)`` | ||
| 1086 | Enable 3:2 pulldown (default 0) | ||
| 1087 | |||
| 1088 | .. _v4l2-mpeg-video-bitrate-mode: | ||
| 1089 | |||
| 1090 | ``V4L2_CID_MPEG_VIDEO_BITRATE_MODE (enum v4l2_mpeg_video_bitrate_mode)`` | ||
| 1091 | Video bitrate mode. Possible values are: | ||
| 1092 | |||
| 1093 | |||
| 1094 | |||
| 1095 | .. flat-table:: | ||
| 1096 | :header-rows: 0 | ||
| 1097 | :stub-columns: 0 | ||
| 1098 | |||
| 1099 | |||
| 1100 | - .. row 1 | ||
| 1101 | |||
| 1102 | - ``V4L2_MPEG_VIDEO_BITRATE_MODE_VBR`` | ||
| 1103 | |||
| 1104 | - Variable bitrate | ||
| 1105 | |||
| 1106 | - .. row 2 | ||
| 1107 | |||
| 1108 | - ``V4L2_MPEG_VIDEO_BITRATE_MODE_CBR`` | ||
| 1109 | |||
| 1110 | - Constant bitrate | ||
| 1111 | |||
| 1112 | |||
| 1113 | |||
| 1114 | ``V4L2_CID_MPEG_VIDEO_BITRATE (integer)`` | ||
| 1115 | Video bitrate in bits per second. | ||
| 1116 | |||
| 1117 | ``V4L2_CID_MPEG_VIDEO_BITRATE_PEAK (integer)`` | ||
| 1118 | Peak video bitrate in bits per second. Must be larger or equal to | ||
| 1119 | the average video bitrate. It is ignored if the video bitrate mode | ||
| 1120 | is set to constant bitrate. | ||
| 1121 | |||
| 1122 | ``V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION (integer)`` | ||
| 1123 | For every captured frame, skip this many subsequent frames (default | ||
| 1124 | 0). | ||
| 1125 | |||
| 1126 | ``V4L2_CID_MPEG_VIDEO_MUTE (boolean)`` | ||
| 1127 | "Mutes" the video to a fixed color when capturing. This is useful | ||
| 1128 | for testing, to produce a fixed video bitstream. 0 = unmuted, 1 = | ||
| 1129 | muted. | ||
| 1130 | |||
| 1131 | ``V4L2_CID_MPEG_VIDEO_MUTE_YUV (integer)`` | ||
| 1132 | Sets the "mute" color of the video. The supplied 32-bit integer is | ||
| 1133 | interpreted as follows (bit 0 = least significant bit): | ||
| 1134 | |||
| 1135 | |||
| 1136 | |||
| 1137 | .. flat-table:: | ||
| 1138 | :header-rows: 0 | ||
| 1139 | :stub-columns: 0 | ||
| 1140 | |||
| 1141 | |||
| 1142 | - .. row 1 | ||
| 1143 | |||
| 1144 | - Bit 0:7 | ||
| 1145 | |||
| 1146 | - V chrominance information | ||
| 1147 | |||
| 1148 | - .. row 2 | ||
| 1149 | |||
| 1150 | - Bit 8:15 | ||
| 1151 | |||
| 1152 | - U chrominance information | ||
| 1153 | |||
| 1154 | - .. row 3 | ||
| 1155 | |||
| 1156 | - Bit 16:23 | ||
| 1157 | |||
| 1158 | - Y luminance information | ||
| 1159 | |||
| 1160 | - .. row 4 | ||
| 1161 | |||
| 1162 | - Bit 24:31 | ||
| 1163 | |||
| 1164 | - Must be zero. | ||
| 1165 | |||
| 1166 | |||
| 1167 | |||
| 1168 | .. _v4l2-mpeg-video-dec-pts: | ||
| 1169 | |||
| 1170 | ``V4L2_CID_MPEG_VIDEO_DEC_PTS (integer64)`` | ||
| 1171 | This read-only control returns the 33-bit video Presentation Time | ||
| 1172 | Stamp as defined in ITU T-REC-H.222.0 and ISO/IEC 13818-1 of the | ||
| 1173 | currently displayed frame. This is the same PTS as is used in | ||
| 1174 | :ref:`VIDIOC_DECODER_CMD`. | ||
| 1175 | |||
| 1176 | .. _v4l2-mpeg-video-dec-frame: | ||
| 1177 | |||
| 1178 | ``V4L2_CID_MPEG_VIDEO_DEC_FRAME (integer64)`` | ||
| 1179 | This read-only control returns the frame counter of the frame that | ||
| 1180 | is currently displayed (decoded). This value is reset to 0 whenever | ||
| 1181 | the decoder is started. | ||
| 1182 | |||
| 1183 | ``V4L2_CID_MPEG_VIDEO_DECODER_SLICE_INTERFACE (boolean)`` | ||
| 1184 | If enabled the decoder expects to receive a single slice per buffer, | ||
| 1185 | otherwise the decoder expects a single frame in per buffer. | ||
| 1186 | Applicable to the decoder, all codecs. | ||
| 1187 | |||
| 1188 | ``V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_ENABLE (boolean)`` | ||
| 1189 | Enable writing sample aspect ratio in the Video Usability | ||
| 1190 | Information. Applicable to the H264 encoder. | ||
| 1191 | |||
| 1192 | .. _v4l2-mpeg-video-h264-vui-sar-idc: | ||
| 1193 | |||
| 1194 | ``V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_IDC (enum v4l2_mpeg_video_h264_vui_sar_idc)`` | ||
| 1195 | VUI sample aspect ratio indicator for H.264 encoding. The value is | ||
| 1196 | defined in the table E-1 in the standard. Applicable to the H264 | ||
| 1197 | encoder. | ||
| 1198 | |||
| 1199 | |||
| 1200 | |||
| 1201 | .. flat-table:: | ||
| 1202 | :header-rows: 0 | ||
| 1203 | :stub-columns: 0 | ||
| 1204 | |||
| 1205 | |||
| 1206 | - .. row 1 | ||
| 1207 | |||
| 1208 | - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_UNSPECIFIED`` | ||
| 1209 | |||
| 1210 | - Unspecified | ||
| 1211 | |||
| 1212 | - .. row 2 | ||
| 1213 | |||
| 1214 | - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_1x1`` | ||
| 1215 | |||
| 1216 | - 1x1 | ||
| 1217 | |||
| 1218 | - .. row 3 | ||
| 1219 | |||
| 1220 | - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_12x11`` | ||
| 1221 | |||
| 1222 | - 12x11 | ||
| 1223 | |||
| 1224 | - .. row 4 | ||
| 1225 | |||
| 1226 | - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_10x11`` | ||
| 1227 | |||
| 1228 | - 10x11 | ||
| 1229 | |||
| 1230 | - .. row 5 | ||
| 1231 | |||
| 1232 | - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_16x11`` | ||
| 1233 | |||
| 1234 | - 16x11 | ||
| 1235 | |||
| 1236 | - .. row 6 | ||
| 1237 | |||
| 1238 | - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_40x33`` | ||
| 1239 | |||
| 1240 | - 40x33 | ||
| 1241 | |||
| 1242 | - .. row 7 | ||
| 1243 | |||
| 1244 | - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_24x11`` | ||
| 1245 | |||
| 1246 | - 24x11 | ||
| 1247 | |||
| 1248 | - .. row 8 | ||
| 1249 | |||
| 1250 | - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_20x11`` | ||
| 1251 | |||
| 1252 | - 20x11 | ||
| 1253 | |||
| 1254 | - .. row 9 | ||
| 1255 | |||
| 1256 | - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_32x11`` | ||
| 1257 | |||
| 1258 | - 32x11 | ||
| 1259 | |||
| 1260 | - .. row 10 | ||
| 1261 | |||
| 1262 | - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_80x33`` | ||
| 1263 | |||
| 1264 | - 80x33 | ||
| 1265 | |||
| 1266 | - .. row 11 | ||
| 1267 | |||
| 1268 | - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_18x11`` | ||
| 1269 | |||
| 1270 | - 18x11 | ||
| 1271 | |||
| 1272 | - .. row 12 | ||
| 1273 | |||
| 1274 | - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_15x11`` | ||
| 1275 | |||
| 1276 | - 15x11 | ||
| 1277 | |||
| 1278 | - .. row 13 | ||
| 1279 | |||
| 1280 | - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_64x33`` | ||
| 1281 | |||
| 1282 | - 64x33 | ||
| 1283 | |||
| 1284 | - .. row 14 | ||
| 1285 | |||
| 1286 | - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_160x99`` | ||
| 1287 | |||
| 1288 | - 160x99 | ||
| 1289 | |||
| 1290 | - .. row 15 | ||
| 1291 | |||
| 1292 | - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_4x3`` | ||
| 1293 | |||
| 1294 | - 4x3 | ||
| 1295 | |||
| 1296 | - .. row 16 | ||
| 1297 | |||
| 1298 | - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_3x2`` | ||
| 1299 | |||
| 1300 | - 3x2 | ||
| 1301 | |||
| 1302 | - .. row 17 | ||
| 1303 | |||
| 1304 | - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_2x1`` | ||
| 1305 | |||
| 1306 | - 2x1 | ||
| 1307 | |||
| 1308 | - .. row 18 | ||
| 1309 | |||
| 1310 | - ``V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_EXTENDED`` | ||
| 1311 | |||
| 1312 | - Extended SAR | ||
| 1313 | |||
| 1314 | |||
| 1315 | |||
| 1316 | ``V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_WIDTH (integer)`` | ||
| 1317 | Extended sample aspect ratio width for H.264 VUI encoding. | ||
| 1318 | Applicable to the H264 encoder. | ||
| 1319 | |||
| 1320 | ``V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_HEIGHT (integer)`` | ||
| 1321 | Extended sample aspect ratio height for H.264 VUI encoding. | ||
| 1322 | Applicable to the H264 encoder. | ||
| 1323 | |||
| 1324 | .. _v4l2-mpeg-video-h264-level: | ||
| 1325 | |||
| 1326 | ``V4L2_CID_MPEG_VIDEO_H264_LEVEL (enum v4l2_mpeg_video_h264_level)`` | ||
| 1327 | The level information for the H264 video elementary stream. | ||
| 1328 | Applicable to the H264 encoder. Possible values are: | ||
| 1329 | |||
| 1330 | |||
| 1331 | |||
| 1332 | .. flat-table:: | ||
| 1333 | :header-rows: 0 | ||
| 1334 | :stub-columns: 0 | ||
| 1335 | |||
| 1336 | |||
| 1337 | - .. row 1 | ||
| 1338 | |||
| 1339 | - ``V4L2_MPEG_VIDEO_H264_LEVEL_1_0`` | ||
| 1340 | |||
| 1341 | - Level 1.0 | ||
| 1342 | |||
| 1343 | - .. row 2 | ||
| 1344 | |||
| 1345 | - ``V4L2_MPEG_VIDEO_H264_LEVEL_1B`` | ||
| 1346 | |||
| 1347 | - Level 1B | ||
| 1348 | |||
| 1349 | - .. row 3 | ||
| 1350 | |||
| 1351 | - ``V4L2_MPEG_VIDEO_H264_LEVEL_1_1`` | ||
| 1352 | |||
| 1353 | - Level 1.1 | ||
| 1354 | |||
| 1355 | - .. row 4 | ||
| 1356 | |||
| 1357 | - ``V4L2_MPEG_VIDEO_H264_LEVEL_1_2`` | ||
| 1358 | |||
| 1359 | - Level 1.2 | ||
| 1360 | |||
| 1361 | - .. row 5 | ||
| 1362 | |||
| 1363 | - ``V4L2_MPEG_VIDEO_H264_LEVEL_1_3`` | ||
| 1364 | |||
| 1365 | - Level 1.3 | ||
| 1366 | |||
| 1367 | - .. row 6 | ||
| 1368 | |||
| 1369 | - ``V4L2_MPEG_VIDEO_H264_LEVEL_2_0`` | ||
| 1370 | |||
| 1371 | - Level 2.0 | ||
| 1372 | |||
| 1373 | - .. row 7 | ||
| 1374 | |||
| 1375 | - ``V4L2_MPEG_VIDEO_H264_LEVEL_2_1`` | ||
| 1376 | |||
| 1377 | - Level 2.1 | ||
| 1378 | |||
| 1379 | - .. row 8 | ||
| 1380 | |||
| 1381 | - ``V4L2_MPEG_VIDEO_H264_LEVEL_2_2`` | ||
| 1382 | |||
| 1383 | - Level 2.2 | ||
| 1384 | |||
| 1385 | - .. row 9 | ||
| 1386 | |||
| 1387 | - ``V4L2_MPEG_VIDEO_H264_LEVEL_3_0`` | ||
| 1388 | |||
| 1389 | - Level 3.0 | ||
| 1390 | |||
| 1391 | - .. row 10 | ||
| 1392 | |||
| 1393 | - ``V4L2_MPEG_VIDEO_H264_LEVEL_3_1`` | ||
| 1394 | |||
| 1395 | - Level 3.1 | ||
| 1396 | |||
| 1397 | - .. row 11 | ||
| 1398 | |||
| 1399 | - ``V4L2_MPEG_VIDEO_H264_LEVEL_3_2`` | ||
| 1400 | |||
| 1401 | - Level 3.2 | ||
| 1402 | |||
| 1403 | - .. row 12 | ||
| 1404 | |||
| 1405 | - ``V4L2_MPEG_VIDEO_H264_LEVEL_4_0`` | ||
| 1406 | |||
| 1407 | - Level 4.0 | ||
| 1408 | |||
| 1409 | - .. row 13 | ||
| 1410 | |||
| 1411 | - ``V4L2_MPEG_VIDEO_H264_LEVEL_4_1`` | ||
| 1412 | |||
| 1413 | - Level 4.1 | ||
| 1414 | |||
| 1415 | - .. row 14 | ||
| 1416 | |||
| 1417 | - ``V4L2_MPEG_VIDEO_H264_LEVEL_4_2`` | ||
| 1418 | |||
| 1419 | - Level 4.2 | ||
| 1420 | |||
| 1421 | - .. row 15 | ||
| 1422 | |||
| 1423 | - ``V4L2_MPEG_VIDEO_H264_LEVEL_5_0`` | ||
| 1424 | |||
| 1425 | - Level 5.0 | ||
| 1426 | |||
| 1427 | - .. row 16 | ||
| 1428 | |||
| 1429 | - ``V4L2_MPEG_VIDEO_H264_LEVEL_5_1`` | ||
| 1430 | |||
| 1431 | - Level 5.1 | ||
| 1432 | |||
| 1433 | |||
| 1434 | |||
| 1435 | .. _v4l2-mpeg-video-mpeg4-level: | ||
| 1436 | |||
| 1437 | ``V4L2_CID_MPEG_VIDEO_MPEG4_LEVEL (enum v4l2_mpeg_video_mpeg4_level)`` | ||
| 1438 | The level information for the MPEG4 elementary stream. Applicable to | ||
| 1439 | the MPEG4 encoder. Possible values are: | ||
| 1440 | |||
| 1441 | |||
| 1442 | |||
| 1443 | .. flat-table:: | ||
| 1444 | :header-rows: 0 | ||
| 1445 | :stub-columns: 0 | ||
| 1446 | |||
| 1447 | |||
| 1448 | - .. row 1 | ||
| 1449 | |||
| 1450 | - ``V4L2_MPEG_VIDEO_LEVEL_0`` | ||
| 1451 | |||
| 1452 | - Level 0 | ||
| 1453 | |||
| 1454 | - .. row 2 | ||
| 1455 | |||
| 1456 | - ``V4L2_MPEG_VIDEO_LEVEL_0B`` | ||
| 1457 | |||
| 1458 | - Level 0b | ||
| 1459 | |||
| 1460 | - .. row 3 | ||
| 1461 | |||
| 1462 | - ``V4L2_MPEG_VIDEO_LEVEL_1`` | ||
| 1463 | |||
| 1464 | - Level 1 | ||
| 1465 | |||
| 1466 | - .. row 4 | ||
| 1467 | |||
| 1468 | - ``V4L2_MPEG_VIDEO_LEVEL_2`` | ||
| 1469 | |||
| 1470 | - Level 2 | ||
| 1471 | |||
| 1472 | - .. row 5 | ||
| 1473 | |||
| 1474 | - ``V4L2_MPEG_VIDEO_LEVEL_3`` | ||
| 1475 | |||
| 1476 | - Level 3 | ||
| 1477 | |||
| 1478 | - .. row 6 | ||
| 1479 | |||
| 1480 | - ``V4L2_MPEG_VIDEO_LEVEL_3B`` | ||
| 1481 | |||
| 1482 | - Level 3b | ||
| 1483 | |||
| 1484 | - .. row 7 | ||
| 1485 | |||
| 1486 | - ``V4L2_MPEG_VIDEO_LEVEL_4`` | ||
| 1487 | |||
| 1488 | - Level 4 | ||
| 1489 | |||
| 1490 | - .. row 8 | ||
| 1491 | |||
| 1492 | - ``V4L2_MPEG_VIDEO_LEVEL_5`` | ||
| 1493 | |||
| 1494 | - Level 5 | ||
| 1495 | |||
| 1496 | |||
| 1497 | |||
| 1498 | .. _v4l2-mpeg-video-h264-profile: | ||
| 1499 | |||
| 1500 | ``V4L2_CID_MPEG_VIDEO_H264_PROFILE (enum v4l2_mpeg_video_h264_profile)`` | ||
| 1501 | The profile information for H264. Applicable to the H264 encoder. | ||
| 1502 | Possible values are: | ||
| 1503 | |||
| 1504 | |||
| 1505 | |||
| 1506 | .. flat-table:: | ||
| 1507 | :header-rows: 0 | ||
| 1508 | :stub-columns: 0 | ||
| 1509 | |||
| 1510 | |||
| 1511 | - .. row 1 | ||
| 1512 | |||
| 1513 | - ``V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE`` | ||
| 1514 | |||
| 1515 | - Baseline profile | ||
| 1516 | |||
| 1517 | - .. row 2 | ||
| 1518 | |||
| 1519 | - ``V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_BASELINE`` | ||
| 1520 | |||
| 1521 | - Constrained Baseline profile | ||
| 1522 | |||
| 1523 | - .. row 3 | ||
| 1524 | |||
| 1525 | - ``V4L2_MPEG_VIDEO_H264_PROFILE_MAIN`` | ||
| 1526 | |||
| 1527 | - Main profile | ||
| 1528 | |||
| 1529 | - .. row 4 | ||
| 1530 | |||
| 1531 | - ``V4L2_MPEG_VIDEO_H264_PROFILE_EXTENDED`` | ||
| 1532 | |||
| 1533 | - Extended profile | ||
| 1534 | |||
| 1535 | - .. row 5 | ||
| 1536 | |||
| 1537 | - ``V4L2_MPEG_VIDEO_H264_PROFILE_HIGH`` | ||
| 1538 | |||
| 1539 | - High profile | ||
| 1540 | |||
| 1541 | - .. row 6 | ||
| 1542 | |||
| 1543 | - ``V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_10`` | ||
| 1544 | |||
| 1545 | - High 10 profile | ||
| 1546 | |||
| 1547 | - .. row 7 | ||
| 1548 | |||
| 1549 | - ``V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_422`` | ||
| 1550 | |||
| 1551 | - High 422 profile | ||
| 1552 | |||
| 1553 | - .. row 8 | ||
| 1554 | |||
| 1555 | - ``V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_444_PREDICTIVE`` | ||
| 1556 | |||
| 1557 | - High 444 Predictive profile | ||
| 1558 | |||
| 1559 | - .. row 9 | ||
| 1560 | |||
| 1561 | - ``V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_10_INTRA`` | ||
| 1562 | |||
| 1563 | - High 10 Intra profile | ||
| 1564 | |||
| 1565 | - .. row 10 | ||
| 1566 | |||
| 1567 | - ``V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_422_INTRA`` | ||
| 1568 | |||
| 1569 | - High 422 Intra profile | ||
| 1570 | |||
| 1571 | - .. row 11 | ||
| 1572 | |||
| 1573 | - ``V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_444_INTRA`` | ||
| 1574 | |||
| 1575 | - High 444 Intra profile | ||
| 1576 | |||
| 1577 | - .. row 12 | ||
| 1578 | |||
| 1579 | - ``V4L2_MPEG_VIDEO_H264_PROFILE_CAVLC_444_INTRA`` | ||
| 1580 | |||
| 1581 | - CAVLC 444 Intra profile | ||
| 1582 | |||
| 1583 | - .. row 13 | ||
| 1584 | |||
| 1585 | - ``V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_BASELINE`` | ||
| 1586 | |||
| 1587 | - Scalable Baseline profile | ||
| 1588 | |||
| 1589 | - .. row 14 | ||
| 1590 | |||
| 1591 | - ``V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_HIGH`` | ||
| 1592 | |||
| 1593 | - Scalable High profile | ||
| 1594 | |||
| 1595 | - .. row 15 | ||
| 1596 | |||
| 1597 | - ``V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_HIGH_INTRA`` | ||
| 1598 | |||
| 1599 | - Scalable High Intra profile | ||
| 1600 | |||
| 1601 | - .. row 16 | ||
| 1602 | |||
| 1603 | - ``V4L2_MPEG_VIDEO_H264_PROFILE_STEREO_HIGH`` | ||
| 1604 | |||
| 1605 | - Stereo High profile | ||
| 1606 | |||
| 1607 | - .. row 17 | ||
| 1608 | |||
| 1609 | - ``V4L2_MPEG_VIDEO_H264_PROFILE_MULTIVIEW_HIGH`` | ||
| 1610 | |||
| 1611 | - Multiview High profile | ||
| 1612 | |||
| 1613 | |||
| 1614 | |||
| 1615 | .. _v4l2-mpeg-video-mpeg4-profile: | ||
| 1616 | |||
| 1617 | ``V4L2_CID_MPEG_VIDEO_MPEG4_PROFILE (enum v4l2_mpeg_video_mpeg4_profile)`` | ||
| 1618 | The profile information for MPEG4. Applicable to the MPEG4 encoder. | 1022 | The profile information for MPEG4. Applicable to the MPEG4 encoder. |
| 1619 | Possible values are: | 1023 | Possible values are: |
| 1620 | 1024 | ||
| 1621 | 1025 | ||
| 1622 | 1026 | ||
| 1623 | .. flat-table:: | 1027 | .. flat-table:: |
| 1624 | :header-rows: 0 | 1028 | :header-rows: 0 |
| 1625 | :stub-columns: 0 | 1029 | :stub-columns: 0 |
| 1626 | |||
| 1627 | |||
| 1628 | - .. row 1 | ||
| 1629 | |||
| 1630 | - ``V4L2_MPEG_VIDEO_PROFILE_SIMPLE`` | ||
| 1631 | |||
| 1632 | - Simple profile | ||
| 1633 | |||
| 1634 | - .. row 2 | ||
| 1635 | |||
| 1636 | - ``V4L2_MPEG_VIDEO_PROFILE_ADVANCED_SIMPLE`` | ||
| 1637 | |||
| 1638 | - Advanced Simple profile | ||
| 1639 | |||
| 1640 | - .. row 3 | ||
| 1641 | |||
| 1642 | - ``V4L2_MPEG_VIDEO_PROFILE_CORE`` | ||
| 1643 | |||
| 1644 | - Core profile | ||
| 1645 | |||
| 1646 | - .. row 4 | ||
| 1647 | |||
| 1648 | - ``V4L2_MPEG_VIDEO_PROFILE_SIMPLE_SCALABLE`` | ||
| 1649 | |||
| 1650 | - Simple Scalable profile | ||
| 1651 | |||
| 1652 | - .. row 5 | ||
| 1653 | |||
| 1654 | - ``V4L2_MPEG_VIDEO_PROFILE_ADVANCED_CODING_EFFICIENCY`` | ||
| 1655 | 1030 | ||
| 1656 | - | 1031 | * - ``V4L2_MPEG_VIDEO_PROFILE_SIMPLE`` |
| 1032 | - Simple profile | ||
| 1033 | * - ``V4L2_MPEG_VIDEO_PROFILE_ADVANCED_SIMPLE`` | ||
| 1034 | - Advanced Simple profile | ||
| 1035 | * - ``V4L2_MPEG_VIDEO_PROFILE_CORE`` | ||
| 1036 | - Core profile | ||
| 1037 | * - ``V4L2_MPEG_VIDEO_PROFILE_SIMPLE_SCALABLE`` | ||
| 1038 | - Simple Scalable profile | ||
| 1039 | * - ``V4L2_MPEG_VIDEO_PROFILE_ADVANCED_CODING_EFFICIENCY`` | ||
| 1040 | - | ||
| 1657 | 1041 | ||
| 1658 | 1042 | ||
| 1659 | 1043 | ||
| @@ -1663,34 +1047,27 @@ Codec Control IDs · 3 unmodified lines | |||
| 1663 | 1047 | ||
| 1664 | .. _v4l2-mpeg-video-multi-slice-mode: | 1048 | .. _v4l2-mpeg-video-multi-slice-mode: |
| 1665 | 1049 | ||
| 1666 | ``V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE (enum v4l2_mpeg_video_multi_slice_mode)`` | 1050 | ``V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE`` |
| 1051 | (enum) | ||
| 1052 | |||
| 1053 | enum v4l2_mpeg_video_multi_slice_mode - | ||
| 1667 | Determines how the encoder should handle division of frame into | 1054 | Determines how the encoder should handle division of frame into |
| 1668 | slices. Applicable to the encoder. Possible values are: | 1055 | slices. Applicable to the encoder. Possible values are: |
| 1669 | 1056 | ||
| 1670 | 1057 | ||
| 1671 | 1058 | ||
| 1059 | .. tabularcolumns:: |p{8.7cm}|p{8.8cm}| | ||
| 1060 | |||
| 1672 | .. flat-table:: | 1061 | .. flat-table:: |
| 1673 | :header-rows: 0 | 1062 | :header-rows: 0 |
| 1674 | :stub-columns: 0 | 1063 | :stub-columns: 0 |
| 1675 | 1064 | ||
| 1676 | 1065 | * - ``V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE`` | |
| 1677 | - .. row 1 | 1066 | - Single slice per frame. |
| 1678 | 1067 | * - ``V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_MAX_MB`` | |
| 1679 | - ``V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE`` | 1068 | - Multiple slices with set maximum number of macroblocks per slice. |
| 1680 | 1069 | * - ``V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_MAX_BYTES`` | |
| 1681 | - Single slice per frame. | 1070 | - Multiple slice with set maximum size in bytes per slice. |
| 1682 | |||
| 1683 | - .. row 2 | ||
| 1684 | |||
| 1685 | - ``V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_MAX_MB`` | ||
| 1686 | |||
| 1687 | - Multiple slices with set maximum number of macroblocks per slice. | ||
| 1688 | |||
| 1689 | - .. row 3 | ||
| 1690 | |||
| 1691 | - ``V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_MAX_BYTES`` | ||
| 1692 | |||
| 1693 | - Multiple slice with set maximum size in bytes per slice. | ||
| 1694 | 1071 | ||
| 1695 | 1072 | ||
| 1696 | 1073 | ||
| @@ -1708,33 +1085,26 @@ Codec Control IDs · 11 unmodified lines | |||
| 1708 | 1085 | ||
| 1709 | .. _v4l2-mpeg-video-h264-loop-filter-mode: | 1086 | .. _v4l2-mpeg-video-h264-loop-filter-mode: |
| 1710 | 1087 | ||
| 1711 | ``V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE (enum v4l2_mpeg_video_h264_loop_filter_mode)`` | 1088 | ``V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE`` |
| 1089 | (enum) | ||
| 1090 | |||
| 1091 | enum v4l2_mpeg_video_h264_loop_filter_mode - | ||
| 1712 | Loop filter mode for H264 encoder. Possible values are: | 1092 | Loop filter mode for H264 encoder. Possible values are: |
| 1713 | 1093 | ||
| 1714 | 1094 | ||
| 1715 | 1095 | ||
| 1096 | .. tabularcolumns:: |p{14.0cm}|p{3.5cm}| | ||
| 1097 | |||
| 1716 | .. flat-table:: | 1098 | .. flat-table:: |
| 1717 | :header-rows: 0 | 1099 | :header-rows: 0 |
| 1718 | :stub-columns: 0 | 1100 | :stub-columns: 0 |
| 1719 | 1101 | ||
| 1720 | 1102 | * - ``V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_ENABLED`` | |
| 1721 | - .. row 1 | 1103 | - Loop filter is enabled. |
| 1722 | 1104 | * - ``V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED`` | |
| 1723 | - ``V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_ENABLED`` | 1105 | - Loop filter is disabled. |
| 1724 | 1106 | * - ``V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED_AT_SLICE_BOUNDARY`` | |
| 1725 | - Loop filter is enabled. | 1107 | - Loop filter is disabled at the slice boundary. |
| 1726 | |||
| 1727 | - .. row 2 | ||
| 1728 | |||
| 1729 | - ``V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED`` | ||
| 1730 | |||
| 1731 | - Loop filter is disabled. | ||
| 1732 | |||
| 1733 | - .. row 3 | ||
| 1734 | |||
| 1735 | - ``V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED_AT_SLICE_BOUNDARY`` | ||
| 1736 | |||
| 1737 | - Loop filter is disabled at the slice boundary. | ||
| 1738 | 1108 | ||
| 1739 | 1109 | ||
| 1740 | 1110 | ||
| @@ -1748,7 +1118,10 @@ Codec Control IDs · 7 unmodified lines | |||
| 1748 | 1118 | ||
| 1749 | .. _v4l2-mpeg-video-h264-entropy-mode: | 1119 | .. _v4l2-mpeg-video-h264-entropy-mode: |
| 1750 | 1120 | ||
| 1751 | ``V4L2_CID_MPEG_VIDEO_H264_ENTROPY_MODE (enum v4l2_mpeg_video_h264_entropy_mode)`` | 1121 | ``V4L2_CID_MPEG_VIDEO_H264_ENTROPY_MODE`` |
| 1122 | (enum) | ||
| 1123 | |||
| 1124 | enum v4l2_mpeg_video_h264_entropy_mode - | ||
| 1752 | Entropy coding mode for H264 - CABAC/CAVALC. Applicable to the H264 | 1125 | Entropy coding mode for H264 - CABAC/CAVALC. Applicable to the H264 |
| 1753 | encoder. Possible values are: | 1126 | encoder. Possible values are: |
| 1754 | 1127 | ||
| @@ -1758,18 +1131,10 @@ Codec Control IDs · 3 unmodified lines | |||
| 1758 | :header-rows: 0 | 1131 | :header-rows: 0 |
| 1759 | :stub-columns: 0 | 1132 | :stub-columns: 0 |
| 1760 | 1133 | ||
| 1761 | 1134 | * - ``V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CAVLC`` | |
| 1762 | - .. row 1 | 1135 | - Use CAVLC entropy coding. |
| 1763 | 1136 | * - ``V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC`` | |
| 1764 | - ``V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CAVLC`` | 1137 | - Use CABAC entropy coding. |
| 1765 | |||
| 1766 | - Use CAVLC entropy coding. | ||
| 1767 | |||
| 1768 | - .. row 2 | ||
| 1769 | |||
| 1770 | - ``V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC`` | ||
| 1771 | |||
| 1772 | - Use CABAC entropy coding. | ||
| 1773 | 1138 | ||
| 1774 | 1139 | ||
| 1775 | 1140 | ||
| @@ -1909,30 +1274,27 @@ Codec Control IDs · 133 unmodified lines | |||
| 1909 | 1274 | ||
| 1910 | .. _v4l2-mpeg-video-header-mode: | 1275 | .. _v4l2-mpeg-video-header-mode: |
| 1911 | 1276 | ||
| 1912 | ``V4L2_CID_MPEG_VIDEO_HEADER_MODE (enum v4l2_mpeg_video_header_mode)`` | 1277 | ``V4L2_CID_MPEG_VIDEO_HEADER_MODE`` |
| 1278 | (enum) | ||
| 1279 | |||
| 1280 | enum v4l2_mpeg_video_header_mode - | ||
| 1913 | Determines whether the header is returned as the first buffer or is | 1281 | Determines whether the header is returned as the first buffer or is |
| 1914 | it returned together with the first frame. Applicable to encoders. | 1282 | it returned together with the first frame. Applicable to encoders. |
| 1915 | Possible values are: | 1283 | Possible values are: |
| 1916 | 1284 | ||
| 1917 | 1285 | ||
| 1918 | 1286 | ||
| 1287 | .. tabularcolumns:: |p{10.3cm}|p{7.2cm}| | ||
| 1288 | |||
| 1919 | .. flat-table:: | 1289 | .. flat-table:: |
| 1920 | :header-rows: 0 | 1290 | :header-rows: 0 |
| 1921 | :stub-columns: 0 | 1291 | :stub-columns: 0 |
| 1922 | 1292 | ||
| 1923 | 1293 | * - ``V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE`` | |
| 1924 | - .. row 1 | 1294 | - The stream header is returned separately in the first buffer. |
| 1925 | 1295 | * - ``V4L2_MPEG_VIDEO_HEADER_MODE_JOINED_WITH_1ST_FRAME`` | |
| 1926 | - ``V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE`` | 1296 | - The stream header is returned together with the first encoded |
| 1927 | 1297 | frame. | |
| 1928 | - The stream header is returned separately in the first buffer. | ||
| 1929 | |||
| 1930 | - .. row 2 | ||
| 1931 | |||
| 1932 | - ``V4L2_MPEG_VIDEO_HEADER_MODE_JOINED_WITH_1ST_FRAME`` | ||
| 1933 | |||
| 1934 | - The stream header is returned together with the first encoded | ||
| 1935 | frame. | ||
| 1936 | 1298 | ||
| 1937 | 1299 | ||
| 1938 | 1300 | ||
| @@ -1965,52 +1327,31 @@ Codec Control IDs · 26 unmodified lines | |||
| 1965 | 1327 | ||
| 1966 | .. _v4l2-mpeg-video-h264-sei-fp-arrangement-type: | 1328 | .. _v4l2-mpeg-video-h264-sei-fp-arrangement-type: |
| 1967 | 1329 | ||
| 1968 | ``V4L2_CID_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE (enum v4l2_mpeg_video_h264_sei_fp_arrangement_type)`` | 1330 | ``V4L2_CID_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE`` |
| 1331 | (enum) | ||
| 1332 | |||
| 1333 | enum v4l2_mpeg_video_h264_sei_fp_arrangement_type - | ||
| 1969 | Frame packing arrangement type for H264 SEI. Applicable to the H264 | 1334 | Frame packing arrangement type for H264 SEI. Applicable to the H264 |
| 1970 | encoder. Possible values are: | 1335 | encoder. Possible values are: |
| 1971 | 1336 | ||
| 1972 | 1337 | .. tabularcolumns:: |p{12cm}|p{5.5cm}| | |
| 1973 | 1338 | ||
| 1974 | .. flat-table:: | 1339 | .. flat-table:: |
| 1975 | :header-rows: 0 | 1340 | :header-rows: 0 |
| 1976 | :stub-columns: 0 | 1341 | :stub-columns: 0 |
| 1977 | 1342 | ||
| 1978 | 1343 | * - ``V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_CHEKERBOARD`` | |
| 1979 | - .. row 1 | 1344 | - Pixels are alternatively from L and R. |
| 1980 | 1345 | * - ``V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_COLUMN`` | |
| 1981 | - ``V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_CHEKERBOARD`` | 1346 | - L and R are interlaced by column. |
| 1982 | 1347 | * - ``V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_ROW`` | |
| 1983 | - Pixels are alternatively from L and R. | 1348 | - L and R are interlaced by row. |
| 1984 | 1349 | * - ``V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_SIDE_BY_SIDE`` | |
| 1985 | - .. row 2 | 1350 | - L is on the left, R on the right. |
| 1986 | 1351 | * - ``V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_TOP_BOTTOM`` | |
| 1987 | - ``V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_COLUMN`` | 1352 | - L is on top, R on bottom. |
| 1988 | 1353 | * - ``V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_TEMPORAL`` | |
| 1989 | - L and R are interlaced by column. | 1354 | - One view per frame. |
| 1990 | |||
| 1991 | - .. row 3 | ||
| 1992 | |||
| 1993 | - ``V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_ROW`` | ||
| 1994 | |||
| 1995 | - L and R are interlaced by row. | ||
| 1996 | |||
| 1997 | - .. row 4 | ||
| 1998 | |||
| 1999 | - ``V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_SIDE_BY_SIDE`` | ||
| 2000 | |||
| 2001 | - L is on the left, R on the right. | ||
| 2002 | |||
| 2003 | - .. row 5 | ||
| 2004 | |||
| 2005 | - ``V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_TOP_BOTTOM`` | ||
| 2006 | |||
| 2007 | - L is on top, R on bottom. | ||
| 2008 | |||
| 2009 | - .. row 6 | ||
| 2010 | |||
| 2011 | - ``V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_TEMPORAL`` | ||
| 2012 | |||
| 2013 | - One view per frame. | ||
| 2014 | 1355 | ||
| 2015 | 1356 | ||
| 2016 | 1357 | ||
| @@ -2021,61 +1362,36 @@ Codec Control IDs · 4 unmodified lines | |||
| 2021 | 1362 | ||
| 2022 | .. _v4l2-mpeg-video-h264-fmo-map-type: | 1363 | .. _v4l2-mpeg-video-h264-fmo-map-type: |
| 2023 | 1364 | ||
| 2024 | ``V4L2_CID_MPEG_VIDEO_H264_FMO_MAP_TYPE (enum v4l2_mpeg_video_h264_fmo_map_type)`` | 1365 | ``V4L2_CID_MPEG_VIDEO_H264_FMO_MAP_TYPE`` |
| 1366 | (enum) | ||
| 1367 | |||
| 1368 | enum v4l2_mpeg_video_h264_fmo_map_type - | ||
| 2025 | When using FMO, the map type divides the image in different scan | 1369 | When using FMO, the map type divides the image in different scan |
| 2026 | patterns of macroblocks. Applicable to the H264 encoder. Possible | 1370 | patterns of macroblocks. Applicable to the H264 encoder. Possible |
| 2027 | values are: | 1371 | values are: |
| 2028 | 1372 | ||
| 2029 | 1373 | .. tabularcolumns:: |p{12.5cm}|p{5.0cm}| | |
| 2030 | 1374 | ||
| 2031 | .. flat-table:: | 1375 | .. flat-table:: |
| 2032 | :header-rows: 0 | 1376 | :header-rows: 0 |
| 2033 | :stub-columns: 0 | 1377 | :stub-columns: 0 |
| 2034 | 1378 | ||
| 2035 | 1379 | * - ``V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_INTERLEAVED_SLICES`` | |
| 2036 | - .. row 1 | 1380 | - Slices are interleaved one after other with macroblocks in run |
| 2037 | 1381 | length order. | |
| 2038 | - ``V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_INTERLEAVED_SLICES`` | 1382 | * - ``V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_SCATTERED_SLICES`` |
| 2039 | 1383 | - Scatters the macroblocks based on a mathematical function known to | |
| 2040 | - Slices are interleaved one after other with macroblocks in run | 1384 | both encoder and decoder. |
| 2041 | length order. | 1385 | * - ``V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_FOREGROUND_WITH_LEFT_OVER`` |
| 2042 | 1386 | - Macroblocks arranged in rectangular areas or regions of interest. | |
| 2043 | - .. row 2 | 1387 | * - ``V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_BOX_OUT`` |
| 2044 | 1388 | - Slice groups grow in a cyclic way from centre to outwards. | |
| 2045 | - ``V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_SCATTERED_SLICES`` | 1389 | * - ``V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_RASTER_SCAN`` |
| 2046 | 1390 | - Slice groups grow in raster scan pattern from left to right. | |
| 2047 | - Scatters the macroblocks based on a mathematical function known to | 1391 | * - ``V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_WIPE_SCAN`` |
| 2048 | both encoder and decoder. | 1392 | - Slice groups grow in wipe scan pattern from top to bottom. |
| 2049 | 1393 | * - ``V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_EXPLICIT`` | |
| 2050 | - .. row 3 | 1394 | - User defined map type. |
| 2051 | |||
| 2052 | - ``V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_FOREGROUND_WITH_LEFT_OVER`` | ||
| 2053 | |||
| 2054 | - Macroblocks arranged in rectangular areas or regions of interest. | ||
| 2055 | |||
| 2056 | - .. row 4 | ||
| 2057 | |||
| 2058 | - ``V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_BOX_OUT`` | ||
| 2059 | |||
| 2060 | - Slice groups grow in a cyclic way from centre to outwards. | ||
| 2061 | |||
| 2062 | - .. row 5 | ||
| 2063 | |||
| 2064 | - ``V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_RASTER_SCAN`` | ||
| 2065 | |||
| 2066 | - Slice groups grow in raster scan pattern from left to right. | ||
| 2067 | |||
| 2068 | - .. row 6 | ||
| 2069 | |||
| 2070 | - ``V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_WIPE_SCAN`` | ||
| 2071 | |||
| 2072 | - Slice groups grow in wipe scan pattern from top to bottom. | ||
| 2073 | |||
| 2074 | - .. row 7 | ||
| 2075 | |||
| 2076 | - ``V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_EXPLICIT`` | ||
| 2077 | |||
| 2078 | - User defined map type. | ||
| 2079 | 1395 | ||
| 2080 | 1396 | ||
| 2081 | 1397 | ||
| @@ -2084,7 +1400,10 @@ Codec Control IDs · 2 unmodified lines | |||
| 2084 | 1400 | ||
| 2085 | .. _v4l2-mpeg-video-h264-fmo-change-direction: | 1401 | .. _v4l2-mpeg-video-h264-fmo-change-direction: |
| 2086 | 1402 | ||
| 2087 | ``V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_DIRECTION (enum v4l2_mpeg_video_h264_fmo_change_dir)`` | 1403 | ``V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_DIRECTION`` |
| 1404 | (enum) | ||
| 1405 | |||
| 1406 | enum v4l2_mpeg_video_h264_fmo_change_dir - | ||
| 2088 | Specifies a direction of the slice group change for raster and wipe | 1407 | Specifies a direction of the slice group change for raster and wipe |
| 2089 | maps. Applicable to the H264 encoder. Possible values are: | 1408 | maps. Applicable to the H264 encoder. Possible values are: |
| 2090 | 1409 | ||
| @@ -2094,18 +1413,10 @@ Codec Control IDs · 3 unmodified lines | |||
| 2094 | :header-rows: 0 | 1413 | :header-rows: 0 |
| 2095 | :stub-columns: 0 | 1414 | :stub-columns: 0 |
| 2096 | 1415 | ||
| 2097 | 1416 | * - ``V4L2_MPEG_VIDEO_H264_FMO_CHANGE_DIR_RIGHT`` | |
| 2098 | - .. row 1 | 1417 | - Raster scan or wipe right. |
| 2099 | 1418 | * - ``V4L2_MPEG_VIDEO_H264_FMO_CHANGE_DIR_LEFT`` | |
| 2100 | - ``V4L2_MPEG_VIDEO_H264_FMO_CHANGE_DIR_RIGHT`` | 1419 | - Reverse raster scan or wipe left. |
| 2101 | |||
| 2102 | - Raster scan or wipe right. | ||
| 2103 | |||
| 2104 | - .. row 2 | ||
| 2105 | |||
| 2106 | - ``V4L2_MPEG_VIDEO_H264_FMO_CHANGE_DIR_LEFT`` | ||
| 2107 | |||
| 2108 | - Reverse raster scan or wipe left. | ||
| 2109 | 1420 | ||
| 2110 | 1421 | ||
| 2111 | 1422 | ||
| @@ -2132,18 +1443,10 @@ Codec Control IDs · 20 unmodified lines | |||
| 2132 | :header-rows: 0 | 1443 | :header-rows: 0 |
| 2133 | :stub-columns: 0 | 1444 | :stub-columns: 0 |
| 2134 | 1445 | ||
| 2135 | 1446 | * - Bit 0:15 | |
| 2136 | - .. row 1 | 1447 | - Slice ID |
| 2137 | 1448 | * - Bit 16:32 | |
| 2138 | - Bit 0:15 | 1449 | - Slice position or order |
| 2139 | |||
| 2140 | - Slice ID | ||
| 2141 | |||
| 2142 | - .. row 2 | ||
| 2143 | |||
| 2144 | - Bit 16:32 | ||
| 2145 | |||
| 2146 | - Slice position or order | ||
| 2147 | 1450 | ||
| 2148 | 1451 | ||
| 2149 | 1452 | ||
| @@ -2152,7 +1455,10 @@ Codec Control IDs · 2 unmodified lines | |||
| 2152 | 1455 | ||
| 2153 | .. _v4l2-mpeg-video-h264-hierarchical-coding-type: | 1456 | .. _v4l2-mpeg-video-h264-hierarchical-coding-type: |
| 2154 | 1457 | ||
| 2155 | ``V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_TYPE (enum v4l2_mpeg_video_h264_hierarchical_coding_type)`` | 1458 | ``V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_TYPE`` |
| 1459 | (enum) | ||
| 1460 | |||
| 1461 | enum v4l2_mpeg_video_h264_hierarchical_coding_type - | ||
| 2156 | Specifies the hierarchical coding type. Applicable to the H264 | 1462 | Specifies the hierarchical coding type. Applicable to the H264 |
| 2157 | encoder. Possible values are: | 1463 | encoder. Possible values are: |
| 2158 | 1464 | ||
| @@ -2162,18 +1468,10 @@ Codec Control IDs · 3 unmodified lines | |||
| 2162 | :header-rows: 0 | 1468 | :header-rows: 0 |
| 2163 | :stub-columns: 0 | 1469 | :stub-columns: 0 |
| 2164 | 1470 | ||
| 2165 | 1471 | * - ``V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_B`` | |
| 2166 | - .. row 1 | 1472 | - Hierarchical B coding. |
| 2167 | 1473 | * - ``V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P`` | |
| 2168 | - ``V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_B`` | 1474 | - Hierarchical P coding. |
| 2169 | |||
| 2170 | - Hierarchical B coding. | ||
| 2171 | |||
| 2172 | - .. row 2 | ||
| 2173 | |||
| 2174 | - ``V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P`` | ||
| 2175 | |||
| 2176 | - Hierarchical P coding. | ||
| 2177 | 1475 | ||
| 2178 | 1476 | ||
| 2179 | 1477 | ||
| @@ -2192,18 +1490,10 @@ Codec Control IDs · 12 unmodified lines | |||
| 2192 | :header-rows: 0 | 1490 | :header-rows: 0 |
| 2193 | :stub-columns: 0 | 1491 | :stub-columns: 0 |
| 2194 | 1492 | ||
| 2195 | 1493 | * - Bit 0:15 | |
| 2196 | - .. row 1 | 1494 | - QP value |
| 2197 | 1495 | * - Bit 16:32 | |
| 2198 | - Bit 0:15 | 1496 | - Layer number |
| 2199 | |||
| 2200 | - QP value | ||
| 2201 | |||
| 2202 | - .. row 2 | ||
| 2203 | |||
| 2204 | - Bit 16:32 | ||
| 2205 | |||
| 2206 | - Layer number | ||
| 2207 | 1497 | ||
| 2208 | 1498 | ||
| 2209 | 1499 | ||
| @@ -2255,30 +1545,14 @@ MFC 5.1 Control IDs · 45 unmodified lines | |||
| 2255 | :header-rows: 0 | 1545 | :header-rows: 0 |
| 2256 | :stub-columns: 0 | 1546 | :stub-columns: 0 |
| 2257 | 1547 | ||
| 2258 | 1548 | * - Bit 0:7 | |
| 2259 | - .. row 1 | 1549 | - V chrominance information |
| 2260 | 1550 | * - Bit 8:15 | |
| 2261 | - Bit 0:7 | 1551 | - U chrominance information |
| 2262 | 1552 | * - Bit 16:23 | |
| 2263 | - V chrominance information | 1553 | - Y luminance information |
| 2264 | 1554 | * - Bit 24:31 | |
| 2265 | - .. row 2 | 1555 | - Must be zero. |
| 2266 | |||
| 2267 | - Bit 8:15 | ||
| 2268 | |||
| 2269 | - U chrominance information | ||
| 2270 | |||
| 2271 | - .. row 3 | ||
| 2272 | |||
| 2273 | - Bit 16:23 | ||
| 2274 | |||
| 2275 | - Y luminance information | ||
| 2276 | |||
| 2277 | - .. row 4 | ||
| 2278 | |||
| 2279 | - Bit 24:31 | ||
| 2280 | |||
| 2281 | - Must be zero. | ||
| 2282 | 1556 | ||
| 2283 | 1557 | ||
| 2284 | 1558 | ||
| @@ -2321,38 +1595,30 @@ MFC 5.1 Control IDs · 36 unmodified lines | |||
| 2321 | 1595 | ||
| 2322 | .. _v4l2-mpeg-mfc51-video-frame-skip-mode: | 1596 | .. _v4l2-mpeg-mfc51-video-frame-skip-mode: |
| 2323 | 1597 | ||
| 2324 | ``V4L2_CID_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE (enum v4l2_mpeg_mfc51_video_frame_skip_mode)`` | 1598 | ``V4L2_CID_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE`` |
| 1599 | (enum) | ||
| 1600 | |||
| 1601 | enum v4l2_mpeg_mfc51_video_frame_skip_mode - | ||
| 2325 | Indicates in what conditions the encoder should skip frames. If | 1602 | Indicates in what conditions the encoder should skip frames. If |
| 2326 | encoding a frame would cause the encoded stream to be larger then a | 1603 | encoding a frame would cause the encoded stream to be larger then a |
| 2327 | chosen data limit then the frame will be skipped. Possible values | 1604 | chosen data limit then the frame will be skipped. Possible values |
| 2328 | are: | 1605 | are: |
| 2329 | 1606 | ||
| 2330 | 1607 | ||
| 1608 | .. tabularcolumns:: |p{9.0cm}|p{8.5cm}| | ||
| 2331 | 1609 | ||
| 2332 | .. flat-table:: | 1610 | .. flat-table:: |
| 2333 | :header-rows: 0 | 1611 | :header-rows: 0 |
| 2334 | :stub-columns: 0 | 1612 | :stub-columns: 0 |
| 2335 | 1613 | ||
| 2336 | 1614 | * - ``V4L2_MPEG_MFC51_FRAME_SKIP_MODE_DISABLED`` | |
| 2337 | - .. row 1 | 1615 | - Frame skip mode is disabled. |
| 2338 | 1616 | * - ``V4L2_MPEG_MFC51_FRAME_SKIP_MODE_LEVEL_LIMIT`` | |
| 2339 | - ``V4L2_MPEG_MFC51_FRAME_SKIP_MODE_DISABLED`` | 1617 | - Frame skip mode enabled and buffer limit is set by the chosen |
| 2340 | 1618 | level and is defined by the standard. | |
| 2341 | - Frame skip mode is disabled. | 1619 | * - ``V4L2_MPEG_MFC51_FRAME_SKIP_MODE_BUF_LIMIT`` |
| 2342 | 1620 | - Frame skip mode enabled and buffer limit is set by the VBV | |
| 2343 | - .. row 2 | 1621 | (MPEG1/2/4) or CPB (H264) buffer size control. |
| 2344 | |||
| 2345 | - ``V4L2_MPEG_MFC51_FRAME_SKIP_MODE_LEVEL_LIMIT`` | ||
| 2346 | |||
| 2347 | - Frame skip mode enabled and buffer limit is set by the chosen | ||
| 2348 | level and is defined by the standard. | ||
| 2349 | |||
| 2350 | - .. row 3 | ||
| 2351 | |||
| 2352 | - ``V4L2_MPEG_MFC51_FRAME_SKIP_MODE_BUF_LIMIT`` | ||
| 2353 | |||
| 2354 | - Frame skip mode enabled and buffer limit is set by the VBV | ||
| 2355 | (MPEG1/2/4) or CPB (H264) buffer size control. | ||
| 2356 | 1622 | ||
| 2357 | 1623 | ||
| 2358 | 1624 | ||
| @@ -2370,7 +1636,10 @@ MFC 5.1 Control IDs · 11 unmodified lines | |||
| 2370 | 1636 | ||
| 2371 | .. _v4l2-mpeg-mfc51-video-force-frame-type: | 1637 | .. _v4l2-mpeg-mfc51-video-force-frame-type: |
| 2372 | 1638 | ||
| 2373 | ``V4L2_CID_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE (enum v4l2_mpeg_mfc51_video_force_frame_type)`` | 1639 | ``V4L2_CID_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE`` |
| 1640 | (enum) | ||
| 1641 | |||
| 1642 | enum v4l2_mpeg_mfc51_video_force_frame_type - | ||
| 2374 | Force a frame type for the next queued buffer. Applicable to | 1643 | Force a frame type for the next queued buffer. Applicable to |
| 2375 | encoders. Possible values are: | 1644 | encoders. Possible values are: |
| 2376 | 1645 | ||
| @@ -2380,24 +1649,12 @@ MFC 5.1 Control IDs · 3 unmodified lines | |||
| 2380 | :header-rows: 0 | 1649 | :header-rows: 0 |
| 2381 | :stub-columns: 0 | 1650 | :stub-columns: 0 |
| 2382 | 1651 | ||
| 2383 | 1652 | * - ``V4L2_MPEG_MFC51_FORCE_FRAME_TYPE_DISABLED`` | |
| 2384 | - .. row 1 | 1653 | - Forcing a specific frame type disabled. |
| 2385 | 1654 | * - ``V4L2_MPEG_MFC51_FORCE_FRAME_TYPE_I_FRAME`` | |
| 2386 | - ``V4L2_MPEG_MFC51_FORCE_FRAME_TYPE_DISABLED`` | 1655 | - Force an I-frame. |
| 2387 | 1656 | * - ``V4L2_MPEG_MFC51_FORCE_FRAME_TYPE_NOT_CODED`` | |
| 2388 | - Forcing a specific frame type disabled. | 1657 | - Force a non-coded frame. |
| 2389 | |||
| 2390 | - .. row 2 | ||
| 2391 | |||
| 2392 | - ``V4L2_MPEG_MFC51_FORCE_FRAME_TYPE_I_FRAME`` | ||
| 2393 | |||
| 2394 | - Force an I-frame. | ||
| 2395 | |||
| 2396 | - .. row 3 | ||
| 2397 | |||
| 2398 | - ``V4L2_MPEG_MFC51_FORCE_FRAME_TYPE_NOT_CODED`` | ||
| 2399 | |||
| 2400 | - Force a non-coded frame. | ||
| 2401 | 1658 | ||
| 2402 | 1659 | ||
| 2403 | 1660 | ||
| @@ -2416,7 +1673,10 @@ CX2341x Control IDs · 12 unmodified lines | |||
| 2416 | 1673 | ||
| 2417 | .. _v4l2-mpeg-cx2341x-video-spatial-filter-mode: | 1674 | .. _v4l2-mpeg-cx2341x-video-spatial-filter-mode: |
| 2418 | 1675 | ||
| 2419 | ``V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE (enum v4l2_mpeg_cx2341x_video_spatial_filter_mode)`` | 1676 | ``V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE`` |
| 1677 | (enum) | ||
| 1678 | |||
| 1679 | enum v4l2_mpeg_cx2341x_video_spatial_filter_mode - | ||
| 2420 | Sets the Spatial Filter mode (default ``MANUAL``). Possible values | 1680 | Sets the Spatial Filter mode (default ``MANUAL``). Possible values |
| 2421 | are: | 1681 | are: |
| 2422 | 1682 | ||
| @@ -2426,18 +1686,10 @@ CX2341x Control IDs · 3 unmodified lines | |||
| 2426 | :header-rows: 0 | 1686 | :header-rows: 0 |
| 2427 | :stub-columns: 0 | 1687 | :stub-columns: 0 |
| 2428 | 1688 | ||
| 2429 | 1689 | * - ``V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_MANUAL`` | |
| 2430 | - .. row 1 | 1690 | - Choose the filter manually |
| 2431 | 1691 | * - ``V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_AUTO`` | |
| 2432 | - ``V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_MANUAL`` | 1692 | - Choose the filter automatically |
| 2433 | |||
| 2434 | - Choose the filter manually | ||
| 2435 | |||
| 2436 | - .. row 2 | ||
| 2437 | |||
| 2438 | - ``V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_AUTO`` | ||
| 2439 | |||
| 2440 | - Choose the filter automatically | ||
| 2441 | 1693 | ||
| 2442 | 1694 | ||
| 2443 | 1695 | ||
| @@ -2447,52 +1699,40 @@ CX2341x Control IDs · 3 unmodified lines | |||
| 2447 | 1699 | ||
| 2448 | .. _luma-spatial-filter-type: | 1700 | .. _luma-spatial-filter-type: |
| 2449 | 1701 | ||
| 2450 | ``V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE (enum v4l2_mpeg_cx2341x_video_luma_spatial_filter_type)`` | 1702 | ``V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE`` |
| 1703 | (enum) | ||
| 1704 | |||
| 1705 | enum v4l2_mpeg_cx2341x_video_luma_spatial_filter_type - | ||
| 2451 | Select the algorithm to use for the Luma Spatial Filter (default | 1706 | Select the algorithm to use for the Luma Spatial Filter (default |
| 2452 | ``1D_HOR``). Possible values: | 1707 | ``1D_HOR``). Possible values: |
| 2453 | 1708 | ||
| 2454 | 1709 | ||
| 2455 | 1710 | ||
| 1711 | .. tabularcolumns:: |p{14.5cm}|p{3.0cm}| | ||
| 1712 | |||
| 2456 | .. flat-table:: | 1713 | .. flat-table:: |
| 2457 | :header-rows: 0 | 1714 | :header-rows: 0 |
| 2458 | :stub-columns: 0 | 1715 | :stub-columns: 0 |
| 2459 | 1716 | ||
| 2460 | 1717 | * - ``V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_OFF`` | |
| 2461 | - .. row 1 | 1718 | - No filter |
| 2462 | 1719 | * - ``V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_HOR`` | |
| 2463 | - ``V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_OFF`` | 1720 | - One-dimensional horizontal |
| 2464 | 1721 | * - ``V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_VERT`` | |
| 2465 | - No filter | 1722 | - One-dimensional vertical |
| 2466 | 1723 | * - ``V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_HV_SEPARABLE`` | |
| 2467 | - .. row 2 | 1724 | - Two-dimensional separable |
| 2468 | 1725 | * - ``V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_SYM_NON_SEPARABLE`` | |
| 2469 | - ``V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_HOR`` | 1726 | - Two-dimensional symmetrical non-separable |
| 2470 | |||
| 2471 | - One-dimensional horizontal | ||
| 2472 | |||
| 2473 | - .. row 3 | ||
| 2474 | |||
| 2475 | - ``V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_VERT`` | ||
| 2476 | |||
| 2477 | - One-dimensional vertical | ||
| 2478 | |||
| 2479 | - .. row 4 | ||
| 2480 | |||
| 2481 | - ``V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_HV_SEPARABLE`` | ||
| 2482 | |||
| 2483 | - Two-dimensional separable | ||
| 2484 | |||
| 2485 | - .. row 5 | ||
| 2486 | |||
| 2487 | - ``V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_SYM_NON_SEPARABLE`` | ||
| 2488 | |||
| 2489 | - Two-dimensional symmetrical non-separable | ||
| 2490 | 1727 | ||
| 2491 | 1728 | ||
| 2492 | 1729 | ||
| 2493 | .. _chroma-spatial-filter-type: | 1730 | .. _chroma-spatial-filter-type: |
| 2494 | 1731 | ||
| 2495 | ``V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE (enum v4l2_mpeg_cx2341x_video_chroma_spatial_filter_type)`` | 1732 | ``V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE`` |
| 1733 | (enum) | ||
| 1734 | |||
| 1735 | enum v4l2_mpeg_cx2341x_video_chroma_spatial_filter_type - | ||
| 2496 | Select the algorithm for the Chroma Spatial Filter (default | 1736 | Select the algorithm for the Chroma Spatial Filter (default |
| 2497 | ``1D_HOR``). Possible values are: | 1737 | ``1D_HOR``). Possible values are: |
| 2498 | 1738 | ||
| @@ -2502,24 +1742,19 @@ CX2341x Control IDs · 3 unmodified lines | |||
| 2502 | :header-rows: 0 | 1742 | :header-rows: 0 |
| 2503 | :stub-columns: 0 | 1743 | :stub-columns: 0 |
| 2504 | 1744 | ||
| 2505 | 1745 | * - ``V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_OFF`` | |
| 2506 | - .. row 1 | 1746 | - No filter |
| 2507 | 1747 | * - ``V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_1D_HOR`` | |
| 2508 | - ``V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_OFF`` | 1748 | - One-dimensional horizontal |
| 2509 | |||
| 2510 | - No filter | ||
| 2511 | |||
| 2512 | - .. row 2 | ||
| 2513 | |||
| 2514 | - ``V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_1D_HOR`` | ||
| 2515 | |||
| 2516 | - One-dimensional horizontal | ||
| 2517 | 1749 | ||
| 2518 | 1750 | ||
| 2519 | 1751 | ||
| 2520 | .. _v4l2-mpeg-cx2341x-video-temporal-filter-mode: | 1752 | .. _v4l2-mpeg-cx2341x-video-temporal-filter-mode: |
| 2521 | 1753 | ||
| 2522 | ``V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE (enum v4l2_mpeg_cx2341x_video_temporal_filter_mode)`` | 1754 | ``V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE`` |
| 1755 | (enum) | ||
| 1756 | |||
| 1757 | enum v4l2_mpeg_cx2341x_video_temporal_filter_mode - | ||
| 2523 | Sets the Temporal Filter mode (default ``MANUAL``). Possible values | 1758 | Sets the Temporal Filter mode (default ``MANUAL``). Possible values |
| 2524 | are: | 1759 | are: |
| 2525 | 1760 | ||
| @@ -2529,18 +1764,10 @@ CX2341x Control IDs · 3 unmodified lines | |||
| 2529 | :header-rows: 0 | 1764 | :header-rows: 0 |
| 2530 | :stub-columns: 0 | 1765 | :stub-columns: 0 |
| 2531 | 1766 | ||
| 2532 | 1767 | * - ``V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_MANUAL`` | |
| 2533 | - .. row 1 | 1768 | - Choose the filter manually |
| 2534 | 1769 | * - ``V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_AUTO`` | |
| 2535 | - ``V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_MANUAL`` | 1770 | - Choose the filter automatically |
| 2536 | |||
| 2537 | - Choose the filter manually | ||
| 2538 | |||
| 2539 | - .. row 2 | ||
| 2540 | |||
| 2541 | - ``V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_AUTO`` | ||
| 2542 | |||
| 2543 | - Choose the filter automatically | ||
| 2544 | 1771 | ||
| 2545 | 1772 | ||
| 2546 | 1773 | ||
| @@ -2550,7 +1777,10 @@ CX2341x Control IDs · 3 unmodified lines | |||
| 2550 | 1777 | ||
| 2551 | .. _v4l2-mpeg-cx2341x-video-median-filter-type: | 1778 | .. _v4l2-mpeg-cx2341x-video-median-filter-type: |
| 2552 | 1779 | ||
| 2553 | ``V4L2_CID_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE (enum v4l2_mpeg_cx2341x_video_median_filter_type)`` | 1780 | ``V4L2_CID_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE`` |
| 1781 | (enum) | ||
| 1782 | |||
| 1783 | enum v4l2_mpeg_cx2341x_video_median_filter_type - | ||
| 2554 | Median Filter Type (default ``OFF``). Possible values are: | 1784 | Median Filter Type (default ``OFF``). Possible values are: |
| 2555 | 1785 | ||
| 2556 | 1786 | ||
| @@ -2559,36 +1789,16 @@ CX2341x Control IDs · 2 unmodified lines | |||
| 2559 | :header-rows: 0 | 1789 | :header-rows: 0 |
| 2560 | :stub-columns: 0 | 1790 | :stub-columns: 0 |
| 2561 | 1791 | ||
| 2562 | 1792 | * - ``V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_OFF`` | |
| 2563 | - .. row 1 | 1793 | - No filter |
| 2564 | 1794 | * - ``V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR`` | |
| 2565 | - ``V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_OFF`` | 1795 | - Horizontal filter |
| 2566 | 1796 | * - ``V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_VERT`` | |
| 2567 | - No filter | 1797 | - Vertical filter |
| 2568 | 1798 | * - ``V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR_VERT`` | |
| 2569 | - .. row 2 | 1799 | - Horizontal and vertical filter |
| 2570 | 1800 | * - ``V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_DIAG`` | |
| 2571 | - ``V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR`` | 1801 | - Diagonal filter |
| 2572 | |||
| 2573 | - Horizontal filter | ||
| 2574 | |||
| 2575 | - .. row 3 | ||
| 2576 | |||
| 2577 | - ``V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_VERT`` | ||
| 2578 | |||
| 2579 | - Vertical filter | ||
| 2580 | |||
| 2581 | - .. row 4 | ||
| 2582 | |||
| 2583 | - ``V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR_VERT`` | ||
| 2584 | |||
| 2585 | - Horizontal and vertical filter | ||
| 2586 | |||
| 2587 | - .. row 5 | ||
| 2588 | |||
| 2589 | - ``V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_DIAG`` | ||
| 2590 | |||
| 2591 | - Diagonal filter | ||
| 2592 | 1802 | ||
| 2593 | 1803 | ||
| 2594 | 1804 | ||
| @@ -2631,7 +1841,10 @@ VPX Control IDs · 36 unmodified lines | |||
| 2631 | 1841 | ||
| 2632 | .. _v4l2-vpx-num-partitions: | 1842 | .. _v4l2-vpx-num-partitions: |
| 2633 | 1843 | ||
| 2634 | ``V4L2_CID_MPEG_VIDEO_VPX_NUM_PARTITIONS (enum v4l2_vp8_num_partitions)`` | 1844 | ``V4L2_CID_MPEG_VIDEO_VPX_NUM_PARTITIONS`` |
| 1845 | (enum) | ||
| 1846 | |||
| 1847 | enum v4l2_vp8_num_partitions - | ||
| 2635 | The number of token partitions to use in VP8 encoder. Possible | 1848 | The number of token partitions to use in VP8 encoder. Possible |
| 2636 | values are: | 1849 | values are: |
| 2637 | 1850 | ||
| @@ -2641,30 +1854,14 @@ VPX Control IDs · 3 unmodified lines | |||
| 2641 | :header-rows: 0 | 1854 | :header-rows: 0 |
| 2642 | :stub-columns: 0 | 1855 | :stub-columns: 0 |
| 2643 | 1856 | ||
| 2644 | 1857 | * - ``V4L2_CID_MPEG_VIDEO_VPX_1_PARTITION`` | |
| 2645 | - .. row 1 | 1858 | - 1 coefficient partition |
| 2646 | 1859 | * - ``V4L2_CID_MPEG_VIDEO_VPX_2_PARTITIONS`` | |
| 2647 | - ``V4L2_CID_MPEG_VIDEO_VPX_1_PARTITION`` | 1860 | - 2 coefficient partitions |
| 2648 | 1861 | * - ``V4L2_CID_MPEG_VIDEO_VPX_4_PARTITIONS`` | |
| 2649 | - 1 coefficient partition | 1862 | - 4 coefficient partitions |
| 2650 | 1863 | * - ``V4L2_CID_MPEG_VIDEO_VPX_8_PARTITIONS`` | |
| 2651 | - .. row 2 | 1864 | - 8 coefficient partitions |
| 2652 | |||
| 2653 | - ``V4L2_CID_MPEG_VIDEO_VPX_2_PARTITIONS`` | ||
| 2654 | |||
| 2655 | - 2 coefficient partitions | ||
| 2656 | |||
| 2657 | - .. row 3 | ||
| 2658 | |||
| 2659 | - ``V4L2_CID_MPEG_VIDEO_VPX_4_PARTITIONS`` | ||
| 2660 | |||
| 2661 | - 4 coefficient partitions | ||
| 2662 | |||
| 2663 | - .. row 4 | ||
| 2664 | |||
| 2665 | - ``V4L2_CID_MPEG_VIDEO_VPX_8_PARTITIONS`` | ||
| 2666 | |||
| 2667 | - 8 coefficient partitions | ||
| 2668 | 1865 | ||
| 2669 | 1866 | ||
| 2670 | 1867 | ||
| @@ -2673,37 +1870,28 @@ VPX Control IDs · 2 unmodified lines | |||
| 2673 | 1870 | ||
| 2674 | .. _v4l2-vpx-num-ref-frames: | 1871 | .. _v4l2-vpx-num-ref-frames: |
| 2675 | 1872 | ||
| 2676 | ``V4L2_CID_MPEG_VIDEO_VPX_NUM_REF_FRAMES (enum v4l2_vp8_num_ref_frames)`` | 1873 | ``V4L2_CID_MPEG_VIDEO_VPX_NUM_REF_FRAMES`` |
| 1874 | (enum) | ||
| 1875 | |||
| 1876 | enum v4l2_vp8_num_ref_frames - | ||
| 2677 | The number of reference pictures for encoding P frames. Possible | 1877 | The number of reference pictures for encoding P frames. Possible |
| 2678 | values are: | 1878 | values are: |
| 2679 | 1879 | ||
| 2680 | 1880 | .. tabularcolumns:: |p{7.9cm}|p{9.6cm}| | |
| 2681 | 1881 | ||
| 2682 | .. flat-table:: | 1882 | .. flat-table:: |
| 2683 | :header-rows: 0 | 1883 | :header-rows: 0 |
| 2684 | :stub-columns: 0 | 1884 | :stub-columns: 0 |
| 2685 | 1885 | ||
| 2686 | 1886 | * - ``V4L2_CID_MPEG_VIDEO_VPX_1_REF_FRAME`` | |
| 2687 | - .. row 1 | 1887 | - Last encoded frame will be searched |
| 2688 | 1888 | * - ``V4L2_CID_MPEG_VIDEO_VPX_2_REF_FRAME`` | |
| 2689 | - ``V4L2_CID_MPEG_VIDEO_VPX_1_REF_FRAME`` | 1889 | - Two frames will be searched among the last encoded frame, the |
| 2690 | 1890 | golden frame and the alternate reference (altref) frame. The | |
| 2691 | - Last encoded frame will be searched | 1891 | encoder implementation will decide which two are chosen. |
| 2692 | 1892 | * - ``V4L2_CID_MPEG_VIDEO_VPX_3_REF_FRAME`` | |
| 2693 | - .. row 2 | 1893 | - The last encoded frame, the golden frame and the altref frame will |
| 2694 | 1894 | be searched. | |
| 2695 | - ``V4L2_CID_MPEG_VIDEO_VPX_2_REF_FRAME`` | ||
| 2696 | |||
| 2697 | - Two frames will be searched among the last encoded frame, the | ||
| 2698 | golden frame and the alternate reference (altref) frame. The | ||
| 2699 | encoder implementation will decide which two are chosen. | ||
| 2700 | |||
| 2701 | - .. row 3 | ||
| 2702 | |||
| 2703 | - ``V4L2_CID_MPEG_VIDEO_VPX_3_REF_FRAME`` | ||
| 2704 | |||
| 2705 | - The last encoded frame, the golden frame and the altref frame will | ||
| 2706 | be searched. | ||
| 2707 | 1895 | ||
| 2708 | 1896 | ||
| 2709 | 1897 | ||
| @@ -2726,31 +1914,33 @@ VPX Control IDs · 16 unmodified lines | |||
| 2726 | 1914 | ||
| 2727 | .. _v4l2-vpx-golden-frame-sel: | 1915 | .. _v4l2-vpx-golden-frame-sel: |
| 2728 | 1916 | ||
| 2729 | ``V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_SEL (enum v4l2_vp8_golden_frame_sel)`` | 1917 | ``V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_SEL`` |
| 1918 | (enum) | ||
| 1919 | |||
| 1920 | enum v4l2_vp8_golden_frame_sel - | ||
| 2730 | Selects the golden frame for encoding. Possible values are: | 1921 | Selects the golden frame for encoding. Possible values are: |
| 2731 | 1922 | ||
| 1923 | .. raw:: latex | ||
| 2732 | 1924 | ||
| 1925 | \begin{adjustbox}{width=\columnwidth} | ||
| 1926 | |||
| 1927 | .. tabularcolumns:: |p{11.0cm}|p{10.0cm}| | ||
| 2733 | 1928 | ||
| 2734 | .. flat-table:: | 1929 | .. flat-table:: |
| 2735 | :header-rows: 0 | 1930 | :header-rows: 0 |
| 2736 | :stub-columns: 0 | 1931 | :stub-columns: 0 |
| 2737 | 1932 | ||
| 1933 | * - ``V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_USE_PREV`` | ||
| 1934 | - Use the (n-2)th frame as a golden frame, current frame index being | ||
| 1935 | 'n'. | ||
| 1936 | * - ``V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_USE_REF_PERIOD`` | ||
| 1937 | - Use the previous specific frame indicated by | ||
| 1938 | ``V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_REF_PERIOD`` as a | ||
| 1939 | golden frame. | ||
| 2738 | 1940 | ||
| 2739 | - .. row 1 | 1941 | .. raw:: latex |
| 2740 | |||
| 2741 | - ``V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_USE_PREV`` | ||
| 2742 | |||
| 2743 | - Use the (n-2)th frame as a golden frame, current frame index being | ||
| 2744 | 'n'. | ||
| 2745 | |||
| 2746 | - .. row 2 | ||
| 2747 | |||
| 2748 | - ``V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_USE_REF_PERIOD`` | ||
| 2749 | |||
| 2750 | - Use the previous specific frame indicated by | ||
| 2751 | V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_REF_PERIOD as a | ||
| 2752 | golden frame. | ||
| 2753 | 1942 | ||
| 1943 | \end{adjustbox} | ||
| 2754 | 1944 | ||
| 2755 | 1945 | ||
| 2756 | ``V4L2_CID_MPEG_VIDEO_VPX_MIN_QP (integer)`` | 1946 | ``V4L2_CID_MPEG_VIDEO_VPX_MIN_QP (integer)`` |
| @@ -2791,7 +1981,10 @@ Camera Control IDs · 34 unmodified lines | |||
| 2791 | 1981 | ||
| 2792 | .. _v4l2-exposure-auto-type: | 1982 | .. _v4l2-exposure-auto-type: |
| 2793 | 1983 | ||
| 2794 | ``V4L2_CID_EXPOSURE_AUTO (enum v4l2_exposure_auto_type)`` | 1984 | ``V4L2_CID_EXPOSURE_AUTO`` |
| 1985 | (enum) | ||
| 1986 | |||
| 1987 | enum v4l2_exposure_auto_type - | ||
| 2795 | Enables automatic adjustments of the exposure time and/or iris | 1988 | Enables automatic adjustments of the exposure time and/or iris |
| 2796 | aperture. The effect of manual changes of the exposure time or iris | 1989 | aperture. The effect of manual changes of the exposure time or iris |
| 2797 | aperture while these features are enabled is undefined, drivers | 1990 | aperture while these features are enabled is undefined, drivers |
| @@ -2803,30 +1996,14 @@ Camera Control IDs · 5 unmodified lines | |||
| 2803 | :header-rows: 0 | 1996 | :header-rows: 0 |
| 2804 | :stub-columns: 0 | 1997 | :stub-columns: 0 |
| 2805 | 1998 | ||
| 2806 | 1999 | * - ``V4L2_EXPOSURE_AUTO`` | |
| 2807 | - .. row 1 | 2000 | - Automatic exposure time, automatic iris aperture. |
| 2808 | 2001 | * - ``V4L2_EXPOSURE_MANUAL`` | |
| 2809 | - ``V4L2_EXPOSURE_AUTO`` | 2002 | - Manual exposure time, manual iris. |
| 2810 | 2003 | * - ``V4L2_EXPOSURE_SHUTTER_PRIORITY`` | |
| 2811 | - Automatic exposure time, automatic iris aperture. | 2004 | - Manual exposure time, auto iris. |
| 2812 | 2005 | * - ``V4L2_EXPOSURE_APERTURE_PRIORITY`` | |
| 2813 | - .. row 2 | 2006 | - Auto exposure time, manual iris. |
| 2814 | |||
| 2815 | - ``V4L2_EXPOSURE_MANUAL`` | ||
| 2816 | |||
| 2817 | - Manual exposure time, manual iris. | ||
| 2818 | |||
| 2819 | - .. row 3 | ||
| 2820 | |||
| 2821 | - ``V4L2_EXPOSURE_SHUTTER_PRIORITY`` | ||
| 2822 | |||
| 2823 | - Manual exposure time, auto iris. | ||
| 2824 | |||
| 2825 | - .. row 4 | ||
| 2826 | |||
| 2827 | - ``V4L2_EXPOSURE_APERTURE_PRIORITY`` | ||
| 2828 | |||
| 2829 | - Auto exposure time, manual iris. | ||
| 2830 | 2007 | ||
| 2831 | 2008 | ||
| 2832 | 2009 | ||
| @@ -2856,45 +2033,32 @@ Camera Control IDs · 23 unmodified lines | |||
| 2856 | 2033 | ||
| 2857 | .. _v4l2-exposure-metering: | 2034 | .. _v4l2-exposure-metering: |
| 2858 | 2035 | ||
| 2859 | ``V4L2_CID_EXPOSURE_METERING (enum v4l2_exposure_metering)`` | 2036 | ``V4L2_CID_EXPOSURE_METERING`` |
| 2860 | Determines how the camera measures the amount of light available for | 2037 | (enum) |
| 2861 | the frame exposure. Possible values are: | ||
| 2862 | |||
| 2863 | |||
| 2864 | |||
| 2865 | .. flat-table:: | ||
| 2866 | :header-rows: 0 | ||
| 2867 | :stub-columns: 0 | ||
| 2868 | |||
| 2869 | |||
| 2870 | - .. row 1 | ||
| 2871 | |||
| 2872 | - ``V4L2_EXPOSURE_METERING_AVERAGE`` | ||
| 2873 | |||
| 2874 | - Use the light information coming from the entire frame and average | ||
| 2875 | giving no weighting to any particular portion of the metered area. | ||
| 2876 | |||
| 2877 | - .. row 2 | ||
| 2878 | |||
| 2879 | - ``V4L2_EXPOSURE_METERING_CENTER_WEIGHTED`` | ||
| 2880 | |||
| 2881 | - Average the light information coming from the entire frame giving | ||
| 2882 | priority to the center of the metered area. | ||
| 2883 | |||
| 2884 | - .. row 3 | ||
| 2885 | |||
| 2886 | - ``V4L2_EXPOSURE_METERING_SPOT`` | ||
| 2887 | 2038 | ||
| 2888 | - Measure only very small area at the center of the frame. | 2039 | enum v4l2_exposure_metering - |
| 2040 | Determines how the camera measures the amount of light available for | ||
| 2041 | the frame exposure. Possible values are: | ||
| 2889 | 2042 | ||
| 2890 | - .. row 4 | 2043 | .. tabularcolumns:: |p{8.5cm}|p{9.0cm}| |
| 2891 | 2044 | ||
| 2892 | - ``V4L2_EXPOSURE_METERING_MATRIX`` | 2045 | .. flat-table:: |
| 2046 | :header-rows: 0 | ||
| 2047 | :stub-columns: 0 | ||
| 2893 | 2048 | ||
| 2894 | - A multi-zone metering. The light intensity is measured in several | 2049 | * - ``V4L2_EXPOSURE_METERING_AVERAGE`` |
| 2895 | points of the frame and the results are combined. The algorithm of | 2050 | - Use the light information coming from the entire frame and average |
| 2896 | the zones selection and their significance in calculating the | 2051 | giving no weighting to any particular portion of the metered area. |
| 2897 | final value is device dependent. | 2052 | * - ``V4L2_EXPOSURE_METERING_CENTER_WEIGHTED`` |
| 2053 | - Average the light information coming from the entire frame giving | ||
| 2054 | priority to the center of the metered area. | ||
| 2055 | * - ``V4L2_EXPOSURE_METERING_SPOT`` | ||
| 2056 | - Measure only very small area at the center of the frame. | ||
| 2057 | * - ``V4L2_EXPOSURE_METERING_MATRIX`` | ||
| 2058 | - A multi-zone metering. The light intensity is measured in several | ||
| 2059 | points of the frame and the results are combined. The algorithm of | ||
| 2060 | the zones selection and their significance in calculating the | ||
| 2061 | final value is device dependent. | ||
| 2898 | 2062 | ||
| 2899 | 2063 | ||
| 2900 | 2064 | ||
| @@ -2968,77 +2132,48 @@ Camera Control IDs · 67 unmodified lines | |||
| 2968 | control may stop updates of the ``V4L2_CID_AUTO_FOCUS_STATUS`` | 2132 | control may stop updates of the ``V4L2_CID_AUTO_FOCUS_STATUS`` |
| 2969 | control value. | 2133 | control value. |
| 2970 | 2134 | ||
| 2971 | 2135 | .. tabularcolumns:: |p{6.5cm}|p{11.0cm}| | |
| 2972 | 2136 | ||
| 2973 | .. flat-table:: | 2137 | .. flat-table:: |
| 2974 | :header-rows: 0 | 2138 | :header-rows: 0 |
| 2975 | :stub-columns: 0 | 2139 | :stub-columns: 0 |
| 2976 | 2140 | ||
| 2977 | 2141 | * - ``V4L2_AUTO_FOCUS_STATUS_IDLE`` | |
| 2978 | - .. row 1 | 2142 | - Automatic focus is not active. |
| 2979 | 2143 | * - ``V4L2_AUTO_FOCUS_STATUS_BUSY`` | |
| 2980 | - ``V4L2_AUTO_FOCUS_STATUS_IDLE`` | 2144 | - Automatic focusing is in progress. |
| 2981 | 2145 | * - ``V4L2_AUTO_FOCUS_STATUS_REACHED`` | |
| 2982 | - Automatic focus is not active. | 2146 | - Focus has been reached. |
| 2983 | 2147 | * - ``V4L2_AUTO_FOCUS_STATUS_FAILED`` | |
| 2984 | - .. row 2 | 2148 | - Automatic focus has failed, the driver will not transition from |
| 2985 | 2149 | this state until another action is performed by an application. | |
| 2986 | - ``V4L2_AUTO_FOCUS_STATUS_BUSY`` | ||
| 2987 | |||
| 2988 | - Automatic focusing is in progress. | ||
| 2989 | |||
| 2990 | - .. row 3 | ||
| 2991 | |||
| 2992 | - ``V4L2_AUTO_FOCUS_STATUS_REACHED`` | ||
| 2993 | |||
| 2994 | - Focus has been reached. | ||
| 2995 | |||
| 2996 | - .. row 4 | ||
| 2997 | |||
| 2998 | - ``V4L2_AUTO_FOCUS_STATUS_FAILED`` | ||
| 2999 | |||
| 3000 | - Automatic focus has failed, the driver will not transition from | ||
| 3001 | this state until another action is performed by an application. | ||
| 3002 | 2150 | ||
| 3003 | 2151 | ||
| 3004 | 2152 | ||
| 3005 | .. _v4l2-auto-focus-range: | 2153 | .. _v4l2-auto-focus-range: |
| 3006 | 2154 | ||
| 3007 | ``V4L2_CID_AUTO_FOCUS_RANGE (enum v4l2_auto_focus_range)`` | 2155 | ``V4L2_CID_AUTO_FOCUS_RANGE`` |
| 3008 | Determines auto focus distance range for which lens may be adjusted. | 2156 | (enum) |
| 3009 | 2157 | ||
| 2158 | enum v4l2_auto_focus_range - | ||
| 2159 | Determines auto focus distance range for which lens may be adjusted. | ||
| 3010 | 2160 | ||
| 2161 | .. tabularcolumns:: |p{6.5cm}|p{11.0cm}| | ||
| 3011 | 2162 | ||
| 3012 | .. flat-table:: | 2163 | .. flat-table:: |
| 3013 | :header-rows: 0 | 2164 | :header-rows: 0 |
| 3014 | :stub-columns: 0 | 2165 | :stub-columns: 0 |
| 3015 | 2166 | ||
| 3016 | 2167 | * - ``V4L2_AUTO_FOCUS_RANGE_AUTO`` | |
| 3017 | - .. row 1 | 2168 | - The camera automatically selects the focus range. |
| 3018 | 2169 | * - ``V4L2_AUTO_FOCUS_RANGE_NORMAL`` | |
| 3019 | - ``V4L2_AUTO_FOCUS_RANGE_AUTO`` | 2170 | - Normal distance range, limited for best automatic focus |
| 3020 | 2171 | performance. | |
| 3021 | - The camera automatically selects the focus range. | 2172 | * - ``V4L2_AUTO_FOCUS_RANGE_MACRO`` |
| 3022 | 2173 | - Macro (close-up) auto focus. The camera will use its minimum | |
| 3023 | - .. row 2 | 2174 | possible distance for auto focus. |
| 3024 | 2175 | * - ``V4L2_AUTO_FOCUS_RANGE_INFINITY`` | |
| 3025 | - ``V4L2_AUTO_FOCUS_RANGE_NORMAL`` | 2176 | - The lens is set to focus on an object at infinite distance. |
| 3026 | |||
| 3027 | - Normal distance range, limited for best automatic focus | ||
| 3028 | performance. | ||
| 3029 | |||
| 3030 | - .. row 3 | ||
| 3031 | |||
| 3032 | - ``V4L2_AUTO_FOCUS_RANGE_MACRO`` | ||
| 3033 | |||
| 3034 | - Macro (close-up) auto focus. The camera will use its minimum | ||
| 3035 | possible distance for auto focus. | ||
| 3036 | |||
| 3037 | - .. row 4 | ||
| 3038 | |||
| 3039 | - ``V4L2_AUTO_FOCUS_RANGE_INFINITY`` | ||
| 3040 | |||
| 3041 | - The lens is set to focus on an object at infinite distance. | ||
| 3042 | 2177 | ||
| 3043 | 2178 | ||
| 3044 | 2179 | ||
| @@ -3088,90 +2223,53 @@ Camera Control IDs · 43 unmodified lines | |||
| 3088 | 2223 | ||
| 3089 | .. _v4l2-auto-n-preset-white-balance: | 2224 | .. _v4l2-auto-n-preset-white-balance: |
| 3090 | 2225 | ||
| 3091 | ``V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE (enum v4l2_auto_n_preset_white_balance)`` | 2226 | ``V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE`` |
| 2227 | (enum) | ||
| 2228 | |||
| 2229 | enum v4l2_auto_n_preset_white_balance - | ||
| 3092 | Sets white balance to automatic, manual or a preset. The presets | 2230 | Sets white balance to automatic, manual or a preset. The presets |
| 3093 | determine color temperature of the light as a hint to the camera for | 2231 | determine color temperature of the light as a hint to the camera for |
| 3094 | white balance adjustments resulting in most accurate color | 2232 | white balance adjustments resulting in most accurate color |
| 3095 | representation. The following white balance presets are listed in | 2233 | representation. The following white balance presets are listed in |
| 3096 | order of increasing color temperature. | 2234 | order of increasing color temperature. |
| 3097 | 2235 | ||
| 3098 | 2236 | .. tabularcolumns:: |p{7.0 cm}|p{10.5cm}| | |
| 3099 | 2237 | ||
| 3100 | .. flat-table:: | 2238 | .. flat-table:: |
| 3101 | :header-rows: 0 | 2239 | :header-rows: 0 |
| 3102 | :stub-columns: 0 | 2240 | :stub-columns: 0 |
| 3103 | 2241 | ||
| 3104 | 2242 | * - ``V4L2_WHITE_BALANCE_MANUAL`` | |
| 3105 | - .. row 1 | 2243 | - Manual white balance. |
| 3106 | 2244 | * - ``V4L2_WHITE_BALANCE_AUTO`` | |
| 3107 | - ``V4L2_WHITE_BALANCE_MANUAL`` | 2245 | - Automatic white balance adjustments. |
| 3108 | 2246 | * - ``V4L2_WHITE_BALANCE_INCANDESCENT`` | |
| 3109 | - Manual white balance. | 2247 | - White balance setting for incandescent (tungsten) lighting. It |
| 3110 | 2248 | generally cools down the colors and corresponds approximately to | |
| 3111 | - .. row 2 | 2249 | 2500...3500 K color temperature range. |
| 3112 | 2250 | * - ``V4L2_WHITE_BALANCE_FLUORESCENT`` | |
| 3113 | - ``V4L2_WHITE_BALANCE_AUTO`` | 2251 | - White balance preset for fluorescent lighting. It corresponds |
| 3114 | 2252 | approximately to 4000...5000 K color temperature. | |
| 3115 | - Automatic white balance adjustments. | 2253 | * - ``V4L2_WHITE_BALANCE_FLUORESCENT_H`` |
| 3116 | 2254 | - With this setting the camera will compensate for fluorescent H | |
| 3117 | - .. row 3 | 2255 | lighting. |
| 3118 | 2256 | * - ``V4L2_WHITE_BALANCE_HORIZON`` | |
| 3119 | - ``V4L2_WHITE_BALANCE_INCANDESCENT`` | 2257 | - White balance setting for horizon daylight. It corresponds |
| 3120 | 2258 | approximately to 5000 K color temperature. | |
| 3121 | - White balance setting for incandescent (tungsten) lighting. It | 2259 | * - ``V4L2_WHITE_BALANCE_DAYLIGHT`` |
| 3122 | generally cools down the colors and corresponds approximately to | 2260 | - White balance preset for daylight (with clear sky). It corresponds |
| 3123 | 2500...3500 K color temperature range. | 2261 | approximately to 5000...6500 K color temperature. |
| 3124 | 2262 | * - ``V4L2_WHITE_BALANCE_FLASH`` | |
| 3125 | - .. row 4 | 2263 | - With this setting the camera will compensate for the flash light. |
| 3126 | 2264 | It slightly warms up the colors and corresponds roughly to | |
| 3127 | - ``V4L2_WHITE_BALANCE_FLUORESCENT`` | 2265 | 5000...5500 K color temperature. |
| 3128 | 2266 | * - ``V4L2_WHITE_BALANCE_CLOUDY`` | |
| 3129 | - White balance preset for fluorescent lighting. It corresponds | 2267 | - White balance preset for moderately overcast sky. This option |
| 3130 | approximately to 4000...5000 K color temperature. | 2268 | corresponds approximately to 6500...8000 K color temperature |
| 3131 | 2269 | range. | |
| 3132 | - .. row 5 | 2270 | * - ``V4L2_WHITE_BALANCE_SHADE`` |
| 3133 | 2271 | - White balance preset for shade or heavily overcast sky. It | |
| 3134 | - ``V4L2_WHITE_BALANCE_FLUORESCENT_H`` | 2272 | corresponds approximately to 9000...10000 K color temperature. |
| 3135 | |||
| 3136 | - With this setting the camera will compensate for fluorescent H | ||
| 3137 | lighting. | ||
| 3138 | |||
| 3139 | - .. row 6 | ||
| 3140 | |||
| 3141 | - ``V4L2_WHITE_BALANCE_HORIZON`` | ||
| 3142 | |||
| 3143 | - White balance setting for horizon daylight. It corresponds | ||
| 3144 | approximately to 5000 K color temperature. | ||
| 3145 | |||
| 3146 | - .. row 7 | ||
| 3147 | |||
| 3148 | - ``V4L2_WHITE_BALANCE_DAYLIGHT`` | ||
| 3149 | |||
| 3150 | - White balance preset for daylight (with clear sky). It corresponds | ||
| 3151 | approximately to 5000...6500 K color temperature. | ||
| 3152 | |||
| 3153 | - .. row 8 | ||
| 3154 | |||
| 3155 | - ``V4L2_WHITE_BALANCE_FLASH`` | ||
| 3156 | |||
| 3157 | - With this setting the camera will compensate for the flash light. | ||
| 3158 | It slightly warms up the colors and corresponds roughly to | ||
| 3159 | 5000...5500 K color temperature. | ||
| 3160 | |||
| 3161 | - .. row 9 | ||
| 3162 | |||
| 3163 | - ``V4L2_WHITE_BALANCE_CLOUDY`` | ||
| 3164 | |||
| 3165 | - White balance preset for moderately overcast sky. This option | ||
| 3166 | corresponds approximately to 6500...8000 K color temperature | ||
| 3167 | range. | ||
| 3168 | |||
| 3169 | - .. row 10 | ||
| 3170 | |||
| 3171 | - ``V4L2_WHITE_BALANCE_SHADE`` | ||
| 3172 | |||
| 3173 | - White balance preset for shade or heavily overcast sky. It | ||
| 3174 | corresponds approximately to 9000...10000 K color temperature. | ||
| 3175 | 2273 | ||
| 3176 | 2274 | ||
| 3177 | 2275 | ||
| @@ -3205,7 +2303,10 @@ Camera Control IDs · 27 unmodified lines | |||
| 3205 | 2303 | ||
| 3206 | .. _v4l2-iso-sensitivity-auto-type: | 2304 | .. _v4l2-iso-sensitivity-auto-type: |
| 3207 | 2305 | ||
| 3208 | ``V4L2_CID_ISO_SENSITIVITY_AUTO (enum v4l2_iso_sensitivity_type)`` | 2306 | ``V4L2_CID_ISO_SENSITIVITY_AUTO`` |
| 2307 | (enum) | ||
| 2308 | |||
| 2309 | enum v4l2_iso_sensitivity_type - | ||
| 3209 | Enables or disables automatic ISO sensitivity adjustments. | 2310 | Enables or disables automatic ISO sensitivity adjustments. |
| 3210 | 2311 | ||
| 3211 | 2312 | ||
| @@ -3214,24 +2315,19 @@ Camera Control IDs · 2 unmodified lines | |||
| 3214 | :header-rows: 0 | 2315 | :header-rows: 0 |
| 3215 | :stub-columns: 0 | 2316 | :stub-columns: 0 |
| 3216 | 2317 | ||
| 3217 | 2318 | * - ``V4L2_CID_ISO_SENSITIVITY_MANUAL`` | |
| 3218 | - .. row 1 | 2319 | - Manual ISO sensitivity. |
| 3219 | 2320 | * - ``V4L2_CID_ISO_SENSITIVITY_AUTO`` | |
| 3220 | - ``V4L2_CID_ISO_SENSITIVITY_MANUAL`` | 2321 | - Automatic ISO sensitivity adjustments. |
| 3221 | |||
| 3222 | - Manual ISO sensitivity. | ||
| 3223 | |||
| 3224 | - .. row 2 | ||
| 3225 | |||
| 3226 | - ``V4L2_CID_ISO_SENSITIVITY_AUTO`` | ||
| 3227 | |||
| 3228 | - Automatic ISO sensitivity adjustments. | ||
| 3229 | 2322 | ||
| 3230 | 2323 | ||
| 3231 | 2324 | ||
| 3232 | .. _v4l2-scene-mode: | 2325 | .. _v4l2-scene-mode: |
| 3233 | 2326 | ||
| 3234 | ``V4L2_CID_SCENE_MODE (enum v4l2_scene_mode)`` | 2327 | ``V4L2_CID_SCENE_MODE`` |
| 2328 | (enum) | ||
| 2329 | |||
| 2330 | enum v4l2_scene_mode - | ||
| 3235 | This control allows to select scene programs as the camera automatic | 2331 | This control allows to select scene programs as the camera automatic |
| 3236 | modes optimized for common shooting scenes. Within these modes the | 2332 | modes optimized for common shooting scenes. Within these modes the |
| 3237 | camera determines best exposure, aperture, focusing, light metering, | 2333 | camera determines best exposure, aperture, focusing, light metering, |
| @@ -3243,133 +2339,77 @@ Camera Control IDs · 5 unmodified lines | |||
| 3243 | to ``V4L2_SCENE_MODE_NONE`` to make sure the other possibly related | 2339 | to ``V4L2_SCENE_MODE_NONE`` to make sure the other possibly related |
| 3244 | controls are accessible. The following scene programs are defined: | 2340 | controls are accessible. The following scene programs are defined: |
| 3245 | 2341 | ||
| 3246 | 2342 | .. tabularcolumns:: |p{6.0cm}|p{11.5cm}| | |
| 3247 | 2343 | ||
| 3248 | .. flat-table:: | 2344 | .. flat-table:: |
| 3249 | :header-rows: 0 | 2345 | :header-rows: 0 |
| 3250 | :stub-columns: 0 | 2346 | :stub-columns: 0 |
| 3251 | 2347 | ||
| 3252 | 2348 | * - ``V4L2_SCENE_MODE_NONE`` | |
| 3253 | - .. row 1 | 2349 | - The scene mode feature is disabled. |
| 3254 | 2350 | * - ``V4L2_SCENE_MODE_BACKLIGHT`` | |
| 3255 | - ``V4L2_SCENE_MODE_NONE`` | 2351 | - Backlight. Compensates for dark shadows when light is coming from |
| 3256 | 2352 | behind a subject, also by automatically turning on the flash. | |
| 3257 | - The scene mode feature is disabled. | 2353 | * - ``V4L2_SCENE_MODE_BEACH_SNOW`` |
| 3258 | 2354 | - Beach and snow. This mode compensates for all-white or bright | |
| 3259 | - .. row 2 | 2355 | scenes, which tend to look gray and low contrast, when camera's |
| 3260 | 2356 | automatic exposure is based on an average scene brightness. To | |
| 3261 | - ``V4L2_SCENE_MODE_BACKLIGHT`` | 2357 | compensate, this mode automatically slightly overexposes the |
| 3262 | 2358 | frames. The white balance may also be adjusted to compensate for | |
| 3263 | - Backlight. Compensates for dark shadows when light is coming from | 2359 | the fact that reflected snow looks bluish rather than white. |
| 3264 | behind a subject, also by automatically turning on the flash. | 2360 | * - ``V4L2_SCENE_MODE_CANDLELIGHT`` |
| 3265 | 2361 | - Candle light. The camera generally raises the ISO sensitivity and | |
| 3266 | - .. row 3 | 2362 | lowers the shutter speed. This mode compensates for relatively |
| 3267 | 2363 | close subject in the scene. The flash is disabled in order to | |
| 3268 | - ``V4L2_SCENE_MODE_BEACH_SNOW`` | 2364 | preserve the ambiance of the light. |
| 3269 | 2365 | * - ``V4L2_SCENE_MODE_DAWN_DUSK`` | |
| 3270 | - Beach and snow. This mode compensates for all-white or bright | 2366 | - Dawn and dusk. Preserves the colors seen in low natural light |
| 3271 | scenes, which tend to look gray and low contrast, when camera's | 2367 | before dusk and after down. The camera may turn off the flash, and |
| 3272 | automatic exposure is based on an average scene brightness. To | 2368 | automatically focus at infinity. It will usually boost saturation |
| 3273 | compensate, this mode automatically slightly overexposes the | 2369 | and lower the shutter speed. |
| 3274 | frames. The white balance may also be adjusted to compensate for | 2370 | * - ``V4L2_SCENE_MODE_FALL_COLORS`` |
| 3275 | the fact that reflected snow looks bluish rather than white. | 2371 | - Fall colors. Increases saturation and adjusts white balance for |
| 3276 | 2372 | color enhancement. Pictures of autumn leaves get saturated reds | |
| 3277 | - .. row 4 | 2373 | and yellows. |
| 3278 | 2374 | * - ``V4L2_SCENE_MODE_FIREWORKS`` | |
| 3279 | - ``V4L2_SCENE_MODE_CANDLELIGHT`` | 2375 | - Fireworks. Long exposure times are used to capture the expanding |
| 3280 | 2376 | burst of light from a firework. The camera may invoke image | |
| 3281 | - Candle light. The camera generally raises the ISO sensitivity and | 2377 | stabilization. |
| 3282 | lowers the shutter speed. This mode compensates for relatively | 2378 | * - ``V4L2_SCENE_MODE_LANDSCAPE`` |
| 3283 | close subject in the scene. The flash is disabled in order to | 2379 | - Landscape. The camera may choose a small aperture to provide deep |
| 3284 | preserve the ambiance of the light. | 2380 | depth of field and long exposure duration to help capture detail |
| 3285 | 2381 | in dim light conditions. The focus is fixed at infinity. Suitable | |
| 3286 | - .. row 5 | 2382 | for distant and wide scenery. |
| 3287 | 2383 | * - ``V4L2_SCENE_MODE_NIGHT`` | |
| 3288 | - ``V4L2_SCENE_MODE_DAWN_DUSK`` | 2384 | - Night, also known as Night Landscape. Designed for low light |
| 3289 | 2385 | conditions, it preserves detail in the dark areas without blowing | |
| 3290 | - Dawn and dusk. Preserves the colors seen in low natural light | 2386 | out bright objects. The camera generally sets itself to a |
| 3291 | before dusk and after down. The camera may turn off the flash, and | 2387 | medium-to-high ISO sensitivity, with a relatively long exposure |
| 3292 | automatically focus at infinity. It will usually boost saturation | 2388 | time, and turns flash off. As such, there will be increased image |
| 3293 | and lower the shutter speed. | 2389 | noise and the possibility of blurred image. |
| 3294 | 2390 | * - ``V4L2_SCENE_MODE_PARTY_INDOOR`` | |
| 3295 | - .. row 6 | 2391 | - Party and indoor. Designed to capture indoor scenes that are lit |
| 3296 | 2392 | by indoor background lighting as well as the flash. The camera | |
| 3297 | - ``V4L2_SCENE_MODE_FALL_COLORS`` | 2393 | usually increases ISO sensitivity, and adjusts exposure for the |
| 3298 | 2394 | low light conditions. | |
| 3299 | - Fall colors. Increases saturation and adjusts white balance for | 2395 | * - ``V4L2_SCENE_MODE_PORTRAIT`` |
| 3300 | color enhancement. Pictures of autumn leaves get saturated reds | 2396 | - Portrait. The camera adjusts the aperture so that the depth of |
| 3301 | and yellows. | 2397 | field is reduced, which helps to isolate the subject against a |
| 3302 | 2398 | smooth background. Most cameras recognize the presence of faces in | |
| 3303 | - .. row 7 | 2399 | the scene and focus on them. The color hue is adjusted to enhance |
| 3304 | 2400 | skin tones. The intensity of the flash is often reduced. | |
| 3305 | - ``V4L2_SCENE_MODE_FIREWORKS`` | 2401 | * - ``V4L2_SCENE_MODE_SPORTS`` |
| 3306 | 2402 | - Sports. Significantly increases ISO and uses a fast shutter speed | |
| 3307 | - Fireworks. Long exposure times are used to capture the expanding | 2403 | to freeze motion of rapidly-moving subjects. Increased image noise |
| 3308 | burst of light from a firework. The camera may invoke image | 2404 | may be seen in this mode. |
| 3309 | stabilization. | 2405 | * - ``V4L2_SCENE_MODE_SUNSET`` |
| 3310 | 2406 | - Sunset. Preserves deep hues seen in sunsets and sunrises. It bumps | |
| 3311 | - .. row 8 | 2407 | up the saturation. |
| 3312 | 2408 | * - ``V4L2_SCENE_MODE_TEXT`` | |
| 3313 | - ``V4L2_SCENE_MODE_LANDSCAPE`` | 2409 | - Text. It applies extra contrast and sharpness, it is typically a |
| 3314 | 2410 | black-and-white mode optimized for readability. Automatic focus | |
| 3315 | - Landscape. The camera may choose a small aperture to provide deep | 2411 | may be switched to close-up mode and this setting may also involve |
| 3316 | depth of field and long exposure duration to help capture detail | 2412 | some lens-distortion correction. |
| 3317 | in dim light conditions. The focus is fixed at infinity. Suitable | ||
| 3318 | for distant and wide scenery. | ||
| 3319 | |||
| 3320 | - .. row 9 | ||
| 3321 | |||
| 3322 | - ``V4L2_SCENE_MODE_NIGHT`` | ||
| 3323 | |||
| 3324 | - Night, also known as Night Landscape. Designed for low light | ||
| 3325 | conditions, it preserves detail in the dark areas without blowing | ||
| 3326 | out bright objects. The camera generally sets itself to a | ||
| 3327 | medium-to-high ISO sensitivity, with a relatively long exposure | ||
| 3328 | time, and turns flash off. As such, there will be increased image | ||
| 3329 | noise and the possibility of blurred image. | ||
| 3330 | |||
| 3331 | - .. row 10 | ||
| 3332 | |||
| 3333 | - ``V4L2_SCENE_MODE_PARTY_INDOOR`` | ||
| 3334 | |||
| 3335 | - Party and indoor. Designed to capture indoor scenes that are lit | ||
| 3336 | by indoor background lighting as well as the flash. The camera | ||
| 3337 | usually increases ISO sensitivity, and adjusts exposure for the | ||
| 3338 | low light conditions. | ||
| 3339 | |||
| 3340 | - .. row 11 | ||
| 3341 | |||
| 3342 | - ``V4L2_SCENE_MODE_PORTRAIT`` | ||
| 3343 | |||
| 3344 | - Portrait. The camera adjusts the aperture so that the depth of | ||
| 3345 | field is reduced, which helps to isolate the subject against a | ||
| 3346 | smooth background. Most cameras recognize the presence of faces in | ||
| 3347 | the scene and focus on them. The color hue is adjusted to enhance | ||
| 3348 | skin tones. The intensity of the flash is often reduced. | ||
| 3349 | |||
| 3350 | - .. row 12 | ||
| 3351 | |||
| 3352 | - ``V4L2_SCENE_MODE_SPORTS`` | ||
| 3353 | |||
| 3354 | - Sports. Significantly increases ISO and uses a fast shutter speed | ||
| 3355 | to freeze motion of rapidly-moving subjects. Increased image noise | ||
| 3356 | may be seen in this mode. | ||
| 3357 | |||
| 3358 | - .. row 13 | ||
| 3359 | |||
| 3360 | - ``V4L2_SCENE_MODE_SUNSET`` | ||
| 3361 | |||
| 3362 | - Sunset. Preserves deep hues seen in sunsets and sunrises. It bumps | ||
| 3363 | up the saturation. | ||
| 3364 | |||
| 3365 | - .. row 14 | ||
| 3366 | |||
| 3367 | - ``V4L2_SCENE_MODE_TEXT`` | ||
| 3368 | |||
| 3369 | - Text. It applies extra contrast and sharpness, it is typically a | ||
| 3370 | black-and-white mode optimized for readability. Automatic focus | ||
| 3371 | may be switched to close-up mode and this setting may also involve | ||
| 3372 | some lens-distortion correction. | ||
| 3373 | 2413 | ||
| 3374 | 2414 | ||
| 3375 | 2415 | ||
| @@ -3393,24 +2433,12 @@ Camera Control IDs · 17 unmodified lines | |||
| 3393 | :header-rows: 0 | 2433 | :header-rows: 0 |
| 3394 | :stub-columns: 0 | 2434 | :stub-columns: 0 |
| 3395 | 2435 | ||
| 3396 | 2436 | * - ``V4L2_LOCK_EXPOSURE`` | |
| 3397 | - .. row 1 | 2437 | - Automatic exposure adjustments lock. |
| 3398 | 2438 | * - ``V4L2_LOCK_WHITE_BALANCE`` | |
| 3399 | - ``V4L2_LOCK_EXPOSURE`` | 2439 | - Automatic white balance adjustments lock. |
| 3400 | 2440 | * - ``V4L2_LOCK_FOCUS`` | |
| 3401 | - Automatic exposure adjustments lock. | 2441 | - Automatic focus lock. |
| 3402 | |||
| 3403 | - .. row 2 | ||
| 3404 | |||
| 3405 | - ``V4L2_LOCK_WHITE_BALANCE`` | ||
| 3406 | |||
| 3407 | - Automatic white balance adjustments lock. | ||
| 3408 | |||
| 3409 | - .. row 3 | ||
| 3410 | |||
| 3411 | - ``V4L2_LOCK_FOCUS`` | ||
| 3412 | |||
| 3413 | - Automatic focus lock. | ||
| 3414 | 2442 | ||
| 3415 | 2443 | ||
| 3416 | 2444 | ||
| @@ -3570,7 +2598,10 @@ FM_TX Control IDs · 153 unmodified lines | |||
| 3570 | Configures pilot tone frequency value. Unit is in Hz. The range and | 2598 | Configures pilot tone frequency value. Unit is in Hz. The range and |
| 3571 | step are driver-specific. | 2599 | step are driver-specific. |
| 3572 | 2600 | ||
| 3573 | ``V4L2_CID_TUNE_PREEMPHASIS (enum v4l2_preemphasis)`` | 2601 | ``V4L2_CID_TUNE_PREEMPHASIS`` |
| 2602 | (enum) | ||
| 2603 | |||
| 2604 | enum v4l2_preemphasis - | ||
| 3574 | Configures the pre-emphasis value for broadcasting. A pre-emphasis | 2605 | Configures the pre-emphasis value for broadcasting. A pre-emphasis |
| 3575 | filter is applied to the broadcast to accentuate the high audio | 2606 | filter is applied to the broadcast to accentuate the high audio |
| 3576 | frequencies. Depending on the region, a time constant of either 50 | 2607 | frequencies. Depending on the region, a time constant of either 50 |
| @@ -3583,24 +2614,12 @@ FM_TX Control IDs · 6 unmodified lines | |||
| 3583 | :header-rows: 0 | 2614 | :header-rows: 0 |
| 3584 | :stub-columns: 0 | 2615 | :stub-columns: 0 |
| 3585 | 2616 | ||
| 3586 | 2617 | * - ``V4L2_PREEMPHASIS_DISABLED`` | |
| 3587 | - .. row 1 | 2618 | - No pre-emphasis is applied. |
| 3588 | 2619 | * - ``V4L2_PREEMPHASIS_50_uS`` | |
| 3589 | - ``V4L2_PREEMPHASIS_DISABLED`` | 2620 | - A pre-emphasis of 50 uS is used. |
| 3590 | 2621 | * - ``V4L2_PREEMPHASIS_75_uS`` | |
| 3591 | - No pre-emphasis is applied. | 2622 | - A pre-emphasis of 75 uS is used. |
| 3592 | |||
| 3593 | - .. row 2 | ||
| 3594 | |||
| 3595 | - ``V4L2_PREEMPHASIS_50_uS`` | ||
| 3596 | |||
| 3597 | - A pre-emphasis of 50 uS is used. | ||
| 3598 | |||
| 3599 | - .. row 3 | ||
| 3600 | |||
| 3601 | - ``V4L2_PREEMPHASIS_75_uS`` | ||
| 3602 | |||
| 3603 | - A pre-emphasis of 75 uS is used. | ||
| 3604 | 2623 | ||
| 3605 | 2624 | ||
| 3606 | 2625 | ||
| @@ -3684,51 +2703,31 @@ Flash Control IDs · 77 unmodified lines | |||
| 3684 | :header-rows: 0 | 2703 | :header-rows: 0 |
| 3685 | :stub-columns: 0 | 2704 | :stub-columns: 0 |
| 3686 | 2705 | ||
| 3687 | 2706 | * - ``V4L2_FLASH_LED_MODE_NONE`` | |
| 3688 | - .. row 1 | 2707 | - Off. |
| 3689 | 2708 | * - ``V4L2_FLASH_LED_MODE_FLASH`` | |
| 3690 | - ``V4L2_FLASH_LED_MODE_NONE`` | 2709 | - Flash mode. |
| 3691 | 2710 | * - ``V4L2_FLASH_LED_MODE_TORCH`` | |
| 3692 | - Off. | 2711 | - Torch mode. See V4L2_CID_FLASH_TORCH_INTENSITY. |
| 3693 | |||
| 3694 | - .. row 2 | ||
| 3695 | |||
| 3696 | - ``V4L2_FLASH_LED_MODE_FLASH`` | ||
| 3697 | |||
| 3698 | - Flash mode. | ||
| 3699 | |||
| 3700 | - .. row 3 | ||
| 3701 | |||
| 3702 | - ``V4L2_FLASH_LED_MODE_TORCH`` | ||
| 3703 | |||
| 3704 | - Torch mode. See V4L2_CID_FLASH_TORCH_INTENSITY. | ||
| 3705 | 2712 | ||
| 3706 | 2713 | ||
| 3707 | 2714 | ||
| 3708 | ``V4L2_CID_FLASH_STROBE_SOURCE (menu)`` | 2715 | ``V4L2_CID_FLASH_STROBE_SOURCE (menu)`` |
| 3709 | Defines the source of the flash LED strobe. | 2716 | Defines the source of the flash LED strobe. |
| 3710 | 2717 | ||
| 3711 | 2718 | .. tabularcolumns:: |p{7.0cm}|p{10.5cm}| | |
| 3712 | 2719 | ||
| 3713 | .. flat-table:: | 2720 | .. flat-table:: |
| 3714 | :header-rows: 0 | 2721 | :header-rows: 0 |
| 3715 | :stub-columns: 0 | 2722 | :stub-columns: 0 |
| 3716 | 2723 | ||
| 3717 | 2724 | * - ``V4L2_FLASH_STROBE_SOURCE_SOFTWARE`` | |
| 3718 | - .. row 1 | 2725 | - The flash strobe is triggered by using the |
| 3719 | 2726 | V4L2_CID_FLASH_STROBE control. | |
| 3720 | - ``V4L2_FLASH_STROBE_SOURCE_SOFTWARE`` | 2727 | * - ``V4L2_FLASH_STROBE_SOURCE_EXTERNAL`` |
| 3721 | 2728 | - The flash strobe is triggered by an external source. Typically | |
| 3722 | - The flash strobe is triggered by using the | 2729 | this is a sensor, which makes it possible to synchronises the |
| 3723 | V4L2_CID_FLASH_STROBE control. | 2730 | flash strobe start to exposure start. |
| 3724 | |||
| 3725 | - .. row 2 | ||
| 3726 | |||
| 3727 | - ``V4L2_FLASH_STROBE_SOURCE_EXTERNAL`` | ||
| 3728 | |||
| 3729 | - The flash strobe is triggered by an external source. Typically | ||
| 3730 | this is a sensor, which makes it possible to synchronises the | ||
| 3731 | flash strobe start to exposure start. | ||
| 3732 | 2731 | ||
| 3733 | 2732 | ||
| 3734 | 2733 | ||
| @@ -3775,75 +2774,39 @@ Flash Control IDs · 40 unmodified lines | |||
| 3775 | an effect is chip dependent. Reading the faults resets the control | 2774 | an effect is chip dependent. Reading the faults resets the control |
| 3776 | and returns the chip to a usable state if possible. | 2775 | and returns the chip to a usable state if possible. |
| 3777 | 2776 | ||
| 3778 | 2777 | .. tabularcolumns:: |p{8.0cm}|p{9.5cm}| | |
| 3779 | 2778 | ||
| 3780 | .. flat-table:: | 2779 | .. flat-table:: |
| 3781 | :header-rows: 0 | 2780 | :header-rows: 0 |
| 3782 | :stub-columns: 0 | 2781 | :stub-columns: 0 |
| 3783 | 2782 | ||
| 3784 | 2783 | * - ``V4L2_FLASH_FAULT_OVER_VOLTAGE`` | |
| 3785 | - .. row 1 | 2784 | - Flash controller voltage to the flash LED has exceeded the limit |
| 3786 | 2785 | specific to the flash controller. | |
| 3787 | - ``V4L2_FLASH_FAULT_OVER_VOLTAGE`` | 2786 | * - ``V4L2_FLASH_FAULT_TIMEOUT`` |
| 3788 | 2787 | - The flash strobe was still on when the timeout set by the user --- | |
| 3789 | - Flash controller voltage to the flash LED has exceeded the limit | 2788 | V4L2_CID_FLASH_TIMEOUT control --- has expired. Not all flash |
| 3790 | specific to the flash controller. | 2789 | controllers may set this in all such conditions. |
| 3791 | 2790 | * - ``V4L2_FLASH_FAULT_OVER_TEMPERATURE`` | |
| 3792 | - .. row 2 | 2791 | - The flash controller has overheated. |
| 3793 | 2792 | * - ``V4L2_FLASH_FAULT_SHORT_CIRCUIT`` | |
| 3794 | - ``V4L2_FLASH_FAULT_TIMEOUT`` | 2793 | - The short circuit protection of the flash controller has been |
| 3795 | 2794 | triggered. | |
| 3796 | - The flash strobe was still on when the timeout set by the user --- | 2795 | * - ``V4L2_FLASH_FAULT_OVER_CURRENT`` |
| 3797 | V4L2_CID_FLASH_TIMEOUT control --- has expired. Not all flash | 2796 | - Current in the LED power supply has exceeded the limit specific to |
| 3798 | controllers may set this in all such conditions. | 2797 | the flash controller. |
| 3799 | 2798 | * - ``V4L2_FLASH_FAULT_INDICATOR`` | |
| 3800 | - .. row 3 | 2799 | - The flash controller has detected a short or open circuit |
| 3801 | 2800 | condition on the indicator LED. | |
| 3802 | - ``V4L2_FLASH_FAULT_OVER_TEMPERATURE`` | 2801 | * - ``V4L2_FLASH_FAULT_UNDER_VOLTAGE`` |
| 3803 | 2802 | - Flash controller voltage to the flash LED has been below the | |
| 3804 | - The flash controller has overheated. | 2803 | minimum limit specific to the flash controller. |
| 3805 | 2804 | * - ``V4L2_FLASH_FAULT_INPUT_VOLTAGE`` | |
| 3806 | - .. row 4 | 2805 | - The input voltage of the flash controller is below the limit under |
| 3807 | 2806 | which strobing the flash at full current will not be possible.The | |
| 3808 | - ``V4L2_FLASH_FAULT_SHORT_CIRCUIT`` | 2807 | condition persists until this flag is no longer set. |
| 3809 | 2808 | * - ``V4L2_FLASH_FAULT_LED_OVER_TEMPERATURE`` | |
| 3810 | - The short circuit protection of the flash controller has been | 2809 | - The temperature of the LED has exceeded its allowed upper limit. |
| 3811 | triggered. | ||
| 3812 | |||
| 3813 | - .. row 5 | ||
| 3814 | |||
| 3815 | - ``V4L2_FLASH_FAULT_OVER_CURRENT`` | ||
| 3816 | |||
| 3817 | - Current in the LED power supply has exceeded the limit specific to | ||
| 3818 | the flash controller. | ||
| 3819 | |||
| 3820 | - .. row 6 | ||
| 3821 | |||
| 3822 | - ``V4L2_FLASH_FAULT_INDICATOR`` | ||
| 3823 | |||
| 3824 | - The flash controller has detected a short or open circuit | ||
| 3825 | condition on the indicator LED. | ||
| 3826 | |||
| 3827 | - .. row 7 | ||
| 3828 | |||
| 3829 | - ``V4L2_FLASH_FAULT_UNDER_VOLTAGE`` | ||
| 3830 | |||
| 3831 | - Flash controller voltage to the flash LED has been below the | ||
| 3832 | minimum limit specific to the flash controller. | ||
| 3833 | |||
| 3834 | - .. row 8 | ||
| 3835 | |||
| 3836 | - ``V4L2_FLASH_FAULT_INPUT_VOLTAGE`` | ||
| 3837 | |||
| 3838 | - The input voltage of the flash controller is below the limit under | ||
| 3839 | which strobing the flash at full current will not be possible.The | ||
| 3840 | condition persists until this flag is no longer set. | ||
| 3841 | |||
| 3842 | - .. row 9 | ||
| 3843 | |||
| 3844 | - ``V4L2_FLASH_FAULT_LED_OVER_TEMPERATURE`` | ||
| 3845 | |||
| 3846 | - The temperature of the LED has exceeded its allowed upper limit. | ||
| 3847 | 2810 | ||
| 3848 | 2811 | ||
| 3849 | 2812 | ||
| @@ -3886,48 +2849,24 @@ JPEG Control IDs · 36 unmodified lines | |||
| 3886 | how Cb and Cr components are downsampled after coverting an input | 2849 | how Cb and Cr components are downsampled after coverting an input |
| 3887 | image from RGB to Y'CbCr color space. | 2850 | image from RGB to Y'CbCr color space. |
| 3888 | 2851 | ||
| 3889 | 2852 | .. tabularcolumns:: |p{7.0cm}|p{10.5cm}| | |
| 3890 | 2853 | ||
| 3891 | .. flat-table:: | 2854 | .. flat-table:: |
| 3892 | :header-rows: 0 | 2855 | :header-rows: 0 |
| 3893 | :stub-columns: 0 | 2856 | :stub-columns: 0 |
| 3894 | 2857 | ||
| 3895 | 2858 | * - ``V4L2_JPEG_CHROMA_SUBSAMPLING_444`` | |
| 3896 | - .. row 1 | 2859 | - No chroma subsampling, each pixel has Y, Cr and Cb values. |
| 3897 | 2860 | * - ``V4L2_JPEG_CHROMA_SUBSAMPLING_422`` | |
| 3898 | - ``V4L2_JPEG_CHROMA_SUBSAMPLING_444`` | 2861 | - Horizontally subsample Cr, Cb components by a factor of 2. |
| 3899 | 2862 | * - ``V4L2_JPEG_CHROMA_SUBSAMPLING_420`` | |
| 3900 | - No chroma subsampling, each pixel has Y, Cr and Cb values. | 2863 | - Subsample Cr, Cb components horizontally and vertically by 2. |
| 3901 | 2864 | * - ``V4L2_JPEG_CHROMA_SUBSAMPLING_411`` | |
| 3902 | - .. row 2 | 2865 | - Horizontally subsample Cr, Cb components by a factor of 4. |
| 3903 | 2866 | * - ``V4L2_JPEG_CHROMA_SUBSAMPLING_410`` | |
| 3904 | - ``V4L2_JPEG_CHROMA_SUBSAMPLING_422`` | 2867 | - Subsample Cr, Cb components horizontally by 4 and vertically by 2. |
| 3905 | 2868 | * - ``V4L2_JPEG_CHROMA_SUBSAMPLING_GRAY`` | |
| 3906 | - Horizontally subsample Cr, Cb components by a factor of 2. | 2869 | - Use only luminance component. |
| 3907 | |||
| 3908 | - .. row 3 | ||
| 3909 | |||
| 3910 | - ``V4L2_JPEG_CHROMA_SUBSAMPLING_420`` | ||
| 3911 | |||
| 3912 | - Subsample Cr, Cb components horizontally and vertically by 2. | ||
| 3913 | |||
| 3914 | - .. row 4 | ||
| 3915 | |||
| 3916 | - ``V4L2_JPEG_CHROMA_SUBSAMPLING_411`` | ||
| 3917 | |||
| 3918 | - Horizontally subsample Cr, Cb components by a factor of 4. | ||
| 3919 | |||
| 3920 | - .. row 5 | ||
| 3921 | |||
| 3922 | - ``V4L2_JPEG_CHROMA_SUBSAMPLING_410`` | ||
| 3923 | |||
| 3924 | - Subsample Cr, Cb components horizontally by 4 and vertically by 2. | ||
| 3925 | |||
| 3926 | - .. row 6 | ||
| 3927 | |||
| 3928 | - ``V4L2_JPEG_CHROMA_SUBSAMPLING_GRAY`` | ||
| 3929 | |||
| 3930 | - Use only luminance component. | ||
| 3931 | 2870 | ||
| 3932 | 2871 | ||
| 3933 | 2872 | ||
| @@ -3969,36 +2908,16 @@ JPEG Control IDs · 35 unmodified lines | |||
| 3969 | :header-rows: 0 | 2908 | :header-rows: 0 |
| 3970 | :stub-columns: 0 | 2909 | :stub-columns: 0 |
| 3971 | 2910 | ||
| 3972 | 2911 | * - ``V4L2_JPEG_ACTIVE_MARKER_APP0`` | |
| 3973 | - .. row 1 | 2912 | - Application data segment APP\ :sub:`0`. |
| 3974 | 2913 | * - ``V4L2_JPEG_ACTIVE_MARKER_APP1`` | |
| 3975 | - ``V4L2_JPEG_ACTIVE_MARKER_APP0`` | 2914 | - Application data segment APP\ :sub:`1`. |
| 3976 | 2915 | * - ``V4L2_JPEG_ACTIVE_MARKER_COM`` | |
| 3977 | - Application data segment APP\ :sub:`0`. | 2916 | - Comment segment. |
| 3978 | 2917 | * - ``V4L2_JPEG_ACTIVE_MARKER_DQT`` | |
| 3979 | - .. row 2 | 2918 | - Quantization tables segment. |
| 3980 | 2919 | * - ``V4L2_JPEG_ACTIVE_MARKER_DHT`` | |
| 3981 | - ``V4L2_JPEG_ACTIVE_MARKER_APP1`` | 2920 | - Huffman tables segment. |
| 3982 | |||
| 3983 | - Application data segment APP\ :sub:`1`. | ||
| 3984 | |||
| 3985 | - .. row 3 | ||
| 3986 | |||
| 3987 | - ``V4L2_JPEG_ACTIVE_MARKER_COM`` | ||
| 3988 | |||
| 3989 | - Comment segment. | ||
| 3990 | |||
| 3991 | - .. row 4 | ||
| 3992 | |||
| 3993 | - ``V4L2_JPEG_ACTIVE_MARKER_DQT`` | ||
| 3994 | |||
| 3995 | - Quantization tables segment. | ||
| 3996 | |||
| 3997 | - .. row 5 | ||
| 3998 | |||
| 3999 | - ``V4L2_JPEG_ACTIVE_MARKER_DHT`` | ||
| 4000 | |||
| 4001 | - Huffman tables segment. | ||
| 4002 | 2921 | ||
| 4003 | 2922 | ||
| 4004 | 2923 | ||
| @@ -4162,13 +3081,19 @@ Digital Video Control IDs · 157 unmodified lines | |||
| 4162 | EDIDs, then the bit for that pad will be 0. This read-only control | 3081 | EDIDs, then the bit for that pad will be 0. This read-only control |
| 4163 | is applicable to VGA, DVI-A/D, HDMI and DisplayPort connectors. | 3082 | is applicable to VGA, DVI-A/D, HDMI and DisplayPort connectors. |
| 4164 | 3083 | ||
| 4165 | ``V4L2_CID_DV_TX_MODE (enum v4l2_dv_tx_mode)`` | 3084 | ``V4L2_CID_DV_TX_MODE`` |
| 3085 | (enum) | ||
| 3086 | |||
| 3087 | enum v4l2_dv_tx_mode - | ||
| 4166 | HDMI transmitters can transmit in DVI-D mode (just video) or in HDMI | 3088 | HDMI transmitters can transmit in DVI-D mode (just video) or in HDMI |
| 4167 | mode (video + audio + auxiliary data). This control selects which | 3089 | mode (video + audio + auxiliary data). This control selects which |
| 4168 | mode to use: V4L2_DV_TX_MODE_DVI_D or V4L2_DV_TX_MODE_HDMI. | 3090 | mode to use: V4L2_DV_TX_MODE_DVI_D or V4L2_DV_TX_MODE_HDMI. |
| 4169 | This control is applicable to HDMI connectors. | 3091 | This control is applicable to HDMI connectors. |
| 4170 | 3092 | ||
| 4171 | ``V4L2_CID_DV_TX_RGB_RANGE (enum v4l2_dv_rgb_range)`` | 3093 | ``V4L2_CID_DV_TX_RGB_RANGE`` |
| 3094 | (enum) | ||
| 3095 | |||
| 3096 | enum v4l2_dv_rgb_range - | ||
| 4172 | Select the quantization range for RGB output. V4L2_DV_RANGE_AUTO | 3097 | Select the quantization range for RGB output. V4L2_DV_RANGE_AUTO |
| 4173 | follows the RGB quantization range specified in the standard for the | 3098 | follows the RGB quantization range specified in the standard for the |
| 4174 | video interface (ie. :ref:`cea861` for HDMI). | 3099 | video interface (ie. :ref:`cea861` for HDMI). |
| @@ -4180,7 +3105,10 @@ Digital Video Control IDs · 5 unmodified lines | |||
| 4180 | the number of bits per component. This control is applicable to VGA, | 3105 | the number of bits per component. This control is applicable to VGA, |
| 4181 | DVI-A/D, HDMI and DisplayPort connectors. | 3106 | DVI-A/D, HDMI and DisplayPort connectors. |
| 4182 | 3107 | ||
| 4183 | ``V4L2_CID_DV_TX_IT_CONTENT_TYPE (enum v4l2_dv_it_content_type)`` | 3108 | ``V4L2_CID_DV_TX_IT_CONTENT_TYPE`` |
| 3109 | (enum) | ||
| 3110 | |||
| 3111 | enum v4l2_dv_it_content_type - | ||
| 4184 | Configures the IT Content Type of the transmitted video. This | 3112 | Configures the IT Content Type of the transmitted video. This |
| 4185 | information is sent over HDMI and DisplayPort connectors as part of | 3113 | information is sent over HDMI and DisplayPort connectors as part of |
| 4186 | the AVI InfoFrame. The term 'IT Content' is used for content that | 3114 | the AVI InfoFrame. The term 'IT Content' is used for content that |
| @@ -4188,46 +3116,26 @@ Digital Video Control IDs · 1 unmodified line | |||
| 4188 | or an analog source. The enum v4l2_dv_it_content_type defines | 3116 | or an analog source. The enum v4l2_dv_it_content_type defines |
| 4189 | the possible content types: | 3117 | the possible content types: |
| 4190 | 3118 | ||
| 4191 | 3119 | .. tabularcolumns:: |p{7.0cm}|p{10.5cm}| | |
| 4192 | 3120 | ||
| 4193 | .. flat-table:: | 3121 | .. flat-table:: |
| 4194 | :header-rows: 0 | 3122 | :header-rows: 0 |
| 4195 | :stub-columns: 0 | 3123 | :stub-columns: 0 |
| 4196 | 3124 | ||
| 4197 | 3125 | * - ``V4L2_DV_IT_CONTENT_TYPE_GRAPHICS`` | |
| 4198 | - .. row 1 | 3126 | - Graphics content. Pixel data should be passed unfiltered and |
| 4199 | 3127 | without analog reconstruction. | |
| 4200 | - ``V4L2_DV_IT_CONTENT_TYPE_GRAPHICS`` | 3128 | * - ``V4L2_DV_IT_CONTENT_TYPE_PHOTO`` |
| 4201 | 3129 | - Photo content. The content is derived from digital still pictures. | |
| 4202 | - Graphics content. Pixel data should be passed unfiltered and | 3130 | The content should be passed through with minimal scaling and |
| 4203 | without analog reconstruction. | 3131 | picture enhancements. |
| 4204 | 3132 | * - ``V4L2_DV_IT_CONTENT_TYPE_CINEMA`` | |
| 4205 | - .. row 2 | 3133 | - Cinema content. |
| 4206 | 3134 | * - ``V4L2_DV_IT_CONTENT_TYPE_GAME`` | |
| 4207 | - ``V4L2_DV_IT_CONTENT_TYPE_PHOTO`` | 3135 | - Game content. Audio and video latency should be minimized. |
| 4208 | 3136 | * - ``V4L2_DV_IT_CONTENT_TYPE_NO_ITC`` | |
| 4209 | - Photo content. The content is derived from digital still pictures. | 3137 | - No IT Content information is available and the ITC bit in the AVI |
| 4210 | The content should be passed through with minimal scaling and | 3138 | InfoFrame is set to 0. |
| 4211 | picture enhancements. | ||
| 4212 | |||
| 4213 | - .. row 3 | ||
| 4214 | |||
| 4215 | - ``V4L2_DV_IT_CONTENT_TYPE_CINEMA`` | ||
| 4216 | |||
| 4217 | - Cinema content. | ||
| 4218 | |||
| 4219 | - .. row 4 | ||
| 4220 | |||
| 4221 | - ``V4L2_DV_IT_CONTENT_TYPE_GAME`` | ||
| 4222 | |||
| 4223 | - Game content. Audio and video latency should be minimized. | ||
| 4224 | |||
| 4225 | - .. row 5 | ||
| 4226 | |||
| 4227 | - ``V4L2_DV_IT_CONTENT_TYPE_NO_ITC`` | ||
| 4228 | |||
| 4229 | - No IT Content information is available and the ITC bit in the AVI | ||
| 4230 | InfoFrame is set to 0. | ||
| 4231 | 3139 | ||
| 4232 | 3140 | ||
| 4233 | 3141 | ||
| @@ -4241,7 +3149,10 @@ Digital Video Control IDs · 7 unmodified lines | |||
| 4241 | will be 0. This read-only control is applicable to DVI-D, HDMI and | 3149 | will be 0. This read-only control is applicable to DVI-D, HDMI and |
| 4242 | DisplayPort connectors. | 3150 | DisplayPort connectors. |
| 4243 | 3151 | ||
| 4244 | ``V4L2_CID_DV_RX_RGB_RANGE (enum v4l2_dv_rgb_range)`` | 3152 | ``V4L2_CID_DV_RX_RGB_RANGE`` |
| 3153 | (enum) | ||
| 3154 | |||
| 3155 | enum v4l2_dv_rgb_range - | ||
| 4245 | Select the quantization range for RGB input. V4L2_DV_RANGE_AUTO | 3156 | Select the quantization range for RGB input. V4L2_DV_RANGE_AUTO |
| 4246 | follows the RGB quantization range specified in the standard for the | 3157 | follows the RGB quantization range specified in the standard for the |
| 4247 | video interface (ie. :ref:`cea861` for HDMI). | 3158 | video interface (ie. :ref:`cea861` for HDMI). |
| @@ -4253,7 +3164,10 @@ Digital Video Control IDs · 5 unmodified lines | |||
| 4253 | the number of bits per component. This control is applicable to VGA, | 3164 | the number of bits per component. This control is applicable to VGA, |
| 4254 | DVI-A/D, HDMI and DisplayPort connectors. | 3165 | DVI-A/D, HDMI and DisplayPort connectors. |
| 4255 | 3166 | ||
| 4256 | ``V4L2_CID_DV_RX_IT_CONTENT_TYPE (enum v4l2_dv_it_content_type)`` | 3167 | ``V4L2_CID_DV_RX_IT_CONTENT_TYPE`` |
| 3168 | (enum) | ||
| 3169 | |||
| 3170 | enum v4l2_dv_it_content_type - | ||
| 4257 | Reads the IT Content Type of the received video. This information is | 3171 | Reads the IT Content Type of the received video. This information is |
| 4258 | sent over HDMI and DisplayPort connectors as part of the AVI | 3172 | sent over HDMI and DisplayPort connectors as part of the AVI |
| 4259 | InfoFrame. The term 'IT Content' is used for content that originates | 3173 | InfoFrame. The term 'IT Content' is used for content that originates |
| @@ -4325,7 +3239,10 @@ FM_RX Control IDs · 65 unmodified lines | |||
| 4325 | broadcasts speech. If the transmitter doesn't make this distinction, | 3239 | broadcasts speech. If the transmitter doesn't make this distinction, |
| 4326 | then it will be set. | 3240 | then it will be set. |
| 4327 | 3241 | ||
| 4328 | ``V4L2_CID_TUNE_DEEMPHASIS (enum v4l2_deemphasis)`` | 3242 | ``V4L2_CID_TUNE_DEEMPHASIS`` |
| 3243 | (enum) | ||
| 3244 | |||
| 3245 | enum v4l2_deemphasis - | ||
| 4329 | Configures the de-emphasis value for reception. A de-emphasis filter | 3246 | Configures the de-emphasis value for reception. A de-emphasis filter |
| 4330 | is applied to the broadcast to accentuate the high audio | 3247 | is applied to the broadcast to accentuate the high audio |
| 4331 | frequencies. Depending on the region, a time constant of either 50 | 3248 | frequencies. Depending on the region, a time constant of either 50 |
| @@ -4338,24 +3255,12 @@ FM_RX Control IDs · 6 unmodified lines | |||
| 4338 | :header-rows: 0 | 3255 | :header-rows: 0 |
| 4339 | :stub-columns: 0 | 3256 | :stub-columns: 0 |
| 4340 | 3257 | ||
| 4341 | 3258 | * - ``V4L2_DEEMPHASIS_DISABLED`` | |
| 4342 | - .. row 1 | 3259 | - No de-emphasis is applied. |
| 4343 | 3260 | * - ``V4L2_DEEMPHASIS_50_uS`` | |
| 4344 | - ``V4L2_DEEMPHASIS_DISABLED`` | 3261 | - A de-emphasis of 50 uS is used. |
| 4345 | 3262 | * - ``V4L2_DEEMPHASIS_75_uS`` | |
| 4346 | - No de-emphasis is applied. | 3263 | - A de-emphasis of 75 uS is used. |
| 4347 | |||
| 4348 | - .. row 2 | ||
| 4349 | |||
| 4350 | - ``V4L2_DEEMPHASIS_50_uS`` | ||
| 4351 | |||
| 4352 | - A de-emphasis of 50 uS is used. | ||
| 4353 | |||
| 4354 | - .. row 3 | ||
| 4355 | |||
| 4356 | - ``V4L2_DEEMPHASIS_75_uS`` | ||
| 4357 | |||
| 4358 | - A de-emphasis of 75 uS is used. | ||
| 4359 | 3264 | ||
| 4360 | 3265 | ||
| 4361 | 3266 | ||
| @@ -4382,43 +3287,27 @@ Detect Control IDs · 20 unmodified lines | |||
| 4382 | ``V4L2_CID_DETECT_MD_MODE (menu)`` | 3287 | ``V4L2_CID_DETECT_MD_MODE (menu)`` |
| 4383 | Sets the motion detection mode. | 3288 | Sets the motion detection mode. |
| 4384 | 3289 | ||
| 4385 | 3290 | .. tabularcolumns:: |p{7.5cm}|p{10.0cm}| | |
| 4386 | 3291 | ||
| 4387 | .. flat-table:: | 3292 | .. flat-table:: |
| 4388 | :header-rows: 0 | 3293 | :header-rows: 0 |
| 4389 | :stub-columns: 0 | 3294 | :stub-columns: 0 |
| 4390 | 3295 | ||
| 4391 | 3296 | * - ``V4L2_DETECT_MD_MODE_DISABLED`` | |
| 4392 | - .. row 1 | 3297 | - Disable motion detection. |
| 4393 | 3298 | * - ``V4L2_DETECT_MD_MODE_GLOBAL`` | |
| 4394 | - ``V4L2_DETECT_MD_MODE_DISABLED`` | 3299 | - Use a single motion detection threshold. |
| 4395 | 3300 | * - ``V4L2_DETECT_MD_MODE_THRESHOLD_GRID`` | |
| 4396 | - Disable motion detection. | 3301 | - The image is divided into a grid, each cell with its own motion |
| 4397 | 3302 | detection threshold. These thresholds are set through the | |
| 4398 | - .. row 2 | 3303 | ``V4L2_CID_DETECT_MD_THRESHOLD_GRID`` matrix control. |
| 4399 | 3304 | * - ``V4L2_DETECT_MD_MODE_REGION_GRID`` | |
| 4400 | - ``V4L2_DETECT_MD_MODE_GLOBAL`` | 3305 | - The image is divided into a grid, each cell with its own region |
| 4401 | 3306 | value that specifies which per-region motion detection thresholds | |
| 4402 | - Use a single motion detection threshold. | 3307 | should be used. Each region has its own thresholds. How these |
| 4403 | 3308 | per-region thresholds are set up is driver-specific. The region | |
| 4404 | - .. row 3 | 3309 | values for the grid are set through the |
| 4405 | 3310 | ``V4L2_CID_DETECT_MD_REGION_GRID`` matrix control. | |
| 4406 | - ``V4L2_DETECT_MD_MODE_THRESHOLD_GRID`` | ||
| 4407 | |||
| 4408 | - The image is divided into a grid, each cell with its own motion | ||
| 4409 | detection threshold. These thresholds are set through the | ||
| 4410 | ``V4L2_CID_DETECT_MD_THRESHOLD_GRID`` matrix control. | ||
| 4411 | |||
| 4412 | - .. row 4 | ||
| 4413 | |||
| 4414 | - ``V4L2_DETECT_MD_MODE_REGION_GRID`` | ||
| 4415 | |||
| 4416 | - The image is divided into a grid, each cell with its own region | ||
| 4417 | value that specifies which per-region motion detection thresholds | ||
| 4418 | should be used. Each region has its own thresholds. How these | ||
| 4419 | per-region thresholds are set up is driver-specific. The region | ||
| 4420 | values for the grid are set through the | ||
| 4421 | ``V4L2_CID_DETECT_MD_REGION_GRID`` matrix control. | ||
| 4422 | 3311 | ||
| 4423 | 3312 | ||
| 4424 | 3313 | ||
| @@ -47,140 +47,92 @@ clearer. · 46 unmodified lines | |||
| 47 | All video capture and output devices must report the current field | 47 | All video capture and output devices must report the current field |
| 48 | order. Some drivers may permit the selection of a different order, to | 48 | order. Some drivers may permit the selection of a different order, to |
| 49 | this end applications initialize the ``field`` field of struct | 49 | this end applications initialize the ``field`` field of struct |
| 50 | :ref:`v4l2_pix_format <v4l2-pix-format>` before calling the | 50 | :c:type:`v4l2_pix_format` before calling the |
| 51 | :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl. If this is not desired it | 51 | :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl. If this is not desired it |
| 52 | should have the value ``V4L2_FIELD_ANY`` (0). | 52 | should have the value ``V4L2_FIELD_ANY`` (0). |
| 53 | 53 | ||
| 54 | 54 | ||
| 55 | .. _v4l2-field: | ||
| 56 | |||
| 57 | enum v4l2_field | 55 | enum v4l2_field |
| 58 | =============== | 56 | =============== |
| 59 | 57 | ||
| 58 | .. c:type:: v4l2_field | ||
| 59 | |||
| 60 | .. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}| | ||
| 61 | |||
| 60 | .. flat-table:: | 62 | .. flat-table:: |
| 61 | :header-rows: 0 | 63 | :header-rows: 0 |
| 62 | :stub-columns: 0 | 64 | :stub-columns: 0 |
| 63 | :widths: 3 1 4 | 65 | :widths: 3 1 4 |
| 64 | 66 | ||
| 65 | 67 | * - ``V4L2_FIELD_ANY`` | |
| 66 | - .. row 1 | 68 | - 0 |
| 67 | 69 | - Applications request this field order when any one of the | |
| 68 | - ``V4L2_FIELD_ANY`` | 70 | ``V4L2_FIELD_NONE``, ``V4L2_FIELD_TOP``, ``V4L2_FIELD_BOTTOM``, or |
| 69 | 71 | ``V4L2_FIELD_INTERLACED`` formats is acceptable. Drivers choose | |
| 70 | - 0 | 72 | depending on hardware capabilities or e. g. the requested image |
| 71 | 73 | size, and return the actual field order. Drivers must never return | |
| 72 | - Applications request this field order when any one of the | 74 | ``V4L2_FIELD_ANY``. If multiple field orders are possible the |
| 73 | ``V4L2_FIELD_NONE``, ``V4L2_FIELD_TOP``, ``V4L2_FIELD_BOTTOM``, or | 75 | driver must choose one of the possible field orders during |
| 74 | ``V4L2_FIELD_INTERLACED`` formats is acceptable. Drivers choose | 76 | :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` or |
| 75 | depending on hardware capabilities or e. g. the requested image | 77 | :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>`. struct |
| 76 | size, and return the actual field order. Drivers must never return | 78 | :c:type:`v4l2_buffer` ``field`` can never be |
| 77 | ``V4L2_FIELD_ANY``. If multiple field orders are possible the | 79 | ``V4L2_FIELD_ANY``. |
| 78 | driver must choose one of the possible field orders during | 80 | * - ``V4L2_FIELD_NONE`` |
| 79 | :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` or | 81 | - 1 |
| 80 | :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>`. struct | 82 | - Images are in progressive format, not interlaced. The driver may |
| 81 | :ref:`v4l2_buffer <v4l2-buffer>` ``field`` can never be | 83 | also indicate this order when it cannot distinguish between |
| 82 | ``V4L2_FIELD_ANY``. | 84 | ``V4L2_FIELD_TOP`` and ``V4L2_FIELD_BOTTOM``. |
| 83 | 85 | * - ``V4L2_FIELD_TOP`` | |
| 84 | - .. row 2 | 86 | - 2 |
| 85 | 87 | - Images consist of the top (aka odd) field only. | |
| 86 | - ``V4L2_FIELD_NONE`` | 88 | * - ``V4L2_FIELD_BOTTOM`` |
| 87 | 89 | - 3 | |
| 88 | - 1 | 90 | - Images consist of the bottom (aka even) field only. Applications |
| 89 | 91 | may wish to prevent a device from capturing interlaced images | |
| 90 | - Images are in progressive format, not interlaced. The driver may | 92 | because they will have "comb" or "feathering" artefacts around |
| 91 | also indicate this order when it cannot distinguish between | 93 | moving objects. |
| 92 | ``V4L2_FIELD_TOP`` and ``V4L2_FIELD_BOTTOM``. | 94 | * - ``V4L2_FIELD_INTERLACED`` |
| 93 | 95 | - 4 | |
| 94 | - .. row 3 | 96 | - Images contain both fields, interleaved line by line. The temporal |
| 95 | 97 | order of the fields (whether the top or bottom field is first | |
| 96 | - ``V4L2_FIELD_TOP`` | 98 | transmitted) depends on the current video standard. M/NTSC |
| 97 | 99 | transmits the bottom field first, all other standards the top | |
| 98 | - 2 | 100 | field first. |
| 99 | 101 | * - ``V4L2_FIELD_SEQ_TB`` | |
| 100 | - Images consist of the top (aka odd) field only. | 102 | - 5 |
| 101 | 103 | - Images contain both fields, the top field lines are stored first | |
| 102 | - .. row 4 | 104 | in memory, immediately followed by the bottom field lines. Fields |
| 103 | 105 | are always stored in temporal order, the older one first in | |
| 104 | - ``V4L2_FIELD_BOTTOM`` | 106 | memory. Image sizes refer to the frame, not fields. |
| 105 | 107 | * - ``V4L2_FIELD_SEQ_BT`` | |
| 106 | - 3 | 108 | - 6 |
| 107 | 109 | - Images contain both fields, the bottom field lines are stored | |
| 108 | - Images consist of the bottom (aka even) field only. Applications | 110 | first in memory, immediately followed by the top field lines. |
| 109 | may wish to prevent a device from capturing interlaced images | 111 | Fields are always stored in temporal order, the older one first in |
| 110 | because they will have "comb" or "feathering" artefacts around | 112 | memory. Image sizes refer to the frame, not fields. |
| 111 | moving objects. | 113 | * - ``V4L2_FIELD_ALTERNATE`` |
| 112 | 114 | - 7 | |
| 113 | - .. row 5 | 115 | - The two fields of a frame are passed in separate buffers, in |
| 114 | 116 | temporal order, i. e. the older one first. To indicate the field | |
| 115 | - ``V4L2_FIELD_INTERLACED`` | 117 | parity (whether the current field is a top or bottom field) the |
| 116 | 118 | driver or application, depending on data direction, must set | |
| 117 | - 4 | 119 | struct :c:type:`v4l2_buffer` ``field`` to |
| 118 | 120 | ``V4L2_FIELD_TOP`` or ``V4L2_FIELD_BOTTOM``. Any two successive | |
| 119 | - Images contain both fields, interleaved line by line. The temporal | 121 | fields pair to build a frame. If fields are successive, without |
| 120 | order of the fields (whether the top or bottom field is first | 122 | any dropped fields between them (fields can drop individually), |
| 121 | transmitted) depends on the current video standard. M/NTSC | 123 | can be determined from the struct |
| 122 | transmits the bottom field first, all other standards the top | 124 | :c:type:`v4l2_buffer` ``sequence`` field. This |
| 123 | field first. | 125 | format cannot be selected when using the read/write I/O method |
| 124 | 126 | since there is no way to communicate if a field was a top or | |
| 125 | - .. row 6 | 127 | bottom field. |
| 126 | 128 | * - ``V4L2_FIELD_INTERLACED_TB`` | |
| 127 | - ``V4L2_FIELD_SEQ_TB`` | 129 | - 8 |
| 128 | 130 | - Images contain both fields, interleaved line by line, top field | |
| 129 | - 5 | 131 | first. The top field is transmitted first. |
| 130 | 132 | * - ``V4L2_FIELD_INTERLACED_BT`` | |
| 131 | - Images contain both fields, the top field lines are stored first | 133 | - 9 |
| 132 | in memory, immediately followed by the bottom field lines. Fields | 134 | - Images contain both fields, interleaved line by line, top field |
| 133 | are always stored in temporal order, the older one first in | 135 | first. The bottom field is transmitted first. |
| 134 | memory. Image sizes refer to the frame, not fields. | ||
| 135 | |||
| 136 | - .. row 7 | ||
| 137 | |||
| 138 | - ``V4L2_FIELD_SEQ_BT`` | ||
| 139 | |||
| 140 | - 6 | ||
| 141 | |||
| 142 | - Images contain both fields, the bottom field lines are stored | ||
| 143 | first in memory, immediately followed by the top field lines. | ||
| 144 | Fields are always stored in temporal order, the older one first in | ||
| 145 | memory. Image sizes refer to the frame, not fields. | ||
| 146 | |||
| 147 | - .. row 8 | ||
| 148 | |||
| 149 | - ``V4L2_FIELD_ALTERNATE`` | ||
| 150 | |||
| 151 | - 7 | ||
| 152 | |||
| 153 | - The two fields of a frame are passed in separate buffers, in | ||
| 154 | temporal order, i. e. the older one first. To indicate the field | ||
| 155 | parity (whether the current field is a top or bottom field) the | ||
| 156 | driver or application, depending on data direction, must set | ||
| 157 | struct :ref:`v4l2_buffer <v4l2-buffer>` ``field`` to | ||
| 158 | ``V4L2_FIELD_TOP`` or ``V4L2_FIELD_BOTTOM``. Any two successive | ||
| 159 | fields pair to build a frame. If fields are successive, without | ||
| 160 | any dropped fields between them (fields can drop individually), | ||
| 161 | can be determined from the struct | ||
| 162 | :ref:`v4l2_buffer <v4l2-buffer>` ``sequence`` field. This | ||
| 163 | format cannot be selected when using the read/write I/O method | ||
| 164 | since there is no way to communicate if a field was a top or | ||
| 165 | bottom field. | ||
| 166 | |||
| 167 | - .. row 9 | ||
| 168 | |||
| 169 | - ``V4L2_FIELD_INTERLACED_TB`` | ||
| 170 | |||
| 171 | - 8 | ||
| 172 | |||
| 173 | - Images contain both fields, interleaved line by line, top field | ||
| 174 | first. The top field is transmitted first. | ||
| 175 | |||
| 176 | - .. row 10 | ||
| 177 | |||
| 178 | - ``V4L2_FIELD_INTERLACED_BT`` | ||
| 179 | |||
| 180 | - 9 | ||
| 181 | |||
| 182 | - Images contain both fields, interleaved line by line, top field | ||
| 183 | first. The bottom field is transmitted first. | ||
| 184 | 136 | ||
| 185 | 137 | ||
| 186 | 138 | ||
| @@ -22,7 +22,7 @@ to satisfy the request. Of course applications can also just query the · 21 unmodified lines | |||
| 22 | current selection. | 22 | current selection. |
| 23 | 23 | ||
| 24 | A single mechanism exists to negotiate all data formats using the | 24 | A single mechanism exists to negotiate all data formats using the |
| 25 | aggregate struct :ref:`v4l2_format <v4l2-format>` and the | 25 | aggregate struct :c:type:`v4l2_format` and the |
| 26 | :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` and | 26 | :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` and |
| 27 | :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctls. Additionally the | 27 | :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctls. Additionally the |
| 28 | :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` ioctl can be used to examine | 28 | :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` ioctl can be used to examine |
| @@ -20,8 +20,8 @@ Synopsis · 19 unmodified lines | |||
| 20 | #include <unistd.h> | 20 | #include <unistd.h> |
| 21 | 21 | ||
| 22 | 22 | ||
| 23 | .. cpp:function:: int close( int fd ) | 23 | .. c:function:: int close( int fd ) |
| 24 | 24 | :name: v4l2-close | |
| 25 | 25 | ||
| 26 | Arguments | 26 | Arguments |
| 27 | ========= | 27 | ========= |
| @@ -20,8 +20,8 @@ Synopsis · 19 unmodified lines | |||
| 20 | #include <sys/ioctl.h> | 20 | #include <sys/ioctl.h> |
| 21 | 21 | ||
| 22 | 22 | ||
| 23 | .. cpp:function:: int ioctl( int fd, int request, void *argp ) | 23 | .. c:function:: int ioctl( int fd, int request, void *argp ) |
| 24 | 24 | :name: v4l2-ioctl | |
| 25 | 25 | ||
| 26 | Arguments | 26 | Arguments |
| 27 | ========= | 27 | ========= |
| @@ -21,8 +21,8 @@ Synopsis · 20 unmodified lines | |||
| 21 | #include <sys/mman.h> | 21 | #include <sys/mman.h> |
| 22 | 22 | ||
| 23 | 23 | ||
| 24 | .. cpp:function:: void *mmap( void *start, size_t length, int prot, int flags, int fd, off_t offset ) | 24 | .. c:function:: void *mmap( void *start, size_t length, int prot, int flags, int fd, off_t offset ) |
| 25 | 25 | :name: v4l2-mmap | |
| 26 | 26 | ||
| 27 | Arguments | 27 | Arguments |
| 28 | ========= | 28 | ========= |
| @@ -37,9 +37,9 @@ Arguments · 8 unmodified lines | |||
| 37 | ``length`` | 37 | ``length`` |
| 38 | Length of the memory area to map. This must be the same value as | 38 | Length of the memory area to map. This must be the same value as |
| 39 | returned by the driver in the struct | 39 | returned by the driver in the struct |
| 40 | :ref:`v4l2_buffer <v4l2-buffer>` ``length`` field for the | 40 | :c:type:`v4l2_buffer` ``length`` field for the |
| 41 | single-planar API, and the same value as returned by the driver in | 41 | single-planar API, and the same value as returned by the driver in |
| 42 | the struct :ref:`v4l2_plane <v4l2-plane>` ``length`` field for | 42 | the struct :c:type:`v4l2_plane` ``length`` field for |
| 43 | the multi-planar API. | 43 | the multi-planar API. |
| 44 | 44 | ||
| 45 | ``prot`` | 45 | ``prot`` |
| @@ -78,7 +78,9 @@ Arguments · 32 unmodified lines | |||
| 78 | ``MAP_SHARED`` allows applications to share the mapped memory with | 78 | ``MAP_SHARED`` allows applications to share the mapped memory with |
| 79 | other (e. g. child-) processes. | 79 | other (e. g. child-) processes. |
| 80 | 80 | ||
| 81 | .. note:: The Linux ``videobuf`` module which is used by some | 81 | .. note:: |
| 82 | |||
| 83 | The Linux ``videobuf`` module which is used by some | ||
| 82 | drivers supports only ``MAP_SHARED``. ``MAP_PRIVATE`` requests | 84 | drivers supports only ``MAP_SHARED``. ``MAP_PRIVATE`` requests |
| 83 | copy-on-write semantics. V4L2 applications should not set the | 85 | copy-on-write semantics. V4L2 applications should not set the |
| 84 | ``MAP_PRIVATE``, ``MAP_DENYWRITE``, ``MAP_EXECUTABLE`` or ``MAP_ANON`` | 86 | ``MAP_PRIVATE``, ``MAP_DENYWRITE``, ``MAP_EXECUTABLE`` or ``MAP_ANON`` |
| @@ -90,9 +92,9 @@ Arguments · 5 unmodified lines | |||
| 90 | ``offset`` | 92 | ``offset`` |
| 91 | Offset of the buffer in device memory. This must be the same value | 93 | Offset of the buffer in device memory. This must be the same value |
| 92 | as returned by the driver in the struct | 94 | as returned by the driver in the struct |
| 93 | :ref:`v4l2_buffer <v4l2-buffer>` ``m`` union ``offset`` field for | 95 | :c:type:`v4l2_buffer` ``m`` union ``offset`` field for |
| 94 | the single-planar API, and the same value as returned by the driver | 96 | the single-planar API, and the same value as returned by the driver |
| 95 | in the struct :ref:`v4l2_plane <v4l2-plane>` ``m`` union | 97 | in the struct :c:type:`v4l2_plane` ``m`` union |
| 96 | ``mem_offset`` field for the multi-planar API. | 98 | ``mem_offset`` field for the multi-planar API. |
| 97 | 99 | ||
| 98 | 100 | ||
| @@ -21,8 +21,8 @@ Synopsis · 20 unmodified lines | |||
| 21 | #include <sys/mman.h> | 21 | #include <sys/mman.h> |
| 22 | 22 | ||
| 23 | 23 | ||
| 24 | .. cpp:function:: int munmap( void *start, size_t length ) | 24 | .. c:function:: int munmap( void *start, size_t length ) |
| 25 | 25 | :name: v4l2-munmap | |
| 26 | 26 | ||
| 27 | Arguments | 27 | Arguments |
| 28 | ========= | 28 | ========= |
| @@ -34,9 +34,9 @@ Arguments · 5 unmodified lines | |||
| 34 | ``length`` | 34 | ``length`` |
| 35 | Length of the mapped buffer. This must be the same value as given to | 35 | Length of the mapped buffer. This must be the same value as given to |
| 36 | :ref:`mmap() <func-mmap>` and returned by the driver in the struct | 36 | :ref:`mmap() <func-mmap>` and returned by the driver in the struct |
| 37 | :ref:`v4l2_buffer <v4l2-buffer>` ``length`` field for the | 37 | :c:type:`v4l2_buffer` ``length`` field for the |
| 38 | single-planar API and in the struct | 38 | single-planar API and in the struct |
| 39 | :ref:`v4l2_plane <v4l2-plane>` ``length`` field for the | 39 | :c:type:`v4l2_plane` ``length`` field for the |
| 40 | multi-planar API. | 40 | multi-planar API. |
| 41 | 41 | ||
| 42 | 42 | ||
| @@ -20,8 +20,8 @@ Synopsis · 19 unmodified lines | |||
| 20 | #include <fcntl.h> | 20 | #include <fcntl.h> |
| 21 | 21 | ||
| 22 | 22 | ||
| 23 | .. cpp:function:: int open( const char *device_name, int flags ) | 23 | .. c:function:: int open( const char *device_name, int flags ) |
| 24 | 24 | :name: v4l2-open | |
| 25 | 25 | ||
| 26 | Arguments | 26 | Arguments |
| 27 | ========= | 27 | ========= |
| @@ -20,8 +20,8 @@ Synopsis · 19 unmodified lines | |||
| 20 | #include <sys/poll.h> | 20 | #include <sys/poll.h> |
| 21 | 21 | ||
| 22 | 22 | ||
| 23 | .. cpp:function:: int poll( struct pollfd *ufds, unsigned int nfds, int timeout ) | 23 | .. c:function:: int poll( struct pollfd *ufds, unsigned int nfds, int timeout ) |
| 24 | 24 | :name: v4l2-poll | |
| 25 | 25 | ||
| 26 | Arguments | 26 | Arguments |
| 27 | ========= | 27 | ========= |
| @@ -20,8 +20,8 @@ Synopsis · 19 unmodified lines | |||
| 20 | #include <unistd.h> | 20 | #include <unistd.h> |
| 21 | 21 | ||
| 22 | 22 | ||
| 23 | .. cpp:function:: ssize_t read( int fd, void *buf, size_t count ) | 23 | .. c:function:: ssize_t read( int fd, void *buf, size_t count ) |
| 24 | 24 | :name: v4l2-read | |
| 25 | 25 | ||
| 26 | Arguments | 26 | Arguments |
| 27 | ========= | 27 | ========= |
| @@ -30,8 +30,10 @@ Arguments · 2 unmodified lines | |||
| 30 | File descriptor returned by :ref:`open() <func-open>`. | 30 | File descriptor returned by :ref:`open() <func-open>`. |
| 31 | 31 | ||
| 32 | ``buf`` | 32 | ``buf`` |
| 33 | ``count`` | 33 | Buffer to be filled |
| 34 | 34 | ||
| 35 | ``count`` | ||
| 36 | Max number of bytes to read | ||
| 35 | 37 | ||
| 36 | Description | 38 | Description |
| 37 | =========== | 39 | =========== |
| @@ -22,12 +22,26 @@ Synopsis · 21 unmodified lines | |||
| 22 | #include <unistd.h> | 22 | #include <unistd.h> |
| 23 | 23 | ||
| 24 | 24 | ||
| 25 | .. cpp:function:: int select( int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout ) | 25 | .. c:function:: int select( int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout ) |
| 26 | 26 | :name: v4l2-select | |
| 27 | 27 | ||
| 28 | Arguments | 28 | Arguments |
| 29 | ========= | 29 | ========= |
| 30 | 30 | ||
| 31 | ``nfds`` | ||
| 32 | The highest-numbered file descriptor in any of the three sets, plus 1. | ||
| 33 | |||
| 34 | ``readfds`` | ||
| 35 | File descriptions to be watched if a read() call won't block. | ||
| 36 | |||
| 37 | ``writefds`` | ||
| 38 | File descriptions to be watched if a write() won't block. | ||
| 39 | |||
| 40 | ``exceptfds`` | ||
| 41 | File descriptions to be watched for V4L2 events. | ||
| 42 | |||
| 43 | ``timeout`` | ||
| 44 | Maximum time to wait. | ||
| 31 | 45 | ||
| 32 | 46 | ||
| 33 | Description | 47 | Description |
| @@ -20,8 +20,8 @@ Synopsis · 19 unmodified lines | |||
| 20 | #include <unistd.h> | 20 | #include <unistd.h> |
| 21 | 21 | ||
| 22 | 22 | ||
| 23 | .. cpp:function:: ssize_t write( int fd, void *buf, size_t count ) | 23 | .. c:function:: ssize_t write( int fd, void *buf, size_t count ) |
| 24 | 24 | :name: v4l2-write | |
| 25 | 25 | ||
| 26 | Arguments | 26 | Arguments |
| 27 | ========= | 27 | ========= |
| @@ -30,8 +30,10 @@ Arguments · 2 unmodified lines | |||
| 30 | File descriptor returned by :ref:`open() <func-open>`. | 30 | File descriptor returned by :ref:`open() <func-open>`. |
| 31 | 31 | ||
| 32 | ``buf`` | 32 | ``buf`` |
| 33 | ``count`` | 33 | Buffer with data to be written |
| 34 | 34 | ||
| 35 | ``count`` | ||
| 36 | Number of bytes at the buffer | ||
| 35 | 37 | ||
| 36 | Description | 38 | Description |
| 37 | =========== | 39 | =========== |
| @@ -30,14 +30,14 @@ aliases ``O_NONCAP`` and ``O_NOIO`` were defined. Applications can set · 29 unmodified lines | |||
| 30 | this flag if they intend to access controls only, as opposed to capture | 30 | this flag if they intend to access controls only, as opposed to capture |
| 31 | applications which need exclusive access. The ``VIDEO_STD_XXX`` | 31 | applications which need exclusive access. The ``VIDEO_STD_XXX`` |
| 32 | identifiers are now ordinals instead of flags, and the | 32 | identifiers are now ordinals instead of flags, and the |
| 33 | :c:func:`video_std_construct()` helper function takes id and | 33 | ``video_std_construct()`` helper function takes id and |
| 34 | transmission arguments. | 34 | transmission arguments. |
| 35 | 35 | ||
| 36 | 1998-09-28: Revamped video standard. Made video controls individually | 36 | 1998-09-28: Revamped video standard. Made video controls individually |
| 37 | enumerable. | 37 | enumerable. |
| 38 | 38 | ||
| 39 | 1998-10-02: The ``id`` field was removed from struct | 39 | 1998-10-02: The ``id`` field was removed from struct |
| 40 | :c:type:`struct video_standard` and the color subcarrier fields were | 40 | struct ``video_standard`` and the color subcarrier fields were |
| 41 | renamed. The :ref:`VIDIOC_QUERYSTD` ioctl was | 41 | renamed. The :ref:`VIDIOC_QUERYSTD` ioctl was |
| 42 | renamed to :ref:`VIDIOC_ENUMSTD`, | 42 | renamed to :ref:`VIDIOC_ENUMSTD`, |
| 43 | :ref:`VIDIOC_G_INPUT <VIDIOC_G_INPUT>` to | 43 | :ref:`VIDIOC_G_INPUT <VIDIOC_G_INPUT>` to |
| @@ -45,7 +45,7 @@ renamed to :ref:`VIDIOC_ENUMSTD`, · 1 unmodified line | |||
| 45 | Codec API was released. | 45 | Codec API was released. |
| 46 | 46 | ||
| 47 | 1998-11-08: Many minor changes. Most symbols have been renamed. Some | 47 | 1998-11-08: Many minor changes. Most symbols have been renamed. Some |
| 48 | material changes to struct :ref:`v4l2_capability <v4l2-capability>`. | 48 | material changes to struct :c:type:`v4l2_capability`. |
| 49 | 49 | ||
| 50 | 1998-11-12: The read/write directon of some ioctls was misdefined. | 50 | 1998-11-12: The read/write directon of some ioctls was misdefined. |
| 51 | 51 | ||
| @@ -117,7 +117,7 @@ to simplify the API, while making it more extensible and following · 65 unmodified lines | |||
| 117 | common Linux driver API conventions. | 117 | common Linux driver API conventions. |
| 118 | 118 | ||
| 119 | 1. Some typos in ``V4L2_FMT_FLAG`` symbols were fixed. struct | 119 | 1. Some typos in ``V4L2_FMT_FLAG`` symbols were fixed. struct |
| 120 | :ref:`v4l2_clip <v4l2-clip>` was changed for compatibility with | 120 | :c:type:`v4l2_clip` was changed for compatibility with |
| 121 | v4l. (1999-08-30) | 121 | v4l. (1999-08-30) |
| 122 | 122 | ||
| 123 | 2. ``V4L2_TUNER_SUB_LANG1`` was added. (1999-09-05) | 123 | 2. ``V4L2_TUNER_SUB_LANG1`` was added. (1999-09-05) |
| @@ -151,15 +151,15 @@ common Linux driver API conventions. · 27 unmodified lines | |||
| 151 | This change obsoletes the following ioctls: ``VIDIOC_S_INFMT``, | 151 | This change obsoletes the following ioctls: ``VIDIOC_S_INFMT``, |
| 152 | ``VIDIOC_G_INFMT``, ``VIDIOC_S_OUTFMT``, ``VIDIOC_G_OUTFMT``, | 152 | ``VIDIOC_G_INFMT``, ``VIDIOC_S_OUTFMT``, ``VIDIOC_G_OUTFMT``, |
| 153 | ``VIDIOC_S_VBIFMT`` and ``VIDIOC_G_VBIFMT``. The image format | 153 | ``VIDIOC_S_VBIFMT`` and ``VIDIOC_G_VBIFMT``. The image format |
| 154 | structure :c:type:`struct v4l2_format` was renamed to struct | 154 | structure struct :c:type:`v4l2_format` was renamed to struct |
| 155 | :ref:`v4l2_pix_format <v4l2-pix-format>`, while struct | 155 | :c:type:`v4l2_pix_format`, while struct |
| 156 | :ref:`v4l2_format <v4l2-format>` is now the envelopping structure | 156 | :c:type:`v4l2_format` is now the envelopping structure |
| 157 | for all format negotiations. | 157 | for all format negotiations. |
| 158 | 158 | ||
| 159 | 5. Similar to the changes above, the ``VIDIOC_G_PARM`` and | 159 | 5. Similar to the changes above, the ``VIDIOC_G_PARM`` and |
| 160 | ``VIDIOC_S_PARM`` ioctls were merged with ``VIDIOC_G_OUTPARM`` and | 160 | ``VIDIOC_S_PARM`` ioctls were merged with ``VIDIOC_G_OUTPARM`` and |
| 161 | ``VIDIOC_S_OUTPARM``. A ``type`` field in the new struct | 161 | ``VIDIOC_S_OUTPARM``. A ``type`` field in the new struct |
| 162 | :ref:`v4l2_streamparm <v4l2-streamparm>` selects the respective | 162 | :c:type:`v4l2_streamparm` selects the respective |
| 163 | union member. | 163 | union member. |
| 164 | 164 | ||
| 165 | This change obsoletes the ``VIDIOC_G_OUTPARM`` and | 165 | This change obsoletes the ``VIDIOC_G_OUTPARM`` and |
| @@ -178,7 +178,7 @@ common Linux driver API conventions. · 12 unmodified lines | |||
| 178 | categories might have a greater separation, or may even appear in | 178 | categories might have a greater separation, or may even appear in |
| 179 | separate windows. | 179 | separate windows. |
| 180 | 180 | ||
| 181 | 7. The struct :ref:`v4l2_buffer <v4l2-buffer>` ``timestamp`` was | 181 | 7. The struct :c:type:`v4l2_buffer` ``timestamp`` was |
| 182 | changed to a 64 bit integer, containing the sampling or output time | 182 | changed to a 64 bit integer, containing the sampling or output time |
| 183 | of the frame in nanoseconds. Additionally timestamps will be in | 183 | of the frame in nanoseconds. Additionally timestamps will be in |
| 184 | absolute system time, not starting from zero at the beginning of a | 184 | absolute system time, not starting from zero at the beginning of a |
| @@ -202,7 +202,7 @@ common Linux driver API conventions. · 17 unmodified lines | |||
| 202 | return a 64-bit integer. | 202 | return a 64-bit integer. |
| 203 | 203 | ||
| 204 | 8. A ``sequence`` field was added to struct | 204 | 8. A ``sequence`` field was added to struct |
| 205 | :ref:`v4l2_buffer <v4l2-buffer>`. The ``sequence`` field counts | 205 | :c:type:`v4l2_buffer`. The ``sequence`` field counts |
| 206 | captured frames, it is ignored by output devices. When a capture | 206 | captured frames, it is ignored by output devices. When a capture |
| 207 | driver drops a frame, the sequence number of that frame is skipped. | 207 | driver drops a frame, the sequence number of that frame is skipped. |
| 208 | 208 | ||
| @@ -210,7 +210,7 @@ common Linux driver API conventions. · 1 unmodified line | |||
| 210 | V4L2 Version 0.20 incremental changes | 210 | V4L2 Version 0.20 incremental changes |
| 211 | ===================================== | 211 | ===================================== |
| 212 | 212 | ||
| 213 | 1999-12-23: In struct :ref:`v4l2_vbi_format <v4l2-vbi-format>` the | 213 | 1999-12-23: In struct :c:type:`v4l2_vbi_format` the |
| 214 | ``reserved1`` field became ``offset``. Previously drivers were required | 214 | ``reserved1`` field became ``offset``. Previously drivers were required |
| 215 | to clear the ``reserved1`` field. | 215 | to clear the ``reserved1`` field. |
| 216 | 216 | ||
| @@ -254,9 +254,9 @@ multiple tuners into account.) · 37 unmodified lines | |||
| 254 | 2000-09-18: ``V4L2_BUF_TYPE_VBI`` was added. This may *break | 254 | 2000-09-18: ``V4L2_BUF_TYPE_VBI`` was added. This may *break |
| 255 | compatibility* as the :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` and | 255 | compatibility* as the :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` and |
| 256 | :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctls may fail now if the struct | 256 | :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctls may fail now if the struct |
| 257 | :c:type:`struct v4l2_fmt` ``type`` field does not contain | 257 | struct ``v4l2_fmt`` ``type`` field does not contain |
| 258 | ``V4L2_BUF_TYPE_VBI``. In the documentation of the struct | 258 | ``V4L2_BUF_TYPE_VBI``. In the documentation of the struct |
| 259 | :ref:`v4l2_vbi_format <v4l2-vbi-format>` ``offset`` field the | 259 | :c:type:`v4l2_vbi_format` ``offset`` field the |
| 260 | ambiguous phrase "rising edge" was changed to "leading edge". | 260 | ambiguous phrase "rising edge" was changed to "leading edge". |
| 261 | 261 | ||
| 262 | 262 | ||
| @@ -321,7 +321,7 @@ This unnamed version was finally merged into Linux 2.5.46. · 58 unmodified lines | |||
| 321 | until the application attempts to initiate a data exchange, see | 321 | until the application attempts to initiate a data exchange, see |
| 322 | :ref:`open`. | 322 | :ref:`open`. |
| 323 | 323 | ||
| 324 | 3. The struct :ref:`v4l2_capability <v4l2-capability>` changed | 324 | 3. The struct :c:type:`v4l2_capability` changed |
| 325 | dramatically. Note that also the size of the structure changed, | 325 | dramatically. Note that also the size of the structure changed, |
| 326 | which is encoded in the ioctl request code, thus older V4L2 devices | 326 | which is encoded in the ioctl request code, thus older V4L2 devices |
| 327 | will respond with an ``EINVAL`` error code to the new | 327 | will respond with an ``EINVAL`` error code to the new |
| @@ -354,7 +354,7 @@ This unnamed version was finally merged into Linux 2.5.46. · 26 unmodified lines | |||
| 354 | ``V4L2_FLAG_MONOCHROME`` flag was removed, this information is | 354 | ``V4L2_FLAG_MONOCHROME`` flag was removed, this information is |
| 355 | available as described in :ref:`format`. | 355 | available as described in :ref:`format`. |
| 356 | 356 | ||
| 357 | 4. In struct :ref:`v4l2_input <v4l2-input>` the ``assoc_audio`` | 357 | 4. In struct :c:type:`v4l2_input` the ``assoc_audio`` |
| 358 | field and the ``capability`` field and its only flag | 358 | field and the ``capability`` field and its only flag |
| 359 | ``V4L2_INPUT_CAP_AUDIO`` was replaced by the new ``audioset`` field. | 359 | ``V4L2_INPUT_CAP_AUDIO`` was replaced by the new ``audioset`` field. |
| 360 | Instead of linking one video input to one audio input this field | 360 | Instead of linking one video input to one audio input this field |
| @@ -363,11 +363,11 @@ This unnamed version was finally merged into Linux 2.5.46. · 2 unmodified lines | |||
| 363 | New fields are ``tuner`` (reversing the former link from tuners to | 363 | New fields are ``tuner`` (reversing the former link from tuners to |
| 364 | video inputs), ``std`` and ``status``. | 364 | video inputs), ``std`` and ``status``. |
| 365 | 365 | ||
| 366 | Accordingly struct :ref:`v4l2_output <v4l2-output>` lost its | 366 | Accordingly struct :c:type:`v4l2_output` lost its |
| 367 | ``capability`` and ``assoc_audio`` fields. ``audioset``, | 367 | ``capability`` and ``assoc_audio`` fields. ``audioset``, |
| 368 | ``modulator`` and ``std`` where added instead. | 368 | ``modulator`` and ``std`` where added instead. |
| 369 | 369 | ||
| 370 | 5. The struct :ref:`v4l2_audio <v4l2-audio>` field ``audio`` was | 370 | 5. The struct :c:type:`v4l2_audio` field ``audio`` was |
| 371 | renamed to ``index``, for consistency with other structures. A new | 371 | renamed to ``index``, for consistency with other structures. A new |
| 372 | capability flag ``V4L2_AUDCAP_STEREO`` was added to indicated if the | 372 | capability flag ``V4L2_AUDCAP_STEREO`` was added to indicated if the |
| 373 | audio input in question supports stereo sound. | 373 | audio input in question supports stereo sound. |
| @@ -376,20 +376,20 @@ This unnamed version was finally merged into Linux 2.5.46. · 2 unmodified lines | |||
| 376 | (However the same applies to AVL which is still there.) | 376 | (However the same applies to AVL which is still there.) |
| 377 | 377 | ||
| 378 | Again for consistency the struct | 378 | Again for consistency the struct |
| 379 | :ref:`v4l2_audioout <v4l2-audioout>` field ``audio`` was renamed | 379 | :c:type:`v4l2_audioout` field ``audio`` was renamed |
| 380 | to ``index``. | 380 | to ``index``. |
| 381 | 381 | ||
| 382 | 6. The struct :ref:`v4l2_tuner <v4l2-tuner>` ``input`` field was | 382 | 6. The struct :c:type:`v4l2_tuner` ``input`` field was |
| 383 | replaced by an ``index`` field, permitting devices with multiple | 383 | replaced by an ``index`` field, permitting devices with multiple |
| 384 | tuners. The link between video inputs and tuners is now reversed, | 384 | tuners. The link between video inputs and tuners is now reversed, |
| 385 | inputs point to their tuner. The ``std`` substructure became a | 385 | inputs point to their tuner. The ``std`` substructure became a |
| 386 | simple set (more about this below) and moved into struct | 386 | simple set (more about this below) and moved into struct |
| 387 | :ref:`v4l2_input <v4l2-input>`. A ``type`` field was added. | 387 | :c:type:`v4l2_input`. A ``type`` field was added. |
| 388 | 388 | ||
| 389 | Accordingly in struct :ref:`v4l2_modulator <v4l2-modulator>` the | 389 | Accordingly in struct :c:type:`v4l2_modulator` the |
| 390 | ``output`` was replaced by an ``index`` field. | 390 | ``output`` was replaced by an ``index`` field. |
| 391 | 391 | ||
| 392 | In struct :ref:`v4l2_frequency <v4l2-frequency>` the ``port`` | 392 | In struct :c:type:`v4l2_frequency` the ``port`` |
| 393 | field was replaced by a ``tuner`` field containing the respective | 393 | field was replaced by a ``tuner`` field containing the respective |
| 394 | tuner or modulator index number. A tuner ``type`` field was added | 394 | tuner or modulator index number. A tuner ``type`` field was added |
| 395 | and the ``reserved`` field became larger for future extensions | 395 | and the ``reserved`` field became larger for future extensions |
| @@ -405,7 +405,7 @@ This unnamed version was finally merged into Linux 2.5.46. · 9 unmodified lines | |||
| 405 | :ref:`VIDIOC_S_STD <VIDIOC_G_STD>` now take a pointer to this | 405 | :ref:`VIDIOC_S_STD <VIDIOC_G_STD>` now take a pointer to this |
| 406 | type as argument. :ref:`VIDIOC_QUERYSTD` was | 406 | type as argument. :ref:`VIDIOC_QUERYSTD` was |
| 407 | added to autodetect the received standard, if the hardware has this | 407 | added to autodetect the received standard, if the hardware has this |
| 408 | capability. In struct :ref:`v4l2_standard <v4l2-standard>` an | 408 | capability. In struct :c:type:`v4l2_standard` an |
| 409 | ``index`` field was added for | 409 | ``index`` field was added for |
| 410 | :ref:`VIDIOC_ENUMSTD`. A | 410 | :ref:`VIDIOC_ENUMSTD`. A |
| 411 | :ref:`v4l2_std_id <v4l2-std-id>` field named ``id`` was added as | 411 | :ref:`v4l2_std_id <v4l2-std-id>` field named ``id`` was added as |
| @@ -415,12 +415,12 @@ This unnamed version was finally merged into Linux 2.5.46. · 3 unmodified lines | |||
| 415 | originally needed to distguish between variations of standards, were | 415 | originally needed to distguish between variations of standards, were |
| 416 | removed. | 416 | removed. |
| 417 | 417 | ||
| 418 | Struct :c:type:`struct v4l2_enumstd` ceased to be. | 418 | Struct ``v4l2_enumstd`` ceased to be. |
| 419 | :ref:`VIDIOC_ENUMSTD` now takes a pointer to a | 419 | :ref:`VIDIOC_ENUMSTD` now takes a pointer to a |
| 420 | struct :ref:`v4l2_standard <v4l2-standard>` directly. The | 420 | struct :c:type:`v4l2_standard` directly. The |
| 421 | information which standards are supported by a particular video | 421 | information which standards are supported by a particular video |
| 422 | input or output moved into struct :ref:`v4l2_input <v4l2-input>` | 422 | input or output moved into struct :c:type:`v4l2_input` |
| 423 | and struct :ref:`v4l2_output <v4l2-output>` fields named ``std``, | 423 | and struct :c:type:`v4l2_output` fields named ``std``, |
| 424 | respectively. | 424 | respectively. |
| 425 | 425 | ||
| 426 | 8. The struct :ref:`v4l2_queryctrl <v4l2-queryctrl>` fields | 426 | 8. The struct :ref:`v4l2_queryctrl <v4l2-queryctrl>` fields |
| @@ -432,13 +432,13 @@ This unnamed version was finally merged into Linux 2.5.46. · 5 unmodified lines | |||
| 432 | :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>`, but without the overhead of | 432 | :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>`, but without the overhead of |
| 433 | programming the hardware and regardless of I/O in progress. | 433 | programming the hardware and regardless of I/O in progress. |
| 434 | 434 | ||
| 435 | In struct :ref:`v4l2_format <v4l2-format>` the ``fmt`` union was | 435 | In struct :c:type:`v4l2_format` the ``fmt`` union was |
| 436 | extended to contain struct :ref:`v4l2_window <v4l2-window>`. All | 436 | extended to contain struct :c:type:`v4l2_window`. All |
| 437 | image format negotiations are now possible with ``VIDIOC_G_FMT``, | 437 | image format negotiations are now possible with ``VIDIOC_G_FMT``, |
| 438 | ``VIDIOC_S_FMT`` and ``VIDIOC_TRY_FMT``; ioctl. The ``VIDIOC_G_WIN`` | 438 | ``VIDIOC_S_FMT`` and ``VIDIOC_TRY_FMT``; ioctl. The ``VIDIOC_G_WIN`` |
| 439 | and ``VIDIOC_S_WIN`` ioctls to prepare for a video overlay were | 439 | and ``VIDIOC_S_WIN`` ioctls to prepare for a video overlay were |
| 440 | removed. The ``type`` field changed to type enum | 440 | removed. The ``type`` field changed to type enum |
| 441 | :ref:`v4l2_buf_type <v4l2-buf-type>` and the buffer type names | 441 | :c:type:`v4l2_buf_type` and the buffer type names |
| 442 | changed as follows. | 442 | changed as follows. |
| 443 | 443 | ||
| 444 | 444 | ||
| @@ -447,101 +447,45 @@ This unnamed version was finally merged into Linux 2.5.46. · 2 unmodified lines | |||
| 447 | :header-rows: 1 | 447 | :header-rows: 1 |
| 448 | :stub-columns: 0 | 448 | :stub-columns: 0 |
| 449 | 449 | ||
| 450 | 450 | * - Old defines | |
| 451 | - .. row 1 | 451 | - enum :c:type:`v4l2_buf_type` |
| 452 | 452 | * - ``V4L2_BUF_TYPE_CAPTURE`` | |
| 453 | - Old defines | 453 | - ``V4L2_BUF_TYPE_VIDEO_CAPTURE`` |
| 454 | 454 | * - ``V4L2_BUF_TYPE_CODECIN`` | |
| 455 | - enum :ref:`v4l2_buf_type <v4l2-buf-type>` | 455 | - Omitted for now |
| 456 | 456 | * - ``V4L2_BUF_TYPE_CODECOUT`` | |
| 457 | - .. row 2 | 457 | - Omitted for now |
| 458 | 458 | * - ``V4L2_BUF_TYPE_EFFECTSIN`` | |
| 459 | - ``V4L2_BUF_TYPE_CAPTURE`` | 459 | - Omitted for now |
| 460 | 460 | * - ``V4L2_BUF_TYPE_EFFECTSIN2`` | |
| 461 | - ``V4L2_BUF_TYPE_VIDEO_CAPTURE`` | 461 | - Omitted for now |
| 462 | 462 | * - ``V4L2_BUF_TYPE_EFFECTSOUT`` | |
| 463 | - .. row 3 | 463 | - Omitted for now |
| 464 | 464 | * - ``V4L2_BUF_TYPE_VIDEOOUT`` | |
| 465 | - ``V4L2_BUF_TYPE_CODECIN`` | 465 | - ``V4L2_BUF_TYPE_VIDEO_OUTPUT`` |
| 466 | 466 | * - ``-`` | |
| 467 | - Omitted for now | 467 | - ``V4L2_BUF_TYPE_VIDEO_OVERLAY`` |
| 468 | 468 | * - ``-`` | |
| 469 | - .. row 4 | 469 | - ``V4L2_BUF_TYPE_VBI_CAPTURE`` |
| 470 | 470 | * - ``-`` | |
| 471 | - ``V4L2_BUF_TYPE_CODECOUT`` | 471 | - ``V4L2_BUF_TYPE_VBI_OUTPUT`` |
| 472 | 472 | * - ``-`` | |
| 473 | - Omitted for now | 473 | - ``V4L2_BUF_TYPE_SLICED_VBI_CAPTURE`` |
| 474 | 474 | * - ``-`` | |
| 475 | - .. row 5 | 475 | - ``V4L2_BUF_TYPE_SLICED_VBI_OUTPUT`` |
| 476 | 476 | * - ``V4L2_BUF_TYPE_PRIVATE_BASE`` | |
| 477 | - ``V4L2_BUF_TYPE_EFFECTSIN`` | 477 | - ``V4L2_BUF_TYPE_PRIVATE`` (but this is deprecated) |
| 478 | 478 | ||
| 479 | - Omitted for now | 479 | |
| 480 | 480 | 10. In struct :c:type:`v4l2_fmtdesc` a enum | |
| 481 | - .. row 6 | 481 | :c:type:`v4l2_buf_type` field named ``type`` was |
| 482 | 482 | added as in struct :c:type:`v4l2_format`. The | |
| 483 | - ``V4L2_BUF_TYPE_EFFECTSIN2`` | ||
| 484 | |||
| 485 | - Omitted for now | ||
| 486 | |||
| 487 | - .. row 7 | ||
| 488 | |||
| 489 | - ``V4L2_BUF_TYPE_EFFECTSOUT`` | ||
| 490 | |||
| 491 | - Omitted for now | ||
| 492 | |||
| 493 | - .. row 8 | ||
| 494 | |||
| 495 | - ``V4L2_BUF_TYPE_VIDEOOUT`` | ||
| 496 | |||
| 497 | - ``V4L2_BUF_TYPE_VIDEO_OUTPUT`` | ||
| 498 | |||
| 499 | - .. row 9 | ||
| 500 | |||
| 501 | - ``-`` | ||
| 502 | |||
| 503 | - ``V4L2_BUF_TYPE_VIDEO_OVERLAY`` | ||
| 504 | |||
| 505 | - .. row 10 | ||
| 506 | |||
| 507 | - ``-`` | ||
| 508 | |||
| 509 | - ``V4L2_BUF_TYPE_VBI_CAPTURE`` | ||
| 510 | |||
| 511 | - .. row 11 | ||
| 512 | |||
| 513 | - ``-`` | ||
| 514 | |||
| 515 | - ``V4L2_BUF_TYPE_VBI_OUTPUT`` | ||
| 516 | |||
| 517 | - .. row 12 | ||
| 518 | |||
| 519 | - ``-`` | ||
| 520 | |||
| 521 | - ``V4L2_BUF_TYPE_SLICED_VBI_CAPTURE`` | ||
| 522 | |||
| 523 | - .. row 13 | ||
| 524 | |||
| 525 | - ``-`` | ||
| 526 | |||
| 527 | - ``V4L2_BUF_TYPE_SLICED_VBI_OUTPUT`` | ||
| 528 | |||
| 529 | - .. row 14 | ||
| 530 | |||
| 531 | - ``V4L2_BUF_TYPE_PRIVATE_BASE`` | ||
| 532 | |||
| 533 | - ``V4L2_BUF_TYPE_PRIVATE`` (but this is deprecated) | ||
| 534 | |||
| 535 | |||
| 536 | 10. In struct :ref:`v4l2_fmtdesc <v4l2-fmtdesc>` a enum | ||
| 537 | :ref:`v4l2_buf_type <v4l2-buf-type>` field named ``type`` was | ||
| 538 | added as in struct :ref:`v4l2_format <v4l2-format>`. The | ||
| 539 | ``VIDIOC_ENUM_FBUFFMT`` ioctl is no longer needed and was removed. | 483 | ``VIDIOC_ENUM_FBUFFMT`` ioctl is no longer needed and was removed. |
| 540 | These calls can be replaced by | 484 | These calls can be replaced by |
| 541 | :ref:`VIDIOC_ENUM_FMT` with type | 485 | :ref:`VIDIOC_ENUM_FMT` with type |
| 542 | ``V4L2_BUF_TYPE_VIDEO_OVERLAY``. | 486 | ``V4L2_BUF_TYPE_VIDEO_OVERLAY``. |
| 543 | 487 | ||
| 544 | 11. In struct :ref:`v4l2_pix_format <v4l2-pix-format>` the ``depth`` | 488 | 11. In struct :c:type:`v4l2_pix_format` the ``depth`` |
| 545 | field was removed, assuming applications which recognize the format | 489 | field was removed, assuming applications which recognize the format |
| 546 | by its four-character-code already know the color depth, and others | 490 | by its four-character-code already know the color depth, and others |
| 547 | do not care about it. The same rationale lead to the removal of the | 491 | do not care about it. The same rationale lead to the removal of the |
| @@ -555,7 +499,7 @@ This unnamed version was finally merged into Linux 2.5.46. · 7 unmodified lines | |||
| 555 | itself was removed. | 499 | itself was removed. |
| 556 | 500 | ||
| 557 | The interlace flags were replaced by a enum | 501 | The interlace flags were replaced by a enum |
| 558 | :ref:`v4l2_field <v4l2-field>` value in a newly added ``field`` | 502 | :c:type:`v4l2_field` value in a newly added ``field`` |
| 559 | field. | 503 | field. |
| 560 | 504 | ||
| 561 | 505 | ||
| @@ -564,82 +508,50 @@ This unnamed version was finally merged into Linux 2.5.46. · 2 unmodified lines | |||
| 564 | :header-rows: 1 | 508 | :header-rows: 1 |
| 565 | :stub-columns: 0 | 509 | :stub-columns: 0 |
| 566 | 510 | ||
| 567 | 511 | * - Old flag | |
| 568 | - .. row 1 | 512 | - enum :c:type:`v4l2_field` |
| 569 | 513 | * - ``V4L2_FMT_FLAG_NOT_INTERLACED`` | |
| 570 | - Old flag | 514 | - ? |
| 571 | 515 | * - ``V4L2_FMT_FLAG_INTERLACED`` = ``V4L2_FMT_FLAG_COMBINED`` | |
| 572 | - enum :ref:`v4l2_field <v4l2-field>` | 516 | - ``V4L2_FIELD_INTERLACED`` |
| 573 | 517 | * - ``V4L2_FMT_FLAG_TOPFIELD`` = ``V4L2_FMT_FLAG_ODDFIELD`` | |
| 574 | - .. row 2 | 518 | - ``V4L2_FIELD_TOP`` |
| 575 | 519 | * - ``V4L2_FMT_FLAG_BOTFIELD`` = ``V4L2_FMT_FLAG_EVENFIELD`` | |
| 576 | - ``V4L2_FMT_FLAG_NOT_INTERLACED`` | 520 | - ``V4L2_FIELD_BOTTOM`` |
| 577 | 521 | * - ``-`` | |
| 578 | - ? | 522 | - ``V4L2_FIELD_SEQ_TB`` |
| 579 | 523 | * - ``-`` | |
| 580 | - .. row 3 | 524 | - ``V4L2_FIELD_SEQ_BT`` |
| 581 | 525 | * - ``-`` | |
| 582 | - ``V4L2_FMT_FLAG_INTERLACED`` = ``V4L2_FMT_FLAG_COMBINED`` | 526 | - ``V4L2_FIELD_ALTERNATE`` |
| 583 | |||
| 584 | - ``V4L2_FIELD_INTERLACED`` | ||
| 585 | |||
| 586 | - .. row 4 | ||
| 587 | |||
| 588 | - ``V4L2_FMT_FLAG_TOPFIELD`` = ``V4L2_FMT_FLAG_ODDFIELD`` | ||
| 589 | |||
| 590 | - ``V4L2_FIELD_TOP`` | ||
| 591 | |||
| 592 | - .. row 5 | ||
| 593 | |||
| 594 | - ``V4L2_FMT_FLAG_BOTFIELD`` = ``V4L2_FMT_FLAG_EVENFIELD`` | ||
| 595 | |||
| 596 | - ``V4L2_FIELD_BOTTOM`` | ||
| 597 | |||
| 598 | - .. row 6 | ||
| 599 | |||
| 600 | - ``-`` | ||
| 601 | |||
| 602 | - ``V4L2_FIELD_SEQ_TB`` | ||
| 603 | |||
| 604 | - .. row 7 | ||
| 605 | |||
| 606 | - ``-`` | ||
| 607 | |||
| 608 | - ``V4L2_FIELD_SEQ_BT`` | ||
| 609 | |||
| 610 | - .. row 8 | ||
| 611 | |||
| 612 | - ``-`` | ||
| 613 | |||
| 614 | - ``V4L2_FIELD_ALTERNATE`` | ||
| 615 | 527 | ||
| 616 | 528 | ||
| 617 | The color space flags were replaced by a enum | 529 | The color space flags were replaced by a enum |
| 618 | :ref:`v4l2_colorspace <v4l2-colorspace>` value in a newly added | 530 | :c:type:`v4l2_colorspace` value in a newly added |
| 619 | ``colorspace`` field, where one of ``V4L2_COLORSPACE_SMPTE170M``, | 531 | ``colorspace`` field, where one of ``V4L2_COLORSPACE_SMPTE170M``, |
| 620 | ``V4L2_COLORSPACE_BT878``, ``V4L2_COLORSPACE_470_SYSTEM_M`` or | 532 | ``V4L2_COLORSPACE_BT878``, ``V4L2_COLORSPACE_470_SYSTEM_M`` or |
| 621 | ``V4L2_COLORSPACE_470_SYSTEM_BG`` replaces ``V4L2_FMT_CS_601YUV``. | 533 | ``V4L2_COLORSPACE_470_SYSTEM_BG`` replaces ``V4L2_FMT_CS_601YUV``. |
| 622 | 534 | ||
| 623 | 12. In struct :ref:`v4l2_requestbuffers <v4l2-requestbuffers>` the | 535 | 12. In struct :c:type:`v4l2_requestbuffers` the |
| 624 | ``type`` field was properly defined as enum | 536 | ``type`` field was properly defined as enum |
| 625 | :ref:`v4l2_buf_type <v4l2-buf-type>`. Buffer types changed as | 537 | :c:type:`v4l2_buf_type`. Buffer types changed as |
| 626 | mentioned above. A new ``memory`` field of type enum | 538 | mentioned above. A new ``memory`` field of type enum |
| 627 | :ref:`v4l2_memory <v4l2-memory>` was added to distinguish between | 539 | :c:type:`v4l2_memory` was added to distinguish between |
| 628 | I/O methods using buffers allocated by the driver or the | 540 | I/O methods using buffers allocated by the driver or the |
| 629 | application. See :ref:`io` for details. | 541 | application. See :ref:`io` for details. |
| 630 | 542 | ||
| 631 | 13. In struct :ref:`v4l2_buffer <v4l2-buffer>` the ``type`` field was | 543 | 13. In struct :c:type:`v4l2_buffer` the ``type`` field was |
| 632 | properly defined as enum :ref:`v4l2_buf_type <v4l2-buf-type>`. | 544 | properly defined as enum :c:type:`v4l2_buf_type`. |
| 633 | Buffer types changed as mentioned above. A ``field`` field of type | 545 | Buffer types changed as mentioned above. A ``field`` field of type |
| 634 | enum :ref:`v4l2_field <v4l2-field>` was added to indicate if a | 546 | enum :c:type:`v4l2_field` was added to indicate if a |
| 635 | buffer contains a top or bottom field. The old field flags were | 547 | buffer contains a top or bottom field. The old field flags were |
| 636 | removed. Since no unadjusted system time clock was added to the | 548 | removed. Since no unadjusted system time clock was added to the |
| 637 | kernel as planned, the ``timestamp`` field changed back from type | 549 | kernel as planned, the ``timestamp`` field changed back from type |
| 638 | stamp_t, an unsigned 64 bit integer expressing the sample time in | 550 | stamp_t, an unsigned 64 bit integer expressing the sample time in |
| 639 | nanoseconds, to struct :c:type:`struct timeval`. With the addition | 551 | nanoseconds, to struct :c:type:`timeval`. With the addition |
| 640 | of a second memory mapping method the ``offset`` field moved into | 552 | of a second memory mapping method the ``offset`` field moved into |
| 641 | union ``m``, and a new ``memory`` field of type enum | 553 | union ``m``, and a new ``memory`` field of type enum |
| 642 | :ref:`v4l2_memory <v4l2-memory>` was added to distinguish between | 554 | :c:type:`v4l2_memory` was added to distinguish between |
| 643 | I/O methods. See :ref:`io` for details. | 555 | I/O methods. See :ref:`io` for details. |
| 644 | 556 | ||
| 645 | The ``V4L2_BUF_REQ_CONTIG`` flag was used by the V4L compatibility | 557 | The ``V4L2_BUF_REQ_CONTIG`` flag was used by the V4L compatibility |
| @@ -648,7 +560,7 @@ This unnamed version was finally merged into Linux 2.5.46. · 2 unmodified lines | |||
| 648 | indeed allocated in device memory rather than DMA-able system | 560 | indeed allocated in device memory rather than DMA-able system |
| 649 | memory. It was barely useful and so was removed. | 561 | memory. It was barely useful and so was removed. |
| 650 | 562 | ||
| 651 | 14. In struct :ref:`v4l2_framebuffer <v4l2-framebuffer>` the | 563 | 14. In struct :c:type:`v4l2_framebuffer` the |
| 652 | ``base[3]`` array anticipating double- and triple-buffering in | 564 | ``base[3]`` array anticipating double- and triple-buffering in |
| 653 | off-screen video memory, however without defining a synchronization | 565 | off-screen video memory, however without defining a synchronization |
| 654 | mechanism, was replaced by a single pointer. The | 566 | mechanism, was replaced by a single pointer. The |
| @@ -659,42 +571,42 @@ This unnamed version was finally merged into Linux 2.5.46. · 4 unmodified lines | |||
| 659 | ``V4L2_FBUF_CAP_LIST_CLIPPING`` and | 571 | ``V4L2_FBUF_CAP_LIST_CLIPPING`` and |
| 660 | ``V4L2_FBUF_CAP_BITMAP_CLIPPING``. | 572 | ``V4L2_FBUF_CAP_BITMAP_CLIPPING``. |
| 661 | 573 | ||
| 662 | 15. In struct :ref:`v4l2_clip <v4l2-clip>` the ``x``, ``y``, | 574 | 15. In struct :c:type:`v4l2_clip` the ``x``, ``y``, |
| 663 | ``width`` and ``height`` field moved into a ``c`` substructure of | 575 | ``width`` and ``height`` field moved into a ``c`` substructure of |
| 664 | type struct :ref:`v4l2_rect <v4l2-rect>`. The ``x`` and ``y`` | 576 | type struct :c:type:`v4l2_rect`. The ``x`` and ``y`` |
| 665 | fields were renamed to ``left`` and ``top``, i. e. offsets to a | 577 | fields were renamed to ``left`` and ``top``, i. e. offsets to a |
| 666 | context dependent origin. | 578 | context dependent origin. |
| 667 | 579 | ||
| 668 | 16. In struct :ref:`v4l2_window <v4l2-window>` the ``x``, ``y``, | 580 | 16. In struct :c:type:`v4l2_window` the ``x``, ``y``, |
| 669 | ``width`` and ``height`` field moved into a ``w`` substructure as | 581 | ``width`` and ``height`` field moved into a ``w`` substructure as |
| 670 | above. A ``field`` field of type %v4l2-field; was added to | 582 | above. A ``field`` field of type :c:type:`v4l2_field` was added to |
| 671 | distinguish between field and frame (interlaced) overlay. | 583 | distinguish between field and frame (interlaced) overlay. |
| 672 | 584 | ||
| 673 | 17. The digital zoom interface, including struct | 585 | 17. The digital zoom interface, including struct |
| 674 | :c:type:`struct v4l2_zoomcap`, struct | 586 | struct ``v4l2_zoomcap``, struct |
| 675 | :c:type:`struct v4l2_zoom`, ``V4L2_ZOOM_NONCAP`` and | 587 | struct ``v4l2_zoom``, ``V4L2_ZOOM_NONCAP`` and |
| 676 | ``V4L2_ZOOM_WHILESTREAMING`` was replaced by a new cropping and | 588 | ``V4L2_ZOOM_WHILESTREAMING`` was replaced by a new cropping and |
| 677 | scaling interface. The previously unused struct | 589 | scaling interface. The previously unused struct |
| 678 | :c:type:`struct v4l2_cropcap` and :c:type:`struct v4l2_crop` | 590 | struct :c:type:`v4l2_cropcap` and struct :c:type:`v4l2_crop` |
| 679 | where redefined for this purpose. See :ref:`crop` for details. | 591 | where redefined for this purpose. See :ref:`crop` for details. |
| 680 | 592 | ||
| 681 | 18. In struct :ref:`v4l2_vbi_format <v4l2-vbi-format>` the | 593 | 18. In struct :c:type:`v4l2_vbi_format` the |
| 682 | ``SAMPLE_FORMAT`` field now contains a four-character-code as used | 594 | ``SAMPLE_FORMAT`` field now contains a four-character-code as used |
| 683 | to identify video image formats and ``V4L2_PIX_FMT_GREY`` replaces | 595 | to identify video image formats and ``V4L2_PIX_FMT_GREY`` replaces |
| 684 | the ``V4L2_VBI_SF_UBYTE`` define. The ``reserved`` field was | 596 | the ``V4L2_VBI_SF_UBYTE`` define. The ``reserved`` field was |
| 685 | extended. | 597 | extended. |
| 686 | 598 | ||
| 687 | 19. In struct :ref:`v4l2_captureparm <v4l2-captureparm>` the type of | 599 | 19. In struct :c:type:`v4l2_captureparm` the type of |
| 688 | the ``timeperframe`` field changed from unsigned long to struct | 600 | the ``timeperframe`` field changed from unsigned long to struct |
| 689 | :ref:`v4l2_fract <v4l2-fract>`. This allows the accurate | 601 | :c:type:`v4l2_fract`. This allows the accurate |
| 690 | expression of multiples of the NTSC-M frame rate 30000 / 1001. A new | 602 | expression of multiples of the NTSC-M frame rate 30000 / 1001. A new |
| 691 | field ``readbuffers`` was added to control the driver behaviour in | 603 | field ``readbuffers`` was added to control the driver behaviour in |
| 692 | read I/O mode. | 604 | read I/O mode. |
| 693 | 605 | ||
| 694 | Similar changes were made to struct | 606 | Similar changes were made to struct |
| 695 | :ref:`v4l2_outputparm <v4l2-outputparm>`. | 607 | :c:type:`v4l2_outputparm`. |
| 696 | 608 | ||
| 697 | 20. The struct :c:type:`struct v4l2_performance` and | 609 | 20. The struct ``v4l2_performance`` and |
| 698 | ``VIDIOC_G_PERF`` ioctl were dropped. Except when using the | 610 | ``VIDIOC_G_PERF`` ioctl were dropped. Except when using the |
| 699 | :ref:`read/write I/O method <rw>`, which is limited anyway, this | 611 | :ref:`read/write I/O method <rw>`, which is limited anyway, this |
| 700 | information is already available to applications. | 612 | information is already available to applications. |
| @@ -768,46 +680,21 @@ V4L2 2003-11-05 · 67 unmodified lines | |||
| 768 | :header-rows: 1 | 680 | :header-rows: 1 |
| 769 | :stub-columns: 0 | 681 | :stub-columns: 0 |
| 770 | 682 | ||
| 771 | 683 | * - Symbol | |
| 772 | - .. row 1 | 684 | - In this document prior to revision 0.5 |
| 773 | 685 | - Corrected | |
| 774 | - Symbol | 686 | * - ``V4L2_PIX_FMT_RGB24`` |
| 775 | 687 | - B, G, R | |
| 776 | - In this document prior to revision 0.5 | 688 | - R, G, B |
| 777 | 689 | * - ``V4L2_PIX_FMT_BGR24`` | |
| 778 | - Corrected | 690 | - R, G, B |
| 779 | 691 | - B, G, R | |
| 780 | - .. row 2 | 692 | * - ``V4L2_PIX_FMT_RGB32`` |
| 781 | 693 | - B, G, R, X | |
| 782 | - ``V4L2_PIX_FMT_RGB24`` | 694 | - R, G, B, X |
| 783 | 695 | * - ``V4L2_PIX_FMT_BGR32`` | |
| 784 | - B, G, R | 696 | - R, G, B, X |
| 785 | 697 | - B, G, R, X | |
| 786 | - R, G, B | ||
| 787 | |||
| 788 | - .. row 3 | ||
| 789 | |||
| 790 | - ``V4L2_PIX_FMT_BGR24`` | ||
| 791 | |||
| 792 | - R, G, B | ||
| 793 | |||
| 794 | - B, G, R | ||
| 795 | |||
| 796 | - .. row 4 | ||
| 797 | |||
| 798 | - ``V4L2_PIX_FMT_RGB32`` | ||
| 799 | |||
| 800 | - B, G, R, X | ||
| 801 | |||
| 802 | - R, G, B, X | ||
| 803 | |||
| 804 | - .. row 5 | ||
| 805 | |||
| 806 | - ``V4L2_PIX_FMT_BGR32`` | ||
| 807 | |||
| 808 | - R, G, B, X | ||
| 809 | |||
| 810 | - B, G, R, X | ||
| 811 | 698 | ||
| 812 | 699 | ||
| 813 | The ``V4L2_PIX_FMT_BGR24`` example was always correct. | 700 | The ``V4L2_PIX_FMT_BGR24`` example was always correct. |
| @@ -834,7 +721,7 @@ V4L2 in Linux 2.6.8 · 20 unmodified lines | |||
| 834 | =================== | 721 | =================== |
| 835 | 722 | ||
| 836 | 1. A new field ``input`` (former ``reserved[0]``) was added to the | 723 | 1. A new field ``input`` (former ``reserved[0]``) was added to the |
| 837 | struct :ref:`v4l2_buffer <v4l2-buffer>` structure. Purpose of this | 724 | struct :c:type:`v4l2_buffer` structure. Purpose of this |
| 838 | field is to alternate between video inputs (e. g. cameras) in step | 725 | field is to alternate between video inputs (e. g. cameras) in step |
| 839 | with the video capturing process. This function must be enabled with | 726 | with the video capturing process. This function must be enabled with |
| 840 | the new ``V4L2_BUF_FLAG_INPUT`` flag. The ``flags`` field is no | 727 | the new ``V4L2_BUF_FLAG_INPUT`` flag. The ``flags`` field is no |
| @@ -854,7 +741,7 @@ V4L2 spec erratum 2004-08-01 · 13 unmodified lines | |||
| 854 | 741 | ||
| 855 | 4. The documentation of the :ref:`VIDIOC_QBUF` and | 742 | 4. The documentation of the :ref:`VIDIOC_QBUF` and |
| 856 | :ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctls did not mention the | 743 | :ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctls did not mention the |
| 857 | struct :ref:`v4l2_buffer <v4l2-buffer>` ``memory`` field. It was | 744 | struct :c:type:`v4l2_buffer` ``memory`` field. It was |
| 858 | also missing from examples. Also on the ``VIDIOC_DQBUF`` page the ``EIO`` | 745 | also missing from examples. Also on the ``VIDIOC_DQBUF`` page the ``EIO`` |
| 859 | error code was not documented. | 746 | error code was not documented. |
| 860 | 747 | ||
| @@ -882,7 +769,7 @@ V4L2 in Linux 2.6.15 · 21 unmodified lines | |||
| 882 | 3. The ``VIDIOC_G_COMP`` and ``VIDIOC_S_COMP`` ioctl were renamed to | 769 | 3. The ``VIDIOC_G_COMP`` and ``VIDIOC_S_COMP`` ioctl were renamed to |
| 883 | ``VIDIOC_G_MPEGCOMP`` and ``VIDIOC_S_MPEGCOMP`` respectively. Their | 770 | ``VIDIOC_G_MPEGCOMP`` and ``VIDIOC_S_MPEGCOMP`` respectively. Their |
| 884 | argument was replaced by a struct | 771 | argument was replaced by a struct |
| 885 | :c:type:`struct v4l2_mpeg_compression` pointer. (The | 772 | ``v4l2_mpeg_compression`` pointer. (The |
| 886 | ``VIDIOC_G_MPEGCOMP`` and ``VIDIOC_S_MPEGCOMP`` ioctls where removed | 773 | ``VIDIOC_G_MPEGCOMP`` and ``VIDIOC_S_MPEGCOMP`` ioctls where removed |
| 887 | in Linux 2.6.25.) | 774 | in Linux 2.6.25.) |
| 888 | 775 | ||
| @@ -901,7 +788,7 @@ V4L2 spec erratum 2006-01-10 · 12 unmodified lines | |||
| 901 | ============================ | 788 | ============================ |
| 902 | 789 | ||
| 903 | 1. The ``V4L2_IN_ST_COLOR_KILL`` flag in struct | 790 | 1. The ``V4L2_IN_ST_COLOR_KILL`` flag in struct |
| 904 | :ref:`v4l2_input <v4l2-input>` not only indicates if the color | 791 | :c:type:`v4l2_input` not only indicates if the color |
| 905 | killer is enabled, but also if it is active. (The color killer | 792 | killer is enabled, but also if it is active. (The color killer |
| 906 | disables color decoding when it detects no color in the video signal | 793 | disables color decoding when it detects no color in the video signal |
| 907 | to improve the image quality.) | 794 | to improve the image quality.) |
| @@ -914,18 +801,18 @@ V4L2 spec erratum 2006-01-10 · 6 unmodified lines | |||
| 914 | V4L2 spec erratum 2006-02-03 | 801 | V4L2 spec erratum 2006-02-03 |
| 915 | ============================ | 802 | ============================ |
| 916 | 803 | ||
| 917 | 1. In struct :ref:`v4l2_captureparm <v4l2-captureparm>` and struct | 804 | 1. In struct :c:type:`v4l2_captureparm` and struct |
| 918 | :ref:`v4l2_outputparm <v4l2-outputparm>` the ``timeperframe`` | 805 | :c:type:`v4l2_outputparm` the ``timeperframe`` |
| 919 | field gives the time in seconds, not microseconds. | 806 | field gives the time in seconds, not microseconds. |
| 920 | 807 | ||
| 921 | 808 | ||
| 922 | V4L2 spec erratum 2006-02-04 | 809 | V4L2 spec erratum 2006-02-04 |
| 923 | ============================ | 810 | ============================ |
| 924 | 811 | ||
| 925 | 1. The ``clips`` field in struct :ref:`v4l2_window <v4l2-window>` | 812 | 1. The ``clips`` field in struct :c:type:`v4l2_window` |
| 926 | must point to an array of struct :ref:`v4l2_clip <v4l2-clip>`, not | 813 | must point to an array of struct :c:type:`v4l2_clip`, not |
| 927 | a linked list, because drivers ignore the struct | 814 | a linked list, because drivers ignore the struct |
| 928 | :c:type:`struct v4l2_clip`. ``next`` pointer. | 815 | struct :c:type:`v4l2_clip`. ``next`` pointer. |
| 929 | 816 | ||
| 930 | 817 | ||
| 931 | V4L2 in Linux 2.6.17 | 818 | V4L2 in Linux 2.6.17 |
| @@ -951,18 +838,18 @@ V4L2 spec erratum 2006-09-23 (Draft 0.15) · 19 unmodified lines | |||
| 951 | not mentioned along with other buffer types. | 838 | not mentioned along with other buffer types. |
| 952 | 839 | ||
| 953 | 2. In :ref:`VIDIOC_G_AUDIO <VIDIOC_G_AUDIO>` it was clarified that the struct | 840 | 2. In :ref:`VIDIOC_G_AUDIO <VIDIOC_G_AUDIO>` it was clarified that the struct |
| 954 | :ref:`v4l2_audio <v4l2-audio>` ``mode`` field is a flags field. | 841 | :c:type:`v4l2_audio` ``mode`` field is a flags field. |
| 955 | 842 | ||
| 956 | 3. :ref:`VIDIOC_QUERYCAP` did not mention the sliced VBI and radio | 843 | 3. :ref:`VIDIOC_QUERYCAP` did not mention the sliced VBI and radio |
| 957 | capability flags. | 844 | capability flags. |
| 958 | 845 | ||
| 959 | 4. In :ref:`VIDIOC_G_FREQUENCY <VIDIOC_G_FREQUENCY>` it was clarified that applications | 846 | 4. In :ref:`VIDIOC_G_FREQUENCY <VIDIOC_G_FREQUENCY>` it was clarified that applications |
| 960 | must initialize the tuner ``type`` field of struct | 847 | must initialize the tuner ``type`` field of struct |
| 961 | :ref:`v4l2_frequency <v4l2-frequency>` before calling | 848 | :c:type:`v4l2_frequency` before calling |
| 962 | :ref:`VIDIOC_S_FREQUENCY <VIDIOC_G_FREQUENCY>`. | 849 | :ref:`VIDIOC_S_FREQUENCY <VIDIOC_G_FREQUENCY>`. |
| 963 | 850 | ||
| 964 | 5. The ``reserved`` array in struct | 851 | 5. The ``reserved`` array in struct |
| 965 | :ref:`v4l2_requestbuffers <v4l2-requestbuffers>` has 2 elements, | 852 | :c:type:`v4l2_requestbuffers` has 2 elements, |
| 966 | not 32. | 853 | not 32. |
| 967 | 854 | ||
| 968 | 6. In :ref:`output` and :ref:`raw-vbi` the device file names | 855 | 6. In :ref:`output` and :ref:`raw-vbi` the device file names |
| @@ -982,7 +869,7 @@ V4L2 in Linux 2.6.18 · 13 unmodified lines | |||
| 982 | flag to skip unsupported controls with | 869 | flag to skip unsupported controls with |
| 983 | :ref:`VIDIOC_QUERYCTRL`, new control types | 870 | :ref:`VIDIOC_QUERYCTRL`, new control types |
| 984 | ``V4L2_CTRL_TYPE_INTEGER64`` and ``V4L2_CTRL_TYPE_CTRL_CLASS`` | 871 | ``V4L2_CTRL_TYPE_INTEGER64`` and ``V4L2_CTRL_TYPE_CTRL_CLASS`` |
| 985 | (:ref:`v4l2-ctrl-type`), and new control flags | 872 | (:c:type:`v4l2_ctrl_type`), and new control flags |
| 986 | ``V4L2_CTRL_FLAG_READ_ONLY``, ``V4L2_CTRL_FLAG_UPDATE``, | 873 | ``V4L2_CTRL_FLAG_READ_ONLY``, ``V4L2_CTRL_FLAG_UPDATE``, |
| 987 | ``V4L2_CTRL_FLAG_INACTIVE`` and ``V4L2_CTRL_FLAG_SLIDER`` | 874 | ``V4L2_CTRL_FLAG_INACTIVE`` and ``V4L2_CTRL_FLAG_SLIDER`` |
| 988 | (:ref:`control-flags`). See :ref:`extended-controls` for details. | 875 | (:ref:`control-flags`). See :ref:`extended-controls` for details. |
| @@ -991,7 +878,7 @@ V4L2 in Linux 2.6.18 · 2 unmodified lines | |||
| 991 | V4L2 in Linux 2.6.19 | 878 | V4L2 in Linux 2.6.19 |
| 992 | ==================== | 879 | ==================== |
| 993 | 880 | ||
| 994 | 1. In struct :ref:`v4l2_sliced_vbi_cap <v4l2-sliced-vbi-cap>` a | 881 | 1. In struct :c:type:`v4l2_sliced_vbi_cap` a |
| 995 | buffer type field was added replacing a reserved field. Note on | 882 | buffer type field was added replacing a reserved field. Note on |
| 996 | architectures where the size of enum types differs from int types the | 883 | architectures where the size of enum types differs from int types the |
| 997 | size of the structure changed. The | 884 | size of the structure changed. The |
| @@ -1029,7 +916,7 @@ V4L2 in Linux 2.6.22 · 31 unmodified lines | |||
| 1029 | ==================== | 916 | ==================== |
| 1030 | 917 | ||
| 1031 | 1. Two new field orders ``V4L2_FIELD_INTERLACED_TB`` and | 918 | 1. Two new field orders ``V4L2_FIELD_INTERLACED_TB`` and |
| 1032 | ``V4L2_FIELD_INTERLACED_BT`` were added. See :ref:`v4l2-field` for | 919 | ``V4L2_FIELD_INTERLACED_BT`` were added. See :c:type:`v4l2_field` for |
| 1033 | details. | 920 | details. |
| 1034 | 921 | ||
| 1035 | 2. Three new clipping/blending methods with a global or straight or | 922 | 2. Three new clipping/blending methods with a global or straight or |
| @@ -1038,15 +925,15 @@ V4L2 in Linux 2.6.22 · 2 unmodified lines | |||
| 1038 | and :ref:`VIDIOC_S_FBUF <VIDIOC_G_FBUF>` ioctls for details. | 925 | and :ref:`VIDIOC_S_FBUF <VIDIOC_G_FBUF>` ioctls for details. |
| 1039 | 926 | ||
| 1040 | A new ``global_alpha`` field was added to | 927 | A new ``global_alpha`` field was added to |
| 1041 | :ref:`v4l2_window <v4l2-window>`, extending the structure. This | 928 | :c:type:`v4l2_window`, extending the structure. This |
| 1042 | may *break compatibility* with applications using a struct | 929 | may *break compatibility* with applications using a struct |
| 1043 | :c:type:`struct v4l2_window` directly. However the | 930 | struct :c:type:`v4l2_window` directly. However the |
| 1044 | :ref:`VIDIOC_G/S/TRY_FMT <VIDIOC_G_FMT>` ioctls, which take a | 931 | :ref:`VIDIOC_G/S/TRY_FMT <VIDIOC_G_FMT>` ioctls, which take a |
| 1045 | pointer to a :ref:`v4l2_format <v4l2-format>` parent structure | 932 | pointer to a :c:type:`v4l2_format` parent structure |
| 1046 | with padding bytes at the end, are not affected. | 933 | with padding bytes at the end, are not affected. |
| 1047 | 934 | ||
| 1048 | 3. The format of the ``chromakey`` field in struct | 935 | 3. The format of the ``chromakey`` field in struct |
| 1049 | :ref:`v4l2_window <v4l2-window>` changed from "host order RGB32" | 936 | :c:type:`v4l2_window` changed from "host order RGB32" |
| 1050 | to a pixel value in the same format as the framebuffer. This may | 937 | to a pixel value in the same format as the framebuffer. This may |
| 1051 | *break compatibility* with existing applications. Drivers supporting | 938 | *break compatibility* with existing applications. Drivers supporting |
| 1052 | the "host order RGB32" format are not known. | 939 | the "host order RGB32" format are not known. |
| @@ -1127,8 +1014,8 @@ V4L2 in Linux 2.6.29 · 74 unmodified lines | |||
| 1127 | 1. The ``VIDIOC_G_CHIP_IDENT`` ioctl was renamed to | 1014 | 1. The ``VIDIOC_G_CHIP_IDENT`` ioctl was renamed to |
| 1128 | ``VIDIOC_G_CHIP_IDENT_OLD`` and ``VIDIOC_DBG_G_CHIP_IDENT`` was | 1015 | ``VIDIOC_G_CHIP_IDENT_OLD`` and ``VIDIOC_DBG_G_CHIP_IDENT`` was |
| 1129 | introduced in its place. The old struct | 1016 | introduced in its place. The old struct |
| 1130 | :c:type:`struct v4l2_chip_ident` was renamed to | 1017 | struct ``v4l2_chip_ident`` was renamed to |
| 1131 | :c:type:`struct v4l2_chip_ident_old`. | 1018 | struct ``v4l2_chip_ident_old``. |
| 1132 | 1019 | ||
| 1133 | 2. The pixel formats ``V4L2_PIX_FMT_VYUY``, ``V4L2_PIX_FMT_NV16`` and | 1020 | 2. The pixel formats ``V4L2_PIX_FMT_VYUY``, ``V4L2_PIX_FMT_NV16`` and |
| 1134 | ``V4L2_PIX_FMT_NV61`` were added. | 1021 | ``V4L2_PIX_FMT_NV61`` were added. |
| @@ -1279,7 +1166,7 @@ V4L2 in Linux 3.5 · 144 unmodified lines | |||
| 1279 | V4L2 in Linux 3.6 | 1166 | V4L2 in Linux 3.6 |
| 1280 | ================= | 1167 | ================= |
| 1281 | 1168 | ||
| 1282 | 1. Replaced ``input`` in :c:type:`struct v4l2_buffer` by | 1169 | 1. Replaced ``input`` in struct :c:type:`v4l2_buffer` by |
| 1283 | ``reserved2`` and removed ``V4L2_BUF_FLAG_INPUT``. | 1170 | ``reserved2`` and removed ``V4L2_BUF_FLAG_INPUT``. |
| 1284 | 1171 | ||
| 1285 | 2. Added V4L2_CAP_VIDEO_M2M and V4L2_CAP_VIDEO_M2M_MPLANE | 1172 | 2. Added V4L2_CAP_VIDEO_M2M and V4L2_CAP_VIDEO_M2M_MPLANE |
| @@ -1293,7 +1180,7 @@ V4L2 in Linux 3.9 · 7 unmodified lines | |||
| 1293 | ================= | 1180 | ================= |
| 1294 | 1181 | ||
| 1295 | 1. Added timestamp types to ``flags`` field in | 1182 | 1. Added timestamp types to ``flags`` field in |
| 1296 | :c:type:`struct v4l2_buffer`. See :ref:`buffer-flags`. | 1183 | struct :c:type:`v4l2_buffer`. See :ref:`buffer-flags`. |
| 1297 | 1184 | ||
| 1298 | 2. Added ``V4L2_EVENT_CTRL_CH_RANGE`` control event changes flag. See | 1185 | 2. Added ``V4L2_EVENT_CTRL_CH_RANGE`` control event changes flag. See |
| 1299 | :ref:`ctrl-changes-flags`. | 1186 | :ref:`ctrl-changes-flags`. |
| @@ -1320,7 +1207,7 @@ V4L2 in Linux 3.11 · 20 unmodified lines | |||
| 1320 | V4L2 in Linux 3.14 | 1207 | V4L2 in Linux 3.14 |
| 1321 | ================== | 1208 | ================== |
| 1322 | 1209 | ||
| 1323 | 1. In struct :c:type:`struct v4l2_rect`, the type of ``width`` and | 1210 | 1. In struct :c:type:`v4l2_rect`, the type of ``width`` and |
| 1324 | ``height`` fields changed from _s32 to _u32. | 1211 | ``height`` fields changed from _s32 to _u32. |
| 1325 | 1212 | ||
| 1326 | 1213 | ||
| @@ -1339,7 +1226,7 @@ V4L2 in Linux 3.16 · 12 unmodified lines | |||
| 1339 | V4L2 in Linux 3.17 | 1226 | V4L2 in Linux 3.17 |
| 1340 | ================== | 1227 | ================== |
| 1341 | 1228 | ||
| 1342 | 1. Extended struct :ref:`v4l2_pix_format <v4l2-pix-format>`. Added | 1229 | 1. Extended struct :c:type:`v4l2_pix_format`. Added |
| 1343 | format flags. | 1230 | format flags. |
| 1344 | 1231 | ||
| 1345 | 2. Added compound control types and | 1232 | 2. Added compound control types and |
| @@ -1357,11 +1244,11 @@ V4L2 in Linux 3.19 · 11 unmodified lines | |||
| 1357 | ================== | 1244 | ================== |
| 1358 | 1245 | ||
| 1359 | 1. Rewrote Colorspace chapter, added new enum | 1246 | 1. Rewrote Colorspace chapter, added new enum |
| 1360 | :ref:`v4l2_ycbcr_encoding <v4l2-ycbcr-encoding>` and enum | 1247 | :c:type:`v4l2_ycbcr_encoding` and enum |
| 1361 | :ref:`v4l2_quantization <v4l2-quantization>` fields to struct | 1248 | :c:type:`v4l2_quantization` fields to struct |
| 1362 | :ref:`v4l2_pix_format <v4l2-pix-format>`, struct | 1249 | :c:type:`v4l2_pix_format`, struct |
| 1363 | :ref:`v4l2_pix_format_mplane <v4l2-pix-format-mplane>` and | 1250 | :c:type:`v4l2_pix_format_mplane` and |
| 1364 | struct :ref:`v4l2_mbus_framefmt <v4l2-mbus-framefmt>`. | 1251 | struct :c:type:`v4l2_mbus_framefmt`. |
| 1365 | 1252 | ||
| 1366 | 1253 | ||
| 1367 | V4L2 in Linux 4.4 | 1254 | V4L2 in Linux 4.4 |
| @@ -113,56 +113,71 @@ Libv4l device control functions · 112 unmodified lines | |||
| 113 | 113 | ||
| 114 | The common file operation methods are provided by libv4l. | 114 | The common file operation methods are provided by libv4l. |
| 115 | 115 | ||
| 116 | Those functions operate just like glibc | 116 | Those functions operate just like the gcc function ``dup()`` and |
| 117 | open/close/dup/ioctl/read/mmap/munmap: | 117 | V4L2 functions |
| 118 | :c:func:`open() <v4l2-open>`, :c:func:`close() <v4l2-close>`, | ||
| 119 | :c:func:`ioctl() <v4l2-ioctl>`, :c:func:`read() <v4l2-read>`, | ||
| 120 | :c:func:`mmap() <v4l2-mmap>` and :c:func:`munmap() <v4l2-munmap>`: | ||
| 118 | 121 | ||
| 119 | - :c:type:`int v4l2_open(const char *file, int oflag, ...)` - operates like the | 122 | .. c:function:: int v4l2_open(const char *file, int oflag, ...) |
| 120 | standard :ref:`open() <func-open>` function. | ||
| 121 | 123 | ||
| 122 | - :c:type:`int v4l2_close(int fd)` - operates like the standard | 124 | operates like the :c:func:`open() <v4l2-open>` function. |
| 123 | :ref:`close() <func-close>` function. | ||
| 124 | 125 | ||
| 125 | - :c:type:`int v4l2_dup(int fd)` - operates like the standard dup() function, | 126 | .. c:function:: int v4l2_close(int fd) |
| 126 | duplicating a file handler. | ||
| 127 | 127 | ||
| 128 | - :c:type:`int v4l2_ioctl (int fd, unsigned long int request, ...)` - operates | 128 | operates like the :c:func:`close() <v4l2-close>` function. |
| 129 | like the standard :ref:`ioctl() <func-ioctl>` function. | ||
| 130 | 129 | ||
| 131 | - :c:type:`int v4l2_read (int fd, void* buffer, size_t n)` - operates like the | 130 | .. c:function:: int v4l2_dup(int fd) |
| 132 | standard :ref:`read() <func-read>` function. | ||
| 133 | 131 | ||
| 134 | - :c:type:`void v4l2_mmap(void *start, size_t length, int prot, int flags, int | 132 | operates like the libc ``dup()`` function, duplicating a file handler. |
| 135 | fd, int64_t offset);` - operates like the standard | ||
| 136 | :ref:`mmap() <func-mmap>` function. | ||
| 137 | 133 | ||
| 138 | - :c:type:`int v4l2_munmap(void *_start, size_t length);` - operates like the | 134 | .. c:function:: int v4l2_ioctl (int fd, unsigned long int request, ...) |
| 139 | standard :ref:`munmap() <func-munmap>` function. | 135 | |
| 136 | operates like the :c:func:`ioctl() <v4l2-ioctl>` function. | ||
| 137 | |||
| 138 | .. c:function:: int v4l2_read (int fd, void* buffer, size_t n) | ||
| 139 | |||
| 140 | operates like the :c:func:`read() <v4l2-read>` function. | ||
| 141 | |||
| 142 | .. c:function:: void v4l2_mmap(void *start, size_t length, int prot, int flags, int fd, int64_t offset); | ||
| 143 | |||
| 144 | operates like the :c:func:`munmap() <v4l2-munmap>` function. | ||
| 145 | |||
| 146 | .. c:function:: int v4l2_munmap(void *_start, size_t length); | ||
| 147 | |||
| 148 | operates like the :c:func:`munmap() <v4l2-munmap>` function. | ||
| 140 | 149 | ||
| 141 | Those functions provide additional control: | 150 | Those functions provide additional control: |
| 142 | 151 | ||
| 143 | - :c:type:`int v4l2_fd_open(int fd, int v4l2_flags)` - opens an already opened | 152 | .. c:function:: int v4l2_fd_open(int fd, int v4l2_flags) |
| 144 | fd for further use through v4l2lib and possibly modify libv4l2's | 153 | |
| 145 | default behavior through the v4l2_flags argument. Currently, | 154 | opens an already opened fd for further use through v4l2lib and possibly |
| 146 | v4l2_flags can be ``V4L2_DISABLE_CONVERSION``, to disable format | 155 | modify libv4l2's default behavior through the ``v4l2_flags`` argument. |
| 147 | conversion. | 156 | Currently, ``v4l2_flags`` can be ``V4L2_DISABLE_CONVERSION``, to disable |
| 157 | format conversion. | ||
| 148 | 158 | ||
| 149 | - :c:type:`int v4l2_set_control(int fd, int cid, int value)` - This function | 159 | .. c:function:: int v4l2_set_control(int fd, int cid, int value) |
| 150 | takes a value of 0 - 65535, and then scales that range to the actual | 160 | |
| 151 | range of the given v4l control id, and then if the cid exists and is | 161 | This function takes a value of 0 - 65535, and then scales that range to the |
| 162 | actual range of the given v4l control id, and then if the cid exists and is | ||
| 152 | not locked sets the cid to the scaled value. | 163 | not locked sets the cid to the scaled value. |
| 153 | 164 | ||
| 154 | - :c:type:`int v4l2_get_control(int fd, int cid)` - This function returns a | 165 | .. c:function:: int v4l2_get_control(int fd, int cid) |
| 155 | value of 0 - 65535, scaled to from the actual range of the given v4l | 166 | |
| 156 | control id. when the cid does not exist, could not be accessed for | 167 | This function returns a value of 0 - 65535, scaled to from the actual range |
| 157 | some reason, or some error occurred 0 is returned. | 168 | of the given v4l control id. when the cid does not exist, could not be |
| 169 | accessed for some reason, or some error occurred 0 is returned. | ||
| 158 | 170 | ||
| 159 | 171 | ||
| 160 | v4l1compat.so wrapper library | 172 | v4l1compat.so wrapper library |
| 161 | ============================= | 173 | ============================= |
| 162 | 174 | ||
| 163 | This library intercepts calls to open/close/ioctl/mmap/mmunmap | 175 | This library intercepts calls to |
| 176 | :c:func:`open() <v4l2-open>`, :c:func:`close() <v4l2-close>`, | ||
| 177 | :c:func:`ioctl() <v4l2-ioctl>`, :c:func:`mmap() <v4l2-mmap>` and | ||
| 178 | :c:func:`munmap() <v4l2-munmap>` | ||
| 164 | operations and redirects them to the libv4l counterparts, by using | 179 | operations and redirects them to the libv4l counterparts, by using |
| 165 | LD_PRELOAD=/usr/lib/v4l1compat.so. It also emulates V4L1 calls via V4L2 | 180 | ``LD_PRELOAD=/usr/lib/v4l1compat.so``. It also emulates V4L1 calls via V4L2 |
| 166 | API. | 181 | API. |
| 167 | 182 | ||
| 168 | It allows usage of binary legacy applications that still don't use | 183 | It allows usage of binary legacy applications that still don't use |
| @@ -8,7 +8,7 @@ Streaming I/O (Memory Mapping) · 7 unmodified lines | |||
| 8 | 8 | ||
| 9 | Input and output devices support this I/O method when the | 9 | Input and output devices support this I/O method when the |
| 10 | ``V4L2_CAP_STREAMING`` flag in the ``capabilities`` field of struct | 10 | ``V4L2_CAP_STREAMING`` flag in the ``capabilities`` field of struct |
| 11 | :ref:`v4l2_capability <v4l2-capability>` returned by the | 11 | :c:type:`v4l2_capability` returned by the |
| 12 | :ref:`VIDIOC_QUERYCAP` ioctl is set. There are two | 12 | :ref:`VIDIOC_QUERYCAP` ioctl is set. There are two |
| 13 | streaming methods, to determine if the memory mapping flavor is | 13 | streaming methods, to determine if the memory mapping flavor is |
| 14 | supported applications must call the :ref:`VIDIOC_REQBUFS` ioctl | 14 | supported applications must call the :ref:`VIDIOC_REQBUFS` ioctl |
| @@ -39,10 +39,10 @@ address space with the :ref:`mmap() <func-mmap>` function. The · 24 unmodified lines | |||
| 39 | location of the buffers in device memory can be determined with the | 39 | location of the buffers in device memory can be determined with the |
| 40 | :ref:`VIDIOC_QUERYBUF` ioctl. In the single-planar | 40 | :ref:`VIDIOC_QUERYBUF` ioctl. In the single-planar |
| 41 | API case, the ``m.offset`` and ``length`` returned in a struct | 41 | API case, the ``m.offset`` and ``length`` returned in a struct |
| 42 | :ref:`v4l2_buffer <v4l2-buffer>` are passed as sixth and second | 42 | :c:type:`v4l2_buffer` are passed as sixth and second |
| 43 | parameter to the :ref:`mmap() <func-mmap>` function. When using the | 43 | parameter to the :ref:`mmap() <func-mmap>` function. When using the |
| 44 | multi-planar API, struct :ref:`v4l2_buffer <v4l2-buffer>` contains an | 44 | multi-planar API, struct :c:type:`v4l2_buffer` contains an |
| 45 | array of struct :ref:`v4l2_plane <v4l2-plane>` structures, each | 45 | array of struct :c:type:`v4l2_plane` structures, each |
| 46 | containing its own ``m.offset`` and ``length``. When using the | 46 | containing its own ``m.offset`` and ``length``. When using the |
| 47 | multi-planar API, every plane of every buffer has to be mapped | 47 | multi-planar API, every plane of every buffer has to be mapped |
| 48 | separately, so the number of calls to :ref:`mmap() <func-mmap>` should | 48 | separately, so the number of calls to :ref:`mmap() <func-mmap>` should |
| @@ -218,7 +218,7 @@ to function, apart of this no limit exists on the number of buffers · 169 unmodified lines | |||
| 218 | applications can enqueue in advance, or dequeue and process. They can | 218 | applications can enqueue in advance, or dequeue and process. They can |
| 219 | also enqueue in a different order than buffers have been dequeued, and | 219 | also enqueue in a different order than buffers have been dequeued, and |
| 220 | the driver can *fill* enqueued *empty* buffers in any order. [#f2]_ The | 220 | the driver can *fill* enqueued *empty* buffers in any order. [#f2]_ The |
| 221 | index number of a buffer (struct :ref:`v4l2_buffer <v4l2-buffer>` | 221 | index number of a buffer (struct :c:type:`v4l2_buffer` |
| 222 | ``index``) plays no role here, it only identifies the buffer. | 222 | ``index``) plays no role here, it only identifies the buffer. |
| 223 | 223 | ||
| 224 | Initially all mapped buffers are in dequeued state, inaccessible by the | 224 | Initially all mapped buffers are in dequeued state, inaccessible by the |
| @@ -251,7 +251,7 @@ To start and stop capturing or output applications call the · 26 unmodified lines | |||
| 251 | removes all buffers from both queues as a side effect. Since there is | 251 | removes all buffers from both queues as a side effect. Since there is |
| 252 | no notion of doing anything "now" on a multitasking system, if an | 252 | no notion of doing anything "now" on a multitasking system, if an |
| 253 | application needs to synchronize with another event it should examine | 253 | application needs to synchronize with another event it should examine |
| 254 | the struct ::ref:`v4l2_buffer <v4l2-buffer>` ``timestamp`` of captured | 254 | the struct ::c:type:`v4l2_buffer` ``timestamp`` of captured |
| 255 | or outputted buffers. | 255 | or outputted buffers. |
| 256 | 256 | ||
| 257 | Drivers implementing memory mapping I/O must support the | 257 | Drivers implementing memory mapping I/O must support the |
| @@ -4,193 +4,130 @@ · 3 unmodified lines | |||
| 4 | Single-planar format structure | 4 | Single-planar format structure |
| 5 | ****************************** | 5 | ****************************** |
| 6 | 6 | ||
| 7 | .. tabularcolumns:: |p{4.0cm}|p{2.5cm}|p{11.0cm}| | ||
| 7 | 8 | ||
| 8 | .. _v4l2-pix-format: | 9 | .. c:type:: v4l2_pix_format |
| 10 | |||
| 11 | .. cssclass:: longtable | ||
| 9 | 12 | ||
| 10 | .. flat-table:: struct v4l2_pix_format | 13 | .. flat-table:: struct v4l2_pix_format |
| 11 | :header-rows: 0 | 14 | :header-rows: 0 |
| 12 | :stub-columns: 0 | 15 | :stub-columns: 0 |
| 13 | :widths: 1 1 2 | 16 | :widths: 1 1 2 |
| 14 | 17 | ||
| 15 | 18 | * - __u32 | |
| 16 | - .. row 1 | 19 | - ``width`` |
| 17 | 20 | - Image width in pixels. | |
| 18 | - __u32 | 21 | * - __u32 |
| 19 | 22 | - ``height`` | |
| 20 | - ``width`` | 23 | - Image height in pixels. If ``field`` is one of ``V4L2_FIELD_TOP``, |
| 21 | 24 | ``V4L2_FIELD_BOTTOM`` or ``V4L2_FIELD_ALTERNATE`` then height | |
| 22 | - Image width in pixels. | 25 | refers to the number of lines in the field, otherwise it refers to |
| 23 | 26 | the number of lines in the frame (which is twice the field height | |
| 24 | - .. row 2 | 27 | for interlaced formats). |
| 25 | 28 | * - :cspan:`2` Applications set these fields to request an image | |
| 26 | - __u32 | 29 | size, drivers return the closest possible values. In case of |
| 27 | 30 | planar formats the ``width`` and ``height`` applies to the largest | |
| 28 | - ``height`` | 31 | plane. To avoid ambiguities drivers must return values rounded up |
| 29 | 32 | to a multiple of the scale factor of any smaller planes. For | |
| 30 | - Image height in pixels. If ``field`` is one of ``V4L2_FIELD_TOP``, | 33 | example when the image format is YUV 4:2:0, ``width`` and |
| 31 | ``V4L2_FIELD_BOTTOM`` or ``V4L2_FIELD_ALTERNATE`` then height | 34 | ``height`` must be multiples of two. |
| 32 | refers to the number of lines in the field, otherwise it refers to | 35 | * - __u32 |
| 33 | the number of lines in the frame (which is twice the field height | 36 | - ``pixelformat`` |
| 34 | for interlaced formats). | 37 | - The pixel format or type of compression, set by the application. |
| 35 | 38 | This is a little endian | |
| 36 | - .. row 3 | 39 | :ref:`four character code <v4l2-fourcc>`. V4L2 defines standard |
| 37 | 40 | RGB formats in :ref:`rgb-formats`, YUV formats in | |
| 38 | - :cspan:`2` Applications set these fields to request an image | 41 | :ref:`yuv-formats`, and reserved codes in |
| 39 | size, drivers return the closest possible values. In case of | 42 | :ref:`reserved-formats` |
| 40 | planar formats the ``width`` and ``height`` applies to the largest | 43 | * - enum :c:type::`v4l2_field` |
| 41 | plane. To avoid ambiguities drivers must return values rounded up | 44 | - ``field`` |
| 42 | to a multiple of the scale factor of any smaller planes. For | 45 | - Video images are typically interlaced. Applications can request to |
| 43 | example when the image format is YUV 4:2:0, ``width`` and | 46 | capture or output only the top or bottom field, or both fields |
| 44 | ``height`` must be multiples of two. | 47 | interlaced or sequentially stored in one buffer or alternating in |
| 45 | 48 | separate buffers. Drivers return the actual field order selected. | |
| 46 | - .. row 4 | 49 | For more details on fields see :ref:`field-order`. |
| 47 | 50 | * - __u32 | |
| 48 | - __u32 | 51 | - ``bytesperline`` |
| 49 | 52 | - Distance in bytes between the leftmost pixels in two adjacent | |
| 50 | - ``pixelformat`` | 53 | lines. |
| 51 | 54 | * - :cspan:`2` | |
| 52 | - The pixel format or type of compression, set by the application. | 55 | |
| 53 | This is a little endian | 56 | Both applications and drivers can set this field to request |
| 54 | :ref:`four character code <v4l2-fourcc>`. V4L2 defines standard | 57 | padding bytes at the end of each line. Drivers however may ignore |
| 55 | RGB formats in :ref:`rgb-formats`, YUV formats in | 58 | the value requested by the application, returning ``width`` times |
| 56 | :ref:`yuv-formats`, and reserved codes in | 59 | bytes per pixel or a larger value required by the hardware. That |
| 57 | :ref:`reserved-formats` | 60 | implies applications can just set this field to zero to get a |
| 58 | 61 | reasonable default. | |
| 59 | - .. row 5 | 62 | |
| 60 | 63 | Video hardware may access padding bytes, therefore they must | |
| 61 | - enum :ref:`v4l2_field <v4l2-field>` | 64 | reside in accessible memory. Consider cases where padding bytes |
| 62 | 65 | after the last line of an image cross a system page boundary. | |
| 63 | - ``field`` | 66 | Input devices may write padding bytes, the value is undefined. |
| 64 | 67 | Output devices ignore the contents of padding bytes. | |
| 65 | - Video images are typically interlaced. Applications can request to | 68 | |
| 66 | capture or output only the top or bottom field, or both fields | 69 | When the image format is planar the ``bytesperline`` value applies |
| 67 | interlaced or sequentially stored in one buffer or alternating in | 70 | to the first plane and is divided by the same factor as the |
| 68 | separate buffers. Drivers return the actual field order selected. | 71 | ``width`` field for the other planes. For example the Cb and Cr |
| 69 | For more details on fields see :ref:`field-order`. | 72 | planes of a YUV 4:2:0 image have half as many padding bytes |
| 70 | 73 | following each line as the Y plane. To avoid ambiguities drivers | |
| 71 | - .. row 6 | 74 | must return a ``bytesperline`` value rounded up to a multiple of |
| 72 | 75 | the scale factor. | |
| 73 | - __u32 | 76 | |
| 74 | 77 | For compressed formats the ``bytesperline`` value makes no sense. | |
| 75 | - ``bytesperline`` | 78 | Applications and drivers must set this to 0 in that case. |
| 76 | 79 | * - __u32 | |
| 77 | - Distance in bytes between the leftmost pixels in two adjacent | 80 | - ``sizeimage`` |
| 78 | lines. | 81 | - Size in bytes of the buffer to hold a complete image, set by the |
| 79 | 82 | driver. Usually this is ``bytesperline`` times ``height``. When | |
| 80 | - .. row 7 | 83 | the image consists of variable length compressed data this is the |
| 81 | 84 | maximum number of bytes required to hold an image. | |
| 82 | - :cspan:`2` | 85 | * - enum :c:type:`v4l2_colorspace` |
| 83 | 86 | - ``colorspace`` | |
| 84 | Both applications and drivers can set this field to request | 87 | - This information supplements the ``pixelformat`` and must be set |
| 85 | padding bytes at the end of each line. Drivers however may ignore | 88 | by the driver for capture streams and by the application for |
| 86 | the value requested by the application, returning ``width`` times | 89 | output streams, see :ref:`colorspaces`. |
| 87 | bytes per pixel or a larger value required by the hardware. That | 90 | * - __u32 |
| 88 | implies applications can just set this field to zero to get a | 91 | - ``priv`` |
| 89 | reasonable default. | 92 | - This field indicates whether the remaining fields of the |
| 90 | 93 | struct :c:type:`v4l2_pix_format`, also called the | |
| 91 | Video hardware may access padding bytes, therefore they must | 94 | extended fields, are valid. When set to |
| 92 | reside in accessible memory. Consider cases where padding bytes | 95 | ``V4L2_PIX_FMT_PRIV_MAGIC``, it indicates that the extended fields |
| 93 | after the last line of an image cross a system page boundary. | 96 | have been correctly initialized. When set to any other value it |
| 94 | Input devices may write padding bytes, the value is undefined. | 97 | indicates that the extended fields contain undefined values. |
| 95 | Output devices ignore the contents of padding bytes. | 98 | |
| 96 | 99 | Applications that wish to use the pixel format extended fields | |
| 97 | When the image format is planar the ``bytesperline`` value applies | 100 | must first ensure that the feature is supported by querying the |
| 98 | to the first plane and is divided by the same factor as the | 101 | device for the :ref:`V4L2_CAP_EXT_PIX_FORMAT <querycap>` |
| 99 | ``width`` field for the other planes. For example the Cb and Cr | 102 | capability. If the capability isn't set the pixel format extended |
| 100 | planes of a YUV 4:2:0 image have half as many padding bytes | 103 | fields are not supported and using the extended fields will lead |
| 101 | following each line as the Y plane. To avoid ambiguities drivers | 104 | to undefined results. |
| 102 | must return a ``bytesperline`` value rounded up to a multiple of | 105 | |
| 103 | the scale factor. | 106 | To use the extended fields, applications must set the ``priv`` |
| 104 | 107 | field to ``V4L2_PIX_FMT_PRIV_MAGIC``, initialize all the extended | |
| 105 | For compressed formats the ``bytesperline`` value makes no sense. | 108 | fields and zero the unused bytes of the |
| 106 | Applications and drivers must set this to 0 in that case. | 109 | struct :c:type:`v4l2_format` ``raw_data`` field. |
| 107 | 110 | ||
| 108 | - .. row 8 | 111 | When the ``priv`` field isn't set to ``V4L2_PIX_FMT_PRIV_MAGIC`` |
| 109 | 112 | drivers must act as if all the extended fields were set to zero. | |
| 110 | - __u32 | 113 | On return drivers must set the ``priv`` field to |
| 111 | 114 | ``V4L2_PIX_FMT_PRIV_MAGIC`` and all the extended fields to | |
| 112 | - ``sizeimage`` | 115 | applicable values. |
| 113 | 116 | * - __u32 | |
| 114 | - Size in bytes of the buffer to hold a complete image, set by the | 117 | - ``flags`` |
| 115 | driver. Usually this is ``bytesperline`` times ``height``. When | 118 | - Flags set by the application or driver, see :ref:`format-flags`. |
| 116 | the image consists of variable length compressed data this is the | 119 | * - enum :c:type:`v4l2_ycbcr_encoding` |
| 117 | maximum number of bytes required to hold an image. | 120 | - ``ycbcr_enc`` |
| 118 | 121 | - This information supplements the ``colorspace`` and must be set by | |
| 119 | - .. row 9 | 122 | the driver for capture streams and by the application for output |
| 120 | 123 | streams, see :ref:`colorspaces`. | |
| 121 | - enum :ref:`v4l2_colorspace <v4l2-colorspace>` | 124 | * - enum :c:type:`v4l2_quantization` |
| 122 | 125 | - ``quantization`` | |
| 123 | - ``colorspace`` | 126 | - This information supplements the ``colorspace`` and must be set by |
| 124 | 127 | the driver for capture streams and by the application for output | |
| 125 | - This information supplements the ``pixelformat`` and must be set | 128 | streams, see :ref:`colorspaces`. |
| 126 | by the driver for capture streams and by the application for | 129 | * - enum :c:type:`v4l2_xfer_func` |
| 127 | output streams, see :ref:`colorspaces`. | 130 | - ``xfer_func`` |
| 128 | 131 | - This information supplements the ``colorspace`` and must be set by | |
| 129 | - .. row 10 | 132 | the driver for capture streams and by the application for output |
| 130 | 133 | streams, see :ref:`colorspaces`. | |
| 131 | - __u32 | ||
| 132 | |||
| 133 | - ``priv`` | ||
| 134 | |||
| 135 | - This field indicates whether the remaining fields of the | ||
| 136 | :ref:`struct v4l2_pix_format <v4l2-pix-format>` structure, also called the | ||
| 137 | extended fields, are valid. When set to | ||
| 138 | ``V4L2_PIX_FMT_PRIV_MAGIC``, it indicates that the extended fields | ||
| 139 | have been correctly initialized. When set to any other value it | ||
| 140 | indicates that the extended fields contain undefined values. | ||
| 141 | |||
| 142 | Applications that wish to use the pixel format extended fields | ||
| 143 | must first ensure that the feature is supported by querying the | ||
| 144 | device for the :ref:`V4L2_CAP_EXT_PIX_FORMAT <querycap>` | ||
| 145 | capability. If the capability isn't set the pixel format extended | ||
| 146 | fields are not supported and using the extended fields will lead | ||
| 147 | to undefined results. | ||
| 148 | |||
| 149 | To use the extended fields, applications must set the ``priv`` | ||
| 150 | field to ``V4L2_PIX_FMT_PRIV_MAGIC``, initialize all the extended | ||
| 151 | fields and zero the unused bytes of the | ||
| 152 | :ref:`struct v4l2_format <v4l2-format>` ``raw_data`` field. | ||
| 153 | |||
| 154 | When the ``priv`` field isn't set to ``V4L2_PIX_FMT_PRIV_MAGIC`` | ||
| 155 | drivers must act as if all the extended fields were set to zero. | ||
| 156 | On return drivers must set the ``priv`` field to | ||
| 157 | ``V4L2_PIX_FMT_PRIV_MAGIC`` and all the extended fields to | ||
| 158 | applicable values. | ||
| 159 | |||
| 160 | - .. row 11 | ||
| 161 | |||
| 162 | - __u32 | ||
| 163 | |||
| 164 | - ``flags`` | ||
| 165 | |||
| 166 | - Flags set by the application or driver, see :ref:`format-flags`. | ||
| 167 | |||
| 168 | - .. row 12 | ||
| 169 | |||
| 170 | - enum :ref:`v4l2_ycbcr_encoding <v4l2-ycbcr-encoding>` | ||
| 171 | |||
| 172 | - ``ycbcr_enc`` | ||
| 173 | |||
| 174 | - This information supplements the ``colorspace`` and must be set by | ||
| 175 | the driver for capture streams and by the application for output | ||
| 176 | streams, see :ref:`colorspaces`. | ||
| 177 | |||
| 178 | - .. row 13 | ||
| 179 | |||
| 180 | - enum :ref:`v4l2_quantization <v4l2-quantization>` | ||
| 181 | |||
| 182 | - ``quantization`` | ||
| 183 | |||
| 184 | - This information supplements the ``colorspace`` and must be set by | ||
| 185 | the driver for capture streams and by the application for output | ||
| 186 | streams, see :ref:`colorspaces`. | ||
| 187 | |||
| 188 | - .. row 14 | ||
| 189 | |||
| 190 | - enum :ref:`v4l2_xfer_func <v4l2-xfer-func>` | ||
| 191 | |||
| 192 | - ``xfer_func`` | ||
| 193 | |||
| 194 | - This information supplements the ``colorspace`` and must be set by | ||
| 195 | the driver for capture streams and by the application for output | ||
| 196 | streams, see :ref:`colorspaces`. | ||
| @@ -4,163 +4,91 @@ · 3 unmodified lines | |||
| 4 | Multi-planar format structures | 4 | Multi-planar format structures |
| 5 | ****************************** | 5 | ****************************** |
| 6 | 6 | ||
| 7 | The :ref:`struct v4l2_plane_pix_format <v4l2-plane-pix-format>` structures define size | 7 | The struct :c:type:`v4l2_plane_pix_format` structures define size |
| 8 | and layout for each of the planes in a multi-planar format. The | 8 | and layout for each of the planes in a multi-planar format. The |
| 9 | :ref:`struct v4l2_pix_format_mplane <v4l2-pix-format-mplane>` structure contains | 9 | struct :c:type:`v4l2_pix_format_mplane` structure contains |
| 10 | information common to all planes (such as image width and height) and an | 10 | information common to all planes (such as image width and height) and an |
| 11 | array of :ref:`struct v4l2_plane_pix_format <v4l2-plane-pix-format>` structures, | 11 | array of struct :c:type:`v4l2_plane_pix_format` structures, |
| 12 | describing all planes of that format. | 12 | describing all planes of that format. |
| 13 | 13 | ||
| 14 | 14 | ||
| 15 | .. _v4l2-plane-pix-format: | 15 | .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| |
| 16 | |||
| 17 | .. c:type:: v4l2_plane_pix_format | ||
| 16 | 18 | ||
| 17 | .. flat-table:: struct v4l2_plane_pix_format | 19 | .. flat-table:: struct v4l2_plane_pix_format |
| 18 | :header-rows: 0 | 20 | :header-rows: 0 |
| 19 | :stub-columns: 0 | 21 | :stub-columns: 0 |
| 20 | :widths: 1 1 2 | 22 | :widths: 1 1 2 |
| 21 | 23 | ||
| 24 | * - __u32 | ||
| 25 | - ``sizeimage`` | ||
| 26 | - Maximum size in bytes required for image data in this plane. | ||
| 27 | * - __u32 | ||
| 28 | - ``bytesperline`` | ||
| 29 | - Distance in bytes between the leftmost pixels in two adjacent | ||
| 30 | lines. See struct :c:type:`v4l2_pix_format`. | ||
| 31 | * - __u16 | ||
| 32 | - ``reserved[6]`` | ||
| 33 | - Reserved for future extensions. Should be zeroed by drivers and | ||
| 34 | applications. | ||
| 22 | 35 | ||
| 23 | - .. row 1 | ||
| 24 | |||
| 25 | - __u32 | ||
| 26 | |||
| 27 | - ``sizeimage`` | ||
| 28 | |||
| 29 | - Maximum size in bytes required for image data in this plane. | ||
| 30 | |||
| 31 | - .. row 2 | ||
| 32 | |||
| 33 | - __u32 | ||
| 34 | |||
| 35 | - ``bytesperline`` | ||
| 36 | |||
| 37 | - Distance in bytes between the leftmost pixels in two adjacent | ||
| 38 | lines. See struct :ref:`v4l2_pix_format <v4l2-pix-format>`. | ||
| 39 | 36 | ||
| 40 | - .. row 3 | 37 | .. tabularcolumns:: |p{4.4cm}|p{5.6cm}|p{7.5cm}| |
| 41 | 38 | ||
| 42 | - __u16 | 39 | .. c:type:: v4l2_pix_format_mplane |
| 43 | |||
| 44 | - ``reserved[6]`` | ||
| 45 | |||
| 46 | - Reserved for future extensions. Should be zeroed by drivers and | ||
| 47 | applications. | ||
| 48 | |||
| 49 | |||
| 50 | |||
| 51 | .. _v4l2-pix-format-mplane: | ||
| 52 | 40 | ||
| 53 | .. flat-table:: struct v4l2_pix_format_mplane | 41 | .. flat-table:: struct v4l2_pix_format_mplane |
| 54 | :header-rows: 0 | 42 | :header-rows: 0 |
| 55 | :stub-columns: 0 | 43 | :stub-columns: 0 |
| 56 | :widths: 1 1 2 | 44 | :widths: 1 1 2 |
| 57 | 45 | ||
| 58 | 46 | * - __u32 | |
| 59 | - .. row 1 | 47 | - ``width`` |
| 60 | 48 | - Image width in pixels. See struct | |
| 61 | - __u32 | 49 | :c:type:`v4l2_pix_format`. |
| 62 | 50 | * - __u32 | |
| 63 | - ``width`` | 51 | - ``height`` |
| 64 | 52 | - Image height in pixels. See struct | |
| 65 | - Image width in pixels. See struct | 53 | :c:type:`v4l2_pix_format`. |
| 66 | :ref:`v4l2_pix_format <v4l2-pix-format>`. | 54 | * - __u32 |
| 67 | 55 | - ``pixelformat`` | |
| 68 | - .. row 2 | 56 | - The pixel format. Both single- and multi-planar four character |
| 69 | 57 | codes can be used. | |
| 70 | - __u32 | 58 | * - enum :c:type:`v4l2_field` |
| 71 | 59 | - ``field`` | |
| 72 | - ``height`` | 60 | - See struct :c:type:`v4l2_pix_format`. |
| 73 | 61 | * - enum :c:type:`v4l2_colorspace` | |
| 74 | - Image height in pixels. See struct | 62 | - ``colorspace`` |
| 75 | :ref:`v4l2_pix_format <v4l2-pix-format>`. | 63 | - See struct :c:type:`v4l2_pix_format`. |
| 76 | 64 | * - struct :c:type:`v4l2_plane_pix_format` | |
| 77 | - .. row 3 | 65 | - ``plane_fmt[VIDEO_MAX_PLANES]`` |
| 78 | 66 | - An array of structures describing format of each plane this pixel | |
| 79 | - __u32 | 67 | format consists of. The number of valid entries in this array has |
| 80 | 68 | to be put in the ``num_planes`` field. | |
| 81 | - ``pixelformat`` | 69 | * - __u8 |
| 82 | 70 | - ``num_planes`` | |
| 83 | - The pixel format. Both single- and multi-planar four character | 71 | - Number of planes (i.e. separate memory buffers) for this format |
| 84 | codes can be used. | 72 | and the number of valid entries in the ``plane_fmt`` array. |
| 85 | 73 | * - __u8 | |
| 86 | - .. row 4 | 74 | - ``flags`` |
| 87 | 75 | - Flags set by the application or driver, see :ref:`format-flags`. | |
| 88 | - enum :ref:`v4l2_field <v4l2-field>` | 76 | * - enum :c:type:`v4l2_ycbcr_encoding` |
| 89 | 77 | - ``ycbcr_enc`` | |
| 90 | - ``field`` | 78 | - This information supplements the ``colorspace`` and must be set by |
| 91 | 79 | the driver for capture streams and by the application for output | |
| 92 | - See struct :ref:`v4l2_pix_format <v4l2-pix-format>`. | 80 | streams, see :ref:`colorspaces`. |
| 93 | 81 | * - enum :c:type:`v4l2_quantization` | |
| 94 | - .. row 5 | 82 | - ``quantization`` |
| 95 | 83 | - This information supplements the ``colorspace`` and must be set by | |
| 96 | - enum :ref:`v4l2_colorspace <v4l2-colorspace>` | 84 | the driver for capture streams and by the application for output |
| 97 | 85 | streams, see :ref:`colorspaces`. | |
| 98 | - ``colorspace`` | 86 | * - enum :c:type:`v4l2_xfer_func` |
| 99 | 87 | - ``xfer_func`` | |
| 100 | - See struct :ref:`v4l2_pix_format <v4l2-pix-format>`. | 88 | - This information supplements the ``colorspace`` and must be set by |
| 101 | 89 | the driver for capture streams and by the application for output | |
| 102 | - .. row 6 | 90 | streams, see :ref:`colorspaces`. |
| 103 | 91 | * - __u8 | |
| 104 | - struct :ref:`v4l2_plane_pix_format <v4l2-plane-pix-format>` | 92 | - ``reserved[7]`` |
| 105 | 93 | - Reserved for future extensions. Should be zeroed by drivers and | |
| 106 | - ``plane_fmt[VIDEO_MAX_PLANES]`` | 94 | applications. |
| 107 | |||
| 108 | - An array of structures describing format of each plane this pixel | ||
| 109 | format consists of. The number of valid entries in this array has | ||
| 110 | to be put in the ``num_planes`` field. | ||
| 111 | |||
| 112 | - .. row 7 | ||
| 113 | |||
| 114 | - __u8 | ||
| 115 | |||
| 116 | - ``num_planes`` | ||
| 117 | |||
| 118 | - Number of planes (i.e. separate memory buffers) for this format | ||
| 119 | and the number of valid entries in the ``plane_fmt`` array. | ||
| 120 | |||
| 121 | - .. row 8 | ||
| 122 | |||
| 123 | - __u8 | ||
| 124 | |||
| 125 | - ``flags`` | ||
| 126 | |||
| 127 | - Flags set by the application or driver, see :ref:`format-flags`. | ||
| 128 | |||
| 129 | - .. row 9 | ||
| 130 | |||
| 131 | - enum :ref:`v4l2_ycbcr_encoding <v4l2-ycbcr-encoding>` | ||
| 132 | |||
| 133 | - ``ycbcr_enc`` | ||
| 134 | |||
| 135 | - This information supplements the ``colorspace`` and must be set by | ||
| 136 | the driver for capture streams and by the application for output | ||
| 137 | streams, see :ref:`colorspaces`. | ||
| 138 | |||
| 139 | - .. row 10 | ||
| 140 | |||
| 141 | - enum :ref:`v4l2_quantization <v4l2-quantization>` | ||
| 142 | |||
| 143 | - ``quantization`` | ||
| 144 | |||
| 145 | - This information supplements the ``colorspace`` and must be set by | ||
| 146 | the driver for capture streams and by the application for output | ||
| 147 | streams, see :ref:`colorspaces`. | ||
| 148 | |||
| 149 | - .. row 11 | ||
| 150 | |||
| 151 | - enum :ref:`v4l2_xfer_func <v4l2-xfer-func>` | ||
| 152 | |||
| 153 | - ``xfer_func`` | ||
| 154 | |||
| 155 | - This information supplements the ``colorspace`` and must be set by | ||
| 156 | the driver for capture streams and by the application for output | ||
| 157 | streams, see :ref:`colorspaces`. | ||
| 158 | |||
| 159 | - .. row 12 | ||
| 160 | |||
| 161 | - __u8 | ||
| 162 | |||
| 163 | - ``reserved[7]`` | ||
| 164 | |||
| 165 | - Reserved for future extensions. Should be zeroed by drivers and | ||
| 166 | applications. | ||
| @@ -5,284 +5,145 @@ Defining Colorspaces in V4L2 · 4 unmodified lines | |||
| 5 | **************************** | 5 | **************************** |
| 6 | 6 | ||
| 7 | In V4L2 colorspaces are defined by four values. The first is the | 7 | In V4L2 colorspaces are defined by four values. The first is the |
| 8 | colorspace identifier (enum :ref:`v4l2_colorspace <v4l2-colorspace>`) | 8 | colorspace identifier (enum :c:type:`v4l2_colorspace`) |
| 9 | which defines the chromaticities, the default transfer function, the | 9 | which defines the chromaticities, the default transfer function, the |
| 10 | default Y'CbCr encoding and the default quantization method. The second | 10 | default Y'CbCr encoding and the default quantization method. The second |
| 11 | is the transfer function identifier (enum | 11 | is the transfer function identifier (enum |
| 12 | :ref:`v4l2_xfer_func <v4l2-xfer-func>`) to specify non-standard | 12 | :c:type:`v4l2_xfer_func`) to specify non-standard |
| 13 | transfer functions. The third is the Y'CbCr encoding identifier (enum | 13 | transfer functions. The third is the Y'CbCr encoding identifier (enum |
| 14 | :ref:`v4l2_ycbcr_encoding <v4l2-ycbcr-encoding>`) to specify | 14 | :c:type:`v4l2_ycbcr_encoding`) to specify |
| 15 | non-standard Y'CbCr encodings and the fourth is the quantization | 15 | non-standard Y'CbCr encodings and the fourth is the quantization |
| 16 | identifier (enum :ref:`v4l2_quantization <v4l2-quantization>`) to | 16 | identifier (enum :c:type:`v4l2_quantization`) to |
| 17 | specify non-standard quantization methods. Most of the time only the | 17 | specify non-standard quantization methods. Most of the time only the |
| 18 | colorspace field of struct :ref:`v4l2_pix_format <v4l2-pix-format>` | 18 | colorspace field of struct :c:type:`v4l2_pix_format` |
| 19 | or struct :ref:`v4l2_pix_format_mplane <v4l2-pix-format-mplane>` | 19 | or struct :c:type:`v4l2_pix_format_mplane` |
| 20 | needs to be filled in. | 20 | needs to be filled in. |
| 21 | 21 | ||
| 22 | .. note:: The default R'G'B' quantization is full range for all | 22 | .. note:: |
| 23 | |||
| 24 | The default R'G'B' quantization is full range for all | ||
| 23 | colorspaces except for BT.2020 which uses limited range R'G'B' | 25 | colorspaces except for BT.2020 which uses limited range R'G'B' |
| 24 | quantization. | 26 | quantization. |
| 25 | 27 | ||
| 28 | .. tabularcolumns:: |p{6.0cm}|p{11.5cm}| | ||
| 26 | 29 | ||
| 27 | .. _v4l2-colorspace: | 30 | .. c:type:: v4l2_colorspace |
| 28 | 31 | ||
| 29 | .. flat-table:: V4L2 Colorspaces | 32 | .. flat-table:: V4L2 Colorspaces |
| 30 | :header-rows: 1 | 33 | :header-rows: 1 |
| 31 | :stub-columns: 0 | 34 | :stub-columns: 0 |
| 32 | 35 | ||
| 33 | 36 | * - Identifier | |
| 34 | - .. row 1 | 37 | - Details |
| 35 | 38 | * - ``V4L2_COLORSPACE_DEFAULT`` | |
| 36 | - Identifier | 39 | - The default colorspace. This can be used by applications to let |
| 37 | 40 | the driver fill in the colorspace. | |
| 38 | - Details | 41 | * - ``V4L2_COLORSPACE_SMPTE170M`` |
| 39 | 42 | - See :ref:`col-smpte-170m`. | |
| 40 | - .. row 2 | 43 | * - ``V4L2_COLORSPACE_REC709`` |
| 41 | 44 | - See :ref:`col-rec709`. | |
| 42 | - ``V4L2_COLORSPACE_DEFAULT`` | 45 | * - ``V4L2_COLORSPACE_SRGB`` |
| 43 | 46 | - See :ref:`col-srgb`. | |
| 44 | - The default colorspace. This can be used by applications to let | 47 | * - ``V4L2_COLORSPACE_ADOBERGB`` |
| 45 | the driver fill in the colorspace. | 48 | - See :ref:`col-adobergb`. |
| 46 | 49 | * - ``V4L2_COLORSPACE_BT2020`` | |
| 47 | - .. row 3 | 50 | - See :ref:`col-bt2020`. |
| 48 | 51 | * - ``V4L2_COLORSPACE_DCI_P3`` | |
| 49 | - ``V4L2_COLORSPACE_SMPTE170M`` | 52 | - See :ref:`col-dcip3`. |
| 50 | 53 | * - ``V4L2_COLORSPACE_SMPTE240M`` | |
| 51 | - See :ref:`col-smpte-170m`. | 54 | - See :ref:`col-smpte-240m`. |
| 52 | 55 | * - ``V4L2_COLORSPACE_470_SYSTEM_M`` | |
| 53 | - .. row 4 | 56 | - See :ref:`col-sysm`. |
| 54 | 57 | * - ``V4L2_COLORSPACE_470_SYSTEM_BG`` | |
| 55 | - ``V4L2_COLORSPACE_REC709`` | 58 | - See :ref:`col-sysbg`. |
| 56 | 59 | * - ``V4L2_COLORSPACE_JPEG`` | |
| 57 | - See :ref:`col-rec709`. | 60 | - See :ref:`col-jpeg`. |
| 58 | 61 | * - ``V4L2_COLORSPACE_RAW`` | |
| 59 | - .. row 5 | 62 | - The raw colorspace. This is used for raw image capture where the |
| 60 | 63 | image is minimally processed and is using the internal colorspace | |
| 61 | - ``V4L2_COLORSPACE_SRGB`` | 64 | of the device. The software that processes an image using this |
| 62 | 65 | 'colorspace' will have to know the internals of the capture | |
| 63 | - See :ref:`col-srgb`. | 66 | device. |
| 64 | 67 | ||
| 65 | - .. row 6 | 68 | |
| 66 | 69 | ||
| 67 | - ``V4L2_COLORSPACE_ADOBERGB`` | 70 | .. c:type:: v4l2_xfer_func |
| 68 | |||
| 69 | - See :ref:`col-adobergb`. | ||
| 70 | |||
| 71 | - .. row 7 | ||
| 72 | |||
| 73 | - ``V4L2_COLORSPACE_BT2020`` | ||
| 74 | |||
| 75 | - See :ref:`col-bt2020`. | ||
| 76 | |||
| 77 | - .. row 8 | ||
| 78 | |||
| 79 | - ``V4L2_COLORSPACE_DCI_P3`` | ||
| 80 | |||
| 81 | - See :ref:`col-dcip3`. | ||
| 82 | |||
| 83 | - .. row 9 | ||
| 84 | |||
| 85 | - ``V4L2_COLORSPACE_SMPTE240M`` | ||
| 86 | |||
| 87 | - See :ref:`col-smpte-240m`. | ||
| 88 | |||
| 89 | - .. row 10 | ||
| 90 | |||
| 91 | - ``V4L2_COLORSPACE_470_SYSTEM_M`` | ||
| 92 | |||
| 93 | - See :ref:`col-sysm`. | ||
| 94 | |||
| 95 | - .. row 11 | ||
| 96 | |||
| 97 | - ``V4L2_COLORSPACE_470_SYSTEM_BG`` | ||
| 98 | |||
| 99 | - See :ref:`col-sysbg`. | ||
| 100 | |||
| 101 | - .. row 12 | ||
| 102 | |||
| 103 | - ``V4L2_COLORSPACE_JPEG`` | ||
| 104 | |||
| 105 | - See :ref:`col-jpeg`. | ||
| 106 | |||
| 107 | - .. row 13 | ||
| 108 | |||
| 109 | - ``V4L2_COLORSPACE_RAW`` | ||
| 110 | |||
| 111 | - The raw colorspace. This is used for raw image capture where the | ||
| 112 | image is minimally processed and is using the internal colorspace | ||
| 113 | of the device. The software that processes an image using this | ||
| 114 | 'colorspace' will have to know the internals of the capture | ||
| 115 | device. | ||
| 116 | |||
| 117 | |||
| 118 | |||
| 119 | .. _v4l2-xfer-func: | ||
| 120 | 71 | ||
| 121 | .. flat-table:: V4L2 Transfer Function | 72 | .. flat-table:: V4L2 Transfer Function |
| 122 | :header-rows: 1 | 73 | :header-rows: 1 |
| 123 | :stub-columns: 0 | 74 | :stub-columns: 0 |
| 124 | 75 | ||
| 76 | * - Identifier | ||
| 77 | - Details | ||
| 78 | * - ``V4L2_XFER_FUNC_DEFAULT`` | ||
| 79 | - Use the default transfer function as defined by the colorspace. | ||
| 80 | * - ``V4L2_XFER_FUNC_709`` | ||
| 81 | - Use the Rec. 709 transfer function. | ||
| 82 | * - ``V4L2_XFER_FUNC_SRGB`` | ||
| 83 | - Use the sRGB transfer function. | ||
| 84 | * - ``V4L2_XFER_FUNC_ADOBERGB`` | ||
| 85 | - Use the AdobeRGB transfer function. | ||
| 86 | * - ``V4L2_XFER_FUNC_SMPTE240M`` | ||
| 87 | - Use the SMPTE 240M transfer function. | ||
| 88 | * - ``V4L2_XFER_FUNC_NONE`` | ||
| 89 | - Do not use a transfer function (i.e. use linear RGB values). | ||
| 90 | * - ``V4L2_XFER_FUNC_DCI_P3`` | ||
| 91 | - Use the DCI-P3 transfer function. | ||
| 92 | * - ``V4L2_XFER_FUNC_SMPTE2084`` | ||
| 93 | - Use the SMPTE 2084 transfer function. | ||
| 125 | 94 | ||
| 126 | - .. row 1 | ||
| 127 | |||
| 128 | - Identifier | ||
| 129 | |||
| 130 | - Details | ||
| 131 | |||
| 132 | - .. row 2 | ||
| 133 | |||
| 134 | - ``V4L2_XFER_FUNC_DEFAULT`` | ||
| 135 | |||
| 136 | - Use the default transfer function as defined by the colorspace. | ||
| 137 | |||
| 138 | - .. row 3 | ||
| 139 | |||
| 140 | - ``V4L2_XFER_FUNC_709`` | ||
| 141 | |||
| 142 | - Use the Rec. 709 transfer function. | ||
| 143 | |||
| 144 | - .. row 4 | ||
| 145 | |||
| 146 | - ``V4L2_XFER_FUNC_SRGB`` | ||
| 147 | |||
| 148 | - Use the sRGB transfer function. | ||
| 149 | |||
| 150 | - .. row 5 | ||
| 151 | 95 | ||
| 152 | - ``V4L2_XFER_FUNC_ADOBERGB`` | ||
| 153 | 96 | ||
| 154 | - Use the AdobeRGB transfer function. | 97 | .. c:type:: v4l2_ycbcr_encoding |
| 155 | 98 | ||
| 156 | - .. row 6 | 99 | .. tabularcolumns:: |p{6.5cm}|p{11.0cm}| |
| 157 | |||
| 158 | - ``V4L2_XFER_FUNC_SMPTE240M`` | ||
| 159 | |||
| 160 | - Use the SMPTE 240M transfer function. | ||
| 161 | |||
| 162 | - .. row 7 | ||
| 163 | |||
| 164 | - ``V4L2_XFER_FUNC_NONE`` | ||
| 165 | |||
| 166 | - Do not use a transfer function (i.e. use linear RGB values). | ||
| 167 | |||
| 168 | - .. row 8 | ||
| 169 | |||
| 170 | - ``V4L2_XFER_FUNC_DCI_P3`` | ||
| 171 | |||
| 172 | - Use the DCI-P3 transfer function. | ||
| 173 | |||
| 174 | - .. row 9 | ||
| 175 | |||
| 176 | - ``V4L2_XFER_FUNC_SMPTE2084`` | ||
| 177 | |||
| 178 | - Use the SMPTE 2084 transfer function. | ||
| 179 | |||
| 180 | |||
| 181 | |||
| 182 | .. _v4l2-ycbcr-encoding: | ||
| 183 | 100 | ||
| 184 | .. flat-table:: V4L2 Y'CbCr Encodings | 101 | .. flat-table:: V4L2 Y'CbCr Encodings |
| 185 | :header-rows: 1 | 102 | :header-rows: 1 |
| 186 | :stub-columns: 0 | 103 | :stub-columns: 0 |
| 187 | 104 | ||
| 105 | * - Identifier | ||
| 106 | - Details | ||
| 107 | * - ``V4L2_YCBCR_ENC_DEFAULT`` | ||
| 108 | - Use the default Y'CbCr encoding as defined by the colorspace. | ||
| 109 | * - ``V4L2_YCBCR_ENC_601`` | ||
| 110 | - Use the BT.601 Y'CbCr encoding. | ||
| 111 | * - ``V4L2_YCBCR_ENC_709`` | ||
| 112 | - Use the Rec. 709 Y'CbCr encoding. | ||
| 113 | * - ``V4L2_YCBCR_ENC_XV601`` | ||
| 114 | - Use the extended gamut xvYCC BT.601 encoding. | ||
| 115 | * - ``V4L2_YCBCR_ENC_XV709`` | ||
| 116 | - Use the extended gamut xvYCC Rec. 709 encoding. | ||
| 117 | * - ``V4L2_YCBCR_ENC_BT2020`` | ||
| 118 | - Use the default non-constant luminance BT.2020 Y'CbCr encoding. | ||
| 119 | * - ``V4L2_YCBCR_ENC_BT2020_CONST_LUM`` | ||
| 120 | - Use the constant luminance BT.2020 Yc'CbcCrc encoding. | ||
| 121 | * - ``V4L2_YCBCR_ENC_SMPTE_240M`` | ||
| 122 | - Use the SMPTE 240M Y'CbCr encoding. | ||
| 188 | 123 | ||
| 189 | - .. row 1 | ||
| 190 | |||
| 191 | - Identifier | ||
| 192 | |||
| 193 | - Details | ||
| 194 | |||
| 195 | - .. row 2 | ||
| 196 | |||
| 197 | - ``V4L2_YCBCR_ENC_DEFAULT`` | ||
| 198 | |||
| 199 | - Use the default Y'CbCr encoding as defined by the colorspace. | ||
| 200 | |||
| 201 | - .. row 3 | ||
| 202 | |||
| 203 | - ``V4L2_YCBCR_ENC_601`` | ||
| 204 | |||
| 205 | - Use the BT.601 Y'CbCr encoding. | ||
| 206 | |||
| 207 | - .. row 4 | ||
| 208 | |||
| 209 | - ``V4L2_YCBCR_ENC_709`` | ||
| 210 | |||
| 211 | - Use the Rec. 709 Y'CbCr encoding. | ||
| 212 | |||
| 213 | - .. row 5 | ||
| 214 | |||
| 215 | - ``V4L2_YCBCR_ENC_XV601`` | ||
| 216 | |||
| 217 | - Use the extended gamut xvYCC BT.601 encoding. | ||
| 218 | 124 | ||
| 219 | - .. row 6 | ||
| 220 | 125 | ||
| 221 | - ``V4L2_YCBCR_ENC_XV709`` | 126 | .. c:type:: v4l2_quantization |
| 222 | 127 | ||
| 223 | - Use the extended gamut xvYCC Rec. 709 encoding. | 128 | .. tabularcolumns:: |p{6.5cm}|p{11.0cm}| |
| 224 | |||
| 225 | - .. row 7 | ||
| 226 | |||
| 227 | - ``V4L2_YCBCR_ENC_SYCC`` | ||
| 228 | |||
| 229 | - Use the extended gamut sYCC encoding. | ||
| 230 | |||
| 231 | - .. row 8 | ||
| 232 | |||
| 233 | - ``V4L2_YCBCR_ENC_BT2020`` | ||
| 234 | |||
| 235 | - Use the default non-constant luminance BT.2020 Y'CbCr encoding. | ||
| 236 | |||
| 237 | - .. row 9 | ||
| 238 | |||
| 239 | - ``V4L2_YCBCR_ENC_BT2020_CONST_LUM`` | ||
| 240 | |||
| 241 | - Use the constant luminance BT.2020 Yc'CbcCrc encoding. | ||
| 242 | |||
| 243 | - .. row 10 | ||
| 244 | |||
| 245 | - ``V4L2_YCBCR_ENC_SMPTE_240M`` | ||
| 246 | |||
| 247 | - Use the SMPTE 240M Y'CbCr encoding. | ||
| 248 | |||
| 249 | |||
| 250 | |||
| 251 | .. _v4l2-quantization: | ||
| 252 | 129 | ||
| 253 | .. flat-table:: V4L2 Quantization Methods | 130 | .. flat-table:: V4L2 Quantization Methods |
| 254 | :header-rows: 1 | 131 | :header-rows: 1 |
| 255 | :stub-columns: 0 | 132 | :stub-columns: 0 |
| 256 | 133 | ||
| 257 | 134 | * - Identifier | |
| 258 | - .. row 1 | 135 | - Details |
| 259 | 136 | * - ``V4L2_QUANTIZATION_DEFAULT`` | |
| 260 | - Identifier | 137 | - Use the default quantization encoding as defined by the |
| 261 | 138 | colorspace. This is always full range for R'G'B' (except for the | |
| 262 | - Details | 139 | BT.2020 colorspace) and usually limited range for Y'CbCr. |
| 263 | 140 | * - ``V4L2_QUANTIZATION_FULL_RANGE`` | |
| 264 | - .. row 2 | 141 | - Use the full range quantization encoding. I.e. the range [0…1] is |
| 265 | 142 | mapped to [0…255] (with possible clipping to [1…254] to avoid the | |
| 266 | - ``V4L2_QUANTIZATION_DEFAULT`` | 143 | 0x00 and 0xff values). Cb and Cr are mapped from [-0.5…0.5] to |
| 267 | 144 | [0…255] (with possible clipping to [1…254] to avoid the 0x00 and | |
| 268 | - Use the default quantization encoding as defined by the | 145 | 0xff values). |
| 269 | colorspace. This is always full range for R'G'B' (except for the | 146 | * - ``V4L2_QUANTIZATION_LIM_RANGE`` |
| 270 | BT.2020 colorspace) and usually limited range for Y'CbCr. | 147 | - Use the limited range quantization encoding. I.e. the range [0…1] |
| 271 | 148 | is mapped to [16…235]. Cb and Cr are mapped from [-0.5…0.5] to | |
| 272 | - .. row 3 | 149 | [16…240]. |
| 273 | |||
| 274 | - ``V4L2_QUANTIZATION_FULL_RANGE`` | ||
| 275 | |||
| 276 | - Use the full range quantization encoding. I.e. the range [0…1] is | ||
| 277 | mapped to [0…255] (with possible clipping to [1…254] to avoid the | ||
| 278 | 0x00 and 0xff values). Cb and Cr are mapped from [-0.5…0.5] to | ||
| 279 | [0…255] (with possible clipping to [1…254] to avoid the 0x00 and | ||
| 280 | 0xff values). | ||
| 281 | |||
| 282 | - .. row 4 | ||
| 283 | |||
| 284 | - ``V4L2_QUANTIZATION_LIM_RANGE`` | ||
| 285 | |||
| 286 | - Use the limited range quantization encoding. I.e. the range [0…1] | ||
| 287 | is mapped to [16…235]. Cb and Cr are mapped from [-0.5…0.5] to | ||
| 288 | [16…240]. | ||
| @@ -19,51 +19,28 @@ are: · 18 unmodified lines | |||
| 19 | 19 | ||
| 20 | 20 | ||
| 21 | 21 | ||
| 22 | .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| | ||
| 23 | |||
| 22 | .. flat-table:: SMPTE 170M Chromaticities | 24 | .. flat-table:: SMPTE 170M Chromaticities |
| 23 | :header-rows: 1 | 25 | :header-rows: 1 |
| 24 | :stub-columns: 0 | 26 | :stub-columns: 0 |
| 25 | :widths: 1 1 2 | 27 | :widths: 1 1 2 |
| 26 | 28 | ||
| 27 | 29 | * - Color | |
| 28 | - .. row 1 | 30 | - x |
| 29 | 31 | - y | |
| 30 | - Color | 32 | * - Red |
| 31 | 33 | - 0.630 | |
| 32 | - x | 34 | - 0.340 |
| 33 | 35 | * - Green | |
| 34 | - y | 36 | - 0.310 |
| 35 | 37 | - 0.595 | |
| 36 | - .. row 2 | 38 | * - Blue |
| 37 | 39 | - 0.155 | |
| 38 | - Red | 40 | - 0.070 |
| 39 | 41 | * - White Reference (D65) | |
| 40 | - 0.630 | 42 | - 0.3127 |
| 41 | 43 | - 0.3290 | |
| 42 | - 0.340 | ||
| 43 | |||
| 44 | - .. row 3 | ||
| 45 | |||
| 46 | - Green | ||
| 47 | |||
| 48 | - 0.310 | ||
| 49 | |||
| 50 | - 0.595 | ||
| 51 | |||
| 52 | - .. row 4 | ||
| 53 | |||
| 54 | - Blue | ||
| 55 | |||
| 56 | - 0.155 | ||
| 57 | |||
| 58 | - 0.070 | ||
| 59 | |||
| 60 | - .. row 5 | ||
| 61 | |||
| 62 | - White Reference (D65) | ||
| 63 | |||
| 64 | - 0.3127 | ||
| 65 | |||
| 66 | - 0.3290 | ||
| 67 | 44 | ||
| 68 | 45 | ||
| 69 | The red, green and blue chromaticities are also often referred to as the | 46 | The red, green and blue chromaticities are also often referred to as the |
| @@ -72,28 +49,34 @@ SMPTE C set, so this colorspace is sometimes called SMPTE C as well. · 2 unmodified lines | |||
| 72 | The transfer function defined for SMPTE 170M is the same as the one | 49 | The transfer function defined for SMPTE 170M is the same as the one |
| 73 | defined in Rec. 709. | 50 | defined in Rec. 709. |
| 74 | 51 | ||
| 75 | L' = -1.099(-L) :sup:`0.45` + 0.099 for L ≤ -0.018 | 52 | .. math:: |
| 53 | |||
| 54 | L' = -1.099(-L)^{0.45} + 0.099 \text{, for } L \le-0.018 | ||
| 76 | 55 | ||
| 77 | L' = 4.5L for -0.018 < L < 0.018 | 56 | L' = 4.5L \text{, for } -0.018 < L < 0.018 |
| 78 | 57 | ||
| 79 | L' = 1.099L :sup:`0.45` - 0.099 for L ≥ 0.018 | 58 | L' = 1.099L^{0.45} - 0.099 \text{, for } L \ge 0.018 |
| 80 | 59 | ||
| 81 | Inverse Transfer function: | 60 | Inverse Transfer function: |
| 82 | 61 | ||
| 83 | L = -((L' - 0.099) / -1.099) :sup:`1/0.45` for L' ≤ -0.081 | 62 | .. math:: |
| 84 | 63 | ||
| 85 | L = L' / 4.5 for -0.081 < L' < 0.081 | 64 | L = -\left( \frac{L' - 0.099}{-1.099} \right) ^{\frac{1}{0.45}} \text{, for } L' \le -0.081 |
| 86 | 65 | ||
| 87 | L = ((L' + 0.099) / 1.099) :sup:`1/0.45` for L' ≥ 0.081 | 66 | L = \frac{L'}{4.5} \text{, for } -0.081 < L' < 0.081 |
| 67 | |||
| 68 | L = \left(\frac{L' + 0.099}{1.099}\right)^{\frac{1}{0.45} } \text{, for } L' \ge 0.081 | ||
| 88 | 69 | ||
| 89 | The luminance (Y') and color difference (Cb and Cr) are obtained with | 70 | The luminance (Y') and color difference (Cb and Cr) are obtained with |
| 90 | the following ``V4L2_YCBCR_ENC_601`` encoding: | 71 | the following ``V4L2_YCBCR_ENC_601`` encoding: |
| 91 | 72 | ||
| 92 | Y' = 0.299R' + 0.587G' + 0.114B' | 73 | .. math:: |
| 93 | 74 | ||
| 94 | Cb = -0.169R' - 0.331G' + 0.5B' | 75 | Y' = 0.2990R' + 0.5870G' + 0.1140B' |
| 95 | 76 | ||
| 96 | Cr = 0.5R' - 0.419G' - 0.081B' | 77 | Cb = -0.1687R' - 0.3313G' + 0.5B' |
| 78 | |||
| 79 | Cr = 0.5R' - 0.4187G' - 0.0813B' | ||
| 97 | 80 | ||
| 98 | Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range | 81 | Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range |
| 99 | [-0.5…0.5]. This conversion to Y'CbCr is identical to the one defined in | 82 | [-0.5…0.5]. This conversion to Y'CbCr is identical to the one defined in |
| @@ -117,51 +100,28 @@ and the white reference are: · 17 unmodified lines | |||
| 117 | 100 | ||
| 118 | 101 | ||
| 119 | 102 | ||
| 103 | .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| | ||
| 104 | |||
| 120 | .. flat-table:: Rec. 709 Chromaticities | 105 | .. flat-table:: Rec. 709 Chromaticities |
| 121 | :header-rows: 1 | 106 | :header-rows: 1 |
| 122 | :stub-columns: 0 | 107 | :stub-columns: 0 |
| 123 | :widths: 1 1 2 | 108 | :widths: 1 1 2 |
| 124 | 109 | ||
| 125 | 110 | * - Color | |
| 126 | - .. row 1 | 111 | - x |
| 127 | 112 | - y | |
| 128 | - Color | 113 | * - Red |
| 129 | 114 | - 0.640 | |
| 130 | - x | 115 | - 0.330 |
| 131 | 116 | * - Green | |
| 132 | - y | 117 | - 0.300 |
| 133 | 118 | - 0.600 | |
| 134 | - .. row 2 | 119 | * - Blue |
| 135 | 120 | - 0.150 | |
| 136 | - Red | 121 | - 0.060 |
| 137 | 122 | * - White Reference (D65) | |
| 138 | - 0.640 | 123 | - 0.3127 |
| 139 | 124 | - 0.3290 | |
| 140 | - 0.330 | ||
| 141 | |||
| 142 | - .. row 3 | ||
| 143 | |||
| 144 | - Green | ||
| 145 | |||
| 146 | - 0.300 | ||
| 147 | |||
| 148 | - 0.600 | ||
| 149 | |||
| 150 | - .. row 4 | ||
| 151 | |||
| 152 | - Blue | ||
| 153 | |||
| 154 | - 0.150 | ||
| 155 | |||
| 156 | - 0.060 | ||
| 157 | |||
| 158 | - .. row 5 | ||
| 159 | |||
| 160 | - White Reference (D65) | ||
| 161 | |||
| 162 | - 0.3127 | ||
| 163 | |||
| 164 | - 0.3290 | ||
| 165 | 125 | ||
| 166 | 126 | ||
| 167 | The full name of this standard is Rec. ITU-R BT.709-5. | 127 | The full name of this standard is Rec. ITU-R BT.709-5. |
| @@ -169,23 +129,29 @@ The full name of this standard is Rec. ITU-R BT.709-5. · 1 unmodified line | |||
| 169 | Transfer function. Normally L is in the range [0…1], but for the | 129 | Transfer function. Normally L is in the range [0…1], but for the |
| 170 | extended gamut xvYCC encoding values outside that range are allowed. | 130 | extended gamut xvYCC encoding values outside that range are allowed. |
| 171 | 131 | ||
| 172 | L' = -1.099(-L) :sup:`0.45` + 0.099 for L ≤ -0.018 | 132 | .. math:: |
| 133 | |||
| 134 | L' = -1.099(-L)^{0.45} + 0.099 \text{, for } L \le -0.018 | ||
| 173 | 135 | ||
| 174 | L' = 4.5L for -0.018 < L < 0.018 | 136 | L' = 4.5L \text{, for } -0.018 < L < 0.018 |
| 175 | 137 | ||
| 176 | L' = 1.099L :sup:`0.45` - 0.099 for L ≥ 0.018 | 138 | L' = 1.099L^{0.45} - 0.099 \text{, for } L \ge 0.018 |
| 177 | 139 | ||
| 178 | Inverse Transfer function: | 140 | Inverse Transfer function: |
| 179 | 141 | ||
| 180 | L = -((L' - 0.099) / -1.099) :sup:`1/0.45` for L' ≤ -0.081 | 142 | .. math:: |
| 181 | 143 | ||
| 182 | L = L' / 4.5 for -0.081 < L' < 0.081 | 144 | L = -\left( \frac{L' - 0.099}{-1.099} \right)^\frac{1}{0.45} \text{, for } L' \le -0.081 |
| 183 | 145 | ||
| 184 | L = ((L' + 0.099) / 1.099) :sup:`1/0.45` for L' ≥ 0.081 | 146 | L = \frac{L'}{4.5}\text{, for } -0.081 < L' < 0.081 |
| 147 | |||
| 148 | L = \left(\frac{L' + 0.099}{1.099}\right)^{\frac{1}{0.45} } \text{, for } L' \ge 0.081 | ||
| 185 | 149 | ||
| 186 | The luminance (Y') and color difference (Cb and Cr) are obtained with | 150 | The luminance (Y') and color difference (Cb and Cr) are obtained with |
| 187 | the following ``V4L2_YCBCR_ENC_709`` encoding: | 151 | the following ``V4L2_YCBCR_ENC_709`` encoding: |
| 188 | 152 | ||
| 153 | .. math:: | ||
| 154 | |||
| 189 | Y' = 0.2126R' + 0.7152G' + 0.0722B' | 155 | Y' = 0.2126R' + 0.7152G' + 0.0722B' |
| 190 | 156 | ||
| 191 | Cb = -0.1146R' - 0.3854G' + 0.5B' | 157 | Cb = -0.1146R' - 0.3854G' + 0.5B' |
| @@ -210,22 +176,26 @@ similar to the Rec. 709 encoding, but it allows for R', G' and B' values · 18 unmodified lines | |||
| 210 | that are outside the range [0…1]. The resulting Y', Cb and Cr values are | 176 | that are outside the range [0…1]. The resulting Y', Cb and Cr values are |
| 211 | scaled and offset: | 177 | scaled and offset: |
| 212 | 178 | ||
| 213 | Y' = (219 / 256) * (0.2126R' + 0.7152G' + 0.0722B') + (16 / 256) | 179 | .. math:: |
| 214 | 180 | ||
| 215 | Cb = (224 / 256) * (-0.1146R' - 0.3854G' + 0.5B') | 181 | Y' = \frac{219}{256} * (0.2126R' + 0.7152G' + 0.0722B') + \frac{16}{256} |
| 216 | 182 | ||
| 217 | Cr = (224 / 256) * (0.5R' - 0.4542G' - 0.0458B') | 183 | Cb = \frac{224}{256} * (-0.1146R' - 0.3854G' + 0.5B') |
| 184 | |||
| 185 | Cr = \frac{224}{256} * (0.5R' - 0.4542G' - 0.0458B') | ||
| 218 | 186 | ||
| 219 | The xvYCC 601 encoding (``V4L2_YCBCR_ENC_XV601``, :ref:`xvycc`) is | 187 | The xvYCC 601 encoding (``V4L2_YCBCR_ENC_XV601``, :ref:`xvycc`) is |
| 220 | similar to the BT.601 encoding, but it allows for R', G' and B' values | 188 | similar to the BT.601 encoding, but it allows for R', G' and B' values |
| 221 | that are outside the range [0…1]. The resulting Y', Cb and Cr values are | 189 | that are outside the range [0…1]. The resulting Y', Cb and Cr values are |
| 222 | scaled and offset: | 190 | scaled and offset: |
| 223 | 191 | ||
| 224 | Y' = (219 / 256) * (0.299R' + 0.587G' + 0.114B') + (16 / 256) | 192 | .. math:: |
| 193 | |||
| 194 | Y' = \frac{219}{256} * (0.2990R' + 0.5870G' + 0.1140B') + \frac{16}{256} | ||
| 225 | 195 | ||
| 226 | Cb = (224 / 256) * (-0.169R' - 0.331G' + 0.5B') | 196 | Cb = \frac{224}{256} * (-0.1687R' - 0.3313G' + 0.5B') |
| 227 | 197 | ||
| 228 | Cr = (224 / 256) * (0.5R' - 0.419G' - 0.081B') | 198 | Cr = \frac{224}{256} * (0.5R' - 0.4187G' - 0.0813B') |
| 229 | 199 | ||
| 230 | Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range | 200 | Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range |
| 231 | [-0.5…0.5]. The non-standard xvYCC 709 or xvYCC 601 encodings can be | 201 | [-0.5…0.5]. The non-standard xvYCC 709 or xvYCC 601 encodings can be |
| @@ -241,56 +211,33 @@ Colorspace sRGB (V4L2_COLORSPACE_SRGB) · 9 unmodified lines | |||
| 241 | The :ref:`srgb` standard defines the colorspace used by most webcams | 211 | The :ref:`srgb` standard defines the colorspace used by most webcams |
| 242 | and computer graphics. The default transfer function is | 212 | and computer graphics. The default transfer function is |
| 243 | ``V4L2_XFER_FUNC_SRGB``. The default Y'CbCr encoding is | 213 | ``V4L2_XFER_FUNC_SRGB``. The default Y'CbCr encoding is |
| 244 | ``V4L2_YCBCR_ENC_SYCC``. The default Y'CbCr quantization is full range. | 214 | ``V4L2_YCBCR_ENC_601``. The default Y'CbCr quantization is full range. |
| 245 | The chromaticities of the primary colors and the white reference are: | 215 | The chromaticities of the primary colors and the white reference are: |
| 246 | 216 | ||
| 247 | 217 | ||
| 248 | 218 | ||
| 219 | .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| | ||
| 220 | |||
| 249 | .. flat-table:: sRGB Chromaticities | 221 | .. flat-table:: sRGB Chromaticities |
| 250 | :header-rows: 1 | 222 | :header-rows: 1 |
| 251 | :stub-columns: 0 | 223 | :stub-columns: 0 |
| 252 | :widths: 1 1 2 | 224 | :widths: 1 1 2 |
| 253 | 225 | ||
| 254 | 226 | * - Color | |
| 255 | - .. row 1 | 227 | - x |
| 256 | 228 | - y | |
| 257 | - Color | 229 | * - Red |
| 258 | 230 | - 0.640 | |
| 259 | - x | 231 | - 0.330 |
| 260 | 232 | * - Green | |
| 261 | - y | 233 | - 0.300 |
| 262 | 234 | - 0.600 | |
| 263 | - .. row 2 | 235 | * - Blue |
| 264 | 236 | - 0.150 | |
| 265 | - Red | 237 | - 0.060 |
| 266 | 238 | * - White Reference (D65) | |
| 267 | - 0.640 | 239 | - 0.3127 |
| 268 | 240 | - 0.3290 | |
| 269 | - 0.330 | ||
| 270 | |||
| 271 | - .. row 3 | ||
| 272 | |||
| 273 | - Green | ||
| 274 | |||
| 275 | - 0.300 | ||
| 276 | |||
| 277 | - 0.600 | ||
| 278 | |||
| 279 | - .. row 4 | ||
| 280 | |||
| 281 | - Blue | ||
| 282 | |||
| 283 | - 0.150 | ||
| 284 | |||
| 285 | - 0.060 | ||
| 286 | |||
| 287 | - .. row 5 | ||
| 288 | |||
| 289 | - White Reference (D65) | ||
| 290 | |||
| 291 | - 0.3127 | ||
| 292 | |||
| 293 | - 0.3290 | ||
| 294 | 241 | ||
| 295 | 242 | ||
| 296 | These chromaticities are identical to the Rec. 709 colorspace. | 243 | These chromaticities are identical to the Rec. 709 colorspace. |
| @@ -298,23 +245,28 @@ These chromaticities are identical to the Rec. 709 colorspace. · 1 unmodified line | |||
| 298 | Transfer function. Note that negative values for L are only used by the | 245 | Transfer function. Note that negative values for L are only used by the |
| 299 | Y'CbCr conversion. | 246 | Y'CbCr conversion. |
| 300 | 247 | ||
| 301 | L' = -1.055(-L) :sup:`1/2.4` + 0.055 for L < -0.0031308 | 248 | .. math:: |
| 302 | 249 | ||
| 303 | L' = 12.92L for -0.0031308 ≤ L ≤ 0.0031308 | 250 | L' = -1.055(-L)^{\frac{1}{2.4} } + 0.055\text{, for }L < -0.0031308 |
| 304 | 251 | ||
| 305 | L' = 1.055L :sup:`1/2.4` - 0.055 for 0.0031308 < L ≤ 1 | 252 | L' = 12.92L\text{, for }-0.0031308 \le L \le 0.0031308 |
| 253 | |||
| 254 | L' = 1.055L ^{\frac{1}{2.4} } - 0.055\text{, for }0.0031308 < L \le 1 | ||
| 306 | 255 | ||
| 307 | Inverse Transfer function: | 256 | Inverse Transfer function: |
| 308 | 257 | ||
| 309 | L = -((-L' + 0.055) / 1.055) :sup:`2.4` for L' < -0.04045 | 258 | .. math:: |
| 259 | |||
| 260 | L = -((-L' + 0.055) / 1.055) ^{2.4}\text{, for }L' < -0.04045 | ||
| 310 | 261 | ||
| 311 | L = L' / 12.92 for -0.04045 ≤ L' ≤ 0.04045 | 262 | L = L' / 12.92\text{, for }-0.04045 \le L' \le 0.04045 |
| 312 | 263 | ||
| 313 | L = ((L' + 0.055) / 1.055) :sup:`2.4` for L' > 0.04045 | 264 | L = ((L' + 0.055) / 1.055) ^{2.4}\text{, for }L' > 0.04045 |
| 314 | 265 | ||
| 315 | The luminance (Y') and color difference (Cb and Cr) are obtained with | 266 | The luminance (Y') and color difference (Cb and Cr) are obtained with |
| 316 | the following ``V4L2_YCBCR_ENC_SYCC`` encoding as defined by | 267 | the following ``V4L2_YCBCR_ENC_601`` encoding as defined by :ref:`sycc`: |
| 317 | :ref:`sycc`: | 268 | |
| 269 | .. math:: | ||
| 318 | 270 | ||
| 319 | Y' = 0.2990R' + 0.5870G' + 0.1140B' | 271 | Y' = 0.2990R' + 0.5870G' + 0.1140B' |
| 320 | 272 | ||
| @@ -323,11 +275,8 @@ the following ``V4L2_YCBCR_ENC_SYCC`` encoding as defined by · 2 unmodified lines | |||
| 323 | Cr = 0.5R' - 0.4187G' - 0.0813B' | 275 | Cr = 0.5R' - 0.4187G' - 0.0813B' |
| 324 | 276 | ||
| 325 | Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range | 277 | Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range |
| 326 | [-0.5…0.5]. The ``V4L2_YCBCR_ENC_SYCC`` quantization is always full | 278 | [-0.5…0.5]. This transform is identical to one defined in SMPTE |
| 327 | range. Although this Y'CbCr encoding looks very similar to the | 279 | 170M/BT.601. The Y'CbCr quantization is full range. |
| 328 | ``V4L2_YCBCR_ENC_XV601`` encoding, it is not. The | ||
| 329 | ``V4L2_YCBCR_ENC_XV601`` scales and offsets the Y'CbCr values before | ||
| 330 | quantization, but this encoding does not do that. | ||
| 331 | 280 | ||
| 332 | 281 | ||
| 333 | .. _col-adobergb: | 282 | .. _col-adobergb: |
| @@ -339,80 +288,63 @@ The :ref:`adobergb` standard defines the colorspace used by computer · 5 unmodified lines | |||
| 339 | graphics that use the AdobeRGB colorspace. This is also known as the | 288 | graphics that use the AdobeRGB colorspace. This is also known as the |
| 340 | :ref:`oprgb` standard. The default transfer function is | 289 | :ref:`oprgb` standard. The default transfer function is |
| 341 | ``V4L2_XFER_FUNC_ADOBERGB``. The default Y'CbCr encoding is | 290 | ``V4L2_XFER_FUNC_ADOBERGB``. The default Y'CbCr encoding is |
| 342 | ``V4L2_YCBCR_ENC_601``. The default Y'CbCr quantization is limited | 291 | ``V4L2_YCBCR_ENC_601``. The default Y'CbCr quantization is full |
| 343 | range. The chromaticities of the primary colors and the white reference | 292 | range. The chromaticities of the primary colors and the white reference |
| 344 | are: | 293 | are: |
| 345 | 294 | ||
| 346 | 295 | ||
| 347 | 296 | ||
| 297 | .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| | ||
| 298 | |||
| 348 | .. flat-table:: Adobe RGB Chromaticities | 299 | .. flat-table:: Adobe RGB Chromaticities |
| 349 | :header-rows: 1 | 300 | :header-rows: 1 |
| 350 | :stub-columns: 0 | 301 | :stub-columns: 0 |
| 351 | :widths: 1 1 2 | 302 | :widths: 1 1 2 |
| 352 | 303 | ||
| 353 | 304 | * - Color | |
| 354 | - .. row 1 | 305 | - x |
| 355 | 306 | - y | |
| 356 | - Color | 307 | * - Red |
| 357 | 308 | - 0.6400 | |
| 358 | - x | 309 | - 0.3300 |
| 359 | 310 | * - Green | |
| 360 | - y | 311 | - 0.2100 |
| 361 | 312 | - 0.7100 | |
| 362 | - .. row 2 | 313 | * - Blue |
| 363 | 314 | - 0.1500 | |
| 364 | - Red | 315 | - 0.0600 |
| 365 | 316 | * - White Reference (D65) | |
| 366 | - 0.6400 | 317 | - 0.3127 |
| 367 | 318 | - 0.3290 | |
| 368 | - 0.3300 | ||
| 369 | |||
| 370 | - .. row 3 | ||
| 371 | |||
| 372 | - Green | ||
| 373 | |||
| 374 | - 0.2100 | ||
| 375 | |||
| 376 | - 0.7100 | ||
| 377 | |||
| 378 | - .. row 4 | ||
| 379 | |||
| 380 | - Blue | ||
| 381 | |||
| 382 | - 0.1500 | ||
| 383 | |||
| 384 | - 0.0600 | ||
| 385 | |||
| 386 | - .. row 5 | ||
| 387 | |||
| 388 | - White Reference (D65) | ||
| 389 | |||
| 390 | - 0.3127 | ||
| 391 | |||
| 392 | - 0.3290 | ||
| 393 | 319 | ||
| 394 | 320 | ||
| 395 | 321 | ||
| 396 | Transfer function: | 322 | Transfer function: |
| 397 | 323 | ||
| 398 | L' = L :sup:`1/2.19921875` | 324 | .. math:: |
| 325 | |||
| 326 | L' = L ^{\frac{1}{2.19921875}} | ||
| 399 | 327 | ||
| 400 | Inverse Transfer function: | 328 | Inverse Transfer function: |
| 401 | 329 | ||
| 402 | L = L' :sup:`2.19921875` | 330 | .. math:: |
| 331 | |||
| 332 | L = L'^{(2.19921875)} | ||
| 403 | 333 | ||
| 404 | The luminance (Y') and color difference (Cb and Cr) are obtained with | 334 | The luminance (Y') and color difference (Cb and Cr) are obtained with |
| 405 | the following ``V4L2_YCBCR_ENC_601`` encoding: | 335 | the following ``V4L2_YCBCR_ENC_601`` encoding: |
| 406 | 336 | ||
| 407 | Y' = 0.299R' + 0.587G' + 0.114B' | 337 | .. math:: |
| 408 | 338 | ||
| 409 | Cb = -0.169R' - 0.331G' + 0.5B' | 339 | Y' = 0.2990R' + 0.5870G' + 0.1140B' |
| 410 | 340 | ||
| 411 | Cr = 0.5R' - 0.419G' - 0.081B' | 341 | Cb = -0.1687R' - 0.3313G' + 0.5B' |
| 342 | |||
| 343 | Cr = 0.5R' - 0.4187G' - 0.0813B' | ||
| 412 | 344 | ||
| 413 | Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range | 345 | Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range |
| 414 | [-0.5…0.5]. This transform is identical to one defined in SMPTE | 346 | [-0.5…0.5]. This transform is identical to one defined in SMPTE |
| 415 | 170M/BT.601. The Y'CbCr quantization is limited range. | 347 | 170M/BT.601. The Y'CbCr quantization is full range. |
| 416 | 348 | ||
| 417 | 349 | ||
| 418 | .. _col-bt2020: | 350 | .. _col-bt2020: |
| @@ -429,69 +361,52 @@ of the primary colors and the white reference are: · 10 unmodified lines | |||
| 429 | 361 | ||
| 430 | 362 | ||
| 431 | 363 | ||
| 364 | .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| | ||
| 365 | |||
| 432 | .. flat-table:: BT.2020 Chromaticities | 366 | .. flat-table:: BT.2020 Chromaticities |
| 433 | :header-rows: 1 | 367 | :header-rows: 1 |
| 434 | :stub-columns: 0 | 368 | :stub-columns: 0 |
| 435 | :widths: 1 1 2 | 369 | :widths: 1 1 2 |
| 436 | 370 | ||
| 437 | 371 | * - Color | |
| 438 | - .. row 1 | 372 | - x |
| 439 | 373 | - y | |
| 440 | - Color | 374 | * - Red |
| 441 | 375 | - 0.708 | |
| 442 | - x | 376 | - 0.292 |
| 443 | 377 | * - Green | |
| 444 | - y | 378 | - 0.170 |
| 445 | 379 | - 0.797 | |
| 446 | - .. row 2 | 380 | * - Blue |
| 447 | 381 | - 0.131 | |
| 448 | - Red | 382 | - 0.046 |
| 449 | 383 | * - White Reference (D65) | |
| 450 | - 0.708 | 384 | - 0.3127 |
| 451 | 385 | - 0.3290 | |
| 452 | - 0.292 | ||
| 453 | |||
| 454 | - .. row 3 | ||
| 455 | |||
| 456 | - Green | ||
| 457 | |||
| 458 | - 0.170 | ||
| 459 | |||
| 460 | - 0.797 | ||
| 461 | |||
| 462 | - .. row 4 | ||
| 463 | |||
| 464 | - Blue | ||
| 465 | |||
| 466 | - 0.131 | ||
| 467 | |||
| 468 | - 0.046 | ||
| 469 | |||
| 470 | - .. row 5 | ||
| 471 | |||
| 472 | - White Reference (D65) | ||
| 473 | |||
| 474 | - 0.3127 | ||
| 475 | |||
| 476 | - 0.3290 | ||
| 477 | 386 | ||
| 478 | 387 | ||
| 479 | 388 | ||
| 480 | Transfer function (same as Rec. 709): | 389 | Transfer function (same as Rec. 709): |
| 481 | 390 | ||
| 482 | L' = 4.5L for 0 ≤ L < 0.018 | 391 | .. math:: |
| 483 | 392 | ||
| 484 | L' = 1.099L :sup:`0.45` - 0.099 for 0.018 ≤ L ≤ 1 | 393 | L' = 4.5L\text{, for }0 \le L < 0.018 |
| 394 | |||
| 395 | L' = 1.099L ^{0.45} - 0.099\text{, for } 0.018 \le L \le 1 | ||
| 485 | 396 | ||
| 486 | Inverse Transfer function: | 397 | Inverse Transfer function: |
| 487 | 398 | ||
| 488 | L = L' / 4.5 for L' < 0.081 | 399 | .. math:: |
| 400 | |||
| 401 | L = L' / 4.5\text{, for } L' < 0.081 | ||
| 489 | 402 | ||
| 490 | L = ((L' + 0.099) / 1.099) :sup:`1/0.45` for L' ≥ 0.081 | 403 | L = \left( \frac{L' + 0.099}{1.099}\right) ^{\frac{1}{0.45} }\text{, for } L' \ge 0.081 |
| 491 | 404 | ||
| 492 | The luminance (Y') and color difference (Cb and Cr) are obtained with | 405 | The luminance (Y') and color difference (Cb and Cr) are obtained with |
| 493 | the following ``V4L2_YCBCR_ENC_BT2020`` encoding: | 406 | the following ``V4L2_YCBCR_ENC_BT2020`` encoding: |
| 494 | 407 | ||
| 408 | .. math:: | ||
| 409 | |||
| 495 | Y' = 0.2627R' + 0.6780G' + 0.0593B' | 410 | Y' = 0.2627R' + 0.6780G' + 0.0593B' |
| 496 | 411 | ||
| 497 | Cb = -0.1396R' - 0.3604G' + 0.5B' | 412 | Cb = -0.1396R' - 0.3604G' + 0.5B' |
| @@ -506,23 +421,20 @@ There is also an alternate constant luminance R'G'B' to Yc'CbcCrc · 8 unmodified lines | |||
| 506 | 421 | ||
| 507 | Luma: | 422 | Luma: |
| 508 | 423 | ||
| 509 | Yc' = (0.2627R + 0.6780G + 0.0593B)' | 424 | .. math:: |
| 510 | 425 | :nowrap: | |
| 511 | B' - Yc' ≤ 0: | 426 | |
| 512 | 427 | \begin{align*} | |
| 513 | Cbc = (B' - Yc') / 1.9404 | 428 | Yc' = (0.2627R + 0.6780G + 0.0593B)'& \\ |
| 514 | 429 | B' - Yc' \le 0:& \\ | |
| 515 | B' - Yc' > 0: | 430 | &Cbc = (B' - Yc') / 1.9404 \\ |
| 516 | 431 | B' - Yc' > 0: & \\ | |
| 517 | Cbc = (B' - Yc') / 1.5816 | 432 | &Cbc = (B' - Yc') / 1.5816 \\ |
| 518 | 433 | R' - Yc' \le 0:& \\ | |
| 519 | R' - Yc' ≤ 0: | 434 | &Crc = (R' - Y') / 1.7184 \\ |
| 520 | 435 | R' - Yc' > 0:& \\ | |
| 521 | Crc = (R' - Y') / 1.7184 | 436 | &Crc = (R' - Y') / 0.9936 |
| 522 | 437 | \end{align*} | |
| 523 | R' - Yc' > 0: | ||
| 524 | |||
| 525 | Crc = (R' - Y') / 0.9936 | ||
| 526 | 438 | ||
| 527 | Yc' is clamped to the range [0…1] and Cbc and Crc are clamped to the | 439 | Yc' is clamped to the range [0…1] and Cbc and Crc are clamped to the |
| 528 | range [-0.5…0.5]. The Yc'CbcCrc quantization is limited range. | 440 | range [-0.5…0.5]. The Yc'CbcCrc quantization is limited range. |
| @@ -536,71 +448,54 @@ Colorspace DCI-P3 (V4L2_COLORSPACE_DCI_P3) · 7 unmodified lines | |||
| 536 | The :ref:`smpte431` standard defines the colorspace used by cinema | 448 | The :ref:`smpte431` standard defines the colorspace used by cinema |
| 537 | projectors that use the DCI-P3 colorspace. The default transfer function | 449 | projectors that use the DCI-P3 colorspace. The default transfer function |
| 538 | is ``V4L2_XFER_FUNC_DCI_P3``. The default Y'CbCr encoding is | 450 | is ``V4L2_XFER_FUNC_DCI_P3``. The default Y'CbCr encoding is |
| 539 | ``V4L2_YCBCR_ENC_709``. | 451 | ``V4L2_YCBCR_ENC_709``. The default Y'CbCr quantization is limited range. |
| 452 | |||
| 453 | .. note:: | ||
| 540 | 454 | ||
| 541 | .. note:: Note that this colorspace does not specify a | 455 | Note that this colorspace standard does not specify a |
| 542 | Y'CbCr encoding since it is not meant to be encoded to Y'CbCr. So this | 456 | Y'CbCr encoding since it is not meant to be encoded to Y'CbCr. So this |
| 543 | default Y'CbCr encoding was picked because it is the HDTV encoding. The | 457 | default Y'CbCr encoding was picked because it is the HDTV encoding. |
| 544 | default Y'CbCr quantization is limited range. The chromaticities of the | 458 | |
| 545 | primary colors and the white reference are: | 459 | The chromaticities of the primary colors and the white reference are: |
| 546 | 460 | ||
| 547 | 461 | ||
| 548 | 462 | ||
| 463 | .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| | ||
| 464 | |||
| 549 | .. flat-table:: DCI-P3 Chromaticities | 465 | .. flat-table:: DCI-P3 Chromaticities |
| 550 | :header-rows: 1 | 466 | :header-rows: 1 |
| 551 | :stub-columns: 0 | 467 | :stub-columns: 0 |
| 552 | :widths: 1 1 2 | 468 | :widths: 1 1 2 |
| 553 | 469 | ||
| 554 | 470 | * - Color | |
| 555 | - .. row 1 | 471 | - x |
| 556 | 472 | - y | |
| 557 | - Color | 473 | * - Red |
| 558 | 474 | - 0.6800 | |
| 559 | - x | 475 | - 0.3200 |
| 560 | 476 | * - Green | |
| 561 | - y | 477 | - 0.2650 |
| 562 | 478 | - 0.6900 | |
| 563 | - .. row 2 | 479 | * - Blue |
| 564 | 480 | - 0.1500 | |
| 565 | - Red | 481 | - 0.0600 |
| 566 | 482 | * - White Reference | |
| 567 | - 0.6800 | 483 | - 0.3140 |
| 568 | 484 | - 0.3510 | |
| 569 | - 0.3200 | ||
| 570 | |||
| 571 | - .. row 3 | ||
| 572 | |||
| 573 | - Green | ||
| 574 | |||
| 575 | - 0.2650 | ||
| 576 | |||
| 577 | - 0.6900 | ||
| 578 | |||
| 579 | - .. row 4 | ||
| 580 | |||
| 581 | - Blue | ||
| 582 | |||
| 583 | - 0.1500 | ||
| 584 | |||
| 585 | - 0.0600 | ||
| 586 | |||
| 587 | - .. row 5 | ||
| 588 | |||
| 589 | - White Reference | ||
| 590 | |||
| 591 | - 0.3140 | ||
| 592 | |||
| 593 | - 0.3510 | ||
| 594 | 485 | ||
| 595 | 486 | ||
| 596 | 487 | ||
| 597 | Transfer function: | 488 | Transfer function: |
| 598 | 489 | ||
| 599 | L' = L :sup:`1/2.6` | 490 | .. math:: |
| 491 | |||
| 492 | L' = L^{\frac{1}{2.6}} | ||
| 600 | 493 | ||
| 601 | Inverse Transfer function: | 494 | Inverse Transfer function: |
| 602 | 495 | ||
| 603 | L = L' :sup:`2.6` | 496 | .. math:: |
| 497 | |||
| 498 | L = L'^{(2.6)} | ||
| 604 | 499 | ||
| 605 | Y'CbCr encoding is not specified. V4L2 defaults to Rec. 709. | 500 | Y'CbCr encoding is not specified. V4L2 defaults to Rec. 709. |
| 606 | 501 | ||
| @@ -619,77 +514,60 @@ and the white reference are: · 12 unmodified lines | |||
| 619 | 514 | ||
| 620 | 515 | ||
| 621 | 516 | ||
| 517 | .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| | ||
| 518 | |||
| 622 | .. flat-table:: SMPTE 240M Chromaticities | 519 | .. flat-table:: SMPTE 240M Chromaticities |
| 623 | :header-rows: 1 | 520 | :header-rows: 1 |
| 624 | :stub-columns: 0 | 521 | :stub-columns: 0 |
| 625 | :widths: 1 1 2 | 522 | :widths: 1 1 2 |
| 626 | 523 | ||
| 627 | 524 | * - Color | |
| 628 | - .. row 1 | 525 | - x |
| 629 | 526 | - y | |
| 630 | - Color | 527 | * - Red |
| 631 | 528 | - 0.630 | |
| 632 | - x | 529 | - 0.340 |
| 633 | 530 | * - Green | |
| 634 | - y | 531 | - 0.310 |
| 635 | 532 | - 0.595 | |
| 636 | - .. row 2 | 533 | * - Blue |
| 637 | 534 | - 0.155 | |
| 638 | - Red | 535 | - 0.070 |
| 639 | 536 | * - White Reference (D65) | |
| 640 | - 0.630 | 537 | - 0.3127 |
| 641 | 538 | - 0.3290 | |
| 642 | - 0.340 | ||
| 643 | |||
| 644 | - .. row 3 | ||
| 645 | |||
| 646 | - Green | ||
| 647 | |||
| 648 | - 0.310 | ||
| 649 | |||
| 650 | - 0.595 | ||
| 651 | |||
| 652 | - .. row 4 | ||
| 653 | |||
| 654 | - Blue | ||
| 655 | |||
| 656 | - 0.155 | ||
| 657 | |||
| 658 | - 0.070 | ||
| 659 | |||
| 660 | - .. row 5 | ||
| 661 | |||
| 662 | - White Reference (D65) | ||
| 663 | |||
| 664 | - 0.3127 | ||
| 665 | |||
| 666 | - 0.3290 | ||
| 667 | 539 | ||
| 668 | 540 | ||
| 669 | These chromaticities are identical to the SMPTE 170M colorspace. | 541 | These chromaticities are identical to the SMPTE 170M colorspace. |
| 670 | 542 | ||
| 671 | Transfer function: | 543 | Transfer function: |
| 672 | 544 | ||
| 673 | L' = 4L for 0 ≤ L < 0.0228 | 545 | .. math:: |
| 674 | 546 | ||
| 675 | L' = 1.1115L :sup:`0.45` - 0.1115 for 0.0228 ≤ L ≤ 1 | 547 | L' = 4L\text{, for } 0 \le L < 0.0228 |
| 548 | |||
| 549 | L' = 1.1115L ^{0.45} - 0.1115\text{, for } 0.0228 \le L \le 1 | ||
| 676 | 550 | ||
| 677 | Inverse Transfer function: | 551 | Inverse Transfer function: |
| 678 | 552 | ||
| 679 | L = L' / 4 for 0 ≤ L' < 0.0913 | 553 | .. math:: |
| 554 | |||
| 555 | L = \frac{L'}{4}\text{, for } 0 \le L' < 0.0913 | ||
| 680 | 556 | ||
| 681 | L = ((L' + 0.1115) / 1.1115) :sup:`1/0.45` for L' ≥ 0.0913 | 557 | L = \left( \frac{L' + 0.1115}{1.1115}\right) ^{\frac{1}{0.45} }\text{, for } L' \ge 0.0913 |
| 682 | 558 | ||
| 683 | The luminance (Y') and color difference (Cb and Cr) are obtained with | 559 | The luminance (Y') and color difference (Cb and Cr) are obtained with |
| 684 | the following ``V4L2_YCBCR_ENC_SMPTE240M`` encoding: | 560 | the following ``V4L2_YCBCR_ENC_SMPTE240M`` encoding: |
| 685 | 561 | ||
| 562 | .. math:: | ||
| 563 | |||
| 686 | Y' = 0.2122R' + 0.7013G' + 0.0865B' | 564 | Y' = 0.2122R' + 0.7013G' + 0.0865B' |
| 687 | 565 | ||
| 688 | Cb = -0.1161R' - 0.3839G' + 0.5B' | 566 | Cb = -0.1161R' - 0.3839G' + 0.5B' |
| 689 | 567 | ||
| 690 | Cr = 0.5R' - 0.4451G' - 0.0549B' | 568 | Cr = 0.5R' - 0.4451G' - 0.0549B' |
| 691 | 569 | ||
| 692 | Yc' is clamped to the range [0…1] and Cbc and Crc are clamped to the | 570 | Y' is clamped to the range [0…1] and Cb and Cr are clamped to the |
| 693 | range [-0.5…0.5]. The Y'CbCr quantization is limited range. | 571 | range [-0.5…0.5]. The Y'CbCr quantization is limited range. |
| 694 | 572 | ||
| 695 | 573 | ||
| @@ -707,54 +585,33 @@ reference are: · 11 unmodified lines | |||
| 707 | 585 | ||
| 708 | 586 | ||
| 709 | 587 | ||
| 588 | .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| | ||
| 589 | |||
| 710 | .. flat-table:: NTSC 1953 Chromaticities | 590 | .. flat-table:: NTSC 1953 Chromaticities |
| 711 | :header-rows: 1 | 591 | :header-rows: 1 |
| 712 | :stub-columns: 0 | 592 | :stub-columns: 0 |
| 713 | :widths: 1 1 2 | 593 | :widths: 1 1 2 |
| 714 | 594 | ||
| 715 | 595 | * - Color | |
| 716 | - .. row 1 | 596 | - x |
| 717 | 597 | - y | |
| 718 | - Color | 598 | * - Red |
| 719 | 599 | - 0.67 | |
| 720 | - x | 600 | - 0.33 |
| 721 | 601 | * - Green | |
| 722 | - y | 602 | - 0.21 |
| 723 | 603 | - 0.71 | |
| 724 | - .. row 2 | 604 | * - Blue |
| 725 | 605 | - 0.14 | |
| 726 | - Red | 606 | - 0.08 |
| 727 | 607 | * - White Reference (C) | |
| 728 | - 0.67 | 608 | - 0.310 |
| 729 | 609 | - 0.316 | |
| 730 | - 0.33 | 610 | |
| 731 | 611 | ||
| 732 | - .. row 3 | 612 | .. note:: |
| 733 | 613 | ||
| 734 | - Green | 614 | This colorspace uses Illuminant C instead of D65 as the white |
| 735 | |||
| 736 | - 0.21 | ||
| 737 | |||
| 738 | - 0.71 | ||
| 739 | |||
| 740 | - .. row 4 | ||
| 741 | |||
| 742 | - Blue | ||
| 743 | |||
| 744 | - 0.14 | ||
| 745 | |||
| 746 | - 0.08 | ||
| 747 | |||
| 748 | - .. row 5 | ||
| 749 | |||
| 750 | - White Reference (C) | ||
| 751 | |||
| 752 | - 0.310 | ||
| 753 | |||
| 754 | - 0.316 | ||
| 755 | |||
| 756 | |||
| 757 | .. note:: This colorspace uses Illuminant C instead of D65 as the white | ||
| 758 | reference. To correctly convert an image in this colorspace to another | 615 | reference. To correctly convert an image in this colorspace to another |
| 759 | that uses D65 you need to apply a chromatic adaptation algorithm such as | 616 | that uses D65 you need to apply a chromatic adaptation algorithm such as |
| 760 | the Bradford method. | 617 | the Bradford method. |
| @@ -762,24 +619,30 @@ reference are: · 1 unmodified line | |||
| 762 | The transfer function was never properly defined for NTSC 1953. The Rec. | 619 | The transfer function was never properly defined for NTSC 1953. The Rec. |
| 763 | 709 transfer function is recommended in the literature: | 620 | 709 transfer function is recommended in the literature: |
| 764 | 621 | ||
| 765 | L' = 4.5L for 0 ≤ L < 0.018 | 622 | .. math:: |
| 623 | |||
| 624 | L' = 4.5L\text{, for } 0 \le L < 0.018 | ||
| 766 | 625 | ||
| 767 | L' = 1.099L :sup:`0.45` - 0.099 for 0.018 ≤ L ≤ 1 | 626 | L' = 1.099L ^{0.45} - 0.099\text{, for } 0.018 \le L \le 1 |
| 768 | 627 | ||
| 769 | Inverse Transfer function: | 628 | Inverse Transfer function: |
| 770 | 629 | ||
| 771 | L = L' / 4.5 for L' < 0.081 | 630 | .. math:: |
| 772 | 631 | ||
| 773 | L = ((L' + 0.099) / 1.099) :sup:`1/0.45` for L' ≥ 0.081 | 632 | L = \frac{L'}{4.5} \text{, for } L' < 0.081 |
| 633 | |||
| 634 | L = \left( \frac{L' + 0.099}{1.099}\right) ^{\frac{1}{0.45} }\text{, for } L' \ge 0.081 | ||
| 774 | 635 | ||
| 775 | The luminance (Y') and color difference (Cb and Cr) are obtained with | 636 | The luminance (Y') and color difference (Cb and Cr) are obtained with |
| 776 | the following ``V4L2_YCBCR_ENC_601`` encoding: | 637 | the following ``V4L2_YCBCR_ENC_601`` encoding: |
| 777 | 638 | ||
| 778 | Y' = 0.299R' + 0.587G' + 0.114B' | 639 | .. math:: |
| 779 | 640 | ||
| 780 | Cb = -0.169R' - 0.331G' + 0.5B' | 641 | Y' = 0.2990R' + 0.5870G' + 0.1140B' |
| 781 | 642 | ||
| 782 | Cr = 0.5R' - 0.419G' - 0.081B' | 643 | Cb = -0.1687R' - 0.3313G' + 0.5B' |
| 644 | |||
| 645 | Cr = 0.5R' - 0.4187G' - 0.0813B' | ||
| 783 | 646 | ||
| 784 | Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range | 647 | Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range |
| 785 | [-0.5…0.5]. The Y'CbCr quantization is limited range. This transform is | 648 | [-0.5…0.5]. The Y'CbCr quantization is limited range. This transform is |
| @@ -801,75 +664,58 @@ are: · 15 unmodified lines | |||
| 801 | 664 | ||
| 802 | 665 | ||
| 803 | 666 | ||
| 667 | .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| | ||
| 668 | |||
| 804 | .. flat-table:: EBU Tech. 3213 Chromaticities | 669 | .. flat-table:: EBU Tech. 3213 Chromaticities |
| 805 | :header-rows: 1 | 670 | :header-rows: 1 |
| 806 | :stub-columns: 0 | 671 | :stub-columns: 0 |
| 807 | :widths: 1 1 2 | 672 | :widths: 1 1 2 |
| 808 | 673 | ||
| 809 | 674 | * - Color | |
| 810 | - .. row 1 | 675 | - x |
| 811 | 676 | - y | |
| 812 | - Color | 677 | * - Red |
| 813 | 678 | - 0.64 | |
| 814 | - x | 679 | - 0.33 |
| 815 | 680 | * - Green | |
| 816 | - y | 681 | - 0.29 |
| 817 | 682 | - 0.60 | |
| 818 | - .. row 2 | 683 | * - Blue |
| 819 | 684 | - 0.15 | |
| 820 | - Red | 685 | - 0.06 |
| 821 | 686 | * - White Reference (D65) | |
| 822 | - 0.64 | 687 | - 0.3127 |
| 823 | 688 | - 0.3290 | |
| 824 | - 0.33 | ||
| 825 | |||
| 826 | - .. row 3 | ||
| 827 | |||
| 828 | - Green | ||
| 829 | |||
| 830 | - 0.29 | ||
| 831 | |||
| 832 | - 0.60 | ||
| 833 | |||
| 834 | - .. row 4 | ||
| 835 | |||
| 836 | - Blue | ||
| 837 | |||
| 838 | - 0.15 | ||
| 839 | |||
| 840 | - 0.06 | ||
| 841 | |||
| 842 | - .. row 5 | ||
| 843 | |||
| 844 | - White Reference (D65) | ||
| 845 | |||
| 846 | - 0.3127 | ||
| 847 | |||
| 848 | - 0.3290 | ||
| 849 | 689 | ||
| 850 | 690 | ||
| 851 | 691 | ||
| 852 | The transfer function was never properly defined for this colorspace. | 692 | The transfer function was never properly defined for this colorspace. |
| 853 | The Rec. 709 transfer function is recommended in the literature: | 693 | The Rec. 709 transfer function is recommended in the literature: |
| 854 | 694 | ||
| 855 | L' = 4.5L for 0 ≤ L < 0.018 | 695 | .. math:: |
| 856 | 696 | ||
| 857 | L' = 1.099L :sup:`0.45` - 0.099 for 0.018 ≤ L ≤ 1 | 697 | L' = 4.5L\text{, for } 0 \le L < 0.018 |
| 698 | |||
| 699 | L' = 1.099L ^{0.45} - 0.099\text{, for } 0.018 \le L \le 1 | ||
| 858 | 700 | ||
| 859 | Inverse Transfer function: | 701 | Inverse Transfer function: |
| 860 | 702 | ||
| 861 | L = L' / 4.5 for L' < 0.081 | 703 | .. math:: |
| 704 | |||
| 705 | L = \frac{L'}{4.5} \text{, for } L' < 0.081 | ||
| 862 | 706 | ||
| 863 | L = ((L' + 0.099) / 1.099) :sup:`1/0.45` for L' ≥ 0.081 | 707 | L = \left(\frac{L' + 0.099}{1.099} \right) ^{\frac{1}{0.45} }\text{, for } L' \ge 0.081 |
| 864 | 708 | ||
| 865 | The luminance (Y') and color difference (Cb and Cr) are obtained with | 709 | The luminance (Y') and color difference (Cb and Cr) are obtained with |
| 866 | the following ``V4L2_YCBCR_ENC_601`` encoding: | 710 | the following ``V4L2_YCBCR_ENC_601`` encoding: |
| 867 | 711 | ||
| 868 | Y' = 0.299R' + 0.587G' + 0.114B' | 712 | .. math:: |
| 869 | 713 | ||
| 870 | Cb = -0.169R' - 0.331G' + 0.5B' | 714 | Y' = 0.2990R' + 0.5870G' + 0.1140B' |
| 871 | 715 | ||
| 872 | Cr = 0.5R' - 0.419G' - 0.081B' | 716 | Cb = -0.1687R' - 0.3313G' + 0.5B' |
| 717 | |||
| 718 | Cr = 0.5R' - 0.4187G' - 0.0813B' | ||
| 873 | 719 | ||
| 874 | Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range | 720 | Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range |
| 875 | [-0.5…0.5]. The Y'CbCr quantization is limited range. This transform is | 721 | [-0.5…0.5]. The Y'CbCr quantization is limited range. This transform is |
| @@ -888,7 +734,9 @@ reference are identical to sRGB. The transfer function use is · 12 unmodified lines | |||
| 888 | with full range quantization where Y' is scaled to [0…255] and Cb/Cr are | 734 | with full range quantization where Y' is scaled to [0…255] and Cb/Cr are |
| 889 | scaled to [-128…128] and then clipped to [-128…127]. | 735 | scaled to [-128…128] and then clipped to [-128…127]. |
| 890 | 736 | ||
| 891 | .. note:: The JPEG standard does not actually store colorspace | 737 | .. note:: |
| 738 | |||
| 739 | The JPEG standard does not actually store colorspace | ||
| 892 | information. So if something other than sRGB is used, then the driver | 740 | information. So if something other than sRGB is used, then the driver |
| 893 | will have to set that information explicitly. Effectively | 741 | will have to set that information explicitly. Effectively |
| 894 | ``V4L2_COLORSPACE_JPEG`` can be considered to be an abbreviation for | 742 | ``V4L2_COLORSPACE_JPEG`` can be considered to be an abbreviation for |
| @@ -7,123 +7,81 @@ Compressed Formats · 6 unmodified lines | |||
| 7 | 7 | ||
| 8 | .. _compressed-formats: | 8 | .. _compressed-formats: |
| 9 | 9 | ||
| 10 | .. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}| | ||
| 11 | |||
| 10 | .. flat-table:: Compressed Image Formats | 12 | .. flat-table:: Compressed Image Formats |
| 11 | :header-rows: 1 | 13 | :header-rows: 1 |
| 12 | :stub-columns: 0 | 14 | :stub-columns: 0 |
| 13 | :widths: 3 1 4 | 15 | :widths: 3 1 4 |
| 14 | 16 | ||
| 15 | 17 | * - Identifier | |
| 16 | - .. row 1 | 18 | - Code |
| 17 | 19 | - Details | |
| 18 | - Identifier | 20 | * .. _V4L2-PIX-FMT-JPEG: |
| 19 | 21 | ||
| 20 | - Code | 22 | - ``V4L2_PIX_FMT_JPEG`` |
| 21 | 23 | - 'JPEG' | |
| 22 | - Details | 24 | - TBD. See also :ref:`VIDIOC_G_JPEGCOMP <VIDIOC_G_JPEGCOMP>`, |
| 23 | 25 | :ref:`VIDIOC_S_JPEGCOMP <VIDIOC_G_JPEGCOMP>`. | |
| 24 | - .. _V4L2-PIX-FMT-JPEG: | 26 | * .. _V4L2-PIX-FMT-MPEG: |
| 25 | 27 | ||
| 26 | - ``V4L2_PIX_FMT_JPEG`` | 28 | - ``V4L2_PIX_FMT_MPEG`` |
| 27 | 29 | - 'MPEG' | |
| 28 | - 'JPEG' | 30 | - MPEG multiplexed stream. The actual format is determined by |
| 29 | 31 | extended control ``V4L2_CID_MPEG_STREAM_TYPE``, see | |
| 30 | - TBD. See also :ref:`VIDIOC_G_JPEGCOMP <VIDIOC_G_JPEGCOMP>`, | 32 | :ref:`mpeg-control-id`. |
| 31 | :ref:`VIDIOC_S_JPEGCOMP <VIDIOC_G_JPEGCOMP>`. | 33 | * .. _V4L2-PIX-FMT-H264: |
| 32 | 34 | ||
| 33 | - .. _V4L2-PIX-FMT-MPEG: | 35 | - ``V4L2_PIX_FMT_H264`` |
| 34 | 36 | - 'H264' | |
| 35 | - ``V4L2_PIX_FMT_MPEG`` | 37 | - H264 video elementary stream with start codes. |
| 36 | 38 | * .. _V4L2-PIX-FMT-H264-NO-SC: | |
| 37 | - 'MPEG' | 39 | |
| 38 | 40 | - ``V4L2_PIX_FMT_H264_NO_SC`` | |
| 39 | - MPEG multiplexed stream. The actual format is determined by | 41 | - 'AVC1' |
| 40 | extended control ``V4L2_CID_MPEG_STREAM_TYPE``, see | 42 | - H264 video elementary stream without start codes. |
| 41 | :ref:`mpeg-control-id`. | 43 | * .. _V4L2-PIX-FMT-H264-MVC: |
| 42 | 44 | ||
| 43 | - .. _V4L2-PIX-FMT-H264: | 45 | - ``V4L2_PIX_FMT_H264_MVC`` |
| 44 | 46 | - 'M264' | |
| 45 | - ``V4L2_PIX_FMT_H264`` | 47 | - H264 MVC video elementary stream. |
| 46 | 48 | * .. _V4L2-PIX-FMT-H263: | |
| 47 | - 'H264' | 49 | |
| 48 | 50 | - ``V4L2_PIX_FMT_H263`` | |
| 49 | - H264 video elementary stream with start codes. | 51 | - 'H263' |
| 50 | 52 | - H263 video elementary stream. | |
| 51 | - .. _V4L2-PIX-FMT-H264-NO-SC: | 53 | * .. _V4L2-PIX-FMT-MPEG1: |
| 52 | 54 | ||
| 53 | - ``V4L2_PIX_FMT_H264_NO_SC`` | 55 | - ``V4L2_PIX_FMT_MPEG1`` |
| 54 | 56 | - 'MPG1' | |
| 55 | - 'AVC1' | 57 | - MPEG1 video elementary stream. |
| 56 | 58 | * .. _V4L2-PIX-FMT-MPEG2: | |
| 57 | - H264 video elementary stream without start codes. | 59 | |
| 58 | 60 | - ``V4L2_PIX_FMT_MPEG2`` | |
| 59 | - .. _V4L2-PIX-FMT-H264-MVC: | 61 | - 'MPG2' |
| 60 | 62 | - MPEG2 video elementary stream. | |
| 61 | - ``V4L2_PIX_FMT_H264_MVC`` | 63 | * .. _V4L2-PIX-FMT-MPEG4: |
| 62 | 64 | ||
| 63 | - 'M264' | 65 | - ``V4L2_PIX_FMT_MPEG4`` |
| 64 | 66 | - 'MPG4' | |
| 65 | - H264 MVC video elementary stream. | 67 | - MPEG4 video elementary stream. |
| 66 | 68 | * .. _V4L2-PIX-FMT-XVID: | |
| 67 | - .. _V4L2-PIX-FMT-H263: | 69 | |
| 68 | 70 | - ``V4L2_PIX_FMT_XVID`` | |
| 69 | - ``V4L2_PIX_FMT_H263`` | 71 | - 'XVID' |
| 70 | 72 | - Xvid video elementary stream. | |
| 71 | - 'H263' | 73 | * .. _V4L2-PIX-FMT-VC1-ANNEX-G: |
| 72 | 74 | ||
| 73 | - H263 video elementary stream. | 75 | - ``V4L2_PIX_FMT_VC1_ANNEX_G`` |
| 74 | 76 | - 'VC1G' | |
| 75 | - .. _V4L2-PIX-FMT-MPEG1: | 77 | - VC1, SMPTE 421M Annex G compliant stream. |
| 76 | 78 | * .. _V4L2-PIX-FMT-VC1-ANNEX-L: | |
| 77 | - ``V4L2_PIX_FMT_MPEG1`` | 79 | |
| 78 | 80 | - ``V4L2_PIX_FMT_VC1_ANNEX_L`` | |
| 79 | - 'MPG1' | 81 | - 'VC1L' |
| 80 | 82 | - VC1, SMPTE 421M Annex L compliant stream. | |
| 81 | - MPEG1 video elementary stream. | 83 | * .. _V4L2-PIX-FMT-VP8: |
| 82 | 84 | ||
| 83 | - .. _V4L2-PIX-FMT-MPEG2: | 85 | - ``V4L2_PIX_FMT_VP8`` |
| 84 | 86 | - 'VP80' | |
| 85 | - ``V4L2_PIX_FMT_MPEG2`` | 87 | - VP8 video elementary stream. |
| 86 | |||
| 87 | - 'MPG2' | ||
| 88 | |||
| 89 | - MPEG2 video elementary stream. | ||
| 90 | |||
| 91 | - .. _V4L2-PIX-FMT-MPEG4: | ||
| 92 | |||
| 93 | - ``V4L2_PIX_FMT_MPEG4`` | ||
| 94 | |||
| 95 | - 'MPG4' | ||
| 96 | |||
| 97 | - MPEG4 video elementary stream. | ||
| 98 | |||
| 99 | - .. _V4L2-PIX-FMT-XVID: | ||
| 100 | |||
| 101 | - ``V4L2_PIX_FMT_XVID`` | ||
| 102 | |||
| 103 | - 'XVID' | ||
| 104 | |||
| 105 | - Xvid video elementary stream. | ||
| 106 | |||
| 107 | - .. _V4L2-PIX-FMT-VC1-ANNEX-G: | ||
| 108 | |||
| 109 | - ``V4L2_PIX_FMT_VC1_ANNEX_G`` | ||
| 110 | |||
| 111 | - 'VC1G' | ||
| 112 | |||
| 113 | - VC1, SMPTE 421M Annex G compliant stream. | ||
| 114 | |||
| 115 | - .. _V4L2-PIX-FMT-VC1-ANNEX-L: | ||
| 116 | |||
| 117 | - ``V4L2_PIX_FMT_VC1_ANNEX_L`` | ||
| 118 | |||
| 119 | - 'VC1L' | ||
| 120 | |||
| 121 | - VC1, SMPTE 421M Annex L compliant stream. | ||
| 122 | |||
| 123 | - .. _V4L2-PIX-FMT-VP8: | ||
| 124 | |||
| 125 | - ``V4L2_PIX_FMT_VP8`` | ||
| 126 | |||
| 127 | - 'VP80' | ||
| 128 | |||
| 129 | - VP8 video elementary stream. | ||
| @@ -6,8 +6,6 @@ · 5 unmodified lines | |||
| 6 | V4L2_PIX_FMT_GREY ('GREY') | 6 | V4L2_PIX_FMT_GREY ('GREY') |
| 7 | ************************** | 7 | ************************** |
| 8 | 8 | ||
| 9 | *man V4L2_PIX_FMT_GREY(2)* | ||
| 10 | |||
| 11 | Grey-scale image | 9 | Grey-scale image |
| 12 | 10 | ||
| 13 | 11 | ||
| @@ -20,58 +18,27 @@ which simply contains no Cb or Cr data. · 6 unmodified lines | |||
| 20 | **Byte Order.** | 18 | **Byte Order.** |
| 21 | Each cell is one byte. | 19 | Each cell is one byte. |
| 22 | 20 | ||
| 23 | |||
| 24 | |||
| 25 | .. flat-table:: | 21 | .. flat-table:: |
| 26 | :header-rows: 0 | 22 | :header-rows: 0 |
| 27 | :stub-columns: 0 | 23 | :stub-columns: 0 |
| 28 | :widths: 2 1 1 1 1 | ||
| 29 | |||
| 30 | |||
| 31 | - .. row 1 | ||
| 32 | |||
| 33 | - start + 0: | ||
| 34 | |||
| 35 | - Y'\ :sub:`00` | ||
| 36 | |||
| 37 | - Y'\ :sub:`01` | ||
| 38 | |||
| 39 | - Y'\ :sub:`02` | ||
| 40 | |||
| 41 | - Y'\ :sub:`03` | ||
| 42 | |||
| 43 | - .. row 2 | ||
| 44 | |||
| 45 | - start + 4: | ||
| 46 | |||
| 47 | - Y'\ :sub:`10` | ||
| 48 | |||
| 49 | - Y'\ :sub:`11` | ||
| 50 | |||
| 51 | - Y'\ :sub:`12` | ||
| 52 | |||
| 53 | - Y'\ :sub:`13` | ||
| 54 | |||
| 55 | - .. row 3 | ||
| 56 | |||
| 57 | - start + 8: | ||
| 58 | |||
| 59 | - Y'\ :sub:`20` | ||
| 60 | |||
| 61 | - Y'\ :sub:`21` | ||
| 62 | |||
| 63 | - Y'\ :sub:`22` | ||
| 64 | |||
| 65 | - Y'\ :sub:`23` | ||
| 66 | |||
| 67 | - .. row 4 | ||
| 68 | |||
| 69 | - start + 12: | ||
| 70 | |||
| 71 | - Y'\ :sub:`30` | ||
| 72 | |||
| 73 | - Y'\ :sub:`31` | ||
| 74 | |||
| 75 | - Y'\ :sub:`32` | ||
| 76 | 24 | ||
| 77 | - Y'\ :sub:`33` | 25 | * - start + 0: |
| 26 | - Y'\ :sub:`00` | ||
| 27 | - Y'\ :sub:`01` | ||
| 28 | - Y'\ :sub:`02` | ||
| 29 | - Y'\ :sub:`03` | ||
| 30 | * - start + 4: | ||
| 31 | - Y'\ :sub:`10` | ||
| 32 | - Y'\ :sub:`11` | ||
| 33 | - Y'\ :sub:`12` | ||
| 34 | - Y'\ :sub:`13` | ||
| 35 | * - start + 8: | ||
| 36 | - Y'\ :sub:`20` | ||
| 37 | - Y'\ :sub:`21` | ||
| 38 | - Y'\ :sub:`22` | ||
| 39 | - Y'\ :sub:`23` | ||
| 40 | * - start + 12: | ||
| 41 | - Y'\ :sub:`30` | ||
| 42 | - Y'\ :sub:`31` | ||
| 43 | - Y'\ :sub:`32` | ||
| 44 | - Y'\ :sub:`33` | ||
| @@ -17,57 +17,31 @@ the palette, this must be done with ioctls of the Linux framebuffer API. · 16 unmodified lines | |||
| 17 | :header-rows: 2 | 17 | :header-rows: 2 |
| 18 | :stub-columns: 0 | 18 | :stub-columns: 0 |
| 19 | 19 | ||
| 20 | 20 | * - Identifier | |
| 21 | - .. row 1 | 21 | - Code |
| 22 | 22 | - | |
| 23 | - Identifier | 23 | - :cspan:`7` Byte 0 |
| 24 | 24 | * - | |
| 25 | - Code | 25 | - |
| 26 | 26 | - Bit | |
| 27 | - | 27 | - 7 |
| 28 | - :cspan:`7` Byte 0 | 28 | - 6 |
| 29 | 29 | - 5 | |
| 30 | - .. row 2 | 30 | - 4 |
| 31 | 31 | - 3 | |
| 32 | - | 32 | - 2 |
| 33 | - | 33 | - 1 |
| 34 | - Bit | 34 | - 0 |
| 35 | 35 | * .. _V4L2-PIX-FMT-PAL8: | |
| 36 | - 7 | 36 | |
| 37 | 37 | - ``V4L2_PIX_FMT_PAL8`` | |
| 38 | - 6 | 38 | - 'PAL8' |
| 39 | 39 | - | |
| 40 | - 5 | 40 | - i\ :sub:`7` |
| 41 | 41 | - i\ :sub:`6` | |
| 42 | - 4 | 42 | - i\ :sub:`5` |
| 43 | 43 | - i\ :sub:`4` | |
| 44 | - 3 | 44 | - i\ :sub:`3` |
| 45 | 45 | - i\ :sub:`2` | |
| 46 | - 2 | 46 | - i\ :sub:`1` |
| 47 | 47 | - i\ :sub:`0` | |
| 48 | - 1 | ||
| 49 | |||
| 50 | - 0 | ||
| 51 | |||
| 52 | - .. _V4L2-PIX-FMT-PAL8: | ||
| 53 | |||
| 54 | - ``V4L2_PIX_FMT_PAL8`` | ||
| 55 | |||
| 56 | - 'PAL8' | ||
| 57 | |||
| 58 | - | ||
| 59 | - i\ :sub:`7` | ||
| 60 | |||
| 61 | - i\ :sub:`6` | ||
| 62 | |||
| 63 | - i\ :sub:`5` | ||
| 64 | |||
| 65 | - i\ :sub:`4` | ||
| 66 | |||
| 67 | - i\ :sub:`3` | ||
| 68 | |||
| 69 | - i\ :sub:`2` | ||
| 70 | |||
| 71 | - i\ :sub:`1` | ||
| 72 | |||
| 73 | - i\ :sub:`0` | ||
| @@ -6,8 +6,6 @@ · 5 unmodified lines | |||
| 6 | V4L2_PIX_FMT_M420 ('M420') | 6 | V4L2_PIX_FMT_M420 ('M420') |
| 7 | ************************** | 7 | ************************** |
| 8 | 8 | ||
| 9 | *man V4L2_PIX_FMT_M420(2)* | ||
| 10 | |||
| 11 | Format with ½ horizontal and vertical chroma resolution, also known as | 9 | Format with ½ horizontal and vertical chroma resolution, also known as |
| 12 | YUV 4:2:0. Hybrid plane line-interleaved layout. | 10 | YUV 4:2:0. Hybrid plane line-interleaved layout. |
| 13 | 11 | ||
| @@ -32,84 +30,40 @@ the CbCr lines. · 18 unmodified lines | |||
| 32 | Each cell is one byte. | 30 | Each cell is one byte. |
| 33 | 31 | ||
| 34 | 32 | ||
| 35 | |||
| 36 | .. flat-table:: | 33 | .. flat-table:: |
| 37 | :header-rows: 0 | 34 | :header-rows: 0 |
| 38 | :stub-columns: 0 | 35 | :stub-columns: 0 |
| 39 | :widths: 2 1 1 1 1 | ||
| 40 | |||
| 41 | |||
| 42 | - .. row 1 | ||
| 43 | |||
| 44 | - start + 0: | ||
| 45 | |||
| 46 | - Y'\ :sub:`00` | ||
| 47 | |||
| 48 | - Y'\ :sub:`01` | ||
| 49 | |||
| 50 | - Y'\ :sub:`02` | ||
| 51 | |||
| 52 | - Y'\ :sub:`03` | ||
| 53 | |||
243 more lines aren’t shown here.
This diff is large: its 274 lines aren’t shown here.
This diff is large: its 277 lines aren’t shown here.
This diff is large: its 27 lines aren’t shown here.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
This diff is large: its 347 lines aren’t shown here.
This diff is large: its 352 lines aren’t shown here.
This diff is large: its 203 lines aren’t shown here.
This diff is large: its 2227 lines aren’t shown here.
This diff is large: its 485 lines aren’t shown here.
This diff is large: its 565 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 142 lines aren’t shown here.
This diff is large: its 82 lines aren’t shown here.
This diff is large: its 36 lines aren’t shown here.
This diff is large: its 41 lines aren’t shown here.
This diff is large: its 36 lines aren’t shown here.
This diff is large: its 40 lines aren’t shown here.
This diff is large: its 29 lines aren’t shown here.
This diff is large: its 82 lines aren’t shown here.
This diff is large: its 82 lines aren’t shown here.
This diff is large: its 154 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 132 lines aren’t shown here.
This diff is large: its 144 lines aren’t shown here.
This diff is large: its 115 lines aren’t shown here.
This diff is large: its 53 lines aren’t shown here.
This diff is large: its 68 lines aren’t shown here.
This diff is large: its 51 lines aren’t shown here.
This diff is large: its 67 lines aren’t shown here.
This diff is large: its 86 lines aren’t shown here.
This diff is large: its 253 lines aren’t shown here.
This diff is large: its 253 lines aren’t shown here.
This diff is large: its 134 lines aren’t shown here.
This diff is large: its 37 lines aren’t shown here.
This diff is large: its 134 lines aren’t shown here.
This diff is large: its 26 lines aren’t shown here.
This diff is large: its 145 lines aren’t shown here.
This diff is large: its 145 lines aren’t shown here.
This diff is large: its 361 lines aren’t shown here.
This diff is large: its 134 lines aren’t shown here.
This diff is large: its 253 lines aren’t shown here.
This diff is large: its 255 lines aren’t shown here.
This diff is large: its 298 lines aren’t shown here.
This diff is large: its 308 lines aren’t shown here.
This diff is large: its 303 lines aren’t shown here.
This diff is large: its 293 lines aren’t shown here.
This diff is large: its 323 lines aren’t shown here.
This diff is large: its 263 lines aren’t shown here.
This diff is large: its 253 lines aren’t shown here.
This diff is large: its 134 lines aren’t shown here.
This diff is large: its 17 lines aren’t shown here.
This diff is large: its 30 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 25 lines aren’t shown here.
This diff is large: its 33 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 17975 lines aren’t shown here.
This diff is large: its 19 lines aren’t shown here.
This diff is large: its 58 lines aren’t shown here.
This diff is large: its 36 lines aren’t shown here.
This diff is large: its 96 lines aren’t shown here.
This diff is large: its 181 lines aren’t shown here.
This diff is large: its 23 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 127 lines aren’t shown here.
This diff is large: its 187 lines aren’t shown here.
This diff is large: its 190 lines aren’t shown here.
This diff is large: its 187 lines aren’t shown here.
This diff is large: its 364 lines aren’t shown here.
This diff is large: its 820 lines aren’t shown here.
This diff is large: its 321 lines aren’t shown here.
This diff is large: its 205 lines aren’t shown here.
This diff is large: its 124 lines aren’t shown here.
This diff is large: its 212 lines aren’t shown here.
This diff is large: its 262 lines aren’t shown here.
This diff is large: its 306 lines aren’t shown here.
This diff is large: its 242 lines aren’t shown here.
This diff is large: its 37 lines aren’t shown here.
This diff is large: its 43 lines aren’t shown here.
This diff is large: its 500 lines aren’t shown here.
This diff is large: its 284 lines aren’t shown here.
This diff is large: its 395 lines aren’t shown here.
This diff is large: its 144 lines aren’t shown here.
This diff is large: its 182 lines aren’t shown here.
This diff is large: its 129 lines aren’t shown here.
This diff is large: its 94 lines aren’t shown here.
This diff is large: its 91 lines aren’t shown here.
This diff is large: its 549 lines aren’t shown here.
This diff is large: its 132 lines aren’t shown here.
This diff is large: its 238 lines aren’t shown here.
This diff is large: its 674 lines aren’t shown here.
This diff is large: its 679 lines aren’t shown here.
This diff is large: its 205 lines aren’t shown here.
This diff is large: its 132 lines aren’t shown here.
This diff is large: its 32 lines aren’t shown here.
This diff is large: its 197 lines aren’t shown here.
This diff is large: its 334 lines aren’t shown here.
This diff is large: its 32 lines aren’t shown here.
This diff is large: its 479 lines aren’t shown here.
This diff is large: its 114 lines aren’t shown here.
This diff is large: its 180 lines aren’t shown here.
This diff is large: its 381 lines aren’t shown here.
This diff is large: its 36 lines aren’t shown here.
This diff is large: its 1021 lines aren’t shown here.
This diff is large: its 17 lines aren’t shown here.
This diff is large: its 20 lines aren’t shown here.
This diff is large: its 29 lines aren’t shown here.
This diff is large: its 99 lines aren’t shown here.
This diff is large: its 38 lines aren’t shown here.
This diff is large: its 57 lines aren’t shown here.
This diff is large: its 623 lines aren’t shown here.
This diff is large: its 1086 lines aren’t shown here.
This diff is large: its 31 lines aren’t shown here.
This diff is large: its 100 lines aren’t shown here.
This diff is large: its 184 lines aren’t shown here.
This diff is large: its 43 lines aren’t shown here.
This diff is large: its 149 lines aren’t shown here.
This diff is large: its 159 lines aren’t shown here.
This diff is large: its 115 lines aren’t shown here.
This diff is large: its 116 lines aren’t shown here.
This diff is large: its 149 lines aren’t shown here.
This diff is large: its 102 lines aren’t shown here.
This diff is large: its 119 lines aren’t shown here.
This diff is large: its 166 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 5 lines aren’t shown here.
This diff is large: its 6 lines aren’t shown here.
This diff is large: its 178 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 24 lines aren’t shown here.
This diff is large: its 310 lines aren’t shown here.
This diff is large: its 259 lines aren’t shown here.
This diff is large: its 236 lines aren’t shown here.
This diff is large: its 19 lines aren’t shown here.
This diff is large: its 17 lines aren’t shown here.
This diff is large: its 15 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 6 lines aren’t shown here.
This diff is large: its 758 lines aren’t shown here.
This diff is large: its 16 lines aren’t shown here.
This diff is large: its 643 lines aren’t shown here.
This diff is large: its 276 lines aren’t shown here.
This diff is large: its 26 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 37 lines aren’t shown here.
This diff is large: its 88 lines aren’t shown here.
This diff is large: its 42 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 312 lines aren’t shown here.
This diff is large: its 16 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 33 lines aren’t shown here.
This diff is large: its 444 lines aren’t shown here.
This diff is large: its 847 lines aren’t shown here.
This diff is large: its 90 lines aren’t shown here.
This diff is large: its 450 lines aren’t shown here.
This diff is large: its 424 lines aren’t shown here.
This diff is large: its 264 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 42 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 38 lines aren’t shown here.
This diff is large: its 163 lines aren’t shown here.
This diff is large: its 461 lines aren’t shown here.
This diff is large: its 39 lines aren’t shown here.
This diff is large: its 22 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 46 lines aren’t shown here.
This diff is large: its 16 lines aren’t shown here.
This diff is large: its 373 lines aren’t shown here.
This diff is large: its 80 lines aren’t shown here.
This diff is large: its 282 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 53 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 135 lines aren’t shown here.
This diff is large: its 223 lines aren’t shown here.
This diff is large: its 28 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 16 lines aren’t shown here.
This diff is large: its 435 lines aren’t shown here.
This diff is large: its 63 lines aren’t shown here.
This diff is large: its 41 lines aren’t shown here.
This diff is large: its 21 lines aren’t shown here.
This diff is large: its 17 lines aren’t shown here.
This diff is large: its 7 lines aren’t shown here.
This diff is large: its 66 lines aren’t shown here.
This diff is large: its 118 lines aren’t shown here.
This diff is large: its 97 lines aren’t shown here.
This diff is large: its 90 lines aren’t shown here.
This diff is large: its 121 lines aren’t shown here.
This diff is large: its 62 lines aren’t shown here.
This diff is large: its 90 lines aren’t shown here.
This diff is large: its 128 lines aren’t shown here.
This diff is large: its 65 lines aren’t shown here.
This diff is large: its 62 lines aren’t shown here.
This diff is large: its 64 lines aren’t shown here.
This diff is large: its 91 lines aren’t shown here.
This diff is large: its 76 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 17 lines aren’t shown here.
This diff is large: its 157 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 330 lines aren’t shown here.
This diff is large: its 33 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 5 lines aren’t shown here.
This diff is large: its 122 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 63 lines aren’t shown here.
This diff is large: its 22 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 78 lines aren’t shown here.
This diff is large: its 191 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 19 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 35 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 29 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 63 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 19 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 13 lines aren’t shown here.
This diff is large: its 63 lines aren’t shown here.
This diff is large: its 12 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 95 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 36 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 13 lines aren’t shown here.
This diff is large: its 4 lines aren’t shown here.
This diff is large: its 360 lines aren’t shown here.
This diff is large: its 260 lines aren’t shown here.
This diff is large: its 2134 lines aren’t shown here.
This diff is large: its 38 lines aren’t shown here.
This diff is large: its 1511 lines aren’t shown here.
This diff is large: its 206 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 291 lines aren’t shown here.
This diff is large: its 154 lines aren’t shown here.
This diff is large: its 59 lines aren’t shown here.
This diff is large: its 31 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 2 lines aren’t shown here.
This diff is large: its 166 lines aren’t shown here.
This diff is large: its 1521 lines aren’t shown here.
This diff is large: its 126 lines aren’t shown here.
This diff is large: its 97 lines aren’t shown here.
This diff is large: its 23 lines aren’t shown here.
This diff is large: its 17 lines aren’t shown here.
This diff is large: its 44 lines aren’t shown here.
This diff is large: its 87 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 62 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 20 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 106 lines aren’t shown here.
This diff is large: its 20 lines aren’t shown here.
This diff is large: its 20 lines aren’t shown here.
This diff is large: its 11 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 91 lines aren’t shown here.
This diff is large: its 20 lines aren’t shown here.
This diff is large: its 137 lines aren’t shown here.
This diff is large: its 2567 lines aren’t shown here.
This diff is large: its 27 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 376 lines aren’t shown here.
This diff is large: its 164 lines aren’t shown here.
This diff is large: its 505 lines aren’t shown here.
This diff is large: its 90 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 115 lines aren’t shown here.
This diff is large: its 157 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 89 lines aren’t shown here.
This diff is large: its 20 lines aren’t shown here.
This diff is large: its 1060 lines aren’t shown here.
This diff is large: its 325 lines aren’t shown here.
This diff is large: its 365 lines aren’t shown here.
This diff is large: its 528 lines aren’t shown here.
This diff is large: its 271 lines aren’t shown here.
This diff is large: its 552 lines aren’t shown here.
This diff is large: its 1131 lines aren’t shown here.
This diff is large: its 243 lines aren’t shown here.
This diff is large: its 147 lines aren’t shown here.
This diff is large: its 123 lines aren’t shown here.
This diff is large: its 64 lines aren’t shown here.
This diff is large: its 89 lines aren’t shown here.
This diff is large: its 498 lines aren’t shown here.
This diff is large: its 408 lines aren’t shown here.
This diff is large: its 41 lines aren’t shown here.
This diff is large: its 32 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 1971 lines aren’t shown here.
This diff is large: its 463 lines aren’t shown here.
This diff is large: its 401 lines aren’t shown here.
This diff is large: its 186 lines aren’t shown here.
This diff is large: its 68 lines aren’t shown here.
This diff is large: its 206 lines aren’t shown here.
This diff is large: its 20 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 3 lines aren’t shown here.
This diff is large: its 1051 lines aren’t shown here.
This diff is large: its 539 lines aren’t shown here.
This diff is large: its 43 lines aren’t shown here.
This diff is large: its 60 lines aren’t shown here.
This diff is large: its 35 lines aren’t shown here.
This diff is large: its 1416 lines aren’t shown here.
This diff is large: its 316 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 88 lines aren’t shown here.
This diff is large: its 17 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 16 lines aren’t shown here.
This diff is large: its 96 lines aren’t shown here.
This diff is large: its 109 lines aren’t shown here.
This diff is large: its 193 lines aren’t shown here.
This diff is large: its 7 lines aren’t shown here.
This diff is large: its 55 lines aren’t shown here.
This diff is large: its 145 lines aren’t shown here.
This diff is large: its 74 lines aren’t shown here.
This diff is large: its 59 lines aren’t shown here.
This diff is large: its 53 lines aren’t shown here.
This diff is large: its 57 lines aren’t shown here.
This diff is large: its 80 lines aren’t shown here.
This diff is large: its 44 lines aren’t shown here.
This diff is large: its 31 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 149 lines aren’t shown here.
This diff is large: its 161 lines aren’t shown here.
This diff is large: its 26 lines aren’t shown here.
This diff is large: its 110 lines aren’t shown here.
This diff is large: its 143 lines aren’t shown here.
This diff is large: its 274 lines aren’t shown here.
This diff is large: its 187 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 32 lines aren’t shown here.
This diff is large: its 44 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 74 lines aren’t shown here.
This diff is large: its 40 lines aren’t shown here.
This diff is large: its 34 lines aren’t shown here.
This diff is large: its 129 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 15 lines aren’t shown here.
This diff is large: its 2 lines aren’t shown here.
This diff is large: its 479 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 39 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 48 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 12 lines aren’t shown here.
This diff is large: its 24 lines aren’t shown here.
This diff is large: its 164 lines aren’t shown here.
This diff is large: its 139 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 42 lines aren’t shown here.
This diff is large: its 42 lines aren’t shown here.
This diff is large: its 44 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 19 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 38 lines aren’t shown here.
This diff is large: its 66 lines aren’t shown here.
This diff is large: its 28 lines aren’t shown here.
This diff is large: its 28 lines aren’t shown here.
This diff is large: its 165 lines aren’t shown here.
This diff is large: its 169 lines aren’t shown here.
This diff is large: its 23 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 30 lines aren’t shown here.
This diff is large: its 29 lines aren’t shown here.
This diff is large: its 41 lines aren’t shown here.
This diff is large: its 29 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 79 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 125 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 52 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 14 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 56 lines aren’t shown here.
This diff is large: its 14 lines aren’t shown here.
This diff is large: its 28 lines aren’t shown here.
This diff is large: its 157 lines aren’t shown here.
This diff is large: its 281 lines aren’t shown here.
This diff is large: its 456 lines aren’t shown here.
This diff is large: its 30 lines aren’t shown here.
This diff is large: its 58 lines aren’t shown here.
This diff is large: its 218 lines aren’t shown here.
This diff is large: its 50 lines aren’t shown here.
This diff is large: its 14 lines aren’t shown here.
This diff is large: its 6 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 42 lines aren’t shown here.
This diff is large: its 29 lines aren’t shown here.
This diff is large: its 113 lines aren’t shown here.
This diff is large: its 537 lines aren’t shown here.
This diff is large: its 34 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 2 lines aren’t shown here.
This diff is large: its 381 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 4 lines aren’t shown here.
This diff is large: its 7 lines aren’t shown here.
This diff is large: its 141 lines aren’t shown here.
This diff is large: its 104 lines aren’t shown here.
This diff is large: its 814 lines aren’t shown here.
This diff is large: its 118 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 49 lines aren’t shown here.
This diff is large: its 28 lines aren’t shown here.
This diff is large: its 236 lines aren’t shown here.
This diff is large: its 12 lines aren’t shown here.
This diff is large: its 562 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 146 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 19 lines aren’t shown here.
This diff is large: its 127 lines aren’t shown here.
This diff is large: its 69 lines aren’t shown here.
This diff is large: its 202 lines aren’t shown here.
This diff is large: its 11 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 34 lines aren’t shown here.
This diff is large: its 617 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 436 lines aren’t shown here.
This diff is large: its 105 lines aren’t shown here.
This diff is large: its 572 lines aren’t shown here.
This diff is large: its 224 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 24 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 17 lines aren’t shown here.
This diff is large: its 112 lines aren’t shown here.