sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget7/translations/zh_CN/driver-api/media/drivers/vimc-develmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget7/translations/zh_TW/driver-api/media/drivers/vimc-develmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget7/translations/it_IT/driver-api/media/drivers/vimc-develmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget7/translations/ja_JP/driver-api/media/drivers/vimc-develmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget7/translations/ko_KR/driver-api/media/drivers/vimc-develmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hPortuguese (Brazilian)}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget7/translations/pt_BR/driver-api/media/drivers/vimc-develmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget7/translations/sp_SP/driver-api/media/drivers/vimc-develmodnameN 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:spacepreserveuh1hhhhhhQ/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel.rsthKubhsection)}(hhh](htitle)}(h*The Virtual Media Controller Driver (vimc)h]h*The Virtual Media Controller Driver (vimc)}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hSource code documentationh]hSource code documentation}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h vimc-streamerh]h vimc-streamer}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhK ubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](singlevimc_stream (C struct) c.vimc_streamhNtauh1hhhhhh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:12: ./drivers/media/test-drivers/vimc/vimc-streamer.hhNubhdesc)}(hhh](hdesc_signature)}(h vimc_streamh]hdesc_signature_line)}(hstruct vimc_streamh](hdesc_sig_keyword)}(hstructh]hstruct}(hj$hhhNhNubah}(h]h ]kah"]h$]h&]uh1j"hjhhh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:12: ./drivers/media/test-drivers/vimc/vimc-streamer.hhKubhdesc_sig_space)}(h h]h }(hj6hhhNhNubah}(h]h ]wah"]h$]h&]uh1j4hjhhhj3hKubh desc_name)}(h vimc_streamh]h desc_sig_name)}(hjh]h vimc_stream}(hjMhhhNhNubah}(h]h ]nah"]h$]h&]uh1jKhjGubah}(h]h ](sig-namedescnameeh"]h$]h&]hhuh1jEhjhhhj3hKubeh}(h]h ]h"]h$]h&]hhƌ add_permalinkuh1jsphinx_line_type declaratorhjhhhj3hKubah}(h]jah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1jhj3hKhjhhubh desc_content)}(hhh]h paragraph)}(h/struct that represents a stream in the pipelineh]h/struct that represents a stream in the pipeline}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1j|h/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:12: ./drivers/media/test-drivers/vimc/vimc-streamer.hhKhjyhhubah}(h]h ]h"]h$]h&]uh1jwhjhhhj3hKubeh}(h]h ](cstructeh"]h$]h&]domainjobjtypejdesctypejnoindex noindexentrynocontentsentryuh1jhhhhhjhNubh container)}(hX**Definition**:: struct vimc_stream { struct media_pipeline pipe; struct vimc_ent_device *ved_pipeline[VIMC_STREAMER_PIPELINE_MAX_SIZE]; unsigned int pipe_size; struct task_struct *kthread; }; **Members** ``pipe`` the media pipeline object associated with this stream ``ved_pipeline`` array containing all the entities participating in the stream. The order is from a video device (usually a capture device) where stream_on was called, to the entity generating the first base image to be processed in the pipeline. ``pipe_size`` size of **ved_pipeline** ``kthread`` thread that generates the frames of the stream.h](j})}(h**Definition**::h](hstrong)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j|h/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:12: ./drivers/media/test-drivers/vimc/vimc-streamer.hhKhjubh literal_block)}(hstruct vimc_stream { struct media_pipeline pipe; struct vimc_ent_device *ved_pipeline[VIMC_STREAMER_PIPELINE_MAX_SIZE]; unsigned int pipe_size; struct task_struct *kthread; };h]hstruct vimc_stream { struct media_pipeline pipe; struct vimc_ent_device *ved_pipeline[VIMC_STREAMER_PIPELINE_MAX_SIZE]; unsigned int pipe_size; struct task_struct *kthread; };}hjsbah}(h]h ]h"]h$]h&]hhuh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:12: ./drivers/media/test-drivers/vimc/vimc-streamer.hhKhjubj})}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j|h/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:12: ./drivers/media/test-drivers/vimc/vimc-streamer.hhK hjubhdefinition_list)}(hhh](hdefinition_list_item)}(h?``pipe`` the media pipeline object associated with this stream h](hterm)}(h``pipe``h]hliteral)}(hjh]hpipe}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:12: ./drivers/media/test-drivers/vimc/vimc-streamer.hhKhjubh definition)}(hhh]j})}(h5the media pipeline object associated with this streamh]h5the media pipeline object associated with this stream}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j|hjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h``ved_pipeline`` array containing all the entities participating in the stream. The order is from a video device (usually a capture device) where stream_on was called, to the entity generating the first base image to be processed in the pipeline. h](j)}(h``ved_pipeline``h]j)}(hj;h]h ved_pipeline}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:12: ./drivers/media/test-drivers/vimc/vimc-streamer.hhKhj5ubj)}(hhh]j})}(harray containing all the entities participating in the stream. The order is from a video device (usually a capture device) where stream_on was called, to the entity generating the first base image to be processed in the pipeline.h]harray containing all the entities participating in the stream. The order is from a video device (usually a capture device) where stream_on was called, to the entity generating the first base image to be processed in the pipeline.}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1j|h/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:12: ./drivers/media/test-drivers/vimc/vimc-streamer.hhKhjQubah}(h]h ]h"]h$]h&]uh1jhj5ubeh}(h]h ]h"]h$]h&]uh1jhjPhKhjubj)}(h'``pipe_size`` size of **ved_pipeline** h](j)}(h ``pipe_size``h]j)}(hjuh]h pipe_size}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjsubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:12: ./drivers/media/test-drivers/vimc/vimc-streamer.hhKhjoubj)}(hhh]j})}(hsize of **ved_pipeline**h](hsize of }(hjhhhNhNubj)}(h**ved_pipeline**h]h ved_pipeline}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j|hjhKhjubah}(h]h ]h"]h$]h&]uh1jhjoubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h;``kthread`` thread that generates the frames of the stream.h](j)}(h ``kthread``h]j)}(hjh]hkthread}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:12: ./drivers/media/test-drivers/vimc/vimc-streamer.hhKhjubj)}(hhh]j})}(h/thread that generates the frames of the stream.h]h/thread that generates the frames of the stream.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j|h/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:12: ./drivers/media/test-drivers/vimc/vimc-streamer.hhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhjhNubj})}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j|h/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:12: ./drivers/media/test-drivers/vimc/vimc-streamer.hhK hhhhubj})}(hWhen the user call stream_on in a video device, struct vimc_stream is used to keep track of all entities and subdevices that generates and process frames for the stream.h]hWhen the user call stream_on in a video device, struct vimc_stream is used to keep track of all entities and subdevices that generates and process frames for the stream.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j|h/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:12: ./drivers/media/test-drivers/vimc/vimc-streamer.hhKhhhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j #vimc_get_source_entity (C function)c.vimc_get_source_entityhNtauh1hhhhhhNhNubj)}(hhh](j)}(hGstruct media_entity * vimc_get_source_entity (struct media_entity *ent)h]j)}(hEstruct media_entity *vimc_get_source_entity(struct media_entity *ent)h](j#)}(hj&h]hstruct}(hj=hhhNhNubah}(h]h ]j/ah"]h$]h&]uh1j"hj9hhh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:15: ./drivers/media/test-drivers/vimc/vimc-streamer.chKubj5)}(h h]h }(hjKhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj9hhhjJhKubh)}(hhh]jL)}(h media_entityh]h media_entity}(hj\hhhNhNubah}(h]h ]jWah"]h$]h&]uh1jKhjYubah}(h]h ]h"]h$]h&] refdomainjreftype identifier reftargetj^modnameN classnameN c:parent_keysphinx.domains.c LookupKey)}data]jw ASTIdentifier)}jrvimc_get_source_entitysbc.vimc_get_source_entityasbuh1hhj9hhhjJhKubj5)}(h h]h }(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj9hhhjJhKubhdesc_sig_punctuation)}(h*h]h*}(hjhhhNhNubah}(h]h ]pah"]h$]h&]uh1jhj9hhhjJhKubjF)}(hvimc_get_source_entityh]jL)}(hjh]hvimc_get_source_entity}(hjhhhNhNubah}(h]h ]jWah"]h$]h&]uh1jKhjubah}(h]h ](j^j_eh"]h$]h&]hhuh1jEhj9hhhjJhKubhdesc_parameterlist)}(h(struct media_entity *ent)h]hdesc_parameter)}(hstruct media_entity *enth](j#)}(hj&h]hstruct}(hjhhhNhNubah}(h]h ]j/ah"]h$]h&]uh1j"hjubj5)}(h h]h }(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubh)}(hhh]jL)}(h media_entityh]h media_entity}(hjhhhNhNubah}(h]h ]jWah"]h$]h&]uh1jKhjubah}(h]h ]h"]h$]h&] refdomainjreftypejr reftargetjmodnameN classnameNjvjy)}j|]jc.vimc_get_source_entityasbuh1hhjubj5)}(h h]h }(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjL)}(henth]hent}(hjhhhNhNubah}(h]h ]jWah"]h$]h&]uh1jKhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhj9hhhjJhKubeh}(h]h ]h"]h$]h&]hhjiuh1jjjjkhj5hhhjJhKubah}(h]j0ah ](jojpeh"]h$]h&]jtju)jvhuh1jhjJhKhj2hhubjx)}(hhh]j})}(h0get the entity connected with the first sink padh]h0get the entity connected with the first sink pad}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1j|h/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:15: ./drivers/media/test-drivers/vimc/vimc-streamer.chKhjEhhubah}(h]h ]h"]h$]h&]uh1jwhj2hhhjJhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj`jj`jjjuh1jhhhhhNhNubj)}(hX**Parameters** ``struct media_entity *ent`` reference media_entity **Description** Helper function that returns the media entity containing the source pad linked with the first sink pad from the given media entity pad list. **Return** The source pad or NULL, if it wasn't found.h](j})}(h**Parameters**h]j)}(hjjh]h Parameters}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhubah}(h]h ]h"]h$]h&]uh1j|h/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:15: ./drivers/media/test-drivers/vimc/vimc-streamer.chKhjdubj)}(hhh]j)}(h4``struct media_entity *ent`` reference media_entity h](j)}(h``struct media_entity *ent``h]j)}(hjh]hstruct media_entity *ent}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:15: ./drivers/media/test-drivers/vimc/vimc-streamer.chKhjubj)}(hhh]j})}(hreference media_entityh]hreference media_entity}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j|hjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjdubj})}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j|h/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:15: ./drivers/media/test-drivers/vimc/vimc-streamer.chKhjdubj})}(hHelper function that returns the media entity containing the source pad linked with the first sink pad from the given media entity pad list.h]hHelper function that returns the media entity containing the source pad linked with the first sink pad from the given media entity pad list.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j|h/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:15: ./drivers/media/test-drivers/vimc/vimc-streamer.chKhjdubj})}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j|h/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:15: ./drivers/media/test-drivers/vimc/vimc-streamer.chKhjdubj})}(h+The source pad or NULL, if it wasn't found.h]h-The source pad or NULL, if it wasn’t found.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j|h/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:15: ./drivers/media/test-drivers/vimc/vimc-streamer.chKhjdubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j -vimc_streamer_pipeline_terminate (C function)"c.vimc_streamer_pipeline_terminatehNtauh1hhhhhhNhNubj)}(hhh](j)}(hBvoid vimc_streamer_pipeline_terminate (struct vimc_stream *stream)h]j)}(hAvoid vimc_streamer_pipeline_terminate(struct vimc_stream *stream)h](hdesc_sig_keyword_type)}(hvoidh]hvoid}(hj2hhhNhNubah}(h]h ]ktah"]h$]h&]uh1j0hj,hhh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:15: ./drivers/media/test-drivers/vimc/vimc-streamer.chK(ubj5)}(h h]h }(hjBhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj,hhhjAhK(ubjF)}(h vimc_streamer_pipeline_terminateh]jL)}(h vimc_streamer_pipeline_terminateh]h vimc_streamer_pipeline_terminate}(hjThhhNhNubah}(h]h ]jWah"]h$]h&]uh1jKhjPubah}(h]h ](j^j_eh"]h$]h&]hhuh1jEhj,hhhjAhK(ubj)}(h(struct vimc_stream *stream)h]j)}(hstruct vimc_stream *streamh](j#)}(hj&h]hstruct}(hjphhhNhNubah}(h]h ]j/ah"]h$]h&]uh1j"hjlubj5)}(h h]h }(hj}hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjlubh)}(hhh]jL)}(h vimc_streamh]h vimc_stream}(hjhhhNhNubah}(h]h ]jWah"]h$]h&]uh1jKhjubah}(h]h ]h"]h$]h&] refdomainjreftypejr reftargetjmodnameN classnameNjvjy)}j|]j)}jrjVsb"c.vimc_streamer_pipeline_terminateasbuh1hhjlubj5)}(h h]h }(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjlubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjlubjL)}(hstreamh]hstream}(hjhhhNhNubah}(h]h ]jWah"]h$]h&]uh1jKhjlubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjhubah}(h]h ]h"]h$]h&]hhuh1jhj,hhhjAhK(ubeh}(h]h ]h"]h$]h&]hhjiuh1jjjjkhj(hhhjAhK(ubah}(h]j#ah ](jojpeh"]h$]h&]jtju)jvhuh1jhjAhK(hj%hhubjx)}(hhh]j})}(h#Disable stream in all ved in streamh]h#Disable stream in all ved in stream}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j|h/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:15: ./drivers/media/test-drivers/vimc/vimc-streamer.chK(hjhhubah}(h]h ]h"]h$]h&]uh1jwhj%hhhjAhK(ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj jj jjjuh1jhhhhhNhNubj)}(h**Parameters** ``struct vimc_stream *stream`` the pointer to the stream structure with the pipeline to be disabled. **Description** Calls s_stream to disable the stream in each entity of the pipelineh](j})}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j|h/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:15: ./drivers/media/test-drivers/vimc/vimc-streamer.chK,hjubj)}(hhh]j)}(he``struct vimc_stream *stream`` the pointer to the stream structure with the pipeline to be disabled. h](j)}(h``struct vimc_stream *stream``h]j)}(hj4h]hstruct vimc_stream *stream}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:15: ./drivers/media/test-drivers/vimc/vimc-streamer.chK+hj.ubj)}(hhh]j})}(hEthe pointer to the stream structure with the pipeline to be disabled.h]hEthe pointer to the stream structure with the pipeline to be disabled.}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1j|h/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:15: ./drivers/media/test-drivers/vimc/vimc-streamer.chK*hjJubah}(h]h ]h"]h$]h&]uh1jhj.ubeh}(h]h ]h"]h$]h&]uh1jhjIhK+hj+ubah}(h]h ]h"]h$]h&]uh1jhjubj})}(h**Description**h]j)}(hjph]h Description}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjnubah}(h]h ]h"]h$]h&]uh1j|h/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:15: ./drivers/media/test-drivers/vimc/vimc-streamer.chK-hjubj})}(hCCalls s_stream to disable the stream in each entity of the pipelineh]hCCalls s_stream to disable the stream in each entity of the pipeline}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j|h/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:15: ./drivers/media/test-drivers/vimc/vimc-streamer.chK,hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j (vimc_streamer_pipeline_init (C function)c.vimc_streamer_pipeline_inithNtauh1hhhhhhNhNubj)}(hhh](j)}(hYint vimc_streamer_pipeline_init (struct vimc_stream *stream, struct vimc_ent_device *ved)h]j)}(hXint vimc_streamer_pipeline_init(struct vimc_stream *stream, struct vimc_ent_device *ved)h](j1)}(hinth]hint}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:15: ./drivers/media/test-drivers/vimc/vimc-streamer.chKIubj5)}(h h]h }(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjhhhjhKIubjF)}(hvimc_streamer_pipeline_inith]jL)}(hvimc_streamer_pipeline_inith]hvimc_streamer_pipeline_init}(hjhhhNhNubah}(h]h ]jWah"]h$]h&]uh1jKhjubah}(h]h ](j^j_eh"]h$]h&]hhuh1jEhjhhhjhKIubj)}(h9(struct vimc_stream *stream, struct vimc_ent_device *ved)h](j)}(hstruct vimc_stream *streamh](j#)}(hj&h]hstruct}(hjhhhNhNubah}(h]h ]j/ah"]h$]h&]uh1j"hjubj5)}(h h]h }(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubh)}(hhh]jL)}(h vimc_streamh]h vimc_stream}(hjhhhNhNubah}(h]h ]jWah"]h$]h&]uh1jKhj ubah}(h]h ]h"]h$]h&] refdomainjreftypejr reftargetjmodnameN classnameNjvjy)}j|]j)}jrjsbc.vimc_streamer_pipeline_initasbuh1hhjubj5)}(h h]h }(hj0hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubj)}(hjh]h*}(hj>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjL)}(hstreamh]hstream}(hjKhhhNhNubah}(h]h ]jWah"]h$]h&]uh1jKhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hstruct vimc_ent_device *vedh](j#)}(hj&h]hstruct}(hjdhhhNhNubah}(h]h ]j/ah"]h$]h&]uh1j"hj`ubj5)}(h h]h }(hjqhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj`ubh)}(hhh]jL)}(hvimc_ent_deviceh]hvimc_ent_device}(hjhhhNhNubah}(h]h ]jWah"]h$]h&]uh1jKhjubah}(h]h ]h"]h$]h&] refdomainjreftypejr reftargetjmodnameN classnameNjvjy)}j|]j,c.vimc_streamer_pipeline_initasbuh1hhj`ubj5)}(h h]h }(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj`ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`ubjL)}(hvedh]hved}(hjhhhNhNubah}(h]h ]jWah"]h$]h&]uh1jKhj`ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKIubeh}(h]h ]h"]h$]h&]hhjiuh1jjjjkhjhhhjhKIubah}(h]jah ](jojpeh"]h$]h&]jtju)jvhuh1jhjhKIhjhhubjx)}(hhh]j})}(h Initializes the stream structureh]h Initializes the stream structure}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j|h/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:15: ./drivers/media/test-drivers/vimc/vimc-streamer.chKIhjhhubah}(h]h ]h"]h$]h&]uh1jwhjhhhjhKIubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhhhNhNubj)}(hX**Parameters** ``struct vimc_stream *stream`` the pointer to the stream structure to be initialized ``struct vimc_ent_device *ved`` the pointer to the vimc entity initializing the stream **Description** Initializes the stream structure. Walks through the entity graph to construct the pipeline used later on the streamer thread. Calls vimc_streamer_s_stream() to enable stream in all entities of the pipeline. **Return** 0 if success, error code otherwise.h](j})}(h**Parameters**h]j)}(hjh]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j|h/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:15: ./drivers/media/test-drivers/vimc/vimc-streamer.chKMhjubj)}(hhh](j)}(hU``struct vimc_stream *stream`` the pointer to the stream structure to be initialized h](j)}(h``struct vimc_stream *stream``h]j)}(hj&h]hstruct vimc_stream *stream}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:15: ./drivers/media/test-drivers/vimc/vimc-streamer.chKKhj ubj)}(hhh]j})}(h5the pointer to the stream structure to be initializedh]h5the pointer to the stream structure to be initialized}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1j|hj;hKKhj<ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj;hKKhjubj)}(hW``struct vimc_ent_device *ved`` the pointer to the vimc entity initializing the stream h](j)}(h``struct vimc_ent_device *ved``h]j)}(hj_h]hstruct vimc_ent_device *ved}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:15: ./drivers/media/test-drivers/vimc/vimc-streamer.chKLhjYubj)}(hhh]j})}(h6the pointer to the vimc entity initializing the streamh]h6the pointer to the vimc entity initializing the stream}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1j|hjthKLhjuubah}(h]h ]h"]h$]h&]uh1jhjYubeh}(h]h ]h"]h$]h&]uh1jhjthKLhjubeh}(h]h ]h"]h$]h&]uh1jhjubj})}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j|h/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:15: ./drivers/media/test-drivers/vimc/vimc-streamer.chKNhjubj})}(hInitializes the stream structure. Walks through the entity graph to construct the pipeline used later on the streamer thread. Calls vimc_streamer_s_stream() to enable stream in all entities of the pipeline.h]hInitializes the stream structure. Walks through the entity graph to construct the pipeline used later on the streamer thread. Calls vimc_streamer_s_stream() to enable stream in all entities of the pipeline.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j|h/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:15: ./drivers/media/test-drivers/vimc/vimc-streamer.chKMhjubj})}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j|h/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:15: ./drivers/media/test-drivers/vimc/vimc-streamer.chKRhjubj})}(h#0 if success, error code otherwise.h]h#0 if success, error code otherwise.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j|h/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:15: ./drivers/media/test-drivers/vimc/vimc-streamer.chKShjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j %vimc_streamer_get_sensor (C function)c.vimc_streamer_get_sensorhNtauh1hhhhhhNhNubj)}(hhh](j)}(hQstruct vimc_sensor_device * vimc_streamer_get_sensor (struct vimc_stream *stream)h]j)}(hOstruct vimc_sensor_device *vimc_streamer_get_sensor(struct vimc_stream *stream)h](j#)}(hj&h]hstruct}(hj hhhNhNubah}(h]h ]j/ah"]h$]h&]uh1j"hj hhh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:15: ./drivers/media/test-drivers/vimc/vimc-streamer.chKubj5)}(h h]h }(hj hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj hhhj hKubh)}(hhh]jL)}(hvimc_sensor_deviceh]hvimc_sensor_device}(hj% hhhNhNubah}(h]h ]jWah"]h$]h&]uh1jKhj" ubah}(h]h ]h"]h$]h&] refdomainjreftypejr reftargetj' modnameN classnameNjvjy)}j|]j)}jrvimc_streamer_get_sensorsbc.vimc_streamer_get_sensorasbuh1hhj hhhj hKubj5)}(h h]h }(hjF hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj hhhj hKubj)}(hjh]h*}(hjT hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhj hKubjF)}(hvimc_streamer_get_sensorh]jL)}(hjC h]hvimc_streamer_get_sensor}(hje hhhNhNubah}(h]h ]jWah"]h$]h&]uh1jKhja ubah}(h]h ](j^j_eh"]h$]h&]hhuh1jEhj hhhj hKubj)}(h(struct vimc_stream *stream)h]j)}(hstruct vimc_stream *streamh](j#)}(hj&h]hstruct}(hj hhhNhNubah}(h]h ]j/ah"]h$]h&]uh1j"hj| ubj5)}(h h]h }(hj hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj| ubh)}(hhh]jL)}(h vimc_streamh]h vimc_stream}(hj hhhNhNubah}(h]h ]jWah"]h$]h&]uh1jKhj ubah}(h]h ]h"]h$]h&] refdomainjreftypejr reftargetj modnameN classnameNjvjy)}j|]jA c.vimc_streamer_get_sensorasbuh1hhj| ubj5)}(h h]h }(hj hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj| ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj| ubjL)}(hstreamh]hstream}(hj hhhNhNubah}(h]h ]jWah"]h$]h&]uh1jKhj| ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjx ubah}(h]h ]h"]h$]h&]hhuh1jhj hhhj hKubeh}(h]h ]h"]h$]h&]hhjiuh1jjjjkhjhhhj hKubah}(h]jah ](jojpeh"]h$]h&]jtju)jvhuh1jhj hKhjhhubjx)}(hhh]j})}(hGet sensor from pipelineh]hGet sensor from pipeline}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j|h/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:15: ./drivers/media/test-drivers/vimc/vimc-streamer.chKhj hhubah}(h]h ]h"]h$]h&]uh1jwhjhhhj hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj jj jjjuh1jhhhhhNhNubj)}(h**Parameters** ``struct vimc_stream *stream`` the pipeline **Description** Helper function to find the sensor device in the pipeline. Returns pointer to sensor device or NULL if not found.h](j})}(h**Parameters**h]j)}(hj# h]h Parameters}(hj% hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj! ubah}(h]h ]h"]h$]h&]uh1j|h/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:15: ./drivers/media/test-drivers/vimc/vimc-streamer.chKhj ubj)}(hhh]j)}(h,``struct vimc_stream *stream`` the pipeline h](j)}(h``struct vimc_stream *stream``h]j)}(hjB h]hstruct vimc_stream *stream}(hjD hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj@ ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:15: ./drivers/media/test-drivers/vimc/vimc-streamer.chKhj< ubj)}(hhh]j})}(h the pipelineh]h the pipeline}(hj[ hhhNhNubah}(h]h ]h"]h$]h&]uh1j|hjW hKhjX ubah}(h]h ]h"]h$]h&]uh1jhj< ubeh}(h]h ]h"]h$]h&]uh1jhjW hKhj9 ubah}(h]h ]h"]h$]h&]uh1jhj ubj})}(h**Description**h]j)}(hj} h]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj{ ubah}(h]h ]h"]h$]h&]uh1j|h/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:15: ./drivers/media/test-drivers/vimc/vimc-streamer.chKhj ubj})}(hqHelper function to find the sensor device in the pipeline. Returns pointer to sensor device or NULL if not found.h]hqHelper function to find the sensor device in the pipeline. Returns pointer to sensor device or NULL if not found.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j|h/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:15: ./drivers/media/test-drivers/vimc/vimc-streamer.chKhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j !vimc_streamer_thread (C function)c.vimc_streamer_threadhNtauh1hhhhhhNhNubj)}(hhh](j)}(h%int vimc_streamer_thread (void *data)h]j)}(h$int vimc_streamer_thread(void *data)h](j1)}(hinth]hint}(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj hhh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:15: ./drivers/media/test-drivers/vimc/vimc-streamer.chKubj5)}(h h]h }(hj hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj hhhj hKubjF)}(hvimc_streamer_threadh]jL)}(hvimc_streamer_threadh]hvimc_streamer_thread}(hj hhhNhNubah}(h]h ]jWah"]h$]h&]uh1jKhj ubah}(h]h ](j^j_eh"]h$]h&]hhuh1jEhj hhhj hKubj)}(h (void *data)h]j)}(h void *datah](j1)}(hvoidh]hvoid}(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubj5)}(h h]h }(hj hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubjL)}(hdatah]hdata}(hj( hhhNhNubah}(h]h ]jWah"]h$]h&]uh1jKhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubah}(h]h ]h"]h$]h&]hhuh1jhj hhhj hKubeh}(h]h ]h"]h$]h&]hhjiuh1jjjjkhj hhhj hKubah}(h]j ah ](jojpeh"]h$]h&]jtju)jvhuh1jhj hKhj hhubjx)}(hhh]j})}(h#Process frames through the pipelineh]h#Process frames through the pipeline}(hjR hhhNhNubah}(h]h ]h"]h$]h&]uh1j|h/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:15: ./drivers/media/test-drivers/vimc/vimc-streamer.chKhjO hhubah}(h]h ]h"]h$]h&]uh1jwhj hhhj hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjj jjj jjjuh1jhhhhhNhNubj)}(hX6**Parameters** ``void *data`` vimc_stream struct of the current stream **Description** From the source to the sink, gets a frame from each subdevice and send to the next one of the pipeline at a fixed framerate. **Return** Always zero (created as ``int`` instead of ``void`` to comply with kthread API).h](j})}(h**Parameters**h]j)}(hjt h]h Parameters}(hjv hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjr ubah}(h]h ]h"]h$]h&]uh1j|h/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:15: ./drivers/media/test-drivers/vimc/vimc-streamer.chKhjn ubj)}(hhh]j)}(h8``void *data`` vimc_stream struct of the current stream h](j)}(h``void *data``h]j)}(hj h]h void *data}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:15: ./drivers/media/test-drivers/vimc/vimc-streamer.chKhj ubj)}(hhh]j})}(h(vimc_stream struct of the current streamh]h(vimc_stream struct of the current stream}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j|hj hKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hKhj ubah}(h]h ]h"]h$]h&]uh1jhjn ubj})}(h**Description**h]j)}(hj h]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1j|h/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:15: ./drivers/media/test-drivers/vimc/vimc-streamer.chKhjn ubj})}(h|From the source to the sink, gets a frame from each subdevice and send to the next one of the pipeline at a fixed framerate.h]h|From the source to the sink, gets a frame from each subdevice and send to the next one of the pipeline at a fixed framerate.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j|h/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:15: ./drivers/media/test-drivers/vimc/vimc-streamer.chKhjn ubj})}(h **Return**h]j)}(hj h]hReturn}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1j|h/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:15: ./drivers/media/test-drivers/vimc/vimc-streamer.chKhjn ubj})}(hPAlways zero (created as ``int`` instead of ``void`` to comply with kthread API).h](hAlways zero (created as }(hj hhhNhNubj)}(h``int``h]hint}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh instead of }(hj hhhNhNubj)}(h``void``h]hvoid}(hj% hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh to comply with kthread API).}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1j|h/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:15: ./drivers/media/test-drivers/vimc/vimc-streamer.chKhjn ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j #vimc_streamer_s_stream (C function)c.vimc_streamer_s_streamhNtauh1hhhhhhNhNubj)}(hhh](j)}(h`int vimc_streamer_s_stream (struct vimc_stream *stream, struct vimc_ent_device *ved, int enable)h]j)}(h_int vimc_streamer_s_stream(struct vimc_stream *stream, struct vimc_ent_device *ved, int enable)h](j1)}(hinth]hint}(hj^ hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjZ hhh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:15: ./drivers/media/test-drivers/vimc/vimc-streamer.chKubj5)}(h h]h }(hjm hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjZ hhhjl hKubjF)}(hvimc_streamer_s_streamh]jL)}(hvimc_streamer_s_streamh]hvimc_streamer_s_stream}(hj hhhNhNubah}(h]h ]jWah"]h$]h&]uh1jKhj{ ubah}(h]h ](j^j_eh"]h$]h&]hhuh1jEhjZ hhhjl hKubj)}(hE(struct vimc_stream *stream, struct vimc_ent_device *ved, int enable)h](j)}(hstruct vimc_stream *streamh](j#)}(hj&h]hstruct}(hj hhhNhNubah}(h]h ]j/ah"]h$]h&]uh1j"hj ubj5)}(h h]h }(hj hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj ubh)}(hhh]jL)}(h vimc_streamh]h vimc_stream}(hj hhhNhNubah}(h]h ]jWah"]h$]h&]uh1jKhj ubah}(h]h ]h"]h$]h&] refdomainjreftypejr reftargetj modnameN classnameNjvjy)}j|]j)}jrj sbc.vimc_streamer_s_streamasbuh1hhj ubj5)}(h h]h }(hj hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubjL)}(hstreamh]hstream}(hj hhhNhNubah}(h]h ]jWah"]h$]h&]uh1jKhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubj)}(hstruct vimc_ent_device *vedh](j#)}(hj&h]hstruct}(hj hhhNhNubah}(h]h ]j/ah"]h$]h&]uh1j"hj ubj5)}(h h]h }(hj hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj ubh)}(hhh]jL)}(hvimc_ent_deviceh]hvimc_ent_device}(hj+ hhhNhNubah}(h]h ]jWah"]h$]h&]uh1jKhj( ubah}(h]h ]h"]h$]h&] refdomainjreftypejr reftargetj- modnameN classnameNjvjy)}j|]j c.vimc_streamer_s_streamasbuh1hhj ubj5)}(h h]h }(hjI hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj ubj)}(hjh]h*}(hjW hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubjL)}(hvedh]hved}(hjd hhhNhNubah}(h]h ]jWah"]h$]h&]uh1jKhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubj)}(h int enableh](j1)}(hinth]hint}(hj} hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjy ubj5)}(h h]h }(hj hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjy ubjL)}(henableh]henable}(hj hhhNhNubah}(h]h ]jWah"]h$]h&]uh1jKhjy ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubeh}(h]h ]h"]h$]h&]hhuh1jhjZ hhhjl hKubeh}(h]h ]h"]h$]h&]hhjiuh1jjjjkhjV hhhjl hKubah}(h]jQ ah ](jojpeh"]h$]h&]jtju)jvhuh1jhjl hKhjS hhubjx)}(hhh]j})}(h.Start/stop the streaming on the media pipelineh]h.Start/stop the streaming on the media pipeline}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j|h/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:15: ./drivers/media/test-drivers/vimc/vimc-streamer.chKhj hhubah}(h]h ]h"]h$]h&]uh1jwhjS hhhjl hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj jj jjjuh1jhhhhhNhNubj)}(hX**Parameters** ``struct vimc_stream *stream`` the pointer to the stream structure of the current stream ``struct vimc_ent_device *ved`` pointer to the vimc entity of the entity of the stream ``int enable`` flag to determine if stream should start/stop **Description** When starting, check if there is no ``stream->kthread`` allocated. This should indicate that a stream is already running. Then, it initializes the pipeline, creates and runs a kthread to consume buffers through the pipeline. When stopping, analogously check if there is a stream running, stop the thread and terminates the pipeline. **Return** 0 if success, error code otherwise.h](j})}(h**Parameters**h]j)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1j|h/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:15: ./drivers/media/test-drivers/vimc/vimc-streamer.chKhj ubj)}(hhh](j)}(hY``struct vimc_stream *stream`` the pointer to the stream structure of the current stream h](j)}(h``struct vimc_stream *stream``h]j)}(hjh]hstruct vimc_stream *stream}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:15: ./drivers/media/test-drivers/vimc/vimc-streamer.chKhj ubj)}(hhh]j})}(h9the pointer to the stream structure of the current streamh]h9the pointer to the stream structure of the current stream}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j|hjhKhjubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhjhKhj ubj)}(hW``struct vimc_ent_device *ved`` pointer to the vimc entity of the entity of the stream h](j)}(h``struct vimc_ent_device *ved``h]j)}(hj=h]hstruct vimc_ent_device *ved}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:15: ./drivers/media/test-drivers/vimc/vimc-streamer.chKhj7ubj)}(hhh]j})}(h6pointer to the vimc entity of the entity of the streamh]h6pointer to the vimc entity of the entity of the stream}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1j|hjRhKhjSubah}(h]h ]h"]h$]h&]uh1jhj7ubeh}(h]h ]h"]h$]h&]uh1jhjRhKhj ubj)}(h=``int enable`` flag to determine if stream should start/stop h](j)}(h``int enable``h]j)}(hjvh]h int enable}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:15: ./drivers/media/test-drivers/vimc/vimc-streamer.chKhjpubj)}(hhh]j})}(h-flag to determine if stream should start/stoph]h-flag to determine if stream should start/stop}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j|hjhKhjubah}(h]h ]h"]h$]h&]uh1jhjpubeh}(h]h ]h"]h$]h&]uh1jhjhKhj ubeh}(h]h ]h"]h$]h&]uh1jhj ubj})}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j|h/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:15: ./drivers/media/test-drivers/vimc/vimc-streamer.chKhj ubj})}(hXLWhen starting, check if there is no ``stream->kthread`` allocated. This should indicate that a stream is already running. Then, it initializes the pipeline, creates and runs a kthread to consume buffers through the pipeline. When stopping, analogously check if there is a stream running, stop the thread and terminates the pipeline.h](h$When starting, check if there is no }(hjhhhNhNubj)}(h``stream->kthread``h]hstream->kthread}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhX allocated. This should indicate that a stream is already running. Then, it initializes the pipeline, creates and runs a kthread to consume buffers through the pipeline. When stopping, analogously check if there is a stream running, stop the thread and terminates the pipeline.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j|h/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:15: ./drivers/media/test-drivers/vimc/vimc-streamer.chKhj ubj})}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j|h/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:15: ./drivers/media/test-drivers/vimc/vimc-streamer.chKhj ubj})}(h#0 if success, error code otherwise.h]h#0 if success, error code otherwise.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j|h/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/vimc-devel:15: ./drivers/media/test-drivers/vimc/vimc-streamer.chKhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubeh}(h] vimc-streamerah ]h"] vimc-streamerah$]h&]uh1hhhhhhhhK ubeh}(h]source-code-documentationah ]h"]source code documentationah$]h&]uh1hhhhhhhhKubeh}(h](the-virtual-media-controller-driver-vimcah ]h"]*the virtual media controller driver (vimc)ah$]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_handlerjQerror_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourcehnj _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(j+j(j#j jju nametypes}(j+j#juh}(j(hj hjhjjj0j5j#j(jjjjj j jQ jV u footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log] decorationNhhub.