@@ -5,14 +5,14 @@ This directory contains the **Video_Encode_Decode** validation test for Qualcomm
55It validates video ** encoding and decoding** using ** GStreamer (` gst-launch-1.0 ` )** with V4L2 hardware-accelerated codecs:
66- ** v4l2h264enc** / ** v4l2h264dec** (H.264/AVC)
77- ** v4l2h265enc** / ** v4l2h265dec** (H.265/HEVC)
8- - ** v4l2vp9dec** (VP9 decode only - uses pre-downloaded clips converted to WebM)
8+ - ** v4l2vp9dec** (VP9 decode only - uses pre-downloaded WebM clips )
99
1010The script is designed to be ** CI/LAVA-friendly** :
1111- Writes ** PASS/FAIL/SKIP** into ` Video_Encode_Decode.res `
1212- Always ** exits 0** (even on FAIL/SKIP) to avoid terminating LAVA jobs early
1313- Logs the ** final ` gst-launch-1.0 ` command** to console and to log files
1414- Uses ** videotestsrc** plugin to generate test patterns for H.264/H.265 (no external video files needed)
15- - For VP9: Downloads pre-encoded clips from git repo (requires network connectivity)
15+ - For VP9: Downloads WebM clips from git repo (requires network connectivity)
1616
1717---
1818
@@ -113,14 +113,13 @@ By default, logs are written relative to the script working directory:
113113 decode_h264_4k.log
114114 decode_h265_480p.log
115115 decode_h265_4k.log
116- decode_vp9_320p .log # VP9 decode test log
116+ decode_vp9_480p .log # VP9 decode test log
117117 encoded/ # Encoded video files
118118 encode_h264_480p.mp4
119119 encode_h264_4k.mp4
120120 encode_h265_480p.mp4
121121 encode_h265_4k.mp4
122- 320_240_10fps.ivf # Downloaded VP9 clip (IVF format)
123- vp9_test_320p.webm # Converted VP9 clip (WebM format - used for decode test)
122+ VP9_640x480_10s.webm # Downloaded VP9 clip (WebM format)
124123 dmesg/ # dmesg scan outputs (if available)
125124```
126125
@@ -144,7 +143,7 @@ By default, logs are written relative to the script working directory:
144143### Parser Elements
145144- ` h264parse ` - H.264 stream parser
146145- ` h265parse ` - H.265 stream parser
147- - ` ivfparse ` - IVF container parser (for VP9)
146+ - ` matroskademux ` - WebM/Matroska container demuxer (for VP9)
148147
149148### Network Requirements (for VP9)
150149- Network connectivity (Ethernet or WiFi)
@@ -335,27 +334,10 @@ Where:
335334- Parser ensures proper stream format
336335- ` fakesink ` discards output (no display needed for validation)
337336
338- ### VP9 Clip Conversion Pipeline
339-
340- Before decoding, the downloaded IVF file is converted to WebM (Matroska) container:
341-
342- ```
343- filesrc location=320_240_10fps.ivf
344- ! ivfparse
345- ! matroskamux
346- ! filesink location=vp9_test_320p.webm
347- ```
348-
349- Where:
350- - ` ivfparse ` parses the downloaded IVF container
351- - ` matroskamux ` remuxes to WebM/Matroska container
352- - ** If conversion fails** : Test is skipped with reason "GST conversion failure"
353- - ** No IVF fallback** : The test will not use IVF directly if conversion fails
354-
355337### Decoding Pipeline (VP9)
356338
357339```
358- filesrc location=vp9_test_320p .webm
340+ filesrc location=VP9_640x480_10s .webm
359341 ! matroskademux
360342 ! v4l2vp9dec
361343 ! videoconvert
@@ -364,9 +346,8 @@ filesrc location=vp9_test_320p.webm
364346
365347Where:
366348- ` matroskademux ` parses WebM/Matroska container format
367- - Input file is the converted WebM file (not IVF directly)
368- - Resolution: 320x240
369- - ** Important** : Test skips if WebM conversion failed (no IVF fallback)
349+ - Input file is the downloaded WebM file
350+ - Resolution: 640x480
370351
371352---
372353
@@ -416,45 +397,19 @@ Where:
416397
417398### H) VP9 decode fails with "Input file not found"
418399- Ensure network connectivity is available
419- - Check if clip was downloaded: ` ls -l logs/Video_Encode_Decode/320_240_10fps.ivf `
400+ - Check if clip was downloaded: ` ls -l logs/Video_Encode_Decode/VP9_640x480_10s.webm `
420401- Manually download if needed:
421402 ``` bash
422403 cd logs/Video_Encode_Decode/
423- wget https://github.com/qualcomm-linux/qcom-linux-testkit/releases/download/IRIS-Video-Files-v1.0/video_clips_iris.tar.gz
424- tar -xzf video_clips_iris.tar.gz
425- ```
426- - Check network connectivity:
427- ``` bash
428- ping -c 3 github.com
429- ```
430-
431- ### I) VP9 decode fails with "ivfparse not found"
432- - Ensure ` ivfparse ` GStreamer plugin is installed:
433- ``` bash
434- gst-inspect-1.0 ivfparse
435- ```
436- - This is typically part of ` gst-plugins-bad ` package
437-
438- ### J) VP9 test skips with "GST conversion failure"
439- - The IVF to WebM conversion failed
440- - Check if ` matroskamux ` plugin is available:
441- ``` bash
442- gst-inspect-1.0 matroskamux
443- ```
444- - Check if ` ivfparse ` plugin is available:
445- ``` bash
446- gst-inspect-1.0 ivfparse
447- ```
448- - Manually test the conversion:
449- ``` bash
450- cd logs/Video_Encode_Decode/
451- gst-launch-1.0 filesrc location=320_240_10fps.ivf ! ivfparse ! matroskamux ! filesink location=test.webm
404+ wget https://github.com/qualcomm-linux/qcom-linux-testkit/releases/download/GST-Video-Files-v1.0/video_clips_gst.tar.gz
405+ tar -xzf video_clips_gst.tar.gz
452406 ```
453- - Check GStreamer debug output for errors:
407+ ### I) VP9 decode fails with "matroskademux not found"
408+ - Ensure ` matroskademux ` GStreamer plugin is installed:
454409 ``` bash
455- GST_DEBUG=3 gst-launch -1.0 filesrc location=320_240_10fps.ivf ! ivfparse ! matroskamux ! filesink location=test.webm
410+ gst-inspect -1.0 matroskademux
456411 ```
457- - ** Note ** : The test will NOT fall back to using IVF directly. If conversion fails, the test skips to ensure proper container format validation
412+ - This is typically part of ` gst-plugins-good ` package
458413
459414---
460415
@@ -639,6 +594,6 @@ The test supports these environment variables (can be set in LAVA job definition
639594- The test uses ` ensure_network_online() ` to establish connectivity automatically
640595- If network is unavailable, VP9 tests will SKIP (not FAIL)
641596- Downloaded clips are cached in the output directory for subsequent runs
642- - VP9 clip: 320_240_10fps.ivf (320x240 resolution, IVF container)
597+ - VP9 clip: VP9_640x480_10s.webm (640x480 resolution, WebM container)
643598
644599---
0 commit comments