434 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			434 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
| hd_audio_capture_only:
 | |
| 	[data flow] audiocap -> (user)
 | |
| 	[usage]
 | |
| 	(1) require input files: (none).
 | |
| 	(2) require microphone.
 | |
| 	(3) execute hd_audio_capture_only, it will start with above data flow.
 | |
| 	(4) press 'q' to quit this app.
 | |
| 	(5) enter "sync" to ensure all files are saved.
 | |
| 	(6) generate output files: check them on /mnt/sd/audio_bs_16_2_48000_pcm.dat and /mnt/sd/audio_bs_16_2_48000_pcm.len.
 | |
| 
 | |
| hd_audio_capture_only_with_2cap:
 | |
|         [data flow] audiocap -> (user)
 | |
|         [usage]
 | |
|         (1) require input files: (none).
 | |
|         (2) require microphone.
 | |
|         (3) execute hd_audio_capture_only_with_2cap, it will start with above data flow.
 | |
|         (4) press 'q' to quit this app.
 | |
|         (5) enter "sync" to ensure all files are saved.
 | |
|         (6) generate output files: check them on /mnt/sd/audio_bs_16_1_48000_pcm_p0.dat, /mnt/sd/audio_bs_16_1_48000_pcm_p0.len, /mnt/sd/audio_bs_16_1_48000_pcm_p1.dat and /mnt/sd/audio_bs_16_1_48000_pcm_p1.len.
 | |
| 
 | |
| hd_audio_decode_only:
 | |
| 	[data flow] (user) -> audiodec -> (user)
 | |
| 	[usage]
 | |
| 	(1) require input files: /pattern/audio_bs_16_2_48000_aac.dat and /pattern/audio_bs_16_2_48000_aac.len,
 | |
| 		copy them to /mnt/sd/audio_bs_16_2_48000_aac.dat and /mnt/sd/audio_bs_16_2_48000_aac.len.
 | |
| 	(2) execute hd_audio_decode_only [dec_type], it will start with above data flow.
 | |
| 	(3) press 'q' to quit this app.
 | |
| 	(4) enter "sync" to ensure all files are saved.
 | |
| 	(5) generate output files: check them on /mnt/sd/dump_frm_16_2_48000_pcm.dat and /mnt/sd/dump_frm_16_2_48000_pcm.len.
 | |
| 	NOTE: [dec_type] 0:AAC 1:ULAW 2:ALAW 3:PCM.
 | |
| 
 | |
| hd_audio_encode_only:
 | |
| 	[data flow] (user) -> audioenc -> (user)
 | |
| 	[usage]
 | |
| 	(1) require input files: /pattern/audio_frm_16_2_48000_pcm.dat and /pattern/audio_frm_16_2_48000_pcm.len,
 | |
| 		copy them to /mnt/sd/audio_frm_16_2_48000_aac.dat and /mnt/sd/audio_frm_16_2_48000_aac.len.
 | |
| 	(2) execute hd_audio_encode_only [enc_type], it will start with above data flow.
 | |
| 	(3) press 'q' to quit this app.
 | |
| 	(4) enter "sync" to ensure all files are saved.
 | |
| 	(5) generate output files: check them on /mnt/sd/dump_bs_16_2_48000_aac.dat and /mnt/sd/dump_bs_16_2_48000_aac.len.
 | |
| 	NOTE: [enc_type] 0:AAC 1:ULAW 2:ALAW.
 | |
| 
 | |
| hd_audio_livesound:
 | |
| 	[data flow] audiocap -> audioout
 | |
| 	[usage]
 | |
| 	(1) require input files: (none).
 | |
| 	(2) require microphone and speaker.
 | |
| 	(3) execute hd_audio_livesound, it will start with above data flow.
 | |
| 	(4) check the sound played by the speaker.
 | |
| 	(5) press 'q' to quit this app.
 | |
| 
 | |
