€•…aŒsphinx.addnodes”Œdocument”“”)�”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)�”}”(hhh]”(hŒ pending_xref”“”)�”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…”�”}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ*/translations/zh_CN/admin-guide/media/visl”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ*/translations/zh_TW/admin-guide/media/visl”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ*/translations/it_IT/admin-guide/media/visl”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ*/translations/ja_JP/admin-guide/media/visl”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ*/translations/ko_KR/admin-guide/media/visl”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ*/translations/pt_BR/admin-guide/media/visl”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ*/translations/sp_SP/admin-guide/media/visl”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)�”}”(hŒ SPDX-License-Identifier: GPL-2.0”h]”hŒ SPDX-License-Identifier: GPL-2.0”…”�”}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³ŒD/var/lib/git/docbuild/linux/Documentation/admin-guide/media/visl.rst”h´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒ+The Virtual Stateless Decoder Driver (visl)”h]”hŒ+The Virtual Stateless Decoder Driver (visl)”…”�”}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´KubhŒ paragraph”“”)�”}”(hŒKA virtual stateless decoder device for stateless uAPI development purposes.”h]”hŒKA virtual stateless decoder device for stateless uAPI development purposes.”…”�”}”(hhßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhhÊh²hubhÞ)�”}”(hŒ‡This tool's objective is to help the development and testing of userspace applications that use the V4L2 stateless API to decode media.”h]”hŒ‰This tool’s objective is to help the development and testing of userspace applications that use the V4L2 stateless API to decode media.”…”�”}”(hhíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K hhÊh²hubhÞ)�”}”(hŒÌA userspace implementation can use visl to run a decoding loop even when no hardware is available or when the kernel uAPI for the codec has not been upstreamed yet. This can reveal bugs at an early stage.”h]”hŒÌA userspace implementation can use visl to run a decoding loop even when no hardware is available or when the kernel uAPI for the codec has not been upstreamed yet. This can reveal bugs at an early stage.”…”�”}”(hhûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K hhÊh²hubhÞ)�”}”(hXlThis driver can also trace the contents of the V4L2 controls submitted to it. It can also dump the contents of the vb2 buffers through a debugfs interface. This is in many ways similar to the tracing infrastructure available for other popular encode/decode APIs out there and can help develop a userspace application by using another (working) one as a reference.”h]”hXlThis driver can also trace the contents of the V4L2 controls submitted to it. It can also dump the contents of the vb2 buffers through a debugfs interface. This is in many ways similar to the tracing infrastructure available for other popular encode/decode APIs out there and can help develop a userspace application by using another (working) one as a reference.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhhÊh²hubhŒnote”“”)�”}”(hŒ£No actual decoding of video frames is performed by visl. The V4L2 test pattern generator is used to write various debug information to the capture buffers instead.”h]”hÞ)�”}”(hŒ£No actual decoding of video frames is performed by visl. The V4L2 test pattern generator is used to write various debug information to the capture buffers instead.”h]”hŒ£No actual decoding of video frames is performed by visl. The V4L2 test pattern generator is used to write various debug information to the capture buffers instead.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhÊh²hh³hÇh´NubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒModule parameters”h]”hŒModule parameters”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj1h²hh³hÇh´KubhŒ bullet_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hŒèvisl_debug: Activates debug info, printing various debug messages through dprintk. Also controls whether per-frame debug info is shown. Defaults to off. Note that enabling this feature can result in slow performance through serial. ”h]”hÞ)�”}”(hŒçvisl_debug: Activates debug info, printing various debug messages through dprintk. Also controls whether per-frame debug info is shown. Defaults to off. Note that enabling this feature can result in slow performance through serial.”h]”hŒçvisl_debug: Activates debug info, printing various debug messages through dprintk. Also controls whether per-frame debug info is shown. Defaults to off. Note that enabling this feature can result in slow performance through serial.”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K hjIubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjDh²hh³hÇh´NubjH)�”}”(hŒxvisl_transtime_ms: Simulated process time in milliseconds. Slowing down the decoding speed can be useful for debugging. ”h]”hÞ)�”}”(hŒwvisl_transtime_ms: Simulated process time in milliseconds. Slowing down the decoding speed can be useful for debugging.”h]”hŒwvisl_transtime_ms: Simulated process time in milliseconds. Slowing down the decoding speed can be useful for debugging.”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K$hjaubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjDh²hh³hÇh´NubjH)�”}”(hŒçvisl_dprintk_frame_start, visl_dprintk_frame_nframes: Dictates a range of frames where dprintk is activated. This only controls the dprintk tracing on a per-frame basis. Note that printing a lot of data can be slow through serial. ”h]”hÞ)�”}”(hŒævisl_dprintk_frame_start, visl_dprintk_frame_nframes: Dictates a range of frames where dprintk is activated. This only controls the dprintk tracing on a per-frame basis. Note that printing a lot of data can be slow through serial.”h]”hŒævisl_dprintk_frame_start, visl_dprintk_frame_nframes: Dictates a range of frames where dprintk is activated. This only controls the dprintk tracing on a per-frame basis. Note that printing a lot of data can be slow through serial.”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K'hjyubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjDh²hh³hÇh´NubjH)�”}”(hXkeep_bitstream_buffers: Controls whether bitstream (i.e. OUTPUT) buffers are kept after a decoding session. Defaults to false so as to reduce the amount of clutter. keep_bitstream_buffers == false works well when live debugging the client program with GDB. ”h]”hÞ)�”}”(hXkeep_bitstream_buffers: Controls whether bitstream (i.e. OUTPUT) buffers are kept after a decoding session. Defaults to false so as to reduce the amount of clutter. keep_bitstream_buffers == false works well when live debugging the client program with GDB.”h]”hXkeep_bitstream_buffers: Controls whether bitstream (i.e. OUTPUT) buffers are kept after a decoding session. Defaults to false so as to reduce the amount of clutter. keep_bitstream_buffers == false works well when live debugging the client program with GDB.”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K+hj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjDh²hh³hÇh´NubjH)�”}”(hŒ²bitstream_trace_frame_start, bitstream_trace_nframes: Similar to visl_dprintk_frame_start, visl_dprintk_nframes, but controls the dumping of buffer data through debugfs instead. ”h]”hÞ)�”}”(hŒ±bitstream_trace_frame_start, bitstream_trace_nframes: Similar to visl_dprintk_frame_start, visl_dprintk_nframes, but controls the dumping of buffer data through debugfs instead.”h]”hŒ±bitstream_trace_frame_start, bitstream_trace_nframes: Similar to visl_dprintk_frame_start, visl_dprintk_nframes, but controls the dumping of buffer data through debugfs instead.”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K0hj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjDh²hh³hÇh´NubjH)�”}”(hŒãtpg_verbose: Write extra information on each output frame to ease debugging the API. When set to true, the output frames are not stable for a given input as some information like pointers or queue status will be added to them. ”h]”hÞ)�”}”(hŒâtpg_verbose: Write extra information on each output frame to ease debugging the API. When set to true, the output frames are not stable for a given input as some information like pointers or queue status will be added to them.”h]”hŒâtpg_verbose: Write extra information on each output frame to ease debugging the API. When set to true, the output frames are not stable for a given input as some information like pointers or queue status will be added to them.”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K4hjÁubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjDh²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1jBh³hÇh´K hj1h²hubeh}”(h]”Œmodule-parameters”ah ]”h"]”Œmodule parameters”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ-What is the default use case for this driver?”h]”hŒ-What is the default use case for this driver?”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjéh²hh³hÇh´K9ubhÞ)�”}”(hŒóThis driver can be used as a way to compare different userspace implementations. This assumes that a working client is run against visl and that the ftrace and OUTPUT buffer data is subsequently used to debug a work-in-progress implementation.”h]”hŒóThis driver can be used as a way to compare different userspace implementations. This assumes that a working client is run against visl and that the ftrace and OUTPUT buffer data is subsequently used to debug a work-in-progress implementation.”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K;hjéh²hubhÞ)�”}”(hŒšEven though no video decoding is actually done, the output frames can be used against a reference for a given input, except if tpg_verbose is set to true.”h]”hŒšEven though no video decoding is actually done, the output frames can be used against a reference for a given input, except if tpg_verbose is set to true.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K@hjéh²hubhÞ)�”}”(hŒÄDepending on the tpg_verbose parameter value, information on reference frames, their timestamps, the status of the OUTPUT and CAPTURE queues and more can be read directly from the CAPTURE buffers.”h]”hŒÄDepending on the tpg_verbose parameter value, information on reference frames, their timestamps, the status of the OUTPUT and CAPTURE queues and more can be read directly from the CAPTURE buffers.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KChjéh²hubeh}”(h]”Œ,what-is-the-default-use-case-for-this-driver”ah ]”h"]”Œ-what is the default use case for this driver?”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K9ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒSupported codecs”h]”hŒSupported codecs”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj,h²hh³hÇh´KHubhÞ)�”}”(hŒ#The following codecs are supported:”h]”hŒ#The following codecs are supported:”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KJhj,h²hubjC)�”}”(hhh]”(jH)�”}”(hŒFWHT”h]”hÞ)�”}”(hjPh]”hŒFWHT”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KLhjNubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjKh²hh³hÇh´NubjH)�”}”(hŒMPEG2”h]”hÞ)�”}”(hjgh]”hŒMPEG2”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KMhjeubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjKh²hh³hÇh´NubjH)�”}”(hŒVP8”h]”hÞ)�”}”(hj~h]”hŒVP8”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KNhj|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjKh²hh³hÇh´NubjH)�”}”(hŒVP9”h]”hÞ)�”}”(hj•h]”hŒVP9”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KOhj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjKh²hh³hÇh´NubjH)�”}”(hŒH.264”h]”hÞ)�”}”(hj¬h]”hŒH.264”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KPhjªubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjKh²hh³hÇh´NubjH)�”}”(hŒHEVC”h]”hÞ)�”}”(hjÃh]”hŒHEVC”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KQhjÁubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjKh²hh³hÇh´NubjH)�”}”(hŒAV1 ”h]”hÞ)�”}”(hŒAV1”h]”hŒAV1”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KRhjØubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjKh²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”jßjàuh1jBh³hÇh´KLhj,h²hubeh}”(h]”Œsupported-codecs”ah ]”h"]”Œsupported codecs”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KHubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒvisl trace events”h]”hŒvisl trace events”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjþh²hh³hÇh´KUubhÞ)�”}”(hŒ8The trace events are defined on a per-codec basis, e.g.:”h]”hŒ8The trace events are defined on a per-codec basis, e.g.:”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KVhjþh²hubhŒ literal_block”“”)�”}”(hŒ¯$ ls /sys/kernel/tracing/events/ | grep visl visl_av1_controls visl_fwht_controls visl_h264_controls visl_hevc_controls visl_mpeg2_controls visl_vp8_controls visl_vp9_controls”h]”hŒ¯$ ls /sys/kernel/tracing/events/ | grep visl visl_av1_controls visl_fwht_controls visl_h264_controls visl_hevc_controls visl_mpeg2_controls visl_vp8_controls visl_vp9_controls”…”�”}”hjsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆŒforce”‰Œlanguage”Œbash”Œhighlight_args”}”uh1jh³hÇh´KXhjþh²hubhÞ)�”}”(hŒ,For example, in order to dump HEVC SPS data:”h]”hŒ,For example, in order to dump HEVC SPS data:”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kchjþh²hubj)�”}”(hŒS$ echo 1 > /sys/kernel/tracing/events/visl_hevc_controls/v4l2_ctrl_hevc_sps/enable”h]”hŒS$ echo 1 > /sys/kernel/tracing/events/visl_hevc_controls/v4l2_ctrl_hevc_sps/enable”…”�”}”hj@sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj-‰j.Œbash”j0}”uh1jh³hÇh´Kehjþh²hubhÞ)�”}”(hŒ6The SPS data will be dumped to the trace buffer, i.e.:”h]”hŒ6The SPS data will be dumped to the trace buffer, i.e.:”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kihjþh²hubj)�”}”(hX©$ cat /sys/kernel/tracing/trace video_parameter_set_id 0 seq_parameter_set_id 0 pic_width_in_luma_samples 1920 pic_height_in_luma_samples 1080 bit_depth_luma_minus8 0 bit_depth_chroma_minus8 0 log2_max_pic_order_cnt_lsb_minus4 4 sps_max_dec_pic_buffering_minus1 6 sps_max_num_reorder_pics 2 sps_max_latency_increase_plus1 0 log2_min_luma_coding_block_size_minus3 0 log2_diff_max_min_luma_coding_block_size 3 log2_min_luma_transform_block_size_minus2 0 log2_diff_max_min_luma_transform_block_size 3 max_transform_hierarchy_depth_inter 2 max_transform_hierarchy_depth_intra 2 pcm_sample_bit_depth_luma_minus1 0 pcm_sample_bit_depth_chroma_minus1 0 log2_min_pcm_luma_coding_block_size_minus3 0 log2_diff_max_min_pcm_luma_coding_block_size 0 num_short_term_ref_pic_sets 0 num_long_term_ref_pics_sps 0 chroma_format_idc 1 sps_max_sub_layers_minus1 0 flags AMP_ENABLED|SAMPLE_ADAPTIVE_OFFSET|TEMPORAL_MVP_ENABLED|STRONG_INTRA_SMOOTHING_ENABLED”h]”hX©$ cat /sys/kernel/tracing/trace video_parameter_set_id 0 seq_parameter_set_id 0 pic_width_in_luma_samples 1920 pic_height_in_luma_samples 1080 bit_depth_luma_minus8 0 bit_depth_chroma_minus8 0 log2_max_pic_order_cnt_lsb_minus4 4 sps_max_dec_pic_buffering_minus1 6 sps_max_num_reorder_pics 2 sps_max_latency_increase_plus1 0 log2_min_luma_coding_block_size_minus3 0 log2_diff_max_min_luma_coding_block_size 3 log2_min_luma_transform_block_size_minus2 0 log2_diff_max_min_luma_transform_block_size 3 max_transform_hierarchy_depth_inter 2 max_transform_hierarchy_depth_intra 2 pcm_sample_bit_depth_luma_minus1 0 pcm_sample_bit_depth_chroma_minus1 0 log2_min_pcm_luma_coding_block_size_minus3 0 log2_diff_max_min_pcm_luma_coding_block_size 0 num_short_term_ref_pic_sets 0 num_long_term_ref_pics_sps 0 chroma_format_idc 1 sps_max_sub_layers_minus1 0 flags AMP_ENABLED|SAMPLE_ADAPTIVE_OFFSET|TEMPORAL_MVP_ENABLED|STRONG_INTRA_SMOOTHING_ENABLED”…”�”}”hj^sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj-‰j.Œbash”j0}”uh1jh³hÇh´Kkhjþh²hubeh}”(h]”Œvisl-trace-events”ah ]”h"]”Œvisl trace events”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KUubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ*Dumping OUTPUT buffer data through debugfs”h]”hŒ*Dumping OUTPUT buffer data through debugfs”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjvh²hh³hÇh´KŠubhÞ)�”}”(hX"If the **VISL_DEBUGFS** Kconfig is enabled, visl will populate **/sys/kernel/debug/visl/bitstream** with OUTPUT buffer data according to the values of bitstream_trace_frame_start and bitstream_trace_nframes. This can highlight errors as broken clients may fail to fill the buffers properly.”h]”(hŒIf the ”…”�”}”(hj‡h²hh³Nh´NubhŒstrong”“”)�”}”(hŒ**VISL_DEBUGFS**”h]”hŒ VISL_DEBUGFS”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‡ubhŒ( Kconfig is enabled, visl will populate ”…”�”}”(hj‡h²hh³Nh´Nubj�)�”}”(hŒ$**/sys/kernel/debug/visl/bitstream**”h]”hŒ /sys/kernel/debug/visl/bitstream”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‡ubhŒ¿ with OUTPUT buffer data according to the values of bitstream_trace_frame_start and bitstream_trace_nframes. This can highlight errors as broken clients may fail to fill the buffers properly.”…”�”}”(hj‡h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KŒhjvh²hubhÞ)�”}”(hŒA single file is created for each processed OUTPUT buffer. Its name contains an integer that denotes the buffer sequence, i.e.:”h]”hŒA single file is created for each processed OUTPUT buffer. Its name contains an integer that denotes the buffer sequence, i.e.:”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K‘hjvh²hubj)�”}”(hŒ6snprintf(name, 32, "bitstream%d", run->src->sequence);”h]”hŒ6snprintf(name, 32, "bitstream%d", run->src->sequence);”…”�”}”hjÉsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj-‰j.Œc”j0}”uh1jh³hÇh´K”hjvh²hubhÞ)�”}”(hŒEDumping the values is simply a matter of reading from the file, i.e.:”h]”hŒEDumping the values is simply a matter of reading from the file, i.e.:”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K˜hjvh²hubhÞ)�”}”(hŒ"For the buffer with sequence == 0:”h]”hŒ"For the buffer with sequence == 0:”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kšhjvh²hubj)�”}”(hXQ$ xxd /sys/kernel/debug/visl/bitstream/bitstream0 00000000: 2601 af04 d088 bc25 a173 0e41 a4f2 3274 &......%.s.A..2t 00000010: c668 cb28 e775 b4ac f53a ba60 f8fd 3aa1 .h.(.u...:.`..:. 00000020: 46b4 bcfc 506c e227 2372 e5f5 d7ea 579f F...Pl.'#r....W. 00000030: 6371 5eb5 0eb8 23b5 ca6a 5de5 983a 19e4 cq^...#..j]..:.. 00000040: e8c3 4320 b4ba a226 cbc1 4138 3a12 32d6 ..C ...&..A8:.2. 00000050: fef3 247b 3523 4e90 9682 ac8e eb0c a389 ..${5#N......... 00000060: ddd0 6cfc 0187 0e20 7aae b15b 1812 3d33 ..l.... z..[..=3 00000070: e1c5 f425 a83a 00b7 4f18 8127 3c4c aefb ...%.:..O..'