#sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget2/translations/zh_CN/driver-api/media/drivers/vidtvmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget2/translations/zh_TW/driver-api/media/drivers/vidtvmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget2/translations/it_IT/driver-api/media/drivers/vidtvmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget2/translations/ja_JP/driver-api/media/drivers/vidtvmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget2/translations/ko_KR/driver-api/media/drivers/vidtvmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hPortuguese (Brazilian)}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget2/translations/pt_BR/driver-api/media/drivers/vidtvmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget2/translations/sp_SP/driver-api/media/drivers/vidtvmodnameN 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:spacepreserveuh1hhhhhhL/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv.rsthKubhsection)}(hhh](htitle)}(h vidtv: Virtual Digital TV driverh]h vidtv: Virtual Digital TV driver}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh paragraph)}(h@Author: Daniel W. S. Almeida , June 2020.h](hAuthor: Daniel W. S. Almeida <}(hhhhhNhNubh reference)}(hdwlsalmeida@gmail.comh]hdwlsalmeida@gmail.com}(hhhhhNhNubah}(h]h ]h"]h$]h&]refurimailto:dwlsalmeida@gmail.comuh1hhhubh >, June 2020.}(hhhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hhh](h)}(h Backgroundh]h Background}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK ubh)}(hVidtv is a virtual DVB driver that aims to serve as a reference for driver writers by serving as a template. It also validates the existing media DVB APIs, thus helping userspace application writers.h]hVidtv is a virtual DVB driver that aims to serve as a reference for driver writers by serving as a template. It also validates the existing media DVB APIs, thus helping userspace application writers.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hjhhubh)}(hCurrently, it consists of:h]hCurrently, it consists of:}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh bullet_list)}(hhh](h list_item)}(hA fake tuner driver, which will report a bad signal quality if the chosen frequency is too far away from a table of valid frequencies for a particular delivery system. h]h)}(hA fake tuner driver, which will report a bad signal quality if the chosen frequency is too far away from a table of valid frequencies for a particular delivery system.h]hA fake tuner driver, which will report a bad signal quality if the chosen frequency is too far away from a table of valid frequencies for a particular delivery system.}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj7ubah}(h]h ]h"]h$]h&]uh1j5hj2hhhhhNubj6)}(hA fake demod driver, which will constantly poll the fake signal quality returned by the tuner, simulating a device that can lose/reacquire a lock on the signal depending on the CNR levels. h]h)}(hA fake demod driver, which will constantly poll the fake signal quality returned by the tuner, simulating a device that can lose/reacquire a lock on the signal depending on the CNR levels.h]hA fake demod driver, which will constantly poll the fake signal quality returned by the tuner, simulating a device that can lose/reacquire a lock on the signal depending on the CNR levels.}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjOubah}(h]h ]h"]h$]h&]uh1j5hj2hhhhhNubj6)}(hA fake bridge driver, which is the module responsible for modprobing the fake tuner and demod modules and implementing the demux logic. This module takes parameters at initialization that will dictate how the simulation behaves. h]h)}(hA fake bridge driver, which is the module responsible for modprobing the fake tuner and demod modules and implementing the demux logic. This module takes parameters at initialization that will dictate how the simulation behaves.h]hA fake bridge driver, which is the module responsible for modprobing the fake tuner and demod modules and implementing the demux logic. This module takes parameters at initialization that will dictate how the simulation behaves.}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjgubah}(h]h ]h"]h$]h&]uh1j5hj2hhhhhNubj6)}(hXCode responsible for encoding a valid MPEG Transport Stream, which is then passed to the bridge driver. This fake stream contains some hardcoded content. For now, we have a single, audio-only channel containing a single MPEG Elementary Stream, which in turn contains a SMPTE 302m encoded sine-wave. Note that this particular encoder was chosen because it is the easiest way to encode PCM audio data in a MPEG Transport Stream. h]h)}(hXCode responsible for encoding a valid MPEG Transport Stream, which is then passed to the bridge driver. This fake stream contains some hardcoded content. For now, we have a single, audio-only channel containing a single MPEG Elementary Stream, which in turn contains a SMPTE 302m encoded sine-wave. Note that this particular encoder was chosen because it is the easiest way to encode PCM audio data in a MPEG Transport Stream.h]hXCode responsible for encoding a valid MPEG Transport Stream, which is then passed to the bridge driver. This fake stream contains some hardcoded content. For now, we have a single, audio-only channel containing a single MPEG Elementary Stream, which in turn contains a SMPTE 302m encoded sine-wave. Note that this particular encoder was chosen because it is the easiest way to encode PCM audio data in a MPEG Transport Stream.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j5hj2hhhhhNubeh}(h]h ]h"]h$]h&]bullet-uh1j0hhhKhjhhubeh}(h] backgroundah ]h"] backgroundah$]h&]uh1hhhhhhhhK ubh)}(hhh](h)}(hBuilding vidtvh]hBuilding vidtv}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK'ubh)}(hXvidtv is a test driver and thus is **not** enabled by default when compiling the kernel.h](h#vidtv is a test driver and thus is }(hjhhhNhNubhstrong)}(h**not**h]hnot}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh. enabled by default when compiling the kernel.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK(hjhhubh)}(h(In order to enable compilation of vidtv:h]h(In order to enable compilation of vidtv:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK+hjhhubj1)}(hhh](j6)}(h!Enable **DVB_TEST_DRIVERS**, thenh]h)}(hjh](hEnable }(hjhhhNhNubj)}(h**DVB_TEST_DRIVERS**h]hDVB_TEST_DRIVERS}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh, then}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK-hjubah}(h]h ]h"]h$]h&]uh1j5hjhhhhhNubj6)}(hEnable **DVB_VIDTV** h]h)}(hEnable **DVB_VIDTV**h](hEnable }(hjhhhNhNubj)}(h **DVB_VIDTV**h]h DVB_VIDTV}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhhhK.hjubah}(h]h ]h"]h$]h&]uh1j5hjhhhhhNubeh}(h]h ]h"]h$]h&]jjuh1j0hhhK-hjhhubh)}(h:When compiled as a module, expect the following .ko files:h]h:When compiled as a module, expect the following .ko files:}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK0hjhhubj1)}(hhh](j6)}(hdvb_vidtv_tuner.ko h]h)}(hdvb_vidtv_tuner.koh]hdvb_vidtv_tuner.ko}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK2hjQubah}(h]h ]h"]h$]h&]uh1j5hjNhhhhhNubj6)}(hdvb_vidtv_demod.ko h]h)}(hdvb_vidtv_demod.koh]hdvb_vidtv_demod.ko}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK4hjiubah}(h]h ]h"]h$]h&]uh1j5hjNhhhhhNubj6)}(hdvb_vidtv_bridge.ko h]h)}(hdvb_vidtv_bridge.koh]hdvb_vidtv_bridge.ko}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK6hjubah}(h]h ]h"]h$]h&]uh1j5hjNhhhhhNubeh}(h]h ]h"]h$]h&]jjuh1j0hhhK2hjhhubeh}(h]building-vidtvah ]h"]building vidtvah$]h&]uh1hhhhhhhhK'ubh)}(hhh](h)}(h Running vidtvh]h Running vidtv}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK9ubh)}(h When compiled as a module, run::h]hWhen compiled as a module, run:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK:hjhhubh literal_block)}(hmodprobe vidtvh]hmodprobe vidtv}hjsbah}(h]h ]h"]h$]h&]hhuh1jhhhKhjhhubh)}(h5By default, it will accept the following frequencies:h]h5By default, it will accept the following frequencies:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKAhjhhubh block_quote)}(h5- 474 MHz for DVB-T/T2/C; - 11,362 GHz for DVB-S/S2. h]j1)}(hhh](j6)}(h474 MHz for DVB-T/T2/C;h]h)}(hjh]h474 MHz for DVB-T/T2/C;}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKChjubah}(h]h ]h"]h$]h&]uh1j5hjubj6)}(h11,362 GHz for DVB-S/S2. h]h)}(h11,362 GHz for DVB-S/S2.h]h11,362 GHz for DVB-S/S2.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKDhjubah}(h]h ]h"]h$]h&]uh1j5hjubeh}(h]h ]h"]h$]h&]jjuh1j0hhhKChjubah}(h]h ]h"]h$]h&]uh1jhhhKChjhhubh)}(hFor satellite systems, the driver simulates an universal extended LNBf, with frequencies at Ku-Band, ranging from 10.7 GHz to 12.75 GHz.h]hFor satellite systems, the driver simulates an universal extended LNBf, with frequencies at Ku-Band, ranging from 10.7 GHz to 12.75 GHz.}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKFhjhhubh)}(h?You can optionally define some command-line arguments to vidtv.h]h?You can optionally define some command-line arguments to vidtv.}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKIhjhhubeh}(h] running-vidtvah ]h"] running vidtvah$]h&]uh1hhhhhhhhK9ubh)}(hhh](h)}(hCommand-line arguments to vidtvh]hCommand-line arguments to vidtv}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjZhhhhhKLubh)}(h?Below is a list of all arguments that can be supplied to vidtv:h]h?Below is a list of all arguments that can be supplied to vidtv:}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKMhjZhhubhdefinition_list)}(hhh](hdefinition_list_item)}(hdrop_tslock_prob_on_low_snr Probability of losing the TS lock if the signal quality is bad. This probability be used by the fake demodulator driver to eventually return a status of 0 when the signal quality is not good. h](hterm)}(hdrop_tslock_prob_on_low_snrh]hdrop_tslock_prob_on_low_snr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKShjubh definition)}(hhh]h)}(hProbability of losing the TS lock if the signal quality is bad. This probability be used by the fake demodulator driver to eventually return a status of 0 when the signal quality is not good.h]hProbability of losing the TS lock if the signal quality is bad. This probability be used by the fake demodulator driver to eventually return a status of 0 when the signal quality is not good.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKPhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hhhKShj{ubj)}(hrecover_tslock_prob_on_good_snr: Probability recovering the TS lock when the signal improves. This probability be used by the fake demodulator driver to eventually return a status of 0x1f when/if the signal quality improves. h](j)}(h recover_tslock_prob_on_good_snr:h]h recover_tslock_prob_on_good_snr:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKXhjubj)}(hhh]h)}(hProbability recovering the TS lock when the signal improves. This probability be used by the fake demodulator driver to eventually return a status of 0x1f when/if the signal quality improves.h]hProbability recovering the TS lock when the signal improves. This probability be used by the fake demodulator driver to eventually return a status of 0x1f when/if the signal quality improves.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKVhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hhhKXhj{hhubj)}(hAmock_power_up_delay_msec Simulate a power up delay. Default: 0. h](j)}(hmock_power_up_delay_msech]hmock_power_up_delay_msec}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhK[hjubj)}(hhh]h)}(h'Simulate a power up delay. Default: 0.h]h'Simulate a power up delay. Default: 0.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK[hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hhhK[hj{hhubj)}(h8mock_tune_delay_msec Simulate a tune delay. Default 0. h](j)}(hmock_tune_delay_msech]hmock_tune_delay_msec}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhK^hjubj)}(hhh]h)}(h"Simulate a tune delay. Default 0.h]h"Simulate a tune delay. Default 0.}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK^hj#ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hhhK^hj{hhubj)}(hDvidtv_valid_dvb_t_freqs Valid DVB-T frequencies to simulate, in Hz. h](j)}(hvidtv_valid_dvb_t_freqsh]hvidtv_valid_dvb_t_freqs}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKahj@ubj)}(hhh]h)}(h+Valid DVB-T frequencies to simulate, in Hz.h]h+Valid DVB-T frequencies to simulate, in Hz.}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKahjRubah}(h]h ]h"]h$]h&]uh1jhj@ubeh}(h]h ]h"]h$]h&]uh1j~hhhKahj{hhubj)}(hDvidtv_valid_dvb_c_freqs Valid DVB-C frequencies to simulate, in Hz. h](j)}(hvidtv_valid_dvb_c_freqsh]hvidtv_valid_dvb_c_freqs}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKdhjoubj)}(hhh]h)}(h+Valid DVB-C frequencies to simulate, in Hz.h]h+Valid DVB-C frequencies to simulate, in Hz.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKdhjubah}(h]h ]h"]h$]h&]uh1jhjoubeh}(h]h ]h"]h$]h&]uh1j~hhhKdhj{hhubj)}(hSvidtv_valid_dvb_s_freqs Valid DVB-S/S2 frequencies to simulate at Ku-Band, in kHz. h](j)}(hvidtv_valid_dvb_s_freqsh]hvidtv_valid_dvb_s_freqs}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKghjubj)}(hhh]h)}(h:Valid DVB-S/S2 frequencies to simulate at Ku-Band, in kHz.h]h:Valid DVB-S/S2 frequencies to simulate at Ku-Band, in kHz.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKghjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hhhKghj{hhubj)}(hNmax_frequency_shift_hz, Maximum shift in HZ allowed when tuning in a channel. h](j)}(hmax_frequency_shift_hz,h]hmax_frequency_shift_hz,}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKjhjubj)}(hhh]h)}(h5Maximum shift in HZ allowed when tuning in a channel.h]h5Maximum shift in HZ allowed when tuning in a channel.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKjhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hhhKjhj{hhubj)}(h=si_period_msec How often to send SI packets. Default: 40ms. h](j)}(hsi_period_msech]hsi_period_msec}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKmhjubj)}(hhh]h)}(h-How often to send SI packets. Default: 40ms.h]h-How often to send SI packets. Default: 40ms.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKmhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hhhKmhj{hhubj)}(h?pcr_period_msec How often to send PCR packets. Default: 40ms. h](j)}(hpcr_period_msech]hpcr_period_msec}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKphj+ubj)}(hhh]h)}(h.How often to send PCR packets. Default: 40ms.h]h.How often to send PCR packets. Default: 40ms.}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKphj=ubah}(h]h ]h"]h$]h&]uh1jhj+ubeh}(h]h ]h"]h$]h&]uh1j~hhhKphj{hhubj)}(hrmux_rate_kbytes_sec Attempt to maintain this bit rate by inserting TS null packets, if necessary. Default: 4096. h](j)}(hmux_rate_kbytes_sech]hmux_rate_kbytes_sec}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKthjZubj)}(hhh]h)}(h]Attempt to maintain this bit rate by inserting TS null packets, if necessary. Default: 4096.h]h]Attempt to maintain this bit rate by inserting TS null packets, if necessary. Default: 4096.}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKshjlubah}(h]h ]h"]h$]h&]uh1jhjZubeh}(h]h ]h"]h$]h&]uh1j~hhhKthj{hhubj)}(h4pcr_pid, PCR PID for all channels. Default: 0x200. h](j)}(hpcr_pid,h]hpcr_pid,}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKwhjubj)}(hhh]h)}(h*PCR PID for all channels. Default: 0x200.h]h*PCR PID for all channels. Default: 0x200.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKwhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hhhKwhj{hhubj)}(hDmux_buf_sz_pkts, Size for the mux buffer in multiples of 188 bytes. h](j)}(hmux_buf_sz_pkts,h]hmux_buf_sz_pkts,}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKzhjubj)}(hhh]h)}(h2Size for the mux buffer in multiples of 188 bytes.h]h2Size for the mux buffer in multiples of 188 bytes.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKzhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hhhKzhj{hhubeh}(h]h ]h"]h$]h&]uh1jyhjZhhhhhNubeh}(h]command-line-arguments-to-vidtvah ]h"]command-line arguments to vidtvah$]h&]uh1hhhhhhhhKLubh)}(hhh](h)}(hvidtv internal structureh]hvidtv internal structure}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK}ubh)}(h2The kernel modules are split in the following way:h]h2The kernel modules are split in the following way:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK~hjhhubjz)}(hhh](j)}(h5vidtv_tuner.[ch] Implements a fake tuner DVB driver. h](j)}(hvidtv_tuner.[ch]h]hvidtv_tuner.[ch]}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKhjubj)}(hhh]h)}(h#Implements a fake tuner DVB driver.h]h#Implements a fake tuner DVB driver.}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj)ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hhhKhjubj)}(h;vidtv_demod.[ch] Implements a fake demodulator DVB driver. h](j)}(hvidtv_demod.[ch]h]hvidtv_demod.[ch]}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKhjFubj)}(hhh]h)}(h)Implements a fake demodulator DVB driver.h]h)Implements a fake demodulator DVB driver.}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjXubah}(h]h ]h"]h$]h&]uh1jhjFubeh}(h]h ]h"]h$]h&]uh1j~hhhKhjhhubj)}(h.vidtv_bridge.[ch] Implements a bridge driver. h](j)}(hvidtv_bridge.[ch]h]hvidtv_bridge.[ch]}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKhjuubj)}(hhh]h)}(hImplements a bridge driver.h]hImplements a bridge driver.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjuubeh}(h]h ]h"]h$]h&]uh1j~hhhKhjhhubeh}(h]h ]h"]h$]h&]uh1jyhjhhhhhNubh)}(h4The MPEG related code is split in the following way:h]h4The MPEG related code is split in the following way:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubjz)}(hhh](j)}(hvvidtv_ts.[ch] Code to work with MPEG TS packets, such as TS headers, adaptation fields, PCR packets and NULL packets. h](j)}(h vidtv_ts.[ch]h]h vidtv_ts.[ch]}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKhjubj)}(hhh]h)}(hgCode to work with MPEG TS packets, such as TS headers, adaptation fields, PCR packets and NULL packets.h]hgCode to work with MPEG TS packets, such as TS headers, adaptation fields, PCR packets and NULL packets.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hhhKhjubj)}(hXvidtv_psi.[ch] This is the PSI generator. PSI packets contain general information about a MPEG Transport Stream. A PSI generator is needed so userspace apps can retrieve information about the Transport Stream and eventually tune into a (dummy) channel. Because the generator is implemented in a separate file, it can be reused elsewhere in the media subsystem. Currently vidtv supports working with 5 PSI tables: PAT, PMT, SDT, NIT and EIT. The specification for PAT and PMT can be found in *ISO 13818-1: Systems*, while the specification for the SDT, NIT, EIT can be found in *ETSI EN 300 468: Specification for Service Information (SI) in DVB systems*. It isn't strictly necessary, but using a real TS file helps when debugging PSI tables. Vidtv currently tries to replicate the PSI structure found in this file: `TS1Globo.ts `_. A good way to visualize the structure of streams is by using `DVBInspector `_. h](j)}(hvidtv_psi.[ch]h]hvidtv_psi.[ch]}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKhjubj)}(hhh](h)}(hThis is the PSI generator. PSI packets contain general information about a MPEG Transport Stream. A PSI generator is needed so userspace apps can retrieve information about the Transport Stream and eventually tune into a (dummy) channel.h]hThis is the PSI generator. PSI packets contain general information about a MPEG Transport Stream. A PSI generator is needed so userspace apps can retrieve information about the Transport Stream and eventually tune into a (dummy) channel.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubh)}(hkBecause the generator is implemented in a separate file, it can be reused elsewhere in the media subsystem.h]hkBecause the generator is implemented in a separate file, it can be reused elsewhere in the media subsystem.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubh)}(hOCurrently vidtv supports working with 5 PSI tables: PAT, PMT, SDT, NIT and EIT.h]hOCurrently vidtv supports working with 5 PSI tables: PAT, PMT, SDT, NIT and EIT.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubh)}(hThe specification for PAT and PMT can be found in *ISO 13818-1: Systems*, while the specification for the SDT, NIT, EIT can be found in *ETSI EN 300 468: Specification for Service Information (SI) in DVB systems*.h](h2The specification for PAT and PMT can be found in }(hj)hhhNhNubhemphasis)}(h*ISO 13818-1: Systems*h]hISO 13818-1: Systems}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1j1hj)ubh@, while the specification for the SDT, NIT, EIT can be found in }(hj)hhhNhNubj2)}(hL*ETSI EN 300 468: Specification for Service Information (SI) in DVB systems*h]hJETSI EN 300 468: Specification for Service Information (SI) in DVB systems}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1j1hj)ubh.}(hj)hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubh)}(hIt isn't strictly necessary, but using a real TS file helps when debugging PSI tables. Vidtv currently tries to replicate the PSI structure found in this file: `TS1Globo.ts `_.h](hIt isn’t strictly necessary, but using a real TS file helps when debugging PSI tables. Vidtv currently tries to replicate the PSI structure found in this file: }(hj]hhhNhNubh)}(hE`TS1Globo.ts `_h]h TS1Globo.ts}(hjehhhNhNubah}(h]h ]h"]h$]h&]name TS1Globo.tsrefuri4https://tsduck.io/streams/brazil-isdb-tb/TS1globo.tsuh1hhj]ubhtarget)}(h7 h]h}(h] ts1globo-tsah ]h"] ts1globo.tsah$]h&]refurijvuh1jw referencedKhj]ubh.}(hj]hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubh)}(h~A good way to visualize the structure of streams is by using `DVBInspector `_.h](h=A good way to visualize the structure of streams is by using }(hjhhhNhNubh)}(h@`DVBInspector `_h]h DVBInspector}(hjhhhNhNubah}(h]h ]h"]h$]h&]name DVBInspectorju.https://sourceforge.net/projects/dvbinspector/uh1hhjubjx)}(h1 h]h}(h] dvbinspectorah ]h"] dvbinspectorah$]h&]refurijuh1jwjKhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hhhKhjhhubj)}(hvidtv_pes.[ch] Implements the PES logic to convert encoder data into MPEG TS packets. These can then be fed into a TS multiplexer and eventually into userspace. h](j)}(hvidtv_pes.[ch]h]hvidtv_pes.[ch]}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKhjubj)}(hhh]h)}(hImplements the PES logic to convert encoder data into MPEG TS packets. These can then be fed into a TS multiplexer and eventually into userspace.h]hImplements the PES logic to convert encoder data into MPEG TS packets. These can then be fed into a TS multiplexer and eventually into userspace.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hhhKhjhhubj)}(hvidtv_encoder.h An interface for vidtv encoders. New encoders can be added to this driver by implementing the calls in this file. h](j)}(hvidtv_encoder.hh]hvidtv_encoder.h}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKhjubj)}(hhh]h)}(hqAn interface for vidtv encoders. New encoders can be added to this driver by implementing the calls in this file.h]hqAn interface for vidtv encoders. New encoders can be added to this driver by implementing the calls in this file.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hhhKhjhhubj)}(hXEvidtv_s302m.[ch] Implements a S302M encoder to make it possible to insert PCM audio data in the generated MPEG Transport Stream. The relevant specification is available online as *SMPTE 302M-2007: Television - Mapping of AES3 Data into MPEG-2 Transport Stream*. The resulting MPEG Elementary Stream is conveyed in a private stream with a S302M registration descriptor attached. This shall enable passing an audio signal into userspace so it can be decoded and played by media software. The corresponding decoder in ffmpeg is located in 'libavcodec/s302m.c' and is experimental. h](j)}(hvidtv_s302m.[ch]h]hvidtv_s302m.[ch]}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKhj+ubj)}(hhh](h)}(hImplements a S302M encoder to make it possible to insert PCM audio data in the generated MPEG Transport Stream. The relevant specification is available online as *SMPTE 302M-2007: Television - Mapping of AES3 Data into MPEG-2 Transport Stream*.h](hImplements a S302M encoder to make it possible to insert PCM audio data in the generated MPEG Transport Stream. The relevant specification is available online as }(hj@hhhNhNubj2)}(hQ*SMPTE 302M-2007: Television - Mapping of AES3 Data into MPEG-2 Transport Stream*h]hOSMPTE 302M-2007: Television - Mapping of AES3 Data into MPEG-2 Transport Stream}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1j1hj@ubh.}(hj@hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj=ubh)}(hsThe resulting MPEG Elementary Stream is conveyed in a private stream with a S302M registration descriptor attached.h]hsThe resulting MPEG Elementary Stream is conveyed in a private stream with a S302M registration descriptor attached.}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj=ubh)}(hThis shall enable passing an audio signal into userspace so it can be decoded and played by media software. The corresponding decoder in ffmpeg is located in 'libavcodec/s302m.c' and is experimental.h]hThis shall enable passing an audio signal into userspace so it can be decoded and played by media software. The corresponding decoder in ffmpeg is located in ‘libavcodec/s302m.c’ and is experimental.}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj=ubeh}(h]h ]h"]h$]h&]uh1jhj+ubeh}(h]h ]h"]h$]h&]uh1j~hhhKhjhhubj)}(hXZvidtv_channel.[ch] Implements a 'channel' abstraction. When vidtv boots, it will create some hardcoded channels: #. Their services will be concatenated to populate the SDT. #. Their programs will be concatenated to populate the PAT #. Their events will be concatenated to populate the EIT #. For each program in the PAT, a PMT section will be created #. The PMT section for a channel will be assigned its streams. #. Every stream will have its corresponding encoder polled in a loop to produce TS packets. These packets may be interleaved by the muxer and then delivered to the bridge. h](j)}(hvidtv_channel.[ch]h]hvidtv_channel.[ch]}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKhjubj)}(hhh](h)}(h#Implements a 'channel' abstraction.h]h'Implements a ‘channel’ abstraction.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubh)}(h9When vidtv boots, it will create some hardcoded channels:h]h9When vidtv boots, it will create some hardcoded channels:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubhenumerated_list)}(hhh](j6)}(h9Their services will be concatenated to populate the SDT. h]h)}(h8Their services will be concatenated to populate the SDT.h]h8Their services will be concatenated to populate the SDT.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j5hjubj6)}(h8Their programs will be concatenated to populate the PAT h]h)}(h7Their programs will be concatenated to populate the PATh]h7Their programs will be concatenated to populate the PAT}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j5hjubj6)}(h6Their events will be concatenated to populate the EIT h]h)}(h5Their events will be concatenated to populate the EITh]h5Their events will be concatenated to populate the EIT}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j5hjubj6)}(h;For each program in the PAT, a PMT section will be created h]h)}(h:For each program in the PAT, a PMT section will be createdh]h:For each program in the PAT, a PMT section will be created}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1j5hjubj6)}(h`_.h](hhUsing the tools in v4l-utils is a great way to test and inspect the output of vidtv. It is hosted here: }(hjB hhhNhNubh)}(hI`v4l-utils Documentation `_h]hv4l-utils Documentation}(hjJ hhhNhNubah}(h]h ]h"]h$]h&]namev4l-utils Documentationju,https://linuxtv.org/wiki/index.php/V4l-utilsuh1hhjB ubjx)}(h/ h]h}(h]v4l-utils-documentationah ]h"]v4l-utils documentationah$]h&]refurijZ uh1jwjKhjB ubh.}(hjB hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj1 hhubh)}(hFrom its webpage::h]hFrom its webpage:}(hjr hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj1 hhubj)}(hXThe v4l-utils are a series of packages for handling media devices. It is hosted at http://git.linuxtv.org/v4l-utils.git, and packaged on most distributions. It provides a series of libraries and utilities to be used to control several aspect of the media boards.h]hXThe v4l-utils are a series of packages for handling media devices. It is hosted at http://git.linuxtv.org/v4l-utils.git, and packaged on most distributions. It provides a series of libraries and utilities to be used to control several aspect of the media boards.}hj sbah}(h]h ]h"]h$]h&]hhuh1jhhhKhj1 hhubh)}(h9Start by installing v4l-utils and then modprobing vidtv::h]h8Start by installing v4l-utils and then modprobing vidtv:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj1 hhubj)}(hmodprobe dvb_vidtv_bridgeh]hmodprobe dvb_vidtv_bridge}hj sbah}(h]h ]h"]h$]h&]hhuh1jhhhKhj1 hhubh)}(hqIf the driver is OK, it should load and its probing code will run. This will pull in the tuner and demod drivers.h]hqIf the driver is OK, it should load and its probing code will run. This will pull in the tuner and demod drivers.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj1 hhubh)}(hhh](h)}(hUsing dvb-fe-toolh]hUsing dvb-fe-tool}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhMubh)}(hIThe first step to check whether the demod loaded successfully is to run::h]hHThe first step to check whether the demod loaded successfully is to run:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubj)}(hXR$ dvb-fe-tool Device Dummy demod for DVB-T/T2/C/S/S2 (/dev/dvb/adapter0/frontend0) capabilities: CAN_FEC_1_2 CAN_FEC_2_3 CAN_FEC_3_4 CAN_FEC_4_5 CAN_FEC_5_6 CAN_FEC_6_7 CAN_FEC_7_8 CAN_FEC_8_9 CAN_FEC_AUTO CAN_GUARD_INTERVAL_AUTO CAN_HIERARCHY_AUTO CAN_INVERSION_AUTO CAN_QAM_16 CAN_QAM_32 CAN_QAM_64 CAN_QAM_128 CAN_QAM_256 CAN_QAM_AUTO CAN_QPSK CAN_TRANSMISSION_MODE_AUTO DVB API Version 5.11, Current v5 delivery system: DVBC/ANNEX_A Supported delivery systems: DVBT DVBT2 [DVBC/ANNEX_A] DVBS DVBS2 Frequency range for the current standard: From: 51.0 MHz To: 2.15 GHz Step: 62.5 kHz Tolerance: 29.5 MHz Symbol rate ranges for the current standard: From: 1.00 MBauds To: 45.0 MBaudsh]hXR$ dvb-fe-tool Device Dummy demod for DVB-T/T2/C/S/S2 (/dev/dvb/adapter0/frontend0) capabilities: CAN_FEC_1_2 CAN_FEC_2_3 CAN_FEC_3_4 CAN_FEC_4_5 CAN_FEC_5_6 CAN_FEC_6_7 CAN_FEC_7_8 CAN_FEC_8_9 CAN_FEC_AUTO CAN_GUARD_INTERVAL_AUTO CAN_HIERARCHY_AUTO CAN_INVERSION_AUTO CAN_QAM_16 CAN_QAM_32 CAN_QAM_64 CAN_QAM_128 CAN_QAM_256 CAN_QAM_AUTO CAN_QPSK CAN_TRANSMISSION_MODE_AUTO DVB API Version 5.11, Current v5 delivery system: DVBC/ANNEX_A Supported delivery systems: DVBT DVBT2 [DVBC/ANNEX_A] DVBS DVBS2 Frequency range for the current standard: From: 51.0 MHz To: 2.15 GHz Step: 62.5 kHz Tolerance: 29.5 MHz Symbol rate ranges for the current standard: From: 1.00 MBauds To: 45.0 MBauds}hj sbah}(h]h ]h"]h$]h&]hhuh1jhhhMhj hhubh)}(hGThis should return what is currently set up at the demod struct, i.e.::h]hFThis should return what is currently set up at the demod struct, i.e.:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM*hj hhubj)}(hXstatic const struct dvb_frontend_ops vidtv_demod_ops = { .delsys = { SYS_DVBT, SYS_DVBT2, SYS_DVBC_ANNEX_A, SYS_DVBS, SYS_DVBS2, }, .info = { .name = "Dummy demod for DVB-T/T2/C/S/S2", .frequency_min_hz = 51 * MHz, .frequency_max_hz = 2150 * MHz, .frequency_stepsize_hz = 62500, .frequency_tolerance_hz = 29500 * kHz, .symbol_rate_min = 1000000, .symbol_rate_max = 45000000, .caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | FE_CAN_FEC_4_5 | FE_CAN_FEC_5_6 | FE_CAN_FEC_6_7 | FE_CAN_FEC_7_8 | FE_CAN_FEC_8_9 | FE_CAN_QAM_16 | FE_CAN_QAM_64 | FE_CAN_QAM_32 | FE_CAN_QAM_128 | FE_CAN_QAM_256 | FE_CAN_QAM_AUTO | FE_CAN_QPSK | FE_CAN_FEC_AUTO | FE_CAN_INVERSION_AUTO | FE_CAN_TRANSMISSION_MODE_AUTO | FE_CAN_GUARD_INTERVAL_AUTO | FE_CAN_HIERARCHY_AUTO, } ....h]hXstatic const struct dvb_frontend_ops vidtv_demod_ops = { .delsys = { SYS_DVBT, SYS_DVBT2, SYS_DVBC_ANNEX_A, SYS_DVBS, SYS_DVBS2, }, .info = { .name = "Dummy demod for DVB-T/T2/C/S/S2", .frequency_min_hz = 51 * MHz, .frequency_max_hz = 2150 * MHz, .frequency_stepsize_hz = 62500, .frequency_tolerance_hz = 29500 * kHz, .symbol_rate_min = 1000000, .symbol_rate_max = 45000000, .caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | FE_CAN_FEC_4_5 | FE_CAN_FEC_5_6 | FE_CAN_FEC_6_7 | FE_CAN_FEC_7_8 | FE_CAN_FEC_8_9 | FE_CAN_QAM_16 | FE_CAN_QAM_64 | FE_CAN_QAM_32 | FE_CAN_QAM_128 | FE_CAN_QAM_256 | FE_CAN_QAM_AUTO | FE_CAN_QPSK | FE_CAN_FEC_AUTO | FE_CAN_INVERSION_AUTO | FE_CAN_TRANSMISSION_MODE_AUTO | FE_CAN_GUARD_INTERVAL_AUTO | FE_CAN_HIERARCHY_AUTO, } ....}hj sbah}(h]h ]h"]h$]h&]hhuh1jhhhM,hj hhubh)}(hFor more information on dvb-fe-tools check its online documentation here: `dvb-fe-tool Documentation `_.h](hJFor more information on dvb-fe-tools check its online documentation here: }(hj hhhNhNubh)}(hQ`dvb-fe-tool Documentation `_h]hdvb-fe-tool Documentation}(hj hhhNhNubah}(h]h ]h"]h$]h&]namedvb-fe-tool Documentationju2https://www.linuxtv.org/wiki/index.php/Dvb-fe-tooluh1hhj ubjx)}(h5 h]h}(h]dvb-fe-tool-documentationah ]h"]dvb-fe-tool documentationah$]h&]refurij uh1jwjKhj ubh.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMVhj hhubeh}(h]using-dvb-fe-toolah ]h"]using dvb-fe-toolah$]h&]uh1hhj1 hhhhhMubh)}(hhh](h)}(hUsing dvb-scanh]hUsing dvb-scan}(hj< hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9 hhhhhM[ubh)}(hMIn order to tune into a channel and read the PSI tables, we can use dvb-scan.h]hMIn order to tune into a channel and read the PSI tables, we can use dvb-scan.}(hjJ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM]hj9 hhubh)}(h]For this, one should provide a configuration file known as a 'scan file', here's an example::h]hbFor this, one should provide a configuration file known as a ‘scan file’, here’s an example:}(hjX hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM_hj9 hhubj)}(h{[Channel] FREQUENCY = 474000000 MODULATION = QAM/AUTO SYMBOL_RATE = 6940000 INNER_FEC = AUTO DELIVERY_SYSTEM = DVBC/ANNEX_Ah]h{[Channel] FREQUENCY = 474000000 MODULATION = QAM/AUTO SYMBOL_RATE = 6940000 INNER_FEC = AUTO DELIVERY_SYSTEM = DVBC/ANNEX_A}hjf sbah}(h]h ]h"]h$]h&]hhuh1jhhhMbhj9 hhubhnote)}(h;The parameters depend on the video standard you're testing.h]h)}(hjx h]h=The parameters depend on the video standard you’re testing.}(hjz hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMjhjv ubah}(h]h ]h"]h$]h&]uh1jt hj9 hhhhhNubju )}(hVidtv is a fake driver and does not validate much of the information in the scan file. Just specifying 'FREQUENCY' and 'DELIVERY_SYSTEM' should be enough for DVB-T/DVB-T2. For DVB-S/DVB-C however, you should also provide 'SYMBOL_RATE'.h]h)}(hVidtv is a fake driver and does not validate much of the information in the scan file. Just specifying 'FREQUENCY' and 'DELIVERY_SYSTEM' should be enough for DVB-T/DVB-T2. For DVB-S/DVB-C however, you should also provide 'SYMBOL_RATE'.h]hVidtv is a fake driver and does not validate much of the information in the scan file. Just specifying ‘FREQUENCY’ and ‘DELIVERY_SYSTEM’ should be enough for DVB-T/DVB-T2. For DVB-S/DVB-C however, you should also provide ‘SYMBOL_RATE’.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMmhj ubah}(h]h ]h"]h$]h&]uh1jt hj9 hhhhhNubh)}(hiYou can browse scan tables online here: `dvb-scan-tables `_.h](h(You can browse scan tables online here: }(hj hhhNhNubh)}(h@`dvb-scan-tables `_h]hdvb-scan-tables}(hj hhhNhNubah}(h]h ]h"]h$]h&]namedvb-scan-tablesju+https://git.linuxtv.org/dtv-scan-tables.gituh1hhj ubjx)}(h. h]h}(h]dvb-scan-tablesah ]h"]dvb-scan-tablesah$]h&]refurij uh1jwjKhj ubh.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMrhj9 hhubh)}(hAAssuming this channel is named 'channel.conf', you can then run::h]hDAssuming this channel is named ‘channel.conf’, you can then run:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMuhj9 hhubj)}(hX$ dvbv5-scan channel.conf dvbv5-scan ~/vidtv.conf ERROR command BANDWIDTH_HZ (5) not found during retrieve Cannot calc frequency shift. Either bandwidth/symbol-rate is unavailable (yet). Scanning frequency #1 330000000 (0x00) Signal= -68.00dBm Scanning frequency #2 474000000 Lock (0x1f) Signal= -34.45dBm C/N= 33.74dB UCB= 0 Service Beethoven, provider LinuxTV.org: digital televisionh]hX$ dvbv5-scan channel.conf dvbv5-scan ~/vidtv.conf ERROR command BANDWIDTH_HZ (5) not found during retrieve Cannot calc frequency shift. Either bandwidth/symbol-rate is unavailable (yet). Scanning frequency #1 330000000 (0x00) Signal= -68.00dBm Scanning frequency #2 474000000 Lock (0x1f) Signal= -34.45dBm C/N= 33.74dB UCB= 0 Service Beethoven, provider LinuxTV.org: digital television}hj sbah}(h]h ]h"]h$]h&]hhuh1jhhhMwhj9 hhubh)}(hFor more information on dvb-scan, check its documentation online here: `dvb-scan Documentation `_.h](hGFor more information on dvb-scan, check its documentation online here: }(hj hhhNhNubh)}(hJ`dvb-scan Documentation `_h]hdvb-scan Documentation}(hj hhhNhNubah}(h]h ]h"]h$]h&]namedvb-scan Documentationju.https://www.linuxtv.org/wiki/index.php/Dvbscanuh1hhj ubjx)}(h1 h]h}(h]dvb-scan-documentationah ]h"]dvb-scan documentationah$]h&]refurij uh1jwjKhj ubh.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj9 hhubeh}(h]using-dvb-scanah ]h"]using dvb-scanah$]h&]uh1hhj1 hhhhhM[ubh)}(hhh](h)}(h Using dvb-zaph]h Using dvb-zap}(hj, hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj) hhhhhMubh)}(hdvbv5-zap is a command line tool that can be used to record MPEG-TS to disk. The typical use is to tune into a channel and put it into record mode. The example below - which is taken from the documentation - illustrates that\ [1]_::h](hdvbv5-zap is a command line tool that can be used to record MPEG-TS to disk. The typical use is to tune into a channel and put it into record mode. The example below - which is taken from the documentation - illustrates that }(hj: hhhNhNubhfootnote_reference)}(h[1]_h]h1}(hjD hhhNhNubah}(h]id1ah ]h"]h$]h&]refidid2docnamedriver-api/media/drivers/vidtvuh1jB hj: resolvedKubh:}(hj: hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj) hhubj)}(hXw$ dvbv5-zap -c dvb_channel.conf "beethoven" -o music.ts -P -t 10 using demux 'dvb0.demux0' reading channels from file 'dvb_channel.conf' tuning to 474000000 Hz pass all PID's to TS dvb_set_pesfilter 8192 dvb_dev_set_bufsize: buffer set to 6160384 Lock (0x1f) Quality= Good Signal= -34.66dBm C/N= 33.41dB UCB= 0 postBER= 0 preBER= 1.05x10^-3 PER= 0 Lock (0x1f) Quality= Good Signal= -34.57dBm C/N= 33.46dB UCB= 0 postBER= 0 preBER= 1.05x10^-3 PER= 0 Record to file 'music.ts' started received 24587768 bytes (2401 Kbytes/sec) Lock (0x1f) Quality= Good Signal= -34.42dBm C/N= 33.89dB UCB= 0 postBER= 0 preBER= 2.44x10^-3 PER= 0h]hXw$ dvbv5-zap -c dvb_channel.conf "beethoven" -o music.ts -P -t 10 using demux 'dvb0.demux0' reading channels from file 'dvb_channel.conf' tuning to 474000000 Hz pass all PID's to TS dvb_set_pesfilter 8192 dvb_dev_set_bufsize: buffer set to 6160384 Lock (0x1f) Quality= Good Signal= -34.66dBm C/N= 33.41dB UCB= 0 postBER= 0 preBER= 1.05x10^-3 PER= 0 Lock (0x1f) Quality= Good Signal= -34.57dBm C/N= 33.46dB UCB= 0 postBER= 0 preBER= 1.05x10^-3 PER= 0 Record to file 'music.ts' started received 24587768 bytes (2401 Kbytes/sec) Lock (0x1f) Quality= Good Signal= -34.42dBm C/N= 33.89dB UCB= 0 postBER= 0 preBER= 2.44x10^-3 PER= 0}hjb sbah}(h]h ]h"]h$]h&]hhuh1jhhhMhj) hhubhfootnote)}(h[In this example, it records 10 seconds with all program ID's stored at the music.ts file. h](hlabel)}(h1h]h1}(hjx hhhNhNubah}(h]h ]h"]h$]h&]uh1jv hjr ubh)}(hYIn this example, it records 10 seconds with all program ID's stored at the music.ts file.h]h[In this example, it records 10 seconds with all program ID’s stored at the music.ts file.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjr ubeh}(h]jT ah ]h"]1ah$]h&]jN ajU jV uh1jp hhhMhj) hhjW Kubh)}(hThe channel can be watched by playing the contents of the stream with some player that recognizes the MPEG-TS format, such as ``mplayer`` or ``vlc``.h](hThe channel can be watched by playing the contents of the stream with some player that recognizes the MPEG-TS format, such as }(hj hhhNhNubhliteral)}(h ``mplayer``h]hmplayer}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj ubh or }(hj hhhNhNubj )}(h``vlc``h]hvlc}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj ubh.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj) hhubh)}(h}By playing the contents of the stream one can visually inspect the workings of vidtv, e.g., to play a recorded TS file with::h]h|By playing the contents of the stream one can visually inspect the workings of vidtv, e.g., to play a recorded TS file with:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj) hhubj)}(h$ mplayer music.tsh]h$ mplayer music.ts}hj sbah}(h]h ]h"]h$]h&]hhuh1jhhhMhj) hhubh)}(h9or, alternatively, running this command on one terminal::h]h8or, alternatively, running this command on one terminal:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj) hhubj)}(h3$ dvbv5-zap -c dvb_channel.conf "beethoven" -P -r &h]h3$ dvbv5-zap -c dvb_channel.conf "beethoven" -P -r &}hj sbah}(h]h ]h"]h$]h&]hhuh1jhhhMhj) hhubh)}(hIAnd, on a second terminal, playing the contents from DVR interface with::h]hHAnd, on a second terminal, playing the contents from DVR interface with:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj) hhubj)}(h $ mplayer /dev/dvb/adapter0/dvr0h]h $ mplayer /dev/dvb/adapter0/dvr0}hj sbah}(h]h ]h"]h$]h&]hhuh1jhhhMhj) hhubh)}(hFor more information on dvb-zap check its online documentation here: `dvb-zap Documentation `_. See also: `zap `_.h](hEFor more information on dvb-zap check its online documentation here: }(hj# hhhNhNubh)}(hK`dvb-zap Documentation `_h]hdvb-zap Documentation}(hj+ hhhNhNubah}(h]h ]h"]h$]h&]namedvb-zap Documentationju0https://www.linuxtv.org/wiki/index.php/Dvbv5-zapuh1hhj# ubjx)}(h3 h]h}(h]dvb-zap-documentationah ]h"]dvb-zap documentationah$]h&]refurij; uh1jwjKhj# ubh . See also: }(hj# hhhNhNubh)}(h3`zap `_h]hzap}(hjM hhhNhNubah}(h]h ]h"]h$]h&]namezapju*https://www.linuxtv.org/wiki/index.php/Zapuh1hhj# ubjx)}(h- h]h}(h]zapah ]h"]zapah$]h&]refurij] uh1jwjKhj# ubh.}(hj# hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj) hhubeh}(h] using-dvb-zapah ]h"] using dvb-zapah$]h&]uh1hhj1 hhhhhMubeh}(h]testing-vidtv-with-v4l-utilsah ]h"]testing vidtv with v4l-utilsah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h#What can still be improved in vidtvh]h#What can still be improved in vidtv}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhMubh)}(hhh](h)}(hAdd *debugfs* integrationh](hAdd }(hj hhhNhNubj2)}(h *debugfs*h]hdebugfs}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j1hj ubh integration}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj hhhhhMubh)}(hXAlthough frontend drivers provide DVBv5 statistics via the .read_status call, a nice addition would be to make additional statistics available to userspace via debugfs, which is a simple-to-use, RAM-based filesystem specifically designed for debug purposes.h]hXAlthough frontend drivers provide DVBv5 statistics via the .read_status call, a nice addition would be to make additional statistics available to userspace via debugfs, which is a simple-to-use, RAM-based filesystem specifically designed for debug purposes.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubh)}(hThe logic for this would be implemented on a separate file so as not to pollute the frontend driver. These statistics are driver-specific and can be useful during tests.h]hThe logic for this would be implemented on a separate file so as not to pollute the frontend driver. These statistics are driver-specific and can be useful during tests.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubh)}(hThe Siano driver is one example of a driver using debugfs to convey driver-specific statistics to userspace and it can be used as a reference.h]hThe Siano driver is one example of a driver using debugfs to convey driver-specific statistics to userspace and it can be used as a reference.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubh)}(hQThis should be further enabled and disabled via a Kconfig option for convenience.h]hQThis should be further enabled and disabled via a Kconfig option for convenience.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubeh}(h]add-debugfs-integrationah ]h"]add debugfs integrationah$]h&]uh1hhj hhhhhMubh)}(hhh](h)}(hAdd a way to test videoh]hAdd a way to test video}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhMubh)}(hX{Currently, vidtv can only encode PCM audio. It would be great to implement a barebones version of MPEG-2 video encoding so we can also test video. The first place to look into is *ISO 13818-2: Information technology — Generic coding of moving pictures and associated audio information — Part 2: Video*, which covers the encoding of compressed video in MPEG Transport Streams.h](hCurrently, vidtv can only encode PCM audio. It would be great to implement a barebones version of MPEG-2 video encoding so we can also test video. The first place to look into is }(hj hhhNhNubj2)}(h~*ISO 13818-2: Information technology — Generic coding of moving pictures and associated audio information — Part 2: Video*h]h|ISO 13818-2: Information technology — Generic coding of moving pictures and associated audio information — Part 2: Video}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j1hj ubhJ, which covers the encoding of compressed video in MPEG Transport Streams.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj hhubh)}(h_This might optionally use the Video4Linux2 Test Pattern Generator, v4l2-tpg, which resides at::h]h^This might optionally use the Video4Linux2 Test Pattern Generator, v4l2-tpg, which resides at:}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubj)}(hdrivers/media/common/v4l2-tpg/h]hdrivers/media/common/v4l2-tpg/}hj8sbah}(h]h ]h"]h$]h&]hhuh1jhhhMhj hhubeh}(h]add-a-way-to-test-videoah ]h"]add a way to test videoah$]h&]uh1hhj hhhhhMubh)}(hhh](h)}(hAdd white noise simulationh]hAdd white noise simulation}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjNhhhhhMubh)}(hXThe vidtv tuner already has code to identify whether the chosen frequency is too far away from a table of valid frequencies. For now, this means that the demodulator can eventually lose the lock on the signal, since the tuner will report a bad signal quality.h]hXThe vidtv tuner already has code to identify whether the chosen frequency is too far away from a table of valid frequencies. For now, this means that the demodulator can eventually lose the lock on the signal, since the tuner will report a bad signal quality.}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjNhhubh)}(hLA nice addition is to simulate some noise when the signal quality is bad by:h]hLA nice addition is to simulate some noise when the signal quality is bad by:}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjNhhubj1)}(hhh](j6)}(hRandomly dropping some TS packets. This will trigger a continuity error if the continuity counter is updated but the packet is not passed on to the demux. h]h)}(hRandomly dropping some TS packets. This will trigger a continuity error if the continuity counter is updated but the packet is not passed on to the demux.h]hRandomly dropping some TS packets. This will trigger a continuity error if the continuity counter is updated but the packet is not passed on to the demux.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj~ubah}(h]h ]h"]h$]h&]uh1j5hj{hhhhhNubj6)}(h;Updating the error statistics accordingly (e.g. BER, etc). h]h)}(h:Updating the error statistics accordingly (e.g. BER, etc).h]h:Updating the error statistics accordingly (e.g. BER, etc).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1j5hj{hhhhhNubj6)}(h+Simulating some noise in the encoded data. h]h)}(h*Simulating some noise in the encoded data.h]h*Simulating some noise in the encoded data.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1j5hj{hhhhhNubeh}(h]h ]h"]h$]h&]jjuh1j0hhhMhjNhhubeh}(h]add-white-noise-simulationah ]h"]add white noise simulationah$]h&]uh1hhj hhhhhMubeh}(h]#what-can-still-be-improved-in-vidtvah ]h"]#what can still be improved in vidtvah$]h&]uh1hhhhhhhhMubh)}(hhh](h)}(h'Functions and structs used within vidtvh]h'Functions and structs used within vidtv}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhMubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](singlevidtv_dvb (C struct) c.vidtv_dvbhNtauh1jhjhhhNhNubhdesc)}(hhh](hdesc_signature)}(h vidtv_dvbh]hdesc_signature_line)}(hstruct vidtv_dvbh](hdesc_sig_keyword)}(hstructh]hstruct}(hjhhhNhNubah}(h]h ]kah"]h$]h&]uh1jhj hhh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:491: ./drivers/media/test-drivers/vidtv/vidtv_bridge.hhKubhdesc_sig_space)}(h h]h }(hj#hhhNhNubah}(h]h ]wah"]h$]h&]uh1j!hj hhhj hKubh desc_name)}(h vidtv_dvbh]h desc_sig_name)}(hjh]h vidtv_dvb}(hj:hhhNhNubah}(h]h ]nah"]h$]h&]uh1j8hj4ubah}(h]h ](sig-namedescnameeh"]h$]h&]hhuh1j2hj hhhj hKubeh}(h]h ]h"]h$]h&]hhƌ add_permalinkuh1j sphinx_line_type declaratorhjhhhj hKubah}(h]jah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1jhj hKhjhhubh desc_content)}(hhh]h)}(hVidtv bridge stateh]hVidtv bridge state}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:491: ./drivers/media/test-drivers/vidtv/vidtv_bridge.hhK!hjfhhubah}(h]h ]h"]h$]h&]uh1jdhjhhhj hKubeh}(h]h ](cstructeh"]h$]h&]domainjobjtypejdesctypejnoindex noindexentrynocontentsentryuh1jhhhjhNhNubh container)}(hX**Definition**:: struct vidtv_dvb { struct platform_device *pdev; struct dvb_frontend *fe[NUM_FE]; struct dvb_adapter adapter; struct dvb_demux demux; struct dmxdev dmx_dev; struct dmx_frontend dmx_fe[NUM_FE]; struct i2c_adapter i2c_adapter; struct i2c_client *i2c_client_demod[NUM_FE]; struct i2c_client *i2c_client_tuner[NUM_FE]; u32 nfeeds; struct mutex feed_lock; bool streaming; struct vidtv_mux *mux; #ifdef CONFIG_MEDIA_CONTROLLER_DVB; struct media_device mdev; #endif ; }; **Members** ``pdev`` The platform device. Obtained when the bridge is probed. ``fe`` The frontends. Obtained when probing the demodulator modules. ``adapter`` Represents a DTV adapter. See 'dvb_register_adapter'. ``demux`` The demux used by the dvb_dmx_swfilter_packets() call. ``dmx_dev`` Represents a demux device. ``dmx_fe`` The frontends associated with the demux. ``i2c_adapter`` The i2c_adapter associated with the bridge driver. ``i2c_client_demod`` The i2c_clients associated with the demodulator modules. ``i2c_client_tuner`` The i2c_clients associated with the tuner modules. ``nfeeds`` The number of feeds active. ``feed_lock`` Protects access to the start/stop stream logic/data. ``streaming`` Whether we are streaming now. ``mux`` The abstraction responsible for delivering MPEG TS packets to the bridge. ``mdev`` The media_device struct for media controller support.h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:491: ./drivers/media/test-drivers/vidtv/vidtv_bridge.hhK%hjubj)}(hXstruct vidtv_dvb { struct platform_device *pdev; struct dvb_frontend *fe[NUM_FE]; struct dvb_adapter adapter; struct dvb_demux demux; struct dmxdev dmx_dev; struct dmx_frontend dmx_fe[NUM_FE]; struct i2c_adapter i2c_adapter; struct i2c_client *i2c_client_demod[NUM_FE]; struct i2c_client *i2c_client_tuner[NUM_FE]; u32 nfeeds; struct mutex feed_lock; bool streaming; struct vidtv_mux *mux; #ifdef CONFIG_MEDIA_CONTROLLER_DVB; struct media_device mdev; #endif ; };h]hXstruct vidtv_dvb { struct platform_device *pdev; struct dvb_frontend *fe[NUM_FE]; struct dvb_adapter adapter; struct dvb_demux demux; struct dmxdev dmx_dev; struct dmx_frontend dmx_fe[NUM_FE]; struct i2c_adapter i2c_adapter; struct i2c_client *i2c_client_demod[NUM_FE]; struct i2c_client *i2c_client_tuner[NUM_FE]; u32 nfeeds; struct mutex feed_lock; bool streaming; struct vidtv_mux *mux; #ifdef CONFIG_MEDIA_CONTROLLER_DVB; struct media_device mdev; #endif ; };}hjsbah}(h]h ]h"]h$]h&]hhuh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:491: ./drivers/media/test-drivers/vidtv/vidtv_bridge.hhK'hjubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:491: ./drivers/media/test-drivers/vidtv/vidtv_bridge.hhK:hjubjz)}(hhh](j)}(hB``pdev`` The platform device. Obtained when the bridge is probed. h](j)}(h``pdev``h]j )}(hjh]hpdev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:491: ./drivers/media/test-drivers/vidtv/vidtv_bridge.hhK#hjubj)}(hhh]h)}(h8The platform device. Obtained when the bridge is probed.h]h8The platform device. Obtained when the bridge is probed.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK#hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hjhK#hjubj)}(hE``fe`` The frontends. Obtained when probing the demodulator modules. h](j)}(h``fe``h]j )}(hjh]hfe}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:491: ./drivers/media/test-drivers/vidtv/vidtv_bridge.hhK$hjubj)}(hhh]h)}(h=The frontends. Obtained when probing the demodulator modules.h]h=The frontends. Obtained when probing the demodulator modules.}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj-hK$hj.ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hj-hK$hjubj)}(hB``adapter`` Represents a DTV adapter. See 'dvb_register_adapter'. h](j)}(h ``adapter``h]j )}(hjQh]hadapter}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1j hjOubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:491: ./drivers/media/test-drivers/vidtv/vidtv_bridge.hhK%hjKubj)}(hhh]h)}(h5Represents a DTV adapter. See 'dvb_register_adapter'.h]h9Represents a DTV adapter. See ‘dvb_register_adapter’.}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjfhK%hjgubah}(h]h ]h"]h$]h&]uh1jhjKubeh}(h]h ]h"]h$]h&]uh1j~hjfhK%hjubj)}(hA``demux`` The demux used by the dvb_dmx_swfilter_packets() call. h](j)}(h ``demux``h]j )}(hjh]hdemux}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:491: ./drivers/media/test-drivers/vidtv/vidtv_bridge.hhK&hjubj)}(hhh]h)}(h6The demux used by the dvb_dmx_swfilter_packets() call.h]h6The demux used by the dvb_dmx_swfilter_packets() call.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK&hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hjhK&hjubj)}(h'``dmx_dev`` Represents a demux device. h](j)}(h ``dmx_dev``h]j )}(hjh]hdmx_dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:491: ./drivers/media/test-drivers/vidtv/vidtv_bridge.hhK'hjubj)}(hhh]h)}(hRepresents a demux device.h]hRepresents a demux device.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK'hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hjhK'hjubj)}(h4``dmx_fe`` The frontends associated with the demux. h](j)}(h ``dmx_fe``h]j )}(hjh]hdmx_fe}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:491: ./drivers/media/test-drivers/vidtv/vidtv_bridge.hhK(hjubj)}(hhh]h)}(h(The frontends associated with the demux.h]h(The frontends associated with the demux.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK(hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hjhK(hjubj)}(hC``i2c_adapter`` The i2c_adapter associated with the bridge driver. h](j)}(h``i2c_adapter``h]j )}(hj5h]h i2c_adapter}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj3ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:491: ./drivers/media/test-drivers/vidtv/vidtv_bridge.hhK)hj/ubj)}(hhh]h)}(h2The i2c_adapter associated with the bridge driver.h]h2The i2c_adapter associated with the bridge driver.}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJhK)hjKubah}(h]h ]h"]h$]h&]uh1jhj/ubeh}(h]h ]h"]h$]h&]uh1j~hjJhK)hjubj)}(hN``i2c_client_demod`` The i2c_clients associated with the demodulator modules. h](j)}(h``i2c_client_demod``h]j )}(hjnh]hi2c_client_demod}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1j hjlubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:491: ./drivers/media/test-drivers/vidtv/vidtv_bridge.hhK*hjhubj)}(hhh]h)}(h8The i2c_clients associated with the demodulator modules.h]h8The i2c_clients associated with the demodulator modules.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK*hjubah}(h]h ]h"]h$]h&]uh1jhjhubeh}(h]h ]h"]h$]h&]uh1j~hjhK*hjubj)}(hH``i2c_client_tuner`` The i2c_clients associated with the tuner modules. h](j)}(h``i2c_client_tuner``h]j )}(hjh]hi2c_client_tuner}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:491: ./drivers/media/test-drivers/vidtv/vidtv_bridge.hhK+hjubj)}(hhh]h)}(h2The i2c_clients associated with the tuner modules.h]h2The i2c_clients associated with the tuner modules.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK+hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hjhK+hjubj)}(h'``nfeeds`` The number of feeds active. h](j)}(h ``nfeeds``h]j )}(hjh]hnfeeds}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:491: ./drivers/media/test-drivers/vidtv/vidtv_bridge.hhK,hjubj)}(hhh]h)}(hThe number of feeds active.h]hThe number of feeds active.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK,hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hjhK,hjubj)}(hC``feed_lock`` Protects access to the start/stop stream logic/data. h](j)}(h ``feed_lock``h]j )}(hjh]h feed_lock}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:491: ./drivers/media/test-drivers/vidtv/vidtv_bridge.hhK-hjubj)}(hhh]h)}(h4Protects access to the start/stop stream logic/data.h]h4Protects access to the start/stop stream logic/data.}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj.hK-hj/ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hj.hK-hjubj)}(h,``streaming`` Whether we are streaming now. h](j)}(h ``streaming``h]j )}(hjRh]h streaming}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1j hjPubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:491: ./drivers/media/test-drivers/vidtv/vidtv_bridge.hhK.hjLubj)}(hhh]h)}(hWhether we are streaming now.h]hWhether we are streaming now.}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjghK.hjhubah}(h]h ]h"]h$]h&]uh1jhjLubeh}(h]h ]h"]h$]h&]uh1j~hjghK.hjubj)}(hR``mux`` The abstraction responsible for delivering MPEG TS packets to the bridge. h](j)}(h``mux``h]j )}(hjh]hmux}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:491: ./drivers/media/test-drivers/vidtv/vidtv_bridge.hhK/hjubj)}(hhh]h)}(hIThe abstraction responsible for delivering MPEG TS packets to the bridge.h]hIThe abstraction responsible for delivering MPEG TS packets to the bridge.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK/hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hjhK/hjubj)}(h>``mdev`` The media_device struct for media controller support.h](j)}(h``mdev``h]j )}(hjh]hmdev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:491: ./drivers/media/test-drivers/vidtv/vidtv_bridge.hhK/hjubj)}(hhh]h)}(h5The media_device struct for media controller support.h]h5The media_device struct for media controller support.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:491: ./drivers/media/test-drivers/vidtv/vidtv_bridge.hhK0hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hjhK/hjubeh}(h]h ]h"]h$]h&]uh1jyhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jvidtv_channel (C struct)c.vidtv_channelhNtauh1jhjhhhNhNubj)}(hhh](j)}(h vidtv_channelh]j )}(hstruct vidtv_channelh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:493: ./drivers/media/test-drivers/vidtv/vidtv_channel.hhKubj")}(h h]h }(hj,hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjhhhj+hKubj3)}(h vidtv_channelh]j9)}(hjh]h vidtv_channel}(hj>hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hj:ubah}(h]h ](jKjLeh"]h$]h&]hhuh1j2hjhhhj+hKubeh}(h]h ]h"]h$]h&]hhjVuh1j jWjXhjhhhj+hKubah}(h]jah ](j\j]eh"]h$]h&]jajb)jchuh1jhj+hKhjhhubje)}(hhh]h)}(hA 'channel' abstractionh]hA ‘channel’ abstraction}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:493: ./drivers/media/test-drivers/vidtv/vidtv_channel.hhK hj]hhubah}(h]h ]h"]h$]h&]uh1jdhjhhhj+hKubeh}(h]h ](jstructeh"]h$]h&]jjjjxjjxjjjuh1jhhhjhNhNubj)}(hX**Definition**:: struct vidtv_channel { char *name; u16 transport_stream_id; struct vidtv_psi_table_sdt_service *service; u16 program_num; struct vidtv_psi_table_pat_program *program; struct vidtv_psi_table_pmt_stream *streams; struct vidtv_encoder *encoders; struct vidtv_psi_table_eit_event *events; struct vidtv_channel *next; }; **Members** ``name`` name of the channel ``transport_stream_id`` a number to identify the TS, chosen at will. ``service`` A _single_ service. Will be concatenated into the SDT. ``program_num`` The link between PAT, PMT and SDT. ``program`` A _single_ program with one or more streams associated with it. Will be concatenated into the PAT. ``streams`` A stream loop used to populate the PMT section for 'program' ``encoders`` A encoder loop. There must be one encoder for each stream. ``events`` Optional event information. This will feed into the EIT. ``next`` Optionally chain this channel.h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:493: ./drivers/media/test-drivers/vidtv/vidtv_channel.hhK$hj|ubj)}(hX_struct vidtv_channel { char *name; u16 transport_stream_id; struct vidtv_psi_table_sdt_service *service; u16 program_num; struct vidtv_psi_table_pat_program *program; struct vidtv_psi_table_pmt_stream *streams; struct vidtv_encoder *encoders; struct vidtv_psi_table_eit_event *events; struct vidtv_channel *next; };h]hX_struct vidtv_channel { char *name; u16 transport_stream_id; struct vidtv_psi_table_sdt_service *service; u16 program_num; struct vidtv_psi_table_pat_program *program; struct vidtv_psi_table_pmt_stream *streams; struct vidtv_encoder *encoders; struct vidtv_psi_table_eit_event *events; struct vidtv_channel *next; };}hjsbah}(h]h ]h"]h$]h&]hhuh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:493: ./drivers/media/test-drivers/vidtv/vidtv_channel.hhK&hj|ubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:493: ./drivers/media/test-drivers/vidtv/vidtv_channel.hhK2hj|ubjz)}(hhh](j)}(h``name`` name of the channel h](j)}(h``name``h]j )}(hjh]hname}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:493: ./drivers/media/test-drivers/vidtv/vidtv_channel.hhK+hjubj)}(hhh]h)}(hname of the channelh]hname of the channel}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK+hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hjhK+hjubj)}(hE``transport_stream_id`` a number to identify the TS, chosen at will. h](j)}(h``transport_stream_id``h]j )}(hjh]htransport_stream_id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:493: ./drivers/media/test-drivers/vidtv/vidtv_channel.hhK,hjubj)}(hhh]h)}(h,a number to identify the TS, chosen at will.h]h,a number to identify the TS, chosen at will.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK,hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hjhK,hjubj)}(hC``service`` A _single_ service. Will be concatenated into the SDT. h](j)}(h ``service``h]j )}(hj?h]hservice}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj=ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:493: ./drivers/media/test-drivers/vidtv/vidtv_channel.hhK-hj9ubj)}(hhh]h)}(h6A _single_ service. Will be concatenated into the SDT.h]h6A _single_ service. Will be concatenated into the SDT.}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjThK-hjUubah}(h]h ]h"]h$]h&]uh1jhj9ubeh}(h]h ]h"]h$]h&]uh1j~hjThK-hjubj)}(h3``program_num`` The link between PAT, PMT and SDT. h](j)}(h``program_num``h]j )}(hjxh]h program_num}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjvubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:493: ./drivers/media/test-drivers/vidtv/vidtv_channel.hhK.hjrubj)}(hhh]h)}(h"The link between PAT, PMT and SDT.h]h"The link between PAT, PMT and SDT.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK.hjubah}(h]h ]h"]h$]h&]uh1jhjrubeh}(h]h ]h"]h$]h&]uh1j~hjhK.hjubj)}(ho``program`` A _single_ program with one or more streams associated with it. Will be concatenated into the PAT. h](j)}(h ``program``h]j )}(hjh]hprogram}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:493: ./drivers/media/test-drivers/vidtv/vidtv_channel.hhK0hjubj)}(hhh]h)}(hbA _single_ program with one or more streams associated with it. Will be concatenated into the PAT.h]hbA _single_ program with one or more streams associated with it. Will be concatenated into the PAT.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:493: ./drivers/media/test-drivers/vidtv/vidtv_channel.hhK/hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hjhK0hjubj)}(hI``streams`` A stream loop used to populate the PMT section for 'program' h](j)}(h ``streams``h]j )}(hjh]hstreams}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:493: ./drivers/media/test-drivers/vidtv/vidtv_channel.hhK1hjubj)}(hhh]h)}(h**Definition**:: struct vidtv_demod_config { u8 drop_tslock_prob_on_low_snr; u8 recover_tslock_prob_on_good_snr; }; **Members** ``drop_tslock_prob_on_low_snr`` probability of losing the lock due to low snr ``recover_tslock_prob_on_good_snr`` probability of recovering when the signal improvesh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,ubh:}(hj,hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:495: ./drivers/media/test-drivers/vidtv/vidtv_demod.hhK-hj(ubj)}(hjstruct vidtv_demod_config { u8 drop_tslock_prob_on_low_snr; u8 recover_tslock_prob_on_good_snr; };h]hjstruct vidtv_demod_config { u8 drop_tslock_prob_on_low_snr; u8 recover_tslock_prob_on_good_snr; };}hjIsbah}(h]h ]h"]h$]h&]hhuh1jh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:495: ./drivers/media/test-drivers/vidtv/vidtv_demod.hhK/hj(ubh)}(h **Members**h]j)}(hjZh]hMembers}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:495: ./drivers/media/test-drivers/vidtv/vidtv_demod.hhK4hj(ubjz)}(hhh](j)}(hN``drop_tslock_prob_on_low_snr`` probability of losing the lock due to low snr h](j)}(h``drop_tslock_prob_on_low_snr``h]j )}(hjyh]hdrop_tslock_prob_on_low_snr}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjwubah}(h]h ]h"]h$]h&]uh1jh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:495: ./drivers/media/test-drivers/vidtv/vidtv_demod.hhK+hjsubj)}(hhh]h)}(h-probability of losing the lock due to low snrh]h-probability of losing the lock due to low snr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK+hjubah}(h]h ]h"]h$]h&]uh1jhjsubeh}(h]h ]h"]h$]h&]uh1j~hjhK+hjpubj)}(hV``recover_tslock_prob_on_good_snr`` probability of recovering when the signal improvesh](j)}(h#``recover_tslock_prob_on_good_snr``h]j )}(hjh]hrecover_tslock_prob_on_good_snr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:495: ./drivers/media/test-drivers/vidtv/vidtv_demod.hhK,hjubj)}(hhh]h)}(h2probability of recovering when the signal improvesh]h2probability of recovering when the signal improves}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK,hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hjhK,hjpubeh}(h]h ]h"]h$]h&]uh1jyhj(ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:495: ./drivers/media/test-drivers/vidtv/vidtv_demod.hhK0hjhhubh)}(hThe configuration used to init the demodulator module, usually filled by a bridge driver. For vidtv, this is filled by vidtv_bridge before the demodulator module is probed.h]hThe configuration used to init the demodulator module, usually filled by a bridge driver. For vidtv, this is filled by vidtv_bridge before the demodulator module is probed.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:495: ./drivers/media/test-drivers/vidtv/vidtv_demod.hhK-hjhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jvidtv_demod_state (C struct)c.vidtv_demod_statehNtauh1jhjhhhNhNubj)}(hhh](j)}(hvidtv_demod_stateh]j )}(hstruct vidtv_demod_stateh](j)}(hjh]hstruct}(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.hhh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:495: ./drivers/media/test-drivers/vidtv/vidtv_demod.hhK4ubj")}(h h]h }(hj@hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hj.hhhj?hK4ubj3)}(hvidtv_demod_stateh]j9)}(hj,h]hvidtv_demod_state}(hjRhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjNubah}(h]h ](jKjLeh"]h$]h&]hhuh1j2hj.hhhj?hK4ubeh}(h]h ]h"]h$]h&]hhjVuh1j jWjXhj*hhhj?hK4ubah}(h]j%ah ](j\j]eh"]h$]h&]jajb)jchuh1jhj?hK4hj'hhubje)}(hhh]h)}(hThe demodulator stateh]hThe demodulator state}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:495: ./drivers/media/test-drivers/vidtv/vidtv_demod.hhK8hjqhhubah}(h]h ]h"]h$]h&]uh1jdhj'hhhj?hK4ubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1jhhhjhNhNubj)}(hX**Definition**:: struct vidtv_demod_state { struct dvb_frontend frontend; struct vidtv_demod_config config; enum fe_status status; u16 tuner_cnr; }; **Members** ``frontend`` The frontend structure allocated by the demod. ``config`` The config used to init the demod. ``status`` the demod status. ``tuner_cnr`` current S/N ratio for the signal carrierh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:495: ./drivers/media/test-drivers/vidtv/vidtv_demod.hhKhjubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:495: ./drivers/media/test-drivers/vidtv/vidtv_demod.hhKEhjubjz)}(hhh](j)}(h<``frontend`` The frontend structure allocated by the demod. h](j)}(h ``frontend``h]j )}(hjh]hfrontend}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:495: ./drivers/media/test-drivers/vidtv/vidtv_demod.hhK:hjubj)}(hhh]h)}(h.The frontend structure allocated by the demod.h]h.The frontend structure allocated by the demod.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK:hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hjhK:hjubj)}(h.``config`` The config used to init the demod. h](j)}(h ``config``h]j )}(hjh]hconfig}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:495: ./drivers/media/test-drivers/vidtv/vidtv_demod.hhK;hjubj)}(hhh]h)}(h"The config used to init the demod.h]h"The config used to init the demod.}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/hK;hj0ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hj/hK;hjubj)}(h``status`` the demod status. h](j)}(h ``status``h]j )}(hjSh]hstatus}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjQubah}(h]h ]h"]h$]h&]uh1jh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:495: ./drivers/media/test-drivers/vidtv/vidtv_demod.hhKubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:497: ./drivers/media/test-drivers/vidtv/vidtv_encoder.hhKhhj:ubj)}(hhh]h)}(h!The encoder buffer size, in bytesh]h!The encoder buffer size, in bytes}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjUhKhhjVubah}(h]h ]h"]h$]h&]uh1jhj:ubeh}(h]h ]h"]h$]h&]uh1j~hjUhKhhjubj)}(h@``encoder_buf_offset`` Our byte position in the encoder buffer. h](j)}(h``encoder_buf_offset``h]j )}(hjyh]hencoder_buf_offset}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjwubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:497: ./drivers/media/test-drivers/vidtv/vidtv_encoder.hhKihjsubj)}(hhh]h)}(h(Our byte position in the encoder buffer.h]h(Our byte position in the encoder buffer.O}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKihjubah}(h]h ]h"]h$]h&]uh1jhjsubeh}(h]h ]h"]h$]h&]uh1j~hjhKihjubj)}(h<``sample_count`` How many samples we have encoded in total. h](j)}(h``sample_count``h]j )}(hjh]h sample_count}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:497: ./drivers/media/test-drivers/vidtv/vidtv_encoder.hhKjhjubj)}(hhh]h)}(h*How many samples we have encoded in total.h]h*How many samples we have encoded in total.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKjhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hjhKjhjubj)}(hB``access_units`` encoder payload units, used for clock references h](j)}(h``access_units``h]j )}(hjh]h access_units}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:497: ./drivers/media/test-drivers/vidtv/vidtv_encoder.hhKkhjubj)}(hhh]h)}(h0encoder payload units, used for clock referencesh]h0encoder payload units, used for clock references}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKkhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hj hKkhjubj)}(hW``src_buf`` The source of raw data to be encoded, encoder might set a default if null. h](j)}(h ``src_buf``h]j )}(hj$ h]hsrc_buf}(hj& hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj" ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:497: ./drivers/media/test-drivers/vidtv/vidtv_encoder.hhKmhj ubj)}(hhh]h)}(hJThe source of raw data to be encoded, encoder might set a default if null.h]hJThe source of raw data to be encoded, encoder might set a default if null.}(hj= hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:497: ./drivers/media/test-drivers/vidtv/vidtv_encoder.hhKlhj: ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1j~hj9 hKmhjubj)}(h$``src_buf_sz`` size of **src_buf**. h](j)}(h``src_buf_sz``h]j )}(hj^ h]h src_buf_sz}(hj` hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj\ ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:497: ./drivers/media/test-drivers/vidtv/vidtv_encoder.hhKnhjX ubj)}(hhh]h)}(hsize of **src_buf**.h](hsize of }(hjw hhhNhNubj)}(h **src_buf**h]hsrc_buf}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjw ubh.}(hjw hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjs hKnhjt ubah}(h]h ]h"]h$]h&]uh1jhjX ubeh}(h]h ]h"]h$]h&]uh1j~hjs hKnhjubj)}(h6``src_buf_offset`` Our position in the source buffer. h](j)}(h``src_buf_offset``h]j )}(hj h]hsrc_buf_offset}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:497: ./drivers/media/test-drivers/vidtv/vidtv_encoder.hhKohj ubj)}(hhh]h)}(h"Our position in the source buffer.h]h"Our position in the source buffer.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKohj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1j~hj hKohjubj)}(hH``is_video_encoder`` Whether this a video encoder (as opposed to audio) h](j)}(h``is_video_encoder``h]j )}(hj h]his_video_encoder}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:497: ./drivers/media/test-drivers/vidtv/vidtv_encoder.hhKphj ubj)}(hhh]h)}(h2Whether this a video encoder (as opposed to audio)h]h2Whether this a video encoder (as opposed to audio)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKphj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1j~hj hKphjubj)}(h ``ctx`` Encoder-specific state. h](j)}(h``ctx``h]j )}(hj!h]hctx}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj!ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:497: ./drivers/media/test-drivers/vidtv/vidtv_encoder.hhKqhj!ubj)}(hhh]h)}(hEncoder-specific state.h]hEncoder-specific state.}(hj4!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj0!hKqhj1!ubah}(h]h ]h"]h$]h&]uh1jhj!ubeh}(h]h ]h"]h$]h&]uh1j~hj0!hKqhjubj)}(hN``stream_id`` Examples: Audio streams (0xc0-0xdf), Video streams (0xe0-0xef). h](j)}(h ``stream_id``h]j )}(hjT!h]h stream_id}(hjV!hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjR!ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:497: ./drivers/media/test-drivers/vidtv/vidtv_encoder.hhKshjN!ubj)}(hhh]h)}(h?Examples: Audio streams (0xc0-0xdf), Video streams (0xe0-0xef).h]h?Examples: Audio streams (0xc0-0xdf), Video streams (0xe0-0xef).}(hjm!hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:497: ./drivers/media/test-drivers/vidtv/vidtv_encoder.hhKrhjj!ubah}(h]h ]h"]h$]h&]uh1jhjN!ubeh}(h]h ]h"]h$]h&]uh1j~hji!hKshjubj)}(hH``es_pid`` The TS PID to use for the elementary stream in this encoder. h](j)}(h ``es_pid``h]j )}(hj!h]hes_pid}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj!ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:497: ./drivers/media/test-drivers/vidtv/vidtv_encoder.hhKthj!ubj)}(hhh]h)}(hhj&ubj)}(hhh]h)}(hThe SDT in use by the muxer.h]hThe SDT in use by the muxer.}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&hK>hj&ubah}(h]h ]h"]h$]h&]uh1jhj&ubeh}(h]h ]h"]h$]h&]uh1j~hj&hK>hjl&ubj)}(h%``nit`` The NIT in use by the muxer. h](j)}(h``nit``h]j )}(hj 'h]hnit}(hj"'hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj'ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhK?hj'ubj)}(hhh]h)}(hThe NIT in use by the muxer.h]hThe NIT in use by the muxer.}(hj9'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5'hK?hj6'ubah}(h]h ]h"]h$]h&]uh1jhj'ubeh}(h]h ]h"]h$]h&]uh1j~hj5'hK?hjl&ubj)}(h$``eit`` the EIT in use by the muxer.h](j)}(h``eit``h]j )}(hjY'h]heit}(hj['hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjW'ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhK?hjS'ubj)}(hhh]h)}(hthe EIT in use by the muxer.h]hthe EIT in use by the muxer.}(hjr'hhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhK@hjo'ubah}(h]h ]h"]h$]h&]uh1jhjS'ubeh}(h]h ]h"]h$]h&]uh1j~hjn'hK?hjl&ubeh}(h]h ]h"]h$]h&]uh1jyhj$&ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(h**Description**h]j)}(hj'h]h Description}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'ubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKChjhhubh)}(hHThis is used to store the PAT, PMT sections and SDT in use by the muxer.h]hHThis is used to store the PAT, PMT sections and SDT in use by the muxer.}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhK5hjhhubh)}(hThe muxer acquire these by looking into the hardcoded channels in vidtv_channel and then periodically sends the TS packets for them>h]hThe muxer acquire these by looking into the hardcoded channels in vidtv_channel and then periodically sends the TS packets for them>}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhK7hjhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jvidtv_mux_pid_ctx (C struct)c.vidtv_mux_pid_ctxhNtauh1jhjhhhNhNubj)}(hhh](j)}(hvidtv_mux_pid_ctxh]j )}(hstruct vidtv_mux_pid_ctxh](j)}(hjh]hstruct}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'hhh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhK=ubj")}(h h]h }(hj'hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hj'hhhj'hK=ubj3)}(hvidtv_mux_pid_ctxh]j9)}(hj'h]hvidtv_mux_pid_ctx}(hj (hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hj(ubah}(h]h ](jKjLeh"]h$]h&]hhuh1j2hj'hhhj'hK=ubeh}(h]h ]h"]h$]h&]hhjVuh1j jWjXhj'hhhj'hK=ubah}(h]j'ah ](j\j]eh"]h$]h&]jajb)jchuh1jhj'hK=hj'hhubje)}(hhh]h)}(h%Store the context for a given TS PID.h]h%Store the context for a given TS PID.}(hj+(hhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKKhj((hhubah}(h]h ]h"]h$]h&]uh1jdhj'hhhj'hK=ubeh}(h]h ](jstructeh"]h$]h&]jjjjC(jjC(jjjuh1jhhhjhNhNubj)}(hX**Definition**:: struct vidtv_mux_pid_ctx { u16 pid; u8 cc; struct hlist_node h; }; **Members** ``pid`` The TS PID. ``cc`` The continuity counter for this PID. It is incremented on every TS pack and it will wrap around at 0xf0. If the decoder notices a sudden jump in this counter this will trigger a discontinuity state. ``h`` This is embedded in a hash table, mapping pid -> vidtv_mux_pid_ctxh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjO(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjK(ubh:}(hjK(hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKOhjG(ubj)}(hNstruct vidtv_mux_pid_ctx { u16 pid; u8 cc; struct hlist_node h; };h]hNstruct vidtv_mux_pid_ctx { u16 pid; u8 cc; struct hlist_node h; };}hjh(sbah}(h]h ]h"]h$]h&]hhuh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKQhjG(ubh)}(h **Members**h]j)}(hjy(h]hMembers}(hj{(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjw(ubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKWhjG(ubjz)}(hhh](j)}(h``pid`` The TS PID. h](j)}(h``pid``h]j )}(hj(h]hpid}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj(ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKMhj(ubj)}(hhh]h)}(h The TS PID.h]h The TS PID.}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj(hKMhj(ubah}(h]h ]h"]h$]h&]uh1jhj(ubeh}(h]h ]h"]h$]h&]uh1j~hj(hKMhj(ubj)}(h``cc`` The continuity counter for this PID. It is incremented on every TS pack and it will wrap around at 0xf0. If the decoder notices a sudden jump in this counter this will trigger a discontinuity state. h](j)}(h``cc``h]j )}(hj(h]hcc}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj(ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKPhj(ubj)}(hhh]h)}(hThe continuity counter for this PID. It is incremented on every TS pack and it will wrap around at 0xf0. If the decoder notices a sudden jump in this counter this will trigger a discontinuity state.h]hThe continuity counter for this PID. It is incremented on every TS pack and it will wrap around at 0xf0. If the decoder notices a sudden jump in this counter this will trigger a discontinuity state.}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKNhj(ubah}(h]h ]h"]h$]h&]uh1jhj(ubeh}(h]h ]h"]h$]h&]uh1j~hj(hKPhj(ubj)}(hH``h`` This is embedded in a hash table, mapping pid -> vidtv_mux_pid_ctxh](j)}(h``h``h]j )}(hj )h]hh}(hj )hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj )ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKPhj)ubj)}(hhh]h)}(hBThis is embedded in a hash table, mapping pid -> vidtv_mux_pid_ctxh]hBThis is embedded in a hash table, mapping pid -> vidtv_mux_pid_ctx}(hj$)hhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKQhj!)ubah}(h]h ]h"]h$]h&]uh1jhj)ubeh}(h]h ]h"]h$]h&]uh1j~hj )hKPhj(ubeh}(h]h ]h"]h$]h&]uh1jyhjG(ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jvidtv_mux (C struct) c.vidtv_muxhNtauh1jhjhhhNhNubj)}(hhh](j)}(h vidtv_muxh]j )}(hstruct vidtv_muxh](j)}(hjh]hstruct}(hje)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhja)hhh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKWubj")}(h h]h }(hjs)hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hja)hhhjr)hKWubj3)}(h vidtv_muxh]j9)}(hj_)h]h vidtv_mux}(hj)hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hj)ubah}(h]h ](jKjLeh"]h$]h&]hhuh1j2hja)hhhjr)hKWubeh}(h]h ]h"]h$]h&]hhjVuh1j jWjXhj])hhhjr)hKWubah}(h]jX)ah ](j\j]eh"]h$]h&]jajb)jchuh1jhjr)hKWhjZ)hhubje)}(hhh]h)}(h;A muxer abstraction loosely based in libavcodec/mpegtsenc.ch]h;A muxer abstraction loosely based in libavcodec/mpegtsenc.c}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKYhj)hhubah}(h]h ]h"]h$]h&]uh1jdhjZ)hhhjr)hKWubeh}(h]h ](jstructeh"]h$]h&]jjjj)jj)jjjuh1jhhhjhNhNubj)}(hX**Definition**:: struct vidtv_mux { struct dvb_frontend *fe; struct device *dev; struct vidtv_mux_timing timing; u32 mux_rate_kbytes_sec; unsigned long pid_ctx[1 << (( 3) - 1)]; void (*on_new_packets_available_cb)(void *priv, u8 *buf, u32 npackets); u8 *mux_buf; u32 mux_buf_sz; u32 mux_buf_offset; struct vidtv_channel *channels; struct vidtv_mux_si si; u64 num_streamed_pcr; u64 num_streamed_si; struct work_struct mpeg_thread; bool streaming; u16 pcr_pid; u16 transport_stream_id; u16 network_id; char *network_name; void *priv; }; **Members** ``fe`` The frontend structure allocated by the muxer. ``dev`` pointer to struct device. ``timing`` Keeps track of timing related information. ``mux_rate_kbytes_sec`` The bit rate for the TS, in kbytes. ``pid_ctx`` A hash table to keep track of per-PID metadata. ``on_new_packets_available_cb`` A callback to inform of new TS packets ready. ``mux_buf`` A pointer to a buffer for this muxer. TS packets are stored there and then passed on to the bridge driver. ``mux_buf_sz`` The size for 'mux_buf'. ``mux_buf_offset`` The current offset into 'mux_buf'. ``channels`` The channels associated with this muxer. ``si`` Keeps track of the PSI context. ``num_streamed_pcr`` Number of PCR packets streamed. ``num_streamed_si`` The number of PSI packets streamed. ``mpeg_thread`` Thread responsible for the muxer loop. ``streaming`` whether 'mpeg_thread' is running. ``pcr_pid`` The TS PID used for the PSI packets. All channels will share the same PCR. ``transport_stream_id`` The transport stream ID ``network_id`` The network ID ``network_name`` The network name ``priv`` Private data.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/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhK]hj)ubj)}(hXVstruct vidtv_mux { struct dvb_frontend *fe; struct device *dev; struct vidtv_mux_timing timing; u32 mux_rate_kbytes_sec; unsigned long pid_ctx[1 << (( 3) - 1)]; void (*on_new_packets_available_cb)(void *priv, u8 *buf, u32 npackets); u8 *mux_buf; u32 mux_buf_sz; u32 mux_buf_offset; struct vidtv_channel *channels; struct vidtv_mux_si si; u64 num_streamed_pcr; u64 num_streamed_si; struct work_struct mpeg_thread; bool streaming; u16 pcr_pid; u16 transport_stream_id; u16 network_id; char *network_name; void *priv; };h]hXVstruct vidtv_mux { struct dvb_frontend *fe; struct device *dev; struct vidtv_mux_timing timing; u32 mux_rate_kbytes_sec; unsigned long pid_ctx[1 << (( 3) - 1)]; void (*on_new_packets_available_cb)(void *priv, u8 *buf, u32 npackets); u8 *mux_buf; u32 mux_buf_sz; u32 mux_buf_offset; struct vidtv_channel *channels; struct vidtv_mux_si si; u64 num_streamed_pcr; u64 num_streamed_si; struct work_struct mpeg_thread; bool streaming; u16 pcr_pid; u16 transport_stream_id; u16 network_id; char *network_name; void *priv; };}hj)sbah}(h]h ]h"]h$]h&]hhuh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhK_hj)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/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKvhj)ubjz)}(hhh](j)}(h6``fe`` The frontend structure allocated by the muxer. h](j)}(h``fe``h]j )}(hj*h]hfe}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj*ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhK[hj*ubj)}(hhh]h)}(h.The frontend structure allocated by the muxer.h]h.The frontend structure allocated by the muxer.}(hj-*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj)*hK[hj**ubah}(h]h ]h"]h$]h&]uh1jhj*ubeh}(h]h ]h"]h$]h&]uh1j~hj)*hK[hj *ubj)}(h"``dev`` pointer to struct device. h](j)}(h``dev``h]j )}(hjM*h]hdev}(hjO*hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjK*ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhK\hjG*ubj)}(hhh]h)}(hpointer to struct device.h]hpointer to struct device.}(hjf*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjb*hK\hjc*ubah}(h]h ]h"]h$]h&]uh1jhjG*ubeh}(h]h ]h"]h$]h&]uh1j~hjb*hK\hj *ubj)}(h6``timing`` Keeps track of timing related information. h](j)}(h ``timing``h]j )}(hj*h]htiming}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj*ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhK]hj*ubj)}(hhh]h)}(h*Keeps track of timing related information.h]h*Keeps track of timing related information.}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*hK]hj*ubah}(h]h ]h"]h$]h&]uh1jhj*ubeh}(h]h ]h"]h$]h&]uh1j~hj*hK]hj *ubj)}(h<``mux_rate_kbytes_sec`` The bit rate for the TS, in kbytes. h](j)}(h``mux_rate_kbytes_sec``h]j )}(hj*h]hmux_rate_kbytes_sec}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj*ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhK^hj*ubj)}(hhh]h)}(h#The bit rate for the TS, in kbytes.h]h#The bit rate for the TS, in kbytes.}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*hK^hj*ubah}(h]h ]h"]h$]h&]uh1jhj*ubeh}(h]h ]h"]h$]h&]uh1j~hj*hK^hj *ubj)}(h<``pid_ctx`` A hash table to keep track of per-PID metadata. h](j)}(h ``pid_ctx``h]j )}(hj*h]hpid_ctx}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj*ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhK_hj*ubj)}(hhh]h)}(h/A hash table to keep track of per-PID metadata.h]h/A hash table to keep track of per-PID metadata.}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj +hK_hj+ubah}(h]h ]h"]h$]h&]uh1jhj*ubeh}(h]h ]h"]h$]h&]uh1j~hj +hK_hj *ubj)}(hN``on_new_packets_available_cb`` A callback to inform of new TS packets ready. h](j)}(h``on_new_packets_available_cb``h]j )}(hj1+h]hon_new_packets_available_cb}(hj3+hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj/+ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhK`hj++ubj)}(hhh]h)}(h-A callback to inform of new TS packets ready.h]h-A callback to inform of new TS packets ready.}(hjJ+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjF+hK`hjG+ubah}(h]h ]h"]h$]h&]uh1jhj++ubeh}(h]h ]h"]h$]h&]uh1j~hjF+hK`hj *ubj)}(hw``mux_buf`` A pointer to a buffer for this muxer. TS packets are stored there and then passed on to the bridge driver. h](j)}(h ``mux_buf``h]j )}(hjj+h]hmux_buf}(hjl+hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjh+ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKbhjd+ubj)}(hhh]h)}(hjA pointer to a buffer for this muxer. TS packets are stored there and then passed on to the bridge driver.h]hjA pointer to a buffer for this muxer. TS packets are stored there and then passed on to the bridge driver.}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKahj+ubah}(h]h ]h"]h$]h&]uh1jhjd+ubeh}(h]h ]h"]h$]h&]uh1j~hj+hKbhj *ubj)}(h'``mux_buf_sz`` The size for 'mux_buf'. h](j)}(h``mux_buf_sz``h]j )}(hj+h]h mux_buf_sz}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj+ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKchj+ubj)}(hhh]h)}(hThe size for 'mux_buf'.h]hThe size for ‘mux_buf’.}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+hKchj+ubah}(h]h ]h"]h$]h&]uh1jhj+ubeh}(h]h ]h"]h$]h&]uh1j~hj+hKchj *ubj)}(h6``mux_buf_offset`` The current offset into 'mux_buf'. h](j)}(h``mux_buf_offset``h]j )}(hj+h]hmux_buf_offset}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj+ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKdhj+ubj)}(hhh]h)}(h"The current offset into 'mux_buf'.h]h&The current offset into ‘mux_buf’.}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+hKdhj+ubah}(h]h ]h"]h$]h&]uh1jhj+ubeh}(h]h ]h"]h$]h&]uh1j~hj+hKdhj *ubj)}(h6``channels`` The channels associated with this muxer. h](j)}(h ``channels``h]j )}(hj,h]hchannels}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj,ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKehj,ubj)}(hhh]h)}(h(The channels associated with this muxer.h]h(The channels associated with this muxer.}(hj/,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+,hKehj,,ubah}(h]h ]h"]h$]h&]uh1jhj,ubeh}(h]h ]h"]h$]h&]uh1j~hj+,hKehj *ubj)}(h'``si`` Keeps track of the PSI context. h](j)}(h``si``h]j )}(hjO,h]hsi}(hjQ,hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjM,ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKfhjI,ubj)}(hhh]h)}(hKeeps track of the PSI context.h]hKeeps track of the PSI context.}(hjh,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjd,hKfhje,ubah}(h]h ]h"]h$]h&]uh1jhjI,ubeh}(h]h ]h"]h$]h&]uh1j~hjd,hKfhj *ubj)}(h5``num_streamed_pcr`` Number of PCR packets streamed. h](j)}(h``num_streamed_pcr``h]j )}(hj,h]hnum_streamed_pcr}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj,ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKghj,ubj)}(hhh]h)}(hNumber of PCR packets streamed.h]hNumber of PCR packets streamed.}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,hKghj,ubah}(h]h ]h"]h$]h&]uh1jhj,ubeh}(h]h ]h"]h$]h&]uh1j~hj,hKghj *ubj)}(h8``num_streamed_si`` The number of PSI packets streamed. h](j)}(h``num_streamed_si``h]j )}(hj,h]hnum_streamed_si}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj,ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKhhj,ubj)}(hhh]h)}(h#The number of PSI packets streamed.h]h#The number of PSI packets streamed.}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,hKhhj,ubah}(h]h ]h"]h$]h&]uh1jhj,ubeh}(h]h ]h"]h$]h&]uh1j~hj,hKhhj *ubj)}(h7``mpeg_thread`` Thread responsible for the muxer loop. h](j)}(h``mpeg_thread``h]j )}(hj,h]h mpeg_thread}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj,ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKihj,ubj)}(hhh]h)}(h&Thread responsible for the muxer loop.h]h&Thread responsible for the muxer loop.}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj-hKihj-ubah}(h]h ]h"]h$]h&]uh1jhj,ubeh}(h]h ]h"]h$]h&]uh1j~hj-hKihj *ubj)}(h0``streaming`` whether 'mpeg_thread' is running. h](j)}(h ``streaming``h]j )}(hj3-h]h streaming}(hj5-hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj1-ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKjhj--ubj)}(hhh]h)}(h!whether 'mpeg_thread' is running.h]h%whether ‘mpeg_thread’ is running.}(hjL-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjH-hKjhjI-ubah}(h]h ]h"]h$]h&]uh1jhj--ubeh}(h]h ]h"]h$]h&]uh1j~hjH-hKjhj *ubj)}(hW``pcr_pid`` The TS PID used for the PSI packets. All channels will share the same PCR. h](j)}(h ``pcr_pid``h]j )}(hjl-h]hpcr_pid}(hjn-hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjj-ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKlhjf-ubj)}(hhh]h)}(hJThe TS PID used for the PSI packets. All channels will share the same PCR.h]hJThe TS PID used for the PSI packets. All channels will share the same PCR.}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKkhj-ubah}(h]h ]h"]h$]h&]uh1jhjf-ubeh}(h]h ]h"]h$]h&]uh1j~hj-hKlhj *ubj)}(h0``transport_stream_id`` The transport stream ID h](j)}(h``transport_stream_id``h]j )}(hj-h]htransport_stream_id}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj-ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKmhj-ubj)}(hhh]h)}(hThe transport stream IDh]hThe transport stream ID}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj-hKmhj-ubah}(h]h ]h"]h$]h&]uh1jhj-ubeh}(h]h ]h"]h$]h&]uh1j~hj-hKmhj *ubj)}(h``network_id`` The network ID h](j)}(h``network_id``h]j )}(hj-h]h network_id}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj-ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKnhj-ubj)}(hhh]h)}(hThe network IDh]hThe network ID}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj-hKnhj-ubah}(h]h ]h"]h$]h&]uh1jhj-ubeh}(h]h ]h"]h$]h&]uh1j~hj-hKnhj *ubj)}(h"``network_name`` The network name h](j)}(h``network_name``h]j )}(hj.h]h network_name}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj.ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKohj.ubj)}(hhh]h)}(hThe network nameh]hThe network name}(hj1.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj-.hKohj..ubah}(h]h ]h"]h$]h&]uh1jhj.ubeh}(h]h ]h"]h$]h&]uh1j~hj-.hKohj *ubj)}(h``priv`` Private data.h](j)}(h``priv``h]j )}(hjQ.h]hpriv}(hjS.hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjO.ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKohjK.ubj)}(hhh]h)}(h Private data.h]h Private data.}(hjj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKphjg.ubah}(h]h ]h"]h$]h&]uh1jhjK.ubeh}(h]h ]h"]h$]h&]uh1j~hjf.hKohj *ubeh}(h]h ]h"]h$]h&]uh1jyhj)ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jvidtv_mux_init_args (C struct)c.vidtv_mux_init_argshNtauh1jhjhhhNhNubj)}(hhh](j)}(hvidtv_mux_init_argsh]j )}(hstruct vidtv_mux_init_argsh](j)}(hjh]hstruct}(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.hhh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKvubj")}(h h]h }(hj.hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hj.hhhj.hKvubj3)}(hvidtv_mux_init_argsh]j9)}(hj.h]hvidtv_mux_init_args}(hj.hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hj.ubah}(h]h ](jKjLeh"]h$]h&]hhuh1j2hj.hhhj.hKvubeh}(h]h ]h"]h$]h&]hhjVuh1j jWjXhj.hhhj.hKvubah}(h]j.ah ](j\j]eh"]h$]h&]jajb)jchuh1jhj.hKvhj.hhubje)}(hhh]h)}(h!Arguments used to inix the muxer.h]h!Arguments used to inix the muxer.}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKhj.hhubah}(h]h ]h"]h$]h&]uh1jdhj.hhhj.hKvubeh}(h]h ](jstructeh"]h$]h&]jjjj/jj/jjjuh1jhhhjhNhNubj)}(hX**Definition**:: struct vidtv_mux_init_args { u32 mux_rate_kbytes_sec; void (*on_new_packets_available_cb)(void *priv, u8 *buf, u32 npackets); u32 mux_buf_sz; u64 pcr_period_usecs; u64 si_period_usecs; u16 pcr_pid; u16 transport_stream_id; struct vidtv_channel *channels; u16 network_id; char *network_name; void *priv; }; **Members** ``mux_rate_kbytes_sec`` The bit rate for the TS, in kbytes. ``on_new_packets_available_cb`` A callback to inform of new TS packets ready. ``mux_buf_sz`` The size for 'mux_buf'. ``pcr_period_usecs`` How often we should send PCR packets. ``si_period_usecs`` How often we should send PSI packets. ``pcr_pid`` The TS PID used for the PSI packets. All channels will share the same PCR. ``transport_stream_id`` The transport stream ID ``channels`` an optional list of channels to use ``network_id`` The network ID ``network_name`` The network name ``priv`` Private data.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/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKhj /ubj)}(hX]struct vidtv_mux_init_args { u32 mux_rate_kbytes_sec; void (*on_new_packets_available_cb)(void *priv, u8 *buf, u32 npackets); u32 mux_buf_sz; u64 pcr_period_usecs; u64 si_period_usecs; u16 pcr_pid; u16 transport_stream_id; struct vidtv_channel *channels; u16 network_id; char *network_name; void *priv; };h]hX]struct vidtv_mux_init_args { u32 mux_rate_kbytes_sec; void (*on_new_packets_available_cb)(void *priv, u8 *buf, u32 npackets); u32 mux_buf_sz; u64 pcr_period_usecs; u64 si_period_usecs; u16 pcr_pid; u16 transport_stream_id; struct vidtv_channel *channels; u16 network_id; char *network_name; void *priv; };}hj*/sbah}(h]h ]h"]h$]h&]hhuh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKhj /ubh)}(h **Members**h]j)}(hj;/h]hMembers}(hj=/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9/ubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKhj /ubjz)}(hhh](j)}(h<``mux_rate_kbytes_sec`` The bit rate for the TS, in kbytes. h](j)}(h``mux_rate_kbytes_sec``h]j )}(hjZ/h]hmux_rate_kbytes_sec}(hj\/hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjX/ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKhjT/ubj)}(hhh]h)}(h#The bit rate for the TS, in kbytes.h]h#The bit rate for the TS, in kbytes.}(hjs/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjo/hKhjp/ubah}(h]h ]h"]h$]h&]uh1jhjT/ubeh}(h]h ]h"]h$]h&]uh1j~hjo/hKhjQ/ubj)}(hN``on_new_packets_available_cb`` A callback to inform of new TS packets ready. h](j)}(h``on_new_packets_available_cb``h]j )}(hj/h]hon_new_packets_available_cb}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj/ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKhj/ubj)}(hhh]h)}(h-A callback to inform of new TS packets ready.h]h-A callback to inform of new TS packets ready.}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/hKhj/ubah}(h]h ]h"]h$]h&]uh1jhj/ubeh}(h]h ]h"]h$]h&]uh1j~hj/hKhjQ/ubj)}(h'``mux_buf_sz`` The size for 'mux_buf'. h](j)}(h``mux_buf_sz``h]j )}(hj/h]h mux_buf_sz}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj/ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKhj/ubj)}(hhh]h)}(hThe size for 'mux_buf'.h]hThe size for ‘mux_buf’.}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/hKhj/ubah}(h]h ]h"]h$]h&]uh1jhj/ubeh}(h]h ]h"]h$]h&]uh1j~hj/hKhjQ/ubj)}(h;``pcr_period_usecs`` How often we should send PCR packets. h](j)}(h``pcr_period_usecs``h]j )}(hj0h]hpcr_period_usecs}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj0ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKhj/ubj)}(hhh]h)}(h%How often we should send PCR packets.h]h%How often we should send PCR packets.}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj0hKhj0ubah}(h]h ]h"]h$]h&]uh1jhj/ubeh}(h]h ]h"]h$]h&]uh1j~hj0hKhjQ/ubj)}(h:``si_period_usecs`` How often we should send PSI packets. h](j)}(h``si_period_usecs``h]j )}(hj>0h]hsi_period_usecs}(hj@0hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj<0ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKhj80ubj)}(hhh]h)}(h%How often we should send PSI packets.h]h%How often we should send PSI packets.}(hjW0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjS0hKhjT0ubah}(h]h ]h"]h$]h&]uh1jhj80ubeh}(h]h ]h"]h$]h&]uh1j~hjS0hKhjQ/ubj)}(hW``pcr_pid`` The TS PID used for the PSI packets. All channels will share the same PCR. h](j)}(h ``pcr_pid``h]j )}(hjw0h]hpcr_pid}(hjy0hhhNhNubah}(h]h ]h"]h$]h&]uh1j hju0ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKhjq0ubj)}(hhh]h)}(hJThe TS PID used for the PSI packets. All channels will share the same PCR.h]hJThe TS PID used for the PSI packets. All channels will share the same PCR.}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKhj0ubah}(h]h ]h"]h$]h&]uh1jhjq0ubeh}(h]h ]h"]h$]h&]uh1j~hj0hKhjQ/ubj)}(h0``transport_stream_id`` The transport stream ID h](j)}(h``transport_stream_id``h]j )}(hj0h]htransport_stream_id}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj0ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKhj0ubj)}(hhh]h)}(hThe transport stream IDh]hThe transport stream ID}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj0hKhj0ubah}(h]h ]h"]h$]h&]uh1jhj0ubeh}(h]h ]h"]h$]h&]uh1j~hj0hKhjQ/ubj)}(h1``channels`` an optional list of channels to use h](j)}(h ``channels``h]j )}(hj0h]hchannels}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj0ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKhj0ubj)}(hhh]h)}(h#an optional list of channels to useh]h#an optional list of channels to use}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj0hKhj1ubah}(h]h ]h"]h$]h&]uh1jhj0ubeh}(h]h ]h"]h$]h&]uh1j~hj0hKhjQ/ubj)}(h``network_id`` The network ID h](j)}(h``network_id``h]j )}(hj#1h]h network_id}(hj%1hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj!1ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKhj1ubj)}(hhh]h)}(hThe network IDh]hThe network ID}(hj<1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj81hKhj91ubah}(h]h ]h"]h$]h&]uh1jhj1ubeh}(h]h ]h"]h$]h&]uh1j~hj81hKhjQ/ubj)}(h"``network_name`` The network name h](j)}(h``network_name``h]j )}(hj\1h]h network_name}(hj^1hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjZ1ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKhjV1ubj)}(hhh]h)}(hThe network nameh]hThe network name}(hju1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjq1hKhjr1ubah}(h]h ]h"]h$]h&]uh1jhjV1ubeh}(h]h ]h"]h$]h&]uh1j~hjq1hKhjQ/ubj)}(h``priv`` Private data.h](j)}(h``priv``h]j )}(hj1h]hpriv}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj1ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKhj1ubj)}(hhh]h)}(h Private data.h]h Private data.}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKhj1ubah}(h]h ]h"]h$]h&]uh1jhj1ubeh}(h]h ]h"]h$]h&]uh1j~hj1hKhjQ/ubeh}(h]h ]h"]h$]h&]uh1jyhj /ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j pes_header_write_args (C struct)c.pes_header_write_argshNtauh1jhjhhhNhNubj)}(hhh](j)}(hpes_header_write_argsh]j )}(hstruct pes_header_write_argsh](j)}(hjh]hstruct}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1hhh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKubj")}(h h]h }(hj1hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hj1hhhj1hKubj3)}(hpes_header_write_argsh]j9)}(hj1h]hpes_header_write_args}(hj2hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hj 2ubah}(h]h ](jKjLeh"]h$]h&]hhuh1j2hj1hhhj1hKubeh}(h]h ]h"]h$]h&]hhjVuh1j jWjXhj1hhhj1hKubah}(h]j1ah ](j\j]eh"]h$]h&]jajb)jchuh1jhj1hKhj1hhubje)}(hhh]h)}(h Arguments to write a PES header.h]h Arguments to write a PES header.}(hj12hhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKLhj.2hhubah}(h]h ]h"]h$]h&]uh1jdhj1hhhj1hKubeh}(h]h ](jstructeh"]h$]h&]jjjjI2jjI2jjjuh1jhhhjhNhNubj)}(hX**Definition**:: struct pes_header_write_args { void *dest_buf; u32 dest_offset; u32 dest_buf_sz; u32 encoder_id; bool send_pts; u64 pts; bool send_dts; u64 dts; u16 stream_id; u32 n_pes_h_s_bytes; u32 access_unit_len; }; **Members** ``dest_buf`` The buffer to write into. ``dest_offset`` where to start writing in the dest_buffer. ``dest_buf_sz`` The size of the dest_buffer ``encoder_id`` Encoder id (see vidtv_encoder.h) ``send_pts`` Should we send PTS? ``pts`` PTS value to send. ``send_dts`` Should we send DTS? ``dts`` DTS value to send. ``stream_id`` The stream id to use. Ex: Audio streams (0xc0-0xdf), Video streams (0xe0-0xef). ``n_pes_h_s_bytes`` Padding bytes. Might be used by an encoder if needed, gets discarded by the decoder. ``access_unit_len`` The size of _one_ access unit (with any headers it might need)h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjU2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQ2ubh:}(hjQ2hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKPhjM2ubj)}(hstruct pes_header_write_args { void *dest_buf; u32 dest_offset; u32 dest_buf_sz; u32 encoder_id; bool send_pts; u64 pts; bool send_dts; u64 dts; u16 stream_id; u32 n_pes_h_s_bytes; u32 access_unit_len; };h]hstruct pes_header_write_args { void *dest_buf; u32 dest_offset; u32 dest_buf_sz; u32 encoder_id; bool send_pts; u64 pts; bool send_dts; u64 dts; u16 stream_id; u32 n_pes_h_s_bytes; u32 access_unit_len; };}hjn2sbah}(h]h ]h"]h$]h&]hhuh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKRhjM2ubh)}(h **Members**h]j)}(hj2h]hMembers}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj}2ubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhK`hjM2ubjz)}(hhh](j)}(h'``dest_buf`` The buffer to write into. h](j)}(h ``dest_buf``h]j )}(hj2h]hdest_buf}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj2ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKNhj2ubj)}(hhh]h)}(hThe buffer to write into.h]hThe buffer to write into.}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj2hKNhj2ubah}(h]h ]h"]h$]h&]uh1jhj2ubeh}(h]h ]h"]h$]h&]uh1j~hj2hKNhj2ubj)}(h;``dest_offset`` where to start writing in the dest_buffer. h](j)}(h``dest_offset``h]j )}(hj2h]h dest_offset}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj2ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKOhj2ubj)}(hhh]h)}(h*where to start writing in the dest_buffer.h]h*where to start writing in the dest_buffer.}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj2hKOhj2ubah}(h]h ]h"]h$]h&]uh1jhj2ubeh}(h]h ]h"]h$]h&]uh1j~hj2hKOhj2ubj)}(h,``dest_buf_sz`` The size of the dest_buffer h](j)}(h``dest_buf_sz``h]j )}(hj3h]h dest_buf_sz}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj3ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKPhj 3ubj)}(hhh]h)}(hThe size of the dest_bufferh]hThe size of the dest_buffer}(hj)3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj%3hKPhj&3ubah}(h]h ]h"]h$]h&]uh1jhj 3ubeh}(h]h ]h"]h$]h&]uh1j~hj%3hKPhj2ubj)}(h0``encoder_id`` Encoder id (see vidtv_encoder.h) h](j)}(h``encoder_id``h]j )}(hjI3h]h encoder_id}(hjK3hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjG3ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKQhjC3ubj)}(hhh]h)}(h Encoder id (see vidtv_encoder.h)h]h Encoder id (see vidtv_encoder.h)}(hjb3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj^3hKQhj_3ubah}(h]h ]h"]h$]h&]uh1jhjC3ubeh}(h]h ]h"]h$]h&]uh1j~hj^3hKQhj2ubj)}(h!``send_pts`` Should we send PTS? h](j)}(h ``send_pts``h]j )}(hj3h]hsend_pts}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj3ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKRhj|3ubj)}(hhh]h)}(hShould we send PTS?h]hShould we send PTS?}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj3hKRhj3ubah}(h]h ]h"]h$]h&]uh1jhj|3ubeh}(h]h ]h"]h$]h&]uh1j~hj3hKRhj2ubj)}(h``pts`` PTS value to send. h](j)}(h``pts``h]j )}(hj3h]hpts}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj3ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKShj3ubj)}(hhh]h)}(hPTS value to send.h]hPTS value to send.}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj3hKShj3ubah}(h]h ]h"]h$]h&]uh1jhj3ubeh}(h]h ]h"]h$]h&]uh1j~hj3hKShj2ubj)}(h!``send_dts`` Should we send DTS? h](j)}(h ``send_dts``h]j )}(hj3h]hsend_dts}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj3ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKThj3ubj)}(hhh]h)}(hShould we send DTS?h]hShould we send DTS?}(hj 4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj 4hKThj 4ubah}(h]h ]h"]h$]h&]uh1jhj3ubeh}(h]h ]h"]h$]h&]uh1j~hj 4hKThj2ubj)}(h``dts`` DTS value to send. h](j)}(h``dts``h]j )}(hj-4h]hdts}(hj/4hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj+4ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKUhj'4ubj)}(hhh]h)}(hDTS value to send.h]hDTS value to send.}(hjF4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjB4hKUhjC4ubah}(h]h ]h"]h$]h&]uh1jhj'4ubeh}(h]h ]h"]h$]h&]uh1j~hjB4hKUhj2ubj)}(h^``stream_id`` The stream id to use. Ex: Audio streams (0xc0-0xdf), Video streams (0xe0-0xef). h](j)}(h ``stream_id``h]j )}(hjf4h]h stream_id}(hjh4hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjd4ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKWhj`4ubj)}(hhh]h)}(hOThe stream id to use. Ex: Audio streams (0xc0-0xdf), Video streams (0xe0-0xef).h]hOThe stream id to use. Ex: Audio streams (0xc0-0xdf), Video streams (0xe0-0xef).}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKVhj|4ubah}(h]h ]h"]h$]h&]uh1jhj`4ubeh}(h]h ]h"]h$]h&]uh1j~hj{4hKWhj2ubj)}(hi``n_pes_h_s_bytes`` Padding bytes. Might be used by an encoder if needed, gets discarded by the decoder. h](j)}(h``n_pes_h_s_bytes``h]j )}(hj4h]hn_pes_h_s_bytes}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj4ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKYhj4ubj)}(hhh]h)}(hTPadding bytes. Might be used by an encoder if needed, gets discarded by the decoder.h]hTPadding bytes. Might be used by an encoder if needed, gets discarded by the decoder.}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKXhj4ubah}(h]h ]h"]h$]h&]uh1jhj4ubeh}(h]h ]h"]h$]h&]uh1j~hj4hKYhj2ubj)}(hR``access_unit_len`` The size of _one_ access unit (with any headers it might need)h](j)}(h``access_unit_len``h]j )}(hj4h]haccess_unit_len}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj4ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKYhj4ubj)}(hhh]h)}(h>The size of _one_ access unit (with any headers it might need)h]h>The size of _one_ access unit (with any headers it might need)}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKZhj4ubah}(h]h ]h"]h$]h&]uh1jhj4ubeh}(h]h ]h"]h$]h&]uh1j~hj4hKYhj2ubeh}(h]h ]h"]h$]h&]uh1jyhjM2ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j#pes_ts_header_write_args (C struct)c.pes_ts_header_write_argshNtauh1jhjhhhNhNubj)}(hhh](j)}(hpes_ts_header_write_argsh]j )}(hstruct pes_ts_header_write_argsh](j)}(hjh]hstruct}(hj45hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj05hhh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhK`ubj")}(h h]h }(hjB5hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hj05hhhjA5hK`ubj3)}(hpes_ts_header_write_argsh]j9)}(hj.5h]hpes_ts_header_write_args}(hjT5hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjP5ubah}(h]h ](jKjLeh"]h$]h&]hhuh1j2hj05hhhjA5hK`ubeh}(h]h ]h"]h$]h&]hhjVuh1j jWjXhj,5hhhjA5hK`ubah}(h]j'5ah ](j\j]eh"]h$]h&]jajb)jchuh1jhjA5hK`hj)5hhubje)}(hhh]h)}(hArguments to write a TS header.h]hArguments to write a TS header.}(hjv5hhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKnhjs5hhubah}(h]h ]h"]h$]h&]uh1jdhj)5hhhjA5hK`ubeh}(h]h ](jstructeh"]h$]h&]jjjj5jj5jjjuh1jhhhjhNhNubj)}(hX**Definition**:: struct pes_ts_header_write_args { void *dest_buf; u32 dest_offset; u32 dest_buf_sz; u16 pid; u8 *continuity_counter; bool wrote_pes_header; u32 n_stuffing_bytes; u64 pcr; }; **Members** ``dest_buf`` The buffer to write into. ``dest_offset`` where to start writing in the dest_buffer. ``dest_buf_sz`` The size of the dest_buffer ``pid`` The PID to use for the TS packets. ``continuity_counter`` Incremented on every new TS packet. ``wrote_pes_header`` Flag to indicate that the PES header was written ``n_stuffing_bytes`` Padding bytes. Might be used by an encoder if needed, gets discarded by the decoder. ``pcr`` counter driven by a 27Mhz clock.h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubh:}(hj5hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKrhj5ubj)}(hstruct pes_ts_header_write_args { void *dest_buf; u32 dest_offset; u32 dest_buf_sz; u16 pid; u8 *continuity_counter; bool wrote_pes_header; u32 n_stuffing_bytes; u64 pcr; };h]hstruct pes_ts_header_write_args { void *dest_buf; u32 dest_offset; u32 dest_buf_sz; u16 pid; u8 *continuity_counter; bool wrote_pes_header; u32 n_stuffing_bytes; u64 pcr; };}hj5sbah}(h]h ]h"]h$]h&]hhuh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKthj5ubh)}(h **Members**h]j)}(hj5h]hMembers}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKhj5ubjz)}(hhh](j)}(h'``dest_buf`` The buffer to write into. h](j)}(h ``dest_buf``h]j )}(hj5h]hdest_buf}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj5ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKphj5ubj)}(hhh]h)}(hThe buffer to write into.h]hThe buffer to write into.}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5hKphj5ubah}(h]h ]h"]h$]h&]uh1jhj5ubeh}(h]h ]h"]h$]h&]uh1j~hj5hKphj5ubj)}(h;``dest_offset`` where to start writing in the dest_buffer. h](j)}(h``dest_offset``h]j )}(hj6h]h dest_offset}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj6ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKqhj6ubj)}(hhh]h)}(h*where to start writing in the dest_buffer.h]h*where to start writing in the dest_buffer.}(hj56hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj16hKqhj26ubah}(h]h ]h"]h$]h&]uh1jhj6ubeh}(h]h ]h"]h$]h&]uh1j~hj16hKqhj5ubj)}(h,``dest_buf_sz`` The size of the dest_buffer h](j)}(h``dest_buf_sz``h]j )}(hjU6h]h dest_buf_sz}(hjW6hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjS6ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKrhjO6ubj)}(hhh]h)}(hThe size of the dest_bufferh]hThe size of the dest_buffer}(hjn6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjj6hKrhjk6ubah}(h]h ]h"]h$]h&]uh1jhjO6ubeh}(h]h ]h"]h$]h&]uh1j~hjj6hKrhj5ubj)}(h+``pid`` The PID to use for the TS packets. h](j)}(h``pid``h]j )}(hj6h]hpid}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj6ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKshj6ubj)}(hhh]h)}(h"The PID to use for the TS packets.h]h"The PID to use for the TS packets.}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj6hKshj6ubah}(h]h ]h"]h$]h&]uh1jhj6ubeh}(h]h ]h"]h$]h&]uh1j~hj6hKshj5ubj)}(h;``continuity_counter`` Incremented on every new TS packet. h](j)}(h``continuity_counter``h]j )}(hj6h]hcontinuity_counter}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj6ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKthj6ubj)}(hhh]h)}(h#Incremented on every new TS packet.h]h#Incremented on every new TS packet.}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj6hKthj6ubah}(h]h ]h"]h$]h&]uh1jhj6ubeh}(h]h ]h"]h$]h&]uh1j~hj6hKthj5ubj)}(hF``wrote_pes_header`` Flag to indicate that the PES header was written h](j)}(h``wrote_pes_header``h]j )}(hj7h]hwrote_pes_header}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj6ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKuhj6ubj)}(hhh]h)}(h0Flag to indicate that the PES header was writtenh]h0Flag to indicate that the PES header was written}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj7hKuhj7ubah}(h]h ]h"]h$]h&]uh1jhj6ubeh}(h]h ]h"]h$]h&]uh1j~hj7hKuhj5ubj)}(hj``n_stuffing_bytes`` Padding bytes. Might be used by an encoder if needed, gets discarded by the decoder. h](j)}(h``n_stuffing_bytes``h]j )}(hj97h]hn_stuffing_bytes}(hj;7hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj77ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKwhj37ubj)}(hhh]h)}(hTPadding bytes. Might be used by an encoder if needed, gets discarded by the decoder.h]hTPadding bytes. Might be used by an encoder if needed, gets discarded by the decoder.}(hjR7hhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKvhjO7ubah}(h]h ]h"]h$]h&]uh1jhj37ubeh}(h]h ]h"]h$]h&]uh1j~hjN7hKwhj5ubj)}(h(``pcr`` counter driven by a 27Mhz clock.h](j)}(h``pcr``h]j )}(hjs7h]hpcr}(hju7hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjq7ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKwhjm7ubj)}(hhh]h)}(h counter driven by a 27Mhz clock.h]h counter driven by a 27Mhz clock.}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKxhj7ubah}(h]h ]h"]h$]h&]uh1jhjm7ubeh}(h]h ]h"]h$]h&]uh1j~hj7hKwhj5ubeh}(h]h ]h"]h$]h&]uh1jyhj5ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jpes_write_args (C struct)c.pes_write_argshNtauh1jhjhhhNhNubj)}(hhh](j)}(hpes_write_argsh]j )}(hstruct pes_write_argsh](j)}(hjh]hstruct}(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7hhh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhK~ubj")}(h h]h }(hj7hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hj7hhhj7hK~ubj3)}(hpes_write_argsh]j9)}(hj7h]hpes_write_args}(hj7hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hj7ubah}(h]h ](jKjLeh"]h$]h&]hhuh1j2hj7hhhj7hK~ubeh}(h]h ]h"]h$]h&]hhjVuh1j jWjXhj7hhhj7hK~ubah}(h]j7ah ](j\j]eh"]h$]h&]jajb)jchuh1jhj7hK~hj7hhubje)}(hhh]h)}(hArguments for the packetizer.h]hArguments for the packetizer.}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKhj 8hhubah}(h]h ]h"]h$]h&]uh1jdhj7hhhj7hK~ubeh}(h]h ](jstructeh"]h$]h&]jjjj'8jj'8jjjuh1jhhhjhNhNubj)}(hX**Definition**:: struct pes_write_args { void *dest_buf; void *from; u32 access_unit_len; u32 dest_offset; u32 dest_buf_sz; u16 pid; u32 encoder_id; u8 *continuity_counter; u16 stream_id; bool send_pts; u64 pts; bool send_dts; u64 dts; u32 n_pes_h_s_bytes; u64 pcr; }; **Members** ``dest_buf`` The buffer to write into. ``from`` A pointer to the encoder buffer containing one access unit. ``access_unit_len`` The size of _one_ access unit (with any headers it might need) ``dest_offset`` where to start writing in the dest_buffer. ``dest_buf_sz`` The size of the dest_buffer ``pid`` The PID to use for the TS packets. ``encoder_id`` Encoder id (see vidtv_encoder.h) ``continuity_counter`` Incremented on every new TS packet. ``stream_id`` The stream id to use. Ex: Audio streams (0xc0-0xdf), Video streams (0xe0-0xef). ``send_pts`` Should we send PTS? ``pts`` PTS value to send. ``send_dts`` Should we send DTS? ``dts`` DTS value to send. ``n_pes_h_s_bytes`` Padding bytes. Might be used by an encoder if needed, gets discarded by the decoder. ``pcr`` counter driven by a 27Mhz clock.h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj38hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/8ubh:}(hj/8hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKhj+8ubj)}(hX7struct pes_write_args { void *dest_buf; void *from; u32 access_unit_len; u32 dest_offset; u32 dest_buf_sz; u16 pid; u32 encoder_id; u8 *continuity_counter; u16 stream_id; bool send_pts; u64 pts; bool send_dts; u64 dts; u32 n_pes_h_s_bytes; u64 pcr; };h]hX7struct pes_write_args { void *dest_buf; void *from; u32 access_unit_len; u32 dest_offset; u32 dest_buf_sz; u16 pid; u32 encoder_id; u8 *continuity_counter; u16 stream_id; bool send_pts; u64 pts; bool send_dts; u64 dts; u32 n_pes_h_s_bytes; u64 pcr; };}hjL8sbah}(h]h ]h"]h$]h&]hhuh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKhj+8ubh)}(h **Members**h]j)}(hj]8h]hMembers}(hj_8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[8ubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKhj+8ubjz)}(hhh](j)}(h'``dest_buf`` The buffer to write into. h](j)}(h ``dest_buf``h]j )}(hj|8h]hdest_buf}(hj~8hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjz8ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKhjv8ubj)}(hhh]h)}(hThe buffer to write into.h]hThe buffer to write into.}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj8hKhj8ubah}(h]h ]h"]h$]h&]uh1jhjv8ubeh}(h]h ]h"]h$]h&]uh1j~hj8hKhjs8ubj)}(hE``from`` A pointer to the encoder buffer containing one access unit. h](j)}(h``from``h]j )}(hj8h]hfrom}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj8ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKhj8ubj)}(hhh]h)}(h;A pointer to the encoder buffer containing one access unit.h]h;A pointer to the encoder buffer containing one access unit.}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj8hKhj8ubah}(h]h ]h"]h$]h&]uh1jhj8ubeh}(h]h ]h"]h$]h&]uh1j~hj8hKhjs8ubj)}(hS``access_unit_len`` The size of _one_ access unit (with any headers it might need) h](j)}(h``access_unit_len``h]j )}(hj8h]haccess_unit_len}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj8ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKhj8ubj)}(hhh]h)}(h>The size of _one_ access unit (with any headers it might need)h]h>The size of _one_ access unit (with any headers it might need)}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9hKhj9ubah}(h]h ]h"]h$]h&]uh1jhj8ubeh}(h]h ]h"]h$]h&]uh1j~hj9hKhjs8ubj)}(h;``dest_offset`` where to start writing in the dest_buffer. h](j)}(h``dest_offset``h]j )}(hj'9h]h dest_offset}(hj)9hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj%9ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKhj!9ubj)}(hhh]h)}(h*where to start writing in the dest_buffer.h]h*where to start writing in the dest_buffer.}(hj@9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj<9hKhj=9ubah}(h]h ]h"]h$]h&]uh1jhj!9ubeh}(h]h ]h"]h$]h&]uh1j~hj<9hKhjs8ubj)}(h,``dest_buf_sz`` The size of the dest_buffer h](j)}(h``dest_buf_sz``h]j )}(hj`9h]h dest_buf_sz}(hjb9hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj^9ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKhjZ9ubj)}(hhh]h)}(hThe size of the dest_bufferh]hThe size of the dest_buffer}(hjy9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhju9hKhjv9ubah}(h]h ]h"]h$]h&]uh1jhjZ9ubeh}(h]h ]h"]h$]h&]uh1j~hju9hKhjs8ubj)}(h+``pid`` The PID to use for the TS packets. h](j)}(h``pid``h]j )}(hj9h]hpid}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj9ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKhj9ubj)}(hhh]h)}(h"The PID to use for the TS packets.h]h"The PID to use for the TS packets.}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9hKhj9ubah}(h]h ]h"]h$]h&]uh1jhj9ubeh}(h]h ]h"]h$]h&]uh1j~hj9hKhjs8ubj)}(h0``encoder_id`` Encoder id (see vidtv_encoder.h) h](j)}(h``encoder_id``h]j )}(hj9h]h encoder_id}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj9ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKhj9ubj)}(hhh]h)}(h Encoder id (see vidtv_encoder.h)h]h Encoder id (see vidtv_encoder.h)}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9hKhj9ubah}(h]h ]h"]h$]h&]uh1jhj9ubeh}(h]h ]h"]h$]h&]uh1j~hj9hKhjs8ubj)}(h;``continuity_counter`` Incremented on every new TS packet. h](j)}(h``continuity_counter``h]j )}(hj :h]hcontinuity_counter}(hj :hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj :ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKhj:ubj)}(hhh]h)}(h#Incremented on every new TS packet.h]h#Incremented on every new TS packet.}(hj$:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj :hKhj!:ubah}(h]h ]h"]h$]h&]uh1jhj:ubeh}(h]h ]h"]h$]h&]uh1j~hj :hKhjs8ubj)}(h^``stream_id`` The stream id to use. Ex: Audio streams (0xc0-0xdf), Video streams (0xe0-0xef). h](j)}(h ``stream_id``h]j )}(hjD:h]h stream_id}(hjF:hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjB:ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKhj>:ubj)}(hhh]h)}(hOThe stream id to use. Ex: Audio streams (0xc0-0xdf), Video streams (0xe0-0xef).h]hOThe stream id to use. Ex: Audio streams (0xc0-0xdf), Video streams (0xe0-0xef).}(hj]:hhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKhjZ:ubah}(h]h ]h"]h$]h&]uh1jhj>:ubeh}(h]h ]h"]h$]h&]uh1j~hjY:hKhjs8ubj)}(h!``send_pts`` Should we send PTS? h](j)}(h ``send_pts``h]j )}(hj~:h]hsend_pts}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj|:ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKhjx:ubj)}(hhh]h)}(hShould we send PTS?h]hShould we send PTS?}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj:hKhj:ubah}(h]h ]h"]h$]h&]uh1jhjx:ubeh}(h]h ]h"]h$]h&]uh1j~hj:hKhjs8ubj)}(h``pts`` PTS value to send. h](j)}(h``pts``h]j )}(hj:h]hpts}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj:ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKhj:ubj)}(hhh]h)}(hPTS value to send.h]hPTS value to send.}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj:hKhj:ubah}(h]h ]h"]h$]h&]uh1jhj:ubeh}(h]h ]h"]h$]h&]uh1j~hj:hKhjs8ubj)}(h!``send_dts`` Should we send DTS? h](j)}(h ``send_dts``h]j )}(hj:h]hsend_dts}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj:ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKhj:ubj)}(hhh]h)}(hShould we send DTS?h]hShould we send DTS?}(hj ;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj;hKhj;ubah}(h]h ]h"]h$]h&]uh1jhj:ubeh}(h]h ]h"]h$]h&]uh1j~hj;hKhjs8ubj)}(h``dts`` DTS value to send. h](j)}(h``dts``h]j )}(hj);h]hdts}(hj+;hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj';ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKhj#;ubj)}(hhh]h)}(hDTS value to send.h]hDTS value to send.}(hjB;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>;hKhj?;ubah}(h]h ]h"]h$]h&]uh1jhj#;ubeh}(h]h ]h"]h$]h&]uh1j~hj>;hKhjs8ubj)}(hi``n_pes_h_s_bytes`` Padding bytes. Might be used by an encoder if needed, gets discarded by the decoder. h](j)}(h``n_pes_h_s_bytes``h]j )}(hjb;h]hn_pes_h_s_bytes}(hjd;hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj`;ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKhj\;ubj)}(hhh]h)}(hTPadding bytes. Might be used by an encoder if needed, gets discarded by the decoder.h]hTPadding bytes. Might be used by an encoder if needed, gets discarded by the decoder.}(hj{;hhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKhjx;ubah}(h]h ]h"]h$]h&]uh1jhj\;ubeh}(h]h ]h"]h$]h&]uh1j~hjw;hKhjs8ubj)}(h(``pcr`` counter driven by a 27Mhz clock.h](j)}(h``pcr``h]j )}(hj;h]hpcr}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj;ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKhj;ubj)}(hhh]h)}(h counter driven by a 27Mhz clock.h]h counter driven by a 27Mhz clock.}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKhj;ubah}(h]h ]h"]h$]h&]uh1jhj;ubeh}(h]h ]h"]h$]h&]uh1j~hj;hKhjs8ubeh}(h]h ]h"]h$]h&]uh1jyhj+8ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j!vidtv_pes_write_into (C function)c.vidtv_pes_write_intohNtauh1jhjhhhNhNubj)}(hhh](j)}(h6u32 vidtv_pes_write_into (struct pes_write_args *args)h]j )}(h5u32 vidtv_pes_write_into(struct pes_write_args *args)h](h)}(hhh]j9)}(hu32h]hu32}(hj;hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hj;ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj;modnameN classnameNjj)}j]j)}jvidtv_pes_write_intosbc.vidtv_pes_write_intoasbuh1hhj;hhh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKubj")}(h h]h }(hj<hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hj;hhhj<hKubj3)}(hvidtv_pes_write_intoh]j9)}(hj<h]hvidtv_pes_write_into}(hj-<hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hj)<ubah}(h]h ](jKjLeh"]h$]h&]hhuh1j2hj;hhhj<hKubjP)}(h(struct pes_write_args *args)h]jV)}(hstruct pes_write_args *argsh](j)}(hjh]hstruct}(hjH<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjD<ubj")}(h h]h }(hjU<hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjD<ubh)}(hhh]j9)}(hpes_write_argsh]hpes_write_args}(hjf<hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjc<ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjh<modnameN classnameNjj)}j]j<c.vidtv_pes_write_intoasbuh1hhjD<ubj")}(h h]h }(hj<hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjD<ubj)}(hjh]h*}(hj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjD<ubj9)}(hargsh]hargs}(hj<hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjD<ubeh}(h]h ]h"]h$]h&]noemphhhuh1jUhj@<ubah}(h]h ]h"]h$]h&]hhuh1jOhj;hhhj<hKubeh}(h]h ]h"]h$]h&]hhjVuh1j jWjXhj;hhhj<hKubah}(h]j;ah ](j\j]eh"]h$]h&]jajb)jchuh1jhj<hKhj;hhubje)}(hhh]h)}(h4Write a PES packet as MPEG-TS packets into a buffer.h]h4Write a PES packet as MPEG-TS packets into a buffer.}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKhj<hhubah}(h]h ]h"]h$]h&]uh1jdhj;hhhj<hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj<jj<jjjuh1jhhhjhNhNubj)}(hX**Parameters** ``struct pes_write_args *args`` The args to use when writing **Description** This function translate the ES data for one access unit from an encoder into MPEG TS packets. It does so by first encapsulating it with a PES header and then splitting it into TS packets. The data is then written into the buffer pointed to by 'args.buf' **Return** The number of bytes written into the buffer. This is usually NOT equal to the size of the access unit, since we need space for PES headers, TS headers and padding bytes, if any.h](h)}(h**Parameters**h]j)}(hj<h]h Parameters}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj<ubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKhj<ubjz)}(hhh]j)}(h=``struct pes_write_args *args`` The args to use when writing h](j)}(h``struct pes_write_args *args``h]j )}(hj =h]hstruct pes_write_args *args}(hj =hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj=ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKhj=ubj)}(hhh]h)}(hThe args to use when writingh]hThe args to use when writing}(hj#=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj=hKhj =ubah}(h]h ]h"]h$]h&]uh1jhj=ubeh}(h]h ]h"]h$]h&]uh1j~hj=hKhj=ubah}(h]h ]h"]h$]h&]uh1jyhj<ubh)}(h**Description**h]j)}(hjE=h]h Description}(hjG=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjC=ubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKhj<ubh)}(hThis function translate the ES data for one access unit from an encoder into MPEG TS packets. It does so by first encapsulating it with a PES header and then splitting it into TS packets.h]hThis function translate the ES data for one access unit from an encoder into MPEG TS packets. It does so by first encapsulating it with a PES header and then splitting it into TS packets.}(hj[=hhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKhj<ubh)}(hAThe data is then written into the buffer pointed to by 'args.buf'h]hEThe data is then written into the buffer pointed to by ‘args.buf’}(hjj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKhj<ubh)}(h **Return**h]j)}(hj{=h]hReturn}(hj}=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjy=ubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKhj<ubh)}(hThe number of bytes written into the buffer. This is usually NOT equal to the size of the access unit, since we need space for PES headers, TS headers and padding bytes, if any.h]hThe number of bytes written into the buffer. This is usually NOT equal to the size of the access unit, since we need space for PES headers, TS headers and padding bytes, if any.}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKhj<ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jpsi_write_args (C struct)c.psi_write_argshNtauh1jhjhhhNhNubj)}(hhh](j)}(hpsi_write_argsh]j )}(hstruct psi_write_argsh](j)}(hjh]hstruct}(hj=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=hhh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhKubj")}(h h]h }(hj=hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hj=hhhj=hKubj3)}(hpsi_write_argsh]j9)}(hj=h]hpsi_write_args}(hj=hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hj=ubah}(h]h ](jKjLeh"]h$]h&]hhuh1j2hj=hhhj=hKubeh}(h]h ]h"]h$]h&]hhjVuh1j jWjXhj=hhhj=hKubah}(h]j=ah ](j\j]eh"]h$]h&]jajb)jchuh1jhj=hKhj=hhubje)}(hhh]h)}(h!Arguments for the PSI packetizer.h]h!Arguments for the PSI packetizer.}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhKhj=hhubah}(h]h ]h"]h$]h&]uh1jdhj=hhhj=hKubeh}(h]h ](jstructeh"]h$]h&]jjjj>jj>jjjuh1jhhhjhNhNubj)}(hX**Definition**:: struct psi_write_args { void *dest_buf; void *from; size_t len; u32 dest_offset; u16 pid; bool new_psi_section; u8 *continuity_counter; bool is_crc; u32 dest_buf_sz; u32 *crc; }; **Members** ``dest_buf`` The buffer to write into. ``from`` PSI data to be copied. ``len`` How much to write. ``dest_offset`` where to start writing in the dest_buffer. ``pid`` TS packet ID. ``new_psi_section`` Set when starting a table section. ``continuity_counter`` Incremented on every new packet. ``is_crc`` Set when writing the CRC at the end. ``dest_buf_sz`` The size of the dest_buffer ``crc`` a pointer to store the crc for this chunkh](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/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhKhj>ubj)}(hstruct psi_write_args { void *dest_buf; void *from; size_t len; u32 dest_offset; u16 pid; bool new_psi_section; u8 *continuity_counter; bool is_crc; u32 dest_buf_sz; u32 *crc; };h]hstruct psi_write_args { void *dest_buf; void *from; size_t len; u32 dest_offset; u16 pid; bool new_psi_section; u8 *continuity_counter; bool is_crc; u32 dest_buf_sz; u32 *crc; };}hj?>sbah}(h]h ]h"]h$]h&]hhuh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj>ubh)}(h **Members**h]j)}(hjP>h]hMembers}(hjR>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjN>ubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj>ubjz)}(hhh](j)}(h'``dest_buf`` The buffer to write into. h](j)}(h ``dest_buf``h]j )}(hjo>h]hdest_buf}(hjq>hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjm>ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhKhji>ubj)}(hhh]h)}(hThe buffer to write into.h]hThe buffer to write into.}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>hKhj>ubah}(h]h ]h"]h$]h&]uh1jhji>ubeh}(h]h ]h"]h$]h&]uh1j~hj>hKhjf>ubj)}(h ``from`` PSI data to be copied. h](j)}(h``from``h]j )}(hj>h]hfrom}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj>ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhKhj>ubj)}(hhh]h)}(hPSI data to be copied.h]hPSI data to be copied.}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>hKhj>ubah}(h]h ]h"]h$]h&]uh1jhj>ubeh}(h]h ]h"]h$]h&]uh1j~hj>hKhjf>ubj)}(h``len`` How much to write. h](j)}(h``len``h]j )}(hj>h]hlen}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj>ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhKhj>ubj)}(hhh]h)}(hHow much to write.h]hHow much to write.}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>hKhj>ubah}(h]h ]h"]h$]h&]uh1jhj>ubeh}(h]h ]h"]h$]h&]uh1j~hj>hKhjf>ubj)}(h;``dest_offset`` where to start writing in the dest_buffer. h](j)}(h``dest_offset``h]j )}(hj?h]h dest_offset}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj?ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj?ubj)}(hhh]h)}(h*where to start writing in the dest_buffer.h]h*where to start writing in the dest_buffer.}(hj3?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/?hMhj0?ubah}(h]h ]h"]h$]h&]uh1jhj?ubeh}(h]h ]h"]h$]h&]uh1j~hj/?hMhjf>ubj)}(h``pid`` TS packet ID. h](j)}(h``pid``h]j )}(hjS?h]hpid}(hjU?hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjQ?ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjM?ubj)}(hhh]h)}(h TS packet ID.h]h TS packet ID.}(hjl?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjh?hMhji?ubah}(h]h ]h"]h$]h&]uh1jhjM?ubeh}(h]h ]h"]h$]h&]uh1j~hjh?hMhjf>ubj)}(h7``new_psi_section`` Set when starting a table section. h](j)}(h``new_psi_section``h]j )}(hj?h]hnew_psi_section}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj?ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj?ubj)}(hhh]h)}(h"Set when starting a table section.h]h"Set when starting a table section.}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj?hMhj?ubah}(h]h ]h"]h$]h&]uh1jhj?ubeh}(h]h ]h"]h$]h&]uh1j~hj?hMhjf>ubj)}(h8``continuity_counter`` Incremented on every new packet. h](j)}(h``continuity_counter``h]j )}(hj?h]hcontinuity_counter}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj?ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj?ubj)}(hhh]h)}(h Incremented on every new packet.h]h Incremented on every new packet.}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj?hMhj?ubah}(h]h ]h"]h$]h&]uh1jhj?ubeh}(h]h ]h"]h$]h&]uh1j~hj?hMhjf>ubj)}(h0``is_crc`` Set when writing the CRC at the end. h](j)}(h ``is_crc``h]j )}(hj?h]his_crc}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj?ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj?ubj)}(hhh]h)}(h$Set when writing the CRC at the end.h]h$Set when writing the CRC at the end.}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj@hMhj@ubah}(h]h ]h"]h$]h&]uh1jhj?ubeh}(h]h ]h"]h$]h&]uh1j~hj@hMhjf>ubj)}(h,``dest_buf_sz`` The size of the dest_buffer h](j)}(h``dest_buf_sz``h]j )}(hj7@h]h dest_buf_sz}(hj9@hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj5@ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj1@ubj)}(hhh]h)}(hThe size of the dest_bufferh]hThe size of the dest_buffer}(hjP@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjL@hMhjM@ubah}(h]h ]h"]h$]h&]uh1jhj1@ubeh}(h]h ]h"]h$]h&]uh1j~hjL@hMhjf>ubj)}(h1``crc`` a pointer to store the crc for this chunkh](j)}(h``crc``h]j )}(hjp@h]hcrc}(hjr@hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjn@ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjj@ubj)}(hhh]h)}(h)a pointer to store the crc for this chunkh]h)a pointer to store the crc for this chunk}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj@ubah}(h]h ]h"]h$]h&]uh1jhjj@ubeh}(h]h ]h"]h$]h&]uh1j~hj@hMhjf>ubeh}(h]h ]h"]h$]h&]uh1jyhj>ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jdesc_write_args (C struct)c.desc_write_argshNtauh1jhjhhhNhNubj)}(hhh](j)}(hdesc_write_argsh]j )}(hstruct desc_write_argsh](j)}(hjh]hstruct}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@hhh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhM ubj")}(h h]h }(hj@hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hj@hhhj@hM ubj3)}(hdesc_write_argsh]j9)}(hj@h]hdesc_write_args}(hj@hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hj@ubah}(h]h ](jKjLeh"]h$]h&]hhuh1j2hj@hhhj@hM ubeh}(h]h ]h"]h$]h&]hhjVuh1j jWjXhj@hhhj@hM ubah}(h]j@ah ](j\j]eh"]h$]h&]jajb)jchuh1jhj@hM hj@hhubje)}(hhh]h)}(h)Arguments in order to write a descriptor.h]h)Arguments in order to write a descriptor.}(hj AhhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj Ahhubah}(h]h ]h"]h$]h&]uh1jdhj@hhhj@hM ubeh}(h]h ](jstructeh"]h$]h&]jjjj$Ajj$Ajjjuh1jhhhjhNhNubj)}(hX***Definition**:: struct desc_write_args { void *dest_buf; u32 dest_offset; struct vidtv_psi_desc *desc; u16 pid; u8 *continuity_counter; u32 dest_buf_sz; u32 *crc; }; **Members** ``dest_buf`` The buffer to write into. ``dest_offset`` where to start writing in the dest_buffer. ``desc`` A pointer to the descriptor ``pid`` TS packet ID. ``continuity_counter`` Incremented on every new packet. ``dest_buf_sz`` The size of the dest_buffer ``crc`` a pointer to store the crc for this chunkh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj0AhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,Aubh:}(hj,AhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj(Aubj)}(hstruct desc_write_args { void *dest_buf; u32 dest_offset; struct vidtv_psi_desc *desc; u16 pid; u8 *continuity_counter; u32 dest_buf_sz; u32 *crc; };h]hstruct desc_write_args { void *dest_buf; u32 dest_offset; struct vidtv_psi_desc *desc; u16 pid; u8 *continuity_counter; u32 dest_buf_sz; u32 *crc; };}hjIAsbah}(h]h ]h"]h$]h&]hhuh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj(Aubh)}(h **Members**h]j)}(hjZAh]hMembers}(hj\AhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXAubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhM%hj(Aubjz)}(hhh](j)}(h'``dest_buf`` The buffer to write into. h](j)}(h ``dest_buf``h]j )}(hjyAh]hdest_buf}(hj{AhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjwAubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjsAubj)}(hhh]h)}(hThe buffer to write into.h]hThe buffer to write into.}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjAhMhjAubah}(h]h ]h"]h$]h&]uh1jhjsAubeh}(h]h ]h"]h$]h&]uh1j~hjAhMhjpAubj)}(h;``dest_offset`` where to start writing in the dest_buffer. h](j)}(h``dest_offset``h]j )}(hjAh]h dest_offset}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjAubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjAubj)}(hhh]h)}(h*where to start writing in the dest_buffer.h]h*where to start writing in the dest_buffer.}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjAhMhjAubah}(h]h ]h"]h$]h&]uh1jhjAubeh}(h]h ]h"]h$]h&]uh1j~hjAhMhjpAubj)}(h%``desc`` A pointer to the descriptor h](j)}(h``desc``h]j )}(hjAh]hdesc}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjAubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjAubj)}(hhh]h)}(hA pointer to the descriptorh]hA pointer to the descriptor}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBhMhjBubah}(h]h ]h"]h$]h&]uh1jhjAubeh}(h]h ]h"]h$]h&]uh1j~hjBhMhjpAubj)}(h``pid`` TS packet ID. h](j)}(h``pid``h]j )}(hj$Bh]hpid}(hj&BhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj"Bubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjBubj)}(hhh]h)}(h TS packet ID.h]h TS packet ID.}(hj=BhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9BhMhj:Bubah}(h]h ]h"]h$]h&]uh1jhjBubeh}(h]h ]h"]h$]h&]uh1j~hj9BhMhjpAubj)}(h8``continuity_counter`` Incremented on every new packet. h](j)}(h``continuity_counter``h]j )}(hj]Bh]hcontinuity_counter}(hj_BhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj[Bubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjWBubj)}(hhh]h)}(h Incremented on every new packet.h]h Incremented on every new packet.}(hjvBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjrBhMhjsBubah}(h]h ]h"]h$]h&]uh1jhjWBubeh}(h]h ]h"]h$]h&]uh1j~hjrBhMhjpAubj)}(h,``dest_buf_sz`` The size of the dest_buffer h](j)}(h``dest_buf_sz``h]j )}(hjBh]h dest_buf_sz}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjBubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjBubj)}(hhh]h)}(hThe size of the dest_bufferh]hThe size of the dest_buffer}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBhMhjBubah}(h]h ]h"]h$]h&]uh1jhjBubeh}(h]h ]h"]h$]h&]uh1j~hjBhMhjpAubj)}(h1``crc`` a pointer to store the crc for this chunkh](j)}(h``crc``h]j )}(hjBh]hcrc}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjBubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjBubj)}(hhh]h)}(h)a pointer to store the crc for this chunkh]h)a pointer to store the crc for this chunk}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjBubah}(h]h ]h"]h$]h&]uh1jhjBubeh}(h]h ]h"]h$]h&]uh1j~hjBhMhjpAubeh}(h]h ]h"]h$]h&]uh1jyhj(Aubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jcrc32_write_args (C struct)c.crc32_write_argshNtauh1jhjhhhNhNubj)}(hhh](j)}(hcrc32_write_argsh]j )}(hstruct crc32_write_argsh](j)}(hjh]hstruct}(hj)ChhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%Chhh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhM#ubj")}(h h]h }(hj7ChhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hj%Chhhj6ChM#ubj3)}(hcrc32_write_argsh]j9)}(hj#Ch]hcrc32_write_args}(hjIChhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjECubah}(h]h ](jKjLeh"]h$]h&]hhuh1j2hj%Chhhj6ChM#ubeh}(h]h ]h"]h$]h&]hhjVuh1j jWjXhj!Chhhj6ChM#ubah}(h]jCah ](j\j]eh"]h$]h&]jajb)jchuh1jhj6ChM#hjChhubje)}(hhh]h)}(hAArguments in order to write the CRC at the end of the PSI tables.h]hAArguments in order to write the CRC at the end of the PSI tables.}(hjkChhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhM)hjhChhubah}(h]h ]h"]h$]h&]uh1jdhjChhhj6ChM#ubeh}(h]h ](jstructeh"]h$]h&]jjjjCjjCjjjuh1jhhhjhNhNubj)}(hX**Definition**:: struct crc32_write_args { void *dest_buf; u32 dest_offset; __be32 crc; u16 pid; u8 *continuity_counter; u32 dest_buf_sz; }; **Members** ``dest_buf`` The buffer to write into. ``dest_offset`` where to start writing in the dest_buffer. ``crc`` the CRC value to write ``pid`` TS packet ID. ``continuity_counter`` Incremented on every new packet. ``dest_buf_sz`` The size of the dest_bufferh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCubh:}(hjChhhNhNubeh}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhM-hjCubj)}(hstruct crc32_write_args { void *dest_buf; u32 dest_offset; __be32 crc; u16 pid; u8 *continuity_counter; u32 dest_buf_sz; };h]hstruct crc32_write_args { void *dest_buf; u32 dest_offset; __be32 crc; u16 pid; u8 *continuity_counter; u32 dest_buf_sz; };}hjCsbah}(h]h ]h"]h$]h&]hhuh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhM/hjCubh)}(h **Members**h]j)}(hjCh]hMembers}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhM8hjCubjz)}(hhh](j)}(h'``dest_buf`` The buffer to write into. h](j)}(h ``dest_buf``h]j )}(hjCh]hdest_buf}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1j hjCubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhM,hjCubj)}(hhh]h)}(hThe buffer to write into.h]hThe buffer to write into.}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhjChM,hjCubah}(h]h ]h"]h$]h&]uh1jhjCubeh}(h]h ]h"]h$]h&]uh1j~hjChM,hjCubj)}(h;``dest_offset`` where to start writing in the dest_buffer. h](j)}(h``dest_offset``h]j )}(hjDh]h dest_offset}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjDubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhM-hj Dubj)}(hhh]h)}(h*where to start writing in the dest_buffer.h]h*where to start writing in the dest_buffer.}(hj*DhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&DhM-hj'Dubah}(h]h ]h"]h$]h&]uh1jhj Dubeh}(h]h ]h"]h$]h&]uh1j~hj&DhM-hjCubj)}(h``crc`` the CRC value to write h](j)}(h``crc``h]j )}(hjJDh]hcrc}(hjLDhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjHDubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhM.hjDDubj)}(hhh]h)}(hthe CRC value to writeh]hthe CRC value to write}(hjcDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj_DhM.hj`Dubah}(h]h ]h"]h$]h&]uh1jhjDDubeh}(h]h ]h"]h$]h&]uh1j~hj_DhM.hjCubj)}(h``pid`` TS packet ID. h](j)}(h``pid``h]j )}(hjDh]hpid}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjDubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhM/hj}Dubj)}(hhh]h)}(h TS packet ID.h]h TS packet ID.}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjDhM/hjDubah}(h]h ]h"]h$]h&]uh1jhj}Dubeh}(h]h ]h"]h$]h&]uh1j~hjDhM/hjCubj)}(h8``continuity_counter`` Incremented on every new packet. h](j)}(h``continuity_counter``h]j )}(hjDh]hcontinuity_counter}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjDubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhM0hjDubj)}(hhh]h)}(h Incremented on every new packet.h]h Incremented on every new packet.}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjDhM0hjDubah}(h]h ]h"]h$]h&]uh1jhjDubeh}(h]h ]h"]h$]h&]uh1j~hjDhM0hjCubj)}(h+``dest_buf_sz`` The size of the dest_bufferh](j)}(h``dest_buf_sz``h]j )}(hjDh]h dest_buf_sz}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjDubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhM0hjDubj)}(hhh]h)}(hThe size of the dest_bufferh]hThe size of the dest_buffer}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhM1hj Eubah}(h]h ]h"]h$]h&]uh1jhjDubeh}(h]h ]h"]h$]h&]uh1j~hj EhM0hjCubeh}(h]h ]h"]h$]h&]uh1jyhjCubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jheader_write_args (C struct)c.header_write_argshNtauh1jhjhhhNhNubj)}(hhh](j)}(hheader_write_argsh]j )}(hstruct header_write_argsh](j)}(hjh]hstruct}(hjOEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjKEhhh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhM7ubj")}(h h]h }(hj]EhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjKEhhhj\EhM7ubj3)}(hheader_write_argsh]j9)}(hjIEh]hheader_write_args}(hjoEhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjkEubah}(h]h ](jKjLeh"]h$]h&]hhuh1j2hjKEhhhj\EhM7ubeh}(h]h ]h"]h$]h&]hhjVuh1j jWjXhjGEhhhj\EhM7ubah}(h]jBEah ](j\j]eh"]h$]h&]jajb)jchuh1jhj\EhM7hjDEhhubje)}(hhh]h)}(h3Arguments in order to write the common table headerh]h3Arguments in order to write the common table header}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhM<hjEhhubah}(h]h ]h"]h$]h&]uh1jdhjDEhhhj\EhM7ubeh}(h]h ](jstructeh"]h$]h&]jjjjEjjEjjjuh1jhhhjhNhNubj)}(hX+**Definition**:: struct header_write_args { void *dest_buf; u32 dest_offset; struct vidtv_psi_table_header *h; u16 pid; u8 *continuity_counter; u32 dest_buf_sz; u32 *crc; }; **Members** ``dest_buf`` The buffer to write into. ``dest_offset`` where to start writing in the dest_buffer. ``h`` a pointer to the header. ``pid`` TS packet ID. ``continuity_counter`` Incremented on every new packet. ``dest_buf_sz`` The size of the dest_buffer ``crc`` a pointer to store the crc for this chunkh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubh:}(hjEhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhM@hjEubj)}(hstruct header_write_args { void *dest_buf; u32 dest_offset; struct vidtv_psi_table_header *h; u16 pid; u8 *continuity_counter; u32 dest_buf_sz; u32 *crc; };h]hstruct header_write_args { void *dest_buf; u32 dest_offset; struct vidtv_psi_table_header *h; u16 pid; u8 *continuity_counter; u32 dest_buf_sz; u32 *crc; };}hjEsbah}(h]h ]h"]h$]h&]hhuh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMBhjEubh)}(h **Members**h]j)}(hjEh]hMembers}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMLhjEubjz)}(hhh](j)}(h'``dest_buf`` The buffer to write into. h](j)}(h ``dest_buf``h]j )}(hjEh]hdest_buf}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjEubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhM?hjEubj)}(hhh]h)}(hThe buffer to write into.h]hThe buffer to write into.}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjFhM?hjFubah}(h]h ]h"]h$]h&]uh1jhjEubeh}(h]h ]h"]h$]h&]uh1j~hjFhM?hjEubj)}(h;``dest_offset`` where to start writing in the dest_buffer. h](j)}(h``dest_offset``h]j )}(hj7Fh]h dest_offset}(hj9FhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj5Fubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhM@hj1Fubj)}(hhh]h)}(h*where to start writing in the dest_buffer.h]h*where to start writing in the dest_buffer.}(hjPFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjLFhM@hjMFubah}(h]h ]h"]h$]h&]uh1jhj1Fubeh}(h]h ]h"]h$]h&]uh1j~hjLFhM@hjEubj)}(h``h`` a pointer to the header. h](j)}(h``h``h]j )}(hjpFh]hh}(hjrFhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjnFubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMAhjjFubj)}(hhh]h)}(ha pointer to the header.h]ha pointer to the header.}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjFhMAhjFubah}(h]h ]h"]h$]h&]uh1jhjjFubeh}(h]h ]h"]h$]h&]uh1j~hjFhMAhjEubj)}(h``pid`` TS packet ID. h](j)}(h``pid``h]j )}(hjFh]hpid}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjFubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMBhjFubj)}(hhh]h)}(h TS packet ID.h]h TS packet ID.}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjFhMBhjFubah}(h]h ]h"]h$]h&]uh1jhjFubeh}(h]h ]h"]h$]h&]uh1j~hjFhMBhjEubj)}(h8``continuity_counter`` Incremented on every new packet. h](j)}(h``continuity_counter``h]j )}(hjFh]hcontinuity_counter}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjFubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMChjFubj)}(hhh]h)}(h Incremented on every new packet.h]h Incremented on every new packet.}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjFhMChjFubah}(h]h ]h"]h$]h&]uh1jhjFubeh}(h]h ]h"]h$]h&]uh1j~hjFhMChjEubj)}(h,``dest_buf_sz`` The size of the dest_buffer h](j)}(h``dest_buf_sz``h]j )}(hjGh]h dest_buf_sz}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjGubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMDhjGubj)}(hhh]h)}(hThe size of the dest_bufferh]hThe size of the dest_buffer}(hj4GhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj0GhMDhj1Gubah}(h]h ]h"]h$]h&]uh1jhjGubeh}(h]h ]h"]h$]h&]uh1j~hj0GhMDhjEubj)}(h1``crc`` a pointer to store the crc for this chunkh](j)}(h``crc``h]j )}(hjTGh]hcrc}(hjVGhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjRGubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMDhjNGubj)}(hhh]h)}(h)a pointer to store the crc for this chunkh]h)a pointer to store the crc for this chunk}(hjmGhhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMEhjjGubah}(h]h ]h"]h$]h&]uh1jhjNGubeh}(h]h ]h"]h$]h&]uh1j~hjiGhMDhjEubeh}(h]h ]h"]h$]h&]uh1jyhjEubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j)vidtv_psi_sdt_service_assign (C function)c.vidtv_psi_sdt_service_assignhNtauh1jhjhhhNhNubj)}(hhh](j)}(hpvoid vidtv_psi_sdt_service_assign (struct vidtv_psi_table_sdt *sdt, struct vidtv_psi_table_sdt_service *service)h]j )}(hovoid vidtv_psi_sdt_service_assign(struct vidtv_psi_table_sdt *sdt, struct vidtv_psi_table_sdt_service *service)h](j)}(hvoidh]hvoid}(hjGhhhNhNubah}(h]h ]j$ah"]h$]h&]uh1jhjGhhh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMubj")}(h h]h }(hjGhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjGhhhjGhMubj3)}(hvidtv_psi_sdt_service_assignh]j9)}(hvidtv_psi_sdt_service_assignh]hvidtv_psi_sdt_service_assign}(hjGhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjGubah}(h]h ](jKjLeh"]h$]h&]hhuh1j2hjGhhhjGhMubjP)}(hN(struct vidtv_psi_table_sdt *sdt, struct vidtv_psi_table_sdt_service *service)h](jV)}(hstruct vidtv_psi_table_sdt *sdth](j)}(hjh]hstruct}(hjGhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGubj")}(h h]h }(hjGhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjGubh)}(hhh]j9)}(hvidtv_psi_table_sdth]hvidtv_psi_table_sdt}(hj HhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjHubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj HmodnameN classnameNjj)}j]j)}jjGsbc.vidtv_psi_sdt_service_assignasbuh1hhjGubj")}(h h]h }(hj)HhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjGubj)}(hjh]h*}(hj7HhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGubj9)}(hsdth]hsdt}(hjDHhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjGubeh}(h]h ]h"]h$]h&]noemphhhuh1jUhjGubjV)}(h+struct vidtv_psi_table_sdt_service *serviceh](j)}(hjh]hstruct}(hj]HhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYHubj")}(h h]h }(hjjHhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjYHubh)}(hhh]j9)}(hvidtv_psi_table_sdt_serviceh]hvidtv_psi_table_sdt_service}(hj{HhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjxHubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj}HmodnameN classnameNjj)}j]j%Hc.vidtv_psi_sdt_service_assignasbuh1hhjYHubj")}(h h]h }(hjHhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjYHubj)}(hjh]h*}(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYHubj9)}(hserviceh]hservice}(hjHhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjYHubeh}(h]h ]h"]h$]h&]noemphhhuh1jUhjGubeh}(h]h ]h"]h$]h&]hhuh1jOhjGhhhjGhMubeh}(h]h ]h"]h$]h&]hhjVuh1j jWjXhjGhhhjGhMubah}(h]jGah ](j\j]eh"]h$]h&]jajb)jchuh1jhjGhMhjGhhubje)}(hhh]h)}(h$Assigns the service loop to the SDT.h]h$Assigns the service loop to the SDT.}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjHhhubah}(h]h ]h"]h$]h&]uh1jdhjGhhhjGhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjHjjHjjjuh1jhhhjhNhNubj)}(hX**Parameters** ``struct vidtv_psi_table_sdt *sdt`` The SDT to assign to. ``struct vidtv_psi_table_sdt_service *service`` The service loop (one or more services) **Description** This will free the previous service loop in the table. This will assign ownership of the service loop to the table, i.e. the table will free this service loop when a call to its destroy function is made.h](h)}(h**Parameters**h]j)}(hjIh]h Parameters}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjHubjz)}(hhh](j)}(h:``struct vidtv_psi_table_sdt *sdt`` The SDT to assign to. h](j)}(h#``struct vidtv_psi_table_sdt *sdt``h]j )}(hjIh]hstruct vidtv_psi_table_sdt *sdt}(hj!IhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjIubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjIubj)}(hhh]h)}(hThe SDT to assign to.h]hThe SDT to assign to.}(hj8IhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj4IhMhj5Iubah}(h]h ]h"]h$]h&]uh1jhjIubeh}(h]h ]h"]h$]h&]uh1j~hj4IhMhjIubj)}(hX``struct vidtv_psi_table_sdt_service *service`` The service loop (one or more services) h](j)}(h/``struct vidtv_psi_table_sdt_service *service``h]j )}(hjXIh]h+struct vidtv_psi_table_sdt_service *service}(hjZIhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjVIubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjRIubj)}(hhh]h)}(h'The service loop (one or more services)h]h'The service loop (one or more services)}(hjqIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjmIhMhjnIubah}(h]h ]h"]h$]h&]uh1jhjRIubeh}(h]h ]h"]h$]h&]uh1j~hjmIhMhjIubeh}(h]h ]h"]h$]h&]uh1jyhjHubh)}(h**Description**h]j)}(hjIh]h Description}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjHubh)}(hThis will free the previous service loop in the table. This will assign ownership of the service loop to the table, i.e. the table will free this service loop when a call to its destroy function is made.h]hThis will free the previous service loop in the table. This will assign ownership of the service loop to the table, i.e. the table will free this service loop when a call to its destroy function is made.}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjHubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j"vidtv_psi_desc_assign (C function)c.vidtv_psi_desc_assignhNtauh1jhjhhhNhNubj)}(hhh](j)}(hTvoid vidtv_psi_desc_assign (struct vidtv_psi_desc **to, struct vidtv_psi_desc *desc)h]j )}(hSvoid vidtv_psi_desc_assign(struct vidtv_psi_desc **to, struct vidtv_psi_desc *desc)h](j)}(hvoidh]hvoid}(hjIhhhNhNubah}(h]h ]j$ah"]h$]h&]uh1jhjIhhh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMubj")}(h h]h }(hjIhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjIhhhjIhMubj3)}(hvidtv_psi_desc_assignh]j9)}(hvidtv_psi_desc_assignh]hvidtv_psi_desc_assign}(hjIhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjIubah}(h]h ](jKjLeh"]h$]h&]hhuh1j2hjIhhhjIhMubjP)}(h9(struct vidtv_psi_desc **to, struct vidtv_psi_desc *desc)h](jV)}(hstruct vidtv_psi_desc **toh](j)}(hjh]hstruct}(hjJhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjJubj")}(h h]h }(hj"JhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjJubh)}(hhh]j9)}(hvidtv_psi_desch]hvidtv_psi_desc}(hj3JhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hj0Jubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj5JmodnameN classnameNjj)}j]j)}jjIsbc.vidtv_psi_desc_assignasbuh1hhjJubj")}(h h]h }(hjSJhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjJubj)}(hjh]h*}(hjaJhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjJubj)}(hjh]h*}(hjnJhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjJubj9)}(htoh]hto}(hj{JhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjJubeh}(h]h ]h"]h$]h&]noemphhhuh1jUhj JubjV)}(hstruct vidtv_psi_desc *desch](j)}(hjh]hstruct}(hjJhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjJubj")}(h h]h }(hjJhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjJubh)}(hhh]j9)}(hvidtv_psi_desch]hvidtv_psi_desc}(hjJhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjJubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjJmodnameN classnameNjj)}j]jOJc.vidtv_psi_desc_assignasbuh1hhjJubj")}(h h]h }(hjJhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjJubj)}(hjh]h*}(hjJhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjJubj9)}(hdesch]hdesc}(hjJhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjJubeh}(h]h ]h"]h$]h&]noemphhhuh1jUhj Jubeh}(h]h ]h"]h$]h&]hhuh1jOhjIhhhjIhMubeh}(h]h ]h"]h$]h&]hhjVuh1j jWjXhjIhhhjIhMubah}(h]jIah ](j\j]eh"]h$]h&]jajb)jchuh1jhjIhMhjIhhubje)}(hhh]h)}(h'Assigns a descriptor loop at some pointh]h'Assigns a descriptor loop at some point}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjKhhubah}(h]h ]h"]h$]h&]uh1jdhjIhhhjIhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj-Kjj-Kjjjuh1jhhhjhNhNubj)}(h**Parameters** ``struct vidtv_psi_desc **to`` Where to assign this descriptor loop to ``struct vidtv_psi_desc *desc`` The descriptor loop that will be assigned. **Description** This will free the loop in 'to', if any.h](h)}(h**Parameters**h]j)}(hj7Kh]h Parameters}(hj9KhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5Kubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj1Kubjz)}(hhh](j)}(hG``struct vidtv_psi_desc **to`` Where to assign this descriptor loop to h](j)}(h``struct vidtv_psi_desc **to``h]j )}(hjVKh]hstruct vidtv_psi_desc **to}(hjXKhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjTKubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjPKubj)}(hhh]h)}(h'Where to assign this descriptor loop toh]h'Where to assign this descriptor loop to}(hjoKhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjkKhMhjlKubah}(h]h ]h"]h$]h&]uh1jhjPKubeh}(h]h ]h"]h$]h&]uh1j~hjkKhMhjMKubj)}(hK``struct vidtv_psi_desc *desc`` The descriptor loop that will be assigned. h](j)}(h``struct vidtv_psi_desc *desc``h]j )}(hjKh]hstruct vidtv_psi_desc *desc}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjKubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjKubj)}(hhh]h)}(h*The descriptor loop that will be assigned.h]h*The descriptor loop that will be assigned.}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjKhMhjKubah}(h]h ]h"]h$]h&]uh1jhjKubeh}(h]h ]h"]h$]h&]uh1j~hjKhMhjMKubeh}(h]h ]h"]h$]h&]uh1jyhj1Kubh)}(h**Description**h]j)}(hjKh]h Description}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj1Kubh)}(h(This will free the loop in 'to', if any.h]h,This will free the loop in ‘to’, if any.}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj1Kubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j"vidtv_pmt_desc_assign (C function)c.vidtv_pmt_desc_assignhNtauh1jhjhhhNhNubj)}(hhh](j)}(huvoid vidtv_pmt_desc_assign (struct vidtv_psi_table_pmt *pmt, struct vidtv_psi_desc **to, struct vidtv_psi_desc *desc)h]j )}(htvoid vidtv_pmt_desc_assign(struct vidtv_psi_table_pmt *pmt, struct vidtv_psi_desc **to, struct vidtv_psi_desc *desc)h](j)}(hvoidh]hvoid}(hjLhhhNhNubah}(h]h ]j$ah"]h$]h&]uh1jhj Lhhh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMubj")}(h h]h }(hjLhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hj LhhhjLhMubj3)}(hvidtv_pmt_desc_assignh]j9)}(hvidtv_pmt_desc_assignh]hvidtv_pmt_desc_assign}(hj0LhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hj,Lubah}(h]h ](jKjLeh"]h$]h&]hhuh1j2hj LhhhjLhMubjP)}(hZ(struct vidtv_psi_table_pmt *pmt, struct vidtv_psi_desc **to, struct vidtv_psi_desc *desc)h](jV)}(hstruct vidtv_psi_table_pmt *pmth](j)}(hjh]hstruct}(hjLLhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjHLubj")}(h h]h }(hjYLhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjHLubh)}(hhh]j9)}(hvidtv_psi_table_pmth]hvidtv_psi_table_pmt}(hjjLhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjgLubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjlLmodnameN classnameNjj)}j]j)}jj2Lsbc.vidtv_pmt_desc_assignasbuh1hhjHLubj")}(h h]h }(hjLhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjHLubj)}(hjh]h*}(hjLhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjHLubj9)}(hpmth]hpmt}(hjLhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjHLubeh}(h]h ]h"]h$]h&]noemphhhuh1jUhjDLubjV)}(hstruct vidtv_psi_desc **toh](j)}(hjh]hstruct}(hjLhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjLubj")}(h h]h }(hjLhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjLubh)}(hhh]j9)}(hvidtv_psi_desch]hvidtv_psi_desc}(hjLhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjLubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjLmodnameN classnameNjj)}j]jLc.vidtv_pmt_desc_assignasbuh1hhjLubj")}(h h]h }(hjLhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjLubj)}(hjh]h*}(hjMhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjLubj)}(hjh]h*}(hjMhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjLubj9)}(htoh]hto}(hj"MhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjLubeh}(h]h ]h"]h$]h&]noemphhhuh1jUhjDLubjV)}(hstruct vidtv_psi_desc *desch](j)}(hjh]hstruct}(hj;MhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7Mubj")}(h h]h }(hjHMhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hj7Mubh)}(hhh]j9)}(hvidtv_psi_desch]hvidtv_psi_desc}(hjYMhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjVMubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj[MmodnameN classnameNjj)}j]jLc.vidtv_pmt_desc_assignasbuh1hhj7Mubj")}(h h]h }(hjwMhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hj7Mubj)}(hjh]h*}(hjMhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7Mubj9)}(hdesch]hdesc}(hjMhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hj7Mubeh}(h]h ]h"]h$]h&]noemphhhuh1jUhjDLubeh}(h]h ]h"]h$]h&]hhuh1jOhj LhhhjLhMubeh}(h]h ]h"]h$]h&]hhjVuh1j jWjXhjLhhhjLhMubah}(h]jLah ](j\j]eh"]h$]h&]jajb)jchuh1jhjLhMhjLhhubje)}(hhh]h)}(h9Assigns a descriptor loop at some point in a PMT section.h]h9Assigns a descriptor loop at some point in a PMT section.}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjMhhubah}(h]h ]h"]h$]h&]uh1jdhjLhhhjLhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjMjjMjjjuh1jhhhjhNhNubj)}(hX**Parameters** ``struct vidtv_psi_table_pmt *pmt`` The PMT section that will contain the descriptor loop ``struct vidtv_psi_desc **to`` Where in the PMT to assign this descriptor loop to ``struct vidtv_psi_desc *desc`` The descriptor loop that will be assigned. **Description** This will free the loop in 'to', if any. This will assign ownership of the loop to the table, i.e. the table will free this loop when a call to its destroy function is made.h](h)}(h**Parameters**h]j)}(hjMh]h Parameters}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjMubjz)}(hhh](j)}(hZ``struct vidtv_psi_table_pmt *pmt`` The PMT section that will contain the descriptor loop h](j)}(h#``struct vidtv_psi_table_pmt *pmt``h]j )}(hjMh]hstruct vidtv_psi_table_pmt *pmt}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjMubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjMubj)}(hhh]h)}(h5The PMT section that will contain the descriptor looph]h5The PMT section that will contain the descriptor loop}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjNhMhjNubah}(h]h ]h"]h$]h&]uh1jhjMubeh}(h]h ]h"]h$]h&]uh1j~hjNhMhjMubj)}(hR``struct vidtv_psi_desc **to`` Where in the PMT to assign this descriptor loop to h](j)}(h``struct vidtv_psi_desc **to``h]j )}(hj6Nh]hstruct vidtv_psi_desc **to}(hj8NhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj4Nubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj0Nubj)}(hhh]h)}(h2Where in the PMT to assign this descriptor loop toh]h2Where in the PMT to assign this descriptor loop to}(hjONhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjKNhMhjLNubah}(h]h ]h"]h$]h&]uh1jhj0Nubeh}(h]h ]h"]h$]h&]uh1j~hjKNhMhjMubj)}(hK``struct vidtv_psi_desc *desc`` The descriptor loop that will be assigned. h](j)}(h``struct vidtv_psi_desc *desc``h]j )}(hjoNh]hstruct vidtv_psi_desc *desc}(hjqNhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjmNubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjiNubj)}(hhh]h)}(h*The descriptor loop that will be assigned.h]h*The descriptor loop that will be assigned.}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjNhMhjNubah}(h]h ]h"]h$]h&]uh1jhjiNubeh}(h]h ]h"]h$]h&]uh1j~hjNhMhjMubeh}(h]h ]h"]h$]h&]uh1jyhjMubh)}(h**Description**h]j)}(hjNh]h Description}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjMubh)}(hThis will free the loop in 'to', if any. This will assign ownership of the loop to the table, i.e. the table will free this loop when a call to its destroy function is made.h]hThis will free the loop in ‘to’, if any. This will assign ownership of the loop to the table, i.e. the table will free this loop when a call to its destroy function is made.}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjMubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j"vidtv_sdt_desc_assign (C function)c.vidtv_sdt_desc_assignhNtauh1jhjhhhNhNubj)}(hhh](j)}(huvoid vidtv_sdt_desc_assign (struct vidtv_psi_table_sdt *sdt, struct vidtv_psi_desc **to, struct vidtv_psi_desc *desc)h]j )}(htvoid vidtv_sdt_desc_assign(struct vidtv_psi_table_sdt *sdt, struct vidtv_psi_desc **to, struct vidtv_psi_desc *desc)h](j)}(hvoidh]hvoid}(hjNhhhNhNubah}(h]h ]j$ah"]h$]h&]uh1jhjNhhh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMubj")}(h h]h }(hjNhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjNhhhjNhMubj3)}(hvidtv_sdt_desc_assignh]j9)}(hvidtv_sdt_desc_assignh]hvidtv_sdt_desc_assign}(hjOhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hj Oubah}(h]h ](jKjLeh"]h$]h&]hhuh1j2hjNhhhjNhMubjP)}(hZ(struct vidtv_psi_table_sdt *sdt, struct vidtv_psi_desc **to, struct vidtv_psi_desc *desc)h](jV)}(hstruct vidtv_psi_table_sdt *sdth](j)}(hjh]hstruct}(hj,OhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(Oubj")}(h h]h }(hj9OhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hj(Oubh)}(hhh]j9)}(hvidtv_psi_table_sdth]hvidtv_psi_table_sdt}(hjJOhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjGOubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjLOmodnameN classnameNjj)}j]j)}jjOsbc.vidtv_sdt_desc_assignasbuh1hhj(Oubj")}(h h]h }(hjjOhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hj(Oubj)}(hjh]h*}(hjxOhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(Oubj9)}(hsdth]hsdt}(hjOhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hj(Oubeh}(h]h ]h"]h$]h&]noemphhhuh1jUhj$OubjV)}(hstruct vidtv_psi_desc **toh](j)}(hjh]hstruct}(hjOhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjOubj")}(h h]h }(hjOhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjOubh)}(hhh]j9)}(hvidtv_psi_desch]hvidtv_psi_desc}(hjOhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjOubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjOmodnameN classnameNjj)}j]jfOc.vidtv_sdt_desc_assignasbuh1hhjOubj")}(h h]h }(hjOhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjOubj)}(hjh]h*}(hjOhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjOubj)}(hjh]h*}(hjOhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjOubj9)}(htoh]hto}(hjPhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjOubeh}(h]h ]h"]h$]h&]noemphhhuh1jUhj$OubjV)}(hstruct vidtv_psi_desc *desch](j)}(hjh]hstruct}(hjPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjPubj")}(h h]h }(hj(PhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjPubh)}(hhh]j9)}(hvidtv_psi_desch]hvidtv_psi_desc}(hj9PhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hj6Pubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj;PmodnameN classnameNjj)}j]jfOc.vidtv_sdt_desc_assignasbuh1hhjPubj")}(h h]h }(hjWPhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjPubj)}(hjh]h*}(hjePhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjPubj9)}(hdesch]hdesc}(hjrPhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjPubeh}(h]h ]h"]h$]h&]noemphhhuh1jUhj$Oubeh}(h]h ]h"]h$]h&]hhuh1jOhjNhhhjNhMubeh}(h]h ]h"]h$]h&]hhjVuh1j jWjXhjNhhhjNhMubah}(h]jNah ](j\j]eh"]h$]h&]jajb)jchuh1jhjNhMhjNhhubje)}(hhh]h)}(h1Assigns a descriptor loop at some point in a SDT.h]h1Assigns a descriptor loop at some point in a SDT.}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjPhhubah}(h]h ]h"]h$]h&]uh1jdhjNhhhjNhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjPjjPjjjuh1jhhhjhNhNubj)}(hX**Parameters** ``struct vidtv_psi_table_sdt *sdt`` The SDT that will contain the descriptor loop ``struct vidtv_psi_desc **to`` Where in the PMT to assign this descriptor loop to ``struct vidtv_psi_desc *desc`` The descriptor loop that will be assigned. **Description** This will free the loop in 'to', if any. This will assign ownership of the loop to the table, i.e. the table will free this loop when a call to its destroy function is made.h](h)}(h**Parameters**h]j)}(hjPh]h Parameters}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjPubjz)}(hhh](j)}(hR``struct vidtv_psi_table_sdt *sdt`` The SDT that will contain the descriptor loop h](j)}(h#``struct vidtv_psi_table_sdt *sdt``h]j )}(hjPh]hstruct vidtv_psi_table_sdt *sdt}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjPubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjPubj)}(hhh]h)}(h-The SDT that will contain the descriptor looph]h-The SDT that will contain the descriptor loop}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjPhMhjPubah}(h]h ]h"]h$]h&]uh1jhjPubeh}(h]h ]h"]h$]h&]uh1j~hjPhMhjPubj)}(hR``struct vidtv_psi_desc **to`` Where in the PMT to assign this descriptor loop to h](j)}(h``struct vidtv_psi_desc **to``h]j )}(hjQh]hstruct vidtv_psi_desc **to}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjQubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjQubj)}(hhh]h)}(h2Where in the PMT to assign this descriptor loop toh]h2Where in the PMT to assign this descriptor loop to}(hj/QhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+QhMhj,Qubah}(h]h ]h"]h$]h&]uh1jhjQubeh}(h]h ]h"]h$]h&]uh1j~hj+QhMhjPubj)}(hK``struct vidtv_psi_desc *desc`` The descriptor loop that will be assigned. h](j)}(h``struct vidtv_psi_desc *desc``h]j )}(hjOQh]hstruct vidtv_psi_desc *desc}(hjQQhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjMQubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjIQubj)}(hhh]h)}(h*The descriptor loop that will be assigned.h]h*The descriptor loop that will be assigned.}(hjhQhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjdQhMhjeQubah}(h]h ]h"]h$]h&]uh1jhjIQubeh}(h]h ]h"]h$]h&]uh1j~hjdQhMhjPubeh}(h]h ]h"]h$]h&]uh1jyhjPubh)}(h**Description**h]j)}(hjQh]h Description}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjPubh)}(hThis will free the loop in 'to', if any. This will assign ownership of the loop to the table, i.e. the table will free this loop when a call to its destroy function is made.h]hThis will free the loop in ‘to’, if any. This will assign ownership of the loop to the table, i.e. the table will free this loop when a call to its destroy function is made.}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjPubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j)vidtv_psi_pat_program_assign (C function)c.vidtv_psi_pat_program_assignhNtauh1jhjhhhNhNubj)}(hhh](j)}(hjvoid vidtv_psi_pat_program_assign (struct vidtv_psi_table_pat *pat, struct vidtv_psi_table_pat_program *p)h]j )}(hivoid vidtv_psi_pat_program_assign(struct vidtv_psi_table_pat *pat, struct vidtv_psi_table_pat_program *p)h](j)}(hvoidh]hvoid}(hjQhhhNhNubah}(h]h ]j$ah"]h$]h&]uh1jhjQhhh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMubj")}(h h]h }(hjQhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjQhhhjQhMubj3)}(hvidtv_psi_pat_program_assignh]j9)}(hvidtv_psi_pat_program_assignh]hvidtv_psi_pat_program_assign}(hjQhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjQubah}(h]h ](jKjLeh"]h$]h&]hhuh1j2hjQhhhjQhMubjP)}(hH(struct vidtv_psi_table_pat *pat, struct vidtv_psi_table_pat_program *p)h](jV)}(hstruct vidtv_psi_table_pat *path](j)}(hjh]hstruct}(hj RhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjRubj")}(h h]h }(hjRhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjRubh)}(hhh]j9)}(hvidtv_psi_table_path]hvidtv_psi_table_pat}(hj*RhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hj'Rubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj,RmodnameN classnameNjj)}j]j)}jjQsbc.vidtv_psi_pat_program_assignasbuh1hhjRubj")}(h h]h }(hjJRhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjRubj)}(hjh]h*}(hjXRhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjRubj9)}(hpath]hpat}(hjeRhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjRubeh}(h]h ]h"]h$]h&]noemphhhuh1jUhjRubjV)}(h%struct vidtv_psi_table_pat_program *ph](j)}(hjh]hstruct}(hj~RhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjzRubj")}(h h]h }(hjRhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjzRubh)}(hhh]j9)}(hvidtv_psi_table_pat_programh]hvidtv_psi_table_pat_program}(hjRhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjRubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjRmodnameN classnameNjj)}j]jFRc.vidtv_psi_pat_program_assignasbuh1hhjzRubj")}(h h]h }(hjRhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjzRubj)}(hjh]h*}(hjRhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjzRubj9)}(hjh]hp}(hjRhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjzRubeh}(h]h ]h"]h$]h&]noemphhhuh1jUhjRubeh}(h]h ]h"]h$]h&]hhuh1jOhjQhhhjQhMubeh}(h]h ]h"]h$]h&]hhjVuh1j jWjXhjQhhhjQhMubah}(h]jQah ](j\j]eh"]h$]h&]jajb)jchuh1jhjQhMhjQhhubje)}(hhh]h)}(h$Assigns the program loop to the PAT.h]h$Assigns the program loop to the PAT.}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjRhhubah}(h]h ]h"]h$]h&]uh1jdhjQhhhjQhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjSjjSjjjuh1jhhhjhNhNubj)}(hX~**Parameters** ``struct vidtv_psi_table_pat *pat`` The PAT to assign to. ``struct vidtv_psi_table_pat_program *p`` The program loop (one or more programs) **Description** This will free the previous program loop in the table. This will assign ownership of the program loop to the table, i.e. the table will free this program loop when a call to its destroy function is made.h](h)}(h**Parameters**h]j)}(hj Sh]h Parameters}(hj"ShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjSubjz)}(hhh](j)}(h:``struct vidtv_psi_table_pat *pat`` The PAT to assign to. h](j)}(h#``struct vidtv_psi_table_pat *pat``h]j )}(hj?Sh]hstruct vidtv_psi_table_pat *pat}(hjAShhhNhNubah}(h]h ]h"]h$]h&]uh1j hj=Subah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj9Subj)}(hhh]h)}(hThe PAT to assign to.h]hThe PAT to assign to.}(hjXShhhNhNubah}(h]h ]h"]h$]h&]uh1hhjTShMhjUSubah}(h]h ]h"]h$]h&]uh1jhj9Subeh}(h]h ]h"]h$]h&]uh1j~hjTShMhj6Subj)}(hR``struct vidtv_psi_table_pat_program *p`` The program loop (one or more programs) h](j)}(h)``struct vidtv_psi_table_pat_program *p``h]j )}(hjxSh]h%struct vidtv_psi_table_pat_program *p}(hjzShhhNhNubah}(h]h ]h"]h$]h&]uh1j hjvSubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjrSubj)}(hhh]h)}(h'The program loop (one or more programs)h]h'The program loop (one or more programs)}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhjShMhjSubah}(h]h ]h"]h$]h&]uh1jhjrSubeh}(h]h ]h"]h$]h&]uh1j~hjShMhj6Subeh}(h]h ]h"]h$]h&]uh1jyhjSubh)}(h**Description**h]j)}(hjSh]h Description}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjSubh)}(hThis will free the previous program loop in the table. This will assign ownership of the program loop to the table, i.e. the table will free this program loop when a call to its destroy function is made.h]hThis will free the previous program loop in the table. This will assign ownership of the program loop to the table, i.e. the table will free this program loop when a call to its destroy function is made.}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjSubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j(vidtv_psi_pmt_stream_assign (C function)c.vidtv_psi_pmt_stream_assignhNtauh1jhjhhhNhNubj)}(hhh](j)}(hhvoid vidtv_psi_pmt_stream_assign (struct vidtv_psi_table_pmt *pmt, struct vidtv_psi_table_pmt_stream *s)h]j )}(hgvoid vidtv_psi_pmt_stream_assign(struct vidtv_psi_table_pmt *pmt, struct vidtv_psi_table_pmt_stream *s)h](j)}(hvoidh]hvoid}(hjShhhNhNubah}(h]h ]j$ah"]h$]h&]uh1jhjShhh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMubj")}(h h]h }(hjThhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjShhhjThMubj3)}(hvidtv_psi_pmt_stream_assignh]j9)}(hvidtv_psi_pmt_stream_assignh]hvidtv_psi_pmt_stream_assign}(hjThhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjTubah}(h]h ](jKjLeh"]h$]h&]hhuh1j2hjShhhjThMubjP)}(hG(struct vidtv_psi_table_pmt *pmt, struct vidtv_psi_table_pmt_stream *s)h](jV)}(hstruct vidtv_psi_table_pmt *pmth](j)}(hjh]hstruct}(hj5ThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1Tubj")}(h h]h }(hjBThhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hj1Tubh)}(hhh]j9)}(hvidtv_psi_table_pmth]hvidtv_psi_table_pmt}(hjSThhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjPTubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjUTmodnameN classnameNjj)}j]j)}jjTsbc.vidtv_psi_pmt_stream_assignasbuh1hhj1Tubj")}(h h]h }(hjsThhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hj1Tubj)}(hjh]h*}(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1Tubj9)}(hpmth]hpmt}(hjThhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hj1Tubeh}(h]h ]h"]h$]h&]noemphhhuh1jUhj-TubjV)}(h$struct vidtv_psi_table_pmt_stream *sh](j)}(hjh]hstruct}(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjTubj")}(h h]h }(hjThhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjTubh)}(hhh]j9)}(hvidtv_psi_table_pmt_streamh]hvidtv_psi_table_pmt_stream}(hjThhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjTubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjTmodnameN classnameNjj)}j]joTc.vidtv_psi_pmt_stream_assignasbuh1hhjTubj")}(h h]h }(hjThhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjTubj)}(hjh]h*}(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjTubj9)}(hsh]hs}(hjThhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjTubeh}(h]h ]h"]h$]h&]noemphhhuh1jUhj-Tubeh}(h]h ]h"]h$]h&]hhuh1jOhjShhhjThMubeh}(h]h ]h"]h$]h&]hhjVuh1j jWjXhjShhhjThMubah}(h]jSah ](j\j]eh"]h$]h&]jajb)jchuh1jhjThMhjShhubje)}(hhh]h)}(h#Assigns the stream loop to the PAT.h]h#Assigns the stream loop to the PAT.}(hj(UhhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj%Uhhubah}(h]h ]h"]h$]h&]uh1jdhjShhhjThMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj@Ujj@Ujjjuh1jhhhjhNhNubj)}(hXx**Parameters** ``struct vidtv_psi_table_pmt *pmt`` The PMT to assign to. ``struct vidtv_psi_table_pmt_stream *s`` The stream loop (one or more streams) **Description** This will free the previous stream loop in the table. This will assign ownership of the stream loop to the table, i.e. the table will free this stream loop when a call to its destroy function is made.h](h)}(h**Parameters**h]j)}(hjJUh]h Parameters}(hjLUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHUubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjDUubjz)}(hhh](j)}(h:``struct vidtv_psi_table_pmt *pmt`` The PMT to assign to. h](j)}(h#``struct vidtv_psi_table_pmt *pmt``h]j )}(hjiUh]hstruct vidtv_psi_table_pmt *pmt}(hjkUhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjgUubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjcUubj)}(hhh]h)}(hThe PMT to assign to.h]hThe PMT to assign to.}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj~UhMhjUubah}(h]h ]h"]h$]h&]uh1jhjcUubeh}(h]h ]h"]h$]h&]uh1j~hj~UhMhj`Uubj)}(hO``struct vidtv_psi_table_pmt_stream *s`` The stream loop (one or more streams) h](j)}(h(``struct vidtv_psi_table_pmt_stream *s``h]j )}(hjUh]h$struct vidtv_psi_table_pmt_stream *s}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjUubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjUubj)}(hhh]h)}(h%The stream loop (one or more streams)h]h%The stream loop (one or more streams)}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjUhMhjUubah}(h]h ]h"]h$]h&]uh1jhjUubeh}(h]h ]h"]h$]h&]uh1j~hjUhMhj`Uubeh}(h]h ]h"]h$]h&]uh1jyhjDUubh)}(h**Description**h]j)}(hjUh]h Description}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjDUubh)}(hThis will free the previous stream loop in the table. This will assign ownership of the stream loop to the table, i.e. the table will free this stream loop when a call to its destroy function is made.h]hThis will free the previous stream loop in the table. This will assign ownership of the stream loop to the table, i.e. the table will free this stream loop when a call to its destroy function is made.}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjDUubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j8vidtv_psi_pmt_create_sec_for_each_pat_entry (C function)-c.vidtv_psi_pmt_create_sec_for_each_pat_entryhNtauh1jhjhhhNhNubj)}(hhh](j)}(hwstruct vidtv_psi_table_pmt** vidtv_psi_pmt_create_sec_for_each_pat_entry (struct vidtv_psi_table_pat *pat, u16 pcr_pid)h]j )}(hvstruct vidtv_psi_table_pmt **vidtv_psi_pmt_create_sec_for_each_pat_entry(struct vidtv_psi_table_pat *pat, u16 pcr_pid)h](j)}(hjh]hstruct}(hj"VhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVhhh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMubj")}(h h]h }(hj0VhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjVhhhj/VhMubh)}(hhh]j9)}(hvidtv_psi_table_pmth]hvidtv_psi_table_pmt}(hjAVhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hj>Vubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjCVmodnameN classnameNjj)}j]j)}j+vidtv_psi_pmt_create_sec_for_each_pat_entrysb-c.vidtv_psi_pmt_create_sec_for_each_pat_entryasbuh1hhjVhhhj/VhMubj")}(h h]h }(hjbVhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjVhhhj/VhMubj)}(hjh]h*}(hjpVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVhhhj/VhMubj)}(hjh]h*}(hj}VhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVhhhj/VhMubj3)}(h+vidtv_psi_pmt_create_sec_for_each_pat_entryh]j9)}(hj_Vh]h+vidtv_psi_pmt_create_sec_for_each_pat_entry}(hjVhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjVubah}(h]h ](jKjLeh"]h$]h&]hhuh1j2hjVhhhj/VhMubjP)}(h.(struct vidtv_psi_table_pat *pat, u16 pcr_pid)h](jV)}(hstruct vidtv_psi_table_pat *path](j)}(hjh]hstruct}(hjVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVubj")}(h h]h }(hjVhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjVubh)}(hhh]j9)}(hvidtv_psi_table_path]hvidtv_psi_table_pat}(hjVhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjVubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjVmodnameN classnameNjj)}j]j]V-c.vidtv_psi_pmt_create_sec_for_each_pat_entryasbuh1hhjVubj")}(h h]h }(hjVhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjVubj)}(hjh]h*}(hjVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVubj9)}(hpath]hpat}(hjWhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjVubeh}(h]h ]h"]h$]h&]noemphhhuh1jUhjVubjV)}(h u16 pcr_pidh](h)}(hhh]j9)}(hu16h]hu16}(hjWhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjWubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjWmodnameN classnameNjj)}j]j]V-c.vidtv_psi_pmt_create_sec_for_each_pat_entryasbuh1hhjWubj")}(h h]h }(hj:WhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjWubj9)}(hpcr_pidh]hpcr_pid}(hjHWhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjWubeh}(h]h ]h"]h$]h&]noemphhhuh1jUhjVubeh}(h]h ]h"]h$]h&]hhuh1jOhjVhhhj/VhMubeh}(h]h ]h"]h$]h&]hhjVuh1j jWjXhjVhhhj/VhMubah}(h]jVah ](j\j]eh"]h$]h&]jajb)jchuh1jhj/VhMhjVhhubje)}(hhh]h)}(h6Create a PMT section for each program found in the PATh]h6Create a PMT section for each program found in the PAT}(hjrWhhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjoWhhubah}(h]h ]h"]h$]h&]uh1jdhjVhhhj/VhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjWjjWjjjuh1jhhhjhNhNubj)}(h**Parameters** ``struct vidtv_psi_table_pat *pat`` The PAT to look for programs. ``u16 pcr_pid`` packet ID for the PCR to be used for the program described in this PMT sectionh](h)}(h**Parameters**h]j)}(hjWh]h Parameters}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjWubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjWubjz)}(hhh](j)}(hB``struct vidtv_psi_table_pat *pat`` The PAT to look for programs. h](j)}(h#``struct vidtv_psi_table_pat *pat``h]j )}(hjWh]hstruct vidtv_psi_table_pat *pat}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjWubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjWubj)}(hhh]h)}(hThe PAT to look for programs.h]hThe PAT to look for programs.}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjWhMhjWubah}(h]h ]h"]h$]h&]uh1jhjWubeh}(h]h ]h"]h$]h&]uh1j~hjWhMhjWubj)}(h^``u16 pcr_pid`` packet ID for the PCR to be used for the program described in this PMT sectionh](j)}(h``u16 pcr_pid``h]j )}(hjWh]h u16 pcr_pid}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjWubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjWubj)}(hhh]h)}(hNpacket ID for the PCR to be used for the program described in this PMT sectionh]hNpacket ID for the PCR to be used for the program described in this PMT section}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjXhMhjXubah}(h]h ]h"]h$]h&]uh1jhjWubeh}(h]h ]h"]h$]h&]uh1j~hjXhMhjWubeh}(h]h ]h"]h$]h&]uh1jyhjWubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j"vidtv_psi_pmt_get_pid (C function)c.vidtv_psi_pmt_get_pidhNtauh1jhjhhhNhNubj)}(hhh](j)}(h`u16 vidtv_psi_pmt_get_pid (struct vidtv_psi_table_pmt *section, struct vidtv_psi_table_pat *pat)h]j )}(h_u16 vidtv_psi_pmt_get_pid(struct vidtv_psi_table_pmt *section, struct vidtv_psi_table_pat *pat)h](h)}(hhh]j9)}(hu16h]hu16}(hjHXhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjEXubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjJXmodnameN classnameNjj)}j]j)}jvidtv_psi_pmt_get_pidsbc.vidtv_psi_pmt_get_pidasbuh1hhjAXhhh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMubj")}(h h]h }(hjjXhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjAXhhhjiXhMubj3)}(hvidtv_psi_pmt_get_pidh]j9)}(hjfXh]hvidtv_psi_pmt_get_pid}(hj|XhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjxXubah}(h]h ](jKjLeh"]h$]h&]hhuh1j2hjAXhhhjiXhMubjP)}(hF(struct vidtv_psi_table_pmt *section, struct vidtv_psi_table_pat *pat)h](jV)}(h#struct vidtv_psi_table_pmt *sectionh](j)}(hjh]hstruct}(hjXhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjXubj")}(h h]h }(hjXhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjXubh)}(hhh]j9)}(hvidtv_psi_table_pmth]hvidtv_psi_table_pmt}(hjXhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjXubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjXmodnameN classnameNjj)}j]jdXc.vidtv_psi_pmt_get_pidasbuh1hhjXubj")}(h h]h }(hjXhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjXubj)}(hjh]h*}(hjXhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjXubj9)}(hsectionh]hsection}(hjXhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjXubeh}(h]h ]h"]h$]h&]noemphhhuh1jUhjXubjV)}(hstruct vidtv_psi_table_pat *path](j)}(hjh]hstruct}(hjYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubj")}(h h]h }(hjYhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjYubh)}(hhh]j9)}(hvidtv_psi_table_path]hvidtv_psi_table_pat}(hj%YhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hj"Yubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj'YmodnameN classnameNjj)}j]jdXc.vidtv_psi_pmt_get_pidasbuh1hhjYubj")}(h h]h }(hjCYhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjYubj)}(hjh]h*}(hjQYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubj9)}(hpath]hpat}(hj^YhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjYubeh}(h]h ]h"]h$]h&]noemphhhuh1jUhjXubeh}(h]h ]h"]h$]h&]hhuh1jOhjAXhhhjiXhMubeh}(h]h ]h"]h$]h&]hhjVuh1j jWjXhj=XhhhjiXhMubah}(h]j8Xah ](j\j]eh"]h$]h&]jajb)jchuh1jhjiXhMhj:Xhhubje)}(hhh]h)}(h!Get the TS PID for a PMT section.h]h!Get the TS PID for a PMT section.}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjYhhubah}(h]h ]h"]h$]h&]uh1jdhj:XhhhjiXhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjYjjYjjjuh1jhhhjhNhNubj)}(h**Parameters** ``struct vidtv_psi_table_pmt *section`` The PMT section whose PID we want to retrieve. ``struct vidtv_psi_table_pat *pat`` The PAT table to look into. **Return** the TS PID for 'section'h](h)}(h**Parameters**h]j)}(hjYh]h Parameters}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjYubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjYubjz)}(hhh](j)}(hW``struct vidtv_psi_table_pmt *section`` The PMT section whose PID we want to retrieve. h](j)}(h'``struct vidtv_psi_table_pmt *section``h]j )}(hjYh]h#struct vidtv_psi_table_pmt *section}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjYubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjYubj)}(hhh]h)}(h.The PMT section whose PID we want to retrieve.h]h.The PMT section whose PID we want to retrieve.}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjYhMhjYubah}(h]h ]h"]h$]h&]uh1jhjYubeh}(h]h ]h"]h$]h&]uh1j~hjYhMhjYubj)}(h@``struct vidtv_psi_table_pat *pat`` The PAT table to look into. h](j)}(h#``struct vidtv_psi_table_pat *pat``h]j )}(hjZh]hstruct vidtv_psi_table_pat *pat}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjZubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjYubj)}(hhh]h)}(hThe PAT table to look into.h]hThe PAT table to look into.}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjZhMhjZubah}(h]h ]h"]h$]h&]uh1jhjYubeh}(h]h ]h"]h$]h&]uh1j~hjZhMhjYubeh}(h]h ]h"]h$]h&]uh1jyhjYubh)}(h **Return**h]j)}(hj=Zh]hReturn}(hj?ZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;Zubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjYubh)}(hthe TS PID for 'section'h]hthe TS PID for ‘section’}(hjSZhhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjYubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j/vidtv_psi_pat_table_update_sec_len (C function)$c.vidtv_psi_pat_table_update_sec_lenhNtauh1jhjhhhNhNubj)}(hhh](j)}(hIvoid vidtv_psi_pat_table_update_sec_len (struct vidtv_psi_table_pat *pat)h]j )}(hHvoid vidtv_psi_pat_table_update_sec_len(struct vidtv_psi_table_pat *pat)h](j)}(hvoidh]hvoid}(hjZhhhNhNubah}(h]h ]j$ah"]h$]h&]uh1jhj~Zhhh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMubj")}(h h]h }(hjZhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hj~ZhhhjZhMubj3)}(h"vidtv_psi_pat_table_update_sec_lenh]j9)}(h"vidtv_psi_pat_table_update_sec_lenh]h"vidtv_psi_pat_table_update_sec_len}(hjZhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjZubah}(h]h ](jKjLeh"]h$]h&]hhuh1j2hj~ZhhhjZhMubjP)}(h!(struct vidtv_psi_table_pat *pat)h]jV)}(hstruct vidtv_psi_table_pat *path](j)}(hjh]hstruct}(hjZhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjZubj")}(h h]h }(hjZhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjZubh)}(hhh]j9)}(hvidtv_psi_table_path]hvidtv_psi_table_pat}(hjZhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjZubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjZmodnameN classnameNjj)}j]j)}jjZsb$c.vidtv_psi_pat_table_update_sec_lenasbuh1hhjZubj")}(h h]h }(hjZhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjZubj)}(hjh]h*}(hj [hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjZubj9)}(hpath]hpat}(hj[hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjZubeh}(h]h ]h"]h$]h&]noemphhhuh1jUhjZubah}(h]h ]h"]h$]h&]hhuh1jOhj~ZhhhjZhMubeh}(h]h ]h"]h$]h&]hhjVuh1j jWjXhjzZhhhjZhMubah}(h]juZah ](j\j]eh"]h$]h&]jajb)jchuh1jhjZhMhjwZhhubje)}(hhh]h)}(h,Recompute and update the PAT section length.h]h,Recompute and update the PAT section length.}(hjB[hhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj?[hhubah}(h]h ]h"]h$]h&]uh1jdhjwZhhhjZhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjZ[jjZ[jjjuh1jhhhjhNhNubj)}(hX-**Parameters** ``struct vidtv_psi_table_pat *pat`` The PAT whose length is to be updated. **Description** This will traverse the table and accumulate the length of its components, which is then used to replace the 'section_length' field. If section_length > MAX_SECTION_LEN, the operation fails.h](h)}(h**Parameters**h]j)}(hjd[h]h Parameters}(hjf[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjb[ubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj^[ubjz)}(hhh]j)}(hK``struct vidtv_psi_table_pat *pat`` The PAT whose length is to be updated. h](j)}(h#``struct vidtv_psi_table_pat *pat``h]j )}(hj[h]hstruct vidtv_psi_table_pat *pat}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj[ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj}[ubj)}(hhh]h)}(h&The PAT whose length is to be updated.h]h&The PAT whose length is to be updated.}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj[hMhj[ubah}(h]h ]h"]h$]h&]uh1jhj}[ubeh}(h]h ]h"]h$]h&]uh1j~hj[hMhjz[ubah}(h]h ]h"]h$]h&]uh1jyhj^[ubh)}(h**Description**h]j)}(hj[h]h Description}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[ubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj^[ubh)}(hThis will traverse the table and accumulate the length of its components, which is then used to replace the 'section_length' field.h]hThis will traverse the table and accumulate the length of its components, which is then used to replace the ‘section_length’ field.}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj^[ubh)}(h9If section_length > MAX_SECTION_LEN, the operation fails.h]h9If section_length > MAX_SECTION_LEN, the operation fails.}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj^[ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j/vidtv_psi_pmt_table_update_sec_len (C function)$c.vidtv_psi_pmt_table_update_sec_lenhNtauh1jhjhhhNhNubj)}(hhh](j)}(hIvoid vidtv_psi_pmt_table_update_sec_len (struct vidtv_psi_table_pmt *pmt)h]j )}(hHvoid vidtv_psi_pmt_table_update_sec_len(struct vidtv_psi_table_pmt *pmt)h](j)}(hvoidh]hvoid}(hj\hhhNhNubah}(h]h ]j$ah"]h$]h&]uh1jhj\hhh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMubj")}(h h]h }(hj!\hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hj\hhhj \hMubj3)}(h"vidtv_psi_pmt_table_update_sec_lenh]j9)}(h"vidtv_psi_pmt_table_update_sec_lenh]h"vidtv_psi_pmt_table_update_sec_len}(hj3\hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hj/\ubah}(h]h ](jKjLeh"]h$]h&]hhuh1j2hj\hhhj \hMubjP)}(h!(struct vidtv_psi_table_pmt *pmt)h]jV)}(hstruct vidtv_psi_table_pmt *pmth](j)}(hjh]hstruct}(hjO\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjK\ubj")}(h h]h }(hj\\hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjK\ubh)}(hhh]j9)}(hvidtv_psi_table_pmth]hvidtv_psi_table_pmt}(hjm\hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjj\ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjo\modnameN classnameNjj)}j]j)}jj5\sb$c.vidtv_psi_pmt_table_update_sec_lenasbuh1hhjK\ubj")}(h h]h }(hj\hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjK\ubj)}(hjh]h*}(hj\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjK\ubj9)}(hpmth]hpmt}(hj\hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjK\ubeh}(h]h ]h"]h$]h&]noemphhhuh1jUhjG\ubah}(h]h ]h"]h$]h&]hhuh1jOhj\hhhj \hMubeh}(h]h ]h"]h$]h&]hhjVuh1j jWjXhj \hhhj \hMubah}(h]j\ah ](j\j]eh"]h$]h&]jajb)jchuh1jhj \hMhj\hhubje)}(hhh]h)}(h,Recompute and update the PMT section length.h]h,Recompute and update the PMT section length.}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj\hhubah}(h]h ]h"]h$]h&]uh1jdhj\hhhj \hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj\jj\jjjuh1jhhhjhNhNubj)}(hX-**Parameters** ``struct vidtv_psi_table_pmt *pmt`` The PMT whose length is to be updated. **Description** This will traverse the table and accumulate the length of its components, which is then used to replace the 'section_length' field. If section_length > MAX_SECTION_LEN, the operation fails.h](h)}(h**Parameters**h]j)}(hj\h]h Parameters}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj\ubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj\ubjz)}(hhh]j)}(hK``struct vidtv_psi_table_pmt *pmt`` The PMT whose length is to be updated. h](j)}(h#``struct vidtv_psi_table_pmt *pmt``h]j )}(hj]h]hstruct vidtv_psi_table_pmt *pmt}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj]ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj ]ubj)}(hhh]h)}(h&The PMT whose length is to be updated.h]h&The PMT whose length is to be updated.}(hj,]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj(]hMhj)]ubah}(h]h ]h"]h$]h&]uh1jhj ]ubeh}(h]h ]h"]h$]h&]uh1j~hj(]hMhj ]ubah}(h]h ]h"]h$]h&]uh1jyhj\ubh)}(h**Description**h]j)}(hjN]h]h Description}(hjP]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjL]ubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj\ubh)}(hThis will traverse the table and accumulate the length of its components, which is then used to replace the 'section_length' field.h]hThis will traverse the table and accumulate the length of its components, which is then used to replace the ‘section_length’ field.}(hjd]hhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj\ubh)}(h9If section_length > MAX_SECTION_LEN, the operation fails.h]h9If section_length > MAX_SECTION_LEN, the operation fails.}(hjs]hhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj\ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j/vidtv_psi_sdt_table_update_sec_len (C function)$c.vidtv_psi_sdt_table_update_sec_lenhNtauh1jhjhhhNhNubj)}(hhh](j)}(hIvoid vidtv_psi_sdt_table_update_sec_len (struct vidtv_psi_table_sdt *sdt)h]j )}(hHvoid vidtv_psi_sdt_table_update_sec_len(struct vidtv_psi_table_sdt *sdt)h](j)}(hvoidh]hvoid}(hj]hhhNhNubah}(h]h ]j$ah"]h$]h&]uh1jhj]hhh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMubj")}(h h]h }(hj]hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hj]hhhj]hMubj3)}(h"vidtv_psi_sdt_table_update_sec_lenh]j9)}(h"vidtv_psi_sdt_table_update_sec_lenh]h"vidtv_psi_sdt_table_update_sec_len}(hj]hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hj]ubah}(h]h ](jKjLeh"]h$]h&]hhuh1j2hj]hhhj]hMubjP)}(h!(struct vidtv_psi_table_sdt *sdt)h]jV)}(hstruct vidtv_psi_table_sdt *sdth](j)}(hjh]hstruct}(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]ubj")}(h h]h }(hj]hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hj]ubh)}(hhh]j9)}(hvidtv_psi_table_sdth]hvidtv_psi_table_sdt}(hj]hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hj]ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj]modnameN classnameNjj)}j]j)}jj]sb$c.vidtv_psi_sdt_table_update_sec_lenasbuh1hhj]ubj")}(h h]h }(hj^hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hj]ubj)}(hjh]h*}(hj+^hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]ubj9)}(hsdth]hsdt}(hj8^hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hj]ubeh}(h]h ]h"]h$]h&]noemphhhuh1jUhj]ubah}(h]h ]h"]h$]h&]hhuh1jOhj]hhhj]hMubeh}(h]h ]h"]h$]h&]hhjVuh1j jWjXhj]hhhj]hMubah}(h]j]ah ](j\j]eh"]h$]h&]jajb)jchuh1jhj]hMhj]hhubje)}(hhh]h)}(h,Recompute and update the SDT section length.h]h,Recompute and update the SDT section length.}(hjb^hhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj_^hhubah}(h]h ]h"]h$]h&]uh1jdhj]hhhj]hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjz^jjz^jjjuh1jhhhjhNhNubj)}(hX-**Parameters** ``struct vidtv_psi_table_sdt *sdt`` The SDT whose length is to be updated. **Description** This will traverse the table and accumulate the length of its components, which is then used to replace the 'section_length' field. If section_length > MAX_SECTION_LEN, the operation fails.h](h)}(h**Parameters**h]j)}(hj^h]h Parameters}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^ubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhM hj~^ubjz)}(hhh]j)}(hK``struct vidtv_psi_table_sdt *sdt`` The SDT whose length is to be updated. h](j)}(h#``struct vidtv_psi_table_sdt *sdt``h]j )}(hj^h]hstruct vidtv_psi_table_sdt *sdt}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj^ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj^ubj)}(hhh]h)}(h&The SDT whose length is to be updated.h]h&The SDT whose length is to be updated.}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj^hMhj^ubah}(h]h ]h"]h$]h&]uh1jhj^ubeh}(h]h ]h"]h$]h&]uh1j~hj^hMhj^ubah}(h]h ]h"]h$]h&]uh1jyhj~^ubh)}(h**Description**h]j)}(hj^h]h Description}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^ubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhM hj~^ubh)}(hThis will traverse the table and accumulate the length of its components, which is then used to replace the 'section_length' field.h]hThis will traverse the table and accumulate the length of its components, which is then used to replace the ‘section_length’ field.}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhM hj~^ubh)}(h9If section_length > MAX_SECTION_LEN, the operation fails.h]h9If section_length > MAX_SECTION_LEN, the operation fails.}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhM hj~^ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j#vidtv_psi_pat_write_args (C struct)c.vidtv_psi_pat_write_argshNtauh1jhjhhhNhNubj)}(hhh](j)}(hvidtv_psi_pat_write_argsh]j )}(hstruct vidtv_psi_pat_write_argsh](j)}(hjh]hstruct}(hj2_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj._hhh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMubj")}(h h]h }(hj@_hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hj._hhhj?_hMubj3)}(hvidtv_psi_pat_write_argsh]j9)}(hj,_h]hvidtv_psi_pat_write_args}(hjR_hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjN_ubah}(h]h ](jKjLeh"]h$]h&]hhuh1j2hj._hhhj?_hMubeh}(h]h ]h"]h$]h&]hhjVuh1j jWjXhj*_hhhj?_hMubah}(h]j%_ah ](j\j]eh"]h$]h&]jajb)jchuh1jhj?_hMhj'_hhubje)}(hhh]h)}(h!Arguments for writing a PAT tableh]h!Arguments for writing a PAT table}(hjt_hhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjq_hhubah}(h]h ]h"]h$]h&]uh1jdhj'_hhhj?_hMubeh}(h]h ](jstructeh"]h$]h&]jjjj_jj_jjjuh1jhhhjhNhNubj)}(hX**Definition**:: struct vidtv_psi_pat_write_args { char *buf; u32 offset; struct vidtv_psi_table_pat *pat; u32 buf_sz; u8 *continuity_counter; }; **Members** ``buf`` The destination buffer. ``offset`` The offset into the destination buffer. ``pat`` A pointer to the PAT. ``buf_sz`` The size of the destination buffer. ``continuity_counter`` A pointer to the CC. Incremented on every new packet.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/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj_ubj)}(hstruct vidtv_psi_pat_write_args { char *buf; u32 offset; struct vidtv_psi_table_pat *pat; u32 buf_sz; u8 *continuity_counter; };h]hstruct vidtv_psi_pat_write_args { char *buf; u32 offset; struct vidtv_psi_table_pat *pat; u32 buf_sz; u8 *continuity_counter; };}hj_sbah}(h]h ]h"]h$]h&]hhuh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj_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/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhM hj_ubjz)}(hhh](j)}(h ``buf`` The destination buffer. h](j)}(h``buf``h]j )}(hj_h]hbuf}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj_ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj_ubj)}(hhh]h)}(hThe destination buffer.h]hThe destination buffer.}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj_hMhj_ubah}(h]h ]h"]h$]h&]uh1jhj_ubeh}(h]h ]h"]h$]h&]uh1j~hj_hMhj_ubj)}(h3``offset`` The offset into the destination buffer. h](j)}(h ``offset``h]j )}(hj`h]hoffset}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj`ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj`ubj)}(hhh]h)}(h'The offset into the destination buffer.h]h'The offset into the destination buffer.}(hj3`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/`hMhj0`ubah}(h]h ]h"]h$]h&]uh1jhj`ubeh}(h]h ]h"]h$]h&]uh1j~hj/`hMhj_ubj)}(h``pat`` A pointer to the PAT. h](j)}(h``pat``h]j )}(hjS`h]hpat}(hjU`hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjQ`ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjM`ubj)}(hhh]h)}(hA pointer to the PAT.h]hA pointer to the PAT.}(hjl`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjh`hMhji`ubah}(h]h ]h"]h$]h&]uh1jhjM`ubeh}(h]h ]h"]h$]h&]uh1j~hjh`hMhj_ubj)}(h/``buf_sz`` The size of the destination buffer. h](j)}(h ``buf_sz``h]j )}(hj`h]hbuf_sz}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj`ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj`ubj)}(hhh]h)}(h#The size of the destination buffer.h]h#The size of the destination buffer.}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj`hMhj`ubah}(h]h ]h"]h$]h&]uh1jhj`ubeh}(h]h ]h"]h$]h&]uh1j~hj`hMhj_ubj)}(hL``continuity_counter`` A pointer to the CC. Incremented on every new packet.h](j)}(h``continuity_counter``h]j )}(hj`h]hcontinuity_counter}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj`ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj`ubj)}(hhh]h)}(h5A pointer to the CC. Incremented on every new packet.h]h5A pointer to the CC. Incremented on every new packet.}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj`ubah}(h]h ]h"]h$]h&]uh1jhj`ubeh}(h]h ]h"]h$]h&]uh1j~hj`hMhj_ubeh}(h]h ]h"]h$]h&]uh1jyhj_ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j%vidtv_psi_pat_write_into (C function)c.vidtv_psi_pat_write_intohNtauh1jhjhhhNhNubj)}(hhh](j)}(hDu32 vidtv_psi_pat_write_into (struct vidtv_psi_pat_write_args *args)h]j )}(hCu32 vidtv_psi_pat_write_into(struct vidtv_psi_pat_write_args *args)h](h)}(hhh]j9)}(hu32h]hu32}(hj"ahhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjaubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj$amodnameN classnameNjj)}j]j)}jvidtv_psi_pat_write_intosbc.vidtv_psi_pat_write_intoasbuh1hhjahhh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhM#ubj")}(h h]h }(hjDahhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjahhhjCahM#ubj3)}(hvidtv_psi_pat_write_intoh]j9)}(hj@ah]hvidtv_psi_pat_write_into}(hjVahhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjRaubah}(h]h ](jKjLeh"]h$]h&]hhuh1j2hjahhhjCahM#ubjP)}(h'(struct vidtv_psi_pat_write_args *args)h]jV)}(h%struct vidtv_psi_pat_write_args *argsh](j)}(hjh]hstruct}(hjqahhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjmaubj")}(h h]h }(hj~ahhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjmaubh)}(hhh]j9)}(hvidtv_psi_pat_write_argsh]hvidtv_psi_pat_write_args}(hjahhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjaubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjamodnameN classnameNjj)}j]j>ac.vidtv_psi_pat_write_intoasbuh1hhjmaubj")}(h h]h }(hjahhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjmaubj)}(hjh]h*}(hjahhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjmaubj9)}(hargsh]hargs}(hjahhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjmaubeh}(h]h ]h"]h$]h&]noemphhhuh1jUhjiaubah}(h]h ]h"]h$]h&]hhuh1jOhjahhhjCahM#ubeh}(h]h ]h"]h$]h&]hhjVuh1j jWjXhjahhhjCahM#ubah}(h]jaah ](j\j]eh"]h$]h&]jajb)jchuh1jhjCahM#hjahhubje)}(hhh]h)}(h+Write PAT as MPEG-TS packets into a buffer.h]h+Write PAT as MPEG-TS packets into a buffer.}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhM#hjahhubah}(h]h ]h"]h$]h&]uh1jdhjahhhjCahM#ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj bjj bjjjuh1jhhhjhNhNubj)}(hX**Parameters** ``struct vidtv_psi_pat_write_args *args`` An instance of struct vidtv_psi_pat_write_args **Description** This function writes the MPEG TS packets for a PAT table into a buffer. Calling code will usually generate the PAT via a call to its init function and thus is responsible for freeing it. **Return** The number of bytes written into the buffer. This is NOT equal to the size of the PAT, since more space is needed for TS headers during TS encapsulation.h](h)}(h**Parameters**h]j)}(hjbh]h Parameters}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhM'hjbubjz)}(hhh]j)}(hY``struct vidtv_psi_pat_write_args *args`` An instance of struct vidtv_psi_pat_write_args h](j)}(h)``struct vidtv_psi_pat_write_args *args``h]j )}(hj3bh]h%struct vidtv_psi_pat_write_args *args}(hj5bhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj1bubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhM$hj-bubj)}(hhh]h)}(h.An instance of struct vidtv_psi_pat_write_argsh]h.An instance of struct vidtv_psi_pat_write_args}(hjLbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjHbhM$hjIbubah}(h]h ]h"]h$]h&]uh1jhj-bubeh}(h]h ]h"]h$]h&]uh1j~hjHbhM$hj*bubah}(h]h ]h"]h$]h&]uh1jyhjbubh)}(h**Description**h]j)}(hjnbh]h Description}(hjpbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjlbubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhM&hjbubh)}(hThis function writes the MPEG TS packets for a PAT table into a buffer. Calling code will usually generate the PAT via a call to its init function and thus is responsible for freeing it.h]hThis function writes the MPEG TS packets for a PAT table into a buffer. Calling code will usually generate the PAT via a call to its init function and thus is responsible for freeing it.}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhM%hjbubh)}(h **Return**h]j)}(hjbh]hReturn}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhM)hjbubh)}(hThe number of bytes written into the buffer. This is NOT equal to the size of the PAT, since more space is needed for TS headers during TS encapsulation.h]hThe number of bytes written into the buffer. This is NOT equal to the size of the PAT, since more space is needed for TS headers during TS encapsulation.}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhM*hjbubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j#vidtv_psi_sdt_write_args (C struct)c.vidtv_psi_sdt_write_argshNtauh1jhjhhhNhNubj)}(hhh](j)}(hvidtv_psi_sdt_write_argsh]j )}(hstruct vidtv_psi_sdt_write_argsh](j)}(hjh]hstruct}(hjbhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjbhhh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhM1ubj")}(h h]h }(hjbhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjbhhhjbhM1ubj3)}(hvidtv_psi_sdt_write_argsh]j9)}(hjbh]hvidtv_psi_sdt_write_args}(hjbhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjbubah}(h]h ](jKjLeh"]h$]h&]hhuh1j2hjbhhhjbhM1ubeh}(h]h ]h"]h$]h&]hhjVuh1j jWjXhjbhhhjbhM1ubah}(h]jbah ](j\j]eh"]h$]h&]jajb)jchuh1jhjbhM1hjbhhubje)}(hhh]h)}(h!Arguments for writing a SDT tableh]h!Arguments for writing a SDT table}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhM1hjchhubah}(h]h ]h"]h$]h&]uh1jdhjbhhhjbhM1ubeh}(h]h ](jstructeh"]h$]h&]jjjj4cjj4cjjjuh1jhhhjhNhNubj)}(hX**Definition**:: struct vidtv_psi_sdt_write_args { char *buf; u32 offset; struct vidtv_psi_table_sdt *sdt; u32 buf_sz; u8 *continuity_counter; }; **Members** ``buf`` The destination buffer. ``offset`` The offset into the destination buffer. ``sdt`` A pointer to the SDT. ``buf_sz`` The size of the destination buffer. ``continuity_counter`` A pointer to the CC. Incremented on every new packet.h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj@chhhNhNubah}(h]h ]h"]h$]h&]uh1jhjrubah}(h]h ]h"]h$]h&]uh1jhj"rubeh}(h]h ]h"]h$]h&]uh1j~hj=rhMhjqubj)}(h``nit`` A pointer to the NIT h](j)}(h``nit``h]j )}(hjarh]hnit}(hjcrhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj_rubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj[rubj)}(hhh]h)}(hA pointer to the NITh]hA pointer to the NIT}(hjzrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjvrhMhjwrubah}(h]h ]h"]h$]h&]uh1jhj[rubeh}(h]h ]h"]h$]h&]uh1j~hjvrhMhjqubj)}(h/``buf_sz`` The size of the destination buffer. h](j)}(h ``buf_sz``h]j )}(hjrh]hbuf_sz}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjrubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjrubj)}(hhh]h)}(h#The size of the destination buffer.h]h#The size of the destination buffer.}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjrhMhjrubah}(h]h ]h"]h$]h&]uh1jhjrubeh}(h]h ]h"]h$]h&]uh1j~hjrhMhjqubj)}(hL``continuity_counter`` A pointer to the CC. Incremented on every new packet.h](j)}(h``continuity_counter``h]j )}(hjrh]hcontinuity_counter}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjrubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjrubj)}(hhh]h)}(h5A pointer to the CC. Incremented on every new packet.h]h5A pointer to the CC. Incremented on every new packet.}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjrubah}(h]h ]h"]h$]h&]uh1jhjrubeh}(h]h ]h"]h$]h&]uh1j~hjrhMhjqubeh}(h]h ]h"]h$]h&]uh1jyhjqubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j%vidtv_psi_nit_write_into (C function)c.vidtv_psi_nit_write_intohNtauh1jhjhhhNhNubj)}(hhh](j)}(hDu32 vidtv_psi_nit_write_into (struct vidtv_psi_nit_write_args *args)h]j )}(hCu32 vidtv_psi_nit_write_into(struct vidtv_psi_nit_write_args *args)h](h)}(hhh]j9)}(hu32h]hu32}(hj0shhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hj-subah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj2smodnameN classnameNjj)}j]j)}jvidtv_psi_nit_write_intosbc.vidtv_psi_nit_write_intoasbuh1hhj)shhh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMubj")}(h h]h }(hjRshhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hj)shhhjQshMubj3)}(hvidtv_psi_nit_write_intoh]j9)}(hjNsh]hvidtv_psi_nit_write_into}(hjdshhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hj`subah}(h]h ](jKjLeh"]h$]h&]hhuh1j2hj)shhhjQshMubjP)}(h'(struct vidtv_psi_nit_write_args *args)h]jV)}(h%struct vidtv_psi_nit_write_args *argsh](j)}(hjh]hstruct}(hjshhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj{subj")}(h h]h }(hjshhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hj{subh)}(hhh]j9)}(hvidtv_psi_nit_write_argsh]hvidtv_psi_nit_write_args}(hjshhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjsubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjsmodnameN classnameNjj)}j]jLsc.vidtv_psi_nit_write_intoasbuh1hhj{subj")}(h h]h }(hjshhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hj{subj)}(hjh]h*}(hjshhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj{subj9)}(hargsh]hargs}(hjshhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hj{subeh}(h]h ]h"]h$]h&]noemphhhuh1jUhjwsubah}(h]h ]h"]h$]h&]hhuh1jOhj)shhhjQshMubeh}(h]h ]h"]h$]h&]hhjVuh1j jWjXhj%shhhjQshMubah}(h]j sah ](j\j]eh"]h$]h&]jajb)jchuh1jhjQshMhj"shhubje)}(hhh]h)}(h+Write NIT as MPEG-TS packets into a buffer.h]h+Write NIT as MPEG-TS packets into a buffer.}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjshhubah}(h]h ]h"]h$]h&]uh1jdhj"shhhjQshMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjtjjtjjjuh1jhhhjhNhNubj)}(hX**Parameters** ``struct vidtv_psi_nit_write_args *args`` an instance of struct vidtv_psi_nit_write_args **Description** This function writes the MPEG TS packets for a NIT table into a buffer. Calling code will usually generate the NIT via a call to its init function and thus is responsible for freeing it. **Return** The number of bytes written into the buffer. This is NOT equal to the size of the NIT, since more space is needed for TS headers during TS encapsulation.h](h)}(h**Parameters**h]j)}(hj"th]h Parameters}(hj$thhhNhNubah}(h]h ]h"]h$]h&]uh1jhj tubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjtubjz)}(hhh]j)}(hY``struct vidtv_psi_nit_write_args *args`` an instance of struct vidtv_psi_nit_write_args h](j)}(h)``struct vidtv_psi_nit_write_args *args``h]j )}(hjAth]h%struct vidtv_psi_nit_write_args *args}(hjCthhhNhNubah}(h]h ]h"]h$]h&]uh1j hj?tubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj;tubj)}(hhh]h)}(h.an instance of struct vidtv_psi_nit_write_argsh]h.an instance of struct vidtv_psi_nit_write_args}(hjZthhhNhNubah}(h]h ]h"]h$]h&]uh1hhjVthMhjWtubah}(h]h ]h"]h$]h&]uh1jhj;tubeh}(h]h ]h"]h$]h&]uh1j~hjVthMhj8tubah}(h]h ]h"]h$]h&]uh1jyhjtubh)}(h**Description**h]j)}(hj|th]h Description}(hj~thhhNhNubah}(h]h ]h"]h$]h&]uh1jhjztubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjtubh)}(hThis function writes the MPEG TS packets for a NIT table into a buffer. Calling code will usually generate the NIT via a call to its init function and thus is responsible for freeing it.h]hThis function writes the MPEG TS packets for a NIT table into a buffer. Calling code will usually generate the NIT via a call to its init function and thus is responsible for freeing it.}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjtubh)}(h **Return**h]j)}(hjth]hReturn}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjtubh)}(hThe number of bytes written into the buffer. This is NOT equal to the size of the NIT, since more space is needed for TS headers during TS encapsulation.h]hThe number of bytes written into the buffer. This is NOT equal to the size of the NIT, since more space is needed for TS headers during TS encapsulation.}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjtubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j#vidtv_psi_eit_write_args (C struct)c.vidtv_psi_eit_write_argshNtauh1jhjhhhNhNubj)}(hhh](j)}(hvidtv_psi_eit_write_argsh]j )}(hstruct vidtv_psi_eit_write_argsh](j)}(hjh]hstruct}(hjthhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjthhh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMubj")}(h h]h }(hjthhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjthhhjthMubj3)}(hvidtv_psi_eit_write_argsh]j9)}(hjth]hvidtv_psi_eit_write_args}(hjuhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjuubah}(h]h ](jKjLeh"]h$]h&]hhuh1j2hjthhhjthMubeh}(h]h ]h"]h$]h&]hhjVuh1j jWjXhjthhhjthMubah}(h]jtah ](j\j]eh"]h$]h&]jajb)jchuh1jhjthMhjthhubje)}(hhh]h)}(h$Arguments for writing an EIT sectionh]h$Arguments for writing an EIT section}(hj*uhhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj'uhhubah}(h]h ]h"]h$]h&]uh1jdhjthhhjthMubeh}(h]h ](jstructeh"]h$]h&]jjjjBujjBujjjuh1jhhhjhNhNubj)}(hX**Definition**:: struct vidtv_psi_eit_write_args { char *buf; u32 offset; struct vidtv_psi_table_eit *eit; u32 buf_sz; u8 *continuity_counter; }; **Members** ``buf`` The destination buffer. ``offset`` The offset into the destination buffer. ``eit`` A pointer to the EIT ``buf_sz`` The size of the destination buffer. ``continuity_counter`` A pointer to the CC. Incremented on every new packet.h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjNuhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJuubh:}(hjJuhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjFuubj)}(hstruct vidtv_psi_eit_write_args { char *buf; u32 offset; struct vidtv_psi_table_eit *eit; u32 buf_sz; u8 *continuity_counter; };h]hstruct vidtv_psi_eit_write_args { char *buf; u32 offset; struct vidtv_psi_table_eit *eit; u32 buf_sz; u8 *continuity_counter; };}hjgusbah}(h]h ]h"]h$]h&]hhuh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjFuubh)}(h **Members**h]j)}(hjxuh]hMembers}(hjzuhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjvuubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjFuubjz)}(hhh](j)}(h ``buf`` The destination buffer. h](j)}(h``buf``h]j )}(hjuh]hbuf}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjuubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjuubj)}(hhh]h)}(hThe destination buffer.h]hThe destination buffer.}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjuhMhjuubah}(h]h ]h"]h$]h&]uh1jhjuubeh}(h]h ]h"]h$]h&]uh1j~hjuhMhjuubj)}(h3``offset`` The offset into the destination buffer. h](j)}(h ``offset``h]j )}(hjuh]hoffset}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjuubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjuubj)}(hhh]h)}(h'The offset into the destination buffer.h]h'The offset into the destination buffer.}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjuhMhjuubah}(h]h ]h"]h$]h&]uh1jhjuubeh}(h]h ]h"]h$]h&]uh1j~hjuhMhjuubj)}(h``eit`` A pointer to the EIT h](j)}(h``eit``h]j )}(hj vh]heit}(hj vhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjvubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjvubj)}(hhh]h)}(hA pointer to the EITh]hA pointer to the EIT}(hj"vhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjvhMhjvubah}(h]h ]h"]h$]h&]uh1jhjvubeh}(h]h ]h"]h$]h&]uh1j~hjvhMhjuubj)}(h/``buf_sz`` The size of the destination buffer. h](j)}(h ``buf_sz``h]j )}(hjBvh]hbuf_sz}(hjDvhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj@vubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj EIT_MAX_SECTION_LEN, the operation fails.h](h)}(h**Parameters**h]j)}(hjryh]h Parameters}(hjtyhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjpyubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjlyubjz)}(hhh]j)}(hK``struct vidtv_psi_table_eit *eit`` The EIT whose length is to be updated. h](j)}(h#``struct vidtv_psi_table_eit *eit``h]j )}(hjyh]hstruct vidtv_psi_table_eit *eit}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjyubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjyubj)}(hhh]h)}(h&The EIT whose length is to be updated.h]h&The EIT whose length is to be updated.}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjyhMhjyubah}(h]h ]h"]h$]h&]uh1jhjyubeh}(h]h ]h"]h$]h&]uh1j~hjyhMhjyubah}(h]h ]h"]h$]h&]uh1jyhjlyubh)}(h**Description**h]j)}(hjyh]h Description}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjyubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjlyubh)}(hThis will traverse the table and accumulate the length of its components, which is then used to replace the 'section_length' field.h]hThis will traverse the table and accumulate the length of its components, which is then used to replace the ‘section_length’ field.}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjlyubh)}(h=If section_length > EIT_MAX_SECTION_LEN, the operation fails.h]h=If section_length > EIT_MAX_SECTION_LEN, the operation fails.}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjlyubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'vidtv_psi_eit_event_assign (C function)c.vidtv_psi_eit_event_assignhNtauh1jhjhhhNhNubj)}(hhh](j)}(hfvoid vidtv_psi_eit_event_assign (struct vidtv_psi_table_eit *eit, struct vidtv_psi_table_eit_event *e)h]j )}(hevoid vidtv_psi_eit_event_assign(struct vidtv_psi_table_eit *eit, struct vidtv_psi_table_eit_event *e)h](j)}(hvoidh]hvoid}(hj zhhhNhNubah}(h]h ]j$ah"]h$]h&]uh1jhjzhhh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMubj")}(h h]h }(hj/zhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjzhhhj.zhMubj3)}(hvidtv_psi_eit_event_assignh]j9)}(hvidtv_psi_eit_event_assignh]hvidtv_psi_eit_event_assign}(hjAzhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hj=zubah}(h]h ](jKjLeh"]h$]h&]hhuh1j2hjzhhhj.zhMubjP)}(hF(struct vidtv_psi_table_eit *eit, struct vidtv_psi_table_eit_event *e)h](jV)}(hstruct vidtv_psi_table_eit *eith](j)}(hjh]hstruct}(hj]zhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYzubj")}(h h]h }(hjjzhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjYzubh)}(hhh]j9)}(hvidtv_psi_table_eith]hvidtv_psi_table_eit}(hj{zhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjxzubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj}zmodnameN classnameNjj)}j]j)}jjCzsbc.vidtv_psi_eit_event_assignasbuh1hhjYzubj")}(h h]h }(hjzhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjYzubj)}(hjh]h*}(hjzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYzubj9)}(heith]heit}(hjzhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjYzubeh}(h]h ]h"]h$]h&]noemphhhuh1jUhjUzubjV)}(h#struct vidtv_psi_table_eit_event *eh](j)}(hjh]hstruct}(hjzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjzubj")}(h h]h }(hjzhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjzubh)}(hhh]j9)}(hvidtv_psi_table_eit_eventh]hvidtv_psi_table_eit_event}(hjzhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjzubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjzmodnameN classnameNjj)}j]jzc.vidtv_psi_eit_event_assignasbuh1hhjzubj")}(h h]h }(hj {hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjzubj)}(hjh]h*}(hj{hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjzubj9)}(heh]he}(hj&{hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjzubeh}(h]h ]h"]h$]h&]noemphhhuh1jUhjUzubeh}(h]h ]h"]h$]h&]hhuh1jOhjzhhhj.zhMubeh}(h]h ]h"]h$]h&]hhjVuh1j jWjXhjzhhhj.zhMubah}(h]jzah ](j\j]eh"]h$]h&]jajb)jchuh1jhj.zhMhjzhhubje)}(hhh]h)}(h"Assigns the event loop to the EIT.h]h"Assigns the event loop to the EIT.}(hjP{hhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjM{hhubah}(h]h ]h"]h$]h&]uh1jdhjzhhhj.zhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjh{jjh{jjjuh1jhhhjhNhNubj)}(hX_**Parameters** ``struct vidtv_psi_table_eit *eit`` The EIT to assign to. ``struct vidtv_psi_table_eit_event *e`` The event loop **Description** This will free the previous event loop in the table. This will assign ownership of the stream loop to the table, i.e. the table will free this stream loop when a call to its destroy function is made.h](h)}(h**Parameters**h]j)}(hjr{h]h Parameters}(hjt{hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjp{ubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjl{ubjz)}(hhh](j)}(h:``struct vidtv_psi_table_eit *eit`` The EIT to assign to. h](j)}(h#``struct vidtv_psi_table_eit *eit``h]j )}(hj{h]hstruct vidtv_psi_table_eit *eit}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj{ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj{ubj)}(hhh]h)}(hThe EIT to assign to.h]hThe EIT to assign to.}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj{hMhj{ubah}(h]h ]h"]h$]h&]uh1jhj{ubeh}(h]h ]h"]h$]h&]uh1j~hj{hMhj{ubj)}(h7``struct vidtv_psi_table_eit_event *e`` The event loop h](j)}(h'``struct vidtv_psi_table_eit_event *e``h]j )}(hj{h]h#struct vidtv_psi_table_eit_event *e}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj{ubah}(h]h ]h"]h$]h&]uh1jh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj{ubj)}(hhh]h)}(hThe event looph]hThe event loop}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj{hMhj{ubah}(h]h ]h"]h$]h&]uh1jhj{ubeh}(h]h ]h"]h$]h&]uh1j~hj{hMhj{ubeh}(h]h ]h"]h$]h&]uh1jyhjl{ubh)}(h**Description**h]j)}(hj|h]h Description}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj|ubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjl{ubh)}(hThis will free the previous event loop in the table. This will assign ownership of the stream loop to the table, i.e. the table will free this stream loop when a call to its destroy function is made.h]hThis will free the previous event loop in the table. This will assign ownership of the stream loop to the table, i.e. the table will free this stream loop when a call to its destroy function is made.}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjl{ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jvidtv_s302m_ctx (C struct)c.vidtv_s302m_ctxhNtauh1jhjhhhNhNubj)}(hhh](j)}(hvidtv_s302m_ctxh]j )}(hstruct vidtv_s302m_ctxh](j)}(hjh]hstruct}(hjJ|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjF|hhh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:505: ./drivers/media/test-drivers/vidtv/vidtv_s302m.hhKubj")}(h h]h }(hjX|hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjF|hhhjW|hKubj3)}(hvidtv_s302m_ctxh]j9)}(hjD|h]hvidtv_s302m_ctx}(hjj|hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjf|ubah}(h]h ](jKjLeh"]h$]h&]hhuh1j2hjF|hhhjW|hKubeh}(h]h ]h"]h$]h&]hhjVuh1j jWjXhjB|hhhjW|hKubah}(h]j=|ah ](j\j]eh"]h$]h&]jajb)jchuh1jhjW|hKhj?|hhubje)}(hhh]h)}(hs302m encoder context.h]hs302m encoder context.}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:505: ./drivers/media/test-drivers/vidtv/vidtv_s302m.hhK hj|hhubah}(h]h ]h"]h$]h&]uh1jdhj?|hhhjW|hKubeh}(h]h ](jstructeh"]h$]h&]jjjj|jj|jjjuh1jhhhjhNhNubj)}(hX6**Definition**:: struct vidtv_s302m_ctx { struct vidtv_encoder *enc; u32 frame_index; u32 au_count; int last_duration; unsigned int note_offset; enum musical_notes last_tone; }; **Members** ``enc`` A pointer to the containing encoder structure. ``frame_index`` The current frame in a block ``au_count`` The total number of access units encoded up to now ``last_duration`` Duration of the tone currently being played ``note_offset`` Position at the music tone array ``last_tone`` Tone currently being playedh](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/drivers/vidtv:505: ./drivers/media/test-drivers/vidtv/vidtv_s302m.hhK$hj|ubj)}(hstruct vidtv_s302m_ctx { struct vidtv_encoder *enc; u32 frame_index; u32 au_count; int last_duration; unsigned int note_offset; enum musical_notes last_tone; };h]hstruct vidtv_s302m_ctx { struct vidtv_encoder *enc; u32 frame_index; u32 au_count; int last_duration; unsigned int note_offset; enum musical_notes last_tone; };}hj|sbah}(h]h ]h"]h$]h&]hhuh1jh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:505: ./drivers/media/test-drivers/vidtv/vidtv_s302m.hhK&hj|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/drivers/vidtv:505: ./drivers/media/test-drivers/vidtv/vidtv_s302m.hhK/hj|ubjz)}(hhh](j)}(h7``enc`` A pointer to the containing encoder structure. h](j)}(h``enc``h]j )}(hj|h]henc}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj|ubah}(h]h ]h"]h$]h&]uh1jh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:505: ./drivers/media/test-drivers/vidtv/vidtv_s302m.hhK"hj|ubj)}(hhh]h)}(h.A pointer to the containing encoder structure.h]h.A pointer to the containing encoder structure.}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj}hK"hj}ubah}(h]h ]h"]h$]h&]uh1jhj|ubeh}(h]h ]h"]h$]h&]uh1j~hj}hK"hj|ubj)}(h-``frame_index`` The current frame in a block h](j)}(h``frame_index``h]j )}(hj2}h]h frame_index}(hj4}hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj0}ubah}(h]h ]h"]h$]h&]uh1jh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:505: ./drivers/media/test-drivers/vidtv/vidtv_s302m.hhK#hj,}ubj)}(hhh]h)}(hThe current frame in a blockh]hThe current frame in a block}(hjK}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjG}hK#hjH}ubah}(h]h ]h"]h$]h&]uh1jhj,}ubeh}(h]h ]h"]h$]h&]uh1j~hjG}hK#hj|ubj)}(h@``au_count`` The total number of access units encoded up to now h](j)}(h ``au_count``h]j )}(hjk}h]hau_count}(hjm}hhhNhNubah}(h]h ]h"]h$]h&]uh1j hji}ubah}(h]h ]h"]h$]h&]uh1jh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:505: ./drivers/media/test-drivers/vidtv/vidtv_s302m.hhK$hje}ubj)}(hhh]h)}(h2The total number of access units encoded up to nowh]h2The total number of access units encoded up to now}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj}hK$hj}ubah}(h]h ]h"]h$]h&]uh1jhje}ubeh}(h]h ]h"]h$]h&]uh1j~hj}hK$hj|ubj)}(h>``last_duration`` Duration of the tone currently being played h](j)}(h``last_duration``h]j )}(hj}h]h last_duration}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj}ubah}(h]h ]h"]h$]h&]uh1jh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:505: ./drivers/media/test-drivers/vidtv/vidtv_s302m.hhK%hj}ubj)}(hhh]h)}(h+Duration of the tone currently being playedh]h+Duration of the tone currently being played}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj}hK%hj}ubah}(h]h ]h"]h$]h&]uh1jhj}ubeh}(h]h ]h"]h$]h&]uh1j~hj}hK%hj|ubj)}(h1``note_offset`` Position at the music tone array h](j)}(h``note_offset``h]j )}(hj}h]h note_offset}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj}ubah}(h]h ]h"]h$]h&]uh1jh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:505: ./drivers/media/test-drivers/vidtv/vidtv_s302m.hhK&hj}ubj)}(hhh]h)}(h Position at the music tone arrayh]h Position at the music tone array}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj}hK&hj}ubah}(h]h ]h"]h$]h&]uh1jhj}ubeh}(h]h ]h"]h$]h&]uh1j~hj}hK&hj|ubj)}(h)``last_tone`` Tone currently being playedh](j)}(h ``last_tone``h]j )}(hj~h]h last_tone}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj~ubah}(h]h ]h"]h$]h&]uh1jh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:505: ./drivers/media/test-drivers/vidtv/vidtv_s302m.hhK&hj~ubj)}(hhh]h)}(hTone currently being playedh]hTone currently being played}(hj/~hhhNhNubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:505: ./drivers/media/test-drivers/vidtv/vidtv_s302m.hhK'hj,~ubah}(h]h ]h"]h$]h&]uh1jhj~ubeh}(h]h ]h"]h$]h&]uh1j~hj+~hK&hj|ubeh}(h]h ]h"]h$]h&]uh1jyhj|ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j(vidtv_s302m_encoder_init_args (C struct)c.vidtv_s302m_encoder_init_argshNtauh1jhjhhhNhNubj)}(hhh](j)}(hvidtv_s302m_encoder_init_argsh]j )}(h$struct vidtv_s302m_encoder_init_argsh](j)}(hjh]hstruct}(hjp~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjl~hhh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:505: ./drivers/media/test-drivers/vidtv/vidtv_s302m.hhK-ubj")}(h h]h }(hj~~hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjl~hhhj}~hK-ubj3)}(hvidtv_s302m_encoder_init_argsh]j9)}(hjj~h]hvidtv_s302m_encoder_init_args}(hj~hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hj~ubah}(h]h ](jKjLeh"]h$]h&]hhuh1j2hjl~hhhj}~hK-ubeh}(h]h ]h"]h$]h&]hhjVuh1j jWjXhjh~hhhj}~hK-ubah}(h]jc~ah ](j\j]eh"]h$]h&]jajb)jchuh1jhj}~hK-hje~hhubje)}(hhh]h)}(hArgs for the s302m encoder.h]hArgs for the s302m encoder.}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:505: ./drivers/media/test-drivers/vidtv/vidtv_s302m.hhKGhj~hhubah}(h]h ]h"]h$]h&]uh1jdhje~hhhj}~hK-ubeh}(h]h ](jstructeh"]h$]h&]jjjj~jj~jjjuh1jhhhjhNhNubj)}(hX**Definition**:: struct vidtv_s302m_encoder_init_args { char *name; void *src_buf; u32 src_buf_sz; u16 es_pid; struct vidtv_encoder *sync; void (*last_sample_cb)(u32 sample_no); struct vidtv_encoder *head; }; **Members** ``name`` A name to identify this particular instance ``src_buf`` The source buffer, encoder will default to a sine wave if this is NULL. ``src_buf_sz`` The size of the source buffer. ``es_pid`` The MPEG Elementary Stream PID to use. ``sync`` Attempt to synchronize audio with this video encoder, if not NULL. ``last_sample_cb`` A callback called when the encoder runs out of data. ``head`` Add to this chainh](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/drivers/vidtv:505: ./drivers/media/test-drivers/vidtv/vidtv_s302m.hhKKhj~ubj)}(hstruct vidtv_s302m_encoder_init_args { char *name; void *src_buf; u32 src_buf_sz; u16 es_pid; struct vidtv_encoder *sync; void (*last_sample_cb)(u32 sample_no); struct vidtv_encoder *head; };h]hstruct vidtv_s302m_encoder_init_args { char *name; void *src_buf; u32 src_buf_sz; u16 es_pid; struct vidtv_encoder *sync; void (*last_sample_cb)(u32 sample_no); struct vidtv_encoder *head; };}hj~sbah}(h]h ]h"]h$]h&]hhuh1jh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:505: ./drivers/media/test-drivers/vidtv/vidtv_s302m.hhKMhj~ubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~ubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:505: ./drivers/media/test-drivers/vidtv/vidtv_s302m.hhKWhj~ubjz)}(hhh](j)}(h5``name`` A name to identify this particular instance h](j)}(h``name``h]j )}(hjh]hname}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:505: ./drivers/media/test-drivers/vidtv/vidtv_s302m.hhKJhjubj)}(hhh]h)}(h+A name to identify this particular instanceh]h+A name to identify this particular instance}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj4hKJhj5ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hj4hKJhjubj)}(hT``src_buf`` The source buffer, encoder will default to a sine wave if this is NULL. h](j)}(h ``src_buf``h]j )}(hjXh]hsrc_buf}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjVubah}(h]h ]h"]h$]h&]uh1jh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:505: ./drivers/media/test-drivers/vidtv/vidtv_s302m.hhKKhjRubj)}(hhh]h)}(hGThe source buffer, encoder will default to a sine wave if this is NULL.h]hGThe source buffer, encoder will default to a sine wave if this is NULL.}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjmhKKhjnubah}(h]h ]h"]h$]h&]uh1jhjRubeh}(h]h ]h"]h$]h&]uh1j~hjmhKKhjubj)}(h.``src_buf_sz`` The size of the source buffer. h](j)}(h``src_buf_sz``h]j )}(hjh]h src_buf_sz}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:505: ./drivers/media/test-drivers/vidtv/vidtv_s302m.hhKLhjubj)}(hhh]h)}(hThe size of the source buffer.h]hThe size of the source buffer.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKLhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hjhKLhjubj)}(h2``es_pid`` The MPEG Elementary Stream PID to use. h](j)}(h ``es_pid``h]j )}(hjh]hes_pid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:505: ./drivers/media/test-drivers/vidtv/vidtv_s302m.hhKMhjubj)}(hhh]h)}(h&The MPEG Elementary Stream PID to use.h]h&The MPEG Elementary Stream PID to use.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hjhKMhjubj)}(hL``sync`` Attempt to synchronize audio with this video encoder, if not NULL. h](j)}(h``sync``h]j )}(hjh]hsync}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:505: ./drivers/media/test-drivers/vidtv/vidtv_s302m.hhKNhjubj)}(hhh]h)}(hBAttempt to synchronize audio with this video encoder, if not NULL.h]hBAttempt to synchronize audio with this video encoder, if not NULL.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKNhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hjhKNhjubj)}(hH``last_sample_cb`` A callback called when the encoder runs out of data. h](j)}(h``last_sample_cb``h]j )}(hj<h]hlast_sample_cb}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj:ubah}(h]h ]h"]h$]h&]uh1jh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:505: ./drivers/media/test-drivers/vidtv/vidtv_s302m.hhKOhj6ubj)}(hhh]h)}(h4A callback called when the encoder runs out of data.h]h4A callback called when the encoder runs out of data.}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQhKOhjRubah}(h]h ]h"]h$]h&]uh1jhj6ubeh}(h]h ]h"]h$]h&]uh1j~hjQhKOhjubj)}(h``head`` Add to this chainh](j)}(h``head``h]j )}(hjuh]hhead}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjsubah}(h]h ]h"]h$]h&]uh1jh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:505: ./drivers/media/test-drivers/vidtv/vidtv_s302m.hhKOhjoubj)}(hhh]h)}(hAdd to this chainh]hAdd to this chain}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:505: ./drivers/media/test-drivers/vidtv/vidtv_s302m.hhKPhjubah}(h]h ]h"]h$]h&]uh1jhjoubeh}(h]h ]h"]h$]h&]uh1j~hjhKOhjubeh}(h]h ]h"]h$]h&]uh1jyhj~ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jpcr_write_args (C struct)c.pcr_write_argshNtauh1jhjhhhNhNubj)}(hhh](j)}(hpcr_write_argsh]j )}(hstruct pcr_write_argsh](j)}(hjh]hstruct}(hjπhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjˀhhh{/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:507: ./drivers/media/test-drivers/vidtv/vidtv_ts.hhKubj")}(h h]h }(hj݀hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjˀhhhj܀hKubj3)}(hpcr_write_argsh]j9)}(hjɀh]hpcr_write_args}(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjubah}(h]h ](jKjLeh"]h$]h&]hhuh1j2hjˀhhhj܀hKubeh}(h]h ]h"]h$]h&]hhjVuh1j jWjXhjǀhhhj܀hKubah}(h]j€ah ](j\j]eh"]h$]h&]jajb)jchuh1jhj܀hKhjĀhhubje)}(hhh]h)}(h*Arguments for the pcr_write_into function.h]h*Arguments for the pcr_write_into function.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh{/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:507: ./drivers/media/test-drivers/vidtv/vidtv_ts.hhK2hjhhubah}(h]h ]h"]h$]h&]uh1jdhjĀhhhj܀hKubeh}(h]h ](jstructeh"]h$]h&]jjjj)jj)jjjuh1jhhhjhNhNubj)}(hX**Definition**:: struct pcr_write_args { void *dest_buf; u32 dest_offset; u16 pid; u32 buf_sz; u8 *continuity_counter; u64 pcr; }; **Members** ``dest_buf`` The buffer to write into. ``dest_offset`` The byte offset into the buffer. ``pid`` The TS PID for the PCR packets. ``buf_sz`` The size of the buffer in bytes. ``continuity_counter`` The TS continuity_counter. ``pcr`` A sample from the system clock.h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1ubh:}(hj1hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh{/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:507: ./drivers/media/test-drivers/vidtv/vidtv_ts.hhK6hj-ubj)}(hstruct pcr_write_args { void *dest_buf; u32 dest_offset; u16 pid; u32 buf_sz; u8 *continuity_counter; u64 pcr; };h]hstruct pcr_write_args { void *dest_buf; u32 dest_offset; u16 pid; u32 buf_sz; u8 *continuity_counter; u64 pcr; };}hjNsbah}(h]h ]h"]h$]h&]hhuh1jh{/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:507: ./drivers/media/test-drivers/vidtv/vidtv_ts.hhK8hj-ubh)}(h **Members**h]j)}(hj_h]hMembers}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]ubah}(h]h ]h"]h$]h&]uh1hh{/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:507: ./drivers/media/test-drivers/vidtv/vidtv_ts.hhKAhj-ubjz)}(hhh](j)}(h'``dest_buf`` The buffer to write into. h](j)}(h ``dest_buf``h]j )}(hj~h]hdest_buf}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj|ubah}(h]h ]h"]h$]h&]uh1jh{/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:507: ./drivers/media/test-drivers/vidtv/vidtv_ts.hhK4hjxubj)}(hhh]h)}(hThe buffer to write into.h]hThe buffer to write into.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK4hjubah}(h]h ]h"]h$]h&]uh1jhjxubeh}(h]h ]h"]h$]h&]uh1j~hjhK4hjuubj)}(h1``dest_offset`` The byte offset into the buffer. h](j)}(h``dest_offset``h]j )}(hjh]h dest_offset}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jh{/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:507: ./drivers/media/test-drivers/vidtv/vidtv_ts.hhK5hjubj)}(hhh]h)}(h The byte offset into the buffer.h]h The byte offset into the buffer.}(hjЁhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj́hK5hj́ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hj́hK5hjuubj)}(h(``pid`` The TS PID for the PCR packets. h](j)}(h``pid``h]j )}(hjh]hpid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jh{/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:507: ./drivers/media/test-drivers/vidtv/vidtv_ts.hhK6hjubj)}(hhh]h)}(hThe TS PID for the PCR packets.h]hThe TS PID for the PCR packets.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK6hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hjhK6hjuubj)}(h,``buf_sz`` The size of the buffer in bytes. h](j)}(h ``buf_sz``h]j )}(hj)h]hbuf_sz}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj'ubah}(h]h ]h"]h$]h&]uh1jh{/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:507: ./drivers/media/test-drivers/vidtv/vidtv_ts.hhK7hj#ubj)}(hhh]h)}(h The size of the buffer in bytes.h]h The size of the buffer in bytes.}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>hK7hj?ubah}(h]h ]h"]h$]h&]uh1jhj#ubeh}(h]h ]h"]h$]h&]uh1j~hj>hK7hjuubj)}(h2``continuity_counter`` The TS continuity_counter. h](j)}(h``continuity_counter``h]j )}(hjbh]hcontinuity_counter}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj`ubah}(h]h ]h"]h$]h&]uh1jh{/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:507: ./drivers/media/test-drivers/vidtv/vidtv_ts.hhK8hj\ubj)}(hhh]h)}(hThe TS continuity_counter.h]hThe TS continuity_counter.}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjwhK8hjxubah}(h]h ]h"]h$]h&]uh1jhj\ubeh}(h]h ]h"]h$]h&]uh1j~hjwhK8hjuubj)}(h'``pcr`` A sample from the system clock.h](j)}(h``pcr``h]j )}(hjh]hpcr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jh{/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:507: ./drivers/media/test-drivers/vidtv/vidtv_ts.hhK8hjubj)}(hhh]h)}(hA sample from the system clock.h]hA sample from the system clock.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh{/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:507: ./drivers/media/test-drivers/vidtv/vidtv_ts.hhK9hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hjhK8hjuubeh}(h]h ]h"]h$]h&]uh1jyhj-ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j!null_packet_write_args (C struct)c.null_packet_write_argshNtauh1jhjhhhNhNubj)}(hhh](j)}(hnull_packet_write_argsh]j )}(hstruct null_packet_write_argsh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhh{/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:507: ./drivers/media/test-drivers/vidtv/vidtv_ts.hhK?ubj")}(h h]h }(hjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjhhhjhK?ubj3)}(hnull_packet_write_argsh]j9)}(hjh]hnull_packet_write_args}(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjubah}(h]h ](jKjLeh"]h$]h&]hhuh1j2hjhhhjhK?ubeh}(h]h ]h"]h$]h&]hhjVuh1j jWjXhjhhhjhK?ubah}(h]jah ](j\j]eh"]h$]h&]jajb)jchuh1jhjhK?hjhhubje)}(hhh]h)}(h*Arguments for the null_write_into functionh]h*Arguments for the null_write_into function}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hh{/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:507: ./drivers/media/test-drivers/vidtv/vidtv_ts.hhKDhj4hhubah}(h]h ]h"]h$]h&]uh1jdhjhhhjhK?ubeh}(h]h ](jstructeh"]h$]h&]jjjjOjjOjjjuh1jhhhjhNhNubj)}(hXd**Definition**:: struct null_packet_write_args { void *dest_buf; u32 dest_offset; u32 buf_sz; u8 *continuity_counter; }; **Members** ``dest_buf`` The buffer to write into. ``dest_offset`` The byte offset into the buffer. ``buf_sz`` The size of the buffer in bytes. ``continuity_counter`` The TS continuity_counter.h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjWubh:}(hjWhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh{/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:507: ./drivers/media/test-drivers/vidtv/vidtv_ts.hhKHhjSubj)}(hwstruct null_packet_write_args { void *dest_buf; u32 dest_offset; u32 buf_sz; u8 *continuity_counter; };h]hwstruct null_packet_write_args { void *dest_buf; u32 dest_offset; u32 buf_sz; u8 *continuity_counter; };}hjtsbah}(h]h ]h"]h$]h&]hhuh1jh{/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:507: ./drivers/media/test-drivers/vidtv/vidtv_ts.hhKJhjSubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh{/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:507: ./drivers/media/test-drivers/vidtv/vidtv_ts.hhKQhjSubjz)}(hhh](j)}(h'``dest_buf`` The buffer to write into. h](j)}(h ``dest_buf``h]j )}(hjh]hdest_buf}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jh{/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:507: ./drivers/media/test-drivers/vidtv/vidtv_ts.hhKFhjubj)}(hhh]h)}(hThe buffer to write into.h]hThe buffer to write into.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKFhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hjhKFhjubj)}(h1``dest_offset`` The byte offset into the buffer. h](j)}(h``dest_offset``h]j )}(hj݃h]h dest_offset}(hj߃hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjۃubah}(h]h ]h"]h$]h&]uh1jh{/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:507: ./drivers/media/test-drivers/vidtv/vidtv_ts.hhKGhj׃ubj)}(hhh]h)}(h The byte offset into the buffer.h]h The byte offset into the buffer.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKGhjubah}(h]h ]h"]h$]h&]uh1jhj׃ubeh}(h]h ]h"]h$]h&]uh1j~hjhKGhjubj)}(h,``buf_sz`` The size of the buffer in bytes. h](j)}(h ``buf_sz``h]j )}(hjh]hbuf_sz}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jh{/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:507: ./drivers/media/test-drivers/vidtv/vidtv_ts.hhKHhjubj)}(hhh]h)}(h The size of the buffer in bytes.h]h The size of the buffer in bytes.}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+hKHhj,ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hj+hKHhjubj)}(h1``continuity_counter`` The TS continuity_counter.h](j)}(h``continuity_counter``h]j )}(hjOh]hcontinuity_counter}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjMubah}(h]h ]h"]h$]h&]uh1jh{/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:507: ./drivers/media/test-drivers/vidtv/vidtv_ts.hhKHhjIubj)}(hhh]h)}(hThe TS continuity_counter.h]hThe TS continuity_counter.}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hh{/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:507: ./drivers/media/test-drivers/vidtv/vidtv_ts.hhKIhjeubah}(h]h ]h"]h$]h&]uh1jhjIubeh}(h]h ]h"]h$]h&]uh1j~hjdhKHhjubeh}(h]h ]h"]h$]h&]uh1jyhjSubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j%vidtv_ts_null_write_into (C function)c.vidtv_ts_null_write_intohNtauh1jhjhhhNhNubj)}(hhh](j)}(hHu32 vidtv_ts_null_write_into (const struct null_packet_write_args *args)h]j )}(hGu32 vidtv_ts_null_write_into(const struct null_packet_write_args *args)h](h)}(hhh]j9)}(hu32h]hu32}(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jvidtv_ts_null_write_intosbc.vidtv_ts_null_write_intoasbuh1hhjhhh{/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:507: ./drivers/media/test-drivers/vidtv/vidtv_ts.hhKUubj")}(h h]h }(hj΄hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjhhhj̈́hKUubj3)}(hvidtv_ts_null_write_intoh]j9)}(hjʄh]hvidtv_ts_null_write_into}(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hj܄ubah}(h]h ](jKjLeh"]h$]h&]hhuh1j2hjhhhj̈́hKUubjP)}(h+(const struct null_packet_write_args *args)h]jV)}(h)const struct null_packet_write_args *argsh](j)}(hconsth]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj")}(h h]h }(hj hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjubj)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj")}(h h]h }(hj$hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjubh)}(hhh]j9)}(hnull_packet_write_argsh]hnull_packet_write_args}(hj5hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hj2ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj7modnameN classnameNjj)}j]jȄc.vidtv_ts_null_write_intoasbuh1hhjubj")}(h h]h }(hjShhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjubj)}(hjh]h*}(hjahhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj9)}(hargsh]hargs}(hjnhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jUhjubah}(h]h ]h"]h$]h&]hhuh1jOhjhhhj̈́hKUubeh}(h]h ]h"]h$]h&]hhjVuh1j jWjXhjhhhj̈́hKUubah}(h]jah ](j\j]eh"]h$]h&]jajb)jchuh1jhj̈́hKUhjhhubje)}(hhh]h)}(h%Write a TS null packet into a buffer.h]h%Write a TS null packet into a buffer.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh{/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:507: ./drivers/media/test-drivers/vidtv/vidtv_ts.hhKUhjhhubah}(h]h ]h"]h$]h&]uh1jdhjhhhj̈́hKUubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjhNhNubj)}(hX **Parameters** ``const struct null_packet_write_args *args`` the arguments to use when writing. **Description** This function will write a null packet into a buffer. This is usually used to pad TS streams. **Return** The number of bytes written into the buffer.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh{/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:507: ./drivers/media/test-drivers/vidtv/vidtv_ts.hhKYhjubjz)}(hhh]j)}(hQ``const struct null_packet_write_args *args`` the arguments to use when writing. h](j)}(h-``const struct null_packet_write_args *args``h]j )}(hjمh]h)const struct null_packet_write_args *args}(hjۅhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjׅubah}(h]h ]h"]h$]h&]uh1jh{/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:507: ./drivers/media/test-drivers/vidtv/vidtv_ts.hhKVhjӅubj)}(hhh]h)}(h"the arguments to use when writing.h]h"the arguments to use when writing.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKVhjubah}(h]h ]h"]h$]h&]uh1jhjӅubeh}(h]h ]h"]h$]h&]uh1j~hjhKVhjЅubah}(h]h ]h"]h$]h&]uh1jyhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh{/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:507: ./drivers/media/test-drivers/vidtv/vidtv_ts.hhKXhjubh)}(h]This function will write a null packet into a buffer. This is usually used to pad TS streams.h]h]This function will write a null packet into a buffer. This is usually used to pad TS streams.}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hh{/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:507: ./drivers/media/test-drivers/vidtv/vidtv_ts.hhKWhjubh)}(h **Return**h]j)}(hj;h]hReturn}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1hh{/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:507: ./drivers/media/test-drivers/vidtv/vidtv_ts.hhKZhjubh)}(h,The number of bytes written into the buffer.h]h,The number of bytes written into the buffer.}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hh{/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:507: ./drivers/media/test-drivers/vidtv/vidtv_ts.hhK[hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j$vidtv_ts_pcr_write_into (C function)c.vidtv_ts_pcr_write_intohNtauh1jhjhhhNhNubj)}(hhh](j)}(h?u32 vidtv_ts_pcr_write_into (const struct pcr_write_args *args)h]j )}(h>u32 vidtv_ts_pcr_write_into(const struct pcr_write_args *args)h](h)}(hhh]j9)}(hu32h]hu32}(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jvidtv_ts_pcr_write_intosbc.vidtv_ts_pcr_write_intoasbuh1hhj|hhh{/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:507: ./drivers/media/test-drivers/vidtv/vidtv_ts.hhK`ubj")}(h h]h }(hjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hj|hhhjhK`ubj3)}(hvidtv_ts_pcr_write_intoh]j9)}(hjh]hvidtv_ts_pcr_write_into}(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjubah}(h]h ](jKjLeh"]h$]h&]hhuh1j2hj|hhhjhK`ubjP)}(h#(const struct pcr_write_args *args)h]jV)}(h!const struct pcr_write_args *argsh](j)}(hjh]hconst}(hj҆hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjΆubj")}(h h]h }(hj߆hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjΆubj)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjΆubj")}(h h]h }(hjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjΆubh)}(hhh]j9)}(hpcr_write_argsh]hpcr_write_args}(hj hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]jc.vidtv_ts_pcr_write_intoasbuh1hhjΆubj")}(h h]h }(hj)hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjΆubj)}(hjh]h*}(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjΆubj9)}(hargsh]hargs}(hjDhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjΆubeh}(h]h ]h"]h$]h&]noemphhhuh1jUhjʆubah}(h]h ]h"]h$]h&]hhuh1jOhj|hhhjhK`ubeh}(h]h ]h"]h$]h&]hhjVuh1j jWjXhjxhhhjhK`ubah}(h]jsah ](j\j]eh"]h$]h&]jajb)jchuh1jhjhK`hjuhhubje)}(hhh]h)}(h!Write a PCR packet into a buffer.h]h!Write a PCR packet into a buffer.}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1hh{/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:507: ./drivers/media/test-drivers/vidtv/vidtv_ts.hhK`hjkhhubah}(h]h ]h"]h$]h&]uh1jdhjuhhhjhK`ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjhNhNubj)}(hX!**Parameters** ``const struct pcr_write_args *args`` the arguments to use when writing. **Description** This function will write a PCR packet into a buffer. This is used to synchronize the clocks between encoders and decoders. **Return** The number of bytes written into the buffer.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh{/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:507: ./drivers/media/test-drivers/vidtv/vidtv_ts.hhKdhjubjz)}(hhh]j)}(hI``const struct pcr_write_args *args`` the arguments to use when writing. h](j)}(h%``const struct pcr_write_args *args``h]j )}(hjh]h!const struct pcr_write_args *args}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jh{/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:507: ./drivers/media/test-drivers/vidtv/vidtv_ts.hhKahjubj)}(hhh]h)}(h"the arguments to use when writing.h]h"the arguments to use when writing.}(hjȇhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjćhKahjŇubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hjćhKahjubah}(h]h ]h"]h$]h&]uh1jyhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh{/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:507: ./drivers/media/test-drivers/vidtv/vidtv_ts.hhKchjubh)}(hzThis function will write a PCR packet into a buffer. This is used to synchronize the clocks between encoders and decoders.h]hzThis function will write a PCR packet into a buffer. This is used to synchronize the clocks between encoders and decoders.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh{/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:507: ./drivers/media/test-drivers/vidtv/vidtv_ts.hhKbhjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh{/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:507: ./drivers/media/test-drivers/vidtv/vidtv_ts.hhKehjubh)}(h,The number of bytes written into the buffer.h]h,The number of bytes written into the buffer.}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hh{/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:507: ./drivers/media/test-drivers/vidtv/vidtv_ts.hhKfhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jvidtv_tuner_config (C struct)c.vidtv_tuner_confighNtauh1jhjhhh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:509: ./drivers/media/test-drivers/vidtv/vidtv_tuner.hhNubj)}(hhh](j)}(hvidtv_tuner_configh]j )}(hstruct vidtv_tuner_configh](j)}(hjh]hstruct}(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjShhh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:509: ./drivers/media/test-drivers/vidtv/vidtv_tuner.hhKubj")}(h h]h }(hjehhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjShhhjdhKubj3)}(hvidtv_tuner_configh]j9)}(hjQh]hvidtv_tuner_config}(hjwhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjsubah}(h]h ](jKjLeh"]h$]h&]hhuh1j2hjShhhjdhKubeh}(h]h ]h"]h$]h&]hhjVuh1j jWjXhjOhhhjdhKubah}(h]jIah ](j\j]eh"]h$]h&]jajb)jchuh1jhjdhKhjLhhubje)}(hhh]h)}(h%Configuration used to init the tuner.h]h%Configuration used to init the tuner.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:509: ./drivers/media/test-drivers/vidtv/vidtv_tuner.hhKhjhhubah}(h]h ]h"]h$]h&]uh1jdhjLhhhjdhKubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1jhhhjhjKhNubj)}(hXh**Definition**:: struct vidtv_tuner_config { struct dvb_frontend *fe; u32 mock_power_up_delay_msec; u32 mock_tune_delay_msec; u32 vidtv_valid_dvb_t_freqs[NUM_VALID_TUNER_FREQS]; u32 vidtv_valid_dvb_c_freqs[NUM_VALID_TUNER_FREQS]; u32 vidtv_valid_dvb_s_freqs[NUM_VALID_TUNER_FREQS]; u8 max_frequency_shift_hz; }; **Members** ``fe`` A pointer to the dvb_frontend structure allocated by vidtv_demod. ``mock_power_up_delay_msec`` Simulate a power-up delay. ``mock_tune_delay_msec`` Simulate a tune delay. ``vidtv_valid_dvb_t_freqs`` The valid DVB-T frequencies to simulate. ``vidtv_valid_dvb_c_freqs`` The valid DVB-C frequencies to simulate. ``vidtv_valid_dvb_s_freqs`` The valid DVB-S frequencies to simulate. ``max_frequency_shift_hz`` The maximum frequency shift in HZ allowed when tuning in a channelh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:509: ./drivers/media/test-drivers/vidtv/vidtv_tuner.hhKhjubj)}(hXBstruct vidtv_tuner_config { struct dvb_frontend *fe; u32 mock_power_up_delay_msec; u32 mock_tune_delay_msec; u32 vidtv_valid_dvb_t_freqs[NUM_VALID_TUNER_FREQS]; u32 vidtv_valid_dvb_c_freqs[NUM_VALID_TUNER_FREQS]; u32 vidtv_valid_dvb_s_freqs[NUM_VALID_TUNER_FREQS]; u8 max_frequency_shift_hz; };h]hXBstruct vidtv_tuner_config { struct dvb_frontend *fe; u32 mock_power_up_delay_msec; u32 mock_tune_delay_msec; u32 vidtv_valid_dvb_t_freqs[NUM_VALID_TUNER_FREQS]; u32 vidtv_valid_dvb_c_freqs[NUM_VALID_TUNER_FREQS]; u32 vidtv_valid_dvb_s_freqs[NUM_VALID_TUNER_FREQS]; u8 max_frequency_shift_hz; };}hjֈsbah}(h]h ]h"]h$]h&]hhuh1jh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:509: ./drivers/media/test-drivers/vidtv/vidtv_tuner.hhKhjubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:509: ./drivers/media/test-drivers/vidtv/vidtv_tuner.hhK$hjubjz)}(hhh](j)}(hI``fe`` A pointer to the dvb_frontend structure allocated by vidtv_demod. h](j)}(h``fe``h]j )}(hjh]hfe}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:509: ./drivers/media/test-drivers/vidtv/vidtv_tuner.hhKhjubj)}(hhh]h)}(hAA pointer to the dvb_frontend structure allocated by vidtv_demod.h]hAA pointer to the dvb_frontend structure allocated by vidtv_demod.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hjhKhjubj)}(h8``mock_power_up_delay_msec`` Simulate a power-up delay. h](j)}(h``mock_power_up_delay_msec``h]j )}(hj?h]hmock_power_up_delay_msec}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj=ubah}(h]h ]h"]h$]h&]uh1jh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:509: ./drivers/media/test-drivers/vidtv/vidtv_tuner.hhKhj9ubj)}(hhh]h)}(hSimulate a power-up delay.h]hSimulate a power-up delay.}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjThKhjUubah}(h]h ]h"]h$]h&]uh1jhj9ubeh}(h]h ]h"]h$]h&]uh1j~hjThKhjubj)}(h0``mock_tune_delay_msec`` Simulate a tune delay. h](j)}(h``mock_tune_delay_msec``h]j )}(hjxh]hmock_tune_delay_msec}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjvubah}(h]h ]h"]h$]h&]uh1jh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:509: ./drivers/media/test-drivers/vidtv/vidtv_tuner.hhKhjrubj)}(hhh]h)}(hSimulate a tune delay.h]hSimulate a tune delay.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjrubeh}(h]h ]h"]h$]h&]uh1j~hjhKhjubj)}(hE``vidtv_valid_dvb_t_freqs`` The valid DVB-T frequencies to simulate. h](j)}(h``vidtv_valid_dvb_t_freqs``h]j )}(hjh]hvidtv_valid_dvb_t_freqs}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:509: ./drivers/media/test-drivers/vidtv/vidtv_tuner.hhKhjubj)}(hhh]h)}(h(The valid DVB-T frequencies to simulate.h]h(The valid DVB-T frequencies to simulate.}(hjʉhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjƉhKhjljubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hjƉhKhjubj)}(hE``vidtv_valid_dvb_c_freqs`` The valid DVB-C frequencies to simulate. h](j)}(h``vidtv_valid_dvb_c_freqs``h]j )}(hjh]hvidtv_valid_dvb_c_freqs}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:509: ./drivers/media/test-drivers/vidtv/vidtv_tuner.hhKhjubj)}(hhh]h)}(h(The valid DVB-C frequencies to simulate.h]h(The valid DVB-C frequencies to simulate.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hjhKhjubj)}(hE``vidtv_valid_dvb_s_freqs`` The valid DVB-S frequencies to simulate. h](j)}(h``vidtv_valid_dvb_s_freqs``h]j )}(hj#h]hvidtv_valid_dvb_s_freqs}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj!ubah}(h]h ]h"]h$]h&]uh1jh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:509: ./drivers/media/test-drivers/vidtv/vidtv_tuner.hhKhjubj)}(hhh]h)}(h(The valid DVB-S frequencies to simulate.h]h(The valid DVB-S frequencies to simulate.}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj8hKhj9ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hj8hKhjubj)}(h]``max_frequency_shift_hz`` The maximum frequency shift in HZ allowed when tuning in a channelh](j)}(h``max_frequency_shift_hz``h]j )}(hj\h]hmax_frequency_shift_hz}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjZubah}(h]h ]h"]h$]h&]uh1jh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:509: ./drivers/media/test-drivers/vidtv/vidtv_tuner.hhKhjVubj)}(hhh]h)}(hBThe maximum frequency shift in HZ allowed when tuning in a channelh]hBThe maximum frequency shift in HZ allowed when tuning in a channel}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjqhKhjrubah}(h]h ]h"]h$]h&]uh1jhjVubeh}(h]h ]h"]h$]h&]uh1j~hjqhKhjubeh}(h]h ]h"]h$]h&]uh1jyhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhjKhNubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:509: ./drivers/media/test-drivers/vidtv/vidtv_tuner.hhK hjhhubh)}(hThe configuration used to init the tuner module, usually filled by a bridge driver. For vidtv, this is filled by vidtv_bridge before the tuner module is probed.h]hThe configuration used to init the tuner module, usually filled by a bridge driver. For vidtv, this is filled by vidtv_bridge before the tuner module is probed.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:509: ./drivers/media/test-drivers/vidtv/vidtv_tuner.hhKhjhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jvidtv_memcpy (C function)c.vidtv_memcpyhNtauh1jhjhhhNhNubj)}(hhh](j)}(h[u32 vidtv_memcpy (void *to, size_t to_offset, size_t to_size, const void *from, size_t len)h]j )}(hZu32 vidtv_memcpy(void *to, size_t to_offset, size_t to_size, const void *from, size_t len)h](h)}(hhh]j9)}(hu32h]hu32}(hjߊhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hj܊ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}j vidtv_memcpysbc.vidtv_memcpyasbuh1hhj؊hhh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:511: ./drivers/media/test-drivers/vidtv/vidtv_common.chKubj")}(h h]h }(hjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hj؊hhhjhKubj3)}(h vidtv_memcpyh]j9)}(hjh]h vidtv_memcpy}(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjubah}(h]h ](jKjLeh"]h$]h&]hhuh1j2hj؊hhhjhKubjP)}(hJ(void *to, size_t to_offset, size_t to_size, const void *from, size_t len)h](jV)}(hvoid *toh](j)}(hvoidh]hvoid}(hj.hhhNhNubah}(h]h ]j$ah"]h$]h&]uh1jhj*ubj")}(h h]h }(hj<hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hj*ubj)}(hjh]h*}(hjJhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubj9)}(htoh]hto}(hjWhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hj*ubeh}(h]h ]h"]h$]h&]noemphhhuh1jUhj&ubjV)}(hsize_t to_offseth](h)}(hhh]j9)}(hsize_th]hsize_t}(hjshhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjpubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjumodnameN classnameNjj)}j]jc.vidtv_memcpyasbuh1hhjlubj")}(h h]h }(hjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjlubj9)}(h to_offseth]h to_offset}(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjlubeh}(h]h ]h"]h$]h&]noemphhhuh1jUhj&ubjV)}(hsize_t to_sizeh](h)}(hhh]j9)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.vidtv_memcpyasbuh1hhjubj")}(h h]h }(hjًhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjubj9)}(hto_sizeh]hto_size}(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jUhj&ubjV)}(hconst void *fromh](j)}(hjh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj")}(h h]h }(hj hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjubj)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j$ah"]h$]h&]uh1jhjubj")}(h h]h }(hj)hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjubj)}(hjh]h*}(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj9)}(hfromh]hfrom}(hjDhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jUhj&ubjV)}(h size_t lenh](h)}(hhh]j9)}(hsize_th]hsize_t}(hj`hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hj]ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjbmodnameN classnameNjj)}j]jc.vidtv_memcpyasbuh1hhjYubj")}(h h]h }(hj~hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjYubj9)}(hlenh]hlen}(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjYubeh}(h]h ]h"]h$]h&]noemphhhuh1jUhj&ubeh}(h]h ]h"]h$]h&]hhuh1jOhj؊hhhjhKubeh}(h]h ]h"]h$]h&]hhjVuh1j jWjXhjԊhhhjhKubah}(h]jϊah ](j\j]eh"]h$]h&]jajb)jchuh1jhjhKhjъhhubje)}(hhh]h)}(h`wrapper routine to be used by MPEG-TS generator, in order to avoid going past the output buffer.h]h`wrapper routine to be used by MPEG-TS generator, in order to avoid going past the output buffer.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:511: ./drivers/media/test-drivers/vidtv/vidtv_common.chKhjhhubah}(h]h ]h"]h$]h&]uh1jdhjъhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjΌjjΌjjjuh1jhhhjhNhNubj)}(hXo**Parameters** ``void *to`` Starting element to where a MPEG-TS packet will be copied. ``size_t to_offset`` Starting position of the **to** buffer to be filled. ``size_t to_size`` Size of the **to** buffer. ``const void *from`` Starting element of the buffer to be copied. ``size_t len`` Number of elements to be copy from **from** buffer into **to**+ **to_offset** buffer. **Note** Real digital TV demod drivers should not have memcpy wrappers. We use it here because emulating MPEG-TS generation at kernelspace requires some extra care. **Return** Returns the number of bytes writtenh](h)}(h**Parameters**h]j)}(hj،h]h Parameters}(hjڌhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj֌ubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:511: ./drivers/media/test-drivers/vidtv/vidtv_common.chKhjҌubjz)}(hhh](j)}(hH``void *to`` Starting element to where a MPEG-TS packet will be copied. h](j)}(h ``void *to``h]j )}(hjh]hvoid *to}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:511: ./drivers/media/test-drivers/vidtv/vidtv_common.chKhjubj)}(hhh]h)}(h:Starting element to where a MPEG-TS packet will be copied.h]h:Starting element to where a MPEG-TS packet will be copied.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:511: ./drivers/media/test-drivers/vidtv/vidtv_common.chKhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hj hKhjubj)}(hJ``size_t to_offset`` Starting position of the **to** buffer to be filled. h](j)}(h``size_t to_offset``h]j )}(hj1h]hsize_t to_offset}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj/ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:511: ./drivers/media/test-drivers/vidtv/vidtv_common.chKhj+ubj)}(hhh]h)}(h4Starting position of the **to** buffer to be filled.h](hStarting position of the }(hjJhhhNhNubj)}(h**to**h]hto}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJubh buffer to be filled.}(hjJhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjFhKhjGubah}(h]h ]h"]h$]h&]uh1jhj+ubeh}(h]h ]h"]h$]h&]uh1j~hjFhKhjubj)}(h.``size_t to_size`` Size of the **to** buffer. h](j)}(h``size_t to_size``h]j )}(hj|h]hsize_t to_size}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjzubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:511: ./drivers/media/test-drivers/vidtv/vidtv_common.chKhjvubj)}(hhh]h)}(hSize of the **to** buffer.h](h Size of the }(hjhhhNhNubj)}(h**to**h]hto}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh buffer.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjvubeh}(h]h ]h"]h$]h&]uh1j~hjhKhjubj)}(hB``const void *from`` Starting element of the buffer to be copied. h](j)}(h``const void *from``h]j )}(hjǍh]hconst void *from}(hjɍhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjōubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:511: ./drivers/media/test-drivers/vidtv/vidtv_common.chKhjubj)}(hhh]h)}(h,Starting element of the buffer to be copied.h]h,Starting element of the buffer to be copied.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj܍hKhjݍubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hj܍hKhjubj)}(he``size_t len`` Number of elements to be copy from **from** buffer into **to**+ **to_offset** buffer. h](j)}(h``size_t len``h]j )}(hjh]h size_t len}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:511: ./drivers/media/test-drivers/vidtv/vidtv_common.chKhjubj)}(hhh]h)}(hUNumber of elements to be copy from **from** buffer into **to**+ **to_offset** buffer.h](h#Number of elements to be copy from }(hjhhhNhNubj)}(h**from**h]hfrom}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh buffer into }(hjhhhNhNubj)}(h**to**+ **to_offset**h]hto**+ **to_offset}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh buffer.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:511: ./drivers/media/test-drivers/vidtv/vidtv_common.chKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hjhKhjubeh}(h]h ]h"]h$]h&]uh1jyhjҌubh)}(h**Note**h]j)}(hj`h]hNote}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^ubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:511: ./drivers/media/test-drivers/vidtv/vidtv_common.chKhjҌubj)}(hReal digital TV demod drivers should not have memcpy wrappers. We use it here because emulating MPEG-TS generation at kernelspace requires some extra care. h]h)}(hReal digital TV demod drivers should not have memcpy wrappers. We use it here because emulating MPEG-TS generation at kernelspace requires some extra care.h]hReal digital TV demod drivers should not have memcpy wrappers. We use it here because emulating MPEG-TS generation at kernelspace requires some extra care.}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:511: ./drivers/media/test-drivers/vidtv/vidtv_common.chKhjvubah}(h]h ]h"]h$]h&]uh1jhjhKhjҌubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:511: ./drivers/media/test-drivers/vidtv/vidtv_common.chK"hjҌubh)}(h#Returns the number of bytes writtenh]h#Returns the number of bytes written}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:511: ./drivers/media/test-drivers/vidtv/vidtv_common.chK#hjҌubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jvidtv_memset (C function)c.vidtv_memsethNtauh1jhjhhhNhNubj)}(hhh](j)}(hVu32 vidtv_memset (void *to, size_t to_offset, size_t to_size, const int c, size_t len)h]j )}(hUu32 vidtv_memset(void *to, size_t to_offset, size_t to_size, const int c, size_t len)h](h)}(hhh]j9)}(hu32h]hu32}(hjَhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hj֎ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjێmodnameN classnameNjj)}j]j)}j vidtv_memsetsbc.vidtv_memsetasbuh1hhjҎhhh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:511: ./drivers/media/test-drivers/vidtv/vidtv_common.chK8ubj")}(h h]h }(hjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjҎhhhjhK8ubj3)}(h vidtv_memseth]j9)}(hjh]h vidtv_memset}(hj hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hj ubah}(h]h ](jKjLeh"]h$]h&]hhuh1j2hjҎhhhjhK8ubjP)}(hE(void *to, size_t to_offset, size_t to_size, const int c, size_t len)h](jV)}(hvoid *toh](j)}(hvoidh]hvoid}(hj(hhhNhNubah}(h]h ]j$ah"]h$]h&]uh1jhj$ubj")}(h h]h }(hj6hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hj$ubj)}(hjh]h*}(hjDhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$ubj9)}(htoh]hto}(hjQhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hj$ubeh}(h]h ]h"]h$]h&]noemphhhuh1jUhj ubjV)}(hsize_t to_offseth](h)}(hhh]j9)}(hsize_th]hsize_t}(hjmhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjomodnameN classnameNjj)}j]jc.vidtv_memsetasbuh1hhjfubj")}(h h]h }(hjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjfubj9)}(h to_offseth]h to_offset}(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjfubeh}(h]h ]h"]h$]h&]noemphhhuh1jUhj ubjV)}(hsize_t to_sizeh](h)}(hhh]j9)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.vidtv_memsetasbuh1hhjubj")}(h h]h }(hjӏhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjubj9)}(hto_sizeh]hto_size}(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jUhj ubjV)}(h const int ch](j)}(hjh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj")}(h h]h }(hjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjubj)}(hinth]hint}(hjhhhNhNubah}(h]h ]j$ah"]h$]h&]uh1jhjubj")}(h h]h }(hj#hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjubj9)}(hjh]hc}(hj1hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jUhj ubjV)}(h size_t lenh](h)}(hhh]j9)}(hsize_th]hsize_t}(hjLhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjIubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjNmodnameN classnameNjj)}j]jc.vidtv_memsetasbuh1hhjEubj")}(h h]h }(hjjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjEubj9)}(hlenh]hlen}(hjxhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjEubeh}(h]h ]h"]h$]h&]noemphhhuh1jUhj ubeh}(h]h ]h"]h$]h&]hhuh1jOhjҎhhhjhK8ubeh}(h]h ]h"]h$]h&]hhjVuh1j jWjXhjΎhhhjhK8ubah}(h]jɎah ](j\j]eh"]h$]h&]jajb)jchuh1jhjhK8hjˎhhubje)}(hhh]h)}(h`wrapper routine to be used by MPEG-TS generator, in order to avoid going past the output buffer.h]h`wrapper routine to be used by MPEG-TS generator, in order to avoid going past the output buffer.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:511: ./drivers/media/test-drivers/vidtv/vidtv_common.chK8hjhhubah}(h]h ]h"]h$]h&]uh1jdhjˎhhhjhK8ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjhNhNubj)}(hX8**Parameters** ``void *to`` Starting element to set ``size_t to_offset`` Starting position of the **to** buffer to be filled. ``size_t to_size`` Size of the **to** buffer. ``const int c`` The value to set the memory to. ``size_t len`` Number of elements to be copy from **from** buffer into **to**+ **to_offset** buffer. **Note** Real digital TV demod drivers should not have memset wrappers. We use it here because emulating MPEG-TS generation at kernelspace requires some extra care. **Return** Returns the number of bytes writtenh](h)}(h**Parameters**h]j)}(hjĐh]h Parameters}(hjƐhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:511: ./drivers/media/test-drivers/vidtv/vidtv_common.chKhjubj)}(hhh]h)}(hThe value to set the memory to.h]hThe value to set the memory to.}(hjˑhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjǑhK>hjȑubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hjǑhK>hjڐubj)}(he``size_t len`` Number of elements to be copy from **from** buffer into **to**+ **to_offset** buffer. h](j)}(h``size_t len``h]j )}(hjh]h size_t len}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:511: ./drivers/media/test-drivers/vidtv/vidtv_common.chK@hjubj)}(hhh]h)}(hUNumber of elements to be copy from **from** buffer into **to**+ **to_offset** buffer.h](h#Number of elements to be copy from }(hjhhhNhNubj)}(h**from**h]hfrom}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh buffer into }(hjhhhNhNubj)}(h**to**+ **to_offset**h]hto**+ **to_offset}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh buffer.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:511: ./drivers/media/test-drivers/vidtv/vidtv_common.chK?hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hjhK@hjڐubeh}(h]h ]h"]h$]h&]uh1jyhjubh)}(h**Note**h]j)}(hjKh]hNote}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:511: ./drivers/media/test-drivers/vidtv/vidtv_common.chKBhjubj)}(hReal digital TV demod drivers should not have memset wrappers. We use it here because emulating MPEG-TS generation at kernelspace requires some extra care. h]h)}(hReal digital TV demod drivers should not have memset wrappers. We use it here because emulating MPEG-TS generation at kernelspace requires some extra care.h]hReal digital TV demod drivers should not have memset wrappers. We use it here because emulating MPEG-TS generation at kernelspace requires some extra care.}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:511: ./drivers/media/test-drivers/vidtv/vidtv_common.chKBhjaubah}(h]h ]h"]h$]h&]uh1jhjshKBhjubh)}(h **Return**h]j)}(hj|h]hReturn}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjzubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:511: ./drivers/media/test-drivers/vidtv/vidtv_common.chKFhjubh)}(h#Returns the number of bytes writtenh]h#Returns the number of bytes written}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:511: ./drivers/media/test-drivers/vidtv/vidtv_common.chKGhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j%vidtv_tuner_hardware_state (C struct)c.vidtv_tuner_hardware_statehNtauh1jhjhhhNhNubj)}(hhh](j)}(hvidtv_tuner_hardware_stateh]j )}(h!struct vidtv_tuner_hardware_stateh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:513: ./drivers/media/test-drivers/vidtv/vidtv_tuner.chKubj")}(h h]h }(hjϒhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjhhhjΒhKubj3)}(hvidtv_tuner_hardware_stateh]j9)}(hjh]hvidtv_tuner_hardware_state}(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjݒubah}(h]h ](jKjLeh"]h$]h&]hhuh1j2hjhhhjΒhKubeh}(h]h ]h"]h$]h&]hhjVuh1j jWjXhjhhhjΒhKubah}(h]jah ](j\j]eh"]h$]h&]jajb)jchuh1jhjΒhKhjhhubje)}(hhh]h)}(h"Simulate the tuner hardware statush]h"Simulate the tuner hardware status}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:513: ./drivers/media/test-drivers/vidtv/vidtv_tuner.chKRhjhhubah}(h]h ]h"]h$]h&]uh1jdhjhhhjΒhKubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1jhhhjhNhNubj)}(hX,**Definition**:: struct vidtv_tuner_hardware_state { bool asleep; u32 lock_status; u32 if_frequency; u32 tuned_frequency; u32 bandwidth; }; **Members** ``asleep`` whether the tuner is asleep, i.e whether _sleep() or _suspend() was called. ``lock_status`` Whether the tuner has managed to lock on the requested frequency. ``if_frequency`` The tuner's intermediate frequency. Hardcoded for the purposes of simulation. ``tuned_frequency`` The actual tuned frequency. ``bandwidth`` The actual bandwidth.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/drivers/vidtv:513: ./drivers/media/test-drivers/vidtv/vidtv_tuner.chKVhjubj)}(hstruct vidtv_tuner_hardware_state { bool asleep; u32 lock_status; u32 if_frequency; u32 tuned_frequency; u32 bandwidth; };h]hstruct vidtv_tuner_hardware_state { bool asleep; u32 lock_status; u32 if_frequency; u32 tuned_frequency; u32 bandwidth; };}hj@sbah}(h]h ]h"]h$]h&]hhuh1jh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:513: ./drivers/media/test-drivers/vidtv/vidtv_tuner.chKXhjubh)}(h **Members**h]j)}(hjQh]hMembers}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:513: ./drivers/media/test-drivers/vidtv/vidtv_tuner.chK`hjubjz)}(hhh](j)}(hW``asleep`` whether the tuner is asleep, i.e whether _sleep() or _suspend() was called. h](j)}(h ``asleep``h]j )}(hjph]hasleep}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjnubah}(h]h ]h"]h$]h&]uh1jh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:513: ./drivers/media/test-drivers/vidtv/vidtv_tuner.chKUhjjubj)}(hhh]h)}(hKwhether the tuner is asleep, i.e whether _sleep() or _suspend() was called.h]hKwhether the tuner is asleep, i.e whether _sleep() or _suspend() was called.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:513: ./drivers/media/test-drivers/vidtv/vidtv_tuner.chKThjubah}(h]h ]h"]h$]h&]uh1jhjjubeh}(h]h ]h"]h$]h&]uh1j~hjhKUhjgubj)}(hR``lock_status`` Whether the tuner has managed to lock on the requested frequency. h](j)}(h``lock_status``h]j )}(hjh]h lock_status}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:513: ./drivers/media/test-drivers/vidtv/vidtv_tuner.chKWhjubj)}(hhh]h)}(hAWhether the tuner has managed to lock on the requested frequency.h]hAWhether the tuner has managed to lock on the requested frequency.}(hjÓhhhNhNubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:513: ./drivers/media/test-drivers/vidtv/vidtv_tuner.chKVhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hjhKWhjgubj)}(h_``if_frequency`` The tuner's intermediate frequency. Hardcoded for the purposes of simulation. h](j)}(h``if_frequency``h]j )}(hjh]h if_frequency}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:513: ./drivers/media/test-drivers/vidtv/vidtv_tuner.chKYhjޓubj)}(hhh]h)}(hMThe tuner's intermediate frequency. Hardcoded for the purposes of simulation.h]hOThe tuner’s intermediate frequency. Hardcoded for the purposes of simulation.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:513: ./drivers/media/test-drivers/vidtv/vidtv_tuner.chKXhjubah}(h]h ]h"]h$]h&]uh1jhjޓubeh}(h]h ]h"]h$]h&]uh1j~hjhKYhjgubj)}(h0``tuned_frequency`` The actual tuned frequency. h](j)}(h``tuned_frequency``h]j )}(hjh]htuned_frequency}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:513: ./drivers/media/test-drivers/vidtv/vidtv_tuner.chKZhjubj)}(hhh]h)}(hThe actual tuned frequency.h]hThe actual tuned frequency.}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj3hKZhj4ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hj3hKZhjgubj)}(h#``bandwidth`` The actual bandwidth.h](j)}(h ``bandwidth``h]j )}(hjWh]h bandwidth}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjUubah}(h]h ]h"]h$]h&]uh1jh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:513: ./drivers/media/test-drivers/vidtv/vidtv_tuner.chKZhjQubj)}(hhh]h)}(hThe actual bandwidth.h]hThe actual bandwidth.}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:513: ./drivers/media/test-drivers/vidtv/vidtv_tuner.chK[hjmubah}(h]h ]h"]h$]h&]uh1jhjQubeh}(h]h ]h"]h$]h&]uh1j~hjlhKZhjgubeh}(h]h ]h"]h$]h&]uh1jyhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:513: ./drivers/media/test-drivers/vidtv/vidtv_tuner.chK^hjhhubh)}(hmThis structure is meant to simulate the status of the tuner hardware, as if we had a physical tuner hardware.h]hmThis structure is meant to simulate the status of the tuner hardware, as if we had a physical tuner hardware.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:513: ./drivers/media/test-drivers/vidtv/vidtv_tuner.chK[hjhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jvidtv_tuner_dev (C struct)c.vidtv_tuner_devhNtauh1jhjhhhNhNubj)}(hhh](j)}(hvidtv_tuner_devh]j )}(hstruct vidtv_tuner_devh](j)}(hjh]hstruct}(hjؔhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjԔhhh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:513: ./drivers/media/test-drivers/vidtv/vidtv_tuner.chKaubj")}(h h]h }(hjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j!hjԔhhhjhKaubj3)}(hvidtv_tuner_devh]j9)}(hjҔh]hvidtv_tuner_dev}(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j8hjubah}(h]h ](jKjLeh"]h$]h&]hhuh1j2hjԔhhhjhKaubeh}(h]h ]h"]h$]h&]hhjVuh1j jWjXhjДhhhjhKaubah}(h]j˔ah ](j\j]eh"]h$]h&]jajb)jchuh1jhjhKahj͔hhubje)}(hhh]h)}(hThe tuner structh]hThe tuner struct}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:513: ./drivers/media/test-drivers/vidtv/vidtv_tuner.chKhhjhhubah}(h]h ]h"]h$]h&]uh1jdhj͔hhhjhKaubeh}(h]h ](jstructeh"]h$]h&]jjjj2jj2jjjuh1jhhhjhNhNubj)}(hX **Definition**:: struct vidtv_tuner_dev { struct dvb_frontend *fe; struct vidtv_tuner_hardware_state hw_state; struct vidtv_tuner_config config; }; **Members** ``fe`` A pointer to the dvb_frontend structure allocated by vidtv_demod ``hw_state`` A struct to simulate the tuner's hardware state as if we had a physical tuner hardware. ``config`` The configuration used to start the tuner module, usually filled by a bridge driver. For vidtv, this is filled by vidtv_bridge before the tuner module is probed.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/drivers/vidtv:513: ./drivers/media/test-drivers/vidtv/vidtv_tuner.chKlhj6ubj)}(hstruct vidtv_tuner_dev { struct dvb_frontend *fe; struct vidtv_tuner_hardware_state hw_state; struct vidtv_tuner_config config; };h]hstruct vidtv_tuner_dev { struct dvb_frontend *fe; struct vidtv_tuner_hardware_state hw_state; struct vidtv_tuner_config config; };}hjWsbah}(h]h ]h"]h$]h&]hhuh1jh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:513: ./drivers/media/test-drivers/vidtv/vidtv_tuner.chKnhj6ubh)}(h **Members**h]j)}(hjhh]hMembers}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjfubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:513: ./drivers/media/test-drivers/vidtv/vidtv_tuner.chKthj6ubjz)}(hhh](j)}(hH``fe`` A pointer to the dvb_frontend structure allocated by vidtv_demod h](j)}(h``fe``h]j )}(hjh]hfe}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:513: ./drivers/media/test-drivers/vidtv/vidtv_tuner.chKjhjubj)}(hhh]h)}(h@A pointer to the dvb_frontend structure allocated by vidtv_demodh]h@A pointer to the dvb_frontend structure allocated by vidtv_demod}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKjhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hjhKjhj~ubj)}(he``hw_state`` A struct to simulate the tuner's hardware state as if we had a physical tuner hardware. h](j)}(h ``hw_state``h]j )}(hjh]hhw_state}(hj•hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:513: ./drivers/media/test-drivers/vidtv/vidtv_tuner.chKlhjubj)}(hhh]h)}(hWA struct to simulate the tuner's hardware state as if we had a physical tuner hardware.h]hYA struct to simulate the tuner’s hardware state as if we had a physical tuner hardware.}(hjٕhhhNhNubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:513: ./drivers/media/test-drivers/vidtv/vidtv_tuner.chKkhj֕ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hjՕhKlhj~ubj)}(h``config`` The configuration used to start the tuner module, usually filled by a bridge driver. For vidtv, this is filled by vidtv_bridge before the tuner module is probed.h](j)}(h ``config``h]j )}(hjh]hconfig}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:513: ./drivers/media/test-drivers/vidtv/vidtv_tuner.chKnhjubj)}(hhh]h)}(hThe configuration used to start the tuner module, usually filled by a bridge driver. For vidtv, this is filled by vidtv_bridge before the tuner module is probed.h]hThe configuration used to start the tuner module, usually filled by a bridge driver. For vidtv, this is filled by vidtv_bridge before the tuner module is probed.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:513: ./drivers/media/test-drivers/vidtv/vidtv_tuner.chKmhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j~hjhKnhj~ubeh}(h]h ]h"]h$]h&]uh1jyhj6ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubeh}(h]'functions-and-structs-used-within-vidtvah ]h"]'functions and structs used within vidtvah$]h&]uh1hhhhhhhhMubeh}(h]vidtv-virtual-digital-tv-driverah ]h"] vidtv: virtual digital tv driverah$]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_handlerjnerror_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}1]jD asrefids}nameids}(jHjEjjjjjWjTjjj. j+ jjjjj j jd ja j6 j3 j# j j& j# j j j j jz jw j jT jE jB jg jd jjj j jKjHjjj@j=u nametypes}(jHjjjWjj. jjj jd j6 j# j& j j jz j jE jg jj jKjj@uh}(jEhjjjjjTjjjZj+ jjjyjjj j1 ja j[ j3 j j j j# j9 j j j j jw j) jN jD jT jr jB j< jd j^ jj j j jHj jjNj=jjjjjj jjxj}jjjjj%j*jjjk#jp#j%j%j'j'jX)j])j.j.j1j1j'5j,5j7j7j;j;j=j=j@j@jCj!CjBEjGEjGjGjIjIjLjLjNjNjQjQjSjSjVjVj8Xj=XjuZjzZj\j \j]j]j%_j*_jajajbjbjdjdjufjzfjhjhjjjjjYmj^mjFojKoj3qj8qj sj%sjtjtjvjvjxjxjzjzj=|jB|jc~jh~j€jǀjjjjjsjxjIjOjϊjԊjɎjΎjjj˔jДu footnote_refs}j]jD as citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes]jr a citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}j|KsRparse_messages]transform_messages] transformerN include_log] decorationNhhub.