| hd_audio_output_only:
 | |
| 	[data flow] (user) -> audioout
 | |
| 	[usage]
 | |
| 	(1) require input files: /pattern/audio_frm_16_2_48000_pcm.dat and /pattern/audio_frm_16_2_48000_pcm.len,
 | |
| 		copy them to /mnt/sd/audio_frm_16_2_48000_pcm.dat and /mnt/sd/audio_frm_16_2_48000_pcm.len.
 | |
| 	(2) require speaker.
 | |
| 	(3) execute hd_audio_output_only, it will start with above data flow.
 | |
| 	(4) check the sound played by the speaker.
 | |
| 	(5) press 'q' to quit this app.
 | |
| 
 | |
| hd_audio_output_only_with_2out:
 | |
| 	[data flow] (user) -> audioout
 | |
| 	[usage]
 | |
| 	(1) require input files: /pattern/audio_frm_16_1_48000_pcm.dat and /pattern/audio_frm_16_1_48000_pcm.len,
 | |
| 		copy them to /mnt/sd/audio_frm_16_1_48000_pcm.dat and /mnt/sd/audio_frm_16_1_48000_pcm.len.
 | |
| 	(2) require speaker.
 | |
| 	(3) execute hd_audio_output_only_with_2out, it will start with above data flow.
 | |
| 	(4) check the sound played by the speaker.
 | |
| 	(5) press 'q' to quit this app.
 | |
| 
 | |
| hd_audio_playback:
 | |
| 	[data flow] (user) -> audiodec -> audioout
 | |
| 	[usage]
 | |
| 	(1) require input files: /pattern/audio_bs_16_2_48000_aac.dat and /pattern/audio_bs_16_2_48000_aac.len,
 | |
| 		copy them to /mnt/sd/audio_bs_16_2_48000_aac.dat and /mnt/sd/audio_bs_16_2_48000_aac.len.
 | |
| 	(2) require speaker.
 | |
| 	(3) execute hd_audio_playback [dec_type], it will start with above data flow.
 | |
| 	(4) check the sound played by the speaker.
 | |
| 	(5) press 'q' to quit this app.
 | |
| 	NOTE: [dec_type] 0:AAC 1:ULAW 2:ALAW 3:PCM.
 | |
| 
 | |
| hd_audio_record:
 | |
| 	[data flow] audiocap -> audioenc -> (user)
 | |
| 	[usage]
 | |
| 	(1) require input files: (none).
 | |
| 	(2) require microphone.
 | |
| 	(3) execute hd_audio_record [enc_type], it will start with above data flow.
 | |
| 	(4) press 'q' to quit this app.
 | |
| 	(5) enter "sync" to ensure all files are saved.
 | |
| 	(6) generate output files: check them on /mnt/sd/dump_bs_16_2_48000_aac.dat and /mnt/sd/dump_bs_16_2_48000_aac.len.
 | |
| 	NOTE: [enc_type] 0:AAC 1:ULAW 2:ALAW.
 | |
| 
 | |
| hd_audio_bidirect_with_aec:
 | |
| 	[data flow] audiocap -> (user), (user) -> audioout
 | |
| 	[usage]
 | |
| 	(1) require input files: audio_bs_16_1_16000_pcm_out.dat and audio_bs_16_1_16000_pcm_out.len,
 | |
| 		copy them to /mnt/sd/audio_bs_16_1_16000_pcm_out.dat and /mnt/sd/audio_bs_16_1_16000_pcm_out.len.
 | |
| 	(2) require microphone and speaker.
 | |
| 	(3) execute hd_audio_bidirect_with_aec, it will start with above data flow.
 | |
| 	(4) check the sound played by the speaker.
 | |
| 	(5) press 'q' to quit this app.
 | |
| 	(6) enter "sync" to ensure all files are saved.
 | |
