~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/admin-guide/media/visl.rst

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /Documentation/admin-guide/media/visl.rst (Architecture alpha) and /Documentation/admin-guide/media/visl.rst (Architecture m68k)


  1 .. SPDX-License-Identifier: GPL-2.0                 1 .. SPDX-License-Identifier: GPL-2.0
  2                                                     2 
  3 The Virtual Stateless Decoder Driver (visl)         3 The Virtual Stateless Decoder Driver (visl)
  4 ===========================================         4 ===========================================
  5                                                     5 
  6 A virtual stateless decoder device for statele      6 A virtual stateless decoder device for stateless uAPI development
  7 purposes.                                           7 purposes.
  8                                                     8 
  9 This tool's objective is to help the developme      9 This tool's objective is to help the development and testing of
 10 userspace applications that use the V4L2 state     10 userspace applications that use the V4L2 stateless API to decode media.
 11                                                    11 
 12 A userspace implementation can use visl to run     12 A userspace implementation can use visl to run a decoding loop even when
 13 no hardware is available or when the kernel uA     13 no hardware is available or when the kernel uAPI for the codec has not
 14 been upstreamed yet. This can reveal bugs at a     14 been upstreamed yet. This can reveal bugs at an early stage.
 15                                                    15 
 16 This driver can also trace the contents of the     16 This driver can also trace the contents of the V4L2 controls submitted
 17 to it.  It can also dump the contents of the v     17 to it.  It can also dump the contents of the vb2 buffers through a
 18 debugfs interface. This is in many ways simila     18 debugfs interface. This is in many ways similar to the tracing
 19 infrastructure available for other popular enc     19 infrastructure available for other popular encode/decode APIs out there
 20 and can help develop a userspace application b     20 and can help develop a userspace application by using another (working)
 21 one as a reference.                                21 one as a reference.
 22                                                    22 
 23 .. note::                                          23 .. note::
 24                                                    24 
 25         No actual decoding of video frames is      25         No actual decoding of video frames is performed by visl. The
 26         V4L2 test pattern generator is used to     26         V4L2 test pattern generator is used to write various debug information
 27         to the capture buffers instead.            27         to the capture buffers instead.
 28                                                    28 
 29 Module parameters                                  29 Module parameters
 30 -----------------                                  30 -----------------
 31                                                    31 
 32 - visl_debug: Activates debug info, printing v     32 - visl_debug: Activates debug info, printing various debug messages through
 33   dprintk. Also controls whether per-frame deb     33   dprintk. Also controls whether per-frame debug info is shown. Defaults to off.
 34   Note that enabling this feature can result i     34   Note that enabling this feature can result in slow performance through serial.
 35                                                    35 
 36 - visl_transtime_ms: Simulated process time in     36 - visl_transtime_ms: Simulated process time in milliseconds. Slowing down the
 37   decoding speed can be useful for debugging.      37   decoding speed can be useful for debugging.
 38                                                    38 
 39 - visl_dprintk_frame_start, visl_dprintk_frame     39 - visl_dprintk_frame_start, visl_dprintk_frame_nframes: Dictates a range of
 40   frames where dprintk is activated. This only     40   frames where dprintk is activated. This only controls the dprintk tracing on a
 41   per-frame basis. Note that printing a lot of     41   per-frame basis. Note that printing a lot of data can be slow through serial.
 42                                                    42 
 43 - keep_bitstream_buffers: Controls whether bit     43 - keep_bitstream_buffers: Controls whether bitstream (i.e. OUTPUT) buffers are
 44   kept after a decoding session. Defaults to f     44   kept after a decoding session. Defaults to false so as to reduce the amount of
 45   clutter. keep_bitstream_buffers == false wor     45   clutter. keep_bitstream_buffers == false works well when live debugging the
 46   client program with GDB.                         46   client program with GDB.
 47                                                    47 
 48 - bitstream_trace_frame_start, bitstream_trace     48 - bitstream_trace_frame_start, bitstream_trace_nframes: Similar to
 49   visl_dprintk_frame_start, visl_dprintk_nfram     49   visl_dprintk_frame_start, visl_dprintk_nframes, but controls the dumping of
 50   buffer data through debugfs instead.             50   buffer data through debugfs instead.
 51                                                    51 
 52 - tpg_verbose: Write extra information on each     52 - tpg_verbose: Write extra information on each output frame to ease debugging
 53   the API. When set to true, the output frames     53   the API. When set to true, the output frames are not stable for a given input
 54   as some information like pointers or queue s     54   as some information like pointers or queue status will be added to them.
 55                                                    55 
 56 What is the default use case for this driver?      56 What is the default use case for this driver?
 57 ---------------------------------------------      57 ---------------------------------------------
 58                                                    58 
 59 This driver can be used as a way to compare di     59 This driver can be used as a way to compare different userspace implementations.
 60 This assumes that a working client is run agai     60 This assumes that a working client is run against visl and that the ftrace and
 61 OUTPUT buffer data is subsequently used to deb     61 OUTPUT buffer data is subsequently used to debug a work-in-progress
 62 implementation.                                    62 implementation.
 63                                                    63 
 64 Even though no video decoding is actually done     64 Even though no video decoding is actually done, the output frames can be used
 65 against a reference for a given input, except      65 against a reference for a given input, except if tpg_verbose is set to true.
 66                                                    66 
 67 Depending on the tpg_verbose parameter value,      67 Depending on the tpg_verbose parameter value, information on reference frames,
 68 their timestamps, the status of the OUTPUT and     68 their timestamps, the status of the OUTPUT and CAPTURE queues and more can be
 69 read directly from the CAPTURE buffers.            69 read directly from the CAPTURE buffers.
 70                                                    70 
 71 Supported codecs                                   71 Supported codecs
 72 ----------------                                   72 ----------------
 73                                                    73 
 74 The following codecs are supported:                74 The following codecs are supported:
 75                                                    75 
 76 - FWHT                                             76 - FWHT
 77 - MPEG2                                            77 - MPEG2
 78 - VP8                                              78 - VP8
 79 - VP9                                              79 - VP9
 80 - H.264                                            80 - H.264
 81 - HEVC                                             81 - HEVC
 82 - AV1                                              82 - AV1
 83                                                    83 
 84 visl trace events                                  84 visl trace events
 85 -----------------                                  85 -----------------
 86 The trace events are defined on a per-codec ba     86 The trace events are defined on a per-codec basis, e.g.:
 87                                                    87 
 88 .. code-block:: bash                               88 .. code-block:: bash
 89                                                    89 
 90         $ ls /sys/kernel/tracing/events/ | gre     90         $ ls /sys/kernel/tracing/events/ | grep visl
 91         visl_av1_controls                          91         visl_av1_controls
 92         visl_fwht_controls                         92         visl_fwht_controls
 93         visl_h264_controls                         93         visl_h264_controls
 94         visl_hevc_controls                         94         visl_hevc_controls
 95         visl_mpeg2_controls                        95         visl_mpeg2_controls
 96         visl_vp8_controls                          96         visl_vp8_controls
 97         visl_vp9_controls                          97         visl_vp9_controls
 98                                                    98 
 99 For example, in order to dump HEVC SPS data:       99 For example, in order to dump HEVC SPS data:
