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]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}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhK 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 hhhhubh)}(hCurrently, it consists of:h]hCurrently, it consists of:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh 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&]uh1hhhhKhj#ubah}(h]h ]h"]h$]h&]uh1j!hjhhhhhNubj")}(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.}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj;ubah}(h]h ]h"]h$]h&]uh1j!hjhhhhhNubj")}(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.}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjSubah}(h]h ]h"]h$]h&]uh1j!hjhhhhhNubj")}(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.}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjkubah}(h]h ]h"]h$]h&]uh1j!hjhhhhhNubeh}(h]h ]h"]h$]h&]bullet-uh1jhhhKhhhhubeh}(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+hjhhubj)}(hhh](j")}(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&]uh1j!hjhhhhhNubj")}(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&]uh1j!hjhhhhhNubeh}(h]h ]h"]h$]h&]jjuh1jhhhK-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&]uh1hhhhK0hjhhubj)}(hhh](j")}(hdvb_vidtv_tuner.ko h]h)}(hdvb_vidtv_tuner.koh]hdvb_vidtv_tuner.ko}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK2hj=ubah}(h]h ]h"]h$]h&]uh1j!hj:hhhhhNubj")}(hdvb_vidtv_demod.ko h]h)}(hdvb_vidtv_demod.koh]hdvb_vidtv_demod.ko}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK4hjUubah}(h]h ]h"]h$]h&]uh1j!hj:hhhhhNubj")}(hdvb_vidtv_bridge.ko h]h)}(hdvb_vidtv_bridge.koh]hdvb_vidtv_bridge.ko}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK6hjmubah}(h]h ]h"]h$]h&]uh1j!hj:hhhhhNubeh}(h]h ]h"]h$]h&]jjuh1jhhhK2hjhhubeh}(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]j)}(hhh](j")}(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&]uh1j!hjubj")}(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&]uh1j!hjubeh}(h]h ]h"]h$]h&]jjuh1jhhhKChjubah}(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.}(hj"hhhNhNubah}(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.}(hj0hhhNhNubah}(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}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjFhhhhhKLubh)}(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:}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKMhjFhhubhdefinition_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}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1jphhhKShjlubh 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&]uh1jhjlubeh}(h]h ]h"]h$]h&]uh1jjhhhKShjgubjk)}(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](jq)}(h recover_tslock_prob_on_good_snr:h]h recover_tslock_prob_on_good_snr:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphhhKXhjubj)}(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&]uh1jjhhhKXhjghhubjk)}(hAmock_power_up_delay_msec Simulate a power up delay. Default: 0. h](jq)}(hmock_power_up_delay_msech]hmock_power_up_delay_msec}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphhhK[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&]uh1jjhhhK[hjghhubjk)}(h8mock_tune_delay_msec Simulate a tune delay. Default 0. h](jq)}(hmock_tune_delay_msech]hmock_tune_delay_msec}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphhhK^hjubj)}(hhh]h)}(h"Simulate a tune delay. Default 0.h]h"Simulate a tune delay. Default 0.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK^hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jjhhhK^hjghhubjk)}(hDvidtv_valid_dvb_t_freqs Valid DVB-T frequencies to simulate, in Hz. h](jq)}(hvidtv_valid_dvb_t_freqsh]hvidtv_valid_dvb_t_freqs}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jphhhKahj,ubj)}(hhh]h)}(h+Valid DVB-T frequencies to simulate, in Hz.h]h+Valid DVB-T frequencies to simulate, in Hz.}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKahj>ubah}(h]h ]h"]h$]h&]uh1jhj,ubeh}(h]h ]h"]h$]h&]uh1jjhhhKahjghhubjk)}(hDvidtv_valid_dvb_c_freqs Valid DVB-C frequencies to simulate, in Hz. h](jq)}(hvidtv_valid_dvb_c_freqsh]hvidtv_valid_dvb_c_freqs}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jphhhKdhj[ubj)}(hhh]h)}(h+Valid DVB-C frequencies to simulate, in Hz.h]h+Valid DVB-C frequencies to simulate, in Hz.}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKdhjmubah}(h]h ]h"]h$]h&]uh1jhj[ubeh}(h]h ]h"]h$]h&]uh1jjhhhKdhjghhubjk)}(hSvidtv_valid_dvb_s_freqs Valid DVB-S/S2 frequencies to simulate at Ku-Band, in kHz. h](jq)}(hvidtv_valid_dvb_s_freqsh]hvidtv_valid_dvb_s_freqs}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphhhKghjubj)}(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&]uh1jjhhhKghjghhubjk)}(hNmax_frequency_shift_hz, Maximum shift in HZ allowed when tuning in a channel. h](jq)}(hmax_frequency_shift_hz,h]hmax_frequency_shift_hz,}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphhhKjhjubj)}(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&]uh1jjhhhKjhjghhubjk)}(h=si_period_msec How often to send SI packets. Default: 40ms. h](jq)}(hsi_period_msech]hsi_period_msec}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphhhKmhjubj)}(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&]uh1jjhhhKmhjghhubjk)}(h?pcr_period_msec How often to send PCR packets. Default: 40ms. h](jq)}(hpcr_period_msech]hpcr_period_msec}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphhhKphjubj)}(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&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jjhhhKphjghhubjk)}(hrmux_rate_kbytes_sec Attempt to maintain this bit rate by inserting TS null packets, if necessary. Default: 4096. h](jq)}(hmux_rate_kbytes_sech]hmux_rate_kbytes_sec}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jphhhKthjFubj)}(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.}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKshjXubah}(h]h ]h"]h$]h&]uh1jhjFubeh}(h]h ]h"]h$]h&]uh1jjhhhKthjghhubjk)}(h4pcr_pid, PCR PID for all channels. Default: 0x200. h](jq)}(hpcr_pid,h]hpcr_pid,}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jphhhKwhjuubj)}(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&]uh1jhjuubeh}(h]h ]h"]h$]h&]uh1jjhhhKwhjghhubjk)}(hDmux_buf_sz_pkts, Size for the mux buffer in multiples of 188 bytes. h](jq)}(hmux_buf_sz_pkts,h]hmux_buf_sz_pkts,}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphhhKzhjubj)}(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&]uh1jjhhhKzhjghhubeh}(h]h ]h"]h$]h&]uh1jehjFhhhhhNubeh}(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~hjhhubjf)}(hhh](jk)}(h5vidtv_tuner.[ch] Implements a fake tuner DVB driver. h](jq)}(hvidtv_tuner.[ch]h]hvidtv_tuner.[ch]}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphhhKhjubj)}(hhh]h)}(h#Implements a fake tuner DVB driver.h]h#Implements a fake tuner DVB driver.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jjhhhKhjubjk)}(h;vidtv_demod.[ch] Implements a fake demodulator DVB driver. h](jq)}(hvidtv_demod.[ch]h]hvidtv_demod.[ch]}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jphhhKhj2ubj)}(hhh]h)}(h)Implements a fake demodulator DVB driver.h]h)Implements a fake demodulator DVB driver.}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjDubah}(h]h ]h"]h$]h&]uh1jhj2ubeh}(h]h ]h"]h$]h&]uh1jjhhhKhjhhubjk)}(h.vidtv_bridge.[ch] Implements a bridge driver. h](jq)}(hvidtv_bridge.[ch]h]hvidtv_bridge.[ch]}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jphhhKhjaubj)}(hhh]h)}(hImplements a bridge driver.h]hImplements a bridge driver.}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjsubah}(h]h ]h"]h$]h&]uh1jhjaubeh}(h]h ]h"]h$]h&]uh1jjhhhKhjhhubeh}(h]h ]h"]h$]h&]uh1jehjhhhhhNubh)}(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&]uh1hhhhKhjhhubjf)}(hhh](jk)}(hvvidtv_ts.[ch] Code to work with MPEG TS packets, such as TS headers, adaptation fields, PCR packets and NULL packets. h](jq)}(h vidtv_ts.[ch]h]h vidtv_ts.[ch]}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphhhKhjubj)}(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&]uh1jjhhhKhjubjk)}(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](jq)}(hvidtv_psi.[ch]h]hvidtv_psi.[ch]}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphhhKhjubj)}(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.}(hjhhhNhNubah}(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 }(hjhhhNhNubhemphasis)}(h*ISO 13818-1: Systems*h]hISO 13818-1: Systems}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh@, while the specification for the SDT, NIT, EIT can be found in }(hjhhhNhNubj)}(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}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh.}(hjhhhNhNubeh}(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: }(hjIhhhNhNubh)}(hE`TS1Globo.ts `_h]h TS1Globo.ts}(hjQhhhNhNubah}(h]h ]h"]h$]h&]name TS1Globo.tsrefuri4https://tsduck.io/streams/brazil-isdb-tb/TS1globo.tsuh1hhjIubhtarget)}(h7 h]h}(h] ts1globo-tsah ]h"] ts1globo.tsah$]h&]refurijbuh1jc referencedKhjIubh.}(hjIhhhNhNubeh}(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 }(hj}hhhNhNubh)}(h@`DVBInspector `_h]h DVBInspector}(hjhhhNhNubah}(h]h ]h"]h$]h&]name DVBInspectorja.https://sourceforge.net/projects/dvbinspector/uh1hhj}ubjd)}(h1 h]h}(h] dvbinspectorah ]h"] dvbinspectorah$]h&]refurijuh1jcjrKhj}ubh.}(hj}hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jjhhhKhjhhubjk)}(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](jq)}(hvidtv_pes.[ch]h]hvidtv_pes.[ch]}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphhhKhjubj)}(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&]uh1jjhhhKhjhhubjk)}(hvidtv_encoder.h An interface for vidtv encoders. New encoders can be added to this driver by implementing the calls in this file. h](jq)}(hvidtv_encoder.hh]hvidtv_encoder.h}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphhhKhjubj)}(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&]uh1jjhhhKhjhhubjk)}(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](jq)}(hvidtv_s302m.[ch]h]hvidtv_s302m.[ch]}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphhhKhjubj)}(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,hhhNhNubj)}(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}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,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.}(hjLhhhNhNubah}(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.}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj)ubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jjhhhKhjhhubjk)}(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](jq)}(hvidtv_channel.[ch]h]hvidtv_channel.[ch]}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jphhhKhjtubj)}(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](j")}(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&]uh1j!hjubj")}(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&]uh1j!hjubj")}(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&]uh1j!hjubj")}(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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j!hjubj")}(h`_.h](hhUsing the tools in v4l-utils is a great way to test and inspect the output of vidtv. It is hosted here: }(hj. hhhNhNubh)}(hI`v4l-utils Documentation `_h]hv4l-utils Documentation}(hj6 hhhNhNubah}(h]h ]h"]h$]h&]namev4l-utils Documentationja,https://linuxtv.org/wiki/index.php/V4l-utilsuh1hhj. ubjd)}(h/ h]h}(h]v4l-utils-documentationah ]h"]v4l-utils documentationah$]h&]refurijF uh1jcjrKhj. ubh.}(hj. hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj hhubh)}(hFrom its webpage::h]hFrom its webpage:}(hj^ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj 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.}hjl sbah}(h]h ]h"]h$]h&]hhuh1jhhhKhj hhubh)}(h9Start by installing v4l-utils and then modprobing vidtv::h]h8Start by installing v4l-utils and then modprobing vidtv:}(hjz hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj hhubj)}(hmodprobe dvb_vidtv_bridgeh]hmodprobe dvb_vidtv_bridge}hj sbah}(h]h ]h"]h$]h&]hhuh1jhhhKhj 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&]uh1hhhhKhj 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 Documentationja2https://www.linuxtv.org/wiki/index.php/Dvb-fe-tooluh1hhj ubjd)}(h5 h]h}(h]dvb-fe-tool-documentationah ]h"]dvb-fe-tool documentationah$]h&]refurij uh1jcjrKhj ubh.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMVhj hhubeh}(h]using-dvb-fe-toolah ]h"]using dvb-fe-toolah$]h&]uh1hhj hhhhhMubh)}(hhh](h)}(hUsing dvb-scanh]hUsing dvb-scan}(hj( hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj% 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.}(hj6 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM]hj% 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:}(hjD hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM_hj% 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}hjR sbah}(h]h ]h"]h$]h&]hhuh1jhhhMbhj% hhubhnote)}(h;The parameters depend on the video standard you're testing.h]h)}(hjd h]h=The parameters depend on the video standard you’re testing.}(hjf hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMjhjb ubah}(h]h ]h"]h$]h&]uh1j` hj% hhhhhNubja )}(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&]uh1hhhhMmhjy ubah}(h]h ]h"]h$]h&]uh1j` hj% 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-tablesja+https://git.linuxtv.org/dtv-scan-tables.gituh1hhj ubjd)}(h. h]h}(h]dvb-scan-tablesah ]h"]dvb-scan-tablesah$]h&]refurij uh1jcjrKhj ubh.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMrhj% 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&]uh1hhhhMuhj% 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&]hhuh1jhhhMwhj% 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 Documentationja.https://www.linuxtv.org/wiki/index.php/Dvbscanuh1hhj ubjd)}(h1 h]h}(h]dvb-scan-documentationah ]h"]dvb-scan documentationah$]h&]refurij uh1jcjrKhj ubh.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj% hhubeh}(h]using-dvb-scanah ]h"]using dvb-scanah$]h&]uh1hhj 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}(hj0 hhhNhNubah}(h]id1ah ]h"]h$]h&]refidid2docnamedriver-api/media/drivers/vidtvuh1j. 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}hjN 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}(hjd hhhNhNubah}(h]h ]h"]h$]h&]uh1jb hj^ 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.}(hjr hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj^ ubeh}(h]j@ ah ]h"]1ah$]h&]j: ajA jB uh1j\ hhhMhj hhjC 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 Documentationja0https://www.linuxtv.org/wiki/index.php/Dvbv5-zapuh1hhj ubjd)}(h3 h]h}(h]dvb-zap-documentationah ]h"]dvb-zap documentationah$]h&]refurij' uh1jcjrKhj ubh . See also: }(hj hhhNhNubh)}(h3`zap `_h]hzap}(hj9 hhhNhNubah}(h]h ]h"]h$]h&]namezapja*https://www.linuxtv.org/wiki/index.php/Zapuh1hhj ubjd)}(h- h]h}(h]zapah ]h"]zapah$]h&]refurijI uh1jcjrKhj ubh.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj hhubeh}(h] using-dvb-zapah ]h"] using dvb-zapah$]h&]uh1hhj 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}(hjt hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjq hhhhhMubh)}(hhh](h)}(hAdd *debugfs* integrationh](hAdd }(hj hhhNhNubj)}(h *debugfs*h]hdebugfs}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj 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&]uh1hhjq 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 hhhNhNubj)}(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}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj 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:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubj)}(hdrivers/media/common/v4l2-tpg/h]hdrivers/media/common/v4l2-tpg/}hj$sbah}(h]h ]h"]h$]h&]hhuh1jhhhMhj hhubeh}(h]add-a-way-to-test-videoah ]h"]add a way to test videoah$]h&]uh1hhjq hhhhhMubh)}(hhh](h)}(hAdd white noise simulationh]hAdd white noise simulation}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj:hhhhhMubh)}(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.}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj:hhubh)}(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:}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj:hhubj)}(hhh](j")}(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.}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjjubah}(h]h ]h"]h$]h&]uh1j!hjghhhhhNubj")}(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&]uh1j!hjghhhhhNubj")}(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&]uh1j!hjghhhhhNubeh}(h]h ]h"]h$]h&]jjuh1jhhhMhj:hhubeh}(h]add-white-noise-simulationah ]h"]add white noise simulationah$]h&]uh1hhjq 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&]uh1jhjhhh/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 }(hjhhhNhNubah}(h]h ]wah"]h$]h&]uh1j hjhhhj hKubh desc_name)}(h vidtv_dvbh]h desc_sig_name)}(hjh]h vidtv_dvb}(hj&hhhNhNubah}(h]h ]nah"]h$]h&]uh1j$hj ubah}(h]h ](sig-namedescnameeh"]h$]h&]hhuh1jhjhhhj hKubeh}(h]h ]h"]h$]h&]hh add_permalinkuh1jsphinx_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}(hjUhhhNhNubah}(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!hjRhhubah}(h]h ]h"]h$]h&]uh1jPhjhhhj hKubeh}(h]h ](cstructeh"]h$]h&]domainjmobjtypejndesctypejnnoindex 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&]uh1jhj~ubh:}(hj~hhhNhNubeh}(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%hjzubj)}(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'hjzubh)}(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:hjzubjf)}(hhh](jk)}(hB``pdev`` The platform device. Obtained when the bridge is probed. h](jq)}(h``pdev``h]j )}(hjh]hpdev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jph/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&]uh1jjhjhK#hjubjk)}(hE``fe`` The frontends. Obtained when probing the demodulator modules. h](jq)}(h``fe``h]j )}(hjh]hfe}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jph/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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK$hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jjhjhK$hjubjk)}(hB``adapter`` Represents a DTV adapter. See 'dvb_register_adapter'. h](jq)}(h ``adapter``h]j )}(hj=h]hadapter}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj;ubah}(h]h ]h"]h$]h&]uh1jph/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:491: ./drivers/media/test-drivers/vidtv/vidtv_bridge.hhK%hj7ubj)}(hhh]h)}(h5Represents a DTV adapter. See 'dvb_register_adapter'.h]h9Represents a DTV adapter. See ‘dvb_register_adapter’.}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjRhK%hjSubah}(h]h ]h"]h$]h&]uh1jhj7ubeh}(h]h ]h"]h$]h&]uh1jjhjRhK%hjubjk)}(hA``demux`` The demux used by the dvb_dmx_swfilter_packets() call. h](jq)}(h ``demux``h]j )}(hjvh]hdemux}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjtubah}(h]h ]h"]h$]h&]uh1jph/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:491: ./drivers/media/test-drivers/vidtv/vidtv_bridge.hhK&hjpubj)}(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&]uh1jhjpubeh}(h]h ]h"]h$]h&]uh1jjhjhK&hjubjk)}(h'``dmx_dev`` Represents a demux device. h](jq)}(h ``dmx_dev``h]j )}(hjh]hdmx_dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jph/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&]uh1jjhjhK'hjubjk)}(h4``dmx_fe`` The frontends associated with the demux. h](jq)}(h ``dmx_fe``h]j )}(hjh]hdmx_fe}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jph/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&]uh1jjhjhK(hjubjk)}(hC``i2c_adapter`` The i2c_adapter associated with the bridge driver. h](jq)}(h``i2c_adapter``h]j )}(hj!h]h i2c_adapter}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jph/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_adapter associated with the bridge driver.h]h2The i2c_adapter associated with the bridge driver.}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj6hK)hj7ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jjhj6hK)hjubjk)}(hN``i2c_client_demod`` The i2c_clients associated with the demodulator modules. h](jq)}(h``i2c_client_demod``h]j )}(hjZh]hi2c_client_demod}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjXubah}(h]h ]h"]h$]h&]uh1jph/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:491: ./drivers/media/test-drivers/vidtv/vidtv_bridge.hhK*hjTubj)}(hhh]h)}(h8The i2c_clients associated with the demodulator modules.h]h8The i2c_clients associated with the demodulator modules.}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hhjohK*hjpubah}(h]h ]h"]h$]h&]uh1jhjTubeh}(h]h ]h"]h$]h&]uh1jjhjohK*hjubjk)}(hH``i2c_client_tuner`` The i2c_clients associated with the tuner modules. h](jq)}(h``i2c_client_tuner``h]j )}(hjh]hi2c_client_tuner}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jph/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&]uh1jjhjhK+hjubjk)}(h'``nfeeds`` The number of feeds active. h](jq)}(h ``nfeeds``h]j )}(hjh]hnfeeds}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jph/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&]uh1jjhjhK,hjubjk)}(hC``feed_lock`` Protects access to the start/stop stream logic/data. h](jq)}(h ``feed_lock``h]j )}(hjh]h feed_lock}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jph/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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK-hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jjhjhK-hjubjk)}(h,``streaming`` Whether we are streaming now. h](jq)}(h ``streaming``h]j )}(hj>h]h streaming}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj<ubah}(h]h ]h"]h$]h&]uh1jph/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:491: ./drivers/media/test-drivers/vidtv/vidtv_bridge.hhK.hj8ubj)}(hhh]h)}(hWhether we are streaming now.h]hWhether we are streaming now.}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjShK.hjTubah}(h]h ]h"]h$]h&]uh1jhj8ubeh}(h]h ]h"]h$]h&]uh1jjhjShK.hjubjk)}(hR``mux`` The abstraction responsible for delivering MPEG TS packets to the bridge. h](jq)}(h``mux``h]j )}(hjwh]hmux}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjuubah}(h]h ]h"]h$]h&]uh1jph/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:491: ./drivers/media/test-drivers/vidtv/vidtv_bridge.hhK/hjqubj)}(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&]uh1jhjqubeh}(h]h ]h"]h$]h&]uh1jjhjhK/hjubjk)}(h>``mdev`` The media_device struct for media controller support.h](jq)}(h``mdev``h]j )}(hjh]hmdev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jph/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&]uh1jjhjhK/hjubeh}(h]h ]h"]h$]h&]uh1jehjzubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhjhhhNhNubj)}(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}(hj hhhNhNubah}(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 }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjhhhjhKubj)}(h vidtv_channelh]j%)}(hjh]h vidtv_channel}(hj*hhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hj&ubah}(h]h ](j7j8eh"]h$]h&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hhjBuh1jjCjDhjhhhjhKubah}(h]jah ](jHjIeh"]h$]h&]jMjN)jOhuh1jhjhKhjhhubjQ)}(hhh]h)}(hA 'channel' abstractionh]hA ‘channel’ abstraction}(hjLhhhNhNubah}(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 hjIhhubah}(h]h ]h"]h$]h&]uh1jPhjhhhjhKubeh}(h]h ](jmstructeh"]h$]h&]jrjmjsjdjtjdjujvjwuh1jhhhjhNhNubjy)}(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}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1jhjlubh:}(hjlhhhNhNubeh}(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$hjhubj)}(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&hjhubh)}(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.hhK2hjhubjf)}(hhh](jk)}(h``name`` name of the channel h](jq)}(h``name``h]j )}(hjh]hname}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jph/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&]uh1jjhjhK+hjubjk)}(hE``transport_stream_id`` a number to identify the TS, chosen at will. h](jq)}(h``transport_stream_id``h]j )}(hjh]htransport_stream_id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jph/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.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK,hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jjhjhK,hjubjk)}(hC``service`` A _single_ service. Will be concatenated into the SDT. h](jq)}(h ``service``h]j )}(hj+h]hservice}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj)ubah}(h]h ]h"]h$]h&]uh1jph/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:493: ./drivers/media/test-drivers/vidtv/vidtv_channel.hhK-hj%ubj)}(hhh]h)}(h6A _single_ service. Will be concatenated into the SDT.h]h6A _single_ service. Will be concatenated into the SDT.}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj@hK-hjAubah}(h]h ]h"]h$]h&]uh1jhj%ubeh}(h]h ]h"]h$]h&]uh1jjhj@hK-hjubjk)}(h3``program_num`` The link between PAT, PMT and SDT. h](jq)}(h``program_num``h]j )}(hjdh]h program_num}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjbubah}(h]h ]h"]h$]h&]uh1jph/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:493: ./drivers/media/test-drivers/vidtv/vidtv_channel.hhK.hj^ubj)}(hhh]h)}(h"The link between PAT, PMT and SDT.h]h"The link between PAT, PMT and SDT.}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjyhK.hjzubah}(h]h ]h"]h$]h&]uh1jhj^ubeh}(h]h ]h"]h$]h&]uh1jjhjyhK.hjubjk)}(ho``program`` A _single_ program with one or more streams associated with it. Will be concatenated into the PAT. h](jq)}(h ``program``h]j )}(hjh]hprogram}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jph/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&]uh1jjhjhK0hjubjk)}(hI``streams`` A stream loop used to populate the PMT section for 'program' h](jq)}(h ``streams``h]j )}(hjh]hstreams}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jph/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}(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.hhK-hjubj)}(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; };}hj5sbah}(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/hjubh)}(h **Members**h]j)}(hjFh]hMembers}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDubah}(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.hhK4hjubjf)}(hhh](jk)}(hN``drop_tslock_prob_on_low_snr`` probability of losing the lock due to low snr h](jq)}(h``drop_tslock_prob_on_low_snr``h]j )}(hjeh]hdrop_tslock_prob_on_low_snr}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1j hjcubah}(h]h ]h"]h$]h&]uh1jph~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:495: ./drivers/media/test-drivers/vidtv/vidtv_demod.hhK+hj_ubj)}(hhh]h)}(h-probability of losing the lock due to low snrh]h-probability of losing the lock due to low snr}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjzhK+hj{ubah}(h]h ]h"]h$]h&]uh1jhj_ubeh}(h]h ]h"]h$]h&]uh1jjhjzhK+hj\ubjk)}(hV``recover_tslock_prob_on_good_snr`` probability of recovering when the signal improvesh](jq)}(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&]uh1jph~/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&]uh1jjhjhK,hj\ubeh}(h]h ]h"]h$]h&]uh1jehjubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhjhhhNhNubh)}(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.}(hjhhhNhNubah}(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}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:495: ./drivers/media/test-drivers/vidtv/vidtv_demod.hhK5ubj)}(h h]h }(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjhhhj+hK5ubj)}(hvidtv_demod_stateh]j%)}(hjh]hvidtv_demod_state}(hj>hhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hj:ubah}(h]h ](j7j8eh"]h$]h&]hhuh1jhjhhhj+hK5ubeh}(h]h ]h"]h$]h&]hhjBuh1jjCjDhjhhhj+hK5ubah}(h]jah ](jHjIeh"]h$]h&]jMjN)jOhuh1jhj+hK5hjhhubjQ)}(hhh]h)}(hThe demodulator stateh]hThe demodulator state}(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.hhK8hj]hhubah}(h]h ]h"]h$]h&]uh1jPhjhhhj+hK5ubeh}(h]h ](jmstructeh"]h$]h&]jrjmjsjxjtjxjujvjwuh1jhhhjhNhNubjy)}(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.hhKhj|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:495: ./drivers/media/test-drivers/vidtv/vidtv_demod.hhKEhj|ubjf)}(hhh](jk)}(h<``frontend`` The frontend structure allocated by the demod. h](jq)}(h ``frontend``h]j )}(hjh]hfrontend}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jph~/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&]uh1jjhjhK:hjubjk)}(h.``config`` The config used to init the demod. h](jq)}(h ``config``h]j )}(hjh]hconfig}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jph~/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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK;hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jjhjhK;hjubjk)}(h``status`` the demod status. h](jq)}(h ``status``h]j )}(hj?h]hstatus}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj=ubah}(h]h ]h"]h$]h&]uh1jph~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:495: ./drivers/media/test-drivers/vidtv/vidtv_demod.hhK!ubah}(h]h ]h"]h$]h&]uh1jph/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:497: ./drivers/media/test-drivers/vidtv/vidtv_encoder.hhKshj:!ubj)}(hhh]h)}(h?Examples: Audio streams (0xc0-0xdf), Video streams (0xe0-0xef).h]h?Examples: Audio streams (0xc0-0xdf), Video streams (0xe0-0xef).}(hjY!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.hhKrhjV!ubah}(h]h ]h"]h$]h&]uh1jhj:!ubeh}(h]h ]h"]h$]h&]uh1jjhjU!hKshjxubjk)}(hH``es_pid`` The TS PID to use for the elementary stream in this encoder. h](jq)}(h ``es_pid``h]j )}(hjz!h]hes_pid}(hj|!hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjx!ubah}(h]h ]h"]h$]h&]uh1jph/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:497: ./drivers/media/test-drivers/vidtv/vidtv_encoder.hhKthjt!ubj)}(hhh]h)}(h"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj:"hKwhj;"ubah}(h]h ]h"]h$]h&]uh1jhj"ubeh}(h]h ]h"]h$]h&]uh1jjhj:"hKwhjxubjk)}(h@``sampling_rate_hz`` The sampling rate (or fps, if video) used. h](jq)}(h``sampling_rate_hz``h]j )}(hj^"h]hsampling_rate_hz}(hj`"hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj\"ubah}(h]h ]h"]h$]h&]uh1jph/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:497: ./drivers/media/test-drivers/vidtv/vidtv_encoder.hhKxhjX"ubj)}(hhh]h)}(h*The sampling rate (or fps, if video) used.h]h*The sampling rate (or fps, if video) used.}(hjw"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjs"hKxhjt"ubah}(h]h ]h"]h$]h&]uh1jhjX"ubeh}(h]h ]h"]h$]h&]uh1jjhjs"hKxhjxubjk)}(h``last_sample_cb`` Called when the encoder runs out of data.This is so the source can read data in a piecemeal fashion instead of having to provide it all at once. h](jq)}(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&]uh1jph/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:497: ./drivers/media/test-drivers/vidtv/vidtv_encoder.hhK|hj"ubj)}(hhh]h)}(hCalled when the encoder runs out of data.This is so the source can read data in a piecemeal fashion instead of having to provide it all at once.h]hCalled when the encoder runs out of data.This is so the source can read data in a piecemeal fashion instead of having to provide it all at once.}(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.hhKyhj"ubah}(h]h ]h"]h$]h&]uh1jhj"ubeh}(h]h ]h"]h$]h&]uh1jjhj"hK|hjxubjk)}(h?``destroy`` Destroy this encoder, freeing allocated resources. h](jq)}(h ``destroy``h]j )}(hj"h]hdestroy}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj"ubah}(h]h ]h"]h$]h&]uh1jph/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:497: ./drivers/media/test-drivers/vidtv/vidtv_encoder.hhK}hj"ubj)}(hhh]h)}(h2Destroy this encoder, freeing allocated resources.h]h2Destroy this encoder, freeing allocated resources.}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj"hK}hj"ubah}(h]h ]h"]h$]h&]uh1jhj"ubeh}(h]h ]h"]h$]h&]uh1jjhj"hK}hjxubjk)}(h``next`` Next in the chainh](jq)}(h``next``h]j )}(hj #h]hnext}(hj #hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj#ubah}(h]h ]h"]h$]h&]uh1jph/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:497: ./drivers/media/test-drivers/vidtv/vidtv_encoder.hhK}hj#ubj)}(hhh]h)}(hNext in the chainh]hNext in the chain}(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.hhK~hj #ubah}(h]h ]h"]h$]h&]uh1jhj#ubeh}(h]h ]h"]h$]h&]uh1jjhj#hK}hjxubeh}(h]h ]h"]h$]h&]uh1jehj0ubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jvidtv_mux_timing (C struct)c.vidtv_mux_timinghNtauh1jhjhhhNhNubj)}(hhh](j)}(hvidtv_mux_timingh]j)}(hstruct vidtv_mux_timingh](j)}(hjh]hstruct}(hjd#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.hhKubj)}(h h]h }(hjr#hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj`#hhhjq#hKubj)}(hvidtv_mux_timingh]j%)}(hj^#h]hvidtv_mux_timing}(hj#hhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hj#ubah}(h]h ](j7j8eh"]h$]h&]hhuh1jhj`#hhhjq#hKubeh}(h]h ]h"]h$]h&]hhjBuh1jjCjDhj\#hhhjq#hKubah}(h]jW#ah ](jHjIeh"]h$]h&]jMjN)jOhuh1jhjq#hKhjY#hhubjQ)}(hhh]h)}(hTiming related informationh]hTiming related information}(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&]uh1jPhjY#hhhjq#hKubeh}(h]h ](jmstructeh"]h$]h&]jrjmjsj#jtj#jujvjwuh1jhhhjhNhNubjy)}(hX**Definition**:: struct vidtv_mux_timing { u64 start_jiffies; u64 current_jiffies; u64 past_jiffies; u64 clk; u64 pcr_period_usecs; u64 si_period_usecs; }; **Members** ``start_jiffies`` The value of 'jiffies' when we started the mux thread. ``current_jiffies`` The value of 'jiffies' for the current iteration. ``past_jiffies`` The value of 'jiffies' for the past iteration. ``clk`` A 27Mhz clock from which we will drive the PCR. Updated proportionally on every iteration. ``pcr_period_usecs`` How often we should send PCR packets. ``si_period_usecs`` How often we should send PSI packets.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)}(hstruct vidtv_mux_timing { u64 start_jiffies; u64 current_jiffies; u64 past_jiffies; u64 clk; u64 pcr_period_usecs; u64 si_period_usecs; };h]hstruct vidtv_mux_timing { u64 start_jiffies; u64 current_jiffies; u64 past_jiffies; u64 clk; u64 pcr_period_usecs; u64 si_period_usecs; };}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.hhK*hj#ubjf)}(hhh](jk)}(hI``start_jiffies`` The value of 'jiffies' when we started the mux thread. h](jq)}(h``start_jiffies``h]j )}(hj$h]h start_jiffies}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj$ubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhK!hj $ubj)}(hhh]h)}(h6The value of 'jiffies' when we started the mux thread.h]h:The value of ‘jiffies’ when we started the mux thread.}(hj,$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj($hK!hj)$ubah}(h]h ]h"]h$]h&]uh1jhj $ubeh}(h]h ]h"]h$]h&]uh1jjhj($hK!hj $ubjk)}(hF``current_jiffies`` The value of 'jiffies' for the current iteration. h](jq)}(h``current_jiffies``h]j )}(hjL$h]hcurrent_jiffies}(hjN$hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjJ$ubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhK"hjF$ubj)}(hhh]h)}(h1The value of 'jiffies' for the current iteration.h]h5The value of ‘jiffies’ for the current iteration.}(hje$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhja$hK"hjb$ubah}(h]h ]h"]h$]h&]uh1jhjF$ubeh}(h]h ]h"]h$]h&]uh1jjhja$hK"hj $ubjk)}(h@``past_jiffies`` The value of 'jiffies' for the past iteration. h](jq)}(h``past_jiffies``h]j )}(hj$h]h past_jiffies}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj$ubah}(h]h ]h"]h$]h&]uh1jph|/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 value of 'jiffies' for the past iteration.h]h2The value of ‘jiffies’ for the past iteration.}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj$hK#hj$ubah}(h]h ]h"]h$]h&]uh1jhj$ubeh}(h]h ]h"]h$]h&]uh1jjhj$hK#hj $ubjk)}(hc``clk`` A 27Mhz clock from which we will drive the PCR. Updated proportionally on every iteration. h](jq)}(h``clk``h]j )}(hj$h]hclk}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj$ubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhK%hj$ubj)}(hhh]h)}(hZA 27Mhz clock from which we will drive the PCR. Updated proportionally on every iteration.h]hZA 27Mhz clock from which we will drive the PCR. Updated proportionally on every iteration.}(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.hhK$hj$ubah}(h]h ]h"]h$]h&]uh1jhj$ubeh}(h]h ]h"]h$]h&]uh1jjhj$hK%hj $ubjk)}(h;``pcr_period_usecs`` How often we should send PCR packets. h](jq)}(h``pcr_period_usecs``h]j )}(hj$h]hpcr_period_usecs}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj$ubah}(h]h ]h"]h$]h&]uh1jph|/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%How often we should send PCR packets.h]h%How often we should send PCR packets.}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj %hK&hj%ubah}(h]h ]h"]h$]h&]uh1jhj$ubeh}(h]h ]h"]h$]h&]uh1jjhj %hK&hj $ubjk)}(h9``si_period_usecs`` How often we should send PSI packets.h](jq)}(h``si_period_usecs``h]j )}(hj1%h]hsi_period_usecs}(hj3%hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj/%ubah}(h]h ]h"]h$]h&]uh1jph|/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%How often we should send PSI packets.h]h%How often we should send PSI packets.}(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.hhK'hjG%ubah}(h]h ]h"]h$]h&]uh1jhj+%ubeh}(h]h ]h"]h$]h&]uh1jjhjF%hK&hj $ubeh}(h]h ]h"]h$]h&]uh1jehj#ubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhjhhhNhNubh)}(h**Description**h]j)}(hjt%h]h Description}(hjv%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjr%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.hhK*hjhhubh)}(hThis is used to decide when PCR or PSI packets should be sent. This will also provide storage for the clock, which is used to compute the value for the PCR.h]hThis is used to decide when PCR or PSI packets should be sent. This will also provide storage for the clock, which is used to compute the value for the 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.hhKhjhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jvidtv_mux_si (C struct)c.vidtv_mux_sihNtauh1jhjhhhNhNubj)}(hhh](j)}(h vidtv_mux_sih]j)}(hstruct vidtv_mux_sih](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 ]jah"]h$]h&]uh1j hj%hhhj%hK"ubj)}(h vidtv_mux_sih]j%)}(hj%h]h vidtv_mux_si}(hj%hhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hj%ubah}(h]h ](j7j8eh"]h$]h&]hhuh1jhj%hhhj%hK"ubeh}(h]h ]h"]h$]h&]hhjBuh1jjCjDhj%hhhj%hK"ubah}(h]j%ah ](jHjIeh"]h$]h&]jMjN)jOhuh1jhj%hK"hj%hhubjQ)}(hhh]h)}(hStore the PSI context.h]hStore the PSI context.}(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.hhK4hj%hhubah}(h]h ]h"]h$]h&]uh1jPhj%hhhj%hK"ubeh}(h]h ](jmstructeh"]h$]h&]jrjmjsj &jtj &jujvjwuh1jhhhjhNhNubjy)}(hX**Definition**:: struct vidtv_mux_si { struct vidtv_psi_table_pat *pat; struct vidtv_psi_table_pmt **pmt_secs; struct vidtv_psi_table_sdt *sdt; struct vidtv_psi_table_nit *nit; struct vidtv_psi_table_eit *eit; }; **Members** ``pat`` The PAT in use by the muxer. ``pmt_secs`` The PMT sections in use by the muxer. One for each program in the PAT. ``sdt`` The SDT in use by the muxer. ``nit`` The NIT in use by the muxer. ``eit`` the EIT in use by the muxer.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.hhK8hj&ubj)}(hstruct vidtv_mux_si { struct vidtv_psi_table_pat *pat; struct vidtv_psi_table_pmt **pmt_secs; struct vidtv_psi_table_sdt *sdt; struct vidtv_psi_table_nit *nit; struct vidtv_psi_table_eit *eit; };h]hstruct vidtv_mux_si { struct vidtv_psi_table_pat *pat; struct vidtv_psi_table_pmt **pmt_secs; struct vidtv_psi_table_sdt *sdt; struct vidtv_psi_table_nit *nit; struct vidtv_psi_table_eit *eit; };}hj1&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)}(hjB&h]hMembers}(hjD&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.hhKBhj&ubjf)}(hhh](jk)}(h%``pat`` The PAT in use by the muxer. h](jq)}(h``pat``h]j )}(hja&h]hpat}(hjc&hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj_&ubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKhj&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&]uh1jjhj&hK>hjX&ubjk)}(h%``nit`` The NIT in use by the muxer. h](jq)}(h``nit``h]j )}(hj 'h]hnit}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj 'ubah}(h]h ]h"]h$]h&]uh1jph|/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.}(hj%'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj!'hK?hj"'ubah}(h]h ]h"]h$]h&]uh1jhj'ubeh}(h]h ]h"]h$]h&]uh1jjhj!'hK?hjX&ubjk)}(h$``eit`` the EIT in use by the muxer.h](jq)}(h``eit``h]j )}(hjE'h]heit}(hjG'hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjC'ubah}(h]h ]h"]h$]h&]uh1jph|/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 EIT in use by the muxer.h]hthe EIT 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.hhK@hj['ubah}(h]h ]h"]h$]h&]uh1jhj?'ubeh}(h]h ]h"]h$]h&]uh1jjhjZ'hK?hjX&ubeh}(h]h ]h"]h$]h&]uh1jehj&ubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhjhhhNhNubh)}(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 ]jah"]h$]h&]uh1j hj'hhhj'hK=ubj)}(hvidtv_mux_pid_ctxh]j%)}(hj'h]hvidtv_mux_pid_ctx}(hj'hhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hj'ubah}(h]h ](j7j8eh"]h$]h&]hhuh1jhj'hhhj'hK=ubeh}(h]h ]h"]h$]h&]hhjBuh1jjCjDhj'hhhj'hK=ubah}(h]j'ah ](jHjIeh"]h$]h&]jMjN)jOhuh1jhj'hK=hj'hhubjQ)}(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&]uh1jPhj'hhhj'hK=ubeh}(h]h ](jmstructeh"]h$]h&]jrjmjsj/(jtj/(jujvjwuh1jhhhjhNhNubjy)}(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}(hj;(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7(ubh:}(hj7(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.hhKOhj3(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; };}hjT(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.hhKQhj3(ubh)}(h **Members**h]j)}(hje(h]hMembers}(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:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKWhj3(ubjf)}(hhh](jk)}(h``pid`` The TS PID. h](jq)}(h``pid``h]j )}(hj(h]hpid}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj(ubah}(h]h ]h"]h$]h&]uh1jph|/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&]uh1jjhj(hKMhj{(ubjk)}(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](jq)}(h``cc``h]j )}(hj(h]hcc}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj(ubah}(h]h ]h"]h$]h&]uh1jph|/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&]uh1jjhj(hKPhj{(ubjk)}(hH``h`` This is embedded in a hash table, mapping pid -> vidtv_mux_pid_ctxh](jq)}(h``h``h]j )}(hj(h]hh}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj(ubah}(h]h ]h"]h$]h&]uh1jph|/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&]uh1jjhj )hKPhj{(ubeh}(h]h ]h"]h$]h&]uh1jehj3(ubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhjhhhNhNubj)}(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}(hjQ)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjM)hhh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKWubj)}(h h]h }(hj_)hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjM)hhhj^)hKWubj)}(h vidtv_muxh]j%)}(hjK)h]h vidtv_mux}(hjq)hhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjm)ubah}(h]h ](j7j8eh"]h$]h&]hhuh1jhjM)hhhj^)hKWubeh}(h]h ]h"]h$]h&]hhjBuh1jjCjDhjI)hhhj^)hKWubah}(h]jD)ah ](jHjIeh"]h$]h&]jMjN)jOhuh1jhj^)hKWhjF)hhubjQ)}(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&]uh1jPhjF)hhhj^)hKWubeh}(h]h ](jmstructeh"]h$]h&]jrjmjsj)jtj)jujvjwuh1jhhhjhNhNubjy)}(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)}(hXUstruct 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]hXUstruct 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)ubjf)}(hhh](jk)}(h6``fe`` The frontend structure allocated by the muxer. h](jq)}(h``fe``h]j )}(hj*h]hfe}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj)ubah}(h]h ]h"]h$]h&]uh1jph|/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&]uh1jjhj*hK[hj)ubjk)}(h"``dev`` pointer to struct device. h](jq)}(h``dev``h]j )}(hj9*h]hdev}(hj;*hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj7*ubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhK\hj3*ubj)}(hhh]h)}(hpointer to struct device.h]hpointer to struct device.}(hjR*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjN*hK\hjO*ubah}(h]h ]h"]h$]h&]uh1jhj3*ubeh}(h]h ]h"]h$]h&]uh1jjhjN*hK\hj)ubjk)}(h6``timing`` Keeps track of timing related information. h](jq)}(h ``timing``h]j )}(hjr*h]htiming}(hjt*hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjp*ubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhK]hjl*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&]uh1jhjl*ubeh}(h]h ]h"]h$]h&]uh1jjhj*hK]hj)ubjk)}(h<``mux_rate_kbytes_sec`` The bit rate for the TS, in kbytes. h](jq)}(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&]uh1jph|/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&]uh1jjhj*hK^hj)ubjk)}(h<``pid_ctx`` A hash table to keep track of per-PID metadata. h](jq)}(h ``pid_ctx``h]j )}(hj*h]hpid_ctx}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj*ubah}(h]h ]h"]h$]h&]uh1jph|/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&]uh1jjhj*hK_hj)ubjk)}(hN``on_new_packets_available_cb`` A callback to inform of new TS packets ready. h](jq)}(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&]uh1jph|/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.}(hj6+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj2+hK`hj3+ubah}(h]h ]h"]h$]h&]uh1jhj+ubeh}(h]h ]h"]h$]h&]uh1jjhj2+hK`hj)ubjk)}(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](jq)}(h ``mux_buf``h]j )}(hjV+h]hmux_buf}(hjX+hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjT+ubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKbhjP+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.}(hjo+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.hhKahjl+ubah}(h]h ]h"]h$]h&]uh1jhjP+ubeh}(h]h ]h"]h$]h&]uh1jjhjk+hKbhj)ubjk)}(h'``mux_buf_sz`` The size for 'mux_buf'. h](jq)}(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&]uh1jph|/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&]uh1jjhj+hKchj)ubjk)}(h6``mux_buf_offset`` The current offset into 'mux_buf'. h](jq)}(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&]uh1jph|/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&]uh1jjhj+hKdhj)ubjk)}(h6``channels`` The channels associated with this muxer. h](jq)}(h ``channels``h]j )}(hj,h]hchannels}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj,ubah}(h]h ]h"]h$]h&]uh1jph|/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&]uh1jjhj,hKehj)ubjk)}(h'``si`` Keeps track of the PSI context. h](jq)}(h``si``h]j )}(hj;,h]hsi}(hj=,hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj9,ubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKfhj5,ubj)}(hhh]h)}(hKeeps track of the PSI context.h]hKeeps track of the PSI context.}(hjT,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjP,hKfhjQ,ubah}(h]h ]h"]h$]h&]uh1jhj5,ubeh}(h]h ]h"]h$]h&]uh1jjhjP,hKfhj)ubjk)}(h5``num_streamed_pcr`` Number of PCR packets streamed. h](jq)}(h``num_streamed_pcr``h]j )}(hjt,h]hnum_streamed_pcr}(hjv,hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjr,ubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKghjn,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&]uh1jhjn,ubeh}(h]h ]h"]h$]h&]uh1jjhj,hKghj)ubjk)}(h8``num_streamed_si`` The number of PSI packets streamed. h](jq)}(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&]uh1jph|/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&]uh1jjhj,hKhhj)ubjk)}(h7``mpeg_thread`` Thread responsible for the muxer loop. h](jq)}(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&]uh1jph|/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&]uh1jjhj,hKihj)ubjk)}(h0``streaming`` whether 'mpeg_thread' is running. h](jq)}(h ``streaming``h]j )}(hj-h]h streaming}(hj!-hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj-ubah}(h]h ]h"]h$]h&]uh1jph|/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.}(hj8-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj4-hKjhj5-ubah}(h]h ]h"]h$]h&]uh1jhj-ubeh}(h]h ]h"]h$]h&]uh1jjhj4-hKjhj)ubjk)}(hW``pcr_pid`` The TS PID used for the PSI packets. All channels will share the same PCR. h](jq)}(h ``pcr_pid``h]j )}(hjX-h]hpcr_pid}(hjZ-hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjV-ubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKlhjR-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.}(hjq-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.hhKkhjn-ubah}(h]h ]h"]h$]h&]uh1jhjR-ubeh}(h]h ]h"]h$]h&]uh1jjhjm-hKlhj)ubjk)}(h0``transport_stream_id`` The transport stream ID h](jq)}(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&]uh1jph|/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&]uh1jjhj-hKmhj)ubjk)}(h``network_id`` The network ID h](jq)}(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&]uh1jph|/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&]uh1jjhj-hKnhj)ubjk)}(h"``network_name`` The network name h](jq)}(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&]uh1jph|/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}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj.hKohj.ubah}(h]h ]h"]h$]h&]uh1jhj-ubeh}(h]h ]h"]h$]h&]uh1jjhj.hKohj)ubjk)}(h``priv`` Private data.h](jq)}(h``priv``h]j )}(hj=.h]hpriv}(hj?.hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj;.ubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKohj7.ubj)}(hhh]h)}(h Private data.h]h Private data.}(hjV.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.hhKphjS.ubah}(h]h ]h"]h$]h&]uh1jhj7.ubeh}(h]h ]h"]h$]h&]uh1jjhjR.hKohj)ubeh}(h]h ]h"]h$]h&]uh1jehj)ubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhjhhhNhNubj)}(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 ]jah"]h$]h&]uh1j hj.hhhj.hKvubj)}(hvidtv_mux_init_argsh]j%)}(hj.h]hvidtv_mux_init_args}(hj.hhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hj.ubah}(h]h ](j7j8eh"]h$]h&]hhuh1jhj.hhhj.hKvubeh}(h]h ]h"]h$]h&]hhjBuh1jjCjDhj.hhhj.hKvubah}(h]j.ah ](jHjIeh"]h$]h&]jMjN)jOhuh1jhj.hKvhj.hhubjQ)}(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&]uh1jPhj.hhhj.hKvubeh}(h]h ](jmstructeh"]h$]h&]jrjmjsj.jtj.jujvjwuh1jhhhjhNhNubjy)}(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&]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.hhKhj.ubjf)}(hhh](jk)}(h<``mux_rate_kbytes_sec`` The bit rate for the TS, in kbytes. h](jq)}(h``mux_rate_kbytes_sec``h]j )}(hjF/h]hmux_rate_kbytes_sec}(hjH/hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjD/ubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKhj@/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[/hKhj\/ubah}(h]h ]h"]h$]h&]uh1jhj@/ubeh}(h]h ]h"]h$]h&]uh1jjhj[/hKhj=/ubjk)}(hN``on_new_packets_available_cb`` A callback to inform of new TS packets ready. h](jq)}(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&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKhjy/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&]uh1jhjy/ubeh}(h]h ]h"]h$]h&]uh1jjhj/hKhj=/ubjk)}(h'``mux_buf_sz`` The size for 'mux_buf'. h](jq)}(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&]uh1jph|/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&]uh1jjhj/hKhj=/ubjk)}(h;``pcr_period_usecs`` How often we should send PCR packets. h](jq)}(h``pcr_period_usecs``h]j )}(hj/h]hpcr_period_usecs}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj/ubah}(h]h ]h"]h$]h&]uh1jph|/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.}(hj 0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj0hKhj0ubah}(h]h ]h"]h$]h&]uh1jhj/ubeh}(h]h ]h"]h$]h&]uh1jjhj0hKhj=/ubjk)}(h:``si_period_usecs`` How often we should send PSI packets. h](jq)}(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&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKhj$0ubj)}(hhh]h)}(h%How often we should send PSI packets.h]h%How often we should send PSI packets.}(hjC0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj?0hKhj@0ubah}(h]h ]h"]h$]h&]uh1jhj$0ubeh}(h]h ]h"]h$]h&]uh1jjhj?0hKhj=/ubjk)}(hW``pcr_pid`` The TS PID used for the PSI packets. All channels will share the same PCR. h](jq)}(h ``pcr_pid``h]j )}(hjc0h]hpcr_pid}(hje0hhhNhNubah}(h]h ]h"]h$]h&]uh1j hja0ubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKhj]0ubj)}(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|0hhhNhNubah}(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.hhKhjy0ubah}(h]h ]h"]h$]h&]uh1jhj]0ubeh}(h]h ]h"]h$]h&]uh1jjhjx0hKhj=/ubjk)}(h0``transport_stream_id`` The transport stream ID h](jq)}(h``transport_stream_id``h]j )}(hj0h]htransport_stream_id}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj0ubah}(h]h ]h"]h$]h&]uh1jph|/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&]uh1jjhj0hKhj=/ubjk)}(h1``channels`` an optional list of channels to use h](jq)}(h ``channels``h]j )}(hj0h]hchannels}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj0ubah}(h]h ]h"]h$]h&]uh1jph|/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}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj0hKhj0ubah}(h]h ]h"]h$]h&]uh1jhj0ubeh}(h]h ]h"]h$]h&]uh1jjhj0hKhj=/ubjk)}(h``network_id`` The network ID h](jq)}(h``network_id``h]j )}(hj1h]h network_id}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj 1ubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKhj 1ubj)}(hhh]h)}(hThe network IDh]hThe network ID}(hj(1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj$1hKhj%1ubah}(h]h ]h"]h$]h&]uh1jhj 1ubeh}(h]h ]h"]h$]h&]uh1jjhj$1hKhj=/ubjk)}(h"``network_name`` The network name h](jq)}(h``network_name``h]j )}(hjH1h]h network_name}(hjJ1hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjF1ubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKhjB1ubj)}(hhh]h)}(hThe network nameh]hThe network name}(hja1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj]1hKhj^1ubah}(h]h ]h"]h$]h&]uh1jhjB1ubeh}(h]h ]h"]h$]h&]uh1jjhj]1hKhj=/ub,jk)}(h``priv`` Private data.h](jq)}(h``priv``h]j )}(hj1h]hpriv}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj1ubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:499: ./drivers/media/test-drivers/vidtv/vidtv_mux.hhKhj{1ubj)}(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&]uh1jhj{1ubeh}(h]h ]h"]h$]h&]uh1jjhj1hKhj=/ubeh}(h]h ]h"]h$]h&]uh1jehj.ubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhjhhhNhNubj)}(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 ]jah"]h$]h&]uh1j hj1hhhj1hKubj)}(hpes_header_write_argsh]j%)}(hj1h]hpes_header_write_args}(hj1hhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hj1ubah}(h]h ](j7j8eh"]h$]h&]hhuh1jhj1hhhj1hKubeh}(h]h ]h"]h$]h&]hhjBuh1jjCjDhj1hhhj1hKubah}(h]j1ah ](jHjIeh"]h$]h&]jMjN)jOhuh1jhj1hKhj1hhubjQ)}(hhh]h)}(h Arguments to write a PES header.h]h Arguments to write a PES header.}(hj2hhhNhNubah}(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.hhKLhj2hhubah}(h]h ]h"]h$]h&]uh1jPhj1hhhj1hKubeh}(h]h ](jmstructeh"]h$]h&]jrjmjsj52jtj52jujvjwuh1jhhhjhNhNubjy)}(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}(hjA2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=2ubh:}(hj=2hhhNhNubeh}(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.hhKPhj92ubj)}(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; };}hjZ2sbah}(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.hhKRhj92ubh)}(h **Members**h]j)}(hjk2h]hMembers}(hjm2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhji2ubah}(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`hj92ubjf)}(hhh](jk)}(h'``dest_buf`` The buffer to write into. h](jq)}(h ``dest_buf``h]j )}(hj2h]hdest_buf}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj2ubah}(h]h ]h"]h$]h&]uh1jph|/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&]uh1jjhj2hKNhj2ubjk)}(h;``dest_offset`` where to start writing in the dest_buffer. h](jq)}(h``dest_offset``h]j )}(hj2h]h dest_offset}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj2ubah}(h]h ]h"]h$]h&]uh1jph|/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&]uh1jjhj2hKOhj2ubjk)}(h,``dest_buf_sz`` The size of the dest_buffer h](jq)}(h``dest_buf_sz``h]j )}(hj2h]h dest_buf_sz}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj2ubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKPhj2ubj)}(hhh]h)}(hThe size of the dest_bufferh]hThe size of the dest_buffer}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj3hKPhj3ubah}(h]h ]h"]h$]h&]uh1jhj2ubeh}(h]h ]h"]h$]h&]uh1jjhj3hKPhj2ubjk)}(h0``encoder_id`` Encoder id (see vidtv_encoder.h) h](jq)}(h``encoder_id``h]j )}(hj53h]h encoder_id}(hj73hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj33ubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKQhj/3ubj)}(hhh]h)}(h Encoder id (see vidtv_encoder.h)h]h Encoder id (see vidtv_encoder.h)}(hjN3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJ3hKQhjK3ubah}(h]h ]h"]h$]h&]uh1jhj/3ubeh}(h]h ]h"]h$]h&]uh1jjhjJ3hKQhj2ubjk)}(h!``send_pts`` Should we send PTS? h](jq)}(h ``send_pts``h]j )}(hjn3h]hsend_pts}(hjp3hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjl3ubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKRhjh3ubj)}(hhh]h)}(hShould we send PTS?h]hShould we send PTS?}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj3hKRhj3ubah}(h]h ]h"]h$]h&]uh1jhjh3ubeh}(h]h ]h"]h$]h&]uh1jjhj3hKRhj2ubjk)}(h``pts`` PTS value to send. h](jq)}(h``pts``h]j )}(hj3h]hpts}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj3ubah}(h]h ]h"]h$]h&]uh1jph|/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&]uh1jjhj3hKShj2ubjk)}(h!``send_dts`` Should we send DTS? h](jq)}(h ``send_dts``h]j )}(hj3h]hsend_dts}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj3ubah}(h]h ]h"]h$]h&]uh1jph|/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?}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj3hKThj3ubah}(h]h ]h"]h$]h&]uh1jhj3ubeh}(h]h ]h"]h$]h&]uh1jjhj3hKThj2ubjk)}(h``dts`` DTS value to send. h](jq)}(h``dts``h]j )}(hj4h]hdts}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj4ubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKUhj4ubj)}(hhh]h)}(hDTS value to send.h]hDTS value to send.}(hj24hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj.4hKUhj/4ubah}(h]h ]h"]h$]h&]uh1jhj4ubeh}(h]h ]h"]h$]h&]uh1jjhj.4hKUhj2ubjk)}(h^``stream_id`` The stream id to use. Ex: Audio streams (0xc0-0xdf), Video streams (0xe0-0xef). h](jq)}(h ``stream_id``h]j )}(hjR4h]h stream_id}(hjT4hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjP4ubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKWhjL4ubj)}(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).}(hjk4hhhNhNubah}(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.hhKVhjh4ubah}(h]h ]h"]h$]h&]uh1jhjL4ubeh}(h]h ]h"]h$]h&]uh1jjhjg4hKWhj2ubjk)}(hi``n_pes_h_s_bytes`` Padding bytes. Might be used by an encoder if needed, gets discarded by the decoder. h](jq)}(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&]uh1jph|/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&]uh1jjhj4hKYhj2ubjk)}(hR``access_unit_len`` The size of _one_ access unit (with any headers it might need)h](jq)}(h``access_unit_len``h]j )}(hj4h]haccess_unit_len}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj4ubah}(h]h ]h"]h$]h&]uh1jph|/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&]uh1jjhj4hKYhj2ubeh}(h]h ]h"]h$]h&]uh1jehj92ubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhjhhhNhNubj)}(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}(hj 5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5hhh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhK`ubj)}(h h]h }(hj.5hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj5hhhj-5hK`ubj)}(hpes_ts_header_write_argsh]j%)}(hj5h]hpes_ts_header_write_args}(hj@5hhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hj<5ubah}(h]h ](j7j8eh"]h$]h&]hhuh1jhj5hhhj-5hK`ubeh}(h]h ]h"]h$]h&]hhjBuh1jjCjDhj5hhhj-5hK`ubah}(h]j5ah ](jHjIeh"]h$]h&]jMjN)jOhuh1jhj-5hK`hj5hhubjQ)}(hhh]h)}(hArguments to write a TS header.h]hArguments to write a TS header.}(hjb5hhhNhNubah}(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.hhKnhj_5hhubah}(h]h ]h"]h$]h&]uh1jPhj5hhhj-5hK`ubeh}(h]h ](jmstructeh"]h$]h&]jrjmjsjz5jtjz5jujvjwuh1jhhhjhNhNubjy)}(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.hhKrhj~5ubj)}(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.hhKthj~5ubh)}(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.hhKhj~5ubjf)}(hhh](jk)}(h'``dest_buf`` The buffer to write into. h](jq)}(h ``dest_buf``h]j )}(hj5h]hdest_buf}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj5ubah}(h]h ]h"]h$]h&]uh1jph|/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&]uh1jjhj5hKphj5ubjk)}(h;``dest_offset`` where to start writing in the dest_buffer. h](jq)}(h``dest_offset``h]j )}(hj6h]h dest_offset}(hj 6hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj6ubah}(h]h ]h"]h$]h&]uh1jph|/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.}(hj!6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj6hKqhj6ubah}(h]h ]h"]h$]h&]uh1jhj6ubeh}(h]h ]h"]h$]h&]uh1jjhj6hKqhj5ubjk)}(h,``dest_buf_sz`` The size of the dest_buffer h](jq)}(h``dest_buf_sz``h]j )}(hjA6h]h dest_buf_sz}(hjC6hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj?6ubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKrhj;6ubj)}(hhh]h)}(hThe size of the dest_bufferh]hThe size of the dest_buffer}(hjZ6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjV6hKrhjW6ubah}(h]h ]h"]h$]h&]uh1jhj;6ubeh}(h]h ]h"]h$]h&]uh1jjhjV6hKrhj5ubjk)}(h+``pid`` The PID to use for the TS packets. h](jq)}(h``pid``h]j )}(hjz6h]hpid}(hj|6hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjx6ubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKshjt6ubj)}(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&]uh1jhjt6ubeh}(h]h ]h"]h$]h&]uh1jjhj6hKshj5ubjk)}(h;``continuity_counter`` Incremented on every new TS packet. h](jq)}(h``continuity_counter``h]j )}(hj6h]hcontinuity_counter}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj6ubah}(h]h ]h"]h$]h&]uh1jph|/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&]uh1jjhj6hKthj5ubjk)}(hF``wrote_pes_header`` Flag to indicate that the PES header was written h](jq)}(h``wrote_pes_header``h]j )}(hj6h]hwrote_pes_header}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj6ubah}(h]h ]h"]h$]h&]uh1jph|/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&]uh1jjhj7hKuhj5ubjk)}(hj``n_stuffing_bytes`` Padding bytes. Might be used by an encoder if needed, gets discarded by the decoder. h](jq)}(h``n_stuffing_bytes``h]j )}(hj%7h]hn_stuffing_bytes}(hj'7hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj#7ubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKwhj7ubj)}(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>7hhhNhNubah}(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;7ubah}(h]h ]h"]h$]h&]uh1jhj7ubeh}(h]h ]h"]h$]h&]uh1jjhj:7hKwhj5ubjk)}(h(``pcr`` counter driven by a 27Mhz clock.h](jq)}(h``pcr``h]j )}(hj_7h]hpcr}(hja7hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj]7ubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKwhjY7ubj)}(hhh]h)}(h counter driven by a 27Mhz clock.h]h counter driven by a 27Mhz clock.}(hjx7hhhNhNubah}(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.hhKxhju7ubah}(h]h ]h"]h$]h&]uh1jhjY7ubeh}(h]h ]h"]h$]h&]uh1jjhjt7hKwhj5ubeh}(h]h ]h"]h$]h&]uh1jehj~5ubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhjhhhNhNubj)}(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 ]jah"]h$]h&]uh1j hj7hhhj7hK~ubj)}(hpes_write_argsh]j%)}(hj7h]hpes_write_args}(hj7hhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hj7ubah}(h]h ](j7j8eh"]h$]h&]hhuh1jhj7hhhj7hK~ubeh}(h]h ]h"]h$]h&]hhjBuh1jjCjDhj7hhhj7hK~ubah}(h]j7ah ](jHjIeh"]h$]h&]jMjN)jOhuh1jhj7hK~hj7hhubjQ)}(hhh]h)}(hArguments for the packetizer.h]hArguments for the packetizer.}(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.hhKhj7hhubah}(h]h ]h"]h$]h&]uh1jPhj7hhhj7hK~ubeh}(h]h ](jmstructeh"]h$]h&]jrjmjsj8jtj8jujvjwuh1jhhhjhNhNubjy)}(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}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubh:}(hj8hhhNhNubeh}(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.hhKhj8ubj)}(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; };}hj88sbah}(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.hhKhj8ubh)}(h **Members**h]j)}(hjI8h]hMembers}(hjK8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjG8ubah}(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.hhKhj8ubjf)}(hhh](jk)}(h'``dest_buf`` The buffer to write into. h](jq)}(h ``dest_buf``h]j )}(hjh8h]hdest_buf}(hjj8hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjf8ubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKhjb8ubj)}(hhh]h)}(hThe buffer to write into.h]hThe buffer to write into.}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj}8hKhj~8ubah}(h]h ]h"]h$]h&]uh1jhjb8ubeh}(h]h ]h"]h$]h&]uh1jjhj}8hKhj_8ubjk)}(hE``from`` A pointer to the encoder buffer containing one access unit. h](jq)}(h``from``h]j )}(hj8h]hfrom}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj8ubah}(h]h ]h"]h$]h&]uh1jph|/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&]uh1jjhj8hKhj_8ubjk)}(hS``access_unit_len`` The size of _one_ access unit (with any headers it might need) h](jq)}(h``access_unit_len``h]j )}(hj8h]haccess_unit_len}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj8ubah}(h]h ]h"]h$]h&]uh1jph|/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)}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj8hKhj8ubah}(h]h ]h"]h$]h&]uh1jhj8ubeh}(h]h ]h"]h$]h&]uh1jjhj8hKhj_8ubjk)}(h;``dest_offset`` where to start writing in the dest_buffer. h](jq)}(h``dest_offset``h]j )}(hj9h]h dest_offset}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj9ubah}(h]h ]h"]h$]h&]uh1jph|/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&]uh1jjhj(9hKhj_8ubjk)}(h,``dest_buf_sz`` The size of the dest_buffer h](jq)}(h``dest_buf_sz``h]j )}(hjL9h]h dest_buf_sz}(hjN9hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjJ9ubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKhjF9ubj)}(hhh]h)}(hThe size of the dest_bufferh]hThe size of the dest_buffer}(hje9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhja9hKhjb9ubah}(h]h ]h"]h$]h&]uh1jhjF9ubeh}(h]h ]h"]h$]h&]uh1jjhja9hKhj_8ubjk)}(h+``pid`` The PID to use for the TS packets. h](jq)}(h``pid``h]j )}(hj9h]hpid}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj9ubah}(h]h ]h"]h$]h&]uh1jph|/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&]uh1jjhj9hKhj_8ubjk)}(h0``encoder_id`` Encoder id (see vidtv_encoder.h) h](jq)}(h``encoder_id``h]j )}(hj9h]h encoder_id}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj9ubah}(h]h ]h"]h$]h&]uh1jph|/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&]uh1jjhj9hKhj_8ubjk)}(h;``continuity_counter`` Incremented on every new TS packet. h](jq)}(h``continuity_counter``h]j )}(hj9h]hcontinuity_counter}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj9ubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKhj9ubj)}(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&]uh1jhj9ubeh}(h]h ]h"]h$]h&]uh1jjhj :hKhj_8ubjk)}(h^``stream_id`` The stream id to use. Ex: Audio streams (0xc0-0xdf), Video streams (0xe0-0xef). h](jq)}(h ``stream_id``h]j )}(hj0:h]h stream_id}(hj2:hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj.:ubah}(h]h ]h"]h$]h&]uh1jph|/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).}(hjI: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.hhKhjF:ubah}(h]h ]h"]h$]h&]uh1jhj*:ubeh}(h]h ]h"]h$]h&]uh1jjhjE:hKhj_8ubjk)}(h!``send_pts`` Should we send PTS? h](jq)}(h ``send_pts``h]j )}(hjj:h]hsend_pts}(hjl:hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjh:ubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKhjd: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&]uh1jhjd:ubeh}(h]h ]h"]h$]h&]uh1jjhj:hKhj_8ubjk)}(h``pts`` PTS value to send. h](jq)}(h``pts``h]j )}(hj:h]hpts}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj:ubah}(h]h ]h"]h$]h&]uh1jph|/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&]uh1jjhj:hKhj_8ubjk)}(h!``send_dts`` Should we send DTS? h](jq)}(h ``send_dts``h]j )}(hj:h]hsend_dts}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj:ubah}(h]h ]h"]h$]h&]uh1jph|/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&]uh1jjhj:hKhj_8ubjk)}(h``dts`` DTS value to send. h](jq)}(h``dts``h]j )}(hj;h]hdts}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj;ubah}(h]h ]h"]h$]h&]uh1jph|/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.}(hj.;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*;hKhj+;ubah}(h]h ]h"]h$]h&]uh1jhj;ubeh}(h]h ]h"]h$]h&]uh1jjhj*;hKhj_8ubjk)}(hi``n_pes_h_s_bytes`` Padding bytes. Might be used by an encoder if needed, gets discarded by the decoder. h](jq)}(h``n_pes_h_s_bytes``h]j )}(hjN;h]hn_pes_h_s_bytes}(hjP;hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjL;ubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:501: ./drivers/media/test-drivers/vidtv/vidtv_pes.hhKhjH;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.}(hjg;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.hhKhjd;ubah}(h]h ]h"]h$]h&]uh1jhjH;ubeh}(h]h ]h"]h$]h&]uh1jjhjc;hKhj_8ubjk)}(h(``pcr`` counter driven by a 27Mhz clock.h](jq)}(h``pcr``h]j )}(hj;h]hpcr}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj;ubah}(h]h ]h"]h$]h&]uh1jph|/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&]uh1jjhj;hKhj_8ubeh}(h]h ]h"]h$]h&]uh1jehj8ubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhjhhhNhNubj)}(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]j%)}(hu32h]hu32}(hj;hhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hj;ubah}(h]h ]h"]h$]h&] refdomainjmreftypej{ reftargetj;modnameN classnameNjj)}j]j)}j{vidtv_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 ]jah"]h$]h&]uh1j hj;hhhj<hKubj)}(hvidtv_pes_write_intoh]j%)}(hj<h]hvidtv_pes_write_into}(hj<hhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hj<ubah}(h]h ](j7j8eh"]h$]h&]hhuh1jhj;hhhj<hKubj<)}(h(struct pes_write_args *args)h]jB)}(hstruct pes_write_args *argsh](j)}(hjh]hstruct}(hj4<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0<ubj)}(h h]h }(hjA<hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj0<ubh)}(hhh]j%)}(hpes_write_argsh]hpes_write_args}(hjR<hhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjO<ubah}(h]h ]h"]h$]h&] refdomainjmreftypej{ reftargetjT<modnameN classnameNjj)}j]j<c.vidtv_pes_write_intoasbuh1hhj0<ubj)}(h h]h }(hjp<hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj0<ubj)}(hjh]h*}(hj~<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0<ubj%)}(hargsh]hargs}(hj<hhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hj0<ubeh}(h]h ]h"]h$]h&]noemphhhuh1jAhj,<ubah}(h]h ]h"]h$]h&]hhuh1j;hj;hhhj<hKubeh}(h]h ]h"]h$]h&]hhjBuh1jjCjDhj;hhhj<hKubah}(h]j;ah ](jHjIeh"]h$]h&]jMjN)jOhuh1jhj<hKhj;hhubjQ)}(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&]uh1jPhj;hhhj<hKubeh}(h]h ](jmfunctioneh"]h$]h&]jrjmjsj<jtj<jujvjwuh1jhhhjhNhNubjy)}(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<ubjf)}(hhh]jk)}(h=``struct pes_write_args *args`` The args to use when writing h](jq)}(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&]uh1jph|/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&]uh1jjhj =hKhj<ubah}(h]h ]h"]h$]h&]uh1jehj<ubh)}(h**Description**h]j)}(hj1=h]h Description}(hj3=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<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.}(hjG=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’}(hjV=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)}(hjg=h]hReturn}(hji=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhje=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&]uh1jxhjhhhNhNubj)}(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 ]jah"]h$]h&]uh1j hj=hhhj=hKubj)}(hpsi_write_argsh]j%)}(hj=h]hpsi_write_args}(hj=hhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hj=ubah}(h]h ](j7j8eh"]h$]h&]hhuh1jhj=hhhj=hKubeh}(h]h ]h"]h$]h&]hhjBuh1jjCjDhj=hhhj=hKubah}(h]j=ah ](jHjIeh"]h$]h&]jMjN)jOhuh1jhj=hKhj=hhubjQ)}(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&]uh1jPhj=hhhj=hKubeh}(h]h ](jmstructeh"]h$]h&]jrjmjsj>jtj>jujvjwuh1jhhhjhNhNubjy)}(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)}(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.hhMhj >ubjf)}(hhh](jk)}(h'``dest_buf`` The buffer to write into. h](jq)}(h ``dest_buf``h]j )}(hj[>h]hdest_buf}(hj]>hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjY>ubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhKhjU>ubj)}(hhh]h)}(hThe buffer to write into.h]hThe buffer to write into.}(hjt>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjp>hKhjq>ubah}(h]h ]h"]h$]h&]uh1jhjU>ubeh}(h]h ]h"]h$]h&]uh1jjhjp>hKhjR>ubjk)}(h ``from`` PSI data to be copied. h](jq)}(h``from``h]j )}(hj>h]hfrom}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj>ubah}(h]h ]h"]h$]h&]uh1jph|/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&]uh1jjhj>hKhjR>ubjk)}(h``len`` How much to write. h](jq)}(h``len``h]j )}(hj>h]hlen}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj>ubah}(h]h ]h"]h$]h&]uh1jph|/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&]uh1jjhj>hKhjR>ubjk)}(h;``dest_offset`` where to start writing in the dest_buffer. h](jq)}(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&]uh1jph|/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.}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj?hMhj?ubah}(h]h ]h"]h$]h&]uh1jhj?ubeh}(h]h ]h"]h$]h&]uh1jjhj?hMhjR>ubjk)}(h``pid`` TS packet ID. h](jq)}(h``pid``h]j )}(hj??h]hpid}(hjA?hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj=?ubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj9?ubj)}(hhh]h)}(h TS packet ID.h]h TS packet ID.}(hjX?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjT?hMhjU?ubah}(h]h ]h"]h$]h&]uh1jhj9?ubeh}(h]h ]h"]h$]h&]uh1jjhjT?hMhjR>ubjk)}(h7``new_psi_section`` Set when starting a table section. h](jq)}(h``new_psi_section``h]j )}(hjx?h]hnew_psi_section}(hjz?hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjv?ubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjr?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&]uh1jhjr?ubeh}(h]h ]h"]h$]h&]uh1jjhj?hMhjR>ubjk)}(h8``continuity_counter`` Incremented on every new packet. h](jq)}(h``continuity_counter``h]j )}(hj?h]hcontinuity_counter}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj?ubah}(h]h ]h"]h$]h&]uh1jph|/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&]uh1jjhj?hMhjR>ubjk)}(h0``is_crc`` Set when writing the CRC at the end. h](jq)}(h ``is_crc``h]j )}(hj?h]his_crc}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj?ubah}(h]h ]h"]h$]h&]uh1jph|/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&]uh1jjhj?hMhjR>ubjk)}(h,``dest_buf_sz`` The size of the dest_buffer h](jq)}(h``dest_buf_sz``h]j )}(hj#@h]h dest_buf_sz}(hj%@hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj!@ubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj@ubj)}(hhh]h)}(hThe size of the dest_bufferh]hThe size of the dest_buffer}(hj<@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj8@hMhj9@ubah}(h]h ]h"]h$]h&]uh1jhj@ubeh}(h]h ]h"]h$]h&]uh1jjhj8@hMhjR>ubjk)}(h1``crc`` a pointer to store the crc for this chunkh](jq)}(h``crc``h]j )}(hj\@h]hcrc}(hj^@hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjZ@ubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjV@ubj)}(hhh]h)}(h)a pointer to store the crc for this chunkh]h)a pointer to store the crc for this chunk}(hju@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.hhMhjr@ubah}(h]h ]h"]h$]h&]uh1jhjV@ubeh}(h]h ]h"]h$]h&]uh1jjhjq@hMhjR>ubeh}(h]h ]h"]h$]h&]uh1jehj >ubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhjhhhNhNubj)}(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 ]jah"]h$]h&]uh1j hj@hhhj@hM ubj)}(hdesc_write_argsh]j%)}(hj@h]hdesc_write_args}(hj@hhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hj@ubah}(h]h ](j7j8eh"]h$]h&]hhuh1jhj@hhhj@hM ubeh}(h]h ]h"]h$]h&]hhjBuh1jjCjDhj@hhhj@hM ubah}(h]j@ah ](jHjIeh"]h$]h&]jMjN)jOhuh1jhj@hM hj@hhubjQ)}(hhh]h)}(h)Arguments in order to write a descriptor.h]h)Arguments in order to write a descriptor.}(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&]uh1jPhj@hhhj@hM ubeh}(h]h ](jmstructeh"]h$]h&]jrjmjsjAjtjAjujvjwuh1jhhhjhNhNubjy)}(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}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjAubh:}(hjAhhhNhNubeh}(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.hhMhjAubj)}(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; };}hj5Asbah}(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.hhMhjAubh)}(h **Members**h]j)}(hjFAh]hMembers}(hjHAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDAubah}(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%hjAubjf)}(hhh](jk)}(h'``dest_buf`` The buffer to write into. h](jq)}(h ``dest_buf``h]j )}(hjeAh]hdest_buf}(hjgAhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjcAubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj_Aubj)}(hhh]h)}(hThe buffer to write into.h]hThe buffer to write into.}(hj~AhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjzAhMhj{Aubah}(h]h ]h"]h$]h&]uh1jhj_Aubeh}(h]h ]h"]h$]h&]uh1jjhjzAhMhj\Aubjk)}(h;``dest_offset`` where to start writing in the dest_buffer. h](jq)}(h``dest_offset``h]j )}(hjAh]h dest_offset}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjAubah}(h]h ]h"]h$]h&]uh1jph|/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&]uh1jjhjAhMhj\Aubjk)}(h%``desc`` A pointer to the descriptor h](jq)}(h``desc``h]j )}(hjAh]hdesc}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjAubah}(h]h ]h"]h$]h&]uh1jph|/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}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjAhMhjAubah}(h]h ]h"]h$]h&]uh1jhjAubeh}(h]h ]h"]h$]h&]uh1jjhjAhMhj\Aubjk)}(h``pid`` TS packet ID. h](jq)}(h``pid``h]j )}(hjBh]hpid}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjBubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj Bubj)}(hhh]h)}(h TS packet ID.h]h TS packet ID.}(hj)BhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj%BhMhj&Bubah}(h]h ]h"]h$]h&]uh1jhj Bubeh}(h]h ]h"]h$]h&]uh1jjhj%BhMhj\Aubjk)}(h8``continuity_counter`` Incremented on every new packet. h](jq)}(h``continuity_counter``h]j )}(hjIBh]hcontinuity_counter}(hjKBhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjGBubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjCBubj)}(hhh]h)}(h Incremented on every new packet.h]h Incremented on every new packet.}(hjbBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj^BhMhj_Bubah}(h]h ]h"]h$]h&]uh1jhjCBubeh}(h]h ]h"]h$]h&]uh1jjhj^BhMhj\Aubjk)}(h,``dest_buf_sz`` The size of the dest_buffer h](jq)}(h``dest_buf_sz``h]j )}(hjBh]h dest_buf_sz}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjBubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj|Bubj)}(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&]uh1jhj|Bubeh}(h]h ]h"]h$]h&]uh1jjhjBhMhj\Aubjk)}(h1``crc`` a pointer to store the crc for this chunkh](jq)}(h``crc``h]j )}(hjBh]hcrc}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjBubah}(h]h ]h"]h$]h&]uh1jph|/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&]uh1jjhjBhMhj\Aubeh}(h]h ]h"]h$]h&]uh1jehjAubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhjhhhNhNubj)}(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}(hjChhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjChhh|/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#ChhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjChhhj"ChM#ubj)}(hcrc32_write_argsh]j%)}(hjCh]hcrc32_write_args}(hj5ChhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hj1Cubah}(h]h ](j7j8eh"]h$]h&]hhuh1jhjChhhj"ChM#ubeh}(h]h ]h"]h$]h&]hhjBuh1jjCjDhj Chhhj"ChM#ubah}(h]jCah ](jHjIeh"]h$]h&]jMjN)jOhuh1jhj"ChM#hj ChhubjQ)}(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.}(hjWChhhNhNubah}(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)hjTChhubah}(h]h ]h"]h$]h&]uh1jPhj Chhhj"ChM#ubeh}(h]h ](jmstructeh"]h$]h&]jrjmjsjoCjtjoCjujvjwuh1jhhhjhNhNubjy)}(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}(hj{ChhhNhNubah}(h]h ]h"]h$]h&]uh1jhjwCubh:}(hjwChhhNhNubeh}(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-hjsCubj)}(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/hjsCubh)}(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.hhM8hjsCubjf)}(hhh](jk)}(h'``dest_buf`` The buffer to write into. h](jq)}(h ``dest_buf``h]j )}(hjCh]hdest_buf}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1j hjCubah}(h]h ]h"]h$]h&]uh1jph|/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&]uh1jjhjChM,hjCubjk)}(h;``dest_offset`` where to start writing in the dest_buffer. h](jq)}(h``dest_offset``h]j )}(hjCh]h dest_offset}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1j hjCubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhM-hjCubj)}(hhh]h)}(h*where to start writing in the dest_buffer.h]h*where to start writing in the dest_buffer.}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjDhM-hjDubah}(h]h ]h"]h$]h&]uh1jhjCubeh}(h]h ]h"]h$]h&]uh1jjhjDhM-hjCubjk)}(h``crc`` the CRC value to write h](jq)}(h``crc``h]j )}(hj6Dh]hcrc}(hj8DhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj4Dubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhM.hj0Dubj)}(hhh]h)}(hthe CRC value to writeh]hthe CRC value to write}(hjODhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjKDhM.hjLDubah}(h]h ]h"]h$]h&]uh1jhj0Dubeh}(h]h ]h"]h$]h&]uh1jjhjKDhM.hjCubjk)}(h``pid`` TS packet ID. h](jq)}(h``pid``h]j )}(hjoDh]hpid}(hjqDhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjmDubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhM/hjiDubj)}(hhh]h)}(h TS packet ID.h]h TS packet ID.}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjDhM/hjDubah}(h]h ]h"]h$]h&]uh1jhjiDubeh}(h]h ]h"]h$]h&]uh1jjhjDhM/hjCubjk)}(h8``continuity_counter`` Incremented on every new packet. h](jq)}(h``continuity_counter``h]j )}(hjDh]hcontinuity_counter}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjDubah}(h]h ]h"]h$]h&]uh1jph|/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&]uh1jjhjDhM0hjCubjk)}(h+``dest_buf_sz`` The size of the dest_bufferh](jq)}(h``dest_buf_sz``h]j )}(hjDh]h dest_buf_sz}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjDubah}(h]h ]h"]h$]h&]uh1jph|/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}(hjDhhhNhNubah}(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.hhM1hjDubah}(h]h ]h"]h$]h&]uh1jhjDubeh}(h]h ]h"]h$]h&]uh1jjhjDhM0hjCubeh}(h]h ]h"]h$]h&]uh1jehjsCubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhjhhhNhNubj)}(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}(hj;EhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7Ehhh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhM7ubj)}(h h]h }(hjIEhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj7EhhhjHEhM7ubj)}(hheader_write_argsh]j%)}(hj5Eh]hheader_write_args}(hj[EhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjWEubah}(h]h ](j7j8eh"]h$]h&]hhuh1jhj7EhhhjHEhM7ubeh}(h]h ]h"]h$]h&]hhjBuh1jjCjDhj3EhhhjHEhM7ubah}(h]j.Eah ](jHjIeh"]h$]h&]jMjN)jOhuh1jhjHEhM7hj0EhhubjQ)}(hhh]h)}(h3Arguments in order to write the common table headerh]h3Arguments in order to write the common table header}(hj}EhhhNhNubah}(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<hjzEhhubah}(h]h ]h"]h$]h&]uh1jPhj0EhhhjHEhM7ubeh}(h]h ](jmstructeh"]h$]h&]jrjmjsjEjtjEjujvjwuh1jhhhjhNhNubjy)}(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.hhMLhjEubjf)}(hhh](jk)}(h'``dest_buf`` The buffer to write into. h](jq)}(h ``dest_buf``h]j )}(hjEh]hdest_buf}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjEubah}(h]h ]h"]h$]h&]uh1jph|/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&]uh1hhjEhM?hjFubah}(h]h ]h"]h$]h&]uh1jhjEubeh}(h]h ]h"]h$]h&]uh1jjhjEhM?hjEubjk)}(h;``dest_offset`` where to start writing in the dest_buffer. h](jq)}(h``dest_offset``h]j )}(hj#Fh]h dest_offset}(hj%FhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj!Fubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhM@hjFubj)}(hhh]h)}(h*where to start writing in the dest_buffer.h]h*where to start writing in the dest_buffer.}(hjGubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMDhj:Gubj)}(hhh]h)}(h)a pointer to store the crc for this chunkh]h)a pointer to store the crc for this chunk}(hjYGhhhNhNubah}(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.hhMEhjVGubah}(h]h ]h"]h$]h&]uh1jhj:Gubeh}(h]h ]h"]h$]h&]uh1jjhjUGhMDhjEubeh}(h]h ]h"]h$]h&]uh1jehjEubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhjhhhNhNubj)}(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 ]jah"]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 ]jah"]h$]h&]uh1j hjGhhhjGhMubj)}(hvidtv_psi_sdt_service_assignh]j%)}(hvidtv_psi_sdt_service_assignh]hvidtv_psi_sdt_service_assign}(hjGhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjGubah}(h]h ](j7j8eh"]h$]h&]hhuh1jhjGhhhjGhMubj<)}(hN(struct vidtv_psi_table_sdt *sdt, struct vidtv_psi_table_sdt_service *service)h](jB)}(hstruct vidtv_psi_table_sdt *sdth](j)}(hjh]hstruct}(hjGhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGubj)}(h h]h }(hjGhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjGubh)}(hhh]j%)}(hvidtv_psi_table_sdth]hvidtv_psi_table_sdt}(hjGhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjGubah}(h]h ]h"]h$]h&] refdomainjmreftypej{ reftargetjGmodnameN classnameNjj)}j]j)}j{jGsbc.vidtv_psi_sdt_service_assignasbuh1hhjGubj)}(h h]h }(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjGubj)}(hjh]h*}(hj#HhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGubj%)}(hsdth]hsdt}(hj0HhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjGubeh}(h]h ]h"]h$]h&]noemphhhuh1jAhjGubjB)}(h+struct vidtv_psi_table_sdt_service *serviceh](j)}(hjh]hstruct}(hjIHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEHubj)}(h h]h }(hjVHhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjEHubh)}(hhh]j%)}(hvidtv_psi_table_sdt_serviceh]hvidtv_psi_table_sdt_service}(hjgHhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjdHubah}(h]h ]h"]h$]h&] refdomainjmreftypej{ reftargetjiHmodnameN classnameNjj)}j]jHc.vidtv_psi_sdt_service_assignasbuh1hhjEHubj)}(h h]h }(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjEHubj)}(hjh]h*}(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEHubj%)}(hserviceh]hservice}(hjHhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjEHubeh}(h]h ]h"]h$]h&]noemphhhuh1jAhjGubeh}(h]h ]h"]h$]h&]hhuh1j;hjGhhhjGhMubeh}(h]h ]h"]h$]h&]hhjBuh1jjCjDhjGhhhjGhMubah}(h]jGah ](jHjIeh"]h$]h&]jMjN)jOhuh1jhjGhMhjGhhubjQ)}(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&]uh1jPhjGhhhjGhMubeh}(h]h ](jmfunctioneh"]h$]h&]jrjmjsjHjtjHjujvjwuh1jhhhjhNhNubjy)}(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)}(hjHh]h Parameters}(hjHhhhNhNubah}(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.hhMhjHubjf)}(hhh](jk)}(h:``struct vidtv_psi_table_sdt *sdt`` The SDT to assign to. h](jq)}(h#``struct vidtv_psi_table_sdt *sdt``h]j )}(hj Ih]hstruct vidtv_psi_table_sdt *sdt}(hj IhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj Iubah}(h]h ]h"]h$]h&]uh1jph|/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.}(hj$IhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj IhMhj!Iubah}(h]h ]h"]h$]h&]uh1jhjIubeh}(h]h ]h"]h$]h&]uh1jjhj IhMhjIubjk)}(hX``struct vidtv_psi_table_sdt_service *service`` The service loop (one or more services) h](jq)}(h/``struct vidtv_psi_table_sdt_service *service``h]j )}(hjDIh]h+struct vidtv_psi_table_sdt_service *service}(hjFIhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjBIubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj>Iubj)}(hhh]h)}(h'The service loop (one or more services)h]h'The service loop (one or more services)}(hj]IhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjYIhMhjZIubah}(h]h ]h"]h$]h&]uh1jhj>Iubeh}(h]h ]h"]h$]h&]uh1jjhjYIhMhjIubeh}(h]h ]h"]h$]h&]uh1jehjHubh)}(h**Description**h]j)}(hjIh]h Description}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj}Iubah}(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&]uh1jxhjhhhNhNubj)}(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 ]jah"]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 ]jah"]h$]h&]uh1j hjIhhhjIhMubj)}(hvidtv_psi_desc_assignh]j%)}(hvidtv_psi_desc_assignh]hvidtv_psi_desc_assign}(hjIhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjIubah}(h]h ](j7j8eh"]h$]h&]hhuh1jhjIhhhjIhMubj<)}(h9(struct vidtv_psi_desc **to, struct vidtv_psi_desc *desc)h](jB)}(hstruct vidtv_psi_desc **toh](j)}(hjh]hstruct}(hjJhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjIubj)}(h h]h }(hjJhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjIubh)}(hhh]j%)}(hvidtv_psi_desch]hvidtv_psi_desc}(hjJhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjJubah}(h]h ]h"]h$]h&] refdomainjmreftypej{ reftargetj!JmodnameN classnameNjj)}j]j)}j{jIsbc.vidtv_psi_desc_assignasbuh1hhjIubj)}(h h]h }(hj?JhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjIubj)}(hjh]h*}(hjMJhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjIubj)}(hjh]h*}(hjZJhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjIubj%)}(htoh]hto}(hjgJhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjIubeh}(h]h ]h"]h$]h&]noemphhhuh1jAhjIubjB)}(hstruct vidtv_psi_desc *desch](j)}(hjh]hstruct}(hjJhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|Jubj)}(h h]h }(hjJhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj|Jubh)}(hhh]j%)}(hvidtv_psi_desch]hvidtv_psi_desc}(hjJhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjJubah}(h]h ]h"]h$]h&] refdomainjmreftypej{ reftargetjJmodnameN classnameNjj)}j]j;Jc.vidtv_psi_desc_assignasbuh1hhj|Jubj)}(h h]h }(hjJhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj|Jubj)}(hjh]h*}(hjJhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|Jubj%)}(hdesch]hdesc}(hjJhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hj|Jubeh}(h]h ]h"]h$]h&]noemphhhuh1jAhjIubeh}(h]h ]h"]h$]h&]hhuh1j;hjIhhhjIhMubeh}(h]h ]h"]h$]h&]hhjBuh1jjCjDhjIhhhjIhMubah}(h]jIah ](jHjIeh"]h$]h&]jMjN)jOhuh1jhjIhMhjIhhubjQ)}(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.hhMhjJhhubah}(h]h ]h"]h$]h&]uh1jPhjIhhhjIhMubeh}(h]h ](jmfunctioneh"]h$]h&]jrjmjsjKjtjKjujvjwuh1jhhhjhNhNubjy)}(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)}(hj#Kh]h Parameters}(hj%KhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!Kubah}(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.hhMhjKubjf)}(hhh](jk)}(hG``struct vidtv_psi_desc **to`` Where to assign this descriptor loop to h](jq)}(h``struct vidtv_psi_desc **to``h]j )}(hjBKh]hstruct vidtv_psi_desc **to}(hjDKhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj@Kubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj MAX_SECTION_LEN, the operation fails.h](h)}(h**Parameters**h]j)}(hjP[h]h Parameters}(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.hhMhjJ[ubjf)}(hhh]jk)}(hK``struct vidtv_psi_table_pat *pat`` The PAT whose length is to be updated. h](jq)}(h#``struct vidtv_psi_table_pat *pat``h]j )}(hjo[h]hstruct vidtv_psi_table_pat *pat}(hjq[hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjm[ubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhji[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&]uh1jhji[ubeh}(h]h ]h"]h$]h&]uh1jjhj[hMhjf[ubah}(h]h ]h"]h$]h&]uh1jehjJ[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.hhMhjJ[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.hhMhjJ[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.hhMhjJ[ubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhjhhhNhNubj)}(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 ]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 ]jah"]h$]h&]uh1j hj[hhhj \hMubj)}(h"vidtv_psi_pmt_table_update_sec_lenh]j%)}(h"vidtv_psi_pmt_table_update_sec_lenh]h"vidtv_psi_pmt_table_update_sec_len}(hj\hhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hj\ubah}(h]h ](j7j8eh"]h$]h&]hhuh1jhj[hhhj \hMubj<)}(h!(struct vidtv_psi_table_pmt *pmt)h]jB)}(hstruct vidtv_psi_table_pmt *pmth](j)}(hjh]hstruct}(hj;\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7\ubj)}(h h]h }(hjH\hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj7\ubh)}(hhh]j%)}(hvidtv_psi_table_pmth]hvidtv_psi_table_pmt}(hjY\hhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjV\ubah}(h]h ]h"]h$]h&] refdomainjmreftypej{ reftargetj[\modnameN classnameNjj)}j]j)}j{j!\sb$c.vidtv_psi_pmt_table_update_sec_lenasbuh1hhj7\ubj)}(h h]h }(hjy\hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj7\ubj)}(hjh]h*}(hj\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7\ubj%)}(hpmth]hpmt}(hj\hhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hj7\ubeh}(h]h ]h"]h$]h&]noemphhhuh1jAhj3\ubah}(h]h ]h"]h$]h&]hhuh1j;hj[hhhj \hMubeh}(h]h ]h"]h$]h&]hhjBuh1jjCjDhj[hhhj \hMubah}(h]j[ah ](jHjIeh"]h$]h&]jMjN)jOhuh1jhj \hMhj[hhubjQ)}(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&]uh1jPhj[hhhj \hMubeh}(h]h ](jmfunctioneh"]h$]h&]jrjmjsj\jtj\jujvjwuh1jhhhjhNhNubjy)}(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\ubjf)}(hhh]jk)}(hK``struct vidtv_psi_table_pmt *pmt`` The PMT whose length is to be updated. h](jq)}(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&]uh1jph|/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&]uh1jjhj]hMhj\ubah}(h]h ]h"]h$]h&]uh1jehj\ubh)}(h**Description**h]j)}(hj:]h]h Description}(hj<]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8]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.}(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.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&]uh1jxhjhhhNhNubj)}(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 ]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 ]jah"]h$]h&]uh1j hj]hhhj]hMubj)}(h"vidtv_psi_sdt_table_update_sec_lenh]j%)}(h"vidtv_psi_sdt_table_update_sec_lenh]h"vidtv_psi_sdt_table_update_sec_len}(hj]hhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hj]ubah}(h]h ](j7j8eh"]h$]h&]hhuh1jhj]hhhj]hMubj<)}(h!(struct vidtv_psi_table_sdt *sdt)h]jB)}(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 ]jah"]h$]h&]uh1j hj]ubh)}(hhh]j%)}(hvidtv_psi_table_sdth]hvidtv_psi_table_sdt}(hj]hhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hj]ubah}(h]h ]h"]h$]h&] refdomainjmreftypej{ reftargetj]modnameN classnameNjj)}j]j)}j{j]sb$c.vidtv_psi_sdt_table_update_sec_lenasbuh1hhj]ubj)}(h h]h }(hj ^hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj]ubj)}(hjh]h*}(hj^hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]ubj%)}(hsdth]hsdt}(hj$^hhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hj]ubeh}(h]h ]h"]h$]h&]noemphhhuh1jAhj]ubah}(h]h ]h"]h$]h&]hhuh1j;hj]hhhj]hMubeh}(h]h ]h"]h$]h&]hhjBuh1jjCjDhj]hhhj]hMubah}(h]j]ah ](jHjIeh"]h$]h&]jMjN)jOhuh1jhj]hMhj]hhubjQ)}(hhh]h)}(h,Recompute and update the SDT section length.h]h,Recompute and update the SDT section length.}(hjN^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.hhMhjK^hhubah}(h]h ]h"]h$]h&]uh1jPhj]hhhj]hMubeh}(h]h ](jmfunctioneh"]h$]h&]jrjmjsjf^jtjf^jujvjwuh1jhhhjhNhNubjy)}(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)}(hjp^h]h Parameters}(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.hhM hjj^ubjf)}(hhh]jk)}(hK``struct vidtv_psi_table_sdt *sdt`` The SDT whose length is to be updated. h](jq)}(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&]uh1jph|/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&]uh1jjhj^hMhj^ubah}(h]h ]h"]h$]h&]uh1jehjj^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 hjj^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 hjj^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 hjj^ubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhjhhhNhNubj)}(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}(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.hhMubj)}(h h]h }(hj,_hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj_hhhj+_hMubj)}(hvidtv_psi_pat_write_argsh]j%)}(hj_h]hvidtv_psi_pat_write_args}(hj>_hhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hj:_ubah}(h]h ](j7j8eh"]h$]h&]hhuh1jhj_hhhj+_hMubeh}(h]h ]h"]h$]h&]hhjBuh1jjCjDhj_hhhj+_hMubah}(h]j_ah ](jHjIeh"]h$]h&]jMjN)jOhuh1jhj+_hMhj_hhubjQ)}(hhh]h)}(h!Arguments for writing a PAT tableh]h!Arguments for writing a PAT table}(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&]uh1jPhj_hhhj+_hMubeh}(h]h ](jmstructeh"]h$]h&]jrjmjsjx_jtjx_jujvjwuh1jhhhjhNhNubjy)}(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|_ubjf)}(hhh](jk)}(h ``buf`` The destination buffer. h](jq)}(h``buf``h]j )}(hj_h]hbuf}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj_ubah}(h]h ]h"]h$]h&]uh1jph|/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&]uh1jjhj_hMhj_ubjk)}(h3``offset`` The offset into the destination buffer. h](jq)}(h ``offset``h]j )}(hj`h]hoffset}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj`ubah}(h]h ]h"]h$]h&]uh1jph|/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.}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj`hMhj`ubah}(h]h ]h"]h$]h&]uh1jhj`ubeh}(h]h ]h"]h$]h&]uh1jjhj`hMhj_ubjk)}(h``pat`` A pointer to the PAT. h](jq)}(h``pat``h]j )}(hj?`h]hpat}(hjA`hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj=`ubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj9`ubj)}(hhh]h)}(hA pointer to the PAT.h]hA pointer to the PAT.}(hjX`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjT`hMhjU`ubah}(h]h ]h"]h$]h&]uh1jhj9`ubeh}(h]h ]h"]h$]h&]uh1jjhjT`hMhj_ubjk)}(h/``buf_sz`` The size of the destination buffer. h](jq)}(h ``buf_sz``h]j )}(hjx`h]hbuf_sz}(hjz`hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjv`ubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjr`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&]uh1jhjr`ubeh}(h]h ]h"]h$]h&]uh1jjhj`hMhj_ubjk)}(hL``continuity_counter`` A pointer to the CC. Incremented on every new packet.h](jq)}(h``continuity_counter``h]j )}(hj`h]hcontinuity_counter}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj`ubah}(h]h ]h"]h$]h&]uh1jph|/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&]uh1jjhj`hMhj_ubeh}(h]h ]h"]h$]h&]uh1jehj|_ubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhjhhhNhNubj)}(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]j%)}(hu32h]hu32}(hjahhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hj aubah}(h]h ]h"]h$]h&] refdomainjmreftypej{ reftargetjamodnameN classnameNjj)}j]j)}j{vidtv_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 }(hj0ahhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjahhhj/ahM.ubj)}(hvidtv_psi_pat_write_intoh]j%)}(hj,ah]hvidtv_psi_pat_write_into}(hjBahhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hj>aubah}(h]h ](j7j8eh"]h$]h&]hhuh1jhjahhhj/ahM.ubj<)}(h'(struct vidtv_psi_pat_write_args *args)h]jB)}(h%struct vidtv_psi_pat_write_args *argsh](j)}(hjh]hstruct}(hj]ahhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYaubj)}(h h]h }(hjjahhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjYaubh)}(hhh]j%)}(hvidtv_psi_pat_write_argsh]hvidtv_psi_pat_write_args}(hj{ahhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjxaubah}(h]h ]h"]h$]h&] refdomainjmreftypej{ reftargetj}amodnameN classnameNjj)}j]j*ac.vidtv_psi_pat_write_intoasbuh1hhjYaubj)}(h h]h }(hjahhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjYaubj)}(hjh]h*}(hjahhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYaubj%)}(hargsh]hargs}(hjahhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjYaubeh}(h]h ]h"]h$]h&]noemphhhuh1jAhjUaubah}(h]h ]h"]h$]h&]hhuh1j;hjahhhj/ahM.ubeh}(h]h ]h"]h$]h&]hhjBuh1jjCjDhjahhhj/ahM.ubah}(h]j`ah ](jHjIeh"]h$]h&]jMjN)jOhuh1jhj/ahM.hjahhubjQ)}(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&]uh1jPhjahhhj/ahM.ubeh}(h]h ](jmfunctioneh"]h$]h&]jrjmjsjajtjajujvjwuh1jhhhjhNhNubjy)}(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&]uh1jhjaubah}(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'hjaubjf)}(hhh]jk)}(hY``struct vidtv_psi_pat_write_args *args`` An instance of struct vidtv_psi_pat_write_args h](jq)}(h)``struct vidtv_psi_pat_write_args *args``h]j )}(hjbh]h%struct vidtv_psi_pat_write_args *args}(hj!bhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjbubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhM$hjbubj)}(hhh]h)}(h.An instance of struct vidtv_psi_pat_write_argsh]h.An instance of struct vidtv_psi_pat_write_args}(hj8bhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj4bhM$hj5bubah}(h]h ]h"]h$]h&]uh1jhjbubeh}(h]h ]h"]h$]h&]uh1jjhj4bhM$hjbubah}(h]h ]h"]h$]h&]uh1jehjaubh)}(h**Description**h]j)}(hjZbh]h Description}(hj\bhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXbubah}(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&hjaubh)}(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.}(hjpbhhhNhNubah}(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&hjaubh)}(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*hjaubh)}(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*hjaubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhjhhhNhNubj)}(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 ]jah"]h$]h&]uh1j hjbhhhjbhM1ubj)}(hvidtv_psi_sdt_write_argsh]j%)}(hjbh]hvidtv_psi_sdt_write_args}(hjbhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjbubah}(h]h ](j7j8eh"]h$]h&]hhuh1jhjbhhhjbhM1ubeh}(h]h ]h"]h$]h&]hhjBuh1jjCjDhjbhhhjbhM1ubah}(h]jbah ](jHjIeh"]h$]h&]jMjN)jOhuh1jhjbhM1hjbhhubjQ)}(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&]uh1jPhjbhhhjbhM1ubeh}(h]h ](jmstructeh"]h$]h&]jrjmjsj cjtj cjujvjwuh1jhhhjhNhNubjy)}(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&]uh1jhj(cubh:}(hj(chhhNhNubeh}(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.hhM5hj$cubj)}(hstruct vidtv_psi_sdt_write_args { char *buf; u32 offset; struct vidtv_psi_table_sdt *sdt; u32 buf_sz; u8 *continuity_counter; };h]hstruct vidtv_psi_sdt_write_args { char *buf; u32 offset; struct vidtv_psi_table_sdt *sdt; u32 buf_sz; u8 *continuity_counter; };}hjEcsbah}(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.hhM7hj$cubh)}(h **Members**h]j)}(hjVch]hMembers}(hjXchhhNhNubah}(h]h ]h"]h$]h&]uh1jhjTcubah}(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$cubjf)}(hhh](jk)}(h ``buf`` The destination buffer. h](jq)}(h``buf``h]j )}(hjuch]hbuf}(hjwchhhNhNubah}(h]h ]h"]h$]h&]uh1j hjscubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhM3hjocubj)}(hhh]h)}(hThe destination buffer.h]hThe destination buffer.}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhjchM3hjcubah}(h]h ]h"]h$]h&]uh1jhjocubeh}(h]h ]h"]h$]h&]uh1jjhjchM3hjlcubjk)}(h3``offset`` The offset into the destination buffer. h](jq)}(h ``offset``h]j )}(hjch]hoffset}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1j hjcubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhM4hjcubj)}(hhh]h)}(h'The offset into the destination buffer.h]h'The offset into the destination buffer.}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhjchM4hjcubah}(h]h ]h"]h$]h&]uh1jhjcubeh}(h]h ]h"]h$]h&]uh1jjhjchM4hjlcubjk)}(h``sdt`` A pointer to the SDT. h](jq)}(h``sdt``h]j )}(hjch]hsdt}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1j hjcubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhM5hjcubj)}(hhh]h)}(hA pointer to the SDT.h]hA pointer to the SDT.}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjchM5hjcubah}(h]h ]h"]h$]h&]uh1jhjcubeh}(h]h ]h"]h$]h&]uh1jjhjchM5hjlcubjk)}(h/``buf_sz`` The size of the destination buffer. h](jq)}(h ``buf_sz``h]j )}(hj dh]hbuf_sz}(hj"dhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjdubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhM6hjdubj)}(hhh]h)}(h#The size of the destination buffer.h]h#The size of the destination buffer.}(hj9dhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5dhM6hj6dubah}(h]h ]h"]h$]h&]uh1jhjdubeh}(h]h ]h"]h$]h&]uh1jjhj5dhM6hjlcubjk)}(hL``continuity_counter`` A pointer to the CC. Incremented on every new packet.h](jq)}(h``continuity_counter``h]j )}(hjYdh]hcontinuity_counter}(hj[dhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjWdubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhM6hjSdubj)}(hhh]h)}(h5A pointer to the CC. Incremented on every new packet.h]h5A pointer to the CC. Incremented on every new packet.}(hjrdhhhNhNubah}(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.hhM7hjodubah}(h]h ]h"]h$]h&]uh1jhjSdubeh}(h]h ]h"]h$]h&]uh1jjhjndhM6hjlcubeh}(h]h ]h"]h$]h&]uh1jehj$cubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j%vidtv_psi_sdt_write_into (C function)c.vidtv_psi_sdt_write_intohNtauh1jhjhhhNhNubj)}(hhh](j)}(hDu32 vidtv_psi_sdt_write_into (struct vidtv_psi_sdt_write_args *args)h]j)}(hCu32 vidtv_psi_sdt_write_into(struct vidtv_psi_sdt_write_args *args)h](h)}(hhh]j%)}(hu32h]hu32}(hjdhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjdubah}(h]h ]h"]h$]h&] refdomainjmreftypej{ reftargetjdmodnameN classnameNjj)}j]j)}j{vidtv_psi_sdt_write_intosbc.vidtv_psi_sdt_write_intoasbuh1hhjdhhh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMNubj)}(h h]h }(hjdhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjdhhhjdhMNubj)}(hvidtv_psi_sdt_write_intoh]j%)}(hjdh]hvidtv_psi_sdt_write_into}(hjdhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjdubah}(h]h ](j7j8eh"]h$]h&]hhuh1jhjdhhhjdhMNubj<)}(h'(struct vidtv_psi_sdt_write_args *args)h]jB)}(h%struct vidtv_psi_sdt_write_args *argsh](j)}(hjh]hstruct}(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjeubj)}(h h]h }(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjeubh)}(hhh]j%)}(hvidtv_psi_sdt_write_argsh]hvidtv_psi_sdt_write_args}(hj#ehhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hj eubah}(h]h ]h"]h$]h&] refdomainjmreftypej{ reftargetj%emodnameN classnameNjj)}j]jdc.vidtv_psi_sdt_write_intoasbuh1hhjeubj)}(h h]h }(hjAehhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjeubj)}(hjh]h*}(hjOehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjeubj%)}(hargsh]hargs}(hj\ehhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjeubeh}(h]h ]h"]h$]h&]noemphhhuh1jAhjdubah}(h]h ]h"]h$]h&]hhuh1j;hjdhhhjdhMNubeh}(h]h ]h"]h$]h&]hhjBuh1jjCjDhjdhhhjdhMNubah}(h]jdah ](jHjIeh"]h$]h&]jMjN)jOhuh1jhjdhMNhjdhhubjQ)}(hhh]h)}(h+Write SDT as MPEG-TS packets into a buffer.h]h+Write SDT as MPEG-TS packets into a 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.hhMChjehhubah}(h]h ]h"]h$]h&]uh1jPhjdhhhjdhMNubeh}(h]h ](jmfunctioneh"]h$]h&]jrjmjsjejtjejujvjwuh1jhhhjhNhNubjy)}(hX**Parameters** ``struct vidtv_psi_sdt_write_args *args`` an instance of struct vidtv_psi_sdt_write_args **Description** This function writes the MPEG TS packets for a SDT table into a buffer. Calling code will usually generate the SDT 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 SDT, since more space is needed for TS headers during TS encapsulation.h](h)}(h**Parameters**h]j)}(hjeh]h Parameters}(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.hhMGhjeubjf)}(hhh]jk)}(hY``struct vidtv_psi_sdt_write_args *args`` an instance of struct vidtv_psi_sdt_write_args h](jq)}(h)``struct vidtv_psi_sdt_write_args *args``h]j )}(hjeh]h%struct vidtv_psi_sdt_write_args *args}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1j hjeubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMDhjeubj)}(hhh]h)}(h.an instance of struct vidtv_psi_sdt_write_argsh]h.an instance of struct vidtv_psi_sdt_write_args}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhjehMDhjeubah}(h]h ]h"]h$]h&]uh1jhjeubeh}(h]h ]h"]h$]h&]uh1jjhjehMDhjeubah}(h]h ]h"]h$]h&]uh1jehjeubh)}(h**Description**h]j)}(hjfh]h Description}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjfubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMFhjeubh)}(hThis function writes the MPEG TS packets for a SDT table into a buffer. Calling code will usually generate the SDT via a call to its init function and thus is responsible for freeing it.h]hThis function writes the MPEG TS packets for a SDT table into a buffer. Calling code will usually generate the SDT via a call to its init function and thus is responsible for freeing it.}(hjfhhhNhNubah}(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.hhMFhjeubh)}(h **Return**h]j)}(hj)fh]hReturn}(hj+fhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'fubah}(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.hhMJhjeubh)}(hThe number of bytes written into the buffer. This is NOT equal to the size of the SDT, 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 SDT, since more space is needed for TS headers during TS encapsulation.}(hj?fhhhNhNubah}(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.hhMJhjeubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j#vidtv_psi_pmt_write_args (C struct)c.vidtv_psi_pmt_write_argshNtauh1jhjhhhNhNubj)}(hhh](j)}(hvidtv_psi_pmt_write_argsh]j)}(hstruct vidtv_psi_pmt_write_argsh](j)}(hjh]hstruct}(hjnfhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjjfhhh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMQubj)}(h h]h }(hj|fhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjjfhhhj{fhMQubj)}(hvidtv_psi_pmt_write_argsh]j%)}(hjhfh]hvidtv_psi_pmt_write_args}(hjfhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjfubah}(h]h ](j7j8eh"]h$]h&]hhuh1jhjjfhhhj{fhMQubeh}(h]h ]h"]h$]h&]hhjBuh1jjCjDhjffhhhj{fhMQubah}(h]jafah ](jHjIeh"]h$]h&]jMjN)jOhuh1jhj{fhMQhjcfhhubjQ)}(hhh]h)}(h#Arguments for writing a PMT sectionh]h#Arguments for writing a PMT section}(hjfhhhNhNubah}(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.hhMQhjfhhubah}(h]h ]h"]h$]h&]uh1jPhjcfhhhj{fhMQubeh}(h]h ](jmstructeh"]h$]h&]jrjmjsjfjtjfjujvjwuh1jhhhjhNhNubjy)}(hXQ**Definition**:: struct vidtv_psi_pmt_write_args { char *buf; u32 offset; struct vidtv_psi_table_pmt *pmt; u16 pid; u32 buf_sz; u8 *continuity_counter; u16 pcr_pid; }; **Members** ``buf`` The destination buffer. ``offset`` The offset into the destination buffer. ``pmt`` A pointer to the PMT. ``pid`` Program ID ``buf_sz`` The size of the destination buffer. ``continuity_counter`` A pointer to the CC. Incremented on every new packet. ``pcr_pid`` The TS PID used for the PSI packets. All channels will share the same PCR.h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjfubh:}(hjfhhhNhNubeh}(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.hhMUhjfubj)}(hstruct vidtv_psi_pmt_write_args { char *buf; u32 offset; struct vidtv_psi_table_pmt *pmt; u16 pid; u32 buf_sz; u8 *continuity_counter; u16 pcr_pid; };h]hstruct vidtv_psi_pmt_write_args { char *buf; u32 offset; struct vidtv_psi_table_pmt *pmt; u16 pid; u32 buf_sz; u8 *continuity_counter; u16 pcr_pid; };}hjfsbah}(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.hhMWhjfubh)}(h **Members**h]j)}(hjfh]hMembers}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jhjfubah}(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.hhMahjfubjf)}(hhh](jk)}(h ``buf`` The destination buffer. h](jq)}(h``buf``h]j )}(hjgh]hbuf}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1j hjgubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMShjgubj)}(hhh]h)}(hThe destination buffer.h]hThe destination buffer.}(hj6ghhhNhNubah}(h]h ]h"]h$]h&]uh1hhj2ghMShj3gubah}(h]h ]h"]h$]h&]uh1jhjgubeh}(h]h ]h"]h$]h&]uh1jjhj2ghMShjgubjk)}(h3``offset`` The offset into the destination buffer. h](jq)}(h ``offset``h]j )}(hjVgh]hoffset}(hjXghhhNhNubah}(h]h ]h"]h$]h&]uh1j hjTgubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMThjPgubj)}(hhh]h)}(h'The offset into the destination buffer.h]h'The offset into the destination buffer.}(hjoghhhNhNubah}(h]h ]h"]h$]h&]uh1hhjkghMThjlgubah}(h]h ]h"]h$]h&]uh1jhjPgubeh}(h]h ]h"]h$]h&]uh1jjhjkghMThjgubjk)}(h``pmt`` A pointer to the PMT. h](jq)}(h``pmt``h]j )}(hjgh]hpmt}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1j hjgubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMUhjgubj)}(hhh]h)}(hA pointer to the PMT.h]hA pointer to the PMT.}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhjghMUhjgubah}(h]h ]h"]h$]h&]uh1jhjgubeh}(h]h ]h"]h$]h&]uh1jjhjghMUhjgubjk)}(h``pid`` Program ID h](jq)}(h``pid``h]j )}(hjgh]hpid}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1j hjgubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMVhjgubj)}(hhh]h)}(h Program IDh]h Program ID}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhjghMVhjgubah}(h]h ]h"]h$]h&]uh1jhjgubeh}(h]h ]h"]h$]h&]uh1jjhjghMVhjgubjk)}(h/``buf_sz`` The size of the destination buffer. h](jq)}(h ``buf_sz``h]j )}(hjhh]hbuf_sz}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjgubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMWhjgubj)}(hhh]h)}(h#The size of the destination buffer.h]h#The size of the destination buffer.}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhMWhjhubah}(h]h ]h"]h$]h&]uh1jhjgubeh}(h]h ]h"]h$]h&]uh1jjhjhhMWhjgubjk)}(hM``continuity_counter`` A pointer to the CC. Incremented on every new packet. h](jq)}(h``continuity_counter``h]j )}(hj:hh]hcontinuity_counter}(hjimodnameN classnameNjj)}j]jhc.vidtv_psi_pmt_write_intoasbuh1hhjiubj)}(h h]h }(hjZihhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjiubj)}(hjh]h*}(hjhihhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjiubj%)}(hargsh]hargs}(hjuihhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjiubeh}(h]h ]h"]h$]h&]noemphhhuh1jAhjiubah}(h]h ]h"]h$]h&]hhuh1j;hjhhhhjhhMqubeh}(h]h ]h"]h$]h&]hhjBuh1jjCjDhjhhhhjhhMqubah}(h]jhah ](jHjIeh"]h$]h&]jMjN)jOhuh1jhjhhMqhjhhhubjQ)}(hhh]h)}(h+Write PMT as MPEG-TS packets into a buffer.h]h+Write PMT as MPEG-TS packets into a buffer.}(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.hhMfhjihhubah}(h]h ]h"]h$]h&]uh1jPhjhhhhjhhMqubeh}(h]h ](jmfunctioneh"]h$]h&]jrjmjsjijtjijujvjwuh1jhhhjhNhNubjy)}(hX**Parameters** ``struct vidtv_psi_pmt_write_args *args`` an instance of struct vidtv_psi_pmt_write_args **Description** This function writes the MPEG TS packets for a PMT section into a buffer. Calling code will usually generate the PMT section 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 PMT section, since more space is needed for TS headers during TS encapsulation.h](h)}(h**Parameters**h]j)}(hjih]h Parameters}(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.hhMjhjiubjf)}(hhh]jk)}(hY``struct vidtv_psi_pmt_write_args *args`` an instance of struct vidtv_psi_pmt_write_args h](jq)}(h)``struct vidtv_psi_pmt_write_args *args``h]j )}(hjih]h%struct vidtv_psi_pmt_write_args *args}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1j hjiubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMghjiubj)}(hhh]h)}(h.an instance of struct vidtv_psi_pmt_write_argsh]h.an instance of struct vidtv_psi_pmt_write_args}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1hhjihMghjiubah}(h]h ]h"]h$]h&]uh1jhjiubeh}(h]h ]h"]h$]h&]uh1jjhjihMghjiubah}(h]h ]h"]h$]h&]uh1jehjiubh)}(h**Description**h]j)}(hjjh]h Description}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMihjiubh)}(hThis function writes the MPEG TS packets for a PMT section into a buffer. Calling code will usually generate the PMT section via a call to its init function and thus is responsible for freeing it.h]hThis function writes the MPEG TS packets for a PMT section into a buffer. Calling code will usually generate the PMT section via a call to its init function and thus is responsible for freeing it.}(hj1jhhhNhNubah}(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.hhMihjiubh)}(h **Return**h]j)}(hjBjh]hReturn}(hjDjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj@jubah}(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.hhMmhjiubh)}(hThe number of bytes written into the buffer. This is NOT equal to the size of the PMT section, 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 PMT section, since more space is needed for TS headers during TS encapsulation.}(hjXjhhhNhNubah}(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.hhMmhjiubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j#vidtv_psi_find_pmt_sec (C function)c.vidtv_psi_find_pmt_sechNtauh1jhjhhhNhNubj)}(hhh](j)}(hstruct vidtv_psi_table_pmt * vidtv_psi_find_pmt_sec (struct vidtv_psi_table_pmt **pmt_sections, u16 nsections, u16 program_num)h]j)}(h}struct vidtv_psi_table_pmt *vidtv_psi_find_pmt_sec(struct vidtv_psi_table_pmt **pmt_sections, u16 nsections, u16 program_num)h](j)}(hjh]hstruct}(hjjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjjhhh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhM{ubj)}(h h]h }(hjjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjjhhhjjhM{ubh)}(hhh]j%)}(hvidtv_psi_table_pmth]hvidtv_psi_table_pmt}(hjjhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjjubah}(h]h ]h"]h$]h&] refdomainjmreftypej{ reftargetjjmodnameN classnameNjj)}j]j)}j{vidtv_psi_find_pmt_secsbc.vidtv_psi_find_pmt_secasbuh1hhjjhhhjjhM{ubj)}(h h]h }(hjjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjjhhhjjhM{ubj)}(hjh]h*}(hjjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjjhhhjjhM{ubj)}(hvidtv_psi_find_pmt_sech]j%)}(hjjh]hvidtv_psi_find_pmt_sec}(hjjhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjjubah}(h]h ](j7j8eh"]h$]h&]hhuh1jhjjhhhjjhM{ubj<)}(hK(struct vidtv_psi_table_pmt **pmt_sections, u16 nsections, u16 program_num)h](jB)}(h)struct vidtv_psi_table_pmt **pmt_sectionsh](j)}(hjh]hstruct}(hjkhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjjubj)}(h h]h }(hjkhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjjubh)}(hhh]j%)}(hvidtv_psi_table_pmth]hvidtv_psi_table_pmt}(hjkhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjkubah}(h]h ]h"]h$]h&] refdomainjmreftypej{ reftargetj!kmodnameN classnameNjj)}j]jjc.vidtv_psi_find_pmt_secasbuh1hhjjubj)}(h h]h }(hj=khhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjjubj)}(hjh]h*}(hjKkhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjjubj)}(hjh]h*}(hjXkhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjjubj%)}(h pmt_sectionsh]h pmt_sections}(hjekhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjjubeh}(h]h ]h"]h$]h&]noemphhhuh1jAhjjubjB)}(h u16 nsectionsh](h)}(hhh]j%)}(hu16h]hu16}(hjkhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hj~kubah}(h]h ]h"]h$]h&] refdomainjmreftypej{ reftargetjkmodnameN classnameNjj)}j]jjc.vidtv_psi_find_pmt_secasbuh1hhjzkubj)}(h h]h }(hjkhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjzkubj%)}(h nsectionsh]h nsections}(hjkhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjzkubeh}(h]h ]h"]h$]h&]noemphhhuh1jAhjjubjB)}(hu16 program_numh](h)}(hhh]j%)}(hu16h]hu16}(hjkhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjkubah}(h]h ]h"]h$]h&] refdomainjmreftypej{ reftargetjkmodnameN classnameNjj)}j]jjc.vidtv_psi_find_pmt_secasbuh1hhjkubj)}(h h]h }(hjkhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjkubj%)}(h program_numh]h program_num}(hjkhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjkubeh}(h]h ]h"]h$]h&]noemphhhuh1jAhjjubeh}(h]h ]h"]h$]h&]hhuh1j;hjjhhhjjhM{ubeh}(h]h ]h"]h$]h&]hhjBuh1jjCjDhjjhhhjjhM{ubah}(h]jzjah ](jHjIeh"]h$]h&]jMjN)jOhuh1jhjjhM{hj|jhhubjQ)}(hhh]h)}(h'Finds the PMT section for 'program_num'h]h+Finds the PMT section for ‘program_num’}(hjlhhhNhNubah}(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.hhMthjlhhubah}(h]h ]h"]h$]h&]uh1jPhj|jhhhjjhM{ubeh}(h]h ](jmfunctioneh"]h$]h&]jrjmjsj7ljtj7ljujvjwuh1jhhhjhNhNubjy)}(hX **Parameters** ``struct vidtv_psi_table_pmt **pmt_sections`` The sections to look into. ``u16 nsections`` The number of sections. ``u16 program_num`` The 'program_num' from PAT pointing to a PMT section. **Return** A pointer to the PMT, if found, or NULL.h](h)}(h**Parameters**h]j)}(hjAlh]h Parameters}(hjClhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?lubah}(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.hhMxhj;lubjf)}(hhh](jk)}(hI``struct vidtv_psi_table_pmt **pmt_sections`` The sections to look into. h](jq)}(h-``struct vidtv_psi_table_pmt **pmt_sections``h]j )}(hj`lh]h)struct vidtv_psi_table_pmt **pmt_sections}(hjblhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj^lubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMuhjZlubj)}(hhh]h)}(hThe sections to look into.h]hThe sections to look into.}(hjylhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjulhMuhjvlubah}(h]h ]h"]h$]h&]uh1jhjZlubeh}(h]h ]h"]h$]h&]uh1jjhjulhMuhjWlubjk)}(h*``u16 nsections`` The number of sections. h](jq)}(h``u16 nsections``h]j )}(hjlh]h u16 nsections}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjlubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMvhjlubj)}(hhh]h)}(hThe number of sections.h]hThe number of sections.}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjlhMvhjlubah}(h]h ]h"]h$]h&]uh1jhjlubeh}(h]h ]h"]h$]h&]uh1jjhjlhMvhjWlubjk)}(hJ``u16 program_num`` The 'program_num' from PAT pointing to a PMT section. h](jq)}(h``u16 program_num``h]j )}(hjlh]hu16 program_num}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjlubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMwhjlubj)}(hhh]h)}(h5The 'program_num' from PAT pointing to a PMT section.h]h9The ‘program_num’ from PAT pointing to a PMT section.}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjlhMwhjlubah}(h]h ]h"]h$]h&]uh1jhjlubeh}(h]h ]h"]h$]h&]uh1jjhjlhMwhjWlubeh}(h]h ]h"]h$]h&]uh1jehj;lubh)}(h **Return**h]j)}(hj mh]hReturn}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj mubah}(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.hhMyhj;lubh)}(h(A pointer to the PMT, if found, or NULL.h]h(A pointer to the PMT, if found, or NULL.}(hj#mhhhNhNubah}(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.hhMyhj;lubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j$vidtv_psi_table_transport (C struct)c.vidtv_psi_table_transporthNtauh1jhjhhhNhNubj)}(hhh](j)}(hvidtv_psi_table_transporth]j)}(h struct vidtv_psi_table_transporth](j)}(hjh]hstruct}(hjRmhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjNmhhh|/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`mhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjNmhhhj_mhM~ubj)}(hvidtv_psi_table_transporth]j%)}(hjLmh]hvidtv_psi_table_transport}(hjrmhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjnmubah}(h]h ](j7j8eh"]h$]h&]hhuh1jhjNmhhhj_mhM~ubeh}(h]h ]h"]h$]h&]hhjBuh1jjCjDhjJmhhhj_mhM~ubah}(h]jEmah ](jHjIeh"]h$]h&]jMjN)jOhuh1jhj_mhM~hjGmhhubjQ)}(hhh]h)}(hVA entry in the TS loop for the NIT and/or other tables. See ETSI 300 468 section 5.2.1h]hVA entry in the TS loop for the NIT and/or other tables. See ETSI 300 468 section 5.2.1}(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&]uh1jPhjGmhhhj_mhM~ubeh}(h]h ](jmstructeh"]h$]h&]jrjmjsjmjtjmjujvjwuh1jhhhjhNhNubjy)}(hX**Definition**:: struct vidtv_psi_table_transport { __be16 transport_id; __be16 network_id; __be16 bitfield; struct vidtv_psi_desc *descriptor; struct vidtv_psi_table_transport *next; }; **Members** ``transport_id`` The TS ID being described ``network_id`` The network_id that contains the TS ID ``bitfield`` Contains the descriptor loop length ``descriptor`` A descriptor loop ``next`` Pointer to the next entryh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjmubh:}(hjmhhhNhNubeh}(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.hhMhjmubj)}(hstruct vidtv_psi_table_transport { __be16 transport_id; __be16 network_id; __be16 bitfield; struct vidtv_psi_desc *descriptor; struct vidtv_psi_table_transport *next; };h]hstruct vidtv_psi_table_transport { __be16 transport_id; __be16 network_id; __be16 bitfield; struct vidtv_psi_desc *descriptor; struct vidtv_psi_table_transport *next; };}hjmsbah}(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.hhMhjmubh)}(h **Members**h]j)}(hjmh]hMembers}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjmubah}(h]h ]h"]h$]h&]uh1hh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjmubjf)}(hhh](jk)}(h+``transport_id`` The TS ID being described h](jq)}(h``transport_id``h]j )}(hjnh]h transport_id}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjmubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjmubj)}(hhh]h)}(hThe TS ID being describedh]hThe TS ID being described}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjnhMhjnubah}(h]h ]h"]h$]h&]uh1jhjmubeh}(h]h ]h"]h$]h&]uh1jjhjnhMhjmubjk)}(h6``network_id`` The network_id that contains the TS ID h](jq)}(h``network_id``h]j )}(hj:nh]h network_id}(hjshhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjshhhj=shMubj)}(hvidtv_psi_nit_write_intoh]j%)}(hj:sh]hvidtv_psi_nit_write_into}(hjPshhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjLsubah}(h]h ](j7j8eh"]h$]h&]hhuh1jhjshhhj=shMubj<)}(h'(struct vidtv_psi_nit_write_args *args)h]jB)}(h%struct vidtv_psi_nit_write_args *argsh](j)}(hjh]hstruct}(hjkshhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjgsubj)}(h h]h }(hjxshhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjgsubh)}(hhh]j%)}(hvidtv_psi_nit_write_argsh]hvidtv_psi_nit_write_args}(hjshhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjsubah}(h]h ]h"]h$]h&] refdomainjmreftypej{ reftargetjsmodnameN classnameNjj)}j]j8sc.vidtv_psi_nit_write_intoasbuh1hhjgsubj)}(h h]h }(hjshhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjgsubj)}(hjh]h*}(hjshhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjgsubj%)}(hargsh]hargs}(hjshhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjgsubeh}(h]h ]h"]h$]h&]noemphhhuh1jAhjcsubah}(h]h ]h"]h$]h&]hhuh1j;hjshhhj=shMubeh}(h]h ]h"]h$]h&]hhjBuh1jjCjDhjshhhj=shMubah}(h]j sah ](jHjIeh"]h$]h&]jMjN)jOhuh1jhj=shMhjshhubjQ)}(hhh]h)}(h+Write NIT as MPEG-TS packets into a buffer.h]h+Write NIT as MPEG-TS packets into a buffer.}(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.hhMhjshhubah}(h]h ]h"]h$]h&]uh1jPhjshhhj=shMubeh}(h]h ](jmfunctioneh"]h$]h&]jrjmjsjtjtjtjujvjwuh1jhhhjhNhNubjy)}(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)}(hjth]h Parameters}(hjthhhNhNubah}(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.hhMhjtubjf)}(hhh]jk)}(hY``struct vidtv_psi_nit_write_args *args`` an instance of struct vidtv_psi_nit_write_args h](jq)}(h)``struct vidtv_psi_nit_write_args *args``h]j )}(hj-th]h%struct vidtv_psi_nit_write_args *args}(hj/thhhNhNubah}(h]h ]h"]h$]h&]uh1j hj+tubah}(h]h ]h"]h$]h&]uh1jph|/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}(hjFthhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBthMhjCtubah}(h]h ]h"]h$]h&]uh1jhj'tubeh}(h]h ]h"]h$]h&]uh1jjhjBthMhj$tubah}(h]h ]h"]h$]h&]uh1jehjtubh)}(h**Description**h]j)}(hjhth]h Description}(hjjthhhNhNubah}(h]h ]h"]h$]h&]uh1jhjftubah}(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.}(hj~thhhNhNubah}(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&]uh1jxhjhhhNhNubj)}(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 ]jah"]h$]h&]uh1j hjthhhjthMubj)}(hvidtv_psi_eit_write_argsh]j%)}(hjth]hvidtv_psi_eit_write_args}(hjthhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjtubah}(h]h ](j7j8eh"]h$]h&]hhuh1jhjthhhjthMubeh}(h]h ]h"]h$]h&]hhjBuh1jjCjDhjthhhjthMubah}(h]jtah ](jHjIeh"]h$]h&]jMjN)jOhuh1jhjthMhjthhubjQ)}(hhh]h)}(h$Arguments for writing an EIT sectionh]h$Arguments for writing an EIT section}(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.hhMhjuhhubah}(h]h ]h"]h$]h&]uh1jPhjthhhjthMubeh}(h]h ](jmstructeh"]h$]h&]jrjmjsj.ujtj.ujujvjwuh1jhhhjhNhNubjy)}(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}(hj:uhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6uubh:}(hj6uhhhNhNubeh}(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.hhMhj2uubj)}(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; };}hjSusbah}(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.hhMhj2uubh)}(h **Members**h]j)}(hjduh]hMembers}(hjfuhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbuubah}(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.hhMhj2uubjf)}(hhh](jk)}(h ``buf`` The destination buffer. h](jq)}(h``buf``h]j )}(hjuh]hbuf}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjuubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj}uubj)}(hhh]h)}(hThe destination buffer.h]hThe destination buffer.}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjuhMhjuubah}(h]h ]h"]h$]h&]uh1jhj}uubeh}(h]h ]h"]h$]h&]uh1jjhjuhMhjzuubjk)}(h3``offset`` The offset into the destination buffer. h](jq)}(h ``offset``h]j )}(hjuh]hoffset}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjuubah}(h]h ]h"]h$]h&]uh1jph|/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&]uh1jjhjuhMhjzuubjk)}(h``eit`` A pointer to the EIT h](jq)}(h``eit``h]j )}(hjuh]heit}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjuubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjuubj)}(hhh]h)}(hA pointer to the EITh]hA pointer to the EIT}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj vhMhj vubah}(h]h ]h"]h$]h&]uh1jhjuubeh}(h]h ]h"]h$]h&]uh1jjhj vhMhjzuubjk)}(h/``buf_sz`` The size of the destination buffer. h](jq)}(h ``buf_sz``h]j )}(hj.vh]hbuf_sz}(hj0vhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj,vubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhj(vubj)}(hhh]h)}(h#The size of the destination buffer.h]h#The size of the destination buffer.}(hjGvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjCvhMhjDvubah}(h]h ]h"]h$]h&]uh1jhj(vubeh}(h]h ]h"]h$]h&]uh1jjhjCvhMhjzuubjk)}(hL``continuity_counter`` A pointer to the CC. Incremented on every new packet.h](jq)}(h``continuity_counter``h]j )}(hjgvh]hcontinuity_counter}(hjivhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjevubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjavubj)}(hhh]h)}(h5A pointer to the CC. Incremented on every new packet.h]h5A pointer to the CC. Incremented on every new packet.}(hjvhhhNhNubah}(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}vubah}(h]h ]h"]h$]h&]uh1jhjavubeh}(h]h ]h"]h$]h&]uh1jjhj|vhMhjzuubeh}(h]h ]h"]h$]h&]uh1jehj2uubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j%vidtv_psi_eit_write_into (C function)c.vidtv_psi_eit_write_intohNtauh1jhjhhhNhNubj)}(hhh](j)}(hDu32 vidtv_psi_eit_write_into (struct vidtv_psi_eit_write_args *args)h]j)}(hCu32 vidtv_psi_eit_write_into(struct vidtv_psi_eit_write_args *args)h](h)}(hhh]j%)}(hu32h]hu32}(hjvhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjvubah}(h]h ]h"]h$]h&] refdomainjmreftypej{ reftargetjvmodnameN classnameNjj)}j]j)}j{vidtv_psi_eit_write_intosbc.vidtv_psi_eit_write_intoasbuh1hhjvhhh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhM ubj)}(h h]h }(hjvhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjvhhhjvhM ubj)}(hvidtv_psi_eit_write_intoh]j%)}(hjvh]hvidtv_psi_eit_write_into}(hjvhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjvubah}(h]h ](j7j8eh"]h$]h&]hhuh1jhjvhhhjvhM ubj<)}(h'(struct vidtv_psi_eit_write_args *args)h]jB)}(h%struct vidtv_psi_eit_write_args *argsh](j)}(hjh]hstruct}(hjwhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjwubj)}(h h]h }(hj whhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjwubh)}(hhh]j%)}(hvidtv_psi_eit_write_argsh]hvidtv_psi_eit_write_args}(hj1whhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hj.wubah}(h]h ]h"]h$]h&] refdomainjmreftypej{ reftargetj3wmodnameN classnameNjj)}j]jvc.vidtv_psi_eit_write_intoasbuh1hhjwubj)}(h h]h }(hjOwhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjwubj)}(hjh]h*}(hj]whhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjwubj%)}(hargsh]hargs}(hjjwhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjwubeh}(h]h ]h"]h$]h&]noemphhhuh1jAhj wubah}(h]h ]h"]h$]h&]hhuh1j;hjvhhhjvhM ubeh}(h]h ]h"]h$]h&]hhjBuh1jjCjDhjvhhhjvhM ubah}(h]jvah ](jHjIeh"]h$]h&]jMjN)jOhuh1jhjvhM hjvhhubjQ)}(hhh]h)}(h+Write EIT as MPEG-TS packets into a buffer.h]h+Write EIT as MPEG-TS packets into a buffer.}(hjwhhhNhNubah}(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.hhMhjwhhubah}(h]h ]h"]h$]h&]uh1jPhjvhhhjvhM ubeh}(h]h ](jmfunctioneh"]h$]h&]jrjmjsjwjtjwjujvjwuh1jhhhjhNhNubjy)}(hX**Parameters** ``struct vidtv_psi_eit_write_args *args`` an instance of struct vidtv_psi_nit_write_args **Description** This function writes the MPEG TS packets for a EIT table into a buffer. Calling code will usually generate the EIT 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 EIT, since more space is needed for TS headers during TS encapsulation.h](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.hhMhjwubjf)}(hhh]jk)}(hY``struct vidtv_psi_eit_write_args *args`` an instance of struct vidtv_psi_nit_write_args h](jq)}(h)``struct vidtv_psi_eit_write_args *args``h]j )}(hjwh]h%struct vidtv_psi_eit_write_args *args}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjwubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjwubj)}(hhh]h)}(h.an instance of struct vidtv_psi_nit_write_argsh]h.an instance of struct vidtv_psi_nit_write_args}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjwhMhjwubah}(h]h ]h"]h$]h&]uh1jhjwubeh}(h]h ]h"]h$]h&]uh1jjhjwhMhjwubah}(h]h ]h"]h$]h&]uh1jehjwubh)}(h**Description**h]j)}(hjxh]h Description}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjxubah}(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.hhMhjwubh)}(hThis function writes the MPEG TS packets for a EIT table into a buffer. Calling code will usually generate the EIT via a call to its init function and thus is responsible for freeing it.h]hThis function writes the MPEG TS packets for a EIT table into a buffer. Calling code will usually generate the EIT via a call to its init function and thus is responsible for freeing it.}(hj&xhhhNhNubah}(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.hhMhjwubh)}(h **Return**h]j)}(hj7xh]hReturn}(hj9xhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5xubah}(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.hhMhjwubh)}(hThe number of bytes written into the buffer. This is NOT equal to the size of the EIT, 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 EIT, since more space is needed for TS headers during TS encapsulation.}(hjMxhhhNhNubah}(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.hhMhjwubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j/vidtv_psi_eit_table_update_sec_len (C function)$c.vidtv_psi_eit_table_update_sec_lenhNtauh1jhjhhhNhNubj)}(hhh](j)}(hIvoid vidtv_psi_eit_table_update_sec_len (struct vidtv_psi_table_eit *eit)h]j)}(hHvoid vidtv_psi_eit_table_update_sec_len(struct vidtv_psi_table_eit *eit)h](j)}(hvoidh]hvoid}(hj|xhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjxxhhh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMubj)}(h h]h }(hjxhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjxxhhhjxhMubj)}(h"vidtv_psi_eit_table_update_sec_lenh]j%)}(h"vidtv_psi_eit_table_update_sec_lenh]h"vidtv_psi_eit_table_update_sec_len}(hjxhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjxubah}(h]h ](j7j8eh"]h$]h&]hhuh1jhjxxhhhjxhMubj<)}(h!(struct vidtv_psi_table_eit *eit)h]jB)}(hstruct vidtv_psi_table_eit *eith](j)}(hjh]hstruct}(hjxhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjxubj)}(h h]h }(hjxhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjxubh)}(hhh]j%)}(hvidtv_psi_table_eith]hvidtv_psi_table_eit}(hjxhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjxubah}(h]h ]h"]h$]h&] refdomainjmreftypej{ reftargetjxmodnameN classnameNjj)}j]j)}j{jxsb$c.vidtv_psi_eit_table_update_sec_lenasbuh1hhjxubj)}(h h]h }(hjxhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjxubj)}(hjh]h*}(hjyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjxubj%)}(heith]heit}(hjyhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjxubeh}(h]h ]h"]h$]h&]noemphhhuh1jAhjxubah}(h]h ]h"]h$]h&]hhuh1j;hjxxhhhjxhMubeh}(h]h ]h"]h$]h&]hhjBuh1jjCjDhjtxhhhjxhMubah}(h]joxah ](jHjIeh"]h$]h&]jMjN)jOhuh1jhjxhMhjqxhhubjQ)}(hhh]h)}(h,Recompute and update the EIT section length.h]h,Recompute and update the EIT section length.}(hj EIT_MAX_SECTION_LEN, the operation fails.h](h)}(h**Parameters**h]j)}(hj^yh]h Parameters}(hj`yhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj\yubah}(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.hhMhjXyubjf)}(hhh]jk)}(hK``struct vidtv_psi_table_eit *eit`` The EIT whose length is to be updated. h](jq)}(h#``struct vidtv_psi_table_eit *eit``h]j )}(hj}yh]hstruct vidtv_psi_table_eit *eit}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj{yubah}(h]h ]h"]h$]h&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjwyubj)}(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&]uh1jhjwyubeh}(h]h ]h"]h$]h&]uh1jjhjyhMhjtyubah}(h]h ]h"]h$]h&]uh1jehjXyubh)}(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.hhMhjXyubh)}(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.hhMhjXyubh)}(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.hhMhjXyubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhjhhhNhNubj)}(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 ]jah"]h$]h&]uh1jhjzhhh|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhM!ubj)}(h h]h }(hjzhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjzhhhjzhM!ubj)}(hvidtv_psi_eit_event_assignh]j%)}(hvidtv_psi_eit_event_assignh]hvidtv_psi_eit_event_assign}(hj-zhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hj)zubah}(h]h ](j7j8eh"]h$]h&]hhuh1jhjzhhhjzhM!ubj<)}(hF(struct vidtv_psi_table_eit *eit, struct vidtv_psi_table_eit_event *e)h](jB)}(hstruct vidtv_psi_table_eit *eith](j)}(hjh]hstruct}(hjIzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEzubj)}(h h]h }(hjVzhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjEzubh)}(hhh]j%)}(hvidtv_psi_table_eith]hvidtv_psi_table_eit}(hjgzhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjdzubah}(h]h ]h"]h$]h&] refdomainjmreftypej{ reftargetjizmodnameN classnameNjj)}j]j)}j{j/zsbc.vidtv_psi_eit_event_assignasbuh1hhjEzubj)}(h h]h }(hjzhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjEzubj)}(hjh]h*}(hjzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEzubj%)}(heith]heit}(hjzhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjEzubeh}(h]h ]h"]h$]h&]noemphhhuh1jAhjAzubjB)}(h#struct vidtv_psi_table_eit_event *eh](j)}(hjh]hstruct}(hjzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjzubj)}(h h]h }(hjzhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjzubh)}(hhh]j%)}(hvidtv_psi_table_eit_eventh]hvidtv_psi_table_eit_event}(hjzhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjzubah}(h]h ]h"]h$]h&] refdomainjmreftypej{ reftargetjzmodnameN classnameNjj)}j]jzc.vidtv_psi_eit_event_assignasbuh1hhjzubj)}(h h]h }(hjzhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjzubj)}(hjh]h*}(hj{hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjzubj%)}(heh]he}(hj{hhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjzubeh}(h]h ]h"]h$]h&]noemphhhuh1jAhjAzubeh}(h]h ]h"]h$]h&]hhuh1j;hjzhhhjzhM!ubeh}(h]h ]h"]h$]h&]hhjBuh1jjCjDhjzhhhjzhM!ubah}(h]jyah ](jHjIeh"]h$]h&]jMjN)jOhuh1jhjzhM!hjzhhubjQ)}(hhh]h)}(h"Assigns the event loop to the EIT.h]h"Assigns the event loop to the EIT.}(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.hhMhj9{hhubah}(h]h ]h"]h$]h&]uh1jPhjzhhhjzhM!ubeh}(h]h ](jmfunctioneh"]h$]h&]jrjmjsjT{jtjT{jujvjwuh1jhhhjhNhNubjy)}(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)}(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.hhMhjX{ubjf)}(hhh](jk)}(h:``struct vidtv_psi_table_eit *eit`` The EIT to assign to. h](jq)}(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&]uh1jph|/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:503: ./drivers/media/test-drivers/vidtv/vidtv_psi.hhMhjw{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&]uh1jhjw{ubeh}(h]h ]h"]h$]h&]uh1jjhj{hMhjt{ubjk)}(h7``struct vidtv_psi_table_eit_event *e`` The event loop h](jq)}(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&]uh1jph|/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&]uh1jjhj{hMhjt{ubeh}(h]h ]h"]h$]h&]uh1jehjX{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.hhMhjX{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.hhMhjX{ubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhjhhhNhNubj)}(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}(hj6|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2|hhh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:505: ./drivers/media/test-drivers/vidtv/vidtv_s302m.hhKubj)}(h h]h }(hjD|hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj2|hhhjC|hKubj)}(hvidtv_s302m_ctxh]j%)}(hj0|h]hvidtv_s302m_ctx}(hjV|hhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjR|ubah}(h]h ](j7j8eh"]h$]h&]hhuh1jhj2|hhhjC|hKubeh}(h]h ]h"]h$]h&]hhjBuh1jjCjDhj.|hhhjC|hKubah}(h]j)|ah ](jHjIeh"]h$]h&]jMjN)jOhuh1jhjC|hKhj+|hhubjQ)}(hhh]h)}(hs302m encoder context.h]hs302m encoder context.}(hjx|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 hju|hhubah}(h]h ]h"]h$]h&]uh1jPhj+|hhhjC|hKubeh}(h]h ](jmstructeh"]h$]h&]jrjmjsj|jtj|jujvjwuh1jhhhjhNhNubjy)}(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|ubjf)}(hhh](jk)}(h7``enc`` A pointer to the containing encoder structure. h](jq)}(h``enc``h]j )}(hj|h]henc}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj|ubah}(h]h ]h"]h$]h&]uh1jph~/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&]uh1jjhj|hK"hj|ubjk)}(h-``frame_index`` The current frame in a block h](jq)}(h``frame_index``h]j )}(hj}h]h frame_index}(hj }hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj}ubah}(h]h ]h"]h$]h&]uh1jph~/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}(hj7}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj3}hK#hj4}ubah}(h]h ]h"]h$]h&]uh1jhj}ubeh}(h]h ]h"]h$]h&]uh1jjhj3}hK#hj|ubjk)}(h@``au_count`` The total number of access units encoded up to now h](jq)}(h ``au_count``h]j )}(hjW}h]hau_count}(hjY}hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjU}ubah}(h]h ]h"]h$]h&]uh1jph~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:505: ./drivers/media/test-drivers/vidtv/vidtv_s302m.hhK$hjQ}ubj)}(hhh]h)}(h2The total number of access units encoded up to nowh]h2The total number of access units encoded up to now}(hjp}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjl}hK$hjm}ubah}(h]h ]h"]h$]h&]uh1jhjQ}ubeh}(h]h ]h"]h$]h&]uh1jjhjl}hK$hj|ubjk)}(h>``last_duration`` Duration of the tone currently being played h](jq)}(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&]uh1jph~/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&]uh1jjhj}hK%hj|ubjk)}(h1``note_offset`` Position at the music tone array h](jq)}(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&]uh1jph~/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&]uh1jjhj}hK&hj|ubjk)}(h)``last_tone`` Tone currently being playedh](jq)}(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&]uh1jph~/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&]uh1jjhj~hK&hj|ubeh}(h]h ]h"]h$]h&]uh1jehj|ubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhjhhhNhNubj)}(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}(hj\~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjX~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 }(hjj~hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjX~hhhji~hK-ubj)}(hvidtv_s302m_encoder_init_argsh]j%)}(hjV~h]hvidtv_s302m_encoder_init_args}(hj|~hhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjx~ubah}(h]h ](j7j8eh"]h$]h&]hhuh1jhjX~hhhji~hK-ubeh}(h]h ]h"]h$]h&]hhjBuh1jjCjDhjT~hhhji~hK-ubah}(h]jO~ah ](jHjIeh"]h$]h&]jMjN)jOhuh1jhji~hK-hjQ~hhubjQ)}(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&]uh1jPhjQ~hhhji~hK-ubeh}(h]h ](jmstructeh"]h$]h&]jrjmjsj~jtj~jujvjwuh1jhhhjhNhNubjy)}(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)}(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.hhKWhj~ubjf)}(hhh](jk)}(h5``name`` A name to identify this particular instance h](jq)}(h``name``h]j )}(hj h]hname}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj ubah}(h]h ]h"]h$]h&]uh1jph~/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}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKJhj!ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jjhj hKJhjubjk)}(hT``src_buf`` The source buffer, encoder will default to a sine wave if this is NULL. h](jq)}(h ``src_buf``h]j )}(hjDh]hsrc_buf}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjBubah}(h]h ]h"]h$]h&]uh1jph~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:505: ./drivers/media/test-drivers/vidtv/vidtv_s302m.hhKKhj>ubj)}(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.}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjYhKKhjZubah}(h]h ]h"]h$]h&]uh1jhj>ubeh}(h]h ]h"]h$]h&]uh1jjhjYhKKhjubjk)}(h.``src_buf_sz`` The size of the source buffer. h](jq)}(h``src_buf_sz``h]j )}(hj}h]h src_buf_sz}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj{ubah}(h]h ]h"]h$]h&]uh1jph~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:505: ./drivers/media/test-drivers/vidtv/vidtv_s302m.hhKLhjwubj)}(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&]uh1jhjwubeh}(h]h ]h"]h$]h&]uh1jjhjhKLhjubjk)}(h2``es_pid`` The MPEG Elementary Stream PID to use. h](jq)}(h ``es_pid``h]j )}(hjh]hes_pid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jph~/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&]uh1jjhjhKMhjubjk)}(hL``sync`` Attempt to synchronize audio with this video encoder, if not NULL. h](jq)}(h``sync``h]j )}(hjh]hsync}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jph~/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&]uh1jjhjhKNhjubjk)}(hH``last_sample_cb`` A callback called when the encoder runs out of data. h](jq)}(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&]uh1jph~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:505: ./drivers/media/test-drivers/vidtv/vidtv_s302m.hhKOhj"ubj)}(hhh]h)}(h4A callback called when the encoder runs out of data.h]h4A callback called when the encoder runs out of data.}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj=hKOhj>ubah}(h]h ]h"]h$]h&]uh1jhj"ubeh}(h]h ]h"]h$]h&]uh1jjhj=hKOhjubjk)}(h``head`` Add to this chainh](jq)}(h``head``h]j )}(hjah]hhead}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1j hj_ubah}(h]h ]h"]h$]h&]uh1jph~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:505: ./drivers/media/test-drivers/vidtv/vidtv_s302m.hhKOhj[ubj)}(hhh]h)}(hAdd to this chainh]hAdd to this chain}(hjzhhhNhNubah}(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.hhKPhjwubah}(h]h ]h"]h$]h&]uh1jhj[ubeh}(h]h ]h"]h$]h&]uh1jjhjvhKOhjubeh}(h]h ]h"]h$]h&]uh1jehj~ubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhjhhhNhNubj)}(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}(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.hhKubj)}(h h]h }(hjɀhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjhhhjȀhKubj)}(hpcr_write_argsh]j%)}(hjh]hpcr_write_args}(hjۀhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hj׀ubah}(h]h ](j7j8eh"]h$]h&]hhuh1jhjhhhjȀhKubeh}(h]h ]h"]h$]h&]hhjBuh1jjCjDhjhhhjȀhKubah}(h]jah ](jHjIeh"]h$]h&]jMjN)jOhuh1jhjȀhKhjhhubjQ)}(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&]uh1jPhjhhhjȀhKubeh}(h]h ](jmstructeh"]h$]h&]jrjmjsjjtjjujvjwuh1jhhhjhNhNubjy)}(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}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(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.hhK6hjubj)}(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; };}hj:sbah}(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.hhK8hjubh)}(h **Members**h]j)}(hjKh]hMembers}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIubah}(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.hhKAhjubjf)}(hhh](jk)}(h'``dest_buf`` The buffer to write into. h](jq)}(h ``dest_buf``h]j )}(hjjh]hdest_buf}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjhubah}(h]h ]h"]h$]h&]uh1jph{/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:507: ./drivers/media/test-drivers/vidtv/vidtv_ts.hhK4hjdubj)}(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&]uh1jhjdubeh}(h]h ]h"]h$]h&]uh1jjhjhK4hjaubjk)}(h1``dest_offset`` The byte offset into the buffer. h](jq)}(h``dest_offset``h]j )}(hjh]h dest_offset}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jph{/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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK5hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jjhjhK5hjaubjk)}(h(``pid`` The TS PID for the PCR packets. h](jq)}(h``pid``h]j )}(hj܁h]hpid}(hjށhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjځubah}(h]h ]h"]h$]h&]uh1jph{/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:507: ./drivers/media/test-drivers/vidtv/vidtv_ts.hhK6hjցubj)}(hhh]h)}(hThe TS PID for the PCR packets.h]hThe TS PID for the PCR packets.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK6hjubah}(h]h ]h"]h$]h&]uh1jhjցubeh}(h]h ]h"]h$]h&]uh1jjhjhK6hjaubjk)}(h,``buf_sz`` The size of the buffer in bytes. h](jq)}(h ``buf_sz``h]j )}(hjh]hbuf_sz}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jph{/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:507: ./drivers/media/test-drivers/vidtv/vidtv_ts.hhK7hjubj)}(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*hK7hj+ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jjhj*hK7hjaubjk)}(h2``continuity_counter`` The TS continuity_counter. h](jq)}(h``continuity_counter``h]j )}(hjNh]hcontinuity_counter}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjLubah}(h]h ]h"]h$]h&]uh1jph{/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:507: ./drivers/media/test-drivers/vidtv/vidtv_ts.hhK8hjHubj)}(hhh]h)}(hThe TS continuity_counter.h]hThe TS continuity_counter.}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhjchK8hjdubah}(h]h ]h"]h$]h&]uh1jhjHubeh}(h]h ]h"]h$]h&]uh1jjhjchK8hjaubjk)}(h'``pcr`` A sample from the system clock.h](jq)}(h``pcr``h]j )}(hjh]hpcr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jph{/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&]uh1jjhjhK8hjaubeh}(h]h ]h"]h$]h&]uh1jehjubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhjhhhNhNubj)}(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&]uh1jhj݂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 ]jah"]h$]h&]uh1j hj݂hhhjhK?ubj)}(hnull_packet_write_argsh]j%)}(hjۂh]hnull_packet_write_args}(hjhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjubah}(h]h ](j7j8eh"]h$]h&]hhuh1jhj݂hhhjhK?ubeh}(h]h ]h"]h$]h&]hhjBuh1jjCjDhjقhhhjhK?ubah}(h]jԂah ](jHjIeh"]h$]h&]jMjN)jOhuh1jhjhK?hjւhhubjQ)}(hhh]h)}(h*Arguments for the null_write_into functionh]h*Arguments for the null_write_into function}(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.hhKDhj hhubah}(h]h ]h"]h$]h&]uh1jPhjւhhhjhK?ubeh}(h]h ](jmstructeh"]h$]h&]jrjmjsj;jtj;jujvjwuh1jhhhjhNhNubjy)}(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}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCubh:}(hjChhhNhNubeh}(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.hhKHhj?ubj)}(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; };}hj`sbah}(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.hhKJhj?ubh)}(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:507: ./drivers/media/test-drivers/vidtv/vidtv_ts.hhKQhj?ubjf)}(hhh](jk)}(h'``dest_buf`` The buffer to write into. h](jq)}(h ``dest_buf``h]j )}(hjh]hdest_buf}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jph{/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&]uh1jjhjhKFhjubjk)}(h1``dest_offset`` The byte offset into the buffer. h](jq)}(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&]uh1jph{/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&]uh1hhjރhKGhj߃ubah}(h]h ]h"]h$]h&]uh1jhjÃubeh}(h]h ]h"]h$]h&]uh1jjhjރhKGhjubjk)}(h,``buf_sz`` The size of the buffer in bytes. h](jq)}(h ``buf_sz``h]j )}(hjh]hbuf_sz}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jph{/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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKHhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jjhjhKHhjubjk)}(h1``continuity_counter`` The TS continuity_counter.h](jq)}(h``continuity_counter``h]j )}(hj;h]hcontinuity_counter}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj9ubah}(h]h ]h"]h$]h&]uh1jph{/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:507: ./drivers/media/test-drivers/vidtv/vidtv_ts.hhKHhj5ubj)}(hhh]h)}(hThe TS continuity_counter.h]hThe TS continuity_counter.}(hjThhhNhNubah}(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.hhKIhjQubah}(h]h ]h"]h$]h&]uh1jhj5ubeh}(h]h ]h"]h$]h&]uh1jjhjPhKHhjubeh}(h]h ]h"]h$]h&]uh1jehj?ubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j%vidtv_ts_null_write_into (C function)c.vidtv_ts_null_write_intohNtauh1jhjhhhNhNubj)}(hhh](j)}(hAu32 vidtv_ts_null_write_into (struct null_packet_write_args args)h]j)}(h@u32 vidtv_ts_null_write_into(struct null_packet_write_args args)h](h)}(hhh]j%)}(hu32h]hu32}(hjhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjubah}(h]h ]h"]h$]h&] refdomainjmreftypej{ reftargetjmodnameN classnameNjj)}j]j)}j{vidtv_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.hhK]ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjhhhjhK]ubj)}(hvidtv_ts_null_write_intoh]j%)}(hjh]hvidtv_ts_null_write_into}(hj̄hhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjȄubah}(h]h ](j7j8eh"]h$]h&]hhuh1jhjhhhjhK]ubj<)}(h$(struct null_packet_write_args args)h]jB)}(h"struct null_packet_write_args argsh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubh)}(hhh]j%)}(hnull_packet_write_argsh]hnull_packet_write_args}(hjhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjubah}(h]h ]h"]h$]h&] refdomainjmreftypej{ reftargetjmodnameN classnameNjj)}j]jc.vidtv_ts_null_write_intoasbuh1hhjubj)}(h h]h }(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj%)}(hargsh]hargs}(hj1hhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jAhj߄ubah}(h]h ]h"]h$]h&]hhuh1j;hjhhhjhK]ubeh}(h]h ]h"]h$]h&]hhjBuh1jjCjDhjhhhjhK]ubah}(h]jah ](jHjIeh"]h$]h&]jMjN)jOhuh1jhjhK]hjhhubjQ)}(hhh]h)}(h%Write a TS null packet into a buffer.h]h%Write a TS null packet into a 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.hhKUhjXhhubah}(h]h ]h"]h$]h&]uh1jPhjhhhjhK]ubeh}(h]h ](jmfunctioneh"]h$]h&]jrjmjsjsjtjsjujvjwuh1jhhhjhNhNubjy)}(hX**Parameters** ``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)}(hj}h]h Parameters}(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:507: ./drivers/media/test-drivers/vidtv/vidtv_ts.hhKYhjwubjf)}(hhh]jk)}(hJ``struct null_packet_write_args args`` the arguments to use when writing. h](jq)}(h&``struct null_packet_write_args args``h]j )}(hjh]h"struct null_packet_write_args args}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jph{/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:507: ./drivers/media/test-drivers/vidtv/vidtv_ts.hhKVhjubj)}(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&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jjhjhKVhjubah}(h]h ]h"]h$]h&]uh1jehjwubh)}(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:507: ./drivers/media/test-drivers/vidtv/vidtv_ts.hhKXhjwubh)}(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.}(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.hhKXhjwubh)}(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.hhK[hjwubh)}(h,The number of bytes written into the buffer.h]h,The number of bytes written into the 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.hhK[hjwubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j$vidtv_ts_pcr_write_into (C function)c.vidtv_ts_pcr_write_intohNtauh1jhjhhhNhNubj)}(hhh](j)}(h8u32 vidtv_ts_pcr_write_into (struct pcr_write_args args)h]j)}(h7u32 vidtv_ts_pcr_write_into(struct pcr_write_args args)h](h)}(hhh]j%)}(hu32h]hu32}(hjFhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjCubah}(h]h ]h"]h$]h&] refdomainjmreftypej{ reftargetjHmodnameN classnameNjj)}j]j)}j{vidtv_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.hhKhubj)}(h h]h }(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj?hhhjghKhubj)}(hvidtv_ts_pcr_write_intoh]j%)}(hjdh]hvidtv_ts_pcr_write_into}(hjzhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjvubah}(h]h ](j7j8eh"]h$]h&]hhuh1jhj?hhhjghKhubj<)}(h(struct pcr_write_args args)h]jB)}(hstruct pcr_write_args argsh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubh)}(hhh]j%)}(hpcr_write_argsh]hpcr_write_args}(hjhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjubah}(h]h ]h"]h$]h&] refdomainjmreftypej{ reftargetjmodnameN classnameNjj)}j]jbc.vidtv_ts_pcr_write_intoasbuh1hhjubj)}(h h]h }(hjцhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj%)}(hargsh]hargs}(hj߆hhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jAhjubah}(h]h ]h"]h$]h&]hhuh1j;hj?hhhjghKhubeh}(h]h ]h"]h$]h&]hhjBuh1jjCjDhj;hhhjghKhubah}(h]j6ah ](jHjIeh"]h$]h&]jMjN)jOhuh1jhjghKhhj8hhubjQ)}(hhh]h)}(h!Write a PCR packet into a buffer.h]h!Write a PCR packet into a 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.hhK`hjhhubah}(h]h ]h"]h$]h&]uh1jPhj8hhhjghKhubeh}(h]h ](jmfunctioneh"]h$]h&]jrjmjsj!jtj!jujvjwuh1jhhhjhNhNubjy)}(hX**Parameters** ``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)}(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:507: ./drivers/media/test-drivers/vidtv/vidtv_ts.hhKdhj%ubjf)}(hhh]jk)}(hB``struct pcr_write_args args`` the arguments to use when writing. h](jq)}(h``struct pcr_write_args args``h]j )}(hjJh]hstruct pcr_write_args args}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjHubah}(h]h ]h"]h$]h&]uh1jph{/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:507: ./drivers/media/test-drivers/vidtv/vidtv_ts.hhKahjDubj)}(hhh]h)}(h"the arguments to use when writing.h]h"the arguments to use when writing.}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhj_hKahj`ubah}(h]h ]h"]h$]h&]uh1jhjDubeh}(h]h ]h"]h$]h&]uh1jjhj_hKahjAubah}(h]h ]h"]h$]h&]uh1jehj%ubh)}(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.hhKchj%ubh)}(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.hhKchj%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:507: ./drivers/media/test-drivers/vidtv/vidtv_ts.hhKfhj%ubh)}(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.hhKfhj%ubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhjhhhNhNubj)}(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}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhh~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:509: ./drivers/media/test-drivers/vidtv/vidtv_tuner.hhKubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjhhhjhKubj)}(hvidtv_tuner_configh]j%)}(hjh]hvidtv_tuner_config}(hjhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjubah}(h]h ](j7j8eh"]h$]h&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hhjBuh1jjCjDhjhhhjhKubah}(h]jah ](jHjIeh"]h$]h&]jMjN)jOhuh1jhjhKhjhhubjQ)}(hhh]h)}(h%Configuration used to init the tuner.h]h%Configuration used to init the tuner.}(hj4hhhNhNubah}(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.hhKhj1hhubah}(h]h ]h"]h$]h&]uh1jPhjhhhjhKubeh}(h]h ](jmstructeh"]h$]h&]jrjmjsjLjtjLjujvjwuh1jhhhjhjhNubjy)}(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}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjTubh:}(hjThhhNhNubeh}(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.hhKhjPubj)}(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; };}hjqsbah}(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.hhKhjPubh)}(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$hjPubjf)}(hhh](jk)}(hI``fe`` A pointer to the dvb_frontend structure allocated by vidtv_demod. h](jq)}(h``fe``h]j )}(hjh]hfe}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jph~/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&]uh1jjhjhKhjubjk)}(h8``mock_power_up_delay_msec`` Simulate a power-up delay. h](jq)}(h``mock_power_up_delay_msec``h]j )}(hjڈh]hmock_power_up_delay_msec}(hj܈hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj؈ubah}(h]h ]h"]h$]h&]uh1jph~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:509: ./drivers/media/test-drivers/vidtv/vidtv_tuner.hhKhjԈubj)}(hhh]h)}(hSimulate a power-up delay.h]hSimulate a power-up delay.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjԈubeh}(h]h ]h"]h$]h&]uh1jjhjhKhjubjk)}(h0``mock_tune_delay_msec`` Simulate a tune delay. h](jq)}(h``mock_tune_delay_msec``h]j )}(hjh]hmock_tune_delay_msec}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jph~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:509: ./drivers/media/test-drivers/vidtv/vidtv_tuner.hhKhj ubj)}(hhh]h)}(hSimulate a tune delay.h]hSimulate a tune delay.}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj(hKhj)ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jjhj(hKhjubjk)}(hE``vidtv_valid_dvb_t_freqs`` The valid DVB-T frequencies to simulate. h](jq)}(h``vidtv_valid_dvb_t_freqs``h]j )}(hjLh]hvidtv_valid_dvb_t_freqs}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjJubah}(h]h ]h"]h$]h&]uh1jph~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:509: ./drivers/media/test-drivers/vidtv/vidtv_tuner.hhKhjFubj)}(hhh]h)}(h(The valid DVB-T frequencies to simulate.h]h(The valid DVB-T frequencies to simulate.}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhjahKhjbubah}(h]h ]h"]h$]h&]uh1jhjFubeh}(h]h ]h"]h$]h&]uh1jjhjahKhjubjk)}(hE``vidtv_valid_dvb_c_freqs`` The valid DVB-C frequencies to simulate. h](jq)}(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&]uh1jph~/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&]uh1jjhjhKhjubjk)}(hE``vidtv_valid_dvb_s_freqs`` The valid DVB-S frequencies to simulate. h](jq)}(h``vidtv_valid_dvb_s_freqs``h]j )}(hjh]hvidtv_valid_dvb_s_freqs}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jph~/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&]uh1hhjӉhKhjԉubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jjhjӉhKhjubjk)}(h]``max_frequency_shift_hz`` The maximum frequency shift in HZ allowed when tuning in a channelh](jq)}(h``max_frequency_shift_hz``h]j )}(hjh]hmax_frequency_shift_hz}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jph~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:509: ./drivers/media/test-drivers/vidtv/vidtv_tuner.hhKhjubj)}(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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jjhj hKhjubeh}(h]h ]h"]h$]h&]uh1jehjPubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhjhhhjhNubh)}(h**Description**h]j)}(hj9h]h Description}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7ubah}(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.}(hjOhhhNhNubah}(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]j%)}(hu32h]hu32}(hjzhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjwubah}(h]h ]h"]h$]h&] refdomainjmreftypej{ reftargetj|modnameN classnameNjj)}j]j)}j{ vidtv_memcpysbc.vidtv_memcpyasbuh1hhjshhh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:511: ./drivers/media/test-drivers/vidtv/vidtv_common.chK&ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjshhhjhK&ubj)}(h vidtv_memcpyh]j%)}(hjh]h vidtv_memcpy}(hjhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjubah}(h]h ](j7j8eh"]h$]h&]hhuh1jhjshhhjhK&ubj<)}(hJ(void *to, size_t to_offset, size_t to_size, const void *from, size_t len)h](jB)}(hvoid *toh](j)}(hvoidh]hvoid}(hjɊhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjŊubj)}(h h]h }(hj׊hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjŊubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjŊubj%)}(htoh]hto}(hjhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjŊubeh}(h]h ]h"]h$]h&]noemphhhuh1jAhjubjB)}(hsize_t to_offseth](h)}(hhh]j%)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hj ubah}(h]h ]h"]h$]h&] refdomainjmreftypej{ reftargetjmodnameN classnameNjj)}j]jc.vidtv_memcpyasbuh1hhjubj)}(h h]h }(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj%)}(h to_offseth]h to_offset}(hj:hhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jAhjubjB)}(hsize_t to_sizeh](h)}(hhh]j%)}(hsize_th]hsize_t}(hjVhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjSubah}(h]h ]h"]h$]h&] refdomainjmreftypej{ reftargetjXmodnameN classnameNjj)}j]jc.vidtv_memcpyasbuh1hhjOubj)}(h h]h }(hjthhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjOubj%)}(hto_sizeh]hto_size}(hjhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjOubeh}(h]h ]h"]h$]h&]noemphhhuh1jAhjubjB)}(hconst void *fromh](j)}(hconsth]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjŋhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(hjh]h*}(hjӋhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj%)}(hfromh]hfrom}(hjhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jAhjubjB)}(h size_t lenh](h)}(hhh]j%)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjubah}(h]h ]h"]h$]h&] refdomainjmreftypej{ reftargetjmodnameN classnameNjj)}j]jc.vidtv_memcpyasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj%)}(hlenh]hlen}(hj(hhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jAhjubeh}(h]h ]h"]h$]h&]hhuh1j;hjshhhjhK&ubeh}(h]h ]h"]h$]h&]hhjBuh1jjCjDhjohhhjhK&ubah}(h]jjah ](jHjIeh"]h$]h&]jMjN)jOhuh1jhjhK&hjlhhubjQ)}(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.}(hjRhhhNhNubah}(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.chKhjOhhubah}(h]h ]h"]h$]h&]uh1jPhjlhhhjhK&ubeh}(h]h ](jmfunctioneh"]h$]h&]jrjmjsjjjtjjjujvjwuh1jhhhjhNhNubjy)}(hXt**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)}(hjth]h Parameters}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjrubah}(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.chKhjnubjf)}(hhh](jk)}(hH``void *to`` Starting element to where a MPEG-TS packet will be copied. h](jq)}(h ``void *to``h]j )}(hjh]hvoid *to}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jph/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.chKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jjhjhKhjubjk)}(hJ``size_t to_offset`` Starting position of the **to** buffer to be filled. h](jq)}(h``size_t to_offset``h]j )}(hj͌h]hsize_t to_offset}(hjόhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjˌubah}(h]h ]h"]h$]h&]uh1jph/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:511: ./drivers/media/test-drivers/vidtv/vidtv_common.chKhjnjubj)}(hhh]h)}(h4Starting position of the **to** buffer to be filled.h](hStarting position of the }(hjhhhNhNubj)}(h**to**h]hto}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh buffer to be filled.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjnjubeh}(h]h ]h"]h$]h&]uh1jjhjhKhjubjk)}(h.``size_t to_size`` Size of the **to** buffer. h](jq)}(h``size_t to_size``h]j )}(hjh]hsize_t to_size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jph/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:511: ./drivers/media/test-drivers/vidtv/vidtv_common.chKhjubj)}(hhh]h)}(hSize of the **to** buffer.h](h Size of the }(hj1hhhNhNubj)}(h**to**h]hto}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1ubh buffer.}(hj1hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj-hKhj.ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jjhj-hKhjubjk)}(hB``const void *from`` Starting element of the buffer to be copied. h](jq)}(h``const void *from``h]j )}(hjch]hconst void *from}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1j hjaubah}(h]h ]h"]h$]h&]uh1jph/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:511: ./drivers/media/test-drivers/vidtv/vidtv_common.chKhj]ubj)}(hhh]h)}(h,Starting element of the buffer to be copied.h]h,Starting element of the buffer to be copied.}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjxhKhjyubah}(h]h ]h"]h$]h&]uh1jhj]ubeh}(h]h ]h"]h$]h&]uh1jjhjxhKhjubjk)}(he``size_t len`` Number of elements to be copy from **from** buffer into **to**+ **to_offset** buffer. h](jq)}(h``size_t len``h]j )}(hjh]h size_t len}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jph/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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh buffer into }(hjhhhNhNubj)}(h**to**+ **to_offset**h]hto**+ **to_offset}(hjύhhhNhNubah}(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&]uh1jjhjhKhjubeh}(h]h ]h"]h$]h&]uh1jehjnubh)}(h**Note**h]j)}(hjh]hNote}(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.chKhjnubj)}(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.}(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.chKhjubah}(h]h ]h"]h$]h&]uh1jhj$hKhjnubh)}(h **Return**h]j)}(hj-h]hReturn}(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.chK"hjnubj)}(h#Returns the number of bytes writtenh]h)}(hjEh]h#Returns the number of bytes written}(hjGhhhNhNubah}(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#hjCubah}(h]h ]h"]h$]h&]uh1jhjThK#hjnubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhjhhhNhNubj)}(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]j%)}(hu32h]hu32}(hj~hhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hj{ubah}(h]h ]h"]h$]h&] refdomainjmreftypej{ reftargetjmodnameN classnameNjj)}j]j)}j{ vidtv_memsetsbc.vidtv_memsetasbuh1hhjwhhh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:511: ./drivers/media/test-drivers/vidtv/vidtv_common.chKJubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjwhhhjhKJubj)}(h vidtv_memseth]j%)}(hjh]h vidtv_memset}(hjhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjubah}(h]h ](j7j8eh"]h$]h&]hhuh1jhjwhhhjhKJubj<)}(hE(void *to, size_t to_offset, size_t to_size, const int c, size_t len)h](jB)}(hvoid *toh](j)}(hvoidh]hvoid}(hj͎hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjɎubj)}(h h]h }(hjێhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjɎubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjɎubj%)}(htoh]hto}(hjhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjɎubeh}(h]h ]h"]h$]h&]noemphhhuh1jAhjŎubjB)}(hsize_t to_offseth](h)}(hhh]j%)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjubah}(h]h ]h"]h$]h&] refdomainjmreftypej{ reftargetjmodnameN classnameNjj)}j]jc.vidtv_memsetasbuh1hhj ubj)}(h h]h }(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj ubj%)}(h to_offseth]h to_offset}(hj>hhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jAhjŎubjB)}(hsize_t to_sizeh](h)}(hhh]j%)}(hsize_th]hsize_t}(hjZhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjWubah}(h]h ]h"]h$]h&] refdomainjmreftypej{ reftargetj\modnameN classnameNjj)}j]jc.vidtv_memsetasbuh1hhjSubj)}(h h]h }(hjxhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjSubj%)}(hto_sizeh]hto_size}(hjhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjSubeh}(h]h ]h"]h$]h&]noemphhhuh1jAhjŎubjB)}(h const int ch](j)}(hjh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjȏhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj%)}(hjmh]hc}(hj֏hhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jAhjŎubjB)}(h size_t lenh](h)}(hhh]j%)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjubah}(h]h ]h"]h$]h&] refdomainjmreftypej{ reftargetjmodnameN classnameNjj)}j]jc.vidtv_memsetasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj%)}(hlenh]hlen}(hjhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jAhjŎubeh}(h]h ]h"]h$]h&]hhuh1j;hjwhhhjhKJubeh}(h]h ]h"]h$]h&]hhjBuh1jjCjDhjshhhjhKJubah}(h]jnah ](jHjIeh"]h$]h&]jMjN)jOhuh1jhjhKJhjphhubjQ)}(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.}(hjGhhhNhNubah}(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.chK8hjDhhubah}(h]h ]h"]h$]h&]uh1jPhjphhhjhKJubeh}(h]h ](jmfunctioneh"]h$]h&]jrjmjsj_jtj_jujvjwuh1jhhhjhNhNubjy)}(hX=**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)}(hjih]h Parameters}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjgubah}(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.chKhjQubj)}(hhh]h)}(hThe value to set the memory to.h]hThe value to set the memory to.}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1hhjlhK>hjmubah}(h]h ]h"]h$]h&]uh1jhjQubeh}(h]h ]h"]h$]h&]uh1jjhjlhK>hjubjk)}(he``size_t len`` Number of elements to be copy from **from** buffer into **to**+ **to_offset** buffer. h](jq)}(h``size_t len``h]j )}(hjh]h size_t len}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jph/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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh buffer into }(hjhhhNhNubj)}(h**to**+ **to_offset**h]hto**+ **to_offset}(hjÑhhhNhNubah}(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&]uh1jjhjhK@hjubeh}(h]h ]h"]h$]h&]uh1jehjcubh)}(h**Note**h]j)}(hjh]hNote}(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.chKBhjcubj)}(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.}(hj hhhNhNubah}(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.chKBhjubah}(h]h ]h"]h$]h&]uh1jhjhKBhjcubh)}(h **Return**h]j)}(hj!h]hReturn}(hj#hhhNhNubah}(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.chKFhjcubj)}(h#Returns the number of bytes writtenh]h)}(hj9h]h#Returns the number of bytes written}(hj;hhhNhNubah}(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.chKGhj7ubah}(h]h ]h"]h$]h&]uh1jhjHhKGhjcubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhjhhhNhNubj)}(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}(hjohhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjkhhh~/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 ]jah"]h$]h&]uh1j hjkhhhj|hKubj)}(hvidtv_tuner_hardware_stateh]j%)}(hjih]hvidtv_tuner_hardware_state}(hjhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjubah}(h]h ](j7j8eh"]h$]h&]hhuh1jhjkhhhj|hKubeh}(h]h ]h"]h$]h&]hhjBuh1jjCjDhjghhhj|hKubah}(h]jbah ](jHjIeh"]h$]h&]jMjN)jOhuh1jhj|hKhjdhhubjQ)}(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&]uh1jPhjdhhhj|hKubeh}(h]h ](jmstructeh"]h$]h&]jrjmjsjɒjtjɒjujvjwuh1jhhhjhNhNubjy)}(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.chKVhj͒ubj)}(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; };}hjsbah}(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.chKXhj͒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:513: ./drivers/media/test-drivers/vidtv/vidtv_tuner.chK`hj͒ubjf)}(hhh](jk)}(hW``asleep`` whether the tuner is asleep, i.e whether _sleep() or _suspend() was called. h](jq)}(h ``asleep``h]j )}(hjh]hasleep}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jph~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:513: ./drivers/media/test-drivers/vidtv/vidtv_tuner.chKUhjubj)}(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.}(hj7hhhNhNubah}(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.chKThj4ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jjhj3hKUhjubjk)}(hR``lock_status`` Whether the tuner has managed to lock on the requested frequency. h](jq)}(h``lock_status``h]j )}(hjXh]h lock_status}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjVubah}(h]h ]h"]h$]h&]uh1jph~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:513: ./drivers/media/test-drivers/vidtv/vidtv_tuner.chKWhjRubj)}(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.}(hjqhhhNhNubah}(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.chKVhjnubah}(h]h ]h"]h$]h&]uh1jhjRubeh}(h]h ]h"]h$]h&]uh1jjhjmhKWhjubjk)}(h_``if_frequency`` The tuner's intermediate frequency. Hardcoded for the purposes of simulation. h](jq)}(h``if_frequency``h]j )}(hjh]h if_frequency}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jph~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:513: ./drivers/media/test-drivers/vidtv/vidtv_tuner.chKYhjubj)}(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&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jjhjhKYhjubjk)}(h0``tuned_frequency`` The actual tuned frequency. h](jq)}(h``tuned_frequency``h]j )}(hj̓h]htuned_frequency}(hjΓhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjʓubah}(h]h ]h"]h$]h&]uh1jph~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:513: ./drivers/media/test-drivers/vidtv/vidtv_tuner.chKZhjƓubj)}(hhh]h)}(hThe actual tuned frequency.h]hThe actual tuned frequency.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKZhjubah}(h]h ]h"]h$]h&]uh1jhjƓubeh}(h]h ]h"]h$]h&]uh1jjhjhKZhjubjk)}(h#``bandwidth`` The actual bandwidth.h](jq)}(h ``bandwidth``h]j )}(hjh]h bandwidth}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jph~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:513: ./drivers/media/test-drivers/vidtv/vidtv_tuner.chKZhjubj)}(hhh]h)}(hThe actual bandwidth.h]hThe actual bandwidth.}(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[hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jjhjhKZhjubeh}(h]h ]h"]h$]h&]uh1jehj͒ubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhjhhhNhNubh)}(h**Description**h]j)}(hjHh]h Description}(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.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.}(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.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}(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.chKbubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjhhhjhKbubj)}(hvidtv_tuner_devh]j%)}(hjh]hvidtv_tuner_dev}(hjhhhNhNubah}(h]h ]j0ah"]h$]h&]uh1j$hjubah}(h]h ](j7j8eh"]h$]h&]hhuh1jhjhhhjhKbubeh}(h]h ]h"]h$]h&]hhjBuh1jjCjDhj~hhhjhKbubah}(h]jyah ](jHjIeh"]h$]h&]jMjN)jOhuh1jhjhKbhj{hhubjQ)}(hhh]h)}(hThe tuner structh]hThe tuner struct}(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.chKhhjŔhhubah}(h]h ]h"]h$]h&]uh1jPhj{hhhjhKbubeh}(h]h ](jmstructeh"]h$]h&]jrjmjsjjtjjujvjwuh1jhhhjhNhNubjy)}(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}(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:513: ./drivers/media/test-drivers/vidtv/vidtv_tuner.chKlhjubj)}(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; };}hjsbah}(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.chKnhjubh)}(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:513: ./drivers/media/test-drivers/vidtv/vidtv_tuner.chKthjubjf)}(hhh](jk)}(hH``fe`` A pointer to the dvb_frontend structure allocated by vidtv_demod h](jq)}(h``fe``h]j )}(hj5h]hfe}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj3ubah}(h]h ]h"]h$]h&]uh1jph~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:513: ./drivers/media/test-drivers/vidtv/vidtv_tuner.chKjhj/ubj)}(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}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJhKjhjKubah}(h]h ]h"]h$]h&]uh1jhj/ubeh}(h]h ]h"]h$]h&]uh1jjhjJhKjhj,ubjk)}(he``hw_state`` A struct to simulate the tuner's hardware state as if we had a physical tuner hardware. h](jq)}(h ``hw_state``h]j )}(hjnh]hhw_state}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1j hjlubah}(h]h ]h"]h$]h&]uh1jph~/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vidtv:513: ./drivers/media/test-drivers/vidtv/vidtv_tuner.chKlhjhubj)}(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.}(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.chKkhjubah}(h]h ]h"]h$]h&]uh1jhjhubeh}(h]h ]h"]h$]h&]uh1jjhjhKlhj,ubjk)}(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](jq)}(h ``config``h]j )}(hjh]hconfig}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jph~/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&]uh1jjhjhKnhj,ubeh}(h]h ]h"]h$]h&]uh1jehjubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhjhhhNhNubeh}(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_handlerjerror_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}1]j0 asrefids}nameids}(jjjjjjjCj@jjj j jnjkjjjn jk jP jM j" j j j j j j j j j jf jc j j@ j1 j. jS jP jjj j j7j4jjjju nametypes}(jjjjCjj jnjjn jP j" j j j j jf j j1 jS jj j7jjuh}(jhjhjjj@jjjFj jjkjejjjk j jM jG j j j j j j% j j j j jc j j: j0 j@ j^ j. j( jP jJ jjq j j j4j jj:jjjjjjjjjdjijjjjjjjjjW#j\#j%j%j'j'jD)jI)j.j.j1j1j5j5j7j7j;j;j=j=j@j@jCj Cj.Ej3EjGjGjIjIjKjKjNjNjQjQjSjSjVjVj$Xj)XjaZjfZj[j[j]j]j_j_j`jajbjbjdjdjafjffjhjhjzjjjjEmjJmj2oj7ojqj$qj sjsjtjtjvjvjoxjtxjyjzj)|j.|jO~jT~jjjԂjقjjj6j;jjjjjojnjsjbjgjyj~u footnote_refs}j\]j0 as citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes]j^ a citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}j*KsRparse_messages]transform_messages] transformerN include_log] decorationNhhub.