| 	(7) generate output files: check them on /mnt/sd/audio_bs_16_1_16000_pcm_cap.dat and /mnt/sd/audio_bs_16_1_16000_pcm_cap.len.
 | |
| 
 | |
| hd_audio_2bidirect_with_aec:
 | |
| 	[data flow] audiocap -> (user), (user) -> audioout
 | |
| 	[usage]
 | |
| 	(1) require input files: audio_bs_16_1_16000_pcm_out_p0.dat, audio_bs_16_1_16000_pcm_out_p0.len,
 | |
| 		audio_bs_16_1_16000_pcm_out_p1.dat andaudio_bs_16_1_16000_pcm_out_p1.len.
 | |
| 		copy them to /mnt/sd/audio_bs_16_1_16000_pcm_out_p0.dat and /mnt/sd/audio_bs_16_1_16000_pcm_out_p0.len,
 | |
| 		/mnt/sd/audio_bs_16_1_16000_pcm_out_p1.dat and /mnt/sd/audio_bs_16_1_16000_pcm_out_p1.len
 | |
| 	(2) require microphone and speaker.
 | |
| 	(3) execute hd_audio_2bidirect_with_aec, it will start with above data flow.
 | |
| 	(4) check the sound played by the speaker.
 | |
| 	(5) press 'q' to quit this app.
 | |
| 	(6) enter "sync" to ensure all files are saved.
 | |
| 	(7) generate output files: check them on /mnt/sd/audio_bs_16_1_16000_pcm_cap_p0.dat and /mnt/sd/audio_bs_16_1_16000_pcm_cap_p0.len,
 | |
| 		/mnt/sd/audio_bs_16_1_16000_pcm_cap_p1.dat and /mnt/sd/audio_bs_16_1_16000_pcm_cap_p1.len.
 | |
| 
 | |
| hd_common:
 | |
| 	[data flow] none.
 | |
| 	[usage]
 | |
| 	(1) require input files: (none).
 | |
| 	(2) Auto test memory APIs and check if pass, if any item fail will break the test program and print error.
 | |
| 	(3) The auto test items are below:
 | |
| 		[1] test get block from common pool
 | |
| 	  	[2] test get block from osg pool
 | |
| 	  	[3] test alloc/free continuous memory
 | |
| 	  	[4] test translate user space va to pa
 | |
| 	  	[5] test if user space va to pa still work at the case "multiple va mmap to the same physical"
 | |
| 	(4) press 'q' to quit this app.
 | |
| 
 | |
| hd_debug_test:
 | |
| 
 | |
| hd_gfx_only:
 | |
| 	[data flow] (user) -> gfx -> (user)
 | |
| 	[usage]
 | |
| 	(1) require input files: /pattern/video_frm_1000_200_1_argb4444.dat, video_frm_1920_1080_1_yuv420.dat video_frm_1920_1080_1_yuv4203P.dat.
 | |
| 		copy it to /mnt/sd/video_frm_1920_1080_1_yuv420.dat, video_frm_1920_1080_1_yuv420.dat, video_frm_1920_1080_1_yuv4203P.dat.
 | |
| 	(2) execute hd_gfx_only.
 | |
| 	(3) press 'c' to test copy
 | |
| 		press 's' to test scale
 | |
| 		press 'o' to test rotation
 | |
| 		press 't' to test color transform
 | |
| 		press 'l' to test draw line
 | |
| 		press 'r' to test draw rectangle
 | |
| 		press 'm' to test dma memory copy
 | |
| 		press 'a' to test arithmetic
 | |
| 		press 'j' to test job/list
 | |
| 		press 'p' to transfrom yuv420 3p to 2p
 | |
| 		press 'd' to scale up yuv420 3p
 | |
|     	(4) copy test generates /mnt/sd/hd_gfx_copy_1920_1080_1_yuv420.dat : a 1000x200 novatek logo is printed on 1920x1080 image
 | |
