10.5 Video
10.5.1 Display
10.5.1.1 Test Name
- autorun-fb.sh
- mxc_tve_test.sh
- mxc_fb_test.out
- mxc_epdc_fb_test.out
- mxc_epdc_v2_fb_test.out
- mxc_spdc_fb_test.out
- mxc_fb_vsync_test.out
10.5.1.1.1 Location
/unit_tests/Display/
10.5.1.1.2 Functionality
디스플레이 디렉토리 아래의 테스트는 i.MX 보드 제품군에서 사용할 수 있는 일부 디스플레이 옵션을 테스트한다. 테스트할 수 있는 일부 디바이스에는 LVDS, HDMI와 EPDC 패널이 있다.
특히 'mxc_fb_test.out'은 아래 기능을 테스트한다:
- 기본 fb 작업
- 16bpp fb로 배경/전경을 설정
- 전역 알파 블렌딩
- 칼라 키 테스트
- Framebuffer Panning
- 감마 테스트
또한, EPDC 테스트 'mxc_epdc_fb_test.out'와 'mxc_epdc_v2_fb_test.out'은 아래 기능을 테스트한다:
- 기본 업데이트
- 회전 업데이트
- Grayscale Framebuffer 업데이트
- Auto-waveform 선택 업데이트
- Panning 업데이트
- 오버레이 업데이트
- 자동 업데이트
- 애니메이션 모드 업데이트
- 빠른 업데이트
- 부분에서 전체 업데이트로 전환
- 픽셀 이동 효과 테스트
- 칼라맵 업데이트
- 충돌 테스트 모드
- 스트레스 테스트
- RGB565, Y8 프레임버퍼 형식
- 0, 90, 180, 270도 프레임버퍼 회전
- Framebuffer Panning
- 대체 프레임버퍼 사용
- Auto-waveform 모드 선택
- 자동 업데이트 모드
- 강제로 모노크롬 업데이트 기능과 애니메이션 모드 업데이트
- 그레이스케일 칼라맵 사용 지원
- Snapshot, Queue 및 Queue와 Merge 업데이트 계획
- EPDC 충돌 테스트 모드
10.5.1.1.3 Configuration
일부 테스트를 실행하려면, 대상 보드의 defconfig 파일을 변경해야 한다. 이러한 변경은 다음 테스트가 의존하는 기능을 추가한다.
autorun-fb.sh, 'mxc_fb_test.out'와 'mxc_fb_vsync_test.out'의 경우 대상 보드 defconfig 파일에 다음을 추가한다:
CONFIG_FB=y
CONFIG_FB_MXC=y
CONFIG_FB_MXC_EDID=y
CONFIG_FB_MXC_SYNC_PANEL=y
CONFIG_FB_MXC_LDB=y
CONFIG_FB_MXC_HDMI=y
'mxc_epdc_fb_test.out'와 'mxc_epdc_v2_fb_test.out'의 경우 대상 보드 defconfig 파일에 다음을 추가한다:
CONFIG_FB=y
CONFIG_FB_MXC=y
CONFIG_FB_MXC_EINK_PANEL=y
CONFIG_MFD_MAX17135=y
CONFIG_REGULATOR_MAX17135=y
CONFIG_MXC_PXP=y
CONFIG_DMA_ENGINE=y
10.5.1.1.4 Use Case and Expected Output
# ./autorun-fb.sh
예상되는 출력:
---- Running < autorun-fb.sh > test ----
Checking for devnode: /dev/fb0
autorun-fb.sh: PASS devnode found: /dev/fb0
FB Blank test
Screen should be off
FB Color test
Setting FB to 16-bpp
Setting FB to 24-bpp
Setting FB to 32-bpp
FB panning test
autorun-fb.sh: Exiting PASS
Exiting PASS.
# ./mxc_tve_test.sh
예상되는 출력:
---- Running < mxc_tve_test.sh > test ----
Setting TV to NTSC mode
/unit_tests/Display/mxc_tve_test.sh: line 9: echo: write error: Invalid argument
/unit_tests/Display/mxc_tve_test.sh: line 11: /unit_tests/mxc_v4l2_output.out: No such
file or directory
Blank the display
Unblank the display
Setting TV to PAL mode
/unit_tests/Display/mxc_tve_test.sh: line 22: echo: write error: Invalid argument
/unit_tests/Display/mxc_tve_test.sh: line 23: /unit_tests/mxc_v4l2_output.out: No such
file or directory
Blank the display
Unblank the display
# ./mxc_fb_test.out
예상되는 출력은 아래와 같다. 테스트는 실패 메세지 없이 통과해야 하며, 패널에 표시되는 내용은 정확해야 한다. 각 테스트에 대해 일련의 업데이트가 화면에 반영되어야 한다. 거의 모든 테스트에서 디버그 콘솔에 출력된 텍스트는 화면에서 관찰해야 하는 이미지를 설명한다. i.MX6Quad의 경우 fb0와 fb1이 테스트에 사용되고 fb0은 배경 프레임 버퍼이고 fb1은 전경 오버레이 프레임 버퍼이다.
Opened fb: /dev/fb0 (DISP4 BG - DI1)
DISP4 BG - DI1: screen info: 1024x768 (virtual: 1024x1536) @ 32-bpp
Opened fb: /dev/fb1 (DISP4 FG)
DISP4 FG: screen info: 240x320 (virtual: 240x960) @ 16-bpp
@DISP4 BG - DI1: Set colorspace to 16-bpp
@DISP4 FG: Set colorspace to 16-bpp
Prepared DISP4 BG - DI1 (black) and DISP4 FG (white). Verify the screen and press any
key to continue!
@DISP4 BG - DI1: Succesfully changed screen to 1024x768 (virtual: 1024x768) @16-bpp
@DISP4 FG: Succesfully changed screen to 240x320 (virtual: 240x320) @16-bpp
Testing global alpha blending...
Fill the FG in black (screen is 240x320 @ 16-bpp)
Fill the BG in white (screen is 1024x768 @ 16-bpp)
Alpha is 0, FG is opaque
Alpha is 255, BG is opaque
Color key enabled
Color key disabled
Global alpha disabled
Pan test start.
@DISP4 FG: Set the colorspace to 16-bpp
Pan test done.
@DISP4 BG - DI1: Set colorspace to 16-bpp
Pan test start.
@DISP4 BG - DI1: Set the colorspace to 16-bpp
Pan test done.
Gamma test start.
Gamma 0.800000
Gamma 1.000000
Gamma 1.500000
Gamma 2.200000
Gamma 2.400000
Gamma test end.
Test bpp start
@DISP4 BG - DI1: Set colorspace to 32-bpp
@DISP4 BG - DI1: Fill the screen in red
@DISP4 BG - DI1: Set colorspace to 24-bpp
@DISP4 BG - DI1: Fill the screen in blue
@DISP4 BG - DI1: Set colorspace to 16-bpp
@DISP4 BG - DI1: Fill the screen in green
Test bpp end
# ./mxc_epdc_fb_test.out [-h] [-a] [-n]
EPDC framebuffer driver test program.
Usage: mxc_epdc_fb_test [-h] [-a] [-p delay] [-u s/q/m] [-n <expression>]
-h Print this message
-a Enabled animation waveforms for fast updates (tests 8-9)
-p Provide a power down delay (in ms) for the EPDC driver
0 - Immediate (default)
-1 - Never
<ms> - After <ms> milliseconds
-u Select an update scheme
s - Snapshot update scheme
q - Queue update scheme
m - Queue and merge update scheme (default)
-n Execute the tests specified in expression
Expression is a set of comma-separated numeric ranges
If not specified, all tests except Stress are run
Example:
./mxc_epdc_fb_test.out -n 1-3,5,7
EPDC tests:
1 - Basic Updates
2 - Rotation Updates
3 - Grayscale Framebuffer Updates
4 - Auto-waveform Selection Updates
5 - Panning Updates
6 - Overlay Updates
7 - Auto-Updates
8 - Animation Mode Updates
9 - Fast Updates
10 - Partial to Full Update Transitions
11 - Test Pixel Shifting Effect
12 - Colormap Updates
13 - Collision Test Mode
14 - Stress Test
15 - Dithering Y8->Y1 Test
16 - Dithering Y8->Y4 Test
17 - Hardware Dithering Test
18 - Advanced Algorithm Test
전체 테스트 세트는 실패 메세지 없이 통과해야 한다. 각 테스트에 대해 일련의 업데이트가 화면에 반영되어야 한다. 거의 모든 테스트에서 디버그 콘솔에 출력된 텍스트는 화면에서 관찰해야 하는 이미지를 설명한다.
mxc_epdc_v2_fb_test.out: 전체 테스트 세트는 실패 메세지 없이 통과해야 한다. 각 테스트에 대해 일련의 업데이트가 화면에 반영되어야 한다. 거의 모든 테스트에서 디버그 콘솔에 출력된 텍스트는 화면에서 관찰해야 하는 이미지를 설명한다.
# ./mxc_spdc_fb_test.out
---- Running < ./mxc_spdc_fb_test.out > test ----
Unable to open /dev/fb5
# ./mxc_fb_vsync_test.out
Usage:
/unit_tests/Display# ./mxc_fb_vsync_test.out <fb #> <count>
<fb #> the framebuffer number
<count> the frames to be rendered
Example:
/unit_tests/Display# echo 0 > /sys/class/graphics/fb0/blank
/unit_tests/Display# ./mxc_fb_vsync_test.out 0 100
<count> 인수(argument)에 100을 사용할 때 예상되는 출력은 다음과 같다.
total time for 100 frames = 1655674 us = 60 fps
10.5.2 High-Definition Multimedia Interface (HDMI) and Display Port (DP) Overview
10.5.2.1 Test Name
- mxc_cec_test.out
10.5.2.1.1 Location
/unit_tests/HDMI/
10.5.2.1.2 Functionality
HDMI CEC 기능을 확인하고 전원 끄기 명령을 HDMI 싱크로 보낸다.
10.5.2.1.3 Configuration
mxc_cec_test.out이 작동하려면 대상 보드 defconfig 파일에 다음 라인을 추가한다:
CONFIG_MXC_HDMI_CEC=y
하드웨어는 HDMI를 지원해야 하고 TV는 HDMI CEC를 지원해야 한다.
10.5.2.1.4 Use Case and Expected Output
./mxc_cec_test.out
10.5.3 Video Processing Unit (VPU)
10.5.3.1 Test for i.MX 6
- autorun-vpu.sh
- mxc_vpu_test.out
10.5.3.1.1 Location
/unit_tests/VPU/
10.5.3.1.2 Functionality
VPU 테스트는 VPU(Video Processing Unit)에서 다음 옵션을 실행한다:
- 하나의 스트림을 디코딩하고 LCD에 표시.
- 스트림을 디코딩하고 파일에 저장.
- 구성 파일을 사용하여 스트림을 디코딩.
- YUV 스트림을 인코딩하고 파일에 저장.
- 카메라 이미지를 인코딩하고 다시 디코딩하여 LCD에 표시.
- 다른 형식의 여러 스트림을 동시에 디코딩.
- 디코딩과 인코딩을 동시에 수행.
- TV 출력으로 출력.
- VDI로 VPU 테스트(IPU를 통한 HW 디인터레이스).
10.5.3.1.3 Configuration
이 테스트에는 /usr/lib/ 아래 libvpu.so와 LCD 디스플레이가 필요하다. 이 테스트에는 i.MX 6QuadPlus/Quad/Dual SoC가 필요하다.
10.5.3.1.4 Use Case and Expected Output
./autorun-vpu.sh
Decode one stream and display on the LCD.
To test MPEG-4 decode and display to screen:
./mxc_vpu_test.out -D "-i /usr/vectors/file.m4v -f 0"
To test H.263 decode and display to screen:
./mxc_vpu_test.out -D "-i /usr/vectors/file.263 -f 1"
To test H.264 decode and display to screen:
./mxc_vpu_test.out -D "-i /usr/vectors/file.264 -f 2"
You can get the mp4 test file from the imx-test.git server.
It is located under test/mxc_vpu_test/configs/akiyo.mp4.
Decode a stream and save to a file.
To test MPEG-4 decode and save to file:
./mxc_vpu_test.out -D "-i /usr/vectors/file.m4v -f 0 -o out.yuv"
To test H.263 decode and save to file:
./mxc_vpu_test.out -D "-i /usr/vectors/file.263 -f 1 -o out.yuv"
To test H.264 decode and save to file:
./mxc_vpu_test.out -D "-i /usr/vectors/file.264 -f 2 -o out.yuv"
Decode a stream using a config file.
Change options in config file, e.g, config_dec. Input correct input filename, output filename, format,
./mxc_vpu_test.out -C config_dec
Encode a YUV stream and save to a file.
To test MPEG-4 encode and save to a file:
./mxc_vpu_test.out -E "-i file.yuv -w 240 -h 320 -f 0 -o file.mpeg4"
To test H.263 encode and save to a file:
./mxc_vpu_test.out -E "-i file.yuv -w 240 -h 320 -f 1 -o file.263"
To test H.264 encode and save to a file:
./mxc_vpu_test.out -E "-i file.yuv -w 240 -h 320 -f 2 -o file.264"
Encode an image from the camera and decode it to display on the LCD.
To encode an MPEG4 image from the camera and display on the LCD: that
./mxc_vpu_test.out -L "-f 0 -w 1280 -h 720"
To encode an H263 image from the camera and display on the LCD:
./mxc_vpu_test.out -L "-f 1 -w 1280 -h 720"
To encode an H264 image from the camera and display on the LCD:
./mxc_vpu_test.out -L "-f 2 -w 1280 -h 720"
Decode multiple streams with different formats simultaneously.
Decoder one H264 and one MPEG4 streams.
./mxc_vpu_test.out -D "-i/vectors/file.264 -f 2" -D "-i ./akiyo.mp4 -f 0 -o akiyo.yuv"
Decode and encode simultaneously.
Encode one MPEG-4 stream and decode one H.264 stream simultaneously.
./mxc_vpu_test.out -E "-w 176 -h 144 -f 0 -o enc.m4v" -D "-i/vectors/file.264 -f
Test VPU with TV out.
Decoder one stream as normal VPU test. For example, H264 video stream:
./mxc_vpu_test.out -D "-i filename -f 2"
Test VPU with VDI (HW deinterlace via IPU).
Select one stream with top and bottom fields are interlaced.
av_stress2_dsmcc4m_1_C1_V11_A6.mp4_track1.h264
To decode the stream and display on LCD:
./mxc_vpu_test.out -D "-i av_stress2_dsmcc4m_1_C1_V11_A6.mp4_track1.h264 -f2"
To decode the stream and display on LCD using high motion stream video De Interlacing algorithm:
./mxc_vpu_test.out -D "-i av_stress2_dsmcc4m_1_C1_V11_A6.mp4_track1.h264 -v h -f2"
To decode the stream and display on LCD using low motion stream video De Interlacing algorithm:
./mxc_vpu_test.out -D "-i av_stress2_dsmcc4m_1_C1_V11_A6.mp4_track1.h264 -v l -f2"
To decode the stream and display on LCD having input in NV12 pixel format:
./mxc_vpu_test.out -D "-i av_stress2_dsmcc4m_1_C1_V11_A6.mp4_track1.h264 -v
10.5.3.2 Test for i.MX 8M Quad
10.5.3.2.1 Location
/unit_tests/VPU/hantro
10.5.3.2.2 Functionality
VPU 테스트는 VPU에서 다음 옵션을 실행한다:
- 스트림을 디코딩하고 파일에 저장.
10.5.3.2.3 Use Case and Expected Output
서로 다른 코덱의 디코딩 예:
/unit_tests/VPU/hantro/g2dec -P -b -ibs -Oout.yuv test.hevc
/unit_tests/VPU/hantro/g2dec -P -b -iivf -Oout.yuv test.vp9
/unit_tests/VPU/hantro/hx170dec -P -Oout.yuv test.h264
/unit_tests/VPU/hantro/mx170dec -P -Oout.yuv test.mpeg4
/unit_tests/VPU/hantro/m2x170dec -P -Oout.yuv test.mpeg2
/unit_tests/VPU/hantro/vx170dec -P -Oout.yuv test.vc1
/unit_tests/VPU/hantro/vp8x170dec -P -Oout.yuv test.vp8
/unit_tests/VPU/hantro/vp6dec -P -Oout.yuv test.vp6
/unit_tests/VPU/hantro/rvx170dec -P -Oout.yuv test.rv
/unit_tests/VPU/hantro/jx170dec -P -Oout.yuv test.jpg
/unit_tests/VPU/hantro/ax170dec -P -Oout.yuv test.avs
10.5.3.3 Test for i.MX 8M Mini
10.5.3.3.1 Location
/unit_tests/VPU/hantro
10.5.3.3.2 Functionality
VPU 테스트는 VPU에서 다음 옵션을 실행한다:
- 스트림을 디코딩하고 파일에 저장.
- YUV 스트림을 인코딩하고 파일에 저장.
10.5.3.3.3 Use Case and Expected Output
디코더 예:
/unit_tests/VPU/hantro/g2dec -P -b -ibs -Oout.yuv test.hevc
/unit_tests/VPU/hantro/g2dec -P -b -iivf -Oout.yuv test.vp9
/unit_tests/VPU/hantro/hx170dec -P -Oout.yuv test.h264
/unit_tests/VPU/hantro/vp8x170dec -P -Oout.yuv test.vp8
인코더 예:
/unit_tests/VPU/hantro/h264_testenc -w176 -h144 -o temp.h264 -i test.yuv
/unit_tests/VPU/hantro/vp8_testenc -w176 -h144 -o temp.h264 -i test.yuv
10.5.3.4 Test for i.MX 8QuadXPlus and 8QuadMax
10.5.3.4.1 Location
/unit_tests/V4L2_VPU/
10.5.3.4.2 Functionality
VPU 테스트는 VPU에서 다음 옵션을 실행한다:
- 스트림을 디코딩하고 파일에 저장.
- YUV 스트림을 인코딩하고 파일에 저장.
10.5.3.4.3 Use Case and Expected Output
다양한 코덱에 대한 'ifmt' 값을 나열하는 데 도움이 되는 디코더 예:
/unit_tests/V4L2_VPU/mxc_v4l2_vpu_dec.out ifile test.hevc ifmt 13 ofmt 1 ofile out.yuv
/unit_tests/V4L2_VPU/mxc_v4l2_vpu_dec.out ifile test.h264 ifmt 1 ofmt 1 ofile out.yuv
인코더 예(H.264 전용):
/unit_tests/V4L2_VPU/mxc_v4l2_vpu_enc.out ifile --key 0 --name input_720p.nv12 --fmt nv12 --size 1280
720 --loop 1 encoder --key 1 --source 0 --size 1280
720 --framerate 30 --bitrate 3000000 --lowlatency 1 ofile --key 2 --source 1 --name test.h264
10.5.4 JPEG Encoder and Decoder
10.5.4.1 Test Name
- encoder_test
- decoder_test
10.5.4.1.1 Location
/unit_tests/JPEG
10.5.4.1.2 Functionality
encoder_test는 입력으로 지원되는 형식 중 하나의 로우 파일을 수신하고, 입력과 동일한 해상도와 픽셀 형식으로 JPEG 파일을 출력으로 생성한다. 애플리케이션은 하나의 V4L2 출력 버퍼에 로우 파일을 채우고, 드라이버에 enqueue한 다음, 하나의 캡처 버퍼에서 JPEG 이미지를 dequeue 할 것을 예상한다.
decoder_test는 입력으로 지원되는 형식 중 하나의 JPEG 파일을 입력으로 수신하고, 입력과 동일한 해상도와 픽셀 형식으로 로우 파일을 출력으로 생성한다. 애플리케이션은 하나의 V4L2 출력 버퍼에 jpeg 파일을 채우고, 드라이버에 enqueue한 다음, 하나의 캡처 버퍼에서 로우 이미지를 dequeue 할 것을 예상한다.
10.5.4.1.3 Configuration
특별한 구성은 없다.
10.5.4.1.4 Use Case and Expected Output
애플리케이션을 실행하여 사용법을 가져온다:
./decoder_test.out
사용법:
./decoder_test.out -d </dev/videoX> -f <INPUT_FILENAME> -w <width> -h <height> -p <pixel_format>
지원되는 형식:
yuv420: 2-planes, Y and UV-interleaved, same as NV12
yuv422: packed YUYV
rgb24: packed RGB
yuv444: packed YUV
gray: Y8 or Y12 or Single Component
argb: packed ARGB
입력 파일은 지정된 너비(width), 높이(height) 그리고 픽셀 형식(pixel_format)과 일치하는 JPEG 파일이어야 한다. 출력은 현재 폴더에서 너비, 높이 그리고 픽셀 형식이 입력과 동일한 "outfile"이라는 로우 파일이다.
./encoder_test.out
사용법:
./encoder_test.out -d </dev/videoX> -f <INPUT_FILENAME> -w <width> -h <height> -p <pixel_format>
지원되는 형식:
yuv420: 2-planes, Y and UV-interleaved, same as NV12
yuv422: packed YUYV
rgb24: packed RGB
yuv444: packed YUV
gray: Y8 or Y12 or Single Component
argb: packed ARGB
입력 파일은 지정된 너비(width), 높이(height) 그리고 픽셀 형식(pixel_format)과 일치하는 로우 파일이어야 한다. 출력은 현재 폴더에서 너비, 높이 그리고 픽셀 형식이 입력과 동일한 "outfile.jpeg"라는 JPEG 파일이다.
'NXP i.MX SoC Family > i.MX Linux Reference Manual' 카테고리의 다른 글
i.MX Linux Reference Manual - Unit Tests - Security (0) | 2022.09.02 |
---|---|
i.MX Linux Reference Manual - Unit Tests - Audio (0) | 2022.09.02 |
i.MX Linux Reference Manual - Unit Tests - Graphics (0) | 2022.09.01 |
i.MX Linux Reference Manual - Unit Tests - Connectivity (0) | 2022.09.01 |
i.MX Linux Reference Manual - Unit Tests - Storage (0) | 2022.08.30 |