€•¿Œsphinx.addnodes”Œdocument”“”)”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)”}”(hhh]”(hŒ pending_xref”“”)”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…””}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ=/translations/zh_CN/userspace-api/media/mediactl/media-header”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)”}”(hhh]”hŒChinese (Traditional)”…””}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ=/translations/zh_TW/userspace-api/media/mediactl/media-header”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒItalian”…””}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ=/translations/it_IT/userspace-api/media/mediactl/media-header”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒJapanese”…””}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ=/translations/ja_JP/userspace-api/media/mediactl/media-header”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒKorean”…””}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ=/translations/ko_KR/userspace-api/media/mediactl/media-header”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒSpanish”…””}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ=/translations/sp_SP/userspace-api/media/mediactl/media-header”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)”}”(hŒ8SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later”h]”hŒ8SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later”…””}”hh£sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1h¡hhhžhhŸŒW/var/lib/git/docbuild/linux/Documentation/userspace-api/media/mediactl/media-header.rst”h KubhŒtarget”“”)”}”(hŒ.. _media_header:”h]”h}”(h]”h ]”h"]”h$]”h&]”Œrefid”Œ media-header”uh1h´h KhhhžhhŸh³ubhŒsection”“”)”}”(hhh]”(hŒtitle”“”)”}”(hŒMedia Controller Header File”h]”hŒMedia Controller Header File”…””}”(hhÉhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÇhhÄhžhhŸh³h KubhŒ literal_block”“”)”}”(hXyO\/\* SPDX-License-Identifier\: GPL-2.0 WITH Linux-syscall-note \*\/ \/\* \* Multimedia device API \* \* Copyright (C) 2010 Nokia Corporation \* \* Contacts\: Laurent Pinchart \ \* Sakari Ailus \ \* \* This program is free software; you can redistribute it and\/or modify \* it under the terms of the GNU General Public License version 2 as \* published by the Free Software Foundation. \* \* This program is distributed in the hope that it will be useful, \* but WITHOUT ANY WARRANTY; without even the implied warranty of \* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the \* GNU General Public License for more details. \*\/ \#ifndef \_\_LINUX\_MEDIA\_H \#define \_\_LINUX\_MEDIA\_H \#include \ \#include \ struct :c:type:`media_device_info ` \{ char driver[16]; char model[32]; char serial[40]; char bus\_info[32]; \_\_u32 media\_version; \_\_u32 hw\_revision; \_\_u32 driver\_version; \_\_u32 reserved[31]; \}; \/\* \* Base number ranges for entity functions \* \* NOTE\: Userspace should not rely on these ranges to identify a group \* of function types, as newer functions can be added with any name within \* the full u32 range. \* \* Some older functions use the MEDIA\_ENT\_F\_OLD\_\*\_BASE range. Do not \* change this, this is for backwards compatibility. When adding new \* functions always use MEDIA\_ENT\_F\_BASE. \*\/ \#define MEDIA\_ENT\_F\_BASE 0x00000000 \#define MEDIA\_ENT\_F\_OLD\_BASE 0x00010000 \#define MEDIA\_ENT\_F\_OLD\_SUBDEV\_BASE 0x00020000 \/\* \* Initial value to be used when a new entity is created \* Drivers should change it to something useful. \*\/ \#define :ref:`MEDIA_ENT_F_UNKNOWN ` MEDIA\_ENT\_F\_BASE \/\* \* Subdevs are initialized with :ref:`MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN ` in order \* to preserve backward compatibility. Drivers must change to the proper \* subdev type before registering the entity. \*\/ \#define :ref:`MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN ` MEDIA\_ENT\_F\_OLD\_SUBDEV\_BASE \/\* \* DVB entity functions \*\/ \#define :ref:`MEDIA_ENT_F_DTV_DEMOD ` (MEDIA\_ENT\_F\_BASE + 0x00001) \#define :ref:`MEDIA_ENT_F_TS_DEMUX ` (MEDIA\_ENT\_F\_BASE + 0x00002) \#define :ref:`MEDIA_ENT_F_DTV_CA ` (MEDIA\_ENT\_F\_BASE + 0x00003) \#define :ref:`MEDIA_ENT_F_DTV_NET_DECAP ` (MEDIA\_ENT\_F\_BASE + 0x00004) \/\* \* I\/O entity functions \*\/ \#define :ref:`MEDIA_ENT_F_IO_V4L ` (MEDIA\_ENT\_F\_OLD\_BASE + 1) \#define :ref:`MEDIA_ENT_F_IO_DTV ` (MEDIA\_ENT\_F\_BASE + 0x01001) \#define :ref:`MEDIA_ENT_F_IO_VBI ` (MEDIA\_ENT\_F\_BASE + 0x01002) \#define :ref:`MEDIA_ENT_F_IO_SWRADIO ` (MEDIA\_ENT\_F\_BASE + 0x01003) \/\* \* Sensor functions \*\/ \#define :ref:`MEDIA_ENT_F_CAM_SENSOR ` (MEDIA\_ENT\_F\_OLD\_SUBDEV\_BASE + 1) \#define :ref:`MEDIA_ENT_F_FLASH ` (MEDIA\_ENT\_F\_OLD\_SUBDEV\_BASE + 2) \#define :ref:`MEDIA_ENT_F_LENS ` (MEDIA\_ENT\_F\_OLD\_SUBDEV\_BASE + 3) \/\* \* Digital TV, analog TV, radio and\/or software defined radio tuner functions. \* \* It is a responsibility of the master\/bridge drivers to add connectors \* and links for MEDIA\_ENT\_F\_TUNER. Please notice that some old tuners \* may require the usage of separate I2C chips to decode analog TV signals, \* when the master\/bridge chipset doesn't have its own TV standard decoder. \* On such cases, the IF-PLL staging is mapped via one or two entities\: \* :ref:`MEDIA_ENT_F_IF_VID_DECODER ` and\/or MEDIA\_ENT\_F\_IF\_AUD\_DECODER. \*\/ \#define :ref:`MEDIA_ENT_F_TUNER ` (MEDIA\_ENT\_F\_OLD\_SUBDEV\_BASE + 5) \/\* \* Analog TV IF-PLL decoder functions \* \* It is a responsibility of the master\/bridge drivers to create links \* for :ref:`MEDIA_ENT_F_IF_VID_DECODER ` and MEDIA\_ENT\_F\_IF\_AUD\_DECODER. \*\/ \#define :ref:`MEDIA_ENT_F_IF_VID_DECODER ` (MEDIA\_ENT\_F\_BASE + 0x02001) \#define :ref:`MEDIA_ENT_F_IF_AUD_DECODER ` (MEDIA\_ENT\_F\_BASE + 0x02002) \/\* \* Audio entity functions \*\/ \#define :ref:`MEDIA_ENT_F_AUDIO_CAPTURE ` (MEDIA\_ENT\_F\_BASE + 0x03001) \#define :ref:`MEDIA_ENT_F_AUDIO_PLAYBACK ` (MEDIA\_ENT\_F\_BASE + 0x03002) \#define :ref:`MEDIA_ENT_F_AUDIO_MIXER ` (MEDIA\_ENT\_F\_BASE + 0x03003) \/\* \* Processing entity functions \*\/ \#define :ref:`MEDIA_ENT_F_PROC_VIDEO_COMPOSER ` (MEDIA\_ENT\_F\_BASE + 0x4001) \#define :ref:`MEDIA_ENT_F_PROC_VIDEO_PIXEL_FORMATTER ` (MEDIA\_ENT\_F\_BASE + 0x4002) \#define :ref:`MEDIA_ENT_F_PROC_VIDEO_PIXEL_ENC_CONV ` (MEDIA\_ENT\_F\_BASE + 0x4003) \#define :ref:`MEDIA_ENT_F_PROC_VIDEO_LUT ` (MEDIA\_ENT\_F\_BASE + 0x4004) \#define :ref:`MEDIA_ENT_F_PROC_VIDEO_SCALER ` (MEDIA\_ENT\_F\_BASE + 0x4005) \#define :ref:`MEDIA_ENT_F_PROC_VIDEO_STATISTICS ` (MEDIA\_ENT\_F\_BASE + 0x4006) \#define :ref:`MEDIA_ENT_F_PROC_VIDEO_ENCODER ` (MEDIA\_ENT\_F\_BASE + 0x4007) \#define :ref:`MEDIA_ENT_F_PROC_VIDEO_DECODER ` (MEDIA\_ENT\_F\_BASE + 0x4008) \#define :ref:`MEDIA_ENT_F_PROC_VIDEO_ISP ` (MEDIA\_ENT\_F\_BASE + 0x4009) \/\* \* Switch and bridge entity functions \*\/ \#define :ref:`MEDIA_ENT_F_VID_MUX ` (MEDIA\_ENT\_F\_BASE + 0x5001) \#define :ref:`MEDIA_ENT_F_VID_IF_BRIDGE ` (MEDIA\_ENT\_F\_BASE + 0x5002) \/\* \* Video decoder\/encoder functions \*\/ \#define :ref:`MEDIA_ENT_F_ATV_DECODER ` (MEDIA\_ENT\_F\_OLD\_SUBDEV\_BASE + 4) \#define :ref:`MEDIA_ENT_F_DV_DECODER ` (MEDIA\_ENT\_F\_BASE + 0x6001) \#define :ref:`MEDIA_ENT_F_DV_ENCODER ` (MEDIA\_ENT\_F\_BASE + 0x6002) \/\* Entity flags \*\/ \#define :ref:`MEDIA_ENT_FL_DEFAULT ` (1U \<\< 0) \#define :ref:`MEDIA_ENT_FL_CONNECTOR ` (1U \<\< 1) \/\* OR with the entity id value to find the next entity \*\/ \#define :ref:`MEDIA_ENT_ID_FLAG_NEXT ` (1U \<\< 31) struct :c:type:`media_entity_desc ` \{ \_\_u32 id; char name[32]; \_\_u32 type; \_\_u32 revision; \_\_u32 flags; \_\_u32 group\_id; \_\_u16 pads; \_\_u16 links; \_\_u32 reserved[4]; union \{ \/\* Node specifications \*\/ struct \{ \_\_u32 major; \_\_u32 minor; \} dev; \#if !defined(\_\_KERNEL\_\_) \/\* \* TODO\: this shouldn't have been added without \* actual drivers that use this. When the first real driver \* appears that sets this information, special attention \* should be given whether this information is 1) enough, and \* 2) can deal with udev rules that rename devices. The struct \* dev would not be sufficient for this since that does not \* contain the subdevice information. In addition, struct dev \* can only refer to a single device, and not to multiple (e.g. \* pcm and mixer devices). \*\/ struct \{ \_\_u32 card; \_\_u32 device; \_\_u32 subdevice; \} alsa; \/\* \* **DEPRECATED**\: previous node specifications. Kept just to \* avoid breaking compilation. Use media\_entity\_desc.dev \* instead. \*\/ struct \{ \_\_u32 major; \_\_u32 minor; \} v4l; struct \{ \_\_u32 major; \_\_u32 minor; \} fb; int dvb; \#endif \/\* Sub-device specifications \*\/ \/\* Nothing needed yet \*\/ \_\_u8 raw[184]; \}; \}; \#define :ref:`MEDIA_PAD_FL_SINK ` (1U \<\< 0) \#define :ref:`MEDIA_PAD_FL_SOURCE ` (1U \<\< 1) \#define :ref:`MEDIA_PAD_FL_MUST_CONNECT ` (1U \<\< 2) struct :c:type:`media_pad_desc ` \{ \_\_u32 entity; \/\* entity ID \*\/ \_\_u16 index; \/\* pad index \*\/ \_\_u32 flags; \/\* pad flags \*\/ \_\_u32 reserved[2]; \}; \#define :ref:`MEDIA_LNK_FL_ENABLED ` (1U \<\< 0) \#define :ref:`MEDIA_LNK_FL_IMMUTABLE ` (1U \<\< 1) \#define :ref:`MEDIA_LNK_FL_DYNAMIC ` (1U \<\< 2) \#define :ref:`MEDIA_LNK_FL_LINK_TYPE ` (0xf \<\< 28) \# define :ref:`MEDIA_LNK_FL_DATA_LINK ` (0U \<\< 28) \# define :ref:`MEDIA_LNK_FL_INTERFACE_LINK ` (1U \<\< 28) \# define :ref:`MEDIA_LNK_FL_ANCILLARY_LINK ` (2U \<\< 28) struct :c:type:`media_link_desc ` \{ struct :c:type:`media_pad_desc ` source; struct :c:type:`media_pad_desc ` sink; \_\_u32 flags; \_\_u32 reserved[2]; \}; struct :c:type:`media_links_enum ` \{ \_\_u32 entity; \/\* Should have enough room for pads elements \*\/ struct :c:type:`media_pad_desc ` \_\_user \*pads; \/\* Should have enough room for links elements \*\/ struct :c:type:`media_link_desc ` \_\_user \*links; \_\_u32 reserved[4]; \}; \/\* Interface type ranges \*\/ \#define MEDIA\_INTF\_T\_DVB\_BASE 0x00000100 \#define MEDIA\_INTF\_T\_V4L\_BASE 0x00000200 \/\* Interface types \*\/ \#define :ref:`MEDIA_INTF_T_DVB_FE ` (MEDIA\_INTF\_T\_DVB\_BASE) \#define :ref:`MEDIA_INTF_T_DVB_DEMUX ` (MEDIA\_INTF\_T\_DVB\_BASE + 1) \#define :ref:`MEDIA_INTF_T_DVB_DVR ` (MEDIA\_INTF\_T\_DVB\_BASE + 2) \#define :ref:`MEDIA_INTF_T_DVB_CA ` (MEDIA\_INTF\_T\_DVB\_BASE + 3) \#define :ref:`MEDIA_INTF_T_DVB_NET ` (MEDIA\_INTF\_T\_DVB\_BASE + 4) \#define :ref:`MEDIA_INTF_T_V4L_VIDEO ` (MEDIA\_INTF\_T\_V4L\_BASE) \#define :ref:`MEDIA_INTF_T_V4L_VBI ` (MEDIA\_INTF\_T\_V4L\_BASE + 1) \#define :ref:`MEDIA_INTF_T_V4L_RADIO ` (MEDIA\_INTF\_T\_V4L\_BASE + 2) \#define :ref:`MEDIA_INTF_T_V4L_SUBDEV ` (MEDIA\_INTF\_T\_V4L\_BASE + 3) \#define :ref:`MEDIA_INTF_T_V4L_SWRADIO ` (MEDIA\_INTF\_T\_V4L\_BASE + 4) \#define :ref:`MEDIA_INTF_T_V4L_TOUCH ` (MEDIA\_INTF\_T\_V4L\_BASE + 5) \#define MEDIA\_INTF\_T\_ALSA\_BASE 0x00000300 \#define :ref:`MEDIA_INTF_T_ALSA_PCM_CAPTURE ` (MEDIA\_INTF\_T\_ALSA\_BASE) \#define :ref:`MEDIA_INTF_T_ALSA_PCM_PLAYBACK ` (MEDIA\_INTF\_T\_ALSA\_BASE + 1) \#define :ref:`MEDIA_INTF_T_ALSA_CONTROL ` (MEDIA\_INTF\_T\_ALSA\_BASE + 2) \#if defined(\_\_KERNEL\_\_) \/\* \* Connector functions \* \* For now these should not be used in userspace, as some definitions may \* change. \* \* It is the responsibility of the entity drivers to add connectors and links. \*\/ \#define :ref:`MEDIA_ENT_F_CONN_RF ` (MEDIA\_ENT\_F\_BASE + 0x30001) \#define :ref:`MEDIA_ENT_F_CONN_SVIDEO ` (MEDIA\_ENT\_F\_BASE + 0x30002) \#define :ref:`MEDIA_ENT_F_CONN_COMPOSITE ` (MEDIA\_ENT\_F\_BASE + 0x30003) \#endif \/\* \* MC next gen API definitions \*\/ \/\* \* Appeared in 4.19.0. \* \* The media\_version argument comes from the media\_version field in \* struct media\_device\_info. \*\/ \#define MEDIA\_V2\_ENTITY\_HAS\_FLAGS(media\_version) \\ ((media\_version) \>= ((4U \<\< 16) \| (19U \<\< 8) \| 0U)) struct :c:type:`media_v2_entity ` \{ \_\_u32 id; char name[64]; \_\_u32 function; \/\* Main function of the entity \*\/ \_\_u32 flags; \_\_u32 reserved[5]; \} \_\_attribute\_\_ ((packed)); \/\* Should match the specific fields at media\_intf\_devnode \*\/ struct :c:type:`media_v2_intf_devnode ` \{ \_\_u32 major; \_\_u32 minor; \} \_\_attribute\_\_ ((packed)); struct :c:type:`media_v2_interface ` \{ \_\_u32 id; \_\_u32 intf\_type; \_\_u32 flags; \_\_u32 reserved[9]; union \{ struct :c:type:`media_v2_intf_devnode ` devnode; \_\_u32 raw[16]; \}; \} \_\_attribute\_\_ ((packed)); \/\* \* Appeared in 4.19.0. \* \* The media\_version argument comes from the media\_version field in \* struct media\_device\_info. \*\/ \#define MEDIA\_V2\_PAD\_HAS\_INDEX(media\_version) \\ ((media\_version) \>= ((4U \<\< 16) \| (19U \<\< 8) \| 0U)) struct :c:type:`media_v2_pad ` \{ \_\_u32 id; \_\_u32 entity\_id; \_\_u32 flags; \_\_u32 index; \_\_u32 reserved[4]; \} \_\_attribute\_\_ ((packed)); struct :c:type:`media_v2_link ` \{ \_\_u32 id; \_\_u32 source\_id; \_\_u32 sink\_id; \_\_u32 flags; \_\_u32 reserved[6]; \} \_\_attribute\_\_ ((packed)); struct :c:type:`media_v2_topology ` \{ \_\_u64 topology\_version; \_\_u32 num\_entities; \_\_u32 reserved1; \_\_u64 ptr\_entities; \_\_u32 num\_interfaces; \_\_u32 reserved2; \_\_u64 ptr\_interfaces; \_\_u32 num\_pads; \_\_u32 reserved3; \_\_u64 ptr\_pads; \_\_u32 num\_links; \_\_u32 reserved4; \_\_u64 ptr\_links; \} \_\_attribute\_\_ ((packed)); \/\* ioctls \*\/ \#define :ref:`MEDIA_IOC_DEVICE_INFO ` \_IOWR('\|', 0x00, struct :c:type:`media_device_info `\ ) \#define :ref:`MEDIA_IOC_ENUM_ENTITIES ` \_IOWR('\|', 0x01, struct :c:type:`media_entity_desc `\ ) \#define :ref:`MEDIA_IOC_ENUM_LINKS ` \_IOWR('\|', 0x02, struct :c:type:`media_links_enum `\ ) \#define :ref:`MEDIA_IOC_SETUP_LINK ` \_IOWR('\|', 0x03, struct :c:type:`media_link_desc `\ ) \#define :ref:`MEDIA_IOC_G_TOPOLOGY ` \_IOWR('\|', 0x04, struct :c:type:`media_v2_topology `\ ) \#define :ref:`MEDIA_IOC_REQUEST_ALLOC ` \_IOR ('\|', 0x05, int) \/\* \* These ioctls are called on the request file descriptor as returned \* by MEDIA\_IOC\_REQUEST\_ALLOC. \*\/ \#define :ref:`MEDIA_REQUEST_IOC_QUEUE ` \_IO('\|', 0x80) \#define :ref:`MEDIA_REQUEST_IOC_REINIT ` \_IO('\|', 0x81) \#ifndef \_\_KERNEL\_\_ \/\* \* Legacy symbols used to avoid userspace compilation breakages. \* Do not use any of this in new applications! \* \* Those symbols map the entity function into types and should be \* used only on legacy programs for legacy hardware. Don't rely \* on those for MEDIA\_IOC\_G\_TOPOLOGY. \*\/ \#define MEDIA\_ENT\_TYPE\_SHIFT 16 \#define MEDIA\_ENT\_TYPE\_MASK 0x00ff0000 \#define MEDIA\_ENT\_SUBTYPE\_MASK 0x0000ffff \#define MEDIA\_ENT\_T\_DEVNODE\_UNKNOWN (MEDIA\_ENT\_F\_OLD\_BASE \| \\ MEDIA\_ENT\_SUBTYPE\_MASK) \#define MEDIA\_ENT\_T\_DEVNODE MEDIA\_ENT\_F\_OLD\_BASE \#define MEDIA\_ENT\_T\_DEVNODE\_V4L :ref:`MEDIA_ENT_F_IO_V4L ` \#define MEDIA\_ENT\_T\_DEVNODE\_FB (MEDIA\_ENT\_F\_OLD\_BASE + 2) \#define MEDIA\_ENT\_T\_DEVNODE\_ALSA (MEDIA\_ENT\_F\_OLD\_BASE + 3) \#define MEDIA\_ENT\_T\_DEVNODE\_DVB (MEDIA\_ENT\_F\_OLD\_BASE + 4) \#define MEDIA\_ENT\_T\_UNKNOWN :ref:`MEDIA_ENT_F_UNKNOWN ` \#define MEDIA\_ENT\_T\_V4L2\_VIDEO :ref:`MEDIA_ENT_F_IO_V4L ` \#define MEDIA\_ENT\_T\_V4L2\_SUBDEV :ref:`MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN ` \#define MEDIA\_ENT\_T\_V4L2\_SUBDEV\_SENSOR :ref:`MEDIA_ENT_F_CAM_SENSOR ` \#define MEDIA\_ENT\_T\_V4L2\_SUBDEV\_FLASH :ref:`MEDIA_ENT_F_FLASH ` \#define MEDIA\_ENT\_T\_V4L2\_SUBDEV\_LENS :ref:`MEDIA_ENT_F_LENS ` \#define MEDIA\_ENT\_T\_V4L2\_SUBDEV\_DECODER :ref:`MEDIA_ENT_F_ATV_DECODER ` \#define MEDIA\_ENT\_T\_V4L2\_SUBDEV\_TUNER :ref:`MEDIA_ENT_F_TUNER ` \#define MEDIA\_ENT\_F\_DTV\_DECODER :ref:`MEDIA_ENT_F_DV_DECODER ` \/\* \* There is still no full ALSA support in the media controller. These \* defines should not have been added and we leave them here only \* in case some application tries to use these defines. \* \* The ALSA defines that are in use have been moved into \_\_KERNEL\_\_ \* scope. As support gets added to these interface types, they should \* be moved into \_\_KERNEL\_\_ scope with the code that uses them. \*\/ \#define :ref:`MEDIA_INTF_T_ALSA_COMPRESS ` (MEDIA\_INTF\_T\_ALSA\_BASE + 3) \#define :ref:`MEDIA_INTF_T_ALSA_RAWMIDI ` (MEDIA\_INTF\_T\_ALSA\_BASE + 4) \#define :ref:`MEDIA_INTF_T_ALSA_HWDEP ` (MEDIA\_INTF\_T\_ALSA\_BASE + 5) \#define :ref:`MEDIA_INTF_T_ALSA_SEQUENCER ` (MEDIA\_INTF\_T\_ALSA\_BASE + 6) \#define :ref:`MEDIA_INTF_T_ALSA_TIMER ` (MEDIA\_INTF\_T\_ALSA\_BASE + 7) \/\* Obsolete symbol for media\_version, no longer used in the kernel \*\/ \#define MEDIA\_API\_VERSION ((0U \<\< 16) \| (1U \<\< 8) \| 0U) \#endif \#endif \/\* \_\_LINUX\_MEDIA\_H \*\/”h]”(hŒ¶/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* * Multimedia device API * * Copyright (C) 2010 Nokia Corporation * * Contacts: Laurent Pinchart <”…””}”hhÙsbhŒ reference”“”)”}”(hŒ"laurent.pinchart@ideasonboard.com\”h]”hŒ"laurent.pinchart@ideasonboard.com”…””}”hhãsbah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”Œ(mailto:laurent.pinchart@ideasonboard.com”uh1háhhÙubhŒ> * Sakari Ailus <”…””}”hhÙsbhâ)”}”(hŒsakari.ailus@iki.fi\”h]”hŒsakari.ailus@iki.fi”…””}”hh÷sbah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”Œmailto:sakari.ailus@iki.fi”uh1háhhÙubhXG> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ #ifndef __LINUX_MEDIA_H #define __LINUX_MEDIA_H #include #include struct ”…””}”hhÙsbh)”}”(hŒ/:c:type:`media_device_info `”h]”hŒliteral”“”)”}”(hj h]”hŒmedia_device_info”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”(Œxref”Œc”Œc-type”eh"]”h$]”h&]”uh1jhj ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œ)userspace-api/media/mediactl/media-header”Œ refdomain”jŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰Œ reftarget”Œmedia_device_info”uh1hhŸŒ6/var/lib/git/docbuild/linux/include/uapi/linux/media.h”h KhhÙubhXÙ { char driver[16]; char model[32]; char serial[40]; char bus_info[32]; __u32 media_version; __u32 hw_revision; __u32 driver_version; __u32 reserved[31]; }; /* * Base number ranges for entity functions * * NOTE: Userspace should not rely on these ranges to identify a group * of function types, as newer functions can be added with any name within * the full u32 range. * * Some older functions use the MEDIA_ENT_F_OLD_*_BASE range. Do not * change this, this is for backwards compatibility. When adding new * functions always use MEDIA_ENT_F_BASE. */ #define MEDIA_ENT_F_BASE 0x00000000 #define MEDIA_ENT_F_OLD_BASE 0x00010000 #define MEDIA_ENT_F_OLD_SUBDEV_BASE 0x00020000 /* * Initial value to be used when a new entity is created * Drivers should change it to something useful. */ #define ”…””}”hhÙsbh)”}”(hŒ0:ref:`MEDIA_ENT_F_UNKNOWN `”h]”hŒinline”“”)”}”(hj7h]”hŒMEDIA_ENT_F_UNKNOWN”…””}”(hj;hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hj5ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jEŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-ent-f-unknown”uh1hhŸj0h KhhÙubhŒP MEDIA_ENT_F_BASE /* * Subdevs are initialized with ”…””}”hhÙsbh)”}”(hŒH:ref:`MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN `”h]”j:)”}”(hj]h]”hŒMEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN”…””}”(hj_hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hj[ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jiŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-ent-f-v4l2-subdev-unknown”uh1hhŸj0h KhhÙubhŒ’ in order * to preserve backward compatibility. Drivers must change to the proper * subdev type before registering the entity. */ #define ”…””}”hhÙsbh)”}”(hŒH:ref:`MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN `”h]”j:)”}”(hjh]”hŒMEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN”…””}”(hjƒhžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-ent-f-v4l2-subdev-unknown”uh1hhŸj0h KhhÙubhŒX MEDIA_ENT_F_OLD_SUBDEV_BASE /* * DVB entity functions */ #define ”…””}”hhÙsbh)”}”(hŒ4:ref:`MEDIA_ENT_F_DTV_DEMOD `”h]”j:)”}”(hj¥h]”hŒMEDIA_ENT_F_DTV_DEMOD”…””}”(hj§hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hj£ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”j±Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-ent-f-dtv-demod”uh1hhŸj0h KhhÙubhŒ< (MEDIA_ENT_F_BASE + 0x00001) #define ”…””}”hhÙsbh)”}”(hŒ2:ref:`MEDIA_ENT_F_TS_DEMUX `”h]”j:)”}”(hjÉh]”hŒMEDIA_ENT_F_TS_DEMUX”…””}”(hjËhžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hjÇubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jÕŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-ent-f-ts-demux”uh1hhŸj0h KhhÙubhŒ= (MEDIA_ENT_F_BASE + 0x00002) #define ”…””}”hhÙsbh)”}”(hŒ.:ref:`MEDIA_ENT_F_DTV_CA `”h]”j:)”}”(hjíh]”hŒMEDIA_ENT_F_DTV_CA”…””}”(hjïhžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hjëubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jùŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-ent-f-dtv-ca”uh1hhŸj0h KhhÙubhŒ? (MEDIA_ENT_F_BASE + 0x00003) #define ”…””}”hhÙsbh)”}”(hŒ<:ref:`MEDIA_ENT_F_DTV_NET_DECAP `”h]”j:)”}”(hjh]”hŒMEDIA_ENT_F_DTV_NET_DECAP”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-ent-f-dtv-net-decap”uh1hhŸj0h KhhÙubhŒ^ (MEDIA_ENT_F_BASE + 0x00004) /* * I/O entity functions */ #define ”…””}”hhÙsbh)”}”(hŒ.:ref:`MEDIA_ENT_F_IO_V4L `”h]”j:)”}”(hj5h]”hŒMEDIA_ENT_F_IO_V4L”…””}”(hj7hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hj3ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jAŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-ent-f-io-v4l”uh1hhŸj0h KhhÙubhŒ> (MEDIA_ENT_F_OLD_BASE + 1) #define ”…””}”hhÙsbh)”}”(hŒ.:ref:`MEDIA_ENT_F_IO_DTV `”h]”j:)”}”(hjYh]”hŒMEDIA_ENT_F_IO_DTV”…””}”(hj[hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hjWubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jeŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-ent-f-io-dtv”uh1hhŸj0h KhhÙubhŒ? (MEDIA_ENT_F_BASE + 0x01001) #define ”…””}”hhÙsbh)”}”(hŒ.:ref:`MEDIA_ENT_F_IO_VBI `”h]”j:)”}”(hj}h]”hŒMEDIA_ENT_F_IO_VBI”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hj{ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”j‰Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-ent-f-io-vbi”uh1hhŸj0h KhhÙubhŒ? (MEDIA_ENT_F_BASE + 0x01002) #define ”…””}”hhÙsbh)”}”(hŒ6:ref:`MEDIA_ENT_F_IO_SWRADIO `”h]”j:)”}”(hj¡h]”hŒMEDIA_ENT_F_IO_SWRADIO”…””}”(hj£hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hjŸubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”j­Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-ent-f-io-swradio”uh1hhŸj0h KhhÙubhŒ\ (MEDIA_ENT_F_BASE + 0x01003) /* * Sensor functions */ #define ”…””}”hhÙsbh)”}”(hŒ6:ref:`MEDIA_ENT_F_CAM_SENSOR `”h]”j:)”}”(hjÅh]”hŒMEDIA_ENT_F_CAM_SENSOR”…””}”(hjÇhžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hjÃubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jÑŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-ent-f-cam-sensor”uh1hhŸj0h KhhÙubhŒB (MEDIA_ENT_F_OLD_SUBDEV_BASE + 1) #define ”…””}”hhÙsbh)”}”(hŒ,:ref:`MEDIA_ENT_F_FLASH `”h]”j:)”}”(hjéh]”hŒMEDIA_ENT_F_FLASH”…””}”(hjëhžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hjçubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jõŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-ent-f-flash”uh1hhŸj0h KhhÙubhŒG (MEDIA_ENT_F_OLD_SUBDEV_BASE + 2) #define ”…””}”hhÙsbh)”}”(hŒ*:ref:`MEDIA_ENT_F_LENS `”h]”j:)”}”(hj h]”hŒMEDIA_ENT_F_LENS”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hj ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-ent-f-lens”uh1hhŸj0h KhhÙubhX (MEDIA_ENT_F_OLD_SUBDEV_BASE + 3) /* * Digital TV, analog TV, radio and/or software defined radio tuner functions. * * It is a responsibility of the master/bridge drivers to add connectors * and links for MEDIA_ENT_F_TUNER. Please notice that some old tuners * may require the usage of separate I2C chips to decode analog TV signals, * when the master/bridge chipset doesn't have its own TV standard decoder. * On such cases, the IF-PLL staging is mapped via one or two entities: * ”…””}”hhÙsbh)”}”(hŒ>:ref:`MEDIA_ENT_F_IF_VID_DECODER `”h]”j:)”}”(hj1h]”hŒMEDIA_ENT_F_IF_VID_DECODER”…””}”(hj3hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hj/ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”j=Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-ent-f-if-vid-decoder”uh1hhŸj0h KhhÙubhŒ9 and/or MEDIA_ENT_F_IF_AUD_DECODER. */ #define ”…””}”hhÙsbh)”}”(hŒ,:ref:`MEDIA_ENT_F_TUNER `”h]”j:)”}”(hjUh]”hŒMEDIA_ENT_F_TUNER”…””}”(hjWhžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hjSubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jaŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-ent-f-tuner”uh1hhŸj0h KhhÙubhŒÀ (MEDIA_ENT_F_OLD_SUBDEV_BASE + 5) /* * Analog TV IF-PLL decoder functions * * It is a responsibility of the master/bridge drivers to create links * for ”…””}”hhÙsbh)”}”(hŒ>:ref:`MEDIA_ENT_F_IF_VID_DECODER `”h]”j:)”}”(hjyh]”hŒMEDIA_ENT_F_IF_VID_DECODER”…””}”(hj{hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hjwubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”j…Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-ent-f-if-vid-decoder”uh1hhŸj0h KhhÙubhŒ5 and MEDIA_ENT_F_IF_AUD_DECODER. */ #define ”…””}”hhÙsbh)”}”(hŒ>:ref:`MEDIA_ENT_F_IF_VID_DECODER `”h]”j:)”}”(hjh]”hŒMEDIA_ENT_F_IF_VID_DECODER”…””}”(hjŸhžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hj›ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”j©Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-ent-f-if-vid-decoder”uh1hhŸj0h KhhÙubhŒ7 (MEDIA_ENT_F_BASE + 0x02001) #define ”…””}”hhÙsbh)”}”(hŒ>:ref:`MEDIA_ENT_F_IF_AUD_DECODER `”h]”j:)”}”(hjÁh]”hŒMEDIA_ENT_F_IF_AUD_DECODER”…””}”(hjÃhžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hj¿ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jÍŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-ent-f-if-aud-decoder”uh1hhŸj0h KhhÙubhŒ^ (MEDIA_ENT_F_BASE + 0x02002) /* * Audio entity functions */ #define ”…””}”hhÙsbh)”}”(hŒ<:ref:`MEDIA_ENT_F_AUDIO_CAPTURE `”h]”j:)”}”(hjåh]”hŒMEDIA_ENT_F_AUDIO_CAPTURE”…””}”(hjçhžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hjãubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jñŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-ent-f-audio-capture”uh1hhŸj0h KhhÙubhŒ8 (MEDIA_ENT_F_BASE + 0x03001) #define ”…””}”hhÙsbh)”}”(hŒ>:ref:`MEDIA_ENT_F_AUDIO_PLAYBACK `”h]”j:)”}”(hj h]”hŒMEDIA_ENT_F_AUDIO_PLAYBACK”…””}”(hj hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-ent-f-audio-playback”uh1hhŸj0h KhhÙubhŒ7 (MEDIA_ENT_F_BASE + 0x03002) #define ”…””}”hhÙsbh)”}”(hŒ8:ref:`MEDIA_ENT_F_AUDIO_MIXER `”h]”j:)”}”(hj-h]”hŒMEDIA_ENT_F_AUDIO_MIXER”…””}”(hj/hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hj+ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”j9Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-ent-f-audio-mixer”uh1hhŸj0h KhhÙubhŒf (MEDIA_ENT_F_BASE + 0x03003) /* * Processing entity functions */ #define ”…””}”hhÙsbh)”}”(hŒH:ref:`MEDIA_ENT_F_PROC_VIDEO_COMPOSER `”h]”j:)”}”(hjQh]”hŒMEDIA_ENT_F_PROC_VIDEO_COMPOSER”…””}”(hjShžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hjOubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”j]Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-ent-f-proc-video-composer”uh1hhŸj0h KhhÙubhŒ1 (MEDIA_ENT_F_BASE + 0x4001) #define ”…””}”hhÙsbh)”}”(hŒV:ref:`MEDIA_ENT_F_PROC_VIDEO_PIXEL_FORMATTER `”h]”j:)”}”(hjuh]”hŒ&MEDIA_ENT_F_PROC_VIDEO_PIXEL_FORMATTER”…””}”(hjwhžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hjsubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œ&media-ent-f-proc-video-pixel-formatter”uh1hhŸj0h KhhÙubhŒ* (MEDIA_ENT_F_BASE + 0x4002) #define ”…””}”hhÙsbh)”}”(hŒT:ref:`MEDIA_ENT_F_PROC_VIDEO_PIXEL_ENC_CONV `”h]”j:)”}”(hj™h]”hŒ%MEDIA_ENT_F_PROC_VIDEO_PIXEL_ENC_CONV”…””}”(hj›hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hj—ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”j¥Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œ%media-ent-f-proc-video-pixel-enc-conv”uh1hhŸj0h KhhÙubhŒ+ (MEDIA_ENT_F_BASE + 0x4003) #define ”…””}”hhÙsbh)”}”(hŒ>:ref:`MEDIA_ENT_F_PROC_VIDEO_LUT `”h]”j:)”}”(hj½h]”hŒMEDIA_ENT_F_PROC_VIDEO_LUT”…””}”(hj¿hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hj»ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jÉŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-ent-f-proc-video-lut”uh1hhŸj0h KhhÙubhŒ6 (MEDIA_ENT_F_BASE + 0x4004) #define ”…””}”hhÙsbh)”}”(hŒD:ref:`MEDIA_ENT_F_PROC_VIDEO_SCALER `”h]”j:)”}”(hjáh]”hŒMEDIA_ENT_F_PROC_VIDEO_SCALER”…””}”(hjãhžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hjßubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jíŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-ent-f-proc-video-scaler”uh1hhŸj0h KhhÙubhŒ3 (MEDIA_ENT_F_BASE + 0x4005) #define ”…””}”hhÙsbh)”}”(hŒL:ref:`MEDIA_ENT_F_PROC_VIDEO_STATISTICS `”h]”j:)”}”(hjh]”hŒ!MEDIA_ENT_F_PROC_VIDEO_STATISTICS”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œ!media-ent-f-proc-video-statistics”uh1hhŸj0h KhhÙubhŒ/ (MEDIA_ENT_F_BASE + 0x4006) #define ”…””}”hhÙsbh)”}”(hŒF:ref:`MEDIA_ENT_F_PROC_VIDEO_ENCODER `”h]”j:)”}”(hj)h]”hŒMEDIA_ENT_F_PROC_VIDEO_ENCODER”…””}”(hj+hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hj'ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”j5Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-ent-f-proc-video-encoder”uh1hhŸj0h KhhÙubhŒ2 (MEDIA_ENT_F_BASE + 0x4007) #define ”…””}”hhÙsbh)”}”(hŒF:ref:`MEDIA_ENT_F_PROC_VIDEO_DECODER `”h]”j:)”}”(hjMh]”hŒMEDIA_ENT_F_PROC_VIDEO_DECODER”…””}”(hjOhžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hjKubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jYŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-ent-f-proc-video-decoder”uh1hhŸj0h KhhÙubhŒ2 (MEDIA_ENT_F_BASE + 0x4008) #define ”…””}”hhÙsbh)”}”(hŒ>:ref:`MEDIA_ENT_F_PROC_VIDEO_ISP `”h]”j:)”}”(hjqh]”hŒMEDIA_ENT_F_PROC_VIDEO_ISP”…””}”(hjshžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hjoubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”j}Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-ent-f-proc-video-isp”uh1hhŸj0h KhhÙubhŒi (MEDIA_ENT_F_BASE + 0x4009) /* * Switch and bridge entity functions */ #define ”…””}”hhÙsbh)”}”(hŒ0:ref:`MEDIA_ENT_F_VID_MUX `”h]”j:)”}”(hj•h]”hŒMEDIA_ENT_F_VID_MUX”…””}”(hj—hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hj“ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”j¡Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-ent-f-vid-mux”uh1hhŸj0h KhhÙubhŒ= (MEDIA_ENT_F_BASE + 0x5001) #define ”…””}”hhÙsbh)”}”(hŒ<:ref:`MEDIA_ENT_F_VID_IF_BRIDGE `”h]”j:)”}”(hj¹h]”hŒMEDIA_ENT_F_VID_IF_BRIDGE”…””}”(hj»hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hj·ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jÅŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-ent-f-vid-if-bridge”uh1hhŸj0h KhhÙubhŒh (MEDIA_ENT_F_BASE + 0x5002) /* * Video decoder/encoder functions */ #define ”…””}”hhÙsbh)”}”(hŒ8:ref:`MEDIA_ENT_F_ATV_DECODER `”h]”j:)”}”(hjÝh]”hŒMEDIA_ENT_F_ATV_DECODER”…””}”(hjßhžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hjÛubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jéŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-ent-f-atv-decoder”uh1hhŸj0h KhhÙubhŒA (MEDIA_ENT_F_OLD_SUBDEV_BASE + 4) #define ”…””}”hhÙsbh)”}”(hŒ6:ref:`MEDIA_ENT_F_DV_DECODER `”h]”j:)”}”(hjh]”hŒMEDIA_ENT_F_DV_DECODER”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hjÿubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”j Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-ent-f-dv-decoder”uh1hhŸj0h KhhÙubhŒ: (MEDIA_ENT_F_BASE + 0x6001) #define ”…””}”hhÙsbh)”}”(hŒ6:ref:`MEDIA_ENT_F_DV_ENCODER `”h]”j:)”}”(hj%h]”hŒMEDIA_ENT_F_DV_ENCODER”…””}”(hj'hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hj#ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”j1Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-ent-f-dv-encoder”uh1hhŸj0h KhhÙubhŒR (MEDIA_ENT_F_BASE + 0x6002) /* Entity flags */ #define ”…””}”hhÙsbh)”}”(hŒ2:ref:`MEDIA_ENT_FL_DEFAULT `”h]”j:)”}”(hjIh]”hŒMEDIA_ENT_FL_DEFAULT”…””}”(hjKhžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hjGubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jUŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-ent-fl-default”uh1hhŸj0h KhhÙubhŒ) (1U << 0) #define ”…””}”hhÙsbh)”}”(hŒ6:ref:`MEDIA_ENT_FL_CONNECTOR `”h]”j:)”}”(hjmh]”hŒMEDIA_ENT_FL_CONNECTOR”…””}”(hjohžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hjkubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jyŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-ent-fl-connector”uh1hhŸj0h KhhÙubhŒf (1U << 1) /* OR with the entity id value to find the next entity */ #define ”…””}”hhÙsbh)”}”(hŒ6:ref:`MEDIA_ENT_ID_FLAG_NEXT `”h]”j:)”}”(hj‘h]”hŒMEDIA_ENT_ID_FLAG_NEXT”…””}”(hj“hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-ent-id-flag-next”uh1hhŸj0h KhhÙubhŒ' (1U << 31) struct ”…””}”hhÙsbh)”}”(hŒ/:c:type:`media_entity_desc `”h]”j)”}”(hjµh]”hŒmedia_entity_desc”…””}”(hj·hžhhŸNh Nubah}”(h]”h ]”(jjŒc-type”eh"]”h$]”h&]”uh1jhj³ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j.Œmedia_entity_desc”uh1hhŸj0h KhhÙubhXM { __u32 id; char name[32]; __u32 type; __u32 revision; __u32 flags; __u32 group_id; __u16 pads; __u16 links; __u32 reserved[4]; union { /* Node specifications */ struct { __u32 major; __u32 minor; } dev; #if !defined(__KERNEL__) /* * TODO: this shouldn't have been added without * actual drivers that use this. When the first real driver * appears that sets this information, special attention * should be given whether this information is 1) enough, and * 2) can deal with udev rules that rename devices. The struct * dev would not be sufficient for this since that does not * contain the subdevice information. In addition, struct dev * can only refer to a single device, and not to multiple (e.g. * pcm and mixer devices). */ struct { __u32 card; __u32 device; __u32 subdevice; } alsa; /* * ”…””}”hhÙsbhŒstrong”“”)”}”(hŒ**DEPRECATED**”h]”hŒ DEPRECATED”…””}”hjØsbah}”(h]”h ]”h"]”h$]”h&]”uh1jÖhhÙubhXj: previous node specifications. Kept just to * avoid breaking compilation. Use media_entity_desc.dev * instead. */ struct { __u32 major; __u32 minor; } v4l; struct { __u32 major; __u32 minor; } fb; int dvb; #endif /* Sub-device specifications */ /* Nothing needed yet */ __u8 raw[184]; }; }; #define ”…””}”hhÙsbh)”}”(hŒ,:ref:`MEDIA_PAD_FL_SINK `”h]”j:)”}”(hjìh]”hŒMEDIA_PAD_FL_SINK”…””}”(hjîhžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hjêubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jøŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-pad-fl-sink”uh1hhŸj0h KhhÙubhŒ, (1U << 0) #define ”…””}”hhÙsbh)”}”(hŒ0:ref:`MEDIA_PAD_FL_SOURCE `”h]”j:)”}”(hjh]”hŒMEDIA_PAD_FL_SOURCE”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-pad-fl-source”uh1hhŸj0h KhhÙubhŒ* (1U << 1) #define ”…””}”hhÙsbh)”}”(hŒ<:ref:`MEDIA_PAD_FL_MUST_CONNECT `”h]”j:)”}”(hj4h]”hŒMEDIA_PAD_FL_MUST_CONNECT”…””}”(hj6hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hj2ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”j@Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-pad-fl-must-connect”uh1hhŸj0h KhhÙubhŒ# (1U << 2) struct ”…””}”hhÙsbh)”}”(hŒ):c:type:`media_pad_desc `”h]”j)”}”(hjXh]”hŒmedia_pad_desc”…””}”(hjZhžhhŸNh Nubah}”(h]”h ]”(jjŒc-type”eh"]”h$]”h&]”uh1jhjVubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j.Œmedia_pad_desc”uh1hhŸj0h KhhÙubhŒÑ { __u32 entity; /* entity ID */ __u16 index; /* pad index */ __u32 flags; /* pad flags */ __u32 reserved[2]; }; #define ”…””}”hhÙsbh)”}”(hŒ2:ref:`MEDIA_LNK_FL_ENABLED `”h]”j:)”}”(hj{h]”hŒMEDIA_LNK_FL_ENABLED”…””}”(hj}hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hjyubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”j‡Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-lnk-fl-enabled”uh1hhŸj0h KhhÙubhŒ) (1U << 0) #define ”…””}”hhÙsbh)”}”(hŒ6:ref:`MEDIA_LNK_FL_IMMUTABLE `”h]”j:)”}”(hjŸh]”hŒMEDIA_LNK_FL_IMMUTABLE”…””}”(hj¡hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”j«Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-lnk-fl-immutable”uh1hhŸj0h KhhÙubhŒ' (1U << 1) #define ”…””}”hhÙsbh)”}”(hŒ2:ref:`MEDIA_LNK_FL_DYNAMIC `”h]”j:)”}”(hjÃh]”hŒMEDIA_LNK_FL_DYNAMIC”…””}”(hjÅhžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hjÁubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jÏŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-lnk-fl-dynamic”uh1hhŸj0h KhhÙubhŒ* (1U << 2) #define ”…””}”hhÙsbh)”}”(hŒ6:ref:`MEDIA_LNK_FL_LINK_TYPE `”h]”j:)”}”(hjçh]”hŒMEDIA_LNK_FL_LINK_TYPE”…””}”(hjéhžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hjåubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jóŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-lnk-fl-link-type”uh1hhŸj0h KhhÙubhŒ+ (0xf << 28) # define ”…””}”hhÙsbh)”}”(hŒ6:ref:`MEDIA_LNK_FL_DATA_LINK `”h]”j:)”}”(hj h]”hŒMEDIA_LNK_FL_DATA_LINK”…””}”(hj hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hj ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-lnk-fl-data-link”uh1hhŸj0h KhhÙubhŒ( (0U << 28) # define ”…””}”hhÙsbh)”}”(hŒ@:ref:`MEDIA_LNK_FL_INTERFACE_LINK `”h]”j:)”}”(hj/h]”hŒMEDIA_LNK_FL_INTERFACE_LINK”…””}”(hj1hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hj-ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”j;Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-lnk-fl-interface-link”uh1hhŸj0h KhhÙubhŒ# (1U << 28) # define ”…””}”hhÙsbh)”}”(hŒ@:ref:`MEDIA_LNK_FL_ANCILLARY_LINK `”h]”j:)”}”(hjSh]”hŒMEDIA_LNK_FL_ANCILLARY_LINK”…””}”(hjUhžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hjQubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”j_Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-lnk-fl-ancillary-link”uh1hhŸj0h KhhÙubhŒ (2U << 28) struct ”…””}”hhÙsbh)”}”(hŒ+:c:type:`media_link_desc `”h]”j)”}”(hjwh]”hŒmedia_link_desc”…””}”(hjyhžhhŸNh Nubah}”(h]”h ]”(jjŒc-type”eh"]”h$]”h&]”uh1jhjuubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j.Œmedia_link_desc”uh1hhŸj0h KhhÙubhŒ { struct ”…””}”hhÙsbh)”}”(hŒ):c:type:`media_pad_desc `”h]”j)”}”(hjšh]”hŒmedia_pad_desc”…””}”(hjœhžhhŸNh Nubah}”(h]”h ]”(jjŒc-type”eh"]”h$]”h&]”uh1jhj˜ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j.Œmedia_pad_desc”uh1hhŸj0h KhhÙubhŒ source; struct ”…””}”hhÙsbh)”}”(hŒ):c:type:`media_pad_desc `”h]”j)”}”(hj½h]”hŒmedia_pad_desc”…””}”(hj¿hžhhŸNh Nubah}”(h]”h ]”(jjŒc-type”eh"]”h$]”h&]”uh1jhj»ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j.Œmedia_pad_desc”uh1hhŸj0h KhhÙubhŒG sink; __u32 flags; __u32 reserved[2]; }; struct ”…””}”hhÙsbh)”}”(hŒ-:c:type:`media_links_enum `”h]”j)”}”(hjàh]”hŒmedia_links_enum”…””}”(hjâhžhhŸNh Nubah}”(h]”h ]”(jjŒc-type”eh"]”h$]”h&]”uh1jhjÞubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j.Œmedia_links_enum”uh1hhŸj0h KhhÙubhŒg { __u32 entity; /* Should have enough room for pads elements */ struct ”…””}”hhÙsbh)”}”(hŒ):c:type:`media_pad_desc `”h]”j)”}”(hj h]”hŒmedia_pad_desc”…””}”(hj hžhhŸNh Nubah}”(h]”h ]”(jjŒc-type”eh"]”h$]”h&]”uh1jhj ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j.Œmedia_pad_desc”uh1hhŸj0h KhhÙubhŒ^ __user *pads; /* Should have enough room for links elements */ struct ”…””}”hhÙsbh)”}”(hŒ+:c:type:`media_link_desc `”h]”j)”}”(hj& h]”hŒmedia_link_desc”…””}”(hj( hžhhŸNh Nubah}”(h]”h ]”(jjŒc-type”eh"]”h$]”h&]”uh1jhj$ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j.Œmedia_link_desc”uh1hhŸj0h KhhÙubhŒû __user *links; __u32 reserved[4]; }; /* Interface type ranges */ #define MEDIA_INTF_T_DVB_BASE 0x00000100 #define MEDIA_INTF_T_V4L_BASE 0x00000200 /* Interface types */ #define ”…””}”hhÙsbh)”}”(hŒ0:ref:`MEDIA_INTF_T_DVB_FE `”h]”j:)”}”(hjI h]”hŒMEDIA_INTF_T_DVB_FE”…””}”(hjK hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hjG ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jU Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-intf-t-dvb-fe”uh1hhŸj0h KhhÙubhŒ: (MEDIA_INTF_T_DVB_BASE) #define ”…””}”hhÙsbh)”}”(hŒ6:ref:`MEDIA_INTF_T_DVB_DEMUX `”h]”j:)”}”(hjm h]”hŒMEDIA_INTF_T_DVB_DEMUX”…””}”(hjo hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hjk ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jy Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-intf-t-dvb-demux”uh1hhŸj0h KhhÙubhŒ; (MEDIA_INTF_T_DVB_BASE + 1) #define ”…””}”hhÙsbh)”}”(hŒ2:ref:`MEDIA_INTF_T_DVB_DVR `”h]”j:)”}”(hj‘ h]”hŒMEDIA_INTF_T_DVB_DVR”…””}”(hj“ hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hj ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”j Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-intf-t-dvb-dvr”uh1hhŸj0h KhhÙubhŒ= (MEDIA_INTF_T_DVB_BASE + 2) #define ”…””}”hhÙsbh)”}”(hŒ0:ref:`MEDIA_INTF_T_DVB_CA `”h]”j:)”}”(hjµ h]”hŒMEDIA_INTF_T_DVB_CA”…””}”(hj· hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hj³ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jÁ Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-intf-t-dvb-ca”uh1hhŸj0h KhhÙubhŒ> (MEDIA_INTF_T_DVB_BASE + 3) #define ”…””}”hhÙsbh)”}”(hŒ2:ref:`MEDIA_INTF_T_DVB_NET `”h]”j:)”}”(hjÙ h]”hŒMEDIA_INTF_T_DVB_NET”…””}”(hjÛ hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hj× ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jå Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-intf-t-dvb-net”uh1hhŸj0h KhhÙubhŒ> (MEDIA_INTF_T_DVB_BASE + 4) #define ”…””}”hhÙsbh)”}”(hŒ6:ref:`MEDIA_INTF_T_V4L_VIDEO `”h]”j:)”}”(hjý h]”hŒMEDIA_INTF_T_V4L_VIDEO”…””}”(hjÿ hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hjû ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”j Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-intf-t-v4l-video”uh1hhŸj0h KhhÙubhŒ7 (MEDIA_INTF_T_V4L_BASE) #define ”…””}”hhÙsbh)”}”(hŒ2:ref:`MEDIA_INTF_T_V4L_VBI `”h]”j:)”}”(hj! h]”hŒMEDIA_INTF_T_V4L_VBI”…””}”(hj# hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hj ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”j- Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-intf-t-v4l-vbi”uh1hhŸj0h KhhÙubhŒ= (MEDIA_INTF_T_V4L_BASE + 1) #define ”…””}”hhÙsbh)”}”(hŒ6:ref:`MEDIA_INTF_T_V4L_RADIO `”h]”j:)”}”(hjE h]”hŒMEDIA_INTF_T_V4L_RADIO”…””}”(hjG hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hjC ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jQ Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-intf-t-v4l-radio”uh1hhŸj0h KhhÙubhŒ; (MEDIA_INTF_T_V4L_BASE + 2) #define ”…””}”hhÙsbh)”}”(hŒ8:ref:`MEDIA_INTF_T_V4L_SUBDEV `”h]”j:)”}”(hji h]”hŒMEDIA_INTF_T_V4L_SUBDEV”…””}”(hjk hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hjg ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”ju Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-intf-t-v4l-subdev”uh1hhŸj0h KhhÙubhŒ: (MEDIA_INTF_T_V4L_BASE + 3) #define ”…””}”hhÙsbh)”}”(hŒ::ref:`MEDIA_INTF_T_V4L_SWRADIO `”h]”j:)”}”(hj h]”hŒMEDIA_INTF_T_V4L_SWRADIO”…””}”(hj hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hj‹ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”j™ Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-intf-t-v4l-swradio”uh1hhŸj0h KhhÙubhŒ9 (MEDIA_INTF_T_V4L_BASE + 4) #define ”…””}”hhÙsbh)”}”(hŒ6:ref:`MEDIA_INTF_T_V4L_TOUCH `”h]”j:)”}”(hj± h]”hŒMEDIA_INTF_T_V4L_TOUCH”…””}”(hj³ hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hj¯ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”j½ Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-intf-t-v4l-touch”uh1hhŸj0h KhhÙubhŒ| (MEDIA_INTF_T_V4L_BASE + 5) #define MEDIA_INTF_T_ALSA_BASE 0x00000300 #define ”…””}”hhÙsbh)”}”(hŒD:ref:`MEDIA_INTF_T_ALSA_PCM_CAPTURE `”h]”j:)”}”(hjÕ h]”hŒMEDIA_INTF_T_ALSA_PCM_CAPTURE”…””}”(hj× hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hjÓ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”já Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-intf-t-alsa-pcm-capture”uh1hhŸj0h KhhÙubhŒ1 (MEDIA_INTF_T_ALSA_BASE) #define ”…””}”hhÙsbh)”}”(hŒF:ref:`MEDIA_INTF_T_ALSA_PCM_PLAYBACK `”h]”j:)”}”(hjù h]”hŒMEDIA_INTF_T_ALSA_PCM_PLAYBACK”…””}”(hjû hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hj÷ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”j Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-intf-t-alsa-pcm-playback”uh1hhŸj0h KhhÙubhŒ4 (MEDIA_INTF_T_ALSA_BASE + 1) #define ”…””}”hhÙsbh)”}”(hŒ<:ref:`MEDIA_INTF_T_ALSA_CONTROL `”h]”j:)”}”(hj h]”hŒMEDIA_INTF_T_ALSA_CONTROL”…””}”(hj hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hj ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”j) Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-intf-t-alsa-control”uh1hhŸj0h KhhÙubhX* (MEDIA_INTF_T_ALSA_BASE + 2) #if defined(__KERNEL__) /* * Connector functions * * For now these should not be used in userspace, as some definitions may * change. * * It is the responsibility of the entity drivers to add connectors and links. */ #define ”…””}”hhÙsbh)”}”(hŒ0:ref:`MEDIA_ENT_F_CONN_RF `”h]”j:)”}”(hjA h]”hŒMEDIA_ENT_F_CONN_RF”…””}”(hjC hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hj? ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jM Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-ent-f-conn-rf”uh1hhŸj0h KhhÙubhŒ> (MEDIA_ENT_F_BASE + 0x30001) #define ”…””}”hhÙsbh)”}”(hŒ8:ref:`MEDIA_ENT_F_CONN_SVIDEO `”h]”j:)”}”(hje h]”hŒMEDIA_ENT_F_CONN_SVIDEO”…””}”(hjg hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hjc ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jq Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-ent-f-conn-svideo”uh1hhŸj0h KhhÙubhŒ: (MEDIA_ENT_F_BASE + 0x30002) #define ”…””}”hhÙsbh)”}”(hŒ>:ref:`MEDIA_ENT_F_CONN_COMPOSITE `”h]”j:)”}”(hj‰ h]”hŒMEDIA_ENT_F_CONN_COMPOSITE”…””}”(hj‹ hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hj‡ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”j• Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-ent-f-conn-composite”uh1hhŸj0h KhhÙubhXx (MEDIA_ENT_F_BASE + 0x30003) #endif /* * MC next gen API definitions */ /* * Appeared in 4.19.0. * * The media_version argument comes from the media_version field in * struct media_device_info. */ #define MEDIA_V2_ENTITY_HAS_FLAGS(media_version) \ ((media_version) >= ((4U << 16) | (19U << 8) | 0U)) struct ”…””}”hhÙsbh)”}”(hŒ+:c:type:`media_v2_entity `”h]”j)”}”(hj­ h]”hŒmedia_v2_entity”…””}”(hj¯ hžhhŸNh Nubah}”(h]”h ]”(jjŒc-type”eh"]”h$]”h&]”uh1jhj« ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j.Œmedia_v2_entity”uh1hhŸj0h KhhÙubhX { __u32 id; char name[64]; __u32 function; /* Main function of the entity */ __u32 flags; __u32 reserved[5]; } __attribute__ ((packed)); /* Should match the specific fields at media_intf_devnode */ struct ”…””}”hhÙsbh)”}”(hŒ7:c:type:`media_v2_intf_devnode `”h]”j)”}”(hjÐ h]”hŒmedia_v2_intf_devnode”…””}”(hjÒ hžhhŸNh Nubah}”(h]”h ]”(jjŒc-type”eh"]”h$]”h&]”uh1jhjÎ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j.Œmedia_v2_intf_devnode”uh1hhŸj0h KhhÙubhŒ[ { __u32 major; __u32 minor; } __attribute__ ((packed)); struct ”…””}”hhÙsbh)”}”(hŒ1:c:type:`media_v2_interface `”h]”j)”}”(hjó h]”hŒmedia_v2_interface”…””}”(hjõ hžhhŸNh Nubah}”(h]”h ]”(jjŒc-type”eh"]”h$]”h&]”uh1jhjñ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j.Œmedia_v2_interface”uh1hhŸj0h KhhÙubhŒ‘ { __u32 id; __u32 intf_type; __u32 flags; __u32 reserved[9]; union { struct ”…””}”hhÙsbh)”}”(hŒ7:c:type:`media_v2_intf_devnode `”h]”j)”}”(hj h]”hŒmedia_v2_intf_devnode”…””}”(hj hžhhŸNh Nubah}”(h]”h ]”(jjŒc-type”eh"]”h$]”h&]”uh1jhj ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j.Œmedia_v2_intf_devnode”uh1hhŸj0h KhhÙubhXj devnode; __u32 raw[16]; }; } __attribute__ ((packed)); /* * Appeared in 4.19.0. * * The media_version argument comes from the media_version field in * struct media_device_info. */ #define MEDIA_V2_PAD_HAS_INDEX(media_version) \ ((media_version) >= ((4U << 16) | (19U << 8) | 0U)) struct ”…””}”hhÙsbh)”}”(hŒ%:c:type:`media_v2_pad `”h]”j)”}”(hj9 h]”hŒ media_v2_pad”…””}”(hj; hžhhŸNh Nubah}”(h]”h ]”(jjŒc-type”eh"]”h$]”h&]”uh1jhj7 ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j.Œ media_v2_pad”uh1hhŸj0h KhhÙubhŒ¨ { __u32 id; __u32 entity_id; __u32 flags; __u32 index; __u32 reserved[4]; } __attribute__ ((packed)); struct ”…””}”hhÙsbh)”}”(hŒ':c:type:`media_v2_link `”h]”j)”}”(hj\ h]”hŒ media_v2_link”…””}”(hj^ hžhhŸNh Nubah}”(h]”h ]”(jjŒc-type”eh"]”h$]”h&]”uh1jhjZ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j.Œ media_v2_link”uh1hhŸj0h KhhÙubhŒ« { __u32 id; __u32 source_id; __u32 sink_id; __u32 flags; __u32 reserved[6]; } __attribute__ ((packed)); struct ”…””}”hhÙsbh)”}”(hŒ/:c:type:`media_v2_topology `”h]”j)”}”(hj h]”hŒmedia_v2_topology”…””}”(hj hžhhŸNh Nubah}”(h]”h ]”(jjŒc-type”eh"]”h$]”h&]”uh1jhj} ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j.Œmedia_v2_topology”uh1hhŸj0h KhhÙubhX { __u64 topology_version; __u32 num_entities; __u32 reserved1; __u64 ptr_entities; __u32 num_interfaces; __u32 reserved2; __u64 ptr_interfaces; __u32 num_pads; __u32 reserved3; __u64 ptr_pads; __u32 num_links; __u32 reserved4; __u64 ptr_links; } __attribute__ ((packed)); /* ioctls */ #define ”…””•’>}”hhÙsbh)”}”(hŒ4:ref:`MEDIA_IOC_DEVICE_INFO `”h]”j:)”}”(hj¢ h]”hŒMEDIA_IOC_DEVICE_INFO”…””}”(hj¤ hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hj  ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”j® Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia_ioc_device_info”uh1hhŸj0h KhhÙubhŒ _IOWR('|', 0x00, struct ”…””}”hhÙsbh)”}”(hŒ/:c:type:`media_device_info `”h]”j)”}”(hjÆ h]”hŒmedia_device_info”…””}”(hjÈ hžhhŸNh Nubah}”(h]”h ]”(jjŒc-type”eh"]”h$]”h&]”uh1jhjÄ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j.Œmedia_device_info”uh1hhŸj0h KhhÙubhŒ ) #define ”…””}”hhÙsbh)”}”(hŒ8:ref:`MEDIA_IOC_ENUM_ENTITIES `”h]”j:)”}”(hjé h]”hŒMEDIA_IOC_ENUM_ENTITIES”…””}”(hjë hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hjç ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jõ Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia_ioc_enum_entities”uh1hhŸj0h KhhÙubhŒ _IOWR('|', 0x01, struct ”…””}”hhÙsbh)”}”(hŒ/:c:type:`media_entity_desc `”h]”j)”}”(hj h]”hŒmedia_entity_desc”…””}”(hj hžhhŸNh Nubah}”(h]”h ]”(jjŒc-type”eh"]”h$]”h&]”uh1jhj ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j.Œmedia_entity_desc”uh1hhŸj0h KhhÙubhŒ ) #define ”…””}”hhÙsbh)”}”(hŒ2:ref:`MEDIA_IOC_ENUM_LINKS `”h]”j:)”}”(hj0 h]”hŒMEDIA_IOC_ENUM_LINKS”…””}”(hj2 hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hj. ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”j< Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia_ioc_enum_links”uh1hhŸj0h KhhÙubhŒ _IOWR('|', 0x02, struct ”…””}”hhÙsbh)”}”(hŒ-:c:type:`media_links_enum `”h]”j)”}”(hjT h]”hŒmedia_links_enum”…””}”(hjV hžhhŸNh Nubah}”(h]”h ]”(jjŒc-type”eh"]”h$]”h&]”uh1jhjR ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j.Œmedia_links_enum”uh1hhŸj0h KhhÙubhŒ ) #define ”…””}”hhÙsbh)”}”(hŒ2:ref:`MEDIA_IOC_SETUP_LINK `”h]”j:)”}”(hjw h]”hŒMEDIA_IOC_SETUP_LINK”…””}”(hjy hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hju ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jƒ Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia_ioc_setup_link”uh1hhŸj0h KhhÙubhŒ _IOWR('|', 0x03, struct ”…””}”hhÙsbh)”}”(hŒ+:c:type:`media_link_desc `”h]”j)”}”(hj› h]”hŒmedia_link_desc”…””}”(hj hžhhŸNh Nubah}”(h]”h ]”(jjŒc-type”eh"]”h$]”h&]”uh1jhj™ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j.Œmedia_link_desc”uh1hhŸj0h KhhÙubhŒ ) #define ”…””}”hhÙsbh)”}”(hŒ2:ref:`MEDIA_IOC_G_TOPOLOGY `”h]”j:)”}”(hj¾ h]”hŒMEDIA_IOC_G_TOPOLOGY”…””}”(hjÀ hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hj¼ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jÊ Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia_ioc_g_topology”uh1hhŸj0h KhhÙubhŒ _IOWR('|', 0x04, struct ”…””}”hhÙsbh)”}”(hŒ/:c:type:`media_v2_topology `”h]”j)”}”(hjâ h]”hŒmedia_v2_topology”…””}”(hjä hžhhŸNh Nubah}”(h]”h ]”(jjŒc-type”eh"]”h$]”h&]”uh1jhjà ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j.Œmedia_v2_topology”uh1hhŸj0h KhhÙubhŒ ) #define ”…””}”hhÙsbh)”}”(hŒ8:ref:`MEDIA_IOC_REQUEST_ALLOC `”h]”j:)”}”(hjh]”hŒMEDIA_IOC_REQUEST_ALLOC”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia_ioc_request_alloc”uh1hhŸj0h KhhÙubhŒ˜ _IOR ('|', 0x05, int) /* * These ioctls are called on the request file descriptor as returned * by MEDIA_IOC_REQUEST_ALLOC. */ #define ”…””}”hhÙsbh)”}”(hŒ8:ref:`MEDIA_REQUEST_IOC_QUEUE `”h]”j:)”}”(hj)h]”hŒMEDIA_REQUEST_IOC_QUEUE”…””}”(hj+hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hj'ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”j5Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia_request_ioc_queue”uh1hhŸj0h KhhÙubhŒ$ _IO('|', 0x80) #define ”…””}”hhÙsbh)”}”(hŒ::ref:`MEDIA_REQUEST_IOC_REINIT `”h]”j:)”}”(hjMh]”hŒMEDIA_REQUEST_IOC_REINIT”…””}”(hjOhžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hjKubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jYŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia_request_ioc_reinit”uh1hhŸj0h KhhÙubhX= _IO('|', 0x81) #ifndef __KERNEL__ /* * Legacy symbols used to avoid userspace compilation breakages. * Do not use any of this in new applications! * * Those symbols map the entity function into types and should be * used only on legacy programs for legacy hardware. Don't rely * on those for MEDIA_IOC_G_TOPOLOGY. */ #define MEDIA_ENT_TYPE_SHIFT 16 #define MEDIA_ENT_TYPE_MASK 0x00ff0000 #define MEDIA_ENT_SUBTYPE_MASK 0x0000ffff #define MEDIA_ENT_T_DEVNODE_UNKNOWN (MEDIA_ENT_F_OLD_BASE | \ MEDIA_ENT_SUBTYPE_MASK) #define MEDIA_ENT_T_DEVNODE MEDIA_ENT_F_OLD_BASE #define MEDIA_ENT_T_DEVNODE_V4L ”…””}”hhÙsbh)”}”(hŒ.:ref:`MEDIA_ENT_F_IO_V4L `”h]”j:)”}”(hjqh]”hŒMEDIA_ENT_F_IO_V4L”…””}”(hjshžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hjoubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”j}Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-ent-f-io-v4l”uh1hhŸj0h KhhÙubhX2 #define MEDIA_ENT_T_DEVNODE_FB (MEDIA_ENT_F_OLD_BASE + 2) #define MEDIA_ENT_T_DEVNODE_ALSA (MEDIA_ENT_F_OLD_BASE + 3) #define MEDIA_ENT_T_DEVNODE_DVB (MEDIA_ENT_F_OLD_BASE + 4) #define MEDIA_ENT_T_UNKNOWN ”…””}”hhÙsbh)”}”(hŒ0:ref:`MEDIA_ENT_F_UNKNOWN `”h]”j:)”}”(hj•h]”hŒMEDIA_ENT_F_UNKNOWN”…””}”(hj—hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hj“ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”j¡Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-ent-f-unknown”uh1hhŸj0h KhhÙubhŒ6 #define MEDIA_ENT_T_V4L2_VIDEO ”…””}”hhÙsbh)”}”(hŒ.:ref:`MEDIA_ENT_F_IO_V4L `”h]”j:)”}”(hj¹h]”hŒMEDIA_ENT_F_IO_V4L”…””}”(hj»hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hj·ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jÅŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-ent-f-io-v4l”uh1hhŸj0h KhhÙubhŒ6 #define MEDIA_ENT_T_V4L2_SUBDEV ”…””}”hhÙsbh)”}”(hŒH:ref:`MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN `”h]”j:)”}”(hjÝh]”hŒMEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN”…””}”(hjßhžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hjÛubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jéŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-ent-f-v4l2-subdev-unknown”uh1hhŸj0h KhhÙubhŒ7 #define MEDIA_ENT_T_V4L2_SUBDEV_SENSOR ”…””}”hhÙsbh)”}”(hŒ6:ref:`MEDIA_ENT_F_CAM_SENSOR `”h]”j:)”}”(hjh]”hŒMEDIA_ENT_F_CAM_SENSOR”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hjÿubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”j Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-ent-f-cam-sensor”uh1hhŸj0h KhhÙubhŒ7 #define MEDIA_ENT_T_V4L2_SUBDEV_FLASH ”…””}”hhÙsbh)”}”(hŒ,:ref:`MEDIA_ENT_F_FLASH `”h]”j:)”}”(hj%h]”hŒMEDIA_ENT_F_FLASH”…””}”(hj'hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hj#ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”j1Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-ent-f-flash”uh1hhŸj0h KhhÙubhŒ7 #define MEDIA_ENT_T_V4L2_SUBDEV_LENS ”…””}”hhÙsbh)”}”(hŒ*:ref:`MEDIA_ENT_F_LENS `”h]”j:)”}”(hjIh]”hŒMEDIA_ENT_F_LENS”…””}”(hjKhžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hjGubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jUŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-ent-f-lens”uh1hhŸj0h KhhÙubhŒ7 #define MEDIA_ENT_T_V4L2_SUBDEV_DECODER ”…””}”hhÙsbh)”}”(hŒ8:ref:`MEDIA_ENT_F_ATV_DECODER `”h]”j:)”}”(hjmh]”hŒMEDIA_ENT_F_ATV_DECODER”…””}”(hjohžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hjkubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jyŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-ent-f-atv-decoder”uh1hhŸj0h KhhÙubhŒ7 #define MEDIA_ENT_T_V4L2_SUBDEV_TUNER ”…””}”hhÙsbh)”}”(hŒ,:ref:`MEDIA_ENT_F_TUNER `”h]”j:)”}”(hj‘h]”hŒMEDIA_ENT_F_TUNER”…””}”(hj“hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-ent-f-tuner”uh1hhŸj0h KhhÙubhŒ7 #define MEDIA_ENT_F_DTV_DECODER ”…””}”hhÙsbh)”}”(hŒ6:ref:`MEDIA_ENT_F_DV_DECODER `”h]”j:)”}”(hjµh]”hŒMEDIA_ENT_F_DV_DECODER”…””}”(hj·hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hj³ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jÁŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-ent-f-dv-decoder”uh1hhŸj0h KhhÙubhX² /* * There is still no full ALSA support in the media controller. These * defines should not have been added and we leave them here only * in case some application tries to use these defines. * * The ALSA defines that are in use have been moved into __KERNEL__ * scope. As support gets added to these interface types, they should * be moved into __KERNEL__ scope with the code that uses them. */ #define ”…””}”hhÙsbh)”}”(hŒ>:ref:`MEDIA_INTF_T_ALSA_COMPRESS `”h]”j:)”}”(hjÙh]”hŒMEDIA_INTF_T_ALSA_COMPRESS”…””}”(hjÛhžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hj×ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jåŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-intf-t-alsa-compress”uh1hhŸj0h KhhÙubhŒ7 (MEDIA_INTF_T_ALSA_BASE + 3) #define ”…””}”hhÙsbh)”}”(hŒ<:ref:`MEDIA_INTF_T_ALSA_RAWMIDI `”h]”j:)”}”(hjýh]”hŒMEDIA_INTF_T_ALSA_RAWMIDI”…””}”(hjÿhžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hjûubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”j Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-intf-t-alsa-rawmidi”uh1hhŸj0h KhhÙubhŒ8 (MEDIA_INTF_T_ALSA_BASE + 4) #define ”…””}”hhÙsbh)”}”(hŒ8:ref:`MEDIA_INTF_T_ALSA_HWDEP `”h]”j:)”}”(hj!h]”hŒMEDIA_INTF_T_ALSA_HWDEP”…””}”(hj#hžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”j-Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-intf-t-alsa-hwdep”uh1hhŸj0h KhhÙubhŒ: (MEDIA_INTF_T_ALSA_BASE + 5) #define ”…””}”hhÙsbh)”}”(hŒ@:ref:`MEDIA_INTF_T_ALSA_SEQUENCER `”h]”j:)”}”(hjEh]”hŒMEDIA_INTF_T_ALSA_SEQUENCER”…””}”(hjGhžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hjCubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”jQŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-intf-t-alsa-sequencer”uh1hhŸj0h KhhÙubhŒ6 (MEDIA_INTF_T_ALSA_BASE + 6) #define ”…””}”hhÙsbh)”}”(hŒ8:ref:`MEDIA_INTF_T_ALSA_TIMER `”h]”j:)”}”(hjih]”hŒMEDIA_INTF_T_ALSA_TIMER”…””}”(hjkhžhhŸNh Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j9hjgubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j(Œ refdomain”juŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj.Œmedia-intf-t-alsa-timer”uh1hhŸj0h KhhÙubhX (MEDIA_INTF_T_ALSA_BASE + 7) /* Obsolete symbol for media_version, no longer used in the kernel */ #define MEDIA_API_VERSION ((0U << 16) | (1U << 8) | 0U) #endif #endif /* __LINUX_MEDIA_H */”…””}”hhÙsbeh}”(h]”h ]”h"]”h$]”h&]”h±h²uh1h×h KhhÄhžhhŸŒMinternal padding after /var/lib/git/docbuild/linux/include/uapi/linux/media.h”ubeh}”(h]”(Œmedia-controller-header-file”hÁeh ]”h"]”(Œmedia controller header file”Œ media_header”eh$]”h&]”uh1hÂhhhžhhŸh³h KŒexpect_referenced_by_name”}”j˜h¶sŒexpect_referenced_by_id”}”hÁh¶subeh}”(h]”h ]”h"]”h$]”h&]”Œsource”h³uh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)”}”(hÇNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”jÂŒerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”h³Œ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”hÁ]”h¶asŒnameids”}”(j˜hÁj—j”uŒ nametypes”}”(j˜ˆj—‰uh}”(hÁhÄj”hÄuŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”hŒsystem_message”“”)”}”(hhh]”hŒ paragraph”“”)”}”(hhh]”hŒ2Hyperlink target "media-header" is not referenced.”…””}”hj.sbah}”(h]”h ]”h"]”h$]”h&]”uh1j,hj)ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”ŒINFO”Œsource”h³Œline”Kuh1j'ubaŒ transformer”NŒ include_log”]”Œ decoration”Nhžhub.