| 		scale test generates /mnt/sd/hd_gfx_scale_3840_2160_1_yuv420.dat : a 1920x1080 image is scaled up to 3840x2160
 | |
| 		rotation test generates /mnt/sd/hd_gfx_rotate_1920_1080_1_yuv420.dat : the input image is rotated by 180 degree
 | |
| 		color transform test generates /mnt/sd/hd_gfx_color_transform_1000_200_1_yuv420.dat : the input argb4444 image is tranformed to yuv420
 | |
| 		draw line test generates /mnt/sd/hd_gfx_draw_line_1920_1080_1_yuv420.dat : a green line is painted on the image
 | |
| 		draw rectangle test generates /mnt/sd/hd_gfx_draw_rect_1920_1080_1_yuv420.dat : a green rectangle is painted on the image
 | |
| 		dma memory copy test prints "dma manages to copy 1048576 bytes" on success
 | |
| 		arithmetic test prints "minus operation of two 16bits arrays ok" on success
 | |
| 		job/list test generates /mnt/sd/hd_gfx_job_list_1920_1080_1_yuv420.dat : a frame and 4 rectangles are painted on the image
 | |
| 		transfrom yuv420 3p to 2p test generates /mnt/sd/hd_gfx_3p_to_2p_1920_1080_1_yuv420.dat : the input yuv420 3p image is tranformed to yuv420 2p
 | |
| 		scale yuv420 3p test generates /mnt/sd/hd_gfx_scale_420_3p_480_270_1_yuv4203p.dat : a 1920x1080 yuv420 3p image is scaled down to 480x270
 | |
| 	(5) enter "sync" to ensure all output files are fully saved.
 | |
| 
 | |
| hd_video_capture_only:
 | |
| 	[data flow] videocap -> (user)
 | |
| 	[usage]
 | |
| 	(1) execute hd_video_capture_only, it will start with above data flow.
 | |
| 	(2) press 's' to save a raw file to /mnt/sd/cap?.raw.
 | |
| 	(3) press 'q' to quit this app.
 | |
| 	(4) enter "sync" to ensure all files are saved.
 | |
| 
 | |
| hd_video_decode_only:
 | |
| 	[data flow] (user) -> videodec-> (user)
 | |
| 	[usage]
 | |
| 	(1) require input files: /pattern/video_bs_640_480_h265.dat, copy it to /mnt/sd/video_bs_640_480_h265.dat.
 | |
| 	(2) execute hd_video_decode_only [dec_type], it will start with above data flow.
 | |
| 	(3) press 'q' to quit this app.
 | |
| 	(4) enter "sync" to ensure all files are saved.
 | |
| 	(5) generate output files: check it on /mnt/sd/dump_frm_640_480_yuv.dat.
 | |
| 	NOTE: [dec_type] 0:H265 1:H264 2:JPEG
 | |
| 
 | |
| hd_video_encode_only:
 | |
| 	[data flow] (user) -> videoenc-> (user)
 | |
| 	[usage]
 | |
| 	(1) require input files: /pattern/video_frm_352_288_30_yuv420.dat, copy it to /mnt/sd/video_frm_352_288_30_yuv420.dat.
 | |
| 	(2) execute hd_video_encode_only, it will start with above data flow.
 | |
| 	(3) press 'q' to quit this app.
 | |
| 	(4) enter "sync" to ensure all files are saved.
 | |
| 	(5) generate output files: check it on /mnt/sd/dump_bs_main.dat.
 | |
| 
 | |
| hd_video_liveview:
 | |
| 	[data flow] videocap -> videoproc -> videoout
 | |
| 	[usage]
 | |
| 	(1) require input files: (none).
 | |
| 	(2) require sensor board imx291 and display
 | |
| 	(3) execute hd_video_liveview, it will start with above data flow.
 | |
| 	(4) check the video result on display.
 | |
| 	(5) press 'q' to quit this app.
 | |
| 
 | |
| 
 | |
| hd_video_liveview_with_dir:
 | |
| 	[data flow] videocap -> videoproc -> videoout
 | |
| 	[usage]
 | |
| 	(1) require input files: (none).
 | |
| 	(2) require sensor board imx291 and display
 | |
| 	(3) execute hd_video_liveview_with_dir, it will start with above data flow.
 | |
| 	(4) press 'q' to quit this app.
 | |
| 		press 'w or x' to dynamic change videocap output mirror/flip (only support CCIR sensor)
 | |
| 		press 'e or c' to dynamic change videoproc input mirror/flip
 | |
| 		press 't or b' to dynamic change videoout input mirror/flip
 | |
| 	(5) check the video result on display.
 | |
| 
 | |
| hd_video_liveview_with_vcap_2dev:
 | |
| 	[data flow] videocap -> videoproc -> videoout
 | |
| 	[usage]
 | |
| 	(1) require dual sensor board imx290 and LCD.
 | |
| 	(2) disable "modprobe nvt_sen_imx290 sen_cfg_path=/mnt/app/sensor/sen_imx290.cfg" and enable "modprobe nvt_sen_imx290 sen_cfg_path=/mnt/app/sensor/sen_imx290_dual.cfg" in the script file, S10_SysInit2.
 | |
| 	(3) execute hd_video_liveview_with_vcap_2dev [out_type], it will start with above data flow.
 | |
| 	NOTE: [out_type] 0:cap0 ->vout0 1:cap1->vout0 2:cap0+cap1 ->vout0(pip) 3:cap0+cap1 ->vout0(side by side)
 | |
| hd_video_liveview_with_frc:
 | |
| 	[data flow] videocap -> videoproc -> videoout
 | |
| 	[usage]
 | |
| 	(1) require input files: (none).
 | |
| 	(2) require sensor board imx291 and display
 | |
| 	(3) execute hd_video_liveview_with_frc, it will start with above data flow.
 | |
| 	(4) press 'q' to quit this app.
 | |
| 		press 'e or c' to dynamic change videoproc input frame rate
 | |
| 		press 'r or v' to dynamic change videoproc output frame rate
 | |
| 	(5) check the video result on display.
 | |
| 
 | |
| hd_video_liveview_with_pat:
 | |
| 	[data flow] videocap -> videoproc -> videoout
 | |
| 	[usage]
 | |
| 	(1) require input files: (none).
 | |
| 	(2) execute hd_video_liveview_with_pat [pat_mode] [pat_value]
 | |
| 	(3) check the video result on LCD.
 | |
| 	(4) press 'q' to quit this app .
 | |
| 	NOTE: [pat_mode] [pat_value] referring to HD_VIDEOCAP_SEN_PATGEN_SEL.
 | |
| 
 | |
| hd_video_liveview_with_osg:
 | |
| 	[data flow] videocap -> videoproc -> videoout
 | |
| 	[usage]
 | |
| 	(1) require input files: /pattern/video_frm_1000_200_1_argb4444.dat, copy it to /mnt/sd/video_frm_1000_200_1_argb4444.dat.
 | |
| 	(2) require sensor board imx291 and display.
 | |
| 	(3) execute hd_video_liveview_with_osg [out_type], it will start with above data flow.
 | |
| 	(4) LCD should display streaming with a novatek logo and a red rectangle.
 | |
| 	(5) press 'q' to quit this app.
 | |
| 	NOTE: [out_type] 0:NTSC 1:EVB lcd (Disp_IF8B_LCD1_PW35P00_HX8238D) 2:HDMI.
 | |
| 	NOTE: execute cat /proc/hdmitx/help would list support hdmi id, when hdmi is attathed
 | |
| 
 | |
| 
 | |
| hd_video_liveview_with_wdr_defog:
 | |
| 	[data flow] videocap -> videoproc -> videoout
 | |
| 	[usage]
 | |