100                                                   100 
101 .. code-block:: bash                              101 .. code-block:: bash
102                                                   102 
103         $ echo 1 >  /sys/kernel/tracing/events    103         $ echo 1 >  /sys/kernel/tracing/events/visl_hevc_controls/v4l2_ctrl_hevc_sps/enable
104                                                   104 
105 The SPS data will be dumped to the trace buffe    105 The SPS data will be dumped to the trace buffer, i.e.:
106                                                   106 
107 .. code-block:: bash                              107 .. code-block:: bash
108                                                   108 
109         $ cat /sys/kernel/tracing/trace           109         $ cat /sys/kernel/tracing/trace
110         video_parameter_set_id 0                  110         video_parameter_set_id 0
111         seq_parameter_set_id 0                    111         seq_parameter_set_id 0
112         pic_width_in_luma_samples 1920            112         pic_width_in_luma_samples 1920
113         pic_height_in_luma_samples 1080           113         pic_height_in_luma_samples 1080
114         bit_depth_luma_minus8 0                   114         bit_depth_luma_minus8 0
115         bit_depth_chroma_minus8 0                 115         bit_depth_chroma_minus8 0
116         log2_max_pic_order_cnt_lsb_minus4 4       116         log2_max_pic_order_cnt_lsb_minus4 4
117         sps_max_dec_pic_buffering_minus1 6        117         sps_max_dec_pic_buffering_minus1 6
118         sps_max_num_reorder_pics 2                118         sps_max_num_reorder_pics 2
119         sps_max_latency_increase_plus1 0          119         sps_max_latency_increase_plus1 0
120         log2_min_luma_coding_block_size_minus3    120         log2_min_luma_coding_block_size_minus3 0
121         log2_diff_max_min_luma_coding_block_si    121         log2_diff_max_min_luma_coding_block_size 3
122         log2_min_luma_transform_block_size_min    122         log2_min_luma_transform_block_size_minus2 0
123         log2_diff_max_min_luma_transform_block    123         log2_diff_max_min_luma_transform_block_size 3
124         max_transform_hierarchy_depth_inter 2     124         max_transform_hierarchy_depth_inter 2
125         max_transform_hierarchy_depth_intra 2     125         max_transform_hierarchy_depth_intra 2
126         pcm_sample_bit_depth_luma_minus1 0        126         pcm_sample_bit_depth_luma_minus1 0
127         pcm_sample_bit_depth_chroma_minus1 0      127         pcm_sample_bit_depth_chroma_minus1 0
128         log2_min_pcm_luma_coding_block_size_mi    128         log2_min_pcm_luma_coding_block_size_minus3 0
129         log2_diff_max_min_pcm_luma_coding_bloc    129         log2_diff_max_min_pcm_luma_coding_block_size 0
130         num_short_term_ref_pic_sets 0             130         num_short_term_ref_pic_sets 0
131         num_long_term_ref_pics_sps 0              131         num_long_term_ref_pics_sps 0
132         chroma_format_idc 1                       132         chroma_format_idc 1
133         sps_max_sub_layers_minus1 0               133         sps_max_sub_layers_minus1 0
134         flags AMP_ENABLED|SAMPLE_ADAPTIVE_OFFS    134         flags AMP_ENABLED|SAMPLE_ADAPTIVE_OFFSET|TEMPORAL_MVP_ENABLED|STRONG_INTRA_SMOOTHING_ENABLED
135                                                   135 
136                                                   136 
137 Dumping OUTPUT buffer data through debugfs        137 Dumping OUTPUT buffer data through debugfs
138 ------------------------------------------        138 ------------------------------------------
139                                                   139 
140 If the **VISL_DEBUGFS** Kconfig is enabled, vi    140 If the **VISL_DEBUGFS** Kconfig is enabled, visl will populate
141 **/sys/kernel/debug/visl/bitstream** with OUTP    141 **/sys/kernel/debug/visl/bitstream** with OUTPUT buffer data according to the
142 values of bitstream_trace_frame_start and bits    142 values of bitstream_trace_frame_start and bitstream_trace_nframes. This can
143 highlight errors as broken clients may fail to    143 highlight errors as broken clients may fail to fill the buffers properly.
144                                                   144 
145 A single file is created for each processed OU    145 A single file is created for each processed OUTPUT buffer. Its name contains an
146 integer that denotes the buffer sequence, i.e.    146 integer that denotes the buffer sequence, i.e.:
147                                                   147 
148 .. code-block:: c                                 148 .. code-block:: c
149                                                   149 
150         snprintf(name, 32, "bitstream%d", run-    150         snprintf(name, 32, "bitstream%d", run->src->sequence);
151                                                   151 
152 Dumping the values is simply a matter of readi    152 Dumping the values is simply a matter of reading from the file, i.e.:
153                                                   153 
154 For the buffer with sequence == 0:                154 For the buffer with sequence == 0:
155                                                   155 
156 .. code-block:: bash                              156 .. code-block:: bash
157                                                   157 
158         $ xxd /sys/kernel/debug/visl/bitstream    158         $ xxd /sys/kernel/debug/visl/bitstream/bitstream0
159         00000000: 2601 af04 d088 bc25 a173 0e4    159         00000000: 2601 af04 d088 bc25 a173 0e41 a4f2 3274  &......%.s.A..2t
160         00000010: c668 cb28 e775 b4ac f53a ba6    160         00000010: c668 cb28 e775 b4ac f53a ba60 f8fd 3aa1  .h.(.u...:.`..:.
161         00000020: 46b4 bcfc 506c e227 2372 e5f    161         00000020: 46b4 bcfc 506c e227 2372 e5f5 d7ea 579f  F...Pl.'#r....W.
162         00000030: 6371 5eb5 0eb8 23b5 ca6a 5de    162         00000030: 6371 5eb5 0eb8 23b5 ca6a 5de5 983a 19e4  cq^...#..j]..:..
163         00000040: e8c3 4320 b4ba a226 cbc1 413    163         00000040: e8c3 4320 b4ba a226 cbc1 4138 3a12 32d6  ..C ...&..A8:.2.
164         00000050: fef3 247b 3523 4e90 9682 ac8    164         00000050: fef3 247b 3523 4e90 9682 ac8e eb0c a389  ..${5#N.........
165         00000060: ddd0 6cfc 0187 0e20 7aae b15    165         00000060: ddd0 6cfc 0187 0e20 7aae b15b 1812 3d33  ..l.... z..[..=3
166         00000070: e1c5 f425 a83a 00b7 4f18 812    166         00000070: e1c5 f425 a83a 00b7 4f18 8127 3c4c aefb  ...%.:..O..'<L..
167                                                   167 
168 For the buffer with sequence == 1:                168 For the buffer with sequence == 1:
169                                                   169 
170 .. code-block:: bash                              170 .. code-block:: bash
171                                                   171 
172         $ xxd /sys/kernel/debug/visl/bitstream    172         $ xxd /sys/kernel/debug/visl/bitstream/bitstream1
173         00000000: 0201 d021 49e1 0c40 aa11 144    173         00000000: 0201 d021 49e1 0c40 aa11 1449 14a6 01dc  ...!I..@...I....
174         00000010: 7023 889a c8cd 2cd0 13b4 dab    174         00000010: 7023 889a c8cd 2cd0 13b4 dab0 e8ca 21fe  p#....,.......!.
175         00000020: c4c8 ab4c 486e 4e2f b0df 96c    175         00000020: c4c8 ab4c 486e 4e2f b0df 96cc c74e 8dde  ...LHnN/.....N..
176         00000030: 8ce7 ee36 d880 4095 4d64 30a    176         00000030: 8ce7 ee36 d880 4095 4d64 30a0 ff4f 0c5e  ...6..@.Md0..O.^
177         00000040: f16b a6a1 d806 ca2a 0ece a67    177         00000040: f16b a6a1 d806 ca2a 0ece a673 7bea 1f37  .k.....*...s{..7
178         00000050: 370f 5bb9 1dc4 ba21 6434 bc5    178         00000050: 370f 5bb9 1dc4 ba21 6434 bc53 0173 cba0  7.[....!d4.S.s..
179         00000060: dfe6 bc99 01ea b6e0 346b 92b    179         00000060: dfe6 bc99 01ea b6e0 346b 92b5 c8de 9f5d  ........4k.....]
180         00000070: e7cc 3484 1769 fef2 a693 a94    180         00000070: e7cc 3484 1769 fef2 a693 a945 2c8b 31da  ..4..i.....E,.1.
181                                                   181 
182 And so on.                                        182 And so on.
183                                                   183 
184 By default, the files are removed during STREA    184 By default, the files are removed during STREAMOFF. This is to reduce the amount
185 of clutter.                                       185 of clutter.
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php