sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget./translations/zh_CN/driver-api/media/dtv-demuxmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget./translations/zh_TW/driver-api/media/dtv-demuxmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget./translations/it_IT/driver-api/media/dtv-demuxmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget./translations/ja_JP/driver-api/media/dtv-demuxmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget./translations/ko_KR/driver-api/media/dtv-demuxmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hPortuguese (Brazilian)}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget./translations/pt_BR/driver-api/media/dtv-demuxmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget./translations/sp_SP/driver-api/media/dtv-demuxmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhcomment)}(h SPDX-License-Identifier: GPL-2.0h]h SPDX-License-Identifier: GPL-2.0}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhhH/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux.rsthKubhsection)}(hhh](htitle)}(hDigital TV Demux kABIh]hDigital TV Demux kABI}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hDigital TV Demuxh]hDigital TV Demux}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh paragraph)}(hX1The Kernel Digital TV Demux kABI defines a driver-internal interface for registering low-level, hardware specific driver to a hardware independent demux layer. It is only of interest for Digital TV device driver writers. The header file for this kABI is named ``demux.h`` and located in ``include/media``.h](hXThe Kernel Digital TV Demux kABI defines a driver-internal interface for registering low-level, hardware specific driver to a hardware independent demux layer. It is only of interest for Digital TV device driver writers. The header file for this kABI is named }(hhhhhNhNubhliteral)}(h ``demux.h``h]hdemux.h}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhubh and located in }(hhhhhNhNubh)}(h``include/media``h]h include/media}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhubh.}(hhhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK hhhhubh)}(hXThe demux kABI should be implemented for each demux in the system. It is used to select the TS source of a demux and to manage the demux resources. When the demux client allocates a resource via the demux kABI, it receives a pointer to the kABI of that resource.h]hXThe demux kABI should be implemented for each demux in the system. It is used to select the TS source of a demux and to manage the demux resources. When the demux client allocates a resource via the demux kABI, it receives a pointer to the kABI of that resource.}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hX Each demux receives its TS input from a DVB front-end or from memory, as set via this demux kABI. In a system with more than one front-end, the kABI can be used to select one of the DVB front-ends as a TS source for a demux, unless this is fixed in the HW platform.h]hX Each demux receives its TS input from a DVB front-end or from memory, as set via this demux kABI. In a system with more than one front-end, the kABI can be used to select one of the DVB front-ends as a TS source for a demux, unless this is fixed in the HW platform.}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hThe demux kABI only controls front-ends regarding to their connections with demuxes; the kABI used to set the other front-end parameters, such as tuning, are defined via the Digital TV Frontend kABI.h]hThe demux kABI only controls front-ends regarding to their connections with demuxes; the kABI used to set the other front-end parameters, such as tuning, are defined via the Digital TV Frontend kABI.}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hXThe functions that implement the abstract interface demux should be defined static or module private and registered to the Demux core for external access. It is not necessary to implement every function in the struct :c:type:`dmx_demux`. For example, a demux interface might support Section filtering, but not PES filtering. The kABI client is expected to check the value of any function pointer before calling the function: the value of ``NULL`` means that the function is not available.h](hThe functions that implement the abstract interface demux should be defined static or module private and registered to the Demux core for external access. It is not necessary to implement every function in the struct }(hjNhhhNhNubh)}(h:c:type:`dmx_demux`h]h)}(hjXh]h dmx_demux}(hjZhhhNhNubah}(h]h ](xrefcc-typeeh"]h$]h&]uh1hhjVubah}(h]h ]h"]h$]h&]refdocdriver-api/media/dtv-demux refdomainjereftypetype refexplicitrefwarn reftarget dmx_demuxuh1hhhhKhjNubh. For example, a demux interface might support Section filtering, but not PES filtering. The kABI client is expected to check the value of any function pointer before calling the function: the value of }(hjNhhhNhNubh)}(h``NULL``h]hNULL}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjNubh* means that the function is not available.}(hjNhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hWhenever the functions of the demux API modify shared data, the possibilities of lost update and race condition problems should be addressed, e.g. by protecting parts of code with mutexes.h]hWhenever the functions of the demux API modify shared data, the possibilities of lost update and race condition problems should be addressed, e.g. by protecting parts of code with mutexes.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK%hhhhubh)}(hXNote that functions called from a bottom half context must not sleep. Even a simple memory allocation without using ``GFP_ATOMIC`` can result in a kernel thread being put to sleep if swapping is needed. For example, the Linux Kernel calls the functions of a network device interface from a bottom half context. Thus, if a demux kABI function is called from network device code, the function must not sleep.h](htNote that functions called from a bottom half context must not sleep. Even a simple memory allocation without using }(hjhhhNhNubh)}(h``GFP_ATOMIC``h]h GFP_ATOMIC}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubhX can result in a kernel thread being put to sleep if swapping is needed. For example, the Linux Kernel calls the functions of a network device interface from a bottom half context. Thus, if a demux kABI function is called from network device code, the function must not sleep.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK)hhhhubeh}(h]digital-tv-demuxah ]h"]digital tv demuxah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hDemux Callback APIh]hDemux Callback API}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK1ubh)}(hThis kernel-space API comprises the callback functions that deliver filtered data to the demux client. Unlike the other DVB kABIs, these functions are provided by the client and called from the demux code.h]hThis kernel-space API comprises the callback functions that deliver filtered data to the demux client. Unlike the other DVB kABIs, these functions are provided by the client and called from the demux code.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK3hjhhubh)}(hX\The function pointers of this abstract interface are not packed into a structure as in the other demux APIs, because the callback functions are registered and used independent of each other. As an example, it is possible for the API client to provide several callback functions for receiving TS packets and no callbacks for PES packets or sections.h]hX\The function pointers of this abstract interface are not packed into a structure as in the other demux APIs, because the callback functions are registered and used independent of each other. As an example, it is possible for the API client to provide several callback functions for receiving TS packets and no callbacks for PES packets or sections.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK7hjhhubh)}(hXThe functions that implement the callback API need not be re-entrant: when a demux driver calls one of these functions, the driver is not allowed to call the function again before the original call returns. If a callback is triggered by a hardware interrupt, it is recommended to use the Linux bottom half mechanism or start a tasklet instead of making the callback function call directly from a hardware interrupt.h]hXThe functions that implement the callback API need not be re-entrant: when a demux driver calls one of these functions, the driver is not allowed to call the function again before the original call returns. If a callback is triggered by a hardware interrupt, it is recommended to use the Linux bottom half mechanism or start a tasklet instead of making the callback function call directly from a hardware interrupt.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK=hjhhubh)}(h`This mechanism is implemented by :c:func:`dmx_ts_cb()` and :c:func:`dmx_section_cb()` callbacks.h](h!This mechanism is implemented by }(hjhhhNhNubh)}(h:c:func:`dmx_ts_cb()`h]h)}(hjh]h dmx_ts_cb()}(hjhhhNhNubah}(h]h ](jdjec-funceh"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypefunc refexplicitrefwarnjw dmx_ts_cbuh1hhhhKDhjubh and }(hjhhhNhNubh)}(h:c:func:`dmx_section_cb()`h]h)}(hj3h]hdmx_section_cb()}(hj5hhhNhNubah}(h]h ](jdjec-funceh"]h$]h&]uh1hhj1ubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypefunc refexplicitrefwarnjwdmx_section_cbuh1hhhhKDhjubh callbacks.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKDhjhhubeh}(h]demux-callback-apiah ]h"]demux callback apiah$]h&]uh1hhhhhhhhK1ubh)}(hhh](h)}(hBDigital TV Demux device registration functions and data structuresh]hBDigital TV Demux device registration functions and data structures}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhjbhhhhhKHubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](singledmxdev_type (C enum) c.dmxdev_typehNtauh1jshjbhhhNhNubhdesc)}(hhh](hdesc_signature)}(h dmxdev_typeh]hdesc_signature_line)}(henum dmxdev_typeh](hdesc_sig_keyword)}(henumh]henum}(hjhhhNhNubah}(h]h ]kah"]h$]h&]uh1jhjhhha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKubhdesc_sig_space)}(h h]h }(hjhhhNhNubah}(h]h ]wah"]h$]h&]uh1jhjhhhjhKubh desc_name)}(h dmxdev_typeh]h desc_sig_name)}(hjh]h dmxdev_type}(hjhhhNhNubah}(h]h ]nah"]h$]h&]uh1jhjubah}(h]h ](sig-namedescnameeh"]h$]h&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hhƌ add_permalinkuh1jsphinx_line_type declaratorhjhhhjhKubah}(h]jah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1jhjhKhjhhubh desc_content)}(hhh]h)}(htype of demux filter type.h]htype of demux filter type.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhK(hjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jeenumeh"]h$]h&]domainjeobjtypejdesctypejnoindex noindexentrynocontentsentryuh1jhhhjbhNhNubh container)}(h**Constants** ``DMXDEV_TYPE_NONE`` no filter set. ``DMXDEV_TYPE_SEC`` section filter. ``DMXDEV_TYPE_PES`` Program Elementary Stream (PES) filter.h](h)}(h **Constants**h]hstrong)}(hjh]h Constants}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhK,hjubhdefinition_list)}(hhh](hdefinition_list_item)}(h$``DMXDEV_TYPE_NONE`` no filter set. h](hterm)}(h``DMXDEV_TYPE_NONE``h]h)}(hj@h]hDMXDEV_TYPE_NONE}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>ubah}(h]h ]h"]h$]h&]uh1j<ha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhK/hj8ubh definition)}(hhh]h)}(hno filter set.h]hno filter set.}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjUhK/hjXubah}(h]h ]h"]h$]h&]uh1jVhj8ubeh}(h]h ]h"]h$]h&]uh1j6hjUhK/hj3ubj7)}(h$``DMXDEV_TYPE_SEC`` section filter. h](j=)}(h``DMXDEV_TYPE_SEC``h]h)}(hj{h]hDMXDEV_TYPE_SEC}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjyubah}(h]h ]h"]h$]h&]uh1j<ha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhK2hjuubjW)}(hhh]h)}(hsection filter.h]hsection filter.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK2hjubah}(h]h ]h"]h$]h&]uh1jVhjuubeh}(h]h ]h"]h$]h&]uh1j6hjhK2hj3ubj7)}(h;``DMXDEV_TYPE_PES`` Program Elementary Stream (PES) filter.h](j=)}(h``DMXDEV_TYPE_PES``h]h)}(hjh]hDMXDEV_TYPE_PES}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j<ha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhK4hjubjW)}(hhh]h)}(h'Program Elementary Stream (PES) filter.h]h'Program Elementary Stream (PES) filter.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhK5hjubah}(h]h ]h"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]uh1j6hjhK4hj3ubeh}(h]h ]h"]h$]h&]uh1j1hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjbhhhNhNubjt)}(hhh]h}(h]h ]h"]h$]h&]entries](jdmxdev_state (C enum)c.dmxdev_statehNtauh1jshjbhhhNhNubj)}(hhh](j)}(h dmxdev_stateh]j)}(henum dmxdev_stateh](j)}(hjh]henum}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhK:ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhjhK:ubj)}(h dmxdev_stateh]j)}(hjh]h dmxdev_state}(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj hhhjhK:ubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhjhK:ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jhjhK:hjhhubj)}(hhh]h)}(hstate machine for the dmxdev.h]hstate machine for the dmxdev.}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhK5hjMhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhK:ubeh}(h]h ](jeenumeh"]h$]h&]j jej jhj jhjjjuh1jhhhjbhNhNubj)}(hX **Constants** ``DMXDEV_STATE_FREE`` indicates that the filter is freed. ``DMXDEV_STATE_ALLOCATED`` indicates that the filter was allocated to be used. ``DMXDEV_STATE_SET`` indicates that the filter parameters are set. ``DMXDEV_STATE_GO`` indicates that the filter is running. ``DMXDEV_STATE_DONE`` indicates that a packet was already filtered and the filter is now disabled. Set only if ``DMX_ONESHOT``. See :c:type:`dmx_sct_filter_params`. ``DMXDEV_STATE_TIMEDOUT`` Indicates a timeout condition.h](h)}(h **Constants**h]j)}(hjrh]h Constants}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jhjpubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhK9hjlubj2)}(hhh](j7)}(h:``DMXDEV_STATE_FREE`` indicates that the filter is freed. h](j=)}(h``DMXDEV_STATE_FREE``h]h)}(hjh]hDMXDEV_STATE_FREE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j<ha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhK` ``next`` :c:type:`struct list_head ` pointing to the next feed.h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKPhjubh literal_block)}(h[struct dmxdev_feed { u16 pid; struct dmx_ts_feed *ts; struct list_head next; };h]h[struct dmxdev_feed { u16 pid; struct dmx_ts_feed *ts; struct list_head next; };}hjsbah}(h]h ]h"]h$]h&]hhuh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKRhjubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKXhjubj2)}(hhh](j7)}(h"``pid`` Program ID to be filtered h](j=)}(h``pid``h]h)}(hjh]hpid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j<ha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKOhjubjW)}(hhh]h)}(hProgram ID to be filteredh]hProgram ID to be filtered}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKOhjubah}(h]h ]h"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]uh1j6hjhKOhjubj7)}(h=``ts`` pointer to :c:type:`struct dmx_ts_feed ` h](j=)}(h``ts``h]h)}(hj2h]hts}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj0ubah}(h]h ]h"]h$]h&]uh1j<ha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKPhj,ubjW)}(hhh]h)}(h5pointer to :c:type:`struct dmx_ts_feed `h](h pointer to }(hjKhhhNhNubh)}(h*:c:type:`struct dmx_ts_feed `h]h)}(hjUh]hstruct dmx_ts_feed}(hjWhhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhjSubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjw dmx_ts_feeduh1hhjGhKPhjKubeh}(h]h ]h"]h$]h&]uh1hhjGhKPhjHubah}(h]h ]h"]h$]h&]uh1jVhj,ubeh}(h]h ]h"]h$]h&]uh1j6hjGhKPhjubj7)}(hJ``next`` :c:type:`struct list_head ` pointing to the next feed.h](j=)}(h``next``h]h)}(hjh]hnext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j<ha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKPhjubjW)}(hhh]h)}(hA:c:type:`struct list_head ` pointing to the next feed.h](h)}(h&:c:type:`struct list_head `h]h)}(hjh]hstruct list_head}(hjhhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjw list_headuh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKQhjubh pointing to the next feed.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKQhjubah}(h]h ]h"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]uh1j6hjhKPhjubeh}(h]h ]h"]h$]h&]uh1j1hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjbhhhNhNubjt)}(hhh]h}(h]h ]h"]h$]h&]entries](jdmxdev_filter (C struct)c.dmxdev_filterhNtauh1jshjbhhhNhNubj)}(hhh](j)}(h dmxdev_filterh]j)}(hstruct dmxdev_filterh](j)}(hjIh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKWubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKWubj)}(h dmxdev_filterh]j)}(hjh]h dmxdev_filter}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhKWubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhjhKWubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jhjhKWhjhhubj)}(hhh]h)}(hdigital TV dmxdev filterh]hdigital TV dmxdev filter}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKZhjBhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKWubeh}(h]h ](jestructeh"]h$]h&]j jej j]j j]jjjuh1jhhhjbhNhNubj)}(hX**Definition**:: struct dmxdev_filter { union { struct dmx_section_filter *sec; } filter; union { struct list_head ts; struct dmx_section_feed *sec; } feed; union { struct dmx_sct_filter_params sec; struct dmx_pes_filter_params pes; } params; enum dmxdev_type type; enum dmxdev_state state; struct dmxdev *dev; struct dvb_ringbuffer buffer; struct dvb_vb2_ctx vb2_ctx; struct mutex mutex; struct timer_list timer; int todo; u8 secheader[3]; }; **Members** ``filter`` a union describing a dmxdev filter. Currently used only for section filters. ``filter.sec`` a :c:type:`struct dmx_section_filter ` pointer. For section filter only. ``feed`` a union describing a dmxdev feed. Depending on the filter type, it can be either **feed.ts** or **feed.sec**. ``feed.ts`` a :c:type:`struct list_head ` list. For TS and PES feeds. ``feed.sec`` a :c:type:`struct dmx_section_feed ` pointer. For section feed only. ``params`` a union describing dmxdev filter parameters. Depending on the filter type, it can be either **params.sec** or **params.pes**. ``params.sec`` a :c:type:`struct dmx_sct_filter_params ` embedded struct. For section filter only. ``params.pes`` a :c:type:`struct dmx_pes_filter_params ` embedded struct. For PES filter only. ``type`` type of the dmxdev filter, as defined by :c:type:`enum dmxdev_type `. ``state`` state of the dmxdev filter, as defined by :c:type:`enum dmxdev_state `. ``dev`` pointer to :c:type:`struct dmxdev `. ``buffer`` an embedded :c:type:`struct dvb_ringbuffer ` buffer. ``vb2_ctx`` control struct for VB2 handler ``mutex`` protects the access to :c:type:`struct dmxdev_filter `. ``timer`` :c:type:`struct timer_list ` embedded timer, used to check for feed timeouts. Only for section filter. ``todo`` index for the **secheader**. Only for section filter. ``secheader`` buffer cache to parse the section header. Only for section filter.h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jhjeubh:}(hjehhhNhNubeh}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhK^hjaubj)}(hXstruct dmxdev_filter { union { struct dmx_section_filter *sec; } filter; union { struct list_head ts; struct dmx_section_feed *sec; } feed; union { struct dmx_sct_filter_params sec; struct dmx_pes_filter_params pes; } params; enum dmxdev_type type; enum dmxdev_state state; struct dmxdev *dev; struct dvb_ringbuffer buffer; struct dvb_vb2_ctx vb2_ctx; struct mutex mutex; struct timer_list timer; int todo; u8 secheader[3]; };h]hXstruct dmxdev_filter { union { struct dmx_section_filter *sec; } filter; union { struct list_head ts; struct dmx_section_feed *sec; } feed; union { struct dmx_sct_filter_params sec; struct dmx_pes_filter_params pes; } params; enum dmxdev_type type; enum dmxdev_state state; struct dmxdev *dev; struct dvb_ringbuffer buffer; struct dvb_vb2_ctx vb2_ctx; struct mutex mutex; struct timer_list timer; int todo; u8 secheader[3]; };}hjsbah}(h]h ]h"]h$]h&]hhuh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhK`hjaubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKwhjaubj2)}(hhh](j7)}(hX``filter`` a union describing a dmxdev filter. Currently used only for section filters. h](j=)}(h ``filter``h]h)}(hjh]hfilter}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j<ha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhK^hjubjW)}(hhh]h)}(hLa union describing a dmxdev filter. Currently used only for section filters.h]hLa union describing a dmxdev filter. Currently used only for section filters.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhK]hjubah}(h]h ]h"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]uh1j6hjhK^hjubj7)}(hl``filter.sec`` a :c:type:`struct dmx_section_filter ` pointer. For section filter only. h](j=)}(h``filter.sec``h]h)}(hjh]h filter.sec}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j<ha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhK`hjubjW)}(hhh]h)}(h\a :c:type:`struct dmx_section_filter ` pointer. For section filter only.h](ha }(hj hhhNhNubh)}(h8:c:type:`struct dmx_section_filter `h]h)}(hj h]hstruct dmx_section_filter}(hj hhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjwdmx_section_filteruh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhK_hj ubh" pointer. For section filter only.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj, hK_hj ubah}(h]h ]h"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]uh1j6hj hK`hjubj7)}(hw``feed`` a union describing a dmxdev feed. Depending on the filter type, it can be either **feed.ts** or **feed.sec**. h](j=)}(h``feed``h]h)}(hjI h]hfeed}(hjK hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjG ubah}(h]h ]h"]h$]h&]uh1j<ha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKchjC ubjW)}(hhh]h)}(hma union describing a dmxdev feed. Depending on the filter type, it can be either **feed.ts** or **feed.sec**.h](hQa union describing a dmxdev feed. Depending on the filter type, it can be either }(hjb hhhNhNubj)}(h **feed.ts**h]hfeed.ts}(hjj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjb ubh or }(hjb hhhNhNubj)}(h **feed.sec**h]hfeed.sec}(hj| hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjb ubh.}(hjb hhhNhNubeh}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKahj_ ubah}(h]h ]h"]h$]h&]uh1jVhjC ubeh}(h]h ]h"]h$]h&]uh1j6hj^ hKchjubj7)}(hQ``feed.ts`` a :c:type:`struct list_head ` list. For TS and PES feeds. h](j=)}(h ``feed.ts``h]h)}(hj h]hfeed.ts}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]uh1j<ha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKehj ubjW)}(hhh]h)}(hDa :c:type:`struct list_head ` list. For TS and PES feeds.h](ha }(hj hhhNhNubh)}(h&:c:type:`struct list_head `h]h)}(hj h]hstruct list_head}(hj hhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjw list_headuh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKdhj ubh list. For TS and PES feeds.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj hKdhj ubah}(h]h ]h"]h$]h&]uh1jVhj ubeh}(h]h ]h"]h$]h&]uh1j6hj hKehjubj7)}(hd``feed.sec`` a :c:type:`struct dmx_section_feed ` pointer. For section feed only. h](j=)}(h ``feed.sec``h]h)}(hj h]hfeed.sec}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]uh1j<ha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKghj ubjW)}(hhh]h)}(hVa :c:type:`struct dmx_section_feed ` pointer. For section feed only.h](ha }(hj hhhNhNubh)}(h4:c:type:`struct dmx_section_feed `h]h)}(hj' h]hstruct dmx_section_feed}(hj) hhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhj% ubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjwdmx_section_feeduh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKfhj ubh pointer. For section feed only.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjD hKfhj ubah}(h]h ]h"]h$]h&]uh1jVhj ubeh}(h]h ]h"]h$]h&]uh1j6hj hKghjubj7)}(h``params`` a union describing dmxdev filter parameters. Depending on the filter type, it can be either **params.sec** or **params.pes**. h](j=)}(h ``params``h]h)}(hja h]hparams}(hjc hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj_ ubah}(h]h ]h"]h$]h&]uh1j<ha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKjhj[ ubjW)}(hhh]h)}(h}a union describing dmxdev filter parameters. Depending on the filter type, it can be either **params.sec** or **params.pes**.h](h\a union describing dmxdev filter parameters. Depending on the filter type, it can be either }(hjz hhhNhNubj)}(h**params.sec**h]h params.sec}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjz ubh or }(hjz hhhNhNubj)}(h**params.pes**h]h params.pes}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjz ubh.}(hjz hhhNhNubeh}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKhhjw ubah}(h]h ]h"]h$]h&]uh1jVhj[ ubeh}(h]h ]h"]h$]h&]uh1j6hjv hKjhjubj7)}(hz``params.sec`` a :c:type:`struct dmx_sct_filter_params ` embedded struct. For section filter only. h](j=)}(h``params.sec``h]h)}(hj h]h params.sec}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]uh1j<ha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKlhj ubjW)}(hhh]h)}(hja :c:type:`struct dmx_sct_filter_params ` embedded struct. For section filter only.h](ha }(hj hhhNhNubh)}(h>:c:type:`struct dmx_sct_filter_params `h]h)}(hj h]hstruct dmx_sct_filter_params}(hj hhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjwdmx_sct_filter_paramsuh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKkhj ubh* embedded struct. For section filter only.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj hKkhj ubah}(h]h ]h"]h$]h&]uh1jVhj ubeh}(h]h ]h"]h$]h&]uh1j6hj hKlhjubj7)}(hv``params.pes`` a :c:type:`struct dmx_pes_filter_params ` embedded struct. For PES filter only. h](j=)}(h``params.pes``h]h)}(hj h]h params.pes}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]uh1j<ha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKnhj ubjW)}(hhh]h)}(hfa :c:type:`struct dmx_pes_filter_params ` embedded struct. For PES filter only.h](ha }(hj5 hhhNhNubh)}(h>:c:type:`struct dmx_pes_filter_params `h]h)}(hj? h]hstruct dmx_pes_filter_params}(hjA hhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhj= ubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjwdmx_pes_filter_paramsuh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKmhj5 ubh& embedded struct. For PES filter only.}(hj5 hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj\ hKmhj2 ubah}(h]h ]h"]h$]h&]uh1jVhj ubeh}(h]h ]h"]h$]h&]uh1j6hj1 hKnhjubj7)}(h\``type`` type of the dmxdev filter, as defined by :c:type:`enum dmxdev_type `. h](j=)}(h``type``h]h)}(hjy h]htype}(hj{ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjw ubah}(h]h ]h"]h$]h&]uh1j<ha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKohjs ubjW)}(hhh]h)}(hRtype of the dmxdev filter, as defined by :c:type:`enum dmxdev_type `.h](h)type of the dmxdev filter, as defined by }(hj hhhNhNubh)}(h(:c:type:`enum dmxdev_type `h]h)}(hj h]henum dmxdev_type}(hj hhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjw dmxdev_typeuh1hhj hKohj ubh.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj hKohj ubah}(h]h ]h"]h$]h&]uh1jVhjs ubeh}(h]h ]h"]h$]h&]uh1j6hj hKohjubj7)}(h```state`` state of the dmxdev filter, as defined by :c:type:`enum dmxdev_state `. h](j=)}(h ``state``h]h)}(hj h]hstate}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]uh1j<ha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKphj ubjW)}(hhh]h)}(hUstate of the dmxdev filter, as defined by :c:type:`enum dmxdev_state `.h](h*state of the dmxdev filter, as defined by }(hj hhhNhNubh)}(h*:c:type:`enum dmxdev_state `h]h)}(hj h]henum dmxdev_state}(hj hhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjw dmxdev_stateuh1hhj hKphj ubh.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj hKphj ubah}(h]h ]h"]h$]h&]uh1jVhj ubeh}(h]h ]h"]h$]h&]uh1j6hj hKphjubj7)}(h5``dev`` pointer to :c:type:`struct dmxdev `. h](j=)}(h``dev``h]h)}(hj1 h]hdev}(hj3 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/ ubah}(h]h ]h"]h$]h&]uh1j<ha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKqhj+ ubjW)}(hhh]h)}(h,pointer to :c:type:`struct dmxdev `.h](h pointer to }(hjJ hhhNhNubh)}(h :c:type:`struct dmxdev `h]h)}(hjT h]h struct dmxdev}(hjV hhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhjR ubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjwdmxdevuh1hhjF hKqhjJ ubh.}(hjJ hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjF hKqhjG ubah}(h]h ]h"]h$]h&]uh1jVhj+ ubeh}(h]h ]h"]h$]h&]uh1j6hjF hKqhjubj7)}(hP``buffer`` an embedded :c:type:`struct dvb_ringbuffer ` buffer. h](j=)}(h ``buffer``h]h)}(hj h]hbuffer}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]uh1j<ha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKrhj ubjW)}(hhh]h)}(hDan embedded :c:type:`struct dvb_ringbuffer ` buffer.h](h an embedded }(hj hhhNhNubh)}(h0:c:type:`struct dvb_ringbuffer `h]h)}(hj h]hstruct dvb_ringbuffer}(hj hhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjwdvb_ringbufferuh1hhj hKrhj ubh buffer.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj hKrhj ubah}(h]h ]h"]h$]h&]uh1jVhj ubeh}(h]h ]h"]h$]h&]uh1j6hj hKrhjubj7)}(h+``vb2_ctx`` control struct for VB2 handler h](j=)}(h ``vb2_ctx``h]h)}(hj h]hvb2_ctx}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]uh1j<ha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKshj ubjW)}(hhh]h)}(hcontrol struct for VB2 handlerh]hcontrol struct for VB2 handler}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKshj ubah}(h]h ]h"]h$]h&]uh1jVhj ubeh}(h]h ]h"]h$]h&]uh1j6hj hKshjubj7)}(hQ``mutex`` protects the access to :c:type:`struct dmxdev_filter `. h](j=)}(h ``mutex``h]h)}(hj" h]hmutex}(hj$ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]uh1j<ha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKthj ubjW)}(hhh]h)}(hFprotects the access to :c:type:`struct dmxdev_filter `.h](hprotects the access to }(hj; hhhNhNubh)}(h.:c:type:`struct dmxdev_filter `h]h)}(hjE h]hstruct dmxdev_filter}(hjG hhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhjC ubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjw dmxdev_filteruh1hhj7 hKthj; ubh.}(hj; hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj7 hKthj8 ubah}(h]h ]h"]h$]h&]uh1jVhj ubeh}(h]h ]h"]h$]h&]uh1j6hj7 hKthjubj7)}(h}``timer`` :c:type:`struct timer_list ` embedded timer, used to check for feed timeouts. Only for section filter. h](j=)}(h ``timer``h]h)}(hj~ h]htimer}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj| ubah}(h]h ]h"]h$]h&]uh1j<ha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKwhjx ubjW)}(hhh]h)}(hr:c:type:`struct timer_list ` embedded timer, used to check for feed timeouts. Only for section filter.h](h)}(h(:c:type:`struct timer_list `h]h)}(hj h]hstruct timer_list}(hj hhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjw timer_listuh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKuhj ubhJ embedded timer, used to check for feed timeouts. Only for section filter.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj hKuhj ubah}(h]h ]h"]h$]h&]uh1jVhjx ubeh}(h]h ]h"]h$]h&]uh1j6hj hKwhjubj7)}(h?``todo`` index for the **secheader**. Only for section filter. h](j=)}(h``todo``h]h)}(hj h]htodo}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]uh1j<ha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKyhj ubjW)}(hhh]h)}(h5index for the **secheader**. Only for section filter.h](hindex for the }(hj hhhNhNubj)}(h **secheader**h]h secheader}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh. Only for section filter.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKxhj ubah}(h]h ]h"]h$]h&]uh1jVhj ubeh}(h]h ]h"]h$]h&]uh1j6hj hKyhjubj7)}(hP``secheader`` buffer cache to parse the section header. Only for section filter.h](j=)}(h ``secheader``h]h)}(hj#h]h secheader}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj!ubah}(h]h ]h"]h$]h&]uh1j<ha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKzhjubjW)}(hhh]h)}(hBbuffer cache to parse the section header. Only for section filter.h]hBbuffer cache to parse the section header. Only for section filter.}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj8hKzhj9ubah}(h]h ]h"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]uh1j6hj8hKzhjubeh}(h]h ]h"]h$]h&]uh1j1hjaubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjbhhhNhNubjt)}(hhh]h}(h]h ]h"]h$]h&]entries](jdmxdev (C struct)c.dmxdevhNtauh1jshjbhhhNhNubj)}(hhh](j)}(hdmxdevh]j)}(h struct dmxdevh](j)}(hjIh]hstruct}(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjxhhha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjxhhhjhKubj)}(hdmxdevh]j)}(hjvh]hdmxdev}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjxhhhjhKubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjthhhjhKubah}(h]joah ](jjeh"]h$]h&]jj)jhuh1jhjhKhjqhhubj)}(hhh]h)}(h$Describes a digital TV demux device.h]h$Describes a digital TV demux device.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKhjhhubah}(h]h ]h"]h$]h&]uh1jhjqhhhjhKubeh}(h]h ](jestructeh"]h$]h&]j jej jj jjjjuh1jhhhjbhNhNubj)}(hX**Definition**:: struct dmxdev { struct dvb_device *dvbdev; struct dvb_device *dvr_dvbdev; struct dmxdev_filter *filter; struct dmx_demux *demux; int filternum; int capabilities; unsigned int may_do_mmap:1; unsigned int exit:1; #define DMXDEV_CAP_DUPLEX 1; struct dmx_frontend *dvr_orig_fe; struct dvb_ringbuffer dvr_buffer; #define DVR_BUFFER_SIZE (10*188*1024); struct dvb_vb2_ctx dvr_vb2_ctx; struct mutex mutex; spinlock_t lock; }; **Members** ``dvbdev`` pointer to :c:type:`struct dvb_device ` associated with the demux device node. ``dvr_dvbdev`` pointer to :c:type:`struct dvb_device ` associated with the dvr device node. ``filter`` pointer to :c:type:`struct dmxdev_filter `. ``demux`` pointer to :c:type:`struct dmx_demux `. ``filternum`` number of filters. ``capabilities`` demux capabilities as defined by :c:type:`enum dmx_demux_caps `. ``may_do_mmap`` flag used to indicate if the device may do mmap. ``exit`` flag to indicate that the demux is being released. ``dvr_orig_fe`` pointer to :c:type:`struct dmx_frontend `. ``dvr_buffer`` embedded :c:type:`struct dvb_ringbuffer ` for DVB output. ``dvr_vb2_ctx`` control struct for VB2 handler ``mutex`` protects the usage of this structure. ``lock`` protects access to :c:type:`dmxdev->filter `->data.h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKhjubj)}(hXstruct dmxdev { struct dvb_device *dvbdev; struct dvb_device *dvr_dvbdev; struct dmxdev_filter *filter; struct dmx_demux *demux; int filternum; int capabilities; unsigned int may_do_mmap:1; unsigned int exit:1; #define DMXDEV_CAP_DUPLEX 1; struct dmx_frontend *dvr_orig_fe; struct dvb_ringbuffer dvr_buffer; #define DVR_BUFFER_SIZE (10*188*1024); struct dvb_vb2_ctx dvr_vb2_ctx; struct mutex mutex; spinlock_t lock; };h]hXstruct dmxdev { struct dvb_device *dvbdev; struct dvb_device *dvr_dvbdev; struct dmxdev_filter *filter; struct dmx_demux *demux; int filternum; int capabilities; unsigned int may_do_mmap:1; unsigned int exit:1; #define DMXDEV_CAP_DUPLEX 1; struct dmx_frontend *dvr_orig_fe; struct dvb_ringbuffer dvr_buffer; #define DVR_BUFFER_SIZE (10*188*1024); struct dvb_vb2_ctx dvr_vb2_ctx; struct mutex mutex; spinlock_t lock; };}hjsbah}(h]h ]h"]h$]h&]hhuh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKhjubh)}(h **Members**h]j)}(hj h]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKhjubj2)}(hhh](j7)}(hf``dvbdev`` pointer to :c:type:`struct dvb_device ` associated with the demux device node. h](j=)}(h ``dvbdev``h]h)}(hj+h]hdvbdev}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj)ubah}(h]h ]h"]h$]h&]uh1j<ha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKhj%ubjW)}(hhh]h)}(hZpointer to :c:type:`struct dvb_device ` associated with the demux device node.h](h pointer to }(hjDhhhNhNubh)}(h(:c:type:`struct dvb_device `h]h)}(hjNh]hstruct dvb_device}(hjPhhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhjLubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjw dvb_deviceuh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKhjDubh' associated with the demux device node.}(hjDhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjkhKhjAubah}(h]h ]h"]h$]h&]uh1jVhj%ubeh}(h]h ]h"]h$]h&]uh1j6hj@hKhj"ubj7)}(hh``dvr_dvbdev`` pointer to :c:type:`struct dvb_device ` associated with the dvr device node. h](j=)}(h``dvr_dvbdev``h]h)}(hjh]h dvr_dvbdev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j<ha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKhjubjW)}(hhh]h)}(hXpointer to :c:type:`struct dvb_device ` associated with the dvr device node.h](h pointer to }(hjhhhNhNubh)}(h(:c:type:`struct dvb_device `h]h)}(hjh]hstruct dvb_device}(hjhhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjw dvb_deviceuh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKhjubh% associated with the dvr device node.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]uh1j6hjhKhj"ubj7)}(hF``filter`` pointer to :c:type:`struct dmxdev_filter `. h](j=)}(h ``filter``h]h)}(hjh]hfilter}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j<ha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKhjubjW)}(hhh]h)}(h:pointer to :c:type:`struct dmxdev_filter `.h](h pointer to }(hjhhhNhNubh)}(h.:c:type:`struct dmxdev_filter `h]h)}(hjh]hstruct dmxdev_filter}(hj hhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjw dmxdev_filteruh1hhjhKhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]uh1j6hjhKhj"ubj7)}(h=``demux`` pointer to :c:type:`struct dmx_demux `. h](j=)}(h ``demux``h]h)}(hjAh]hdemux}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhj?ubah}(h]h ]h"]h$]h&]uh1j<ha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKhj;ubjW)}(hhh]h)}(h2pointer to :c:type:`struct dmx_demux `.h](h pointer to }(hjZhhhNhNubh)}(h&:c:type:`struct dmx_demux `h]h)}(hjdh]hstruct dmx_demux}(hjfhhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhjbubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjw dmx_demuxuh1hhjVhKhjZubh.}(hjZhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjVhKhjWubah}(h]h ]h"]h$]h&]uh1jVhj;ubeh}(h]h ]h"]h$]h&]uh1j6hjVhKhj"ubj7)}(h!``filternum`` number of filters. h](j=)}(h ``filternum``h]h)}(hjh]h filternum}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j<ha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKhjubjW)}(hhh]h)}(hnumber of filters.h]hnumber of filters.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]uh1j6hjhKhj"ubj7)}(hb``capabilities`` demux capabilities as defined by :c:type:`enum dmx_demux_caps `. h](j=)}(h``capabilities``h]h)}(hjh]h capabilities}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j<ha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKhjubjW)}(hhh]h)}(hPdemux capabilities as defined by :c:type:`enum dmx_demux_caps `.h](h!demux capabilities as defined by }(hjhhhNhNubh)}(h.:c:type:`enum dmx_demux_caps `h]h)}(hjh]henum dmx_demux_caps}(hjhhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjwdmx_demux_capsuh1hhjhKhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]uh1j6hjhKhj"ubj7)}(hA``may_do_mmap`` flag used to indicate if the device may do mmap. h](j=)}(h``may_do_mmap``h]h)}(hj2h]h may_do_mmap}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj0ubah}(h]h ]h"]h$]h&]uh1j<ha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKhj,ubjW)}(hhh]h)}(h0flag used to indicate if the device may do mmap.h]h0flag used to indicate if the device may do mmap.}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjGhKhjHubah}(h]h ]h"]h$]h&]uh1jVhj,ubeh}(h]h ]h"]h$]h&]uh1j6hjGhKhj"ubj7)}(h<``exit`` flag to indicate that the demux is being released. h](j=)}(h``exit``h]h)}(hjkh]hexit}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjiubah}(h]h ]h"]h$]h&]uh1j<ha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKhjeubjW)}(hhh]h)}(h2flag to indicate that the demux is being released.h]h2flag to indicate that the demux is being released.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jVhjeubeh}(h]h ]h"]h$]h&]uh1j6hjhKhj"ubj7)}(hI``dvr_orig_fe`` pointer to :c:type:`struct dmx_frontend `. h](nj=)}(h``dvr_orig_fe``h]h)}(hjh]h dvr_orig_fe}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j<ha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKhjubjW)}(hhh]h)}(h8pointer to :c:type:`struct dmx_frontend `.h](h pointer to }(hjhhhNhNubh)}(h,:c:type:`struct dmx_frontend `h]h)}(hjh]hstruct dmx_frontend}(hjhhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjw dmx_frontenduh1hhjhKhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]uh1j6hjhKhj"ubj7)}(hY``dvr_buffer`` embedded :c:type:`struct dvb_ringbuffer ` for DVB output. h](j=)}(h``dvr_buffer``h]h)}(hjh]h dvr_buffer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j<ha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKhjubjW)}(hhh]h)}(hIembedded :c:type:`struct dvb_ringbuffer ` for DVB output.h](h embedded }(hjhhhNhNubh)}(h0:c:type:`struct dvb_ringbuffer `h]h)}(hj#h]hstruct dvb_ringbuffer}(hj%hhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhj!ubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjwdvb_ringbufferuh1hhjhKhjubh for DVB output.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]uh1j6hjhKhj"ubj7)}(h/``dvr_vb2_ctx`` control struct for VB2 handler h](j=)}(h``dvr_vb2_ctx``h]h)}(hj\h]h dvr_vb2_ctx}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjZubah}(h]h ]h"]h$]h&]uh1j<ha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKhjVubjW)}(hhh]h)}(hcontrol struct for VB2 handlerh]hcontrol struct for VB2 handler}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjqhKhjrubah}(h]h ]h"]h$]h&]uh1jVhjVubeh}(h]h ]h"]h$]h&]uh1j6hjqhKhj"ubj7)}(h0``mutex`` protects the usage of this structure. h](j=)}(h ``mutex``h]h)}(hjh]hmutex}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j<ha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKhjubjW)}(hhh]h)}(h%protects the usage of this structure.h]h%protects the usage of this structure.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]uh1j6hjhKhj"ubj7)}(hD``lock`` protects access to :c:type:`dmxdev->filter `->data.h](j=)}(h``lock``h]h)}(hjh]hlock}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j<ha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKhjubjW)}(hhh]h)}(h;protects access to :c:type:`dmxdev->filter `->data.h](hprotects access to }(hjhhhNhNubh)}(h!:c:type:`dmxdev->filter `h]h)}(hjh]hdmxdev->filter}(hjhhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjwdmxdevuh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKhjubh->data.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]uh1j6hjhKhj"ubeh}(h]h ]h"]h$]h&]uh1j1hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjbhhhNhNubjt)}(hhh]h}(h]h ]h"]h$]h&]entries](jdvb_dmxdev_init (C function)c.dvb_dmxdev_inithNtauh1jshjbhhhNhNubj)}(hhh](j)}(hEint dvb_dmxdev_init (struct dmxdev *dmxdev, struct dvb_adapter *adap)h]j)}(hDint dvb_dmxdev_init(struct dmxdev *dmxdev, struct dvb_adapter *adap)h](hdesc_sig_keyword_type)}(hinth]hint}(hjMhhhNhNubah}(h]h ]ktah"]h$]h&]uh1jKhjGhhha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKubj)}(h h]h }(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGhhhj\hKubj)}(hdvb_dmxdev_inith]j)}(hdvb_dmxdev_inith]hdvb_dmxdev_init}(hjohhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjkubah}(h]h ](jjeh"]h$]h&]hhuh1jhjGhhhj\hKubhdesc_parameterlist)}(h1(struct dmxdev *dmxdev, struct dvb_adapter *adap)h](hdesc_parameter)}(hstruct dmxdev *dmxdevh](j)}(hjIh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(hdmxdevh]hdmxdev}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjereftype identifier reftargetjmodnameN classnameNjj)}j]j ASTIdentifier)}jjqsbc.dvb_dmxdev_initasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubhdesc_sig_punctuation)}(h*h]h*}(hjhhhNhNubah}(h]h ]pah"]h$]h&]uh1jhjubj)}(hdmxdevh]hdmxdev}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hstruct dvb_adapter *adaph](j)}(hjIh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h dvb_adapterh]h dvb_adapter}(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#ubah}(h]h ]h"]h$]h&] refdomainjereftypej reftargetj(modnameN classnameNjj)}j]jc.dvb_dmxdev_initasbuh1hhjubj)}(h h]h }(hjDhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjRhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hadaph]hadap}(hj_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjGhhhj\hKubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjChhhj\hKubah}(h]j>ah ](jjeh"]h$]h&]jj)jhuh1jhj\hKhj@hhubj)}(hhh]h)}(hHinitializes a digital TV demux and registers both demux and DVR devices.h]hHinitializes a digital TV demux and registers both demux and DVR devices.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKhjhhubah}(h]h ]h"]h$]h&]uh1jhj@hhhj\hKubeh}(h]h ](jefunctioneh"]h$]h&]j jej jj jjjjuh1jhhhjbhNhNubj)}(h**Parameters** ``struct dmxdev *dmxdev`` pointer to :c:type:`struct dmxdev `. ``struct dvb_adapter *adap`` pointer to :c:type:`struct dvb_adapter `.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKhjubj2)}(hhh](j7)}(hG``struct dmxdev *dmxdev`` pointer to :c:type:`struct dmxdev `. h](j=)}(h``struct dmxdev *dmxdev``h]h)}(hjh]hstruct dmxdev *dmxdev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j<ha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKhjubjW)}(hhh]h)}(h,pointer to :c:type:`struct dmxdev `.h](h pointer to }(hjhhhNhNubh)}(h :c:type:`struct dmxdev `h]h)}(hjh]h struct dmxdev}(hjhhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjwdmxdevuh1hhjhKhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]uh1j6hjhKhjubj7)}(hS``struct dvb_adapter *adap`` pointer to :c:type:`struct dvb_adapter `.h](j=)}(h``struct dvb_adapter *adap``h]h)}(hj&h]hstruct dvb_adapter *adap}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj$ubah}(h]h ]h"]h$]h&]uh1j<ha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKhj ubjW)}(hhh]h)}(h6pointer to :c:type:`struct dvb_adapter `.h](h pointer to }(hj?hhhNhNubh)}(h*:c:type:`struct dvb_adapter `h]h)}(hjIh]hstruct dvb_adapter}(hjKhhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhjGubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjw dvb_adapteruh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKhj?ubh.}(hj?hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjfhKhj<ubah}(h]h ]h"]h$]h&]uh1jVhj ubeh}(h]h ]h"]h$]h&]uh1j6hj;hKhjubeh}(h]h ]h"]h$]h&]uh1j1hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjbhhhNhNubjt)}(hhh]h}(h]h ]h"]h$]h&]entries](jdvb_dmxdev_release (C function)c.dvb_dmxdev_releasehNtauh1jshjbhhhNhNubj)}(hhh](j)}(h/void dvb_dmxdev_release (struct dmxdev *dmxdev)h]j)}(h.void dvb_dmxdev_release(struct dmxdev *dmxdev)h](jL)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjhhha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKubj)}(hdvb_dmxdev_releaseh]j)}(hdvb_dmxdev_releaseh]hdvb_dmxdev_release}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhKubj)}(h(struct dmxdev *dmxdev)h]j)}(hstruct dmxdev *dmxdevh](j)}(hjIh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(hdmxdevh]hdmxdev}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjereftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.dvb_dmxdev_releaseasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hdmxdevh]hdmxdev}(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhjhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jhjhKhjhhubj)}(hhh]h)}(h/releases a digital TV demux and unregisters it.h]h/releases a digital TV demux and unregisters it.}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKhj`hhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jefunctioneh"]h$]h&]j jej j{j j{jjjuh1jhhhjbhNhNubj)}(hX**Parameters** ``struct dmxdev *dmxdev`` pointer to :c:type:`struct dmxdev `.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKhjubj2)}(hhh]j7)}(hF``struct dmxdev *dmxdev`` pointer to :c:type:`struct dmxdev `.h](j=)}(h``struct dmxdev *dmxdev``h]h)}(hjh]hstruct dmxdev *dmxdev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j<ha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKhjubjW)}(hhh]h)}(h,pointer to :c:type:`struct dmxdev `.h](h pointer to }(hjhhhNhNubh)}(h :c:type:`struct dmxdev `h]h)}(hjh]h struct dmxdev}(hjhhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjwdmxdevuh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:74: ./include/media/dmxdev.hhKhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]uh1j6hjhKhjubah}(h]h ]h"]h$]h&]uh1j1hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjbhhhNhNubeh}(h]Bdigital-tv-demux-device-registration-functions-and-data-structuresah ]h"]Bdigital tv demux device registration functions and data structuresah$]h&]uh1hhhhhhhhKHubh)}(hhh](h)}(h%High-level Digital TV demux interfaceh]h%High-level Digital TV demux interface}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKMubjt)}(hhh]h}(h]h ]h"]h$]h&]entries](jdvb_dmx_filter_type (C enum)c.dvb_dmx_filter_typehNtauh1jshjhhhNhNubj)}(hhh](j)}(hdvb_dmx_filter_typeh]j)}(henum dvb_dmx_filter_typeh](j)}(hjh]henum}(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6hhhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKubj)}(h h]h }(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6hhhjGhKubj)}(hdvb_dmx_filter_typeh]j)}(hj4h]hdvb_dmx_filter_type}(hjZhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVubah}(h]h ](jjeh"]h$]h&]hhuh1jhj6hhhjGhKubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj2hhhjGhKubah}(h]j-ah ](jjeh"]h$]h&]jj)jhuh1jhjGhKhj/hhubj)}(hhh]h)}(htype of demux feed.h]htype of demux feed.}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKhjyhhubah}(h]h ]h"]h$]h&]uh1jhj/hhhjGhKubeh}(h]h ](jeenumeh"]h$]h&]j jej jj jjjjuh1jhhhjhNhNubj)}(ha**Constants** ``DMX_TYPE_TS`` feed is in TS mode. ``DMX_TYPE_SEC`` feed is in Section mode.h](h)}(h **Constants**h]j)}(hjh]h Constants}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhK"hjubj2)}(hhh](j7)}(h$``DMX_TYPE_TS`` feed is in TS mode. h](j=)}(h``DMX_TYPE_TS``h]h)}(hjh]h DMX_TYPE_TS}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhK%hjubjW)}(hhh]h)}(hfeed is in TS mode.h]hfeed is in TS mode.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK%hjubah}(h]h ]h"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]uh1j6hjhK%hjubj7)}(h)``DMX_TYPE_SEC`` feed is in Section mode.h](j=)}(h``DMX_TYPE_SEC``h]h)}(hjh]h DMX_TYPE_SEC}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhK'hjubjW)}(hhh]h)}(hfeed is in Section mode.h]hfeed is in Section mode.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhK(hj ubah}(h]h ]h"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]uh1j6hj hK'hjubeh}(h]h ]h"]h$]h&]uh1j1hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjt)}(hhh]h}(h]h ]h"]h$]h&]entries](jdvb_dmx_state (C enum)c.dvb_dmx_statehNtauh1jshjhhhNhNubj)}(hhh](j)}(h dvb_dmx_stateh]j)}(henum dvb_dmx_stateh](j)}(hjh]henum}(hjPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjLhhhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhK-ubj)}(h h]h }(hj^hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjLhhhj]hK-ubj)}(h dvb_dmx_stateh]j)}(hjJh]h dvb_dmx_state}(hjphhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjlubah}(h]h ](jjeh"]h$]h&]hhuh1jhjLhhhj]hK-ubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjHhhhj]hK-ubah}(h]jCah ](jjeh"]h$]h&]jj)jhuh1jhj]hK-hjEhhubj)}(hhh]h)}(h!state machine for a demux filter.h]h!state machine for a demux filter.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhK)hjhhubah}(h]h ]h"]h$]h&]uh1jhjEhhhj]hK-ubeh}(h]h ](jeenumeh"]h$]h&]j jej jj jjjjuh1jhhhjhNhNubj)}(hX**Constants** ``DMX_STATE_FREE`` indicates that the filter is freed. ``DMX_STATE_ALLOCATED`` indicates that the filter was allocated to be used. ``DMX_STATE_READY`` indicates that the filter is ready to be used. ``DMX_STATE_GO`` indicates that the filter is running.h](h)}(h **Constants**h]j)}(hjh]h Constants}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhK-hjubj2)}(hhh](j7)}(h7``DMX_STATE_FREE`` indicates that the filter is freed. h](j=)}(h``DMX_STATE_FREE``h]h)}(hjh]hDMX_STATE_FREE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhK0hjubjW)}(hhh]h)}(h#indicates that the filter is freed.h]h#indicates that the filter is freed.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK0hjubah}(h]h ]h"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]uh1j6hjhK0hjubj7)}(hL``DMX_STATE_ALLOCATED`` indicates that the filter was allocated to be used. h](j=)}(h``DMX_STATE_ALLOCATED``h]h)}(hj h]hDMX_STATE_ALLOCATED}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhK4hjubjW)}(hhh]h)}(h3indicates that the filter was allocated to be used.h]h3indicates that the filter was allocated to be used.}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhK3hj"ubah}(h]h ]h"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]uh1j6hj!hK4hjubj7)}(hC``DMX_STATE_READY`` indicates that the filter is ready to be used. h](j=)}(h``DMX_STATE_READY``h]h)}(hjFh]hDMX_STATE_READY}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjDubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhK8hj@ubjW)}(hhh]h)}(h.indicates that the filter is ready to be used.h]h.indicates that the filter is ready to be used.}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhK7hj\ubah}(h]h ]h"]h$]h&]uh1jVhj@ubeh}(h]h ]h"]h$]h&]uh1j6hj[hK8hjubj7)}(h6``DMX_STATE_GO`` indicates that the filter is running.h](j=)}(h``DMX_STATE_GO``h]h)}(hjh]h DMX_STATE_GO}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj~ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhK:hjzubjW)}(hhh]h)}(h%indicates that the filter is running.h]h%indicates that the filter is running.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhK;hjubah}(h]h ]h"]h$]h&]uh1jVhjzubeh}(h]h ]h"]h$]h&]uh1j6hjhK:hjubeh}(h]h ]h"]h$]h&]uh1j1hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjt)}(hhh]h}(h]h ]h"]h$]h&]entries](jdvb_demux_filter (C struct)c.dvb_demux_filterhNtauh1jshjhhhNhNubj)}(hhh](j)}(hdvb_demux_filterh]j)}(hstruct dvb_demux_filterh](j)}(hjIh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhK@ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhK@ubj)}(hdvb_demux_filterh]j)}(hjh]hdvb_demux_filter}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhK@ubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhjhK@ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jhjhK@hjhhubj)}(hhh]h)}(h%Describes a DVB demux section filter.h]h%Describes a DVB demux section filter.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhK@hjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhK@ubeh}(h]h ](jestructeh"]h$]h&]j jej j4j j4jjjuh1jhhhjhNhNubj)}(hX**Definition**:: struct dvb_demux_filter { struct dmx_section_filter filter; u8 maskandmode[DMX_MAX_FILTER_SIZE]; u8 maskandnotmode[DMX_MAX_FILTER_SIZE]; bool doneq; struct dvb_demux_filter *next; struct dvb_demux_feed *feed; int index; enum dvb_dmx_state state; enum dvb_dmx_filter_type type; }; **Members** ``filter`` Section filter as defined by :c:type:`struct dmx_section_filter `. ``maskandmode`` logical ``and`` bit mask. ``maskandnotmode`` logical ``and not`` bit mask. ``doneq`` flag that indicates when a filter is ready. ``next`` pointer to the next section filter. ``feed`` :c:type:`struct dvb_demux_feed ` pointer. ``index`` index of the used demux filter. ``state`` state of the filter as described by :c:type:`enum dvb_dmx_state `. ``type`` type of the filter as described by :c:type:`enum dvb_dmx_filter_type `.h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj<ubh:}(hj<hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKDhj8ubj)}(hX;struct dvb_demux_filter { struct dmx_section_filter filter; u8 maskandmode[DMX_MAX_FILTER_SIZE]; u8 maskandnotmode[DMX_MAX_FILTER_SIZE]; bool doneq; struct dvb_demux_filter *next; struct dvb_demux_feed *feed; int index; enum dvb_dmx_state state; enum dvb_dmx_filter_type type; };h]hX;struct dvb_demux_filter { struct dmx_section_filter filter; u8 maskandmode[DMX_MAX_FILTER_SIZE]; u8 maskandnotmode[DMX_MAX_FILTER_SIZE]; bool doneq; struct dvb_demux_filter *next; struct dvb_demux_feed *feed; int index; enum dvb_dmx_state state; enum dvb_dmx_filter_type type; };}hjYsbah}(h]h ]h"]h$]h&]hhuh1jhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKFhj8ubh)}(h **Members**h]j)}(hjjh]hMembers}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKRhj8ubj2)}(hhh](j7)}(hb``filter`` Section filter as defined by :c:type:`struct dmx_section_filter `. h](j=)}(h ``filter``h]h)}(hjh]hfilter}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKChjubjW)}(hhh]h)}(hVSection filter as defined by :c:type:`struct dmx_section_filter `.h](hSection filter as defined by }(hjhhhNhNubh)}(h8:c:type:`struct dmx_section_filter `h]h)}(hjh]hstruct dmx_section_filter}(hjhhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjwdmx_section_filteruh1hhjhKChjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKChjubah}(h]h ]h"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]uh1j6hjhKChjubj7)}(h*``maskandmode`` logical ``and`` bit mask. h](j=)}(h``maskandmode``h]h)}(hjh]h maskandmode}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKDhjubjW)}(hhh]h)}(hlogical ``and`` bit mask.h](hlogical }(hjhhhNhNubh)}(h``and``h]hand}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh bit mask.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKDhjubah}(h]h ]h"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]uh1j6hjhKDhjubj7)}(h1``maskandnotmode`` logical ``and not`` bit mask. h](j=)}(h``maskandnotmode``h]h)}(hj0h]hmaskandnotmode}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj.ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKEhj*ubjW)}(hhh]h)}(hlogical ``and not`` bit mask.h](hlogical }(hjIhhhNhNubh)}(h ``and not``h]hand not}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjIubh bit mask.}(hjIhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjEhKEhjFubah}(h]h ]h"]h$]h&]uh1jVhj*ubeh}(h]h ]h"]h$]h&]uh1j6hjEhKEhjubj7)}(h6``doneq`` flag that indicates when a filter is ready. h](j=)}(h ``doneq``h]h)}(hj{h]hdoneq}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjyubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKFhjuubjW)}(hhh]h)}(h+flag that indicates when a filter is ready.h]h+flag that indicates when a filter is ready.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKFhjubah}(h]h ]h"]h$]h&]uh1jVhjuubeh}(h]h ]h"]h$]h&]uh1j6hjhKFhjubj7)}(h-``next`` pointer to the next section filter. h](j=)}(h``next``h]h)}(hjh]hnext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKGhjubjW)}(hhh]h)}(h#pointer to the next section filter.h]h#pointer to the next section filter.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKGhjubah}(h]h ]h"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]uh1j6hjhKGhjubj7)}(hC``feed`` :c:type:`struct dvb_demux_feed ` pointer. h](j=)}(h``feed``h]h)}(hjh]hfeed}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKHhjubjW)}(hhh]h)}(h9:c:type:`struct dvb_demux_feed ` pointer.h](h)}(h0:c:type:`struct dvb_demux_feed `h]h)}(hj h]hstruct dvb_demux_feed}(hjhhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjwdvb_demux_feeduh1hhjhKHhjubh pointer.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKHhjubah}(h]h ]h"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]uh1j6hjhKHhjubj7)}(h*``index`` index of the used demux filter. h](j=)}(h ``index``h]h)}(hjEh]hindex}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjCubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKIhj?ubjW)}(hhh]h)}(hindex of the used demux filter.h]hindex of the used demux filter.}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjZhKIhj[ubah}(h]h ]h"]h$]h&]uh1jVhj?ubeh}(h]h ]h"]h$]h&]uh1j6hjZhKIhjubj7)}(h\``state`` state of the filter as described by :c:type:`enum dvb_dmx_state `. h](j=)}(h ``state``h]h)}(hj~h]hstate}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj|ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKJhjxubjW)}(hhh]h)}(hQstate of the filter as described by :c:type:`enum dvb_dmx_state `.h](h$state of the filter as described by }(hjhhhNhNubh)}(h,:c:type:`enum dvb_dmx_state `h]h)}(hjh]henum dvb_dmx_state}(hjhhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjw dvb_dmx_stateuh1hhjhKJhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKJhjubah}(h]h ]h"]h$]h&]uh1jVhjxubeh}(h]h ]h"]h$]h&]uh1j6hjhKJhjubj7)}(he``type`` type of the filter as described by :c:type:`enum dvb_dmx_filter_type `.h](j=)}(h``type``h]h)}(hjh]htype}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKKhjubjW)}(hhh]h)}(h\type of the filter as described by :c:type:`enum dvb_dmx_filter_type `.h](h#type of the filter as described by }(hjhhhNhNubh)}(h8:c:type:`enum dvb_dmx_filter_type `h]h)}(hjh]henum dvb_dmx_filter_type}(hjhhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjwdvb_dmx_filter_typeuh1hhjhKKhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKKhjubah}(h]h ]h"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]uh1j6hjhKKhjubeh}(h]h ]h"]h$]h&]uh1j1hj8ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjt)}(hhh]h}(h]h ]h"]h$]h&]entries](jdvb_demux_feed (C struct)c.dvb_demux_feedhNtauh1jshjhhhNhNubj)}(hhh](j)}(hdvb_demux_feedh]j)}(hstruct dvb_demux_feedh](j)}(hjIh]hstruct}(hjVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjRhhhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKRubj)}(h h]h }(hjdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjRhhhjchKRubj)}(hdvb_demux_feedh]j)}(hjPh]hdvb_demux_feed}(hjvhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjrubah}(h]h ](jjeh"]h$]h&]hhuh1jhjRhhhjchKRubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjNhhhjchKRubah}(h]jIah ](jjeh"]h$]h&]jj)jhuh1jhjchKRhjKhhubj)}(hhh]h)}(hdescribes a DVB fieldh]hdescribes a DVB field}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhK_hjhhubah}(h]h ]h"]h$]h&]uh1jhjKhhhjchKRubeh}(h]h ](jestructeh"]h$]h&]j jej jj jjjjuh1jhhhjhNhNubj)}(hX **Definition**:: struct dvb_demux_feed { union { struct dmx_ts_feed ts; struct dmx_section_feed sec; } feed; union { dmx_ts_cb ts; dmx_section_cb sec; } cb; struct dvb_demux *demux; void *priv; enum dvb_dmx_filter_type type; enum dvb_dmx_state state; u16 pid; ktime_t timeout; struct dvb_demux_filter *filter; u32 buffer_flags; enum ts_filter_type ts_type; enum dmx_ts_pes pes_type; int cc; bool pusi_seen; u16 peslen; struct list_head list_head; unsigned int index; }; **Members** ``feed`` a union describing a digital TV feed. Depending on the feed type, it can be either **feed.ts** or **feed.sec**. ``feed.ts`` a :c:type:`struct dmx_ts_feed ` pointer. For TS feed only. ``feed.sec`` a :c:type:`struct dmx_section_feed ` pointer. For section feed only. ``cb`` a union describing digital TV callbacks. Depending on the feed type, it can be either **cb.ts** or **cb.sec**. ``cb.ts`` a dmx_ts_cb() calback function pointer. For TS feed only. ``cb.sec`` a dmx_section_cb() callback function pointer. For section feed only. ``demux`` pointer to :c:type:`struct dvb_demux `. ``priv`` private data that can optionally be used by a DVB driver. ``type`` type of the filter, as defined by :c:type:`enum dvb_dmx_filter_type `. ``state`` state of the filter as defined by :c:type:`enum dvb_dmx_state `. ``pid`` PID to be filtered. ``timeout`` feed timeout. ``filter`` pointer to :c:type:`struct dvb_demux_filter `. ``buffer_flags`` Buffer flags used to report discontinuity users via DVB memory mapped API, as defined by :c:type:`enum dmx_buffer_flags `. ``ts_type`` type of TS, as defined by :c:type:`enum ts_filter_type `. ``pes_type`` type of PES, as defined by :c:type:`enum dmx_ts_pes `. ``cc`` MPEG-TS packet continuity counter ``pusi_seen`` if true, indicates that a discontinuity was detected. it is used to prevent feeding of garbage from previous section. ``peslen`` length of the PES (Packet Elementary Stream). ``list_head`` head for the list of digital TV demux feeds. ``index`` a unique index for each feed. Can be used as hardware pid filter index.h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKchjubj)}(hX0struct dvb_demux_feed { union { struct dmx_ts_feed ts; struct dmx_section_feed sec; } feed; union { dmx_ts_cb ts; dmx_section_cb sec; } cb; struct dvb_demux *demux; void *priv; enum dvb_dmx_filter_type type; enum dvb_dmx_state state; u16 pid; ktime_t timeout; struct dvb_demux_filter *filter; u32 buffer_flags; enum ts_filter_type ts_type; enum dmx_ts_pes pes_type; int cc; bool pusi_seen; u16 peslen; struct list_head list_head; unsigned int index; };h]hX0struct dvb_demux_feed { union { struct dmx_ts_feed ts; struct dmx_section_feed sec; } feed; union { dmx_ts_cb ts; dmx_section_cb sec; } cb; struct dvb_demux *demux; void *priv; enum dvb_dmx_filter_type type; enum dvb_dmx_state state; u16 pid; ktime_t timeout; struct dvb_demux_filter *filter; u32 buffer_flags; enum ts_filter_type ts_type; enum dmx_ts_pes pes_type; int cc; bool pusi_seen; u16 peslen; struct list_head list_head; unsigned int index; };}hjsbah}(h]h ]h"]h$]h&]hhuh1jhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKehjubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKhjubj2)}(hhh](j7)}(hy``feed`` a union describing a digital TV feed. Depending on the feed type, it can be either **feed.ts** or **feed.sec**. h](j=)}(h``feed``h]h)}(hjh]hfeed}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKdhjubjW)}(hhh]h)}(hoa union describing a digital TV feed. Depending on the feed type, it can be either **feed.ts** or **feed.sec**.h](hSa union describing a digital TV feed. Depending on the feed type, it can be either }(hjhhhNhNubj)}(h **feed.ts**h]hfeed.ts}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh or }(hjhhhNhNubj)}(h **feed.sec**h]hfeed.sec}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKbhjubah}(h]h ]h"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]uh1j6hjhKdhjubj7)}(hT``feed.ts`` a :c:type:`struct dmx_ts_feed ` pointer. For TS feed only. h](j=)}(h ``feed.ts``h]h)}(hjch]hfeed.ts}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhjaubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKfhj]ubjW)}(hhh]h)}(hGa :c:type:`struct dmx_ts_feed ` pointer. For TS feed only.h](ha }(hj|hhhNhNubh)}(h*:c:type:`struct dmx_ts_feed `h]h)}(hjh]hstruct dmx_ts_feed}(hjhhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjw dmx_ts_feeduh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKehj|ubh pointer. For TS feed only.}(hj|hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKehjyubah}(h]h ]h"]h$]h&]uh1jVhj]ubeh}(h]h ]h"]h$]h&]uh1j6hjxhKfhjubj7)}(hd``feed.sec`` a :c:type:`struct dmx_section_feed ` pointer. For section feed only. h](j=)}(h ``feed.sec``h]h)}(hjh]hfeed.sec}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKhhjubjW)}(hhh]h)}(hVa :c:type:`struct dmx_section_feed ` pointer. For section feed only.h](ha }(hjhhhNhNubh)}(h4:c:type:`struct dmx_section_feed `h]h)}(hjh]hstruct dmx_section_feed}(hjhhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjwdmx_section_feeduh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKghjubh pointer. For section feed only.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKghjubah}(h]h ]h"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]uh1j6hjhKhhjubj7)}(hv``cb`` a union describing digital TV callbacks. Depending on the feed type, it can be either **cb.ts** or **cb.sec**. h](j=)}(h``cb``h]h)}(hjh]hcb}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKkhjubjW)}(hhh]h)}(hna union describing digital TV callbacks. Depending on the feed type, it can be either **cb.ts** or **cb.sec**.h](hVa union describing digital TV callbacks. Depending on the feed type, it can be either }(hj6hhhNhNubj)}(h **cb.ts**h]hcb.ts}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6ubh or }(hj6hhhNhNubj)}(h **cb.sec**h]hcb.sec}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6ubh.}(hj6hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKihj3ubah}(h]h ]h"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]uh1j6hj2hKkhjubj7)}(hD``cb.ts`` a dmx_ts_cb() calback function pointer. For TS feed only. h](j=)}(h ``cb.ts``h]h)}(hj{h]hcb.ts}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjyubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKmhjuubjW)}(hhh]h)}(h9a dmx_ts_cb() calback function pointer. For TS feed only.h]h9a dmx_ts_cb() calback function pointer. For TS feed only.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKlhjubah}(h]h ]h"]h$]h&]uh1jVhjuubeh}(h]h ]h"]h$]h&]uh1j6hjhKmhjubj7)}(hP``cb.sec`` a dmx_section_cb() callback function pointer. For section feed only. h](j=)}(h ``cb.sec``h]h)}(hjh]hcb.sec}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKohjubjW)}(hhh]h)}(hDa dmx_section_cb() callback function pointer. For section feed only.h]hDa dmx_section_cb() callback function pointer. For section feed only.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKnhjubah}(h]h ]h"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]uh1j6hjhKohjubj7)}(h=``demux`` pointer to :c:type:`struct dvb_demux `. h](j=)}(h ``demux``h]h)}(hjh]hdemux}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKphjubjW)}(hhh]h)}(h2pointer to :c:type:`struct dvb_demux `.h](h pointer to }(hj hhhNhNubh)}(h&:c:type:`struct dvb_demux `h]h)}(hj h]hstruct dvb_demux}(hj hhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjw dvb_demuxuh1hhj hKphj ubh.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj hKphj ubah}(h]h ]h"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]uh1j6hj hKphjubj7)}(hC``priv`` private data that can optionally be used by a DVB driver. h](j=)}(h``priv``h]h)}(hjK h]hpriv}(hjM hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjI ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKqhjE ubjW)}(hhh]h)}(h9private data that can optionally be used by a DVB driver.h]h9private data that can optionally be used by a DVB driver.}(hjd hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj` hKqhja ubah}(h]h ]h"]h$]h&]uh1jVhjE ubeh}(h]h ]h"]h$]h&]uh1j6hj` hKqhjubj7)}(he``type`` type of the filter, as defined by :c:type:`enum dvb_dmx_filter_type `. h](j=)}(h``type``h]h)}(hj h]htype}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKrhj~ ubjW)}(hhh]h)}(h[type of the filter, as defined by :c:type:`enum dvb_dmx_filter_type `.h](h"type of the filter, as defined by }(hj hhhNhNubh)}(h8:c:type:`enum dvb_dmx_filter_type `h]h)}(hj h]henum dvb_dmx_filter_type}(hj hhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjwdvb_dmx_filter_typeuh1hhj hKrhj ubh.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj hKrhj ubah}(h]h ]h"]h$]h&]uh1jVhj~ ubeh}(h]h ]h"]h$]h&]uh1j6hj hKrhjubj7)}(hZ``state`` state of the filter as defined by :c:type:`enum dvb_dmx_state `. h](j=)}(h ``state``h]h)}(hj h]hstate}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKshj ubjW)}(hhh]h)}(hOstate of the filter as defined by :c:type:`enum dvb_dmx_state `.h](h"state of the filter as defined by }(hj hhhNhNubh)}(h,:c:type:`enum dvb_dmx_state `h]h)}(hj!h]henum dvb_dmx_state}(hj!hhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhj!ubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjw dvb_dmx_stateuh1hhj hKshj ubh.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj hKshj ubah}(h]h ]h"]h$]h&]uh1jVhj ubeh}(h]h ]h"]h$]h&]uh1j6hj hKshjubj7)}(h``pid`` PID to be filtered. h](j=)}(h``pid``h]h)}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj:!ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKthj6!ubjW)}(hhh]h)}(hPID to be filtered.h]hPID to be filtered.}(hjU!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQ!hKthjR!ubah}(h]h ]h"]h$]h&]uh1jVhj6!ubeh}(h]h ]h"]h$]h&]uh1j6hjQ!hKthjubj7)}(h``timeout`` feed timeout. h](j=)}(h ``timeout``h]h)}(hju!h]htimeout}(hjw!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjs!ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKuhjo!ubjW)}(hhh]h)}(h feed timeout.h]h feed timeout.}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj!hKuhj!ubah}(h]h ]h"]h$]h&]uh1jVhjo!ubeh}(h]h ]h"]h$]h&]uh1j6hj!hKuhjubj7)}(hL``filter`` pointer to :c:type:`struct dvb_demux_filter `. h](j=)}(h ``filter``h]h)}(hj!h]hfilter}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj!ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKvhj!ubjW)}(hhh]h)}(h@pointer to :c:type:`struct dvb_demux_filter `.h](h pointer to }(hj!hhhNhNubh)}(h4:c:type:`struct dvb_demux_filter `h]h)}(hj!h]hstruct dvb_demux_filter}(hj!hhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhj!ubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjwdvb_demux_filteruh1hhj!hKvhj!ubh.}(hj!hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj!hKvhj!ubah}(h]h ]h"]h$]h&]uh1jVhj!ubeh}(h]h ]h"]h$]h&]uh1j6hj!hKvhjubj7)}(h``buffer_flags`` Buffer flags used to report discontinuity users via DVB memory mapped API, as defined by :c:type:`enum dmx_buffer_flags `. h](j=)}(h``buffer_flags``h]h)}(hj "h]h buffer_flags}(hj "hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj"ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKxhj"ubjW)}(hhh]h)}(hBuffer flags used to report discontinuity users via DVB memory mapped API, as defined by :c:type:`enum dmx_buffer_flags `.h](hYBuffer flags used to report discontinuity users via DVB memory mapped API, as defined by }(hj#"hhhNhNubh)}(h2:c:type:`enum dmx_buffer_flags `h]h)}(hj-"h]henum dmx_buffer_flags}(hj/"hhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhj+"ubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjwdmx_buffer_flagsuh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKwhj#"ubh.}(hj#"hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjJ"hKwhj "ubah}(h]h ]h"]h$]h&]uh1jVhj"ubeh}(h]h ]h"]h$]h&]uh1j6hj"hKxhjubj7)}(hV``ts_type`` type of TS, as defined by :c:type:`enum ts_filter_type `. h](j=)}(h ``ts_type``h]h)}(hjg"h]hts_type}(hji"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhje"ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKyhja"ubjW)}(hhh]h)}(hItype of TS, as defined by :c:type:`enum ts_filter_type `.h](htype of TS, as defined by }(hj"hhhNhNubh)}(h.:c:type:`enum ts_filter_type `h]h)}(hj"h]henum ts_filter_type}(hj"hhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhj"ubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjwts_filter_typeuh1hhj|"hKyhj"ubh.}(hj"hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj|"hKyhj}"ubah}(h]h ]h"]h$]h&]uh1jVhja"ubeh}(h]h ]h"]h$]h&]uh1j6hj|"hKyhjubj7)}(hP``pes_type`` type of PES, as defined by :c:type:`enum dmx_ts_pes `. h](j=)}(h ``pes_type``h]h)}(hj"h]hpes_type}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj"ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKzhj"ubjW)}(hhh]h)}(hBtype of PES, as defined by :c:type:`enum dmx_ts_pes `.h](htype of PES, as defined by }(hj"hhhNhNubh)}(h&:c:type:`enum dmx_ts_pes `h]h)}(hj"h]henum dmx_ts_pes}(hj"hhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhj"ubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjw dmx_ts_pesuh1hhj"hKzhj"ubh.}(hj"hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj"hKzhj"ubah}(h]h ]h"]h$]h&]uh1jVhj"ubeh}(h]h ]h"]h$]h&]uh1j6hj"hKzhjubj7)}(h)``cc`` MPEG-TS packet continuity counter h](j=)}(h``cc``h]h)}(hj#h]hcc}(hj!#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj#ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhK{hj#ubjW)}(hhh]h)}(h!MPEG-TS packet continuity counterh]h!MPEG-TS packet continuity counter}(hj8#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj4#hK{hj5#ubah}(h]h ]h"]h$]h&]uh1jVhj#ubeh}(h]h ]h"]h$]h&]uh1j6hj4#hK{hjubj7)}(h``pusi_seen`` if true, indicates that a discontinuity was detected. it is used to prevent feeding of garbage from previous section. h](j=)}(h ``pusi_seen``h]h)}(hjX#h]h pusi_seen}(hjZ#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjV#ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhK}hjR#ubjW)}(hhh]h)}(huif true, indicates that a discontinuity was detected. it is used to prevent feeding of garbage from previous section.h]huif true, indicates that a discontinuity was detected. it is used to prevent feeding of garbage from previous section.}(hjq#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhK|hjn#ubah}(h]h ]h"]h$]h&]uh1jVhjR#ubeh}(h]h ]h"]h$]h&]uh1j6hjm#hK}hjubj7)}(h9``peslen`` length of the PES (Packet Elementary Stream). h](j=)}(h ``peslen``h]h)}(hj#h]hpeslen}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj#ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhK~hj#ubjW)}(hhh]h)}(h-length of the PES (Packet Elementary Stream).h]h-length of the PES (Packet Elementary Stream).}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj#hK~hj#ubah}(h]h ]h"]h$]h&]uh1jVhj#ubeh}(h]h ]h"]h$]h&]uh1j6hj#hK~hjubj7)}(h;``list_head`` head for the list of digital TV demux feeds. h](j=)}(h ``list_head``h]h)}(hj#h]h list_head}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj#ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKhj#ubjW)}(hhh]h)}(h,head for the list of digital TV demux feeds.h]h,head for the list of digital TV demux feeds.}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj#hKhj#ubah}(h]h ]h"]h$]h&]uh1jVhj#ubeh}(h]h ]h"]h$]h&]uh1j6hj#hKhjubj7)}(hQ``index`` a unique index for each feed. Can be used as hardware pid filter index.h](j=)}(h ``index``h]h)}(hj$h]hindex}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj$ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKhj#ubjW)}(hhh]h)}(hGa unique index for each feed. Can be used as hardware pid filter index.h]hGa unique index for each feed. Can be used as hardware pid filter index.}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj$hKhj$ubah}(h]h ]h"]h$]h&]uh1jVhj#ubeh}(h]h ]h"]h$]h&]uh1j6hj$hKhjubeh}(h]h ]h"]h$]h&]uh1j1hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjt)}(hhh]h}(h]h ]h"]h$]h&]entries](jdvb_demux (C struct) c.dvb_demuxhNtauh1jshjhhhNhNubj)}(hhh](j)}(h dvb_demuxh]j)}(hstruct dvb_demuxh](j)}(hjIh]hstruct}(hj]$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjY$hhhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKubj)}(h h]h }(hjk$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjY$hhhjj$hKubj)}(h dvb_demuxh]j)}(hjW$h]h dvb_demux}(hj}$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjy$ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjY$hhhjj$hKubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjU$hhhjj$hKubah}(h]jP$ah ](jjeh"]h$]h&]jj)jhuh1jhjj$hKhjR$hhubj)}(hhh]h)}(hrepresents a digital TV demuxh]hrepresents a digital TV demux}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKhj$hhubah}(h]h ]h"]h$]h&]uh1jhjR$hhhjj$hKubeh}(h]h ](jestructeh"]h$]h&]j jej j$j j$jjjuh1jhhhjhNhNubj)}(hX= **Definition**:: struct dvb_demux { struct dmx_demux dmx; void *priv; int filternum; int feednum; int (*start_feed)(struct dvb_demux_feed *feed); int (*stop_feed)(struct dvb_demux_feed *feed); int (*write_to_decoder)(struct dvb_demux_feed *feed, const u8 *buf, size_t len); u32 (*check_crc32)(struct dvb_demux_feed *feed, const u8 *buf, size_t len); void (*memcopy)(struct dvb_demux_feed *feed, u8 *dst, const u8 *src, size_t len); int users; #define MAX_DVB_DEMUX_USERS 10; struct dvb_demux_filter *filter; struct dvb_demux_feed *feed; struct list_head frontend_list; struct dvb_demux_feed *pesfilter[DMX_PES_OTHER]; u16 pids[DMX_PES_OTHER]; #define DMX_MAX_PID 0x2000; struct list_head feed_list; u8 tsbuf[204]; int tsbufp; struct mutex mutex; spinlock_t lock; uint8_t *cnt_storage; ktime_t speed_last_time; uint32_t speed_pkts_cnt; }; **Members** ``dmx`` embedded :c:type:`struct dmx_demux ` with demux capabilities and callbacks. ``priv`` private data that can optionally be used by a DVB driver. ``filternum`` maximum amount of DVB filters. ``feednum`` maximum amount of DVB feeds. ``start_feed`` callback routine to be called in order to start a DVB feed. ``stop_feed`` callback routine to be called in order to stop a DVB feed. ``write_to_decoder`` callback routine to be called if the feed is TS and it is routed to an A/V decoder, when a new TS packet is received. Used only on av7110-av.c. ``check_crc32`` callback routine to check CRC. If not initialized, dvb_demux will use an internal one. ``memcopy`` callback routine to memcopy received data. If not initialized, dvb_demux will default to memcpy(). ``users`` counter for the number of demux opened file descriptors. Currently, it is limited to 10 users. ``filter`` pointer to :c:type:`struct dvb_demux_filter `. ``feed`` pointer to :c:type:`struct dvb_demux_feed `. ``frontend_list`` :c:type:`struct list_head ` with frontends used by the demux. ``pesfilter`` array of :c:type:`struct dvb_demux_feed ` with the PES types that will be filtered. ``pids`` list of filtered program IDs. ``feed_list`` :c:type:`struct list_head ` with feeds. ``tsbuf`` temporary buffer used internally to store TS packets. ``tsbufp`` temporary buffer index used internally. ``mutex`` pointer to :c:type:`struct mutex ` used to protect feed set logic. ``lock`` pointer to :c:type:`spinlock_t`, used to protect buffer handling. ``cnt_storage`` buffer used for TS/TEI continuity check. ``speed_last_time`` :c:type:`ktime_t` used for TS speed check. ``speed_pkts_cnt`` packets count used for TS speed check.h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$ubh:}(hj$hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKhj$ubj)}(hXstruct dvb_demux { struct dmx_demux dmx; void *priv; int filternum; int feednum; int (*start_feed)(struct dvb_demux_feed *feed); int (*stop_feed)(struct dvb_demux_feed *feed); int (*write_to_decoder)(struct dvb_demux_feed *feed, const u8 *buf, size_t len); u32 (*check_crc32)(struct dvb_demux_feed *feed, const u8 *buf, size_t len); void (*memcopy)(struct dvb_demux_feed *feed, u8 *dst, const u8 *src, size_t len); int users; #define MAX_DVB_DEMUX_USERS 10; struct dvb_demux_filter *filter; struct dvb_demux_feed *feed; struct list_head frontend_list; struct dvb_demux_feed *pesfilter[DMX_PES_OTHER]; u16 pids[DMX_PES_OTHER]; #define DMX_MAX_PID 0x2000; struct list_head feed_list; u8 tsbuf[204]; int tsbufp; struct mutex mutex; spinlock_t lock; uint8_t *cnt_storage; ktime_t speed_last_time; uint32_t speed_pkts_cnt; };h]hXstruct dvb_demux { struct dmx_demux dmx; void *priv; int filternum; int feednum; int (*start_feed)(struct dvb_demux_feed *feed); int (*stop_feed)(struct dvb_demux_feed *feed); int (*write_to_decoder)(struct dvb_demux_feed *feed, const u8 *buf, size_t len); u32 (*check_crc32)(struct dvb_demux_feed *feed, const u8 *buf, size_t len); void (*memcopy)(struct dvb_demux_feed *feed, u8 *dst, const u8 *src, size_t len); int users; #define MAX_DVB_DEMUX_USERS 10; struct dvb_demux_filter *filter; struct dvb_demux_feed *feed; struct list_head frontend_list; struct dvb_demux_feed *pesfilter[DMX_PES_OTHER]; u16 pids[DMX_PES_OTHER]; #define DMX_MAX_PID 0x2000; struct list_head feed_list; u8 tsbuf[204]; int tsbufp; struct mutex mutex; spinlock_t lock; uint8_t *cnt_storage; ktime_t speed_last_time; uint32_t speed_pkts_cnt; };}hj$sbah}(h]h ]h"]h$]h&]hhuh1jhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKhj$ubh)}(h **Members**h]j)}(hj$h]hMembers}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$ubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKhj$ubj2)}(hhh](j7)}(h_``dmx`` embedded :c:type:`struct dmx_demux ` with demux capabilities and callbacks. h](j=)}(h``dmx``h]h)}(hj %h]hdmx}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj %ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKhj%ubjW)}(hhh]h)}(hVembedded :c:type:`struct dmx_demux ` with demux capabilities and callbacks.h](h embedded }(hj%%hhhNhNubh)}(h&:c:type:`struct dmx_demux `h]h)}(hj/%h]hstruct dmx_demux}(hj1%hhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhj-%ubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjw dmx_demuxuh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKhj%%ubh' with demux capabilities and callbacks.}(hj%%hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjL%hKhj"%ubah}(h]h ]h"]h$]h&]uh1jVhj%ubeh}(h]h ]h"]h$]h&]uh1j6hj!%hKhj%ubj7)}(hC``priv`` private data that can optionally be used by a DVB driver. h](j=)}(h``priv``h]h)}(hji%h]hpriv}(hjk%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjg%ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKhjc%ubjW)}(hhh]h)}(h9private data that can optionally be used by a DVB driver.h]h9private data that can optionally be used by a DVB driver.}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKhj%ubah}(h]h ]h"]h$]h&]uh1jVhjc%ubeh}(h]h ]h"]h$]h&]uh1j6hj~%hKhj%ubj7)}(h-``filternum`` maximum amount of DVB filters. h](j=)}(h ``filternum``h]h)}(hj%h]h filternum}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj%ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKhj%ubjW)}(hhh]h)}(hmaximum amount of DVB filters.h]hmaximum amount of DVB filters.}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj%hKhj%ubah}(h]h ]h"]h$]h&]uh1jVhj%ubeh}(h]h ]h"]h$]h&]uh1j6hj%hKhj%ubj7)}(h)``feednum`` maximum amount of DVB feeds. h](j=)}(h ``feednum``h]h)}(hj%h]hfeednum}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj%ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKhj%ubjW)}(hhh]h)}(hmaximum amount of DVB feeds.h]hmaximum amount of DVB feeds.}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj%hKhj%ubah}(h]h ]h"]h$]h&]uh1jVhj%ubeh}(h]h ]h"]h$]h&]uh1j6hj%hKhj%ubj7)}(hK``start_feed`` callback routine to be called in order to start a DVB feed. h](j=)}(h``start_feed``h]h)}(hj&h]h start_feed}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKhj&ubjW)}(hhh]h)}(h;callback routine to be called in order to start a DVB feed.h]h;callback routine to be called in order to start a DVB feed.}(hj.&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKhj+&ubah}(h]h ]h"]h$]h&]uh1jVhj&ubeh}(h]h ]h"]h$]h&]uh1j6hj*&hKhj%ubj7)}(hI``stop_feed`` callback routine to be called in order to stop a DVB feed. h](j=)}(h ``stop_feed``h]h)}(hjO&h]h stop_feed}(hjQ&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjM&ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKhjI&ubjW)}(hhh]h)}(h:callback routine to be called in order to stop a DVB feed.h]h:callback routine to be called in order to stop a DVB feed.}(hjh&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKhje&ubah}(h]h ]h"]h$]h&]uh1jVhjI&ubeh}(h]h ]h"]h$]h&]uh1j6hjd&hKhj%ubj7)}(h``write_to_decoder`` callback routine to be called if the feed is TS and it is routed to an A/V decoder, when a new TS packet is received. Used only on av7110-av.c. h](j=)}(h``write_to_decoder``h]h)}(hj&h]hwrite_to_decoder}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKhj&ubjW)}(hhh]h)}(hcallback routine to be called if the feed is TS and it is routed to an A/V decoder, when a new TS packet is received. Used only on av7110-av.c.h]hcallback routine to be called if the feed is TS and it is routed to an A/V decoder, when a new TS packet is received. Used only on av7110-av.c.}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKhj&ubah}(h]h ]h"]h$]h&]uh1jVhj&ubeh}(h]h ]h"]h$]h&]uh1j6hj&hKhj%ubj7)}(hg``check_crc32`` callback routine to check CRC. If not initialized, dvb_demux will use an internal one. h](j=)}(h``check_crc32``h]h)}(hj&h]h check_crc32}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKhj&ubjW)}(hhh]h)}(hVcallback routine to check CRC. If not initialized, dvb_demux will use an internal one.h]hVcallback routine to check CRC. If not initialized, dvb_demux will use an internal one.}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKhj&ubah}(h]h ]h"]h$]h&]uh1jVhj&ubeh}(h]h ]h"]h$]h&]uh1j6hj&hKhj%ubj7)}(ho``memcopy`` callback routine to memcopy received data. If not initialized, dvb_demux will default to memcpy(). h](j=)}(h ``memcopy``h]h)}(hj&h]hmemcopy}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKhj&ubjW)}(hhh]h)}(hbcallback routine to memcopy received data. If not initialized, dvb_demux will default to memcpy().h]hbcallback routine to memcopy received data. If not initialized, dvb_demux will default to memcpy().}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKhj'ubah}(h]h ]h"]h$]h&]uh1jVhj&ubeh}(h]h ]h"]h$]h&]uh1j6hj'hKhj%ubj7)}(hi``users`` counter for the number of demux opened file descriptors. Currently, it is limited to 10 users. h](j=)}(h ``users``h]h)}(hj7'h]husers}(hj9'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5'ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKhj1'ubjW)}(hhh]h)}(h^counter for the number of demux opened file descriptors. Currently, it is limited to 10 users.h]h^counter for the number of demux opened file descriptors. Currently, it is limited to 10 users.}(hjP'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKhjM'ubah}(h]h ]h"]h$]h&]uh1jVhj1'ubeh}(h]h ]h"]h$]h&]uh1j6hjL'hKhj%ubj7)}(hL``filter`` pointer to :c:type:`struct dvb_demux_filter `. h](j=)}(h ``filter``h]h)}(hjq'h]hfilter}(hjs'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjo'ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKhjk'ubjW)}(hhh]h)}(h@pointer to :c:type:`struct dvb_demux_filter `.h](h pointer to }(hj'hhhNhNubh)}(h4:c:type:`struct dvb_demux_filter `h]h)}(hj'h]hstruct dvb_demux_filter}(hj'hhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhj'ubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjwdvb_demux_filteruh1hhj'hKhj'ubh.}(hj'hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj'hKhj'ubah}(h]h ]h"]h$]h&]uh1jVhjk'ubeh}(h]h ]h"]h$]h&]uh1j6hj'hKhj%ubj7)}(hF``feed`` pointer to :c:type:`struct dvb_demux_feed `. h](j=)}(h``feed``h]h)}(hj'h]hfeed}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj'ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKhj'ubjW)}(hhh]h)}(h`.h](h pointer to }(hj'hhhNhNubh)}(h0:c:type:`struct dvb_demux_feed `h]h)}(hj'h]hstruct dvb_demux_feed}(hj'hhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhj'ubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjwdvb_demux_feeduh1hhj'hKhj'ubh.}(hj'hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj'hKhj'ubah}(h]h ]h"]h$]h&]uh1jVhj'ubeh}(h]h ]h"]h$]h&]uh1j6hj'hKhj%ubj7)}(h[``frontend_list`` :c:type:`struct list_head ` with frontends used by the demux. h](j=)}(h``frontend_list``h]h)}(hj)(h]h frontend_list}(hj+(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj'(ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKhj#(ubjW)}(hhh]h)}(hH:c:type:`struct list_head ` with frontends used by the demux.h](h)}(h&:c:type:`struct list_head `h]h)}(hjH(h]hstruct list_head}(hjJ(hhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhjF(ubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjw list_headuh1hhj>(hKhjB(ubh" with frontends used by the demux.}(hjB(hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj>(hKhj?(ubah}(h]h ]h"]h$]h&]uh1jVhj#(ubeh}(h]h ]h"]h$]h&]uh1j6hj>(hKhj%ubj7)}(hr``pesfilter`` array of :c:type:`struct dvb_demux_feed ` with the PES types that will be filtered. h](j=)}(h ``pesfilter``h]h)}(hj(h]h pesfilter}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj(ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKhj{(ubjW)}(hhh]h)}(hcarray of :c:type:`struct dvb_demux_feed ` with the PES types that will be filtered.h](h array of }(hj(hhhNhNubh)}(h0:c:type:`struct dvb_demux_feed `h]h)}(hj(h]hstruct dvb_demux_feed}(hj(hhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhj(ubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjwdvb_demux_feeduh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKhj(ubh* with the PES types that will be filtered.}(hj(hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj(hKhj(ubah}(h]h ]h"]h$]h&]uh1jVhj{(ubeh}(h]h ]h"]h$]h&]uh1j6hj(hKhj%ubj7)}(h'``pids`` list of filtered program IDs. h](j=)}(h``pids``h]h)}(hj(h]hpids}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj(ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKhj(ubjW)}(hhh]h)}(hlist of filtered program IDs.h]hlist of filtered program IDs.}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj(hKhj(ubah}(h]h ]h"]h$]h&]uh1jVhj(ubeh}(h]h ]h"]h$]h&]uh1j6hj(hKhj%ubj7)}(hA``feed_list`` :c:type:`struct list_head ` with feeds. h](j=)}(h ``feed_list``h]h)}(hj)h]h feed_list}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj)ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKhj)ubjW)}(hhh]h)}(h2:c:type:`struct list_head ` with feeds.h](h)}(h&:c:type:`struct list_head `h]h)}(hj6)h]hstruct list_head}(hj8)hhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhj4)ubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjw list_headuh1hhj,)hKhj0)ubh with feeds.}(hj0)hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj,)hKhj-)ubah}(h]h ]h"]h$]h&]uh1jVhj)ubeh}(h]h ]h"]h$]h&]uh1j6hj,)hKhj%ubj7)}(h@``tsbuf`` temporary buffer used internally to store TS packets. h](j=)}(h ``tsbuf``h]h)}(hjo)h]htsbuf}(hjq)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjm)ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKhji)ubjW)}(hhh]h)}(h5temporary buffer used internally to store TS packets.h]h5temporary buffer used internally to store TS packets.}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj)hKhj)ubah}(h]h ]h"]h$]h&]uh1jVhji)ubeh}(h]h ]h"]h$]h&]uh1j6hj)hKhj%ubj7)}(h3``tsbufp`` temporary buffer index used internally. h](j=)}(h ``tsbufp``h]h)}(hj)h]htsbufp}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj)ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKhj)ubjW)}(hhh]h)}(h'temporary buffer index used internally.h]h'temporary buffer index used internally.}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj)hKhj)ubah}(h]h ]h"]h$]h&]uh1jVhj)ubeh}(h]h ]h"]h$]h&]uh1j6hj)hKhj%ubj7)}(hT``mutex`` pointer to :c:type:`struct mutex ` used to protect feed set logic. h](j=)}(h ``mutex``h]h)}(hj)h]hmutex}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj)ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKhj)ubjW)}(hhh]h)}(hIpointer to :c:type:`struct mutex ` used to protect feed set logic.h](h pointer to }(hj)hhhNhNubh)}(h:c:type:`struct mutex `h]h)}(hj*h]h struct mutex}(hj*hhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhj*ubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjwmutexuh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKhj)ubh used to protect feed set logic.}(hj)hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj!*hKhj)ubah}(h]h ]h"]h$]h&]uh1jVhj)ubeh}(h]h ]h"]h$]h&]uh1j6hj)hKhj%ubj7)}(hK``lock`` pointer to :c:type:`spinlock_t`, used to protect buffer handling. h](j=)}(h``lock``h]h)}(hj>*h]hlock}(hj@*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj<*ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKhj8*ubjW)}(hhh]h)}(hApointer to :c:type:`spinlock_t`, used to protect buffer handling.h](h pointer to }(hjW*hhhNhNubh)}(h:c:type:`spinlock_t`h]h)}(hja*h]h spinlock_t}(hjc*hhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhj_*ubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjw spinlock_tuh1hhjS*hKhjW*ubh", used to protect buffer handling.}(hjW*hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjS*hKhjT*ubah}(h]h ]h"]h$]h&]uh1jVhj8*ubeh}(h]h ]h"]h$]h&]uh1j6hjS*hKhj%ubj7)}(h9``cnt_storage`` buffer used for TS/TEI continuity check. h](j=)}(h``cnt_storage``h]h)}(hj*h]h cnt_storage}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKhj*ubjW)}(hhh]h)}(h(buffer used for TS/TEI continuity check.h]h(buffer used for TS/TEI continuity check.}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*hKhj*ubah}(h]h ]h"]h$]h&]uh1jVhj*ubeh}(h]h ]h"]h$]h&]uh1j6hj*hKhj%ubj7)}(h?``speed_last_time`` :c:type:`ktime_t` used for TS speed check. h](j=)}(h``speed_last_time``h]h)}(hj*h]hspeed_last_time}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKhj*ubjW)}(hhh]h)}(h*:c:type:`ktime_t` used for TS speed check.h](h)}(h:c:type:`ktime_t`h]h)}(hj*h]hktime_t}(hj*hhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhj*ubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjwktime_tuh1hhj*hKhj*ubh used for TS speed check.}(hj*hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj*hKhj*ubah}(h]h ]h"]h$]h&]uh1jVhj*ubeh}(h]h ]h"]h$]h&]uh1j6hj*hKhj%ubj7)}(h9``speed_pkts_cnt`` packets count used for TS speed check.h](j=)}(h``speed_pkts_cnt``h]h)}(hj++h]hspeed_pkts_cnt}(hj-+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj)+ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKhj%+ubjW)}(hhh]h)}(h&packets count used for TS speed check.h]h&packets count used for TS speed check.}(hjD+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKhjA+ubah}(h]h ]h"]h$]h&]uh1jVhj%+ubeh}(h]h ]h"]h$]h&]uh1j6hj@+hKhj%ubeh}(h]h ]h"]h$]h&]uh1j1hj$ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjt)}(hhh]h}(h]h ]h"]h$]h&]entries](jdvb_dmx_init (C function)c.dvb_dmx_inithNtauh1jshjhhhNhNubj)}(hhh](j)}(h*int dvb_dmx_init (struct dvb_demux *demux)h]j)}(h)int dvb_dmx_init(struct dvb_demux *demux)h](jL)}(hinth]hint}(hj+hhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhj+hhhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKubj)}(h h]h }(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+hhhj+hKubj)}(h dvb_dmx_inith]j)}(h dvb_dmx_inith]h dvb_dmx_init}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj+hhhj+hKubj)}(h(struct dvb_demux *demux)h]j)}(hstruct dvb_demux *demuxh](j)}(hjIh]hstruct}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+ubj)}(h h]h }(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+ubh)}(hhh]j)}(h dvb_demuxh]h dvb_demux}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+ubah}(h]h ]h"]h$]h&] refdomainjereftypej reftargetj+modnameN classnameNjj)}j]j)}jj+sbc.dvb_dmx_initasbuh1hhj+ubj)}(h h]h }(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+ubj)}(hjh]h*}(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+ubj)}(hdemuxh]hdemux}(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj+ubah}(h]h ]h"]h$]h&]hhuh1jhj+hhhj+hKubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj}+hhhj+hKubah}(h]jx+ah ](jjeh"]h$]h&]jj)jhuh1jhj+hKhjz+hhubj)}(hhh]h)}(h%initialize a digital TV demux struct.h]h%initialize a digital TV demux struct.}(hjE,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKhjB,hhubah}(h]h ]h"]h$]h&]uh1jhjz+hhhj+hKubeh}(h]h ](jefunctioneh"]h$]h&]j jej j],j j],jjjuh1jhhhjhNhNubj)}(hX**Parameters** ``struct dvb_demux *demux`` :c:type:`struct dvb_demux ` to be initialized. **Description** Before being able to register a digital TV demux struct, drivers should call this routine. On its typical usage, some fields should be initialized at the driver before calling it. A typical usecase is:: dvb->demux.dmx.capabilities = DMX_TS_FILTERING | DMX_SECTION_FILTERING | DMX_MEMORY_BASED_FILTERING; dvb->demux.priv = dvb; dvb->demux.filternum = 256; dvb->demux.feednum = 256; dvb->demux.start_feed = driver_start_feed; dvb->demux.stop_feed = driver_stop_feed; ret = dvb_dmx_init(&dvb->demux); if (ret < 0) return ret;h](h)}(h**Parameters**h]j)}(hjg,h]h Parameters}(hji,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhje,ubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKhja,ubj2)}(hhh]j7)}(hV``struct dvb_demux *demux`` :c:type:`struct dvb_demux ` to be initialized. h](j=)}(h``struct dvb_demux *demux``h]h)}(hj,h]hstruct dvb_demux *demux}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKhj,ubjW)}(hhh]h)}(h9:c:type:`struct dvb_demux ` to be initialized.h](h)}(h&:c:type:`struct dvb_demux `h]h)}(hj,h]hstruct dvb_demux}(hj,hhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhj,ubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjw dvb_demuxuh1hhj,hKhj,ubh to be initialized.}(hj,hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj,hKhj,ubah}(h]h ]h"]h$]h&]uh1jVhj,ubeh}(h]h ]h"]h$]h&]uh1j6hj,hKhj},ubah}(h]h ]h"]h$]h&]uh1j1hja,ubh)}(h**Description**h]j)}(hj,h]h Description}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,ubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKhja,ubh)}(hBefore being able to register a digital TV demux struct, drivers should call this routine. On its typical usage, some fields should be initialized at the driver before calling it.h]hBefore being able to register a digital TV demux struct, drivers should call this routine. On its typical usage, some fields should be initialized at the driver before calling it.}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKhja,ubh)}(hA typical usecase is::h]hA typical usecase is:}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKhja,ubj)}(hXbdvb->demux.dmx.capabilities = DMX_TS_FILTERING | DMX_SECTION_FILTERING | DMX_MEMORY_BASED_FILTERING; dvb->demux.priv = dvb; dvb->demux.filternum = 256; dvb->demux.feednum = 256; dvb->demux.start_feed = driver_start_feed; dvb->demux.stop_feed = driver_stop_feed; ret = dvb_dmx_init(&dvb->demux); if (ret < 0) return ret;h]hXbdvb->demux.dmx.capabilities = DMX_TS_FILTERING | DMX_SECTION_FILTERING | DMX_MEMORY_BASED_FILTERING; dvb->demux.priv = dvb; dvb->demux.filternum = 256; dvb->demux.feednum = 256; dvb->demux.start_feed = driver_start_feed; dvb->demux.stop_feed = driver_stop_feed; ret = dvb_dmx_init(&dvb->demux); if (ret < 0) return ret;}hj-sbah}(h]h ]h"]h$]h&]hhuh1jhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhKhja,ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjt)}(hhh]h}(h]h ]h"]h$]h&]entries](jdvb_dmx_release (C function)c.dvb_dmx_releasehNtauh1jshjhhhNhNubj)}(hhh](j)}(h.void dvb_dmx_release (struct dvb_demux *demux)h]j)}(h-void dvb_dmx_release(struct dvb_demux *demux)h](jL)}(hvoidh]hvoid}(hjC-hhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhj?-hhhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhMubj)}(h h]h }(hjR-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?-hhhjQ-hMubj)}(hdvb_dmx_releaseh]j)}(hdvb_dmx_releaseh]hdvb_dmx_release}(hjd-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`-ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj?-hhhjQ-hMubj)}(h(struct dvb_demux *demux)h]j)}(hstruct dvb_demux *demuxh](j)}(hjIh]hstruct}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|-ubj)}(h h]h }(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|-ubh)}(hhh]j)}(h dvb_demuxh]h dvb_demux}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-ubah}(h]h ]h"]h$]h&] refdomainjereftypej reftargetj-modnameN classnameNjj)}j]j)}jjf-sbc.dvb_dmx_releaseasbuh1hhj|-ubj)}(h h]h }(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|-ubj)}(hjh]h*}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|-ubj)}(hdemuxh]hdemux}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|-ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjx-ubah}(h]h ]h"]h$]h&]hhuh1jhj?-hhhjQ-hMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj;-hhhjQ-hMubah}(h]j6-ah ](jjeh"]h$]h&]jj)jhuh1jhjQ-hMhj8-hhubj)}(hhh]h)}(h-releases a digital TV demux internal buffers.h]h-releases a digital TV demux internal buffers.}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhMhj.hhubah}(h]h ]h"]h$]h&]uh1jhj8-hhhjQ-hMubeh}(h]h ](jefunctioneh"]h$]h&]j jej j.j j.jjjuh1jhhhjhNhNubj)}(hX***Parameters** ``struct dvb_demux *demux`` :c:type:`struct dvb_demux ` to be released. **Description** The DVB core internally allocates data at **demux**. This routine releases those data. Please notice that the struct itelf is not released, as it can be embedded on other structs.h](h)}(h**Parameters**h]j)}(hj%.h]h Parameters}(hj'.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj#.ubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhMhj.ubj2)}(hhh]j7)}(hS``struct dvb_demux *demux`` :c:type:`struct dvb_demux ` to be released. h](j=)}(h``struct dvb_demux *demux``h]h)}(hjD.h]hstruct dvb_demux *demux}(hjF.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjB.ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhMhj>.ubjW)}(hhh]h)}(h6:c:type:`struct dvb_demux ` to be released.h](h)}(h&:c:type:`struct dvb_demux `h]h)}(hjc.h]hstruct dvb_demux}(hje.hhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhja.ubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjw dvb_demuxuh1hhjY.hMhj].ubh to be released.}(hj].hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjY.hMhjZ.ubah}(h]h ]h"]h$]h&]uh1jVhj>.ubeh}(h]h ]h"]h$]h&]uh1j6hjY.hMhj;.ubah}(h]h ]h"]h$]h&]uh1j1hj.ubh)}(h**Description**h]j)}(hj.h]h Description}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.ubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhMhj.ubh)}(hThe DVB core internally allocates data at **demux**. This routine releases those data. Please notice that the struct itelf is not released, as it can be embedded on other structs.h](h*The DVB core internally allocates data at }(hj.hhhNhNubj)}(h **demux**h]hdemux}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.ubh. This routine releases those data. Please notice that the struct itelf is not released, as it can be embedded on other structs.}(hj.hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhMhj.ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjt)}(hhh]h}(h]h ]h"]h$]h&]entries](j%dvb_dmx_swfilter_packets (C function)c.dvb_dmx_swfilter_packetshNtauh1jshjhhhNhNubj)}(hhh](j)}(hTvoid dvb_dmx_swfilter_packets (struct dvb_demux *demux, const u8 *buf, size_t count)h]j)}(hSvoid dvb_dmx_swfilter_packets(struct dvb_demux *demux, const u8 *buf, size_t count)h](jL)}(hvoidh]hvoid}(hj.hhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhj.hhhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhMubj)}(h h]h }(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.hhhj/hMubj)}(hdvb_dmx_swfilter_packetsh]j)}(hdvb_dmx_swfilter_packetsh]hdvb_dmx_swfilter_packets}(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj/ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj.hhhj/hMubj)}(h6(struct dvb_demux *demux, const u8 *buf, size_t count)h](j)}(hstruct dvb_demux *demuxh](j)}(hjIh]hstruct}(hj2/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj./ubj)}(h h]h }(hj?/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj./ubh)}(hhh]j)}(h dvb_demuxh]h dvb_demux}(hjP/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjM/ubah}(h]h ]h"]h$]h&] refdomainjereftypej reftargetjR/modnameN classnameNjj)}j]j)}jj/sbc.dvb_dmx_swfilter_packetsasbuh1hhj./ubj)}(h h]h }(hjp/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj./ubj)}(hjh]h*}(hj~/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj./ubj)}(hdemuxh]hdemux}(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj./ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj*/ubj)}(h const u8 *bufh](j)}(hconsth]hconst}(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj/ubj)}(h h]h }(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj/ubh)}(hhh]j)}(hu8h]hu8}(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj/ubah}(h]h ]h"]h$]h&] refdomainjereftypej reftargetj/modnameN classnameNjj)}j]jl/c.dvb_dmx_swfilter_packetsasbuh1hhj/ubj)}(h h]h }(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj/ubj)}(hjh]h*}(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj/ubj)}(hbufh]hbuf}(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj/ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj*/ubj)}(h size_t counth](h)}(hhh]j)}(hsize_th]hsize_t}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0ubah}(h]h ]h"]h$]h&] refdomainjereftypej reftargetj0modnameN classnameNjj)}j]jl/c.dvb_dmx_swfilter_packetsasbuh1hhj0ubj)}(h h]h }(hj60hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0ubj)}(hcounth]hcount}(hjD0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj*/ubeh}(h]h ]h"]h$]h&]hhuh1jhj.hhhj/hMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj.hhhj/hMubah}(h]j.ah ](jjeh"]h$]h&]jj)jhuh1jhj/hMhj.hhubj)}(hhh]h)}(hWuse dvb software filter for a buffer with multiple MPEG-TS packets with 188 bytes each.h]hWuse dvb software filter for a buffer with multiple MPEG-TS packets with 188 bytes each.}(hjn0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhMhjk0hhubah}(h]h ]h"]h$]h&]uh1jhj.hhhj/hMubeh}(h]h ](jefunctioneh"]h$]h&]j jej j0j j0jjjuh1jhhhjhNhNubj)}(hX**Parameters** ``struct dvb_demux *demux`` pointer to :c:type:`struct dvb_demux ` ``const u8 *buf`` buffer with data to be filtered ``size_t count`` number of MPEG-TS packets with size of 188. **Description** The routine will discard a DVB packet that don't start with 0x47. Use this routine if the DVB demux fills MPEG-TS buffers that are already aligned. **NOTE** The **buf** size should have size equal to ``count * 188``.h](h)}(h**Parameters**h]j)}(hj0h]h Parameters}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj0ubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhMhj0ubj2)}(hhh](j7)}(hN``struct dvb_demux *demux`` pointer to :c:type:`struct dvb_demux ` h](j=)}(h``struct dvb_demux *demux``h]h)}(hj0h]hstruct dvb_demux *demux}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj0ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhMhj0ubjW)}(hhh]h)}(h1pointer to :c:type:`struct dvb_demux `h](h pointer to }(hj0hhhNhNubh)}(h&:c:type:`struct dvb_demux `h]h)}(hj0h]hstruct dvb_demux}(hj0hhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhj0ubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjw dvb_demuxuh1hhj0hMhj0ubeh}(h]h ]h"]h$]h&]uh1hhj0hMhj0ubah}(h]h ]h"]h$]h&]uh1jVhj0ubeh}(h]h ]h"]h$]h&]uh1j6hj0hMhj0ubj7)}(h2``const u8 *buf`` buffer with data to be filtered h](j=)}(h``const u8 *buf``h]h)}(hj1h]h const u8 *buf}(hj 1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj1ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhMhj1ubjW)}(hhh]h)}(hbuffer with data to be filteredh]hbuffer with data to be filtered}(hj 1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj1hMhj1ubah}(h]h ]h"]h$]h&]uh1jVhj1ubeh}(h]h ]h"]h$]h&]uh1j6hj1hMhj0ubj7)}(h=``size_t count`` number of MPEG-TS packets with size of 188. h](j=)}(h``size_t count``h]h)}(hj@1h]h size_t count}(hjB1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>1ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhMhj:1ubjW)}(hhh]h)}(h+number of MPEG-TS packets with size of 188.h]h+number of MPEG-TS packets with size of 188.}(hjY1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjU1hMhjV1ubah}(h]h ]h"]h$]h&]uh1jVhj:1ubeh}(h]h ]h"]h$]h&]uh1j6hjU1hMhj0ubeh}(h]h ]h"]h$]h&]uh1j1hj0ubh)}(h**Description**h]j)}(hj{1h]h Description}(hj}1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjy1ubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhM hj0ubh)}(hAThe routine will discard a DVB packet that don't start with 0x47.h]hCThe routine will discard a DVB packet that don’t start with 0x47.}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhMhj0ubh)}(hQUse this routine if the DVB demux fills MPEG-TS buffers that are already aligned.h]hQUse this routine if the DVB demux fills MPEG-TS buffers that are already aligned.}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhM!hj0ubh)}(h**NOTE**h]j)}(hj1h]hNOTE}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1ubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhM$hj0ubh)}(h;The **buf** size should have size equal to ``count * 188``.h](hThe }(hj1hhhNhNubj)}(h**buf**h]hbuf}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1ubh size should have size equal to }(hj1hhhNhNubh)}(h``count * 188``h]h count * 188}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj1ubh.}(hj1hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhM%hj0ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjt)}(hhh]h}(h]h ]h"]h$]h&]entries](jdvb_dmx_swfilter (C function)c.dvb_dmx_swfilterhNtauh1jshjhhhNhNubj)}(hhh](j)}(hLvoid dvb_dmx_swfilter (struct dvb_demux *demux, const u8 *buf, size_t count)h]j)}(hKvoid dvb_dmx_swfilter(struct dvb_demux *demux, const u8 *buf, size_t count)h](jL)}(hvoidh]hvoid}(hj2hhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhj2hhhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhM+ubj)}(h h]h }(hj)2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2hhhj(2hM+ubj)}(hdvb_dmx_swfilterh]j)}(hdvb_dmx_swfilterh]hdvb_dmx_swfilter}(hj;2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj72ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj2hhhj(2hM+ubj)}(h6(struct dvb_demux *demux, const u8 *buf, size_t count)h](j)}(hstruct dvb_demux *demuxh](j)}(hjIh]hstruct}(hjW2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjS2ubj)}(h h]h }(hjd2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjS2ubh)}(hhh]j)}(h dvb_demuxh]h dvb_demux}(hju2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjr2ubah}(h]h ]h"]h$]h&] refdomainjereftypej reftargetjw2modnameN classnameNjj)}j]j)}jj=2sbc.dvb_dmx_swfilterasbuh1hhjS2ubj)}(h h]h }(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjS2ubj)}(hjh]h*}(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjS2ubj)}(hdemuxh]hdemux}(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjS2ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjO2ubj)}(h const u8 *bufh](j)}(hj/h]hconst}(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2ubj)}(h h]h }(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2ubh)}(hhh]j)}(hu8h]hu8}(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&] refdomainjereftypej reftargetj2modnameN classnameNjj)}j]j2c.dvb_dmx_swfilterasbuh1hhj2ubj)}(h h]h }(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2ubj)}(hjh]h*}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2ubj)}(hbufh]hbuf}(hj 3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjO2ubj)}(h size_t counth](h)}(hhh]j)}(hsize_th]hsize_t}(hj<3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj93ubah}(h]h ]h"]h$]h&] refdomainjereftypej reftargetj>3modnameN classnameNjj)}j]j2c.dvb_dmx_swfilterasbuh1hhj53ubj)}(h h]h }(hjZ3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj53ubj)}(hcounth]hcount}(hjh3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj53ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjO2ubeh}(h]h ]h"]h$]h&]hhuh1jhj2hhhj(2hM+ubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj2hhhj(2hM+ubah}(h]j 2ah ](jjeh"]h$]h&]jj)jhuh1jhj(2hM+hj2hhubj)}(hhh]h)}(hWuse dvb software filter for a buffer with multiple MPEG-TS packets with 188 bytes each.h]hWuse dvb software filter for a buffer with multiple MPEG-TS packets with 188 bytes each.}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhM+hj3hhubah}(h]h ]h"]h$]h&]uh1jhj2hhhj(2hM+ubeh}(h]h ](jefunctioneh"]h$]h&]j jej j3j j3jjjuh1jhhhjhNhNubj)}(hX**Parameters** ``struct dvb_demux *demux`` pointer to :c:type:`struct dvb_demux ` ``const u8 *buf`` buffer with data to be filtered ``size_t count`` number of MPEG-TS packets with size of 188. **Description** If a DVB packet doesn't start with 0x47, it will seek for the first byte that starts with 0x47. Use this routine if the DVB demux fill buffers that may not start with a packet start mark (0x47). **NOTE** The **buf** size should have size equal to ``count * 188``.h](h)}(h**Parameters**h]j)}(hj3h]h Parameters}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3ubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhM/hj3ubj2)}(hhh](j7)}(hN``struct dvb_demux *demux`` pointer to :c:type:`struct dvb_demux ` h](j=)}(h``struct dvb_demux *demux``h]h)}(hj3h]hstruct dvb_demux *demux}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj3ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhM.hj3ubjW)}(hhh]h)}(h1pointer to :c:type:`struct dvb_demux `h](h pointer to }(hj3hhhNhNubh)}(h&:c:type:`struct dvb_demux `h]h)}(hj3h]hstruct dvb_demux}(hj3hhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhj3ubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjw dvb_demuxuh1hhj3hM.hj3ubeh}(h]h ]h"]h$]h&]uh1hhj3hM.hj3ubah}(h]h ]h"]h$]h&]uh1jVhj3ubeh}(h]h ]h"]h$]h&]uh1j6hj3hM.hj3ubj7)}(h2``const u8 *buf`` buffer with data to be filtered h](j=)}(h``const u8 *buf``h]h)}(hj+4h]h const u8 *buf}(hj-4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj)4ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhM/hj%4ubjW)}(hhh]h)}(hbuffer with data to be filteredh]hbuffer with data to be filtered}(hjD4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj@4hM/hjA4ubah}(h]h ]h"]h$]h&]uh1jVhj%4ubeh}(h]h ]h"]h$]h&]uh1j6hj@4hM/hj3ubj7)}(h=``size_t count`` number of MPEG-TS packets with size of 188. h](j=)}(h``size_t count``h]h)}(hjd4h]h size_t count}(hjf4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjb4ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhM0hj^4ubjW)}(hhh]h)}(h+number of MPEG-TS packets with size of 188.h]h+number of MPEG-TS packets with size of 188.}(hj}4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjy4hM0hjz4ubah}(h]h ]h"]h$]h&]uh1jVhj^4ubeh}(h]h ]h"]h$]h&]uh1j6hjy4hM0hj3ubeh}(h]h ]h"]h$]h&]uh1j1hj3ubh)}(h**Description**h]j)}(hj4h]h Description}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhM2hj3ubh)}(h_If a DVB packet doesn't start with 0x47, it will seek for the first byte that starts with 0x47.h]haIf a DVB packet doesn’t start with 0x47, it will seek for the first byte that starts with 0x47.}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhM1hj3ubh)}(hbUse this routine if the DVB demux fill buffers that may not start with a packet start mark (0x47).h]hbUse this routine if the DVB demux fill buffers that may not start with a packet start mark (0x47).}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhM4hj3ubh)}(h**NOTE**h]j)}(hj4h]hNOTE}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhM7hj3ubh)}(h;The **buf** size should have size equal to ``count * 188``.h](hThe }(hj4hhhNhNubj)}(h**buf**h]hbuf}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubh size should have size equal to }(hj4hhhNhNubh)}(h``count * 188``h]h count * 188}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj4ubh.}(hj4hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhM8hj3ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjt)}(hhh]h}(h]h ]h"]h$]h&]entries](j!dvb_dmx_swfilter_204 (C function)c.dvb_dmx_swfilter_204hNtauh1jshjhhhNhNubj)}(hhh](j)}(hPvoid dvb_dmx_swfilter_204 (struct dvb_demux *demux, const u8 *buf, size_t count)h]j)}(hOvoid dvb_dmx_swfilter_204(struct dvb_demux *demux, const u8 *buf, size_t count)h](jL)}(hvoidh]hvoid}(hj>5hhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhj:5hhhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhM=ubj)}(h h]h }(hjM5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:5hhhjL5hM=ubj)}(hdvb_dmx_swfilter_204h]j)}(hdvb_dmx_swfilter_204h]hdvb_dmx_swfilter_204}(hj_5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj[5ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj:5hhhjL5hM=ubj)}(h6(struct dvb_demux *demux, const u8 *buf, size_t count)h](j)}(hstruct dvb_demux *demuxh](j)}(hjIh]hstruct}(hj{5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjw5ubj)}(h h]h }(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjw5ubh)}(hhh]j)}(h dvb_demuxh]h dvb_demux}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&] refdomainjereftypej reftargetj5modnameN classnameNjj)}j]j)}jja5sbc.dvb_dmx_swfilter_204asbuh1hhjw5ubj)}(h h]h }(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjw5ubj)}(hjh]h*}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjw5ubj)}(hdemuxh]hdemux}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjw5ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjs5ubj)}(h const u8 *bufh](j)}(hj/h]hconst}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ubj)}(h h]h }(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ubh)}(hhh]j)}(hu8h]hu8}(hj 6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&] refdomainjereftypej reftargetj 6modnameN classnameNjj)}j]j5c.dvb_dmx_swfilter_204asbuh1hhj5ubj)}(h h]h }(hj)6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ubj)}(hjh]h*}(hj76hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ubj)}(hbufh]hbuf}(hjD6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjs5ubj)}(h size_t counth](h)}(hhh]j)}(hsize_th]hsize_t}(hj`6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]6ubah}(h]h ]h"]h$]h&] refdomainjereftypej reftargetjb6modnameN classnameNjj)}j]j5c.dvb_dmx_swfilter_204asbuh1hhjY6ubj)}(h h]h }(hj~6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjY6ubj)}(hcounth]hcount}(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjY6ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjs5ubeh}(h]h ]h"]h$]h&]hhuh1jhj:5hhhjL5hM=ubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj65hhhjL5hM=ubah}(h]j15ah ](jjeh"]h$]h&]jj)jhuh1jhjL5hM=hj35hhubj)}(hhh]h)}(hWuse dvb software filter for a buffer with multiple MPEG-TS packets with 204 bytes each.h]hWuse dvb software filter for a buffer with multiple MPEG-TS packets with 204 bytes each.}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhM=hj6hhubah}(h]h ]h"]h$]h&]uh1jhj35hhhjL5hM=ubeh}(h]h ](jefunctioneh"]h$]h&]j jej j6j j6jjjuh1jhhhjhNhNubj)}(hX**Parameters** ``struct dvb_demux *demux`` pointer to :c:type:`struct dvb_demux ` ``const u8 *buf`` buffer with data to be filtered ``size_t count`` number of MPEG-TS packets with size of 204. **Description** If a DVB packet doesn't start with 0x47, it will seek for the first byte that starts with 0x47. Use this routine if the DVB demux fill buffers that may not start with a packet start mark (0x47). **NOTE** The **buf** size should have size equal to ``count * 204``.h](h)}(h**Parameters**h]j)}(hj6h]h Parameters}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhMAhj6ubj2)}(hhh](j7)}(hN``struct dvb_demux *demux`` pointer to :c:type:`struct dvb_demux ` h](j=)}(h``struct dvb_demux *demux``h]h)}(hj6h]hstruct dvb_demux *demux}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj6ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhM@hj6ubjW)}(hhh]h)}(h1pointer to :c:type:`struct dvb_demux `h](h pointer to }(hj7hhhNhNubh)}(h&:c:type:`struct dvb_demux `h]h)}(hj7h]hstruct dvb_demux}(hj7hhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhj7ubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjw dvb_demuxuh1hhj 7hM@hj7ubeh}(h]h ]h"]h$]h&]uh1hhj 7hM@hj 7ubah}(h]h ]h"]h$]h&]uh1jVhj6ubeh}(h]h ]h"]h$]h&]uh1j6hj 7hM@hj6ubj7)}(h2``const u8 *buf`` buffer with data to be filtered h](j=)}(h``const u8 *buf``h]h)}(hjO7h]h const u8 *buf}(hjQ7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjM7ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhMAhjI7ubjW)}(hhh]h)}(hbuffer with data to be filteredh]hbuffer with data to be filtered}(hjh7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjd7hMAhje7ubah}(h]h ]h"]h$]h&]uh1jVhjI7ubeh}(h]h ]h"]h$]h&]uh1j6hjd7hMAhj6ubj7)}(h=``size_t count`` number of MPEG-TS packets with size of 204. h](j=)}(h``size_t count``h]h)}(hj7h]h size_t count}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj7ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhMBhj7ubjW)}(hhh]h)}(h+number of MPEG-TS packets with size of 204.h]h+number of MPEG-TS packets with size of 204.}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj7hMBhj7ubah}(h]h ]h"]h$]h&]uh1jVhj7ubeh}(h]h ]h"]h$]h&]uh1j6hj7hMBhj6ubeh}(h]h ]h"]h$]h&]uh1j1hj6ubh)}(h**Description**h]j)}(hj7h]h Description}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7ubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhMDhj6ubh)}(h_If a DVB packet doesn't start with 0x47, it will seek for the first byte that starts with 0x47.h]haIf a DVB packet doesn’t start with 0x47, it will seek for the first byte that starts with 0x47.}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhMChj6ubh)}(hbUse this routine if the DVB demux fill buffers that may not start with a packet start mark (0x47).h]hbUse this routine if the DVB demux fill buffers that may not start with a packet start mark (0x47).}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhMFhj6ubh)}(h**NOTE**h]j)}(hj7h]hNOTE}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7ubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhMIhj6ubh)}(h;The **buf** size should have size equal to ``count * 204``.h](hThe }(hj8hhhNhNubj)}(h**buf**h]hbuf}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubh size should have size equal to }(hj8hhhNhNubh)}(h``count * 204``h]h count * 204}(hj)8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj8ubh.}(hj8hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhMJhj6ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjt)}(hhh]h}(h]h ]h"]h$]h&]entries](j!dvb_dmx_swfilter_raw (C function)c.dvb_dmx_swfilter_rawhNtauh1jshjhhhNhNubj)}(hhh](j)}(hPvoid dvb_dmx_swfilter_raw (struct dvb_demux *demux, const u8 *buf, size_t count)h]j)}(hOvoid dvb_dmx_swfilter_raw(struct dvb_demux *demux, const u8 *buf, size_t count)h](jL)}(hvoidh]hvoid}(hjb8hhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhj^8hhhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhMPubj)}(h h]h }(hjq8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj^8hhhjp8hMPubj)}(hdvb_dmx_swfilter_rawh]j)}(hdvb_dmx_swfilter_rawh]hdvb_dmx_swfilter_raw}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj8ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj^8hhhjp8hMPubj)}(h6(struct dvb_demux *demux, const u8 *buf, size_t count)h](j)}(hstruct dvb_demux *demuxh](j)}(hjIh]hstruct}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj8ubj)}(h h]h }(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj8ubh)}(hhh]j)}(h dvb_demuxh]h dvb_demux}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj8ubah}(h]h ]h"]h$]h&] refdomainjereftypej reftargetj8modnameN classnameNjj)}j]j)}jj8sbc.dvb_dmx_swfilter_rawasbuh1hhj8ubj)}(h h]h }(hj8hhhNhNubah}(h ]h ]jah"]h$]h&]uh1jhj8ubj)}(hjh]h*}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj8ubj)}(hdemuxh]hdemux}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj8ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj8ubj)}(h const u8 *bufh](j)}(hj/h]hconst}(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj 9ubj)}(h h]h }(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj 9ubh)}(hhh]j)}(hu8h]hu8}(hj/9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,9ubah}(h]h ]h"]h$]h&] refdomainjereftypej reftargetj19modnameN classnameNjj)}j]j8c.dvb_dmx_swfilter_rawasbuh1hhj 9ubj)}(h h]h }(hjM9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj 9ubj)}(hjh]h*}(hj[9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj 9ubj)}(hbufh]hbuf}(hjh9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj 9ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj8ubj)}(h size_t counth](h)}(hhh]j)}(hsize_th]hsize_t}(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&] refdomainjereftypej reftargetj9modnameN classnameNjj)}j]j8c.dvb_dmx_swfilter_rawasbuh1hhj}9ubj)}(h h]h }(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}9ubj)}(hcounth]hcount}(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}9ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj8ubeh}(h]h ]h"]h$]h&]hhuh1jhj^8hhhjp8hMPubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjZ8hhhjp8hMPubah}(h]jU8ah ](jjeh"]h$]h&]jj)jhuh1jhjp8hMPhjW8hhubj)}(hhh]h)}(h:make the raw data available to userspace without filteringh]h:make the raw data available to userspace without filtering}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhMPhj9hhubah}(h]h ]h"]h$]h&]uh1jhjW8hhhjp8hMPubeh}(h]h ](jefunctioneh"]h$]h&]j jej j9j j9jjjuh1jhhhjhNhNubj)}(hXN**Parameters** ``struct dvb_demux *demux`` pointer to :c:type:`struct dvb_demux ` ``const u8 *buf`` buffer with data ``size_t count`` number of packets to be passed. The actual size of each packet depends on the :c:type:`dvb_demux->feed `->cb.ts logic. **Description** Use it if the driver needs to deliver the raw payload to userspace without passing through the kernel demux. That is meant to support some delivery systems that aren't based on MPEG-TS. This function relies on :c:type:`dvb_demux->feed `->cb.ts to actually handle the buffer.h](h)}(h**Parameters**h]j)}(hj9h]h Parameters}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhMThj9ubj2)}(hhh](j7)}(hN``struct dvb_demux *demux`` pointer to :c:type:`struct dvb_demux ` h](j=)}(h``struct dvb_demux *demux``h]h)}(hj:h]hstruct dvb_demux *demux}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj:ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhMShj:ubjW)}(hhh]h)}(h1pointer to :c:type:`struct dvb_demux `h](h pointer to }(hj4:hhhNhNubh)}(h&:c:type:`struct dvb_demux `h]h)}(hj>:h]hstruct dvb_demux}(hj@:hhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhj<:ubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjw dvb_demuxuh1hhj0:hMShj4:ubeh}(h]h ]h"]h$]h&]uh1hhj0:hMShj1:ubah}(h]h ]h"]h$]h&]uh1jVhj:ubeh}(h]h ]h"]h$]h&]uh1j6hj0:hMShj:ubj7)}(h#``const u8 *buf`` buffer with data h](j=)}(h``const u8 *buf``h]h)}(hjs:h]h const u8 *buf}(hju:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjq:ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhMThjm:ubjW)}(hhh]h)}(hbuffer with datah]hbuffer with data}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj:hMThj:ubah}(h]h ]h"]h$]h&]uh1jVhjm:ubeh}(h]h ]h"]h$]h&]uh1j6hj:hMThj:ubj7)}(h``size_t count`` number of packets to be passed. The actual size of each packet depends on the :c:type:`dvb_demux->feed `->cb.ts logic. h](j=)}(h``size_t count``h]h)}(hj:h]h size_t count}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj:ubah}(h]h ]h"]h$]h&]uh1j<hd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhMVhj:ubjW)}(hhh]h)}(hnumber of packets to be passed. The actual size of each packet depends on the :c:type:`dvb_demux->feed `->cb.ts logic.h](hNnumber of packets to be passed. The actual size of each packet depends on the }(hj:hhhNhNubh)}(h%:c:type:`dvb_demux->feed `h]h)}(hj:h]hdvb_demux->feed}(hj:hhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhj:ubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjw dvb_demuxuh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhMUhj:ubh->cb.ts logic.}(hj:hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj:hMUhj:ubah}(h]h ]h"]h$]h&]uh1jVhj:ubeh}(h]h ]h"]h$]h&]uh1j6hj:hMVhj:ubeh}(h]h ]h"]h$]h&]uh1j1hj9ubh)}(h**Description**h]j)}(hj ;h]h Description}(hj ;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ;ubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhMXhj9ubh)}(hUse it if the driver needs to deliver the raw payload to userspace without passing through the kernel demux. That is meant to support some delivery systems that aren't based on MPEG-TS.h]hUse it if the driver needs to deliver the raw payload to userspace without passing through the kernel demux. That is meant to support some delivery systems that aren’t based on MPEG-TS.}(hj!;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhMWhj9ubh)}(hcThis function relies on :c:type:`dvb_demux->feed `->cb.ts to actually handle the buffer.h](hThis function relies on }(hj0;hhhNhNubh)}(h%:c:type:`dvb_demux->feed `h]h)}(hj:;h]hdvb_demux->feed}(hj<;hhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhj8;ubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjw dvb_demuxuh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:79: ./include/media/dvb_demux.hhM[hj0;ubh&->cb.ts to actually handle the buffer.}(hj0;hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjW;hM[hj9ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubeh}(h]%high-level-digital-tv-demux-interfaceah ]h"]%high-level digital tv demux interfaceah$]h&]uh1hhhhhhhhKMubh)}(hhh](h)}(hBDriver-internal low-level hardware specific driver demux interfaceh]hBDriver-internal low-level hardware specific driver demux interface}(hjt;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjq;hhhhhKRubjt)}(hhh]h}(h]h ]h"]h$]h&]entries](jts_filter_type (C enum)c.ts_filter_typehNtauh1jshjq;hhhNhNubj)}(hhh](j)}(hts_filter_typeh]j)}(henum ts_filter_typeh](j)}(hjh]henum}(hj;hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;hhh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKubj)}(h h]h }(hj;hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;hhhj;hKubj)}(hts_filter_typeh]j)}(hj;h]hts_filter_type}(hj;hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj;hhhj;hKubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj;hhhj;hKubah}(h]j;ah ](jjeh"]h$]h&]jj)jhuh1jhj;hKhj;hhubj)}(hhh]h)}(h*filter type bitmap for dmx_ts_feed.set\(\)h]h*filter type bitmap for dmx_ts_feed.set()}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhK@hj;hhubah}(h]h ]h"]h$]h&]uh1jhj;hhhj;hKubeh}(h]h ](jeenumeh"]h$]h&]j jej j;j j;jjjuh1jhhhjq;hNhNubj)}(hXe**Constants** ``TS_PACKET`` Send TS packets (188 bytes) to callback (default). ``TS_PAYLOAD_ONLY`` In case TS_PACKET is set, only send the TS payload (<=184 bytes per packet) to callback ``TS_DECODER`` Send stream to built-in decoder (if present). ``TS_DEMUX`` In case TS_PACKET is set, send the TS to the demux device, not to the dvr deviceh](h)}(h **Constants**h]j)}(hj;h]h Constants}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKDhj;ubj2)}(hhh](j7)}(hA``TS_PACKET`` Send TS packets (188 bytes) to callback (default). h](j=)}(h ``TS_PACKET``h]h)}(hj<h]h TS_PACKET}(hj <hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj<ubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKGhj<ubjW)}(hhh]h)}(h2Send TS packets (188 bytes) to callback (default).h]h2Send TS packets (188 bytes) to callback (default).}(hj7<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj3<hKGhj4<ubah}(h]h ]h"]h$]h&]uh1jVhj<ubeh}(h]h ]h"]h$]h&]uh1j6hj3<hKGhj<ubj7)}(hl``TS_PAYLOAD_ONLY`` In case TS_PACKET is set, only send the TS payload (<=184 bytes per packet) to callback h](j=)}(h``TS_PAYLOAD_ONLY``h]h)}(hjW<h]hTS_PAYLOAD_ONLY}(hjY<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjU<ubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKKhjQ<ubjW)}(hhh]h)}(hWIn case TS_PACKET is set, only send the TS payload (<=184 bytes per packet) to callbackh]hWIn case TS_PACKET is set, only send the TS payload (<=184 bytes per packet) to callback}(hjp<hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKJhjm<ubah}(h]h ]h"]h$]h&]uh1jVhjQ<ubeh}(h]h ]h"]h$]h&]uh1j6hjl<hKKhj<ubj7)}(h=``TS_DECODER`` Send stream to built-in decoder (if present). h](j=)}(h``TS_DECODER``h]h)}(hj<h]h TS_DECODER}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj<ubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKNhj<ubjW)}(hhh]h)}(h-Send stream to built-in decoder (if present).h]h-Send stream to built-in decoder (if present).}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj<hKNhj<ubah}(h]h ]h"]h$]h&]uh1jVhj<ubeh}(h]h ]h"]h$]h&]uh1j6hj<hKNhj<ubj7)}(h]``TS_DEMUX`` In case TS_PACKET is set, send the TS to the demux device, not to the dvr deviceh](j=)}(h ``TS_DEMUX``h]h)}(hj<h]hTS_DEMUX}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj<ubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKQhj<ubjW)}(hhh]h)}(hPIn case TS_PACKET is set, send the TS to the demux device, not to the dvr deviceh]hPIn case TS_PACKET is set, send the TS to the demux device, not to the dvr device}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj<hKQhj<ubah}(h]h ]h"]h$]h&]uh1jVhj<ubeh}(h]h ]h"]h$]h&]uh1j6hj<hKQhj<ubeh}(h]h ]h"]h$]h&]uh1j1hj;ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjq;hhhNhNubjt)}(hhh]h}(h]h ]h"]h$]h&]entries](jdmx_ts_feed (C struct) c.dmx_ts_feedhNtauh1jshjq;hhhNhNubj)}(hhh](j)}(h dmx_ts_feedh]j)}(hstruct dmx_ts_feedh](j)}(hjIh]hstruct}(hj#=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=hhh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKWubj)}(h h]h }(hj1=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=hhhj0=hKWubj)}(h dmx_ts_feedh]j)}(hj=h]h dmx_ts_feed}(hjC=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?=ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj=hhhj0=hKWubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj=hhhj0=hKWubah}(h]j=ah ](jjeh"]h$]h&]jj)jhuh1jhj0=hKWhj=hhubj)}(hhh]h)}(h(Structure that contains a TS feed filterh]h(Structure that contains a TS feed filter}(hje=hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKQhjb=hhubah}(h]h ]h"]h$]h&]uh1jhj=hhhj0=hKWubeh}(h]h ](jestructeh"]h$]h&]j jej j}=j j}=jjjuh1jhhhjq;hNhNubj)}(hXn**Definition**:: struct dmx_ts_feed { int is_filtering; struct dmx_demux *parent; void *priv; int (*set)(struct dmx_ts_feed *feed, u16 pid, int type, enum dmx_ts_pes pes_type, ktime_t timeout); int (*start_filtering)(struct dmx_ts_feed *feed); int (*stop_filtering)(struct dmx_ts_feed *feed); }; **Members** ``is_filtering`` Set to non-zero when filtering in progress ``parent`` pointer to struct dmx_demux ``priv`` pointer to private data of the API client ``set`` sets the TS filter ``start_filtering`` starts TS filtering ``stop_filtering`` stops TS filteringh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=ubh:}(hj=hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKUhj=ubj)}(hX.struct dmx_ts_feed { int is_filtering; struct dmx_demux *parent; void *priv; int (*set)(struct dmx_ts_feed *feed, u16 pid, int type, enum dmx_ts_pes pes_type, ktime_t timeout); int (*start_filtering)(struct dmx_ts_feed *feed); int (*stop_filtering)(struct dmx_ts_feed *feed); };h]hX.struct dmx_ts_feed { int is_filtering; struct dmx_demux *parent; void *priv; int (*set)(struct dmx_ts_feed *feed, u16 pid, int type, enum dmx_ts_pes pes_type, ktime_t timeout); int (*start_filtering)(struct dmx_ts_feed *feed); int (*stop_filtering)(struct dmx_ts_feed *feed); };}hj=sbah}(h]h ]h"]h$]h&]hhuh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKWhj=ubh)}(h **Members**h]j)}(hj=h]hMembers}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=ubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhK`hj=ubj2)}(hhh](j7)}(h<``is_filtering`` Set to non-zero when filtering in progress h](j=)}(h``is_filtering``h]h)}(hj=h]h is_filtering}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj=ubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKThj=ubjW)}(hhh]h)}(h*Set to non-zero when filtering in progressh]h*Set to non-zero when filtering in progress}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj=hKThj=ubah}(h]h ]h"]h$]h&]uh1jVhj=ubeh}(h]h ]h"]h$]h&]uh1j6hj=hKThj=ubj7)}(h'``parent`` pointer to struct dmx_demux h](j=)}(h ``parent``h]h)}(hj >h]hparent}(hj >hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj >ubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKUhj>ubjW)}(hhh]h)}(hpointer to struct dmx_demuxh]hpointer to struct dmx_demux}(hj$>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj >hKUhj!>ubah}(h]h ]h"]h$]h&]uh1jVhj>ubeh}(h]h ]h"]h$]h&]uh1j6hj >hKUhj=ubj7)}(h3``priv`` pointer to private data of the API client h](j=)}(h``priv``h]h)}(hjD>h]hpriv}(hjF>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjB>ubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKVhj>>ubjW)}(hhh]h)}(h)pointer to private data of the API clienth]h)pointer to private data of the API client}(hj]>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjY>hKVhjZ>ubah}(h]h ]h"]h$]h&]uh1jVhj>>ubeh}(h]h ]h"]h$]h&]uh1j6hjY>hKVhj=ubj7)}(h``set`` sets the TS filter h](j=)}(h``set``h]h)}(hj}>h]hset}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj{>ubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKWhjw>ubjW)}(hhh]h)}(hsets the TS filterh]hsets the TS filter}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>hKWhj>ubah}(h]h ]h"]h$]h&]uh1jVhjw>ubeh}(h]h ]h"]h$]h&]uh1j6hj>hKWhj=ubj7)}(h(``start_filtering`` starts TS filtering h](j=)}(h``start_filtering``h]h)}(hj>h]hstart_filtering}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>ubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKXhj>ubjW)}(hhh]h)}(hstarts TS filteringh]hstarts TS filtering}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>hKXhj>ubah}(h]h ]h"]h$]h&]uh1jVhj>ubeh}(h]h ]h"]h$]h&]uh1j6hj>hKXhj=ubj7)}(h%``stop_filtering`` stops TS filteringh](j=)}(h``stop_filtering``h]h)}(hj>h]hstop_filtering}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>ubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKXhj>ubjW)}(hhh]h)}(hstops TS filteringh]hstops TS filtering}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKYhj?ubah}(h]h ]h"]h$]h&]uh1jVhj>ubeh}(h]h ]h"]h$]h&]uh1j6hj?hKXhj=ubeh}(h]h ]h"]h$]h&]uh1j1hj=ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjq;hhhNhNubh)}(h**Description**h]j)}(hj2?h]h Description}(hj4?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj0?ubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhK\hjq;hhubh)}(hA TS feed is typically mapped to a hardware PID filter on the demux chip. Using this API, the client can set the filtering properties to start/stop filtering TS packets on a particular TS feed.h]hA TS feed is typically mapped to a hardware PID filter on the demux chip. Using this API, the client can set the filtering properties to start/stop filtering TS packets on a particular TS feed.}(hjH?hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKYhjq;hhubjt)}(hhh]h}(h]h ]h"]h$]h&]entries](jdmx_section_filter (C struct)c.dmx_section_filterhNtauh1jshjq;hhhNhNubj)}(hhh](j)}(hdmx_section_filterh]j)}(hstruct dmx_section_filterh](j)}(hjIh]hstruct}(hjp?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjl?hhh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhK`ubj)}(h h]h }(hj~?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjl?hhhj}?hK`ubj)}(hdmx_section_filterh]j)}(hjj?h]hdmx_section_filter}(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjl?hhhj}?hK`ubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjh?hhhj}?hK`ubah}(h]jc?ah ](jjeh"]h$]h&]jj)jhuh1jhj}?hK`hje?hhubj)}(hhh]h)}(h)Structure that describes a section filterh]h)Structure that describes a section filter}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKphj?hhubah}(h]h ]h"]h$]h&]uh1jhje?hhhj}?hK`ubeh}(h]h ](jestructeh"]h$]h&]j jej j?j j?jjjuh1jhhhjq;hNhNubj)}(hX**Definition**:: struct dmx_section_filter { u8 filter_value[DMX_MAX_FILTER_SIZE]; u8 filter_mask[DMX_MAX_FILTER_SIZE]; u8 filter_mode[DMX_MAX_FILTER_SIZE]; struct dmx_section_feed *parent; void *priv; }; **Members** ``filter_value`` Contains up to 16 bytes (128 bits) of the TS section header that will be matched by the section filter ``filter_mask`` Contains a 16 bytes (128 bits) filter mask with the bits specified by **filter_value** that will be used on the filter match logic. ``filter_mode`` Contains a 16 bytes (128 bits) filter mode. ``parent`` Back-pointer to struct dmx_section_feed. ``priv`` Pointer to private data of the API client.h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?ubh:}(hj?hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKthj?ubj)}(hstruct dmx_section_filter { u8 filter_value[DMX_MAX_FILTER_SIZE]; u8 filter_mask[DMX_MAX_FILTER_SIZE]; u8 filter_mode[DMX_MAX_FILTER_SIZE]; struct dmx_section_feed *parent; void *priv; };h]hstruct dmx_section_filter { u8 filter_value[DMX_MAX_FILTER_SIZE]; u8 filter_mask[DMX_MAX_FILTER_SIZE]; u8 filter_mode[DMX_MAX_FILTER_SIZE]; struct dmx_section_feed *parent; void *priv; };}hj?sbah}(h]h ]h"]h$]h&]hhuh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKvhj?ubh)}(h **Members**h]j)}(hj@h]hMembers}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?ubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhK~hj?ubj2)}(hhh](j7)}(hx``filter_value`` Contains up to 16 bytes (128 bits) of the TS section header that will be matched by the section filter h](j=)}(h``filter_value``h]h)}(hj@h]h filter_value}(hj!@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj@ubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKthj@ubjW)}(hhh]h)}(hfContains up to 16 bytes (128 bits) of the TS section header that will be matched by the section filterh]hfContains up to 16 bytes (128 bits) of the TS section header that will be matched by the section filter}(hj8@hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKshj5@ubah}(h]h ]h"]h$]h&]uh1jVhj@ubeh}(h]h ]h"]h$]h&]uh1j6hj4@hKthj@ubj7)}(h``filter_mask`` Contains a 16 bytes (128 bits) filter mask with the bits specified by **filter_value** that will be used on the filter match logic. h](j=)}(h``filter_mask``h]h)}(hjY@h]h filter_mask}(hj[@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjW@ubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKwhjS@ubjW)}(hhh]h)}(hContains a 16 bytes (128 bits) filter mask with the bits specified by **filter_value** that will be used on the filter match logic.h](hFContains a 16 bytes (128 bits) filter mask with the bits specified by }(hjr@hhhNhNubj)}(h**filter_value**h]h filter_value}(hjz@hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjr@ubh- that will be used on the filter match logic.}(hjr@hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKuhjo@ubah}(h]h ]h"]h$]h&]uh1jVhjS@ubeh}(h]h ]h"]h$]h&]uh1j6hjn@hKwhj@ubj7)}(h<``filter_mode`` Contains a 16 bytes (128 bits) filter mode. h](j=)}(h``filter_mode``h]h)}(hj@h]h filter_mode}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj@ubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKxhj@ubjW)}(hhh]h)}(h+Contains a 16 bytes (128 bits) filter mode.h]h+Contains a 16 bytes (128 bits) filter mode.}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj@hKxhj@ubah}(h]h ]h"]h$]h&]uh1jVhj@ubeh}(h]h ]h"]h$]h&]uh1j6hj@hKxhj@ubj7)}(h4``parent`` Back-pointer to struct dmx_section_feed. h](j=)}(h ``parent``h]h)}(hj@h]hparent}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj@ubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKyhj@ubjW)}(hhh]h)}(h(Back-pointer to struct dmx_section_feed.h]h(Back-pointer to struct dmx_section_feed.}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj@hKyhj@ubah}(h]h ]h"]h$]h&]uh1jVhj@ubeh}(h]h ]h"]h$]h&]uh1j6hj@hKyhj@ubj7)}(h3``priv`` Pointer to private data of the API client.h](j=)}(h``priv``h]h)}(hjAh]hpriv}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjAubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKyhjAubjW)}(hhh]h)}(h*Pointer to private data of the API client.h]h*Pointer to private data of the API client.}(hj0AhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKzhj-Aubah}(h]h ]h"]h$]h&]uh1jVhjAubeh}(h]h ]h"]h$]h&]uh1j6hj,AhKyhj@ubeh}(h]h ]h"]h$]h&]uh1j1hj?ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjq;hhhNhNubh)}(h**Description**h]j)}(hjZAh]h Description}(hj\AhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXAubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhK}hjq;hhubh)}(hXThe **filter_mask** controls which bits of **filter_value** are compared with the section headers/payload. On a binary value of 1 in filter_mask, the corresponding bits are compared. The filter only accepts sections that are equal to filter_value in all the tested bit positions.h](hThe }(hjpAhhhNhNubj)}(h**filter_mask**h]h filter_mask}(hjxAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjpAubh controls which bits of }(hjpAhhhNhNubj)}(h**filter_value**h]h filter_value}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjpAubh are compared with the section headers/payload. On a binary value of 1 in filter_mask, the corresponding bits are compared. The filter only accepts sections that are equal to filter_value in all the tested bit positions.}(hjpAhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKzhjq;hhubjt)}(hhh]h}(h]h ]h"]h$]h&]entries](jdmx_section_feed (C struct)c.dmx_section_feedhNtauh1jshjq;hhhNhNubj)}(hhh](j)}(hdmx_section_feedh]j)}(hstruct dmx_section_feedh](j)}(hjIh]hstruct}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAhhh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKubj)}(h h]h }(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAhhhjAhKubj)}(hdmx_section_feedh]j)}(hjAh]hdmx_section_feed}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubah}(h]h ](jjeh"]h$]h&]hhuh1jhjAhhhjAhKubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjAhhhjAhKubah}(h]jAah ](jjeh"]h$]h&]jj)jhuh1jhjAhKhjAhhubj)}(hhh]h)}(h-Structure that contains a section feed filterh]h-Structure that contains a section feed filter}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKhjAhhubah}(h]h ]h"]h$]h&]uh1jhjAhhhjAhKubeh}(h]h ](jestructeh"]h$]h&]j jej jBj jBjjjuh1jhhhjq;hNhNubj)}(hX**Definition**:: struct dmx_section_feed { int is_filtering; struct dmx_demux *parent; void *priv; int check_crc; int (*set)(struct dmx_section_feed *feed, u16 pid, int check_crc); int (*allocate_filter)(struct dmx_section_feed *feed, struct dmx_section_filter **filter); int (*release_filter)(struct dmx_section_feed *feed, struct dmx_section_filter *filter); int (*start_filtering)(struct dmx_section_feed *feed); int (*stop_filtering)(struct dmx_section_feed *feed); }; **Members** ``is_filtering`` Set to non-zero when filtering in progress ``parent`` pointer to struct dmx_demux ``priv`` pointer to private data of the API client ``check_crc`` If non-zero, check the CRC values of filtered sections. ``set`` sets the section filter ``allocate_filter`` This function is used to allocate a section filter on the demux. It should only be called when no filtering is in progress on this section feed. If a filter cannot be allocated, the function fails with -ENOSPC. ``release_filter`` This function releases all the resources of a previously allocated section filter. The function should not be called while filtering is in progress on this section feed. After calling this function, the caller should not try to dereference the filter pointer. ``start_filtering`` starts section filtering ``stop_filtering`` stops section filteringh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj"BhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBubh:}(hjBhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKhjBubj)}(hXstruct dmx_section_feed { int is_filtering; struct dmx_demux *parent; void *priv; int check_crc; int (*set)(struct dmx_section_feed *feed, u16 pid, int check_crc); int (*allocate_filter)(struct dmx_section_feed *feed, struct dmx_section_filter **filter); int (*release_filter)(struct dmx_section_feed *feed, struct dmx_section_filter *filter); int (*start_filtering)(struct dmx_section_feed *feed); int (*stop_filtering)(struct dmx_section_feed *feed); };h]hXstruct dmx_section_feed { int is_filtering; struct dmx_demux *parent; void *priv; int check_crc; int (*set)(struct dmx_section_feed *feed, u16 pid, int check_crc); int (*allocate_filter)(struct dmx_section_feed *feed, struct dmx_section_filter **filter); int (*release_filter)(struct dmx_section_feed *feed, struct dmx_section_filter *filter); int (*start_filtering)(struct dmx_section_feed *feed); int (*stop_filtering)(struct dmx_section_feed *feed); };}hj;Bsbah}(h]h ]h"]h$]h&]hhuh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKhjBubh)}(h **Members**h]j)}(hjLBh]hMembers}(hjNBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJBubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKhjBubj2)}(hhh](j7)}(h<``is_filtering`` Set to non-zero when filtering in progress h](j=)}(h``is_filtering``h]h)}(hjkBh]h is_filtering}(hjmBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjiBubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKhjeBubjW)}(hhh]h)}(h*Set to non-zero when filtering in progressh]h*Set to non-zero when filtering in progress}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBhKhjBubah}(h]h ]h"]h$]h&]uh1jVhjeBubeh}(h]h ]h"]h$]h&]uh1j6hjBhKhjbBubj7)}(h'``parent`` pointer to struct dmx_demux h](j=)}(h ``parent``h]h)}(hjBh]hparent}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKhjBubjW)}(hhh]h)}(hpointer to struct dmx_demuxh]hpointer to struct dmx_demux}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBhKhjBubah}(h]h ]h"]h$]h&]uh1jVhjBubeh}(h]h ]h"]h$]h&]uh1j6hjBhKhjbBubj7)}(h3``priv`` pointer to private data of the API client h](j=)}(h``priv``h]h)}(hjBh]hpriv}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKhjBubjW)}(hhh]h)}(h)pointer to private data of the API clienth]h)pointer to private data of the API client}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBhKhjBubah}(h]h ]h"]h$]h&]uh1jVhjBubeh}(h]h ]h"]h$]h&]uh1j6hjBhKhjbBubj7)}(hF``check_crc`` If non-zero, check the CRC values of filtered sections. h](j=)}(h ``check_crc``h]h)}(hjCh]h check_crc}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhjCubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKhjCubjW)}(hhh]h)}(h7If non-zero, check the CRC values of filtered sections.h]h7If non-zero, check the CRC values of filtered sections.}(hj/ChhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+ChKhj,Cubah}(h]h ]h"]h$]h&]uh1jVhjCubeh}(h]h ]h"]h$]h&]uh1j6hj+ChKhjbBubj7)}(h ``set`` sets the section filter h](j=)}(h``set``h]h)}(hjOCh]hset}(hjQChhhNhNubah}(h]h ]h"]h$]h&]uh1hhjMCubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKhjICubjW)}(hhh]h)}(hsets the section filterh]hsets the section filter}(hjhChhhNhNubah}(h]h ]h"]h$]h&]uh1hhjdChKhjeCubah}(h]h ]h"]h$]h&]uh1jVhjICubeh}(h]h ]h"]h$]h&]uh1j6hjdChKhjbBubj7)}(h``allocate_filter`` This function is used to allocate a section filter on the demux. It should only be called when no filtering is in progress on this section feed. If a filter cannot be allocated, the function fails with -ENOSPC. h](j=)}(h``allocate_filter``h]h)}(hjCh]hallocate_filter}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhjCubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKhjCubjW)}(hhh]h)}(hThis function is used to allocate a section filter on the demux. It should only be called when no filtering is in progress on this section feed. If a filter cannot be allocated, the function fails with -ENOSPC.h]hThis function is used to allocate a section filter on the demux. It should only be called when no filtering is in progress on this section feed. If a filter cannot be allocated, the function fails with -ENOSPC.}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKhjCubah}(h]h ]h"]h$]h&]uh1jVhjCubeh}(h]h ]h"]h$]h&]uh1j6hjChKhjbBubj7)}(hX``release_filter`` This function releases all the resources of a previously allocated section filter. The function should not be called while filtering is in progress on this section feed. After calling this function, the caller should not try to dereference the filter pointer. h](j=)}(h``release_filter``h]h)}(hjCh]hrelease_filter}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhjCubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKhjCubjW)}(hhh]h)}(hXThis function releases all the resources of a previously allocated section filter. The function should not be called while filtering is in progress on this section feed. After calling this function, the caller should not try to dereference the filter pointer.h]hXThis function releases all the resources of a previously allocated section filter. The function should not be called while filtering is in progress on this section feed. After calling this function, the caller should not try to dereference the filter pointer.}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKhjCubah}(h]h ]h"]h$]h&]uh1jVhjCubeh}(h]h ]h"]h$]h&]uh1j6hjChKhjbBubj7)}(h-``start_filtering`` starts section filtering h](j=)}(h``start_filtering``h]h)}(hjCh]hstart_filtering}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhjCubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKhjCubjW)}(hhh]h)}(hstarts section filteringh]hstarts section filtering}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjDhKhjDubah}(h]h ]h"]h$]h&]uh1jVhjCubeh}(h]h ]h"]h$]h&]uh1j6hjDhKhjbBubj7)}(h*``stop_filtering`` stops section filteringh](j=)}(h``stop_filtering``h]h)}(hj5Dh]hstop_filtering}(hj7DhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj3Dubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKhj/DubjW)}(hhh]h)}(hstops section filteringh]hstops section filtering}(hjNDhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKhjKDubah}(h]h ]h"]h$]h&]uh1jVhj/Dubeh}(h]h ]h"]h$]h&]uh1j6hjJDhKhjbBubeh}(h]h ]h"]h$]h&]uh1j1hjBubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjq;hhhNhNubh)}(h**Description**h]j)}(hjxDh]h Description}(hjzDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjvDubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKhjq;hhubh)}(hA TS feed is typically mapped to a hardware PID filter on the demux chip. Using this API, the client can set the filtering properties to start/stop filtering TS packets on a particular TS feed.h]hA TS feed is typically mapped to a hardware PID filter on the demux chip. Using this API, the client can set the filtering properties to start/stop filtering TS packets on a particular TS feed.}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKhjq;hhubjt)}(hhh]h}(h]h ]h"]h$]h&]entries](jdmx_ts_cb (C macro) c.dmx_ts_cbhNtauh1jshjq;hhhNhNubj)}(hhh](j)}(h dmx_ts_cbh]j)}(h dmx_ts_cbh]j)}(h dmx_ts_cbh]j)}(hjDh]h dmx_ts_cb}(hjDhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDubah}(h]h ](jjeh"]h$]h&]hhuh1jhjDhhh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKubah}(h]h ]h"]h$]h&]hhjuh1jjjhjDhhhjDhKubah}(h]jDah ](jjeh"]h$]h&]jj)jhuh1jhjDhKhjDhhubj)}(hhh]h)}(h<**Typedef**: DVB demux TS filter callback function prototypeh](j)}(h **Typedef**h]hTypedef}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDubh1: DVB demux TS filter callback function prototype}(hjDhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKhjDhhubah}(h]h ]h"]h$]h&]uh1jhjDhhhjDhKubeh}(h]h ](jemacroeh"]h$]h&]j jej jEj jEjjjuh1jhhhjq;hNhNubh)}(h **Syntax**h]j)}(hj Eh]hSyntax}(hj EhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKhjq;hhubh block_quote)}(h``int dmx_ts_cb (const u8 *buffer1, size_t buffer1_length, const u8 *buffer2, size_t buffer2_length, struct dmx_ts_feed *source, u32 *buffer_flags)`` h]h)}(h``int dmx_ts_cb (const u8 *buffer1, size_t buffer1_length, const u8 *buffer2, size_t buffer2_length, struct dmx_ts_feed *source, u32 *buffer_flags)``h]h)}(hj'Eh]hint dmx_ts_cb (const u8 *buffer1, size_t buffer1_length, const u8 *buffer2, size_t buffer2_length, struct dmx_ts_feed *source, u32 *buffer_flags)}(hj)EhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj%Eubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKhj!Eubah}(h]h ]h"]h$]h&]uh1jEhj`. **Description** This function callback prototype, provided by the client of the demux API, is called from the demux code. The function is only called when filtering on a TS feed has been enabled using the start_filtering\(\) function at the :c:type:`dmx_demux`. Any TS packets that match the filter settings are copied to a circular buffer. The filtered TS packets are delivered to the client using this callback function. It is expected that the **buffer1** and **buffer2** callback parameters point to addresses within the circular buffer, but other implementations are also possible. Note that the called party should not try to free the memory the **buffer1** and **buffer2** parameters point to. When this function is called, the **buffer1** parameter typically points to the start of the first undelivered TS packet within a circular buffer. The **buffer2** buffer parameter is normally NULL, except when the received TS packets have crossed the last address of the circular buffer and "wrapped" to the beginning of the buffer. In the latter case the **buffer1** parameter would contain an address within the circular buffer, while the **buffer2** parameter would contain the first address of the circular buffer. The number of bytes delivered with this function (i.e. **buffer1_length** + **buffer2_length**) is usually equal to the value of callback_length parameter given in the set() function, with one exception: if a timeout occurs before receiving callback_length bytes of TS data, any undelivered packets are immediately delivered to the client by calling this function. The timeout duration is controlled by the set() function in the TS Feed API. If a TS packet is received with errors that could not be fixed by the TS-level forward error correction (FEC), the Transport_error_indicator flag of the TS packet header should be set. The TS packet should not be discarded, as the error can possibly be corrected by a higher layer protocol. If the called party is slow in processing the callback, it is possible that the circular buffer eventually fills up. If this happens, the demux driver should discard any TS packets received while the buffer is full and return -EOVERFLOW. The type of data returned to the callback can be selected by the :c:type:`dmx_ts_feed`.**set** function. The type parameter decides if the raw TS packet (TS_PACKET) or just the payload (TS_PACKET|TS_PAYLOAD_ONLY) should be returned. If additionally the TS_DECODER bit is set the stream will also be sent to the hardware MPEG decoder. - 0, on success; - -EOVERFLOW, on buffer overflow.h](h)}(h**Parameters**h]j)}(hjIEh]h Parameters}(hjKEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjGEubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKhjCEubj2)}(hhh](j7)}(hG``const u8 *buffer1`` Pointer to the start of the filtered TS packets. h](j=)}(h``const u8 *buffer1``h]h)}(hjhEh]hconst u8 *buffer1}(hjjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjfEubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKhjbEubjW)}(hhh]h)}(h0Pointer to the start of the filtered TS packets.h]h0Pointer to the start of the filtered TS packets.}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj}EhKhj~Eubah}(h]h ]h"]h$]h&]uh1jVhjbEubeh}(h]h ]h"]h$]h&]uh1j6hj}EhKhj_Eubj7)}(h<``size_t buffer1_length`` Length of the TS data in buffer1. h](j=)}(h``size_t buffer1_length``h]h)}(hjEh]hsize_t buffer1_length}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjEubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKhjEubjW)}(hhh]h)}(h!Length of the TS data in buffer1.h]h!Length of the TS data in buffer1.}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjEhKhjEubah}(h]h ]h"]h$]h&]uh1jVhjEubeh}(h]h ]h"]h$]h&]uh1j6hjEhKhj_Eubj7)}(hO``const u8 *buffer2`` Pointer to the tail of the filtered TS packets, or NULL. h](j=)}(h``const u8 *buffer2``h]h)}(hjEh]hconst u8 *buffer2}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjEubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKhjEubjW)}(hhh]h)}(h8Pointer to the tail of the filtered TS packets, or NULL.h]h8Pointer to the tail of the filtered TS packets, or NULL.}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjEhKhjEubah}(h]h ]h"]h$]h&]uh1jVhjEubeh}(h]h ]h"]h$]h&]uh1j6hjEhKhj_Eubj7)}(h<``size_t buffer2_length`` Length of the TS data in buffer2. h](j=)}(h``size_t buffer2_length``h]h)}(hjFh]hsize_t buffer2_length}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjFubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKhj FubjW)}(hhh]h)}(h!Length of the TS data in buffer2.h]h!Length of the TS data in buffer2.}(hj,FhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj(FhKhj)Fubah}(h]h ]h"]h$]h&]uh1jVhj Fubeh}(h]h ]h"]h$]h&]uh1j6hj(FhKhj_Eubj7)}(hV``struct dmx_ts_feed *source`` Indicates which TS feed is the source of the callback. h](j=)}(h``struct dmx_ts_feed *source``h]h)}(hjLFh]hstruct dmx_ts_feed *source}(hjNFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJFubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKhjFFubjW)}(hhh]h)}(h6Indicates which TS feed is the source of the callback.h]h6Indicates which TS feed is the source of the callback.}(hjeFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjaFhKhjbFubah}(h]h ]h"]h$]h&]uh1jVhjFFubeh}(h]h ]h"]h$]h&]uh1j6hjaFhKhj_Eubj7)}(h``u32 *buffer_flags`` Address where buffer flags are stored. Those are used to report discontinuity users via DVB memory mapped API, as defined by :c:type:`enum dmx_buffer_flags `. h](j=)}(h``u32 *buffer_flags``h]h)}(hjFh]hu32 *buffer_flags}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjFubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKhjFubjW)}(hhh]h)}(hAddress where buffer flags are stored. Those are used to report discontinuity users via DVB memory mapped API, as defined by :c:type:`enum dmx_buffer_flags `.h](h}Address where buffer flags are stored. Those are used to report discontinuity users via DVB memory mapped API, as defined by }(hjFhhhNhNubh)}(h2:c:type:`enum dmx_buffer_flags `h]h)}(hjFh]henum dmx_buffer_flags}(hjFhhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhjFubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjwdmx_buffer_flagsuh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKhjFubh.}(hjFhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjFhKhjFubah}(h]h ]h"]h$]h&]uh1jVhjFubeh}(h]h ]h"]h$]h&]uh1j6hjFhKhj_Eubeh}(h]h ]h"]h$]h&]uh1j1hjCEubh)}(h**Description**h]j)}(hjFh]h Description}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKhjCEubh)}(hXThis function callback prototype, provided by the client of the demux API, is called from the demux code. The function is only called when filtering on a TS feed has been enabled using the start_filtering\(\) function at the :c:type:`dmx_demux`. Any TS packets that match the filter settings are copied to a circular buffer. The filtered TS packets are delivered to the client using this callback function. It is expected that the **buffer1** and **buffer2** callback parameters point to addresses within the circular buffer, but other implementations are also possible. Note that the called party should not try to free the memory the **buffer1** and **buffer2** parameters point to.h](hThis function callback prototype, provided by the client of the demux API, is called from the demux code. The function is only called when filtering on a TS feed has been enabled using the start_filtering() function at the }(hjFhhhNhNubh)}(h:c:type:`dmx_demux`h]h)}(hjGh]h dmx_demux}(hjGhhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhjGubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjw dmx_demuxuh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKhjFubh. Any TS packets that match the filter settings are copied to a circular buffer. The filtered TS packets are delivered to the client using this callback function. It is expected that the }(hjFhhhNhNubj)}(h **buffer1**h]hbuffer1}(hj&GhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubh and }(hjFhhhNhNubj)}(h **buffer2**h]hbuffer2}(hj8GhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubh callback parameters point to addresses within the circular buffer, but other implementations are also possible. Note that the called party should not try to free the memory the }(hjFhhhNhNubj)}(h **buffer1**h]hbuffer1}(hjJGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubh and }hjFsbj)}(h **buffer2**h]hbuffer2}(hj\GhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubh parameters point to.}(hjFhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj!GhKhjCEubh)}(hXWhen this function is called, the **buffer1** parameter typically points to the start of the first undelivered TS packet within a circular buffer. The **buffer2** buffer parameter is normally NULL, except when the received TS packets have crossed the last address of the circular buffer and "wrapped" to the beginning of the buffer. In the latter case the **buffer1** parameter would contain an address within the circular buffer, while the **buffer2** parameter would contain the first address of the circular buffer. The number of bytes delivered with this function (i.e. **buffer1_length** + **buffer2_length**) is usually equal to the value of callback_length parameter given in the set() function, with one exception: if a timeout occurs before receiving callback_length bytes of TS data, any undelivered packets are immediately delivered to the client by calling this function. The timeout duration is controlled by the set() function in the TS Feed API.h](h"When this function is called, the }(hjtGhhhNhNubj)}(h **buffer1**h]hbuffer1}(hj|GhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtGubhj parameter typically points to the start of the first undelivered TS packet within a circular buffer. The }(hjtGhhhNhNubj)}(h **buffer2**h]hbuffer2}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtGubh buffer parameter is normally NULL, except when the received TS packets have crossed the last address of the circular buffer and “wrapped” to the beginning of the buffer. In the latter case the }(hjtGhhhNhNubj)}(h **buffer1**h]hbuffer1}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtGubhJ parameter would contain an address within the circular buffer, while the }(hjtGhhhNhNubj)}(h **buffer2**h]hbuffer2}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtGubhz parameter would contain the first address of the circular buffer. The number of bytes delivered with this function (i.e. }(hjtGhhhNhNubj)}(h**buffer1_length**h]hbuffer1_length}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtGubh + }(hjtGhhhNhNubj)}(h**buffer2_length**h]hbuffer2_length}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtGubhX[) is usually equal to the value of callback_length parameter given in the set() function, with one exception: if a timeout occurs before receiving callback_length bytes of TS data, any undelivered packets are immediately delivered to the client by calling this function. The timeout duration is controlled by the set() function in the TS Feed API.}(hjtGhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKhjCEubh)}(hXIf a TS packet is received with errors that could not be fixed by the TS-level forward error correction (FEC), the Transport_error_indicator flag of the TS packet header should be set. The TS packet should not be discarded, as the error can possibly be corrected by a higher layer protocol. If the called party is slow in processing the callback, it is possible that the circular buffer eventually fills up. If this happens, the demux driver should discard any TS packets received while the buffer is full and return -EOVERFLOW.h]hXIf a TS packet is received with errors that could not be fixed by the TS-level forward error correction (FEC), the Transport_error_indicator flag of the TS packet header should be set. The TS packet should not be discarded, as the error can possibly be corrected by a higher layer protocol. If the called party is slow in processing the callback, it is possible that the circular buffer eventually fills up. If this happens, the demux driver should discard any TS packets received while the buffer is full and return -EOVERFLOW.}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKhjCEubh)}(hXMThe type of data returned to the callback can be selected by the :c:type:`dmx_ts_feed`.**set** function. The type parameter decides if the raw TS packet (TS_PACKET) or just the payload (TS_PACKET|TS_PAYLOAD_ONLY) should be returned. If additionally the TS_DECODER bit is set the stream will also be sent to the hardware MPEG decoder.h](hAThe type of data returned to the callback can be selected by the }(hjGhhhNhNubh)}(h:c:type:`dmx_ts_feed`h]h)}(hjHh]h dmx_ts_feed}(hj HhhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhjHubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjw dmx_ts_feeduh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKhjGubh.**set** function. The type parameter decides if the raw TS packet (TS_PACKET) or just the payload (TS_PACKET|TS_PAYLOAD_ONLY) should be returned. If additionally the TS_DECODER bit is set the stream will also be sent to the hardware MPEG decoder.}(hjGhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj%HhKhjCEubh bullet_list)}(hhh](h list_item)}(h0, on success; h]h)}(h0, on success;h]h0, on success;}(hj;HhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKhj7Hubah}(h]h ]h"]h$]h&]uh1j5Hhj2Hubj6H)}(h-EOVERFLOW, on buffer overflow.h]h)}(hjRHh]h-EOVERFLOW, on buffer overflow.}(hjTHhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhKhjPHubah}(h]h ]h"]h$]h&]uh1j5Hhj2Hubeh}(h]h ]h"]h$]h&]bullet-uh1j0HhjIHhKhjCEubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjq;hhhNhNubjt)}(hhh]h}(h]h ]h"]h$]h&]entries](jdmx_section_cb (C macro)c.dmx_section_cbhNtauh1jshjq;hhhNhNubj)}(hhh](j)}(hdmx_section_cbh]j)}(hdmx_section_cbh]j)}(hdmx_section_cbh]j)}(hjHh]hdmx_section_cb}(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjHubah}(h]h ](jjeh"]h$]h&]hhuh1jhjHhhh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhMubah}(h]h ]h"]h$]h&]hhjuh1jjjhjHhhhjHhMubah}(h]jHah ](jjeh"]h$]h&]jj)jhuh1jhjHhMhjHhhubj)}(hhh]h)}(h<**Typedef**: DVB demux TS filter callback function prototypeh](j)}(h **Typedef**h]hTypedef}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHubh1: DVB demux TS filter callback function prototype}(hjHhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhMhjHhhubah}(h]h ]h"]h$]h&]uh1jhjHhhhjHhMubeh}(h]h ](jemacroeh"]h$]h&]j jej jHj jHjjjuh1jhhhjq;hNhNubh)}(h **Syntax**h]j)}(hjHh]hSyntax}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhMhjq;hhubj E)}(h``int dmx_section_cb (const u8 *buffer1, size_t buffer1_len, const u8 *buffer2, size_t buffer2_len, struct dmx_section_filter *source, u32 *buffer_flags)`` Th]h)}(h``int dmx_section_cb (const u8 *buffer1, size_t buffer1_len, const u8 *buffer2, size_t buffer2_len, struct dmx_section_filter *source, u32 *buffer_flags)``h]h)}(hjHh]hint dmx_section_cb (const u8 *buffer1, size_t buffer1_len, const u8 *buffer2, size_t buffer2_len, struct dmx_section_filter *source, u32 *buffer_flags)}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjHubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhMhjHubah}(h]h ]h"]h$]h&]uh1jEhjIhMhjq;hhubj)}(hXm**Parameters** ``const u8 *buffer1`` Pointer to the start of the filtered section, e.g. within the circular buffer of the demux driver. ``size_t buffer1_len`` Length of the filtered section data in **buffer1**, including headers and CRC. ``const u8 *buffer2`` Pointer to the tail of the filtered section data, or NULL. Useful to handle the wrapping of a circular buffer. ``size_t buffer2_len`` Length of the filtered section data in **buffer2**, including headers and CRC. ``struct dmx_section_filter *source`` Indicates which section feed is the source of the callback. ``u32 *buffer_flags`` Address where buffer flags are stored. Those are used to report discontinuity users via DVB memory mapped API, as defined by :c:type:`enum dmx_buffer_flags `. **Description** This function callback prototype, provided by the client of the demux API, is called from the demux code. The function is only called when filtering of sections has been enabled using the function :c:type:`dmx_ts_feed`.**start_filtering**. When the demux driver has received a complete section that matches at least one section filter, the client is notified via this callback function. Normally this function is called for each received section; however, it is also possible to deliver multiple sections with one callback, for example when the system load is high. If an error occurs while receiving a section, this function should be called with the corresponding error type set in the success field, whether or not there is data to deliver. The Section Feed implementation should maintain a circular buffer for received sections. However, this is not necessary if the Section Feed API is implemented as a client of the TS Feed API, because the TS Feed implementation then buffers the received data. The size of the circular buffer can be configured using the :c:type:`dmx_ts_feed`.**set** function in the Section Feed API. If there is no room in the circular buffer when a new section is received, the section must be discarded. If this happens, the value of the success parameter should be DMX_OVERRUN_ERROR on the next callback.h](h)}(h**Parameters**h]j)}(hj!Ih]h Parameters}(hj#IhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhM hjIubj2)}(hhh](j7)}(hy``const u8 *buffer1`` Pointer to the start of the filtered section, e.g. within the circular buffer of the demux driver. h](j=)}(h``const u8 *buffer1``h]h)}(hj@Ih]hconst u8 *buffer1}(hjBIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>Iubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhMhj:IubjW)}(hhh]h)}(hbPointer to the start of the filtered section, e.g. within the circular buffer of the demux driver.h]hbPointer to the start of the filtered section, e.g. within the circular buffer of the demux driver.}(hjYIhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhMhjVIubah}(h]h ]h"]h$]h&]uh1jVhj:Iubeh}(h]h ]h"]h$]h&]uh1j6hjUIhMhj7Iubj7)}(hf``size_t buffer1_len`` Length of the filtered section data in **buffer1**, including headers and CRC. h](j=)}(h``size_t buffer1_len``h]h)}(hjzIh]hsize_t buffer1_len}(hj|IhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjxIubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhMhjtIubjW)}(hhh]h)}(hNLength of the filtered section data in **buffer1**, including headers and CRC.h](h'Length of the filtered section data in }(hjIhhhNhNubj)}(h **buffer1**h]hbuffer1}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIubh, including headers and CRC.}(hjIhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhMhjIubah}(h]h ]h"]h$]h&]uh1jVhjtIubeh}(h]h ]h"]h$]h&]uh1j6hjIhMhj7Iubj7)}(h``const u8 *buffer2`` Pointer to the tail of the filtered section data, or NULL. Useful to handle the wrapping of a circular buffer. h](j=)}(h``const u8 *buffer2``h]h)}(hjIh]hconst u8 *buffer2}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjIubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhM hjIubjW)}(hhh]h)}(hnPointer to the tail of the filtered section data, or NULL. Useful to handle the wrapping of a circular buffer.h]hnPointer to the tail of the filtered section data, or NULL. Useful to handle the wrapping of a circular buffer.}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhMhjIubah}(h]h ]h"]h$]h&]uh1jVhjIubeh}(h]h ]h"]h$]h&]uh1j6hjIhM hj7Iubj7)}(hf``size_t buffer2_len`` Length of the filtered section data in **buffer2**, including headers and CRC. h](j=)}(h``size_t buffer2_len``h]h)}(hjJh]hsize_t buffer2_len}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjIubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhM hjIubjW)}(hhh]h)}(hNLength of the filtered section data in **buffer2**, including headers and CRC.h](h'Length of the filtered section data in }(hjJhhhNhNubj)}(h **buffer2**h]hbuffer2}(hj!JhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJubh, including headers and CRC.}(hjJhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhM hjJubah}(h]h ]h"]h$]h&]uh1jVhjIubeh}(h]h ]h"]h$]h&]uh1j6hjJhM hj7Iubj7)}(hb``struct dmx_section_filter *source`` Indicates which section feed is the source of the callback. h](j=)}(h%``struct dmx_section_filter *source``h]h)}(hjLJh]h!struct dmx_section_filter *source}(hjNJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJJubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhM hjFJubjW)}(hhh]h)}(h;Indicates which section feed is the source of the callback.h]h;Indicates which section feed is the source of the callback.}(hjeJhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhM hjbJubah}(h]h ]h"]h$]h&]uh1jVhjFJubeh}(h]h ]h"]h$]h&]uh1j6hjaJhM hj7Iubj7)}(h``u32 *buffer_flags`` Address where buffer flags are stored. Those are used to report discontinuity users via DVB memory mapped API, as defined by :c:type:`enum dmx_buffer_flags `. h](j=)}(h``u32 *buffer_flags``h]h)}(hjJh]hu32 *buffer_flags}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhMhjJubjW)}(hhh]h)}(hAddress where buffer flags are stored. Those are used to report discontinuity users via DVB memory mapped API, as defined by :c:type:`enum dmx_buffer_flags `.h](h}Address where buffer flags are stored. Those are used to report discontinuity users via DVB memory mapped API, as defined by }(hjJhhhNhNubh)}(h2:c:type:`enum dmx_buffer_flags `h]h)}(hjJh]henum dmx_buffer_flags}(hjJhhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhjJubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjwdmx_buffer_flagsuh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhMhjJubh.}(hjJhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjJhMhjJubah}(h]h ]h"]h$]h&]uh1jVhjJubeh}(h]h ]h"]h$]h&]uh1j6hjJhMhj7Iubeh}(h]h ]h"]h$]h&]uh1j1hjIubh)}(h**Description**h]j)}(hjJh]h Description}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhMhjIubh)}(hX5This function callback prototype, provided by the client of the demux API, is called from the demux code. The function is only called when filtering of sections has been enabled using the function :c:type:`dmx_ts_feed`.**start_filtering**. When the demux driver has received a complete section that matches at least one section filter, the client is notified via this callback function. Normally this function is called for each received section; however, it is also possible to deliver multiple sections with one callback, for example when the system load is high. If an error occurs while receiving a section, this function should be called with the corresponding error type set in the success field, whether or not there is data to deliver. The Section Feed implementation should maintain a circular buffer for received sections. However, this is not necessary if the Section Feed API is implemented as a client of the TS Feed API, because the TS Feed implementation then buffers the received data. The size of the circular buffer can be configured using the :c:type:`dmx_ts_feed`.**set** function in the Section Feed API. If there is no room in the circular buffer when a new section is received, the section must be discarded. If this happens, the value of the success parameter should be DMX_OVERRUN_ERROR on the next callback.h](hThis function callback prototype, provided by the client of the demux API, is called from the demux code. The function is only called when filtering of sections has been enabled using the function }(hjJhhhNhNubh)}(h:c:type:`dmx_ts_feed`h]h)}(hjKh]h dmx_ts_feed}(hjKhhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhjKubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjw dmx_ts_feeduh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhMhjJubhXL.**start_filtering**. When the demux driver has received a complete section that matches at least one section filter, the client is notified via this callback function. Normally this function is called for each received section; however, it is also possible to deliver multiple sections with one callback, for example when the system load is high. If an error occurs while receiving a section, this function should be called with the corresponding error type set in the success field, whether or not there is data to deliver. The Section Feed implementation should maintain a circular buffer for received sections. However, this is not necessary if the Section Feed API is implemented as a client of the TS Feed API, because the TS Feed implementation then buffers the received data. The size of the circular buffer can be configured using the }(hjJhhhNhNubh)}(h:c:type:`dmx_ts_feed`h]h)}(hj)Kh]h dmx_ts_feed}(hj+KhhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhj'Kubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjw dmx_ts_feeduh1hhj"KhMhjJubh.**set** function in the Section Feed API. If there is no room in the circular buffer when a new section is received, the section must be discarded. If this happens, the value of the success parameter should be DMX_OVERRUN_ERROR on the next callback.}(hjJhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj"KhMhjIubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjq;hhhNhNubjt)}(hhh]h}(h]h ]h"]h$]h&]entries](jdmx_frontend_source (C enum)c.dmx_frontend_sourcehNtauh1jshjq;hhhNhNubj)}(hhh](j)}(hdmx_frontend_sourceh]j)}(henum dmx_frontend_sourceh](j)}(hjh]henum}(hjpKhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjlKhhh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhM)ubj)}(h h]h }(hj~KhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjlKhhhj}KhM)ubj)}(hdmx_frontend_sourceh]j)}(hjjKh]hdmx_frontend_source}(hjKhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjKubah}(h]h ](jjeh"]h$]h&]hhuh1jhjlKhhhj}KhM)ubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhKhhhj}KhM)ubah}(h]jcKah ](jjeh"]h$]h&]jj)jhuh1jhj}KhM)hjeKhhubj)}(hhh]h)}(h%Used to identify the type of frontendh]h%Used to identify the type of frontend}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhM3hjKhhubah}(h]h ]h"]h$]h&]uh1jhjeKhhhj}KhM)ubeh}(h]h ](jeenumeh"]h$]h&]j jej jKj jKjjjuh1jhhhjq;hNhNubj)}(h**Constants** ``DMX_MEMORY_FE`` The source of the demux is memory. It means that the MPEG-TS to be filtered comes from userspace, via write() syscall. ``DMX_FRONTEND_0`` The source of the demux is a frontend connected to the demux.h](h)}(h **Constants**h]j)}(hjKh]h Constants}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhM7hjKubj2)}(hhh](j7)}(h``DMX_MEMORY_FE`` The source of the demux is memory. It means that the MPEG-TS to be filtered comes from userspace, via write() syscall. h](j=)}(h``DMX_MEMORY_FE``h]h)}(hjKh]h DMX_MEMORY_FE}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjKubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhM<hjKubjW)}(hhh]h)}(hvThe source of the demux is memory. It means that the MPEG-TS to be filtered comes from userspace, via write() syscall.h]hvThe source of the demux is memory. It means that the MPEG-TS to be filtered comes from userspace, via write() syscall.}(hj LhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhM:hj Lubah}(h]h ]h"]h$]h&]uh1jVhjKubeh}(h]h ]h"]h$]h&]uh1j6hjLhM<hjKubj7)}(hP``DMX_FRONTEND_0`` The source of the demux is a frontend connected to the demux.h](j=)}(h``DMX_FRONTEND_0``h]h)}(hj-Lh]hDMX_FRONTEND_0}(hj/LhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+Lubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhM?hj'LubjW)}(hhh]h)}(h=The source of the demux is a frontend connected to the demux.h]h=The source of the demux is a frontend connected to the demux.}(hjFLhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBLhM?hjCLubah}(h]h ]h"]h$]h&]uh1jVhj'Lubeh}(h]h ]h"]h$]h&]uh1j6hjBLhM?hjKubeh}(h]h ]h"]h$]h&]uh1j1hjKubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjq;hhhNhNubjt)}(hhh]h}(h]h ]h"]h$]h&]entries](jdmx_frontend (C struct)c.dmx_frontendhNtauh1jshjq;hhhNhNubj)}(hhh](j)}(h dmx_frontendh]j)}(hstruct dmx_frontendh](j)}(hjIh]hstruct}(hjLhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjLhhh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhMEubj)}(h h]h }(hjLhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjLhhhjLhMEubj)}(h dmx_frontendh]j)}(hjLh]h dmx_frontend}(hjLhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjLubah}(h]h ](jjeh"]h$]h&]hhuh1jhjLhhhjLhMEubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj~LhhhjLhMEubah}(h]jyLah ](jjeh"]h$]h&]jj)jhuh1jhjLhMEhj{Lhhubj)}(hhh]h)}(h:Structure that lists the frontends associated with a demuxh]h:Structure that lists the frontends associated with a demux}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhMBhjLhhubah}(h]h ]h"]h$]h&]uh1jhj{LhhhjLhMEubeh}(h]h ](jestructeh"]h$]h&]j jej jLj jLjjjuh1jhhhjq;hNhNubj)}(hX **Definition**:: struct dmx_frontend { struct list_head connectivity_list; enum dmx_frontend_source source; }; **Members** ``connectivity_list`` List of front-ends that can be connected to a particular demux; ``source`` Type of the frontend.h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjLubh:}(hjLhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhMFhjLubj)}(hestruct dmx_frontend { struct list_head connectivity_list; enum dmx_frontend_source source; };h]hestruct dmx_frontend { struct list_head connectivity_list; enum dmx_frontend_source source; };}hjMsbah}(h]h ]h"]h$]h&]hhuh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhMHhjLubh)}(h **Members**h]j)}(hjMh]hMembers}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhMMhjLubj2)}(hhh](j7)}(hV``connectivity_list`` List of front-ends that can be connected to a particular demux; h](j=)}(h``connectivity_list``h]h)}(hj5Mh]hconnectivity_list}(hj7MhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj3Mubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhMGhj/MubjW)}(hhh]h)}(h?List of front-ends that can be connected to a particular demux;h]h?List of front-ends that can be connected to a particular demux;}(hjNMhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhMFhjKMubah}(h]h ]h"]h$]h&]uh1jVhj/Mubeh}(h]h ]h"]h$]h&]uh1j6hjJMhMGhj,Mubj7)}(h ``source`` Type of the frontend.h](j=)}(h ``source``h]h)}(hjoMh]hsource}(hjqMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjmMubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhMGhjiMubjW)}(hhh]h)}(hType of the frontend.h]hType of the frontend.}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhMHhjMubah}(h]h ]h"]h$]h&]uh1jVhjiMubeh}(h]h ]h"]h$]h&]uh1j6hjMhMGhj,Mubeh}(h]h ]h"]h$]h&]uh1j1hjLubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjq;hhhNhNubh)}(h**Description**h]j)}(hjMh]h Description}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhMKhjq;hhubj2)}(hhh]j7)}(h^FIXME: this structure should likely be replaced soon by some media-controller based logic. h](j=)}(h` fieldh](hThose flags are OR’ed in the }(hjiOhhhNhNubh)}(h,:c:type:`dmx_demux.capabilities `h]h)}(hjsOh]hdmx_demux.capabilities}(hjuOhhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhjqOubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjw dmx_demuxuh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhM[hjiOubh field}(hjiOhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjOhM[hjq;hhubjt)}(hhh]h}(h]h ]h"]h$]h&]entries](jDMX_FE_ENTRY (C macro)c.DMX_FE_ENTRYhNtauh1jshjq;hhhNhNubj)}(hhh](j)}(h DMX_FE_ENTRYh]j)}(h DMX_FE_ENTRYh]j)}(h DMX_FE_ENTRYh]j)}(hjOh]h DMX_FE_ENTRY}(hjOhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjOubah}(h]h ](jjeh"]h$]h&]hhuh1jhjOhhh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhMiubah}(h]h ]h"]h$]h&]hhjuh1jjjhjOhhhjOhMiubah}(h]jOah ](jjeh"]h$]h&]jj)jhuh1jhjOhMihjOhhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhjOhhhjOhMiubeh}(h]h ](jemacroeh"]h$]h&]j jej jOj jOjjjuh1jhhhjq;hNhNubh)}(h``DMX_FE_ENTRY (list)``h]h)}(hjOh]hDMX_FE_ENTRY (list)}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjOubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhMkhjq;hhubj E)}(h}Casts elements in the list of registered front-ends from the generic type struct list_head to the type * struct dmx_frontend h]h)}(h|Casts elements in the list of registered front-ends from the generic type struct list_head to the type * struct dmx_frontendh]h|Casts elements in the list of registered front-ends from the generic type struct list_head to the type * struct dmx_frontend}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhMihjPubah}(h]h ]h"]h$]h&]uh1jEhjPhMihjq;hhubj)}(h6**Parameters** ``list`` list of struct dmx_frontendh](h)}(h**Parameters**h]j)}(hjPh]h Parameters}(hj!PhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhMmhjPubj2)}(hhh]j7)}(h$``list`` list of struct dmx_frontendh](j=)}(h``list``h]h)}(hj>Ph]hlist}(hj@PhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQubj7)}(h.``frontend`` Front-end connected to the demux h](j=)}(h ``frontend``h]h)}(hjQh]hfrontend}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj~Qubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhMyhjzQubjW)}(hhh]h)}(h Front-end connected to the demuxh]h Front-end connected to the demux}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQhMyhjQubah}(h]h ]h"]h$]h&]uh1jVhjzQubeh}(h]h ]h"]h$]h&]uh1j6hjQhMyhj>Qubj7)}(h3``priv`` Pointer to private data of the API client h](j=)}(h``priv``h]h)}(hjQh]hpriv}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhM{hjQubjW)}(hhh]h)}(h)Pointer to private data of the API clienth]h)Pointer to private data of the API client}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQhM{hjQubah}(h]h ]h"]h$]h&]uh1jVhjQubeh}(h]h ]h"]h$]h&]uh1j6hjQhM{hj>Qubj7)}(hXN``open`` This function reserves the demux for use by the caller and, if necessary, initializes the demux. When the demux is no longer needed, the function **close** should be called. It should be possible for multiple clients to access the demux at the same time. Thus, the function implementation should increment the demux usage count when **open** is called and decrement it when **close** is called. The **demux** function parameter contains a pointer to the demux API and instance data. It returns: 0 on success; -EUSERS, if maximum usage count was reached; -EINVAL, on bad parameter. h](j=)}(h``open``h]h)}(hjQh]hopen}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhMhjQubjW)}(hhh]h)}(hXDThis function reserves the demux for use by the caller and, if necessary, initializes the demux. When the demux is no longer needed, the function **close** should be called. It should be possible for multiple clients to access the demux at the same time. Thus, the function implementation should increment the demux usage count when **open** is called and decrement it when **close** is called. The **demux** function parameter contains a pointer to the demux API and instance data. It returns: 0 on success; -EUSERS, if maximum usage count was reached; -EINVAL, on bad parameter.h](hThis function reserves the demux for use by the caller and, if necessary, initializes the demux. When the demux is no longer needed, the function }(hj RhhhNhNubj)}(h **close**h]hclose}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj Rubh should be called. It should be possible for multiple clients to access the demux at the same time. Thus, the function implementation should increment the demux usage count when }(hj RhhhNhNubj)}(h**open**h]hopen}(hj%RhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj Rubh! is called and decrement it when }(hj RhhhNhNubj)}(h **close**h]hclose}(hj7RhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj Rubh is called. The }(hj RhhhNhNubj)}(h **demux**h]hdemux}(hjIRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj Rubh function parameter contains a pointer to the demux API and instance data. It returns: 0 on success; -EUSERS, if maximum usage count was reached; -EINVAL, on bad parameter.}(hj RhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhM}hjRubah}(h]h ]h"]h$]h&]uh1jVhjQubeh}(h]h ]h"]h$]h&]uh1j6hjRhMhj>Qubj7)}(hXU``close`` This function reserves the demux for use by the caller and, if necessary, initializes the demux. When the demux is no longer needed, the function **close** should be called. It should be possible for multiple clients to access the demux at the same time. Thus, the function implementation should increment the demux usage count when **open** is called and decrement it when **close** is called. The **demux** function parameter contains a pointer to the demux API and instance data. It returns: 0 on success; -ENODEV, if demux was not in use (e. g. no users); -EINVAL, on bad parameter. h](j=)}(h ``close``h]h)}(hjtRh]hclose}(hjvRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjrRubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhMhjnRubjW)}(hhh]h)}(hXJThis function reserves the demux for use by the caller and, if necessary, initializes the demux. When the demux is no longer needed, the function **close** should be called. It should be possible for multiple clients to access the demux at the same time. Thus, the function implementation should increment the demux usage count when **open** is called and decrement it when **close** is called. The **demux** function parameter contains a pointer to the demux API and instance data. It returns: 0 on success; -ENODEV, if demux was not in use (e. g. no users); -EINVAL, on bad parameter.h](hThis function reserves the demux for use by the caller and, if necessary, initializes the demux. When the demux is no longer needed, the function }(hjRhhhNhNubj)}(h **close**h]hclose}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjRubh should be called. It should be possible for multiple clients to access the demux at the same time. Thus, the function implementation should increment the demux usage count when }(hjRhhhNhNubj)}(h**open**h]hopen}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjRubh! is called and decrement it when }(hjRhhhNhNubj)}(h **close**h]hclose}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjRubh is called. The }(hjRhhhNhNubj)}(h **demux**h]hdemux}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjRubh function parameter contains a pointer to the demux API and instance data. It returns: 0 on success; -ENODEV, if demux was not in use (e. g. no users); -EINVAL, on bad parameter.}(hjRhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhMhjRubah}(h]h ]h"]h$]h&]uh1jVhjnRubeh}(h]h ]h"]h$]h&]uh1j6hjRhMhj>Qubj7)}(hX``write`` This function provides the demux driver with a memory buffer containing TS packets. Instead of receiving TS packets from the DVB front-end, the demux driver software will read packets from memory. Any clients of this demux with active TS, PES or Section filters will receive filtered data via the Demux callback API (see 0). The function returns when all the data in the buffer has been consumed by the demux. Demux hardware typically cannot read TS from memory. If this is the case, memory-based filtering has to be implemented entirely in software. The **demux** function parameter contains a pointer to the demux API and instance data. The **buf** function parameter contains a pointer to the TS data in kernel-space memory. The **count** function parameter contains the length of the TS data. It returns: 0 on success; -ERESTARTSYS, if mutex lock was interrupted; -EINTR, if a signal handling is pending; -ENODEV, if demux was removed; -EINVAL, on bad parameter. h](j=)}(h ``write``h]h)}(hjRh]hwrite}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjRubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhMhjRubjW)}(hhh]h)}(hXThis function provides the demux driver with a memory buffer containing TS packets. Instead of receiving TS packets from the DVB front-end, the demux driver software will read packets from memory. Any clients of this demux with active TS, PES or Section filters will receive filtered data via the Demux callback API (see 0). The function returns when all the data in the buffer has been consumed by the demux. Demux hardware typically cannot read TS from memory. If this is the case, memory-based filtering has to be implemented entirely in software. The **demux** function parameter contains a pointer to the demux API and instance data. The **buf** function parameter contains a pointer to the TS data in kernel-space memory. The **count** function parameter contains the length of the TS data. It returns: 0 on success; -ERESTARTSYS, if mutex lock was interrupted; -EINTR, if a signal handling is pending; -ENODEV, if demux was removed; -EINVAL, on bad parameter.h](hX+This function provides the demux driver with a memory buffer containing TS packets. Instead of receiving TS packets from the DVB front-end, the demux driver software will read packets from memory. Any clients of this demux with active TS, PES or Section filters will receive filtered data via the Demux callback API (see 0). The function returns when all the data in the buffer has been consumed by the demux. Demux hardware typically cannot read TS from memory. If this is the case, memory-based filtering has to be implemented entirely in software. The }(hjShhhNhNubj)}(h **demux**h]hdemux}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubhO function parameter contains a pointer to the demux API and instance data. The }(hjShhhNhNubj)}(h**buf**h]hbuf}(hj)ShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubhR function parameter contains a pointer to the TS data in kernel-space memory. The }(hjShhhNhNubj)}(h **count**h]hcount}(hj;ShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubh function parameter contains the length of the TS data. It returns: 0 on success; -ERESTARTSYS, if mutex lock was interrupted; -EINTR, if a signal handling is pending; -ENODEV, if demux was removed; -EINVAL, on bad parameter.}(hjShhhNhNubeh}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhMhj Subah}(h]h ]h"]h$]h&]uh1jVhjRubeh}(h]h ]h"]h$]h&]uh1j6hj ShMhj>Qubj7)}(hXg``allocate_ts_feed`` Allocates a new TS feed, which is used to filter the TS packets carrying a certain PID. The TS feed normally corresponds to a hardware PID filter on the demux chip. The **demux** function parameter contains a pointer to the demux API and instance data. The **feed** function parameter contains a pointer to the TS feed API and instance data. The **callback** function parameter contains a pointer to the callback function for passing received TS packet. It returns: 0 on success; -ERESTARTSYS, if mutex lock was interrupted; -EBUSY, if no more TS feeds is available; -EINVAL, on bad parameter. h](j=)}(h``allocate_ts_feed``h]h)}(hjfSh]hallocate_ts_feed}(hjhShhhNhNubah}(h]h ]h"]h$]h&]uh1hhjdSubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhMhj`SubjW)}(hhh]h)}(hXQAllocates a new TS feed, which is used to filter the TS packets carrying a certain PID. The TS feed normally corresponds to a hardware PID filter on the demux chip. The **demux** function parameter contains a pointer to the demux API and instance data. The **feed** function parameter contains a pointer to the TS feed API and instance data. The **callback** function parameter contains a pointer to the callback function for passing received TS packet. It returns: 0 on success; -ERESTARTSYS, if mutex lock was interrupted; -EBUSY, if no more TS feeds is available; -EINVAL, on bad parameter.h](hAllocates a new TS feed, which is used to filter the TS packets carrying a certain PID. The TS feed normally corresponds to a hardware PID filter on the demux chip. The }(hjShhhNhNubj)}(h **demux**h]hdemux}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubhO function parameter contains a pointer to the demux API and instance data. The }(hjShhhNhNubj)}(h**feed**h]hfeed}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubhQ function parameter contains a pointer to the TS feed API and instance data. The }(hjShhhNhNubj)}(h **callback**h]hcallback}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubh function parameter contains a pointer to the callback function for passing received TS packet. It returns: 0 on success; -ERESTARTSYS, if mutex lock was interrupted; -EBUSY, if no more TS feeds is available; -EINVAL, on bad parameter.}(hjShhhNhNubeh}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhMhj|Subah}(h]h ]h"]h$]h&]uh1jVhj`Subeh}(h]h ]h"]h$]h&]uh1j6hj{ShMhj>Qubj7)}(hX``release_ts_feed`` Releases the resources allocated with **allocate_ts_feed**. Any filtering in progress on the TS feed should be stopped before calling this function. The **demux** function parameter contains a pointer to the demux API and instance data. The **feed** function parameter contains a pointer to the TS feed API and instance data. It returns: 0 on success; -EINVAL on bad parameter. h](j=)}(h``release_ts_feed``h]h)}(hjSh]hrelease_ts_feed}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhjSubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhMhjSubjW)}(hhh]h)}(hXyReleases the resources allocated with **allocate_ts_feed**. Any filtering in progress on the TS feed should be stopped before calling this function. The **demux** function parameter contains a pointer to the demux API and instance data. The **feed** function parameter contains a pointer to the TS feed API and instance data. It returns: 0 on success; -EINVAL on bad parameter.h](h&Releases the resources allocated with }(hjShhhNhNubj)}(h**allocate_ts_feed**h]hallocate_ts_feed}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubh_. Any filtering in progress on the TS feed should be stopped before calling this function. The }(hjShhhNhNubj)}(h **demux**h]hdemux}(hj ThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubhO function parameter contains a pointer to the demux API and instance data. The }(hjShhhNhNubj)}(h**feed**h]hfeed}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubh function parameter contains a pointer to the TS feed API and instance data. It returns: 0 on success; -EINVAL on bad parameter.}(hjShhhNhNubeh}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhMhjSubah}(h]h ]h"]h$]h&]uh1jVhjSubeh}(h]h ]h"]h$]h&]uh1j6hjShMhj>Qubj7)}(hX``allocate_section_feed`` Allocates a new section feed, i.e. a demux resource for filtering and receiving sections. On platforms with hardware support for section filtering, a section feed is directly mapped to the demux HW. On other platforms, TS packets are first PID filtered in hardware and a hardware section filter then emulated in software. The caller obtains an API pointer of type dmx_section_feed_t as an out parameter. Using this API the caller can set filtering parameters and start receiving sections. The **demux** function parameter contains a pointer to the demux API and instance data. The **feed** function parameter contains a pointer to the TS feed API and instance data. The **callback** function parameter contains a pointer to the callback function for passing received TS packet. It returns: 0 on success; -EBUSY, if no more TS feeds is available; -EINVAL, on bad parameter. h](j=)}(h``allocate_section_feed``h]h)}(hjFTh]hallocate_section_feed}(hjHThhhNhNubah}(h]h ]h"]h$]h&]uh1hhjDTubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhMhj@TubjW)}(hhh]h)}(hXhAllocates a new section feed, i.e. a demux resource for filtering and receiving sections. On platforms with hardware support for section filtering, a section feed is directly mapped to the demux HW. On other platforms, TS packets are first PID filtered in hardware and a hardware section filter then emulated in software. The caller obtains an API pointer of type dmx_section_feed_t as an out parameter. Using this API the caller can set filtering parameters and start receiving sections. The **demux** function parameter contains a pointer to the demux API and instance data. The **feed** function parameter contains a pointer to the TS feed API and instance data. The **callback** function parameter contains a pointer to the callback function for passing received TS packet. It returns: 0 on success; -EBUSY, if no more TS feeds is available; -EINVAL, on bad parameter.h](hXAllocates a new section feed, i.e. a demux resource for filtering and receiving sections. On platforms with hardware support for section filtering, a section feed is directly mapped to the demux HW. On other platforms, TS packets are first PID filtered in hardware and a hardware section filter then emulated in software. The caller obtains an API pointer of type dmx_section_feed_t as an out parameter. Using this API the caller can set filtering parameters and start receiving sections. The }(hj_ThhhNhNubj)}(h **demux**h]hdemux}(hjgThhhNhNubah}(h]h ]h"]h$]h&]uh1jhj_TubhO function parameter contains a pointer to the demux API and instance data. The }(hj_ThhhNhNubj)}(h**feed**h]hfeed}(hjyThhhNhNubah}(h]h ]h"]h$]h&]uh1jhj_TubhQ function parameter contains a pointer to the TS feed API and instance data. The }(hj_ThhhNhNubj)}(h **callback**h]hcallback}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jhj_Tubh function parameter contains a pointer to the callback function for passing received TS packet. It returns: 0 on success; -EBUSY, if no more TS feeds is available; -EINVAL, on bad parameter.}(hj_ThhhNhNubeh}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhMhj\Tubah}(h]h ]h"]h$]h&]uh1jVhj@Tubeh}(h]h ]h"]h$]h&]uh1j6hj[ThMhj>Qubj7)}(hX``release_section_feed`` Releases the resources allocated with **allocate_section_feed**, including allocated filters. Any filtering in progress on the section feed should be stopped before calling this function. The **demux** function parameter contains a pointer to the demux API and instance data. The **feed** function parameter contains a pointer to the TS feed API and instance data. It returns: 0 on success; -EINVAL, on bad parameter. Th](j=)}(h``release_section_feed``h]h)}(hjTh]hrelease_section_feed}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hhjTubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhMhjTubjW)}(hhh]h)}(hXReleases the resources allocated with **allocate_section_feed**, including allocated filters. Any filtering in progress on the section feed should be stopped before calling this function. The **demux** function parameter contains a pointer to the demux API and instance data. The **feed** function parameter contains a pointer to the TS feed API and instance data. It returns: 0 on success; -EINVAL, on bad parameter.h](h&Releases the resources allocated with }(hjThhhNhNubj)}(h**allocate_section_feed**h]hallocate_section_feed}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjTubh, including allocated filters. Any filtering in progress on the section feed should be stopped before calling this function. The }(hjThhhNhNubj)}(h **demux**h]hdemux}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjTubhO function parameter contains a pointer to the demux API and instance data. The }(hjThhhNhNubj)}(h**feed**h]hfeed}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjTubh function parameter contains a pointer to the TS feed API and instance data. It returns: 0 on success; -EINVAL, on bad parameter.}(hjThhhNhNubeh}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhMhjTubah}(h]h ]h"]h$]h&]uh1jVhjTubeh}(h]h ]h"]h$]h&]uh1j6hjThMhj>Qubj7)}(hX``add_frontend`` Registers a connectivity between a demux and a front-end, i.e., indicates that the demux can be connected via a call to **connect_frontend** to use the given front-end as a TS source. The client of this function has to allocate dynamic or static memory for the frontend structure and initialize its fields before calling this function. This function is normally called during the driver initialization. The caller must not free the memory of the frontend struct before successfully calling **remove_frontend**. The **demux** function parameter contains a pointer to the demux API and instance data. The **frontend** function parameter contains a pointer to the front-end instance data. It returns: 0 on success; -EINVAL, on bad parameter. h](j=)}(h``add_frontend``h]h)}(hj&Uh]h add_frontend}(hj(UhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj$Uubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhMhj UubjW)}(hhh]h)}(hXRegisters a connectivity between a demux and a front-end, i.e., indicates that the demux can be connected via a call to **connect_frontend** to use the given front-end as a TS source. The client of this function has to allocate dynamic or static memory for the frontend structure and initialize its fields before calling this function. This function is normally called during the driver initialization. The caller must not free the memory of the frontend struct before successfully calling **remove_frontend**. The **demux** function parameter contains a pointer to the demux API and instance data. The **frontend** function parameter contains a pointer to the front-end instance data. It returns: 0 on success; -EINVAL, on bad parameter.h](hxRegisters a connectivity between a demux and a front-end, i.e., indicates that the demux can be connected via a call to }(hj?UhhhNhNubj)}(h**connect_frontend**h]hconnect_frontend}(hjGUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?UubhX^ to use the given front-end as a TS source. The client of this function has to allocate dynamic or static memory for the frontend structure and initialize its fields before calling this function. This function is normally called during the driver initialization. The caller must not free the memory of the frontend struct before successfully calling }(hj?UhhhNhNubj)}(h**remove_frontend**h]hremove_frontend}(hjYUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?Uubh. The }(hj?UhhhNhNubj)}(h **demux**h]hdemux}(hjkUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?UubhO function parameter contains a pointer to the demux API and instance data. The }(hj?UhhhNhNubj)}(h **frontend**h]hfrontend}(hj}UhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?Uubh{ function parameter contains a pointer to the front-end instance data. It returns: 0 on success; -EINVAL, on bad parameter.}(hj?UhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhMhjQubj7)}(hX``remove_frontend`` Indicates that the given front-end, registered by a call to **add_frontend**, can no longer be connected as a TS source by this demux. The function should be called when a front-end driver or a demux driver is removed from the system. If the front-end is in use, the function fails with the return value of -EBUSY. After successfully calling this function, the caller can free the memory of the frontend struct if it was dynamically allocated before the **add_frontend** operation. The **demux** function parameter contains a pointer to the demux API and instance data. The **frontend** function parameter contains a pointer to the front-end instance data. It returns: 0 on success; -ENODEV, if the front-end was not found, -EINVAL, on bad parameter. h](j=)}(h``remove_frontend``h]h)}(hjUh]hremove_frontend}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjUubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhMhjUubjW)}(hhh]h)}(hXIndicates that the given front-end, registered by a call to **add_frontend**, can no longer be connected as a TS source by this demux. The function should be called when a front-end driver or a demux driver is removed from the system. If the front-end is in use, the function fails with the return value of -EBUSY. After successfully calling this function, the caller can free the memory of the frontend struct if it was dynamically allocated before the **add_frontend** operation. The **demux** function parameter contains a pointer to the demux API and instance data. The **frontend** function parameter contains a pointer to the front-end instance data. It returns: 0 on success; -ENODEV, if the front-end was not found, -EINVAL, on bad parameter.h](hQubj7)}(hX``get_frontends`` Provides the APIs of the front-ends that have been registered for this demux. Any of the front-ends obtained with this call can be used as a parameter for **connect_frontend**. The include file demux.h contains the macro DMX_FE_ENTRY() for converting an element of the generic type struct :c:type:`list_head` * to the type struct :c:type:`dmx_frontend` *. The caller must not free the memory of any of the elements obtained via this function call. The **demux** function parameter contains a pointer to the demux API and instance data. It returns a struct list_head pointer to the list of front-end interfaces, or NULL in the case of an empty list. h](j=)}(h``get_frontends``h]h)}(hj*Vh]h get_frontends}(hj,VhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj(Vubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhMhj$VubjW)}(hhh]h)}(hXProvides the APIs of the front-ends that have been registered for this demux. Any of the front-ends obtained with this call can be used as a parameter for **connect_frontend**. The include file demux.h contains the macro DMX_FE_ENTRY() for converting an element of the generic type struct :c:type:`list_head` * to the type struct :c:type:`dmx_frontend` *. The caller must not free the memory of any of the elements obtained via this function call. The **demux** function parameter contains a pointer to the demux API and instance data. It returns a struct list_head pointer to the list of front-end interfaces, or NULL in the case of an empty list.h](hProvides the APIs of the front-ends that have been registered for this demux. Any of the front-ends obtained with this call can be used as a parameter for }(hjCVhhhNhNubj)}(h**connect_frontend**h]hconnect_frontend}(hjKVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCVubhr. The include file demux.h contains the macro DMX_FE_ENTRY() for converting an element of the generic type struct }(hjCVhhhNhNubh)}(h:c:type:`list_head`h]h)}(hj_Vh]h list_head}(hjaVhhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhj]Vubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjw list_headuh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhMhjCVubh * to the type struct }(hjCVhhhNhNubh)}(h:c:type:`dmx_frontend`h]h)}(hjVh]h dmx_frontend}(hjVhhhNhNubah}(h]h ](jdjec-typeeh"]h$]h&]uh1hhjVubah}(h]h ]h"]h$]h&]refdocjq refdomainjereftypetype refexplicitrefwarnjjjw dmx_frontenduh1hhj|VhMhjCVubh }(hjCVhhhNhNubhemphasis)}(hl*. The caller must not free the memory of any of the elements obtained via this function call. The **demux**h]hj. The caller must not free the memory of any of the elements obtained via this function call. The **demux*}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jVhjCVubh function parameter contains a pointer to the demux API and instance data. It returns a struct list_head pointer to the list of front-end interfaces, or NULL in the case of an empty list.}(hjCVhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj|VhMhj@Vubah}(h]h ]h"]h$]h&]uh1jVhj$Vubeh}(h]h ]h"]h$]h&]uh1j6hj?VhMhj>Qubj7)}(hX|``connect_frontend`` Connects the TS output of the front-end to the input of the demux. A demux can only be connected to a front-end registered to the demux with the function **add_frontend**. It may or may not be possible to connect multiple demuxes to the same front-end, depending on the capabilities of the HW platform. When not used, the front-end should be released by calling **disconnect_frontend**. The **demux** function parameter contains a pointer to the demux API and instance data. The **frontend** function parameter contains a pointer to the front-end instance data. It returns: 0 on success; -EINVAL, on bad parameter. h](j=)}(h``connect_frontend``h]h)}(hjVh]hconnect_frontend}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjVubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhMhjVubjW)}(hhh]h)}(hXfConnects the TS output of the front-end to the input of the demux. A demux can only be connected to a front-end registered to the demux with the function **add_frontend**. It may or may not be possible to connect multiple demuxes to the same front-end, depending on the capabilities of the HW platform. When not used, the front-end should be released by calling **disconnect_frontend**. The **demux** function parameter contains a pointer to the demux API and instance data. The **frontend** function parameter contains a pointer to the front-end instance data. It returns: 0 on success; -EINVAL, on bad parameter.h](hConnects the TS output of the front-end to the input of the demux. A demux can only be connected to a front-end registered to the demux with the function }(hjVhhhNhNubj)}(h**add_frontend**h]h add_frontend}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVubh. It may or may not be possible to connect multiple demuxes to the same front-end, depending on the capabilities of the HW platform. When not used, the front-end should be released by calling }(hjVhhhNhNubj)}(h**disconnect_frontend**h]hdisconnect_frontend}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVubh. The }(hjVhhhNhNubj)}(h **demux**h]hdemux}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVubhO function parameter contains a pointer to the demux API and instance data. The }(hjVhhhNhNubj)}(h **frontend**h]hfrontend}(hj'WhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVubh{ function parameter contains a pointer to the front-end instance data. It returns: 0 on success; -EINVAL, on bad parameter.}(hjVhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhMhjVubah}(h]h ]h"]h$]h&]uh1jVhjVubeh}(h]h ]h"]h$]h&]uh1j6hjVhMhj>Qubj7)}(h``disconnect_frontend`` Disconnects the demux and a front-end previously connected by a **connect_frontend** call. The **demux** function parameter contains a pointer to the demux API and instance data. It returns: 0 on success; -EINVAL on bad parameter. h](j=)}(h``disconnect_frontend``h]h)}(hjRWh]hdisconnect_frontend}(hjTWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjPWubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhM%hjLWubjW)}(hhh]h)}(hDisconnects the demux and a front-end previously connected by a **connect_frontend** call. The **demux** function parameter contains a pointer to the demux API and instance data. It returns: 0 on success; -EINVAL on bad parameter.h](h@Disconnects the demux and a front-end previously connected by a }(hjkWhhhNhNubj)}(h**connect_frontend**h]hconnect_frontend}(hjsWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjkWubh call. The }(hjkWhhhNhNubj)}(h **demux**h]hdemux}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjkWubh~ function parameter contains a pointer to the demux API and instance data. It returns: 0 on success; -EINVAL on bad parameter.}(hjkWhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhMhjhWubah}(h]h ]h"]h$]h&]uh1jVhjLWubeh}(h]h ]h"]h$]h&]uh1j6hjgWhM%hj>Qubj7)}(hXl``get_pes_pids`` Get the PIDs for DMX_PES_AUDIO0, DMX_PES_VIDEO0, DMX_PES_TELETEXT0, DMX_PES_SUBTITLE0 and DMX_PES_PCR0. The **demux** function parameter contains a pointer to the demux API and instance data. The **pids** function parameter contains an array with five u16 elements where the PIDs will be stored. It returns: 0 on success; -EINVAL on bad parameter.h](j=)}(h``get_pes_pids``h]h)}(hjWh]h get_pes_pids}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjWubah}(h]h ]h"]h$]h&]uh1j<h`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhM.hjWubjW)}(hhh]h)}(hX[Get the PIDs for DMX_PES_AUDIO0, DMX_PES_VIDEO0, DMX_PES_TELETEXT0, DMX_PES_SUBTITLE0 and DMX_PES_PCR0. The **demux** function parameter contains a pointer to the demux API and instance data. The **pids** function parameter contains an array with five u16 elements where the PIDs will be stored. It returns: 0 on success; -EINVAL on bad parameter.h](hlGet the PIDs for DMX_PES_AUDIO0, DMX_PES_VIDEO0, DMX_PES_TELETEXT0, DMX_PES_SUBTITLE0 and DMX_PES_PCR0. The }(hjWhhhNhNubj)}(h **demux**h]hdemux}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjWubhO function parameter contains a pointer to the demux API and instance data. The }(hjWhhhNhNubj)}(h**pids**h]hpids}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjWubh function parameter contains an array with five u16 elements where the PIDs will be stored. It returns: 0 on success; -EINVAL on bad parameter.}(hjWhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-demux:84: ./include/media/demux.hhM'hjWubah}(h]h ]h"]h$]h&]uh1jVhjWubeh}(h]h ]h"]h$]h&]uh1j6hjWhM.hj>Qubeh}(h]h ]h"]h$]h&]uh1j1hjPubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjq;hhhNhNubeh}(h]Bdriver-internal-low-level-hardware-specific-driver-demux-interfaceah ]h"]Bdriver-internal low-level hardware specific driver demux interfaceah$]h&]uh1hhhhhhhhKRubeh}(h]digital-tv-demux-kabiah ]h"]digital tv demux kabiah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjHXerror_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourcehnj _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(j"XjXjjj_j\j j jn;jk;jXjXu nametypes}(j"Xjj_j jn;jXuh}(jXhjhj\jj jbjjjjj:j?jjjojtj>jCjjjk;jj-j2jCjHjjjIjNjP$jU$jx+j}+j6-j;-j.j.j 2j2j15j65jU8jZ8jXjq;j;j;j=j=jc?jh?jAjAjDjDjHjHjcKjhKjyLj~LjNjNjOjOjPjPu footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log] decorationNhhub.