| 	(1) require input files: (none).
 | |
| 	(2) require sensor board imx291 and display
 | |
| 	(3) execute hd_video_liveview_with_wdr_defog, it will start WDR and DEFOG effect with above data flow.
 | |
| 	(4) check the video result on display.
 | |
| 	(5) press 'q' to quit this app.
 | |
| 
 | |
| hd_video_output_only:
 | |
| 	[data flow] (user) -> videoout
 | |
| 	[usage]
 | |
| 	(1) require input files: /pattern/video_frm_320_240_3_yuv422.dat, copy it to /mnt/sd/video_frm_320_240_3_yuv422.dat.
 | |
| 	(2) require display
 | |
| 	(3) execute hd_video_output_only [out_type] [hdmi_id], it will start with above data flow.
 | |
| 	(4) check the video result on display.
 | |
| 	(5) press 'q' to quit this app.
 | |
| 	NOTE: [out_type] 0:NTSC 1:EVB lcd (Disp_IF8B_LCD1_PW35P00_HX8238D) 2:HDMI.
 | |
| 	NOTE: execute cat /proc/hdmitx/help would list support hdmi id, when hdmi is attathed
 | |
| 
 | |
| hd_video_playback:
 | |
| 	[data flow] (user) -> videodec -> videoproc -> videoout
 | |
| 	[usage]
 | |
| 	(1) require input files: /pattern/video_bs_640_480_h265.dat and /pattern/video_bs_640_480_h265.len,
 | |
| 		copy them to /mnt/sd/video_bs_640_480_h265.dat and /pattern/video_bs_640_480_h265.len.
 | |
| 	(2) require display
 | |
| 	(3) execute hd_video_playback [dec_type], it will start with above data flow.
 | |
| 	(4) check the video result on display.
 | |
| 	(4) press 'q' to quit this app.
 | |
| 	NOTE: [dec_type] 0:H265 1:H264 2:JPEG
 | |
| 
 | |
| hd_video_process_only:
 | |
| 	[data flow] (user) -> videoproc -> (user)
 | |
| 	[usage] TBD.
 | |
| 	(1) require input files: /pattern/video_frm_352_288_30_yuv420.dat, copy it to /mnt/sd/video_frm_352_288_30_yuv420.dat.
 | |
| 	(2) execute hd_video_process_only, it will start with above data flow.
 | |
| 	(3) press 's' to save a raw file to /mnt/sd/dump_frm_yuv420_xxx.dat.
 | |
| 	(4) press 'q' to quit this app.
 | |
| 	(5) enter "sync" to ensure all files are saved.
 | |
| 	
 | |
| 
 | |
| hd_video_record:
 | |
| 	[data flow] videocap -> videoproc -> videoenc -> (user)
 | |
| 	[usage]
 | |
| 	(1) require input files: (none).
 | |
| 	(2) require sensor board imx291.
 | |
| 	(3) execute hd_video_record [enc_type], it will start with above data flow.
 | |
| 	(4) press 'q' to quit this app.
 | |
| 	(5) enter "sync" to ensure all files are saved.
 | |
| 	(6) generate output files: check it on /mnt/sd/dump_bs_main.dat.
 | |
| 	NOTE: [enc_type] 0:H265 1:H264 2:JPEG
 | |
| 
 | |
| hd_video_record_with_2proc:
 | |
| 	[data flow] videocap -> videoproc -> videoproc -> videoenc -> (user)
 | |
| 	[usage]
 | |
| 	(1) require input files: (none).
 | |
| 	(2) require sensor board imx291.
 | |
| 	(3) execute hd_video_record_with_2proc [enc_type], it will start with above data flow.
 | |
| 	(4) press 'q' to quit this app.
 | |
| 	(5) enter "sync" to ensure all files are saved.
 | |
| 	(6) generate output files: check it on /mnt/sd/dump_bs_main.dat.
 | |
| 	NOTE: [enc_type] 0:H265 1:H264 2:JPEG
 | |
| 
 | |
| hd_video_record_with_dir:
 | |
| 	[data flow] videocap -> videoproc -> videoenc -> (user)
 | |
| 	[usage]
 | |
| 	(1) require input files: (none).
 | |
| 	(2) require sensor board imx291.
 | |
| 	(3) execute hd_video_record_with_dir [enc_type], it will start with above data flow.
 | |
| 	(4) press 'q' to quit this app.
 | |
|         	press 'w or x' to dynamic changevideocap output mirror/flip (only support CCIR sensor)
 | |
|         	press 'e or c' to dynamic changevideoproc input mirror/flip
 | |
| 	(5) enter "sync" to ensure all files are saved.
 | |
| 	(6) generate output files: check it on /mnt/sd/dump_bs_main.dat.
 | |
| 	NOTE: [enc_type] 0:H265 1:H264 2:JPEG
 | |
| 
 | |
| hd_video_record_with_extend:
 | |
| 	[data flow] videocap -> videoproc -> videoenc -> (user)
 | |
| 					  \> videoenc -> (user)
 | |
| 	[usage]
 | |
| 	(1) require input files: (none).
 | |
| 	(2) require sensor board imx291.
 | |
| 	(3) execute hd_video_record_with_extend [enc_type] [extend mode], it will start with above data flow.
 | |
| 	(4) press 'q' to quit this app.
 | |
| 	(5) enter "sync" to ensure all files are saved.
 | |
| 	(6) generate output files: check it on /mnt/sd/dump_bs_main.dat and /mnt/sd/dump_bs_sub.dat.
 | |
| 	NOTE: [enc_type] 0:H265 1:H264 2:JPEG
 | |
| 	NOTE: [extend mode] 0:share 1:scale 2:rotate 2:scale+rotate
 | |
| 
 | |
| hd_video_record_with_frc:
 | |
| 	[data flow] videocap -> videoproc -> videoenc -> (user)
 | |
| 	[usage]
 | |
| 	(1) require input files: (none).
 | |
| 	(2) require sensor board imx291.
 | |
| 	(3) execute hd_video_record_with_frc [enc_type], it will start with above data flow.
 | |
| 	(4) press 'q' to quit this app.
 | |
| 		press 'e or c' to dynamic change videoproc input frame rate
 | |
| 		press 'r or v' to dynamic change videoproc output frame rate
 | |
| 	(5) enter "sync" to ensure all files are saved.
 | |
| 	(6) generate output files: check it on /mnt/sd/dump_bs_main.dat.
 | |
| 	NOTE: [enc_type] 0:H265 1:H264 2:JPEG
 | |
| 
 | |
| hd_video_record_with_osg:
 | |
| 	[data flow] videocap -> videoproc -> videoenc -> (user)
 | |
| 	[usage]
 | |
| 	(1) require input files: /pattern/video_frm_1000_200_1_argb4444.dat, copy it to /mnt/sd/video_frm_1000_200_1_argb4444.dat.
 | |
| 	(2) execute hd_video_record_with_osg, it will start to record streaming.
 | |
| 	(3) press 'q' to quit this app.
 | |
| 	(4) enter "sync" to ensure the output file is fully saved.
 | |
| 	(5) generated output files: /mnt/sd/dump_bs_main.dat.
 | |
| 	(6) play dump_bs_main.dat. Two blue "novatek" logos and a red mask are on the top left.
 | |
| 
 | |
| hd_video_record_with_substream:
 | |
| 	[data flow] videocap -> videoproc -> videoenc -> (user)
 | |
| 					  \> videoenc -> (user)
 | |
| 	[usage]
 | |
| 	(1) require input files: (none).
 | |
| 	(2) require sensor board imx291.
 | |
| 	(3) execute hd_video_record_with_substream [enc_type], it will start with above data flow.
 | |
| 	(4) press 'q' to quit this app.
 | |
| 	(5) enter "sync" to ensure all files are saved.
 | |
| 	(6) generate output files: check it on /mnt/sd/dump_bs_main.dat and /mnt/sd/dump_bs_sub.dat.
 | |
| 	NOTE: [enc_type] 0:H265 1:H264 2:JPEG
 | |
| 
 | |
| hd_video_record_with_userqp:
 | |
| 	[data flow] videocap -> videoproc -> videoenc -> (user)
 | |
| 	[usage]
 | |
| 	(1) require input files: (none).
 | |
| 	(2) require sensor board imx291.
 | |
| 	(3) execute hd_video_record_with_userqp, it will start with above data flow.
 | |
| 	(4) press 'q' to quit this app.
 | |
| 	(5) enter "sync" to ensure all files are saved.
 | |
| 	(6) generate output files: check it on /mnt/sd/dump_bs_main.dat.
 | |
| 
 | |
| hd_video_snapshot:
 | |
| 	[data flow] videocap -> videoproc -> (user) -> videoenc -> (user)
 | |
| 	[usage]
 | |
| 	(1) require input files: (none).
 | |
| 	(2) require sensor board imx291.
 | |
| 	(3) execute hd_video_snapshot, it will start with above data flow.
 | |
| 	(4) press 's' to trigger snapshot, it will save a snapshot file.
 | |
| 	(5) press 'q' to quit this app.
 | |
| 	(6) enter "sync" to ensure all files are saved.
 | |
| 	(7) generate output files: check it on /mnt/sd/dump_bs_snapxxx.jpg.
 | |
| 
 | |
| hd_video_snapshot_with_extend:
 | |
| 	[data flow] videocap -> videoproc ->
 | |
| 					  \> (user) -> videoenc -> (user)
 | |
| 	[usage]
 | |
| 	(1) require input files: (none).
 | |
| 	(2) require sensor board imx291.
 | |
| 	(3) execute hd_video_snapshot_with_extend [extend mode], it will start with above data flow.
 | |
| 	(4) press 's' to trigger snapshot, it will save a snapshot file.
 | |
| 	(5) press 'q' to quit this app.
 | |
| 	(6) enter "sync" to ensure all files are saved.
 | |
| 	(7) generate output files: check it on /mnt/sd/dump_bs_snapxxx_[extend mode].jpg.
 | |
| 	NOTE: [extend mode] 0:share 1:scale 2:rotate 2:scale+rotate
 | |
| 
 | |
| hd_video_snapshot_with_osg:
 | |
| 	[data flow] videocap -> videoproc -> videoenc
 | |
|                                               \-> (user)
 | |
| 	[usage]
 | |
| 	(1) require input files: (none).
 | |
| 	(2) require sensor board imx291.
 | |
| 	(3) execute hd_video_snapshot_with_osg, it will start with above data flow.
 | |
| 	(4) press 's' to trigger snapshot, it will save a snapshot file.
 | |
| 	(5) press 'q' to quit this app.
 | |
| 	(6) enter "sync" to ensure all files are saved.
 | |
| 	(7) generate output files: check it on /mnt/sd/dump_bs_snapxxx.jpg.
 | |
| 
 | |
| hd_video_record_with_pano:
 | |
| 	[data flow] videocap -> videoproc -> videoenc -> (user)
 | |
| 	[usage]
 | |
| 	(1) require input files: (none).
 | |
| 	(2) require sensor board imx291.
 | |
| 	(3) execute hd_video_record [enc_type], it will start panorama 360 effect with above data flow.
 | |
| 	(4) press 'q' to quit this app.
 | |
| 	(5) enter "sync" to ensure all files are saved.
 | |
| 	(6) generate output files: check it on /mnt/sd/dump_bs_main.dat.
 | |
| 	NOTE: [enc_type] 0:H265 1:H264 2:JPEG
 | 
