nt9856x/code/hdal/samples
2023-03-28 15:07:53 +08:00
..
ai_2net 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
ai_2net_share 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
ai_2op 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
ai_dnet 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
ai_net 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
ai_net_acl 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
ai_net_with_mbatch 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
ai_net_with_mblob 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
ai_net_with_mscale 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
ai_net_with_op 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
ai_op 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
ai_pattern 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
ai_video_liveview_with_2net 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
ai_video_liveview_with_net 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
ai_video_record_with_fastboot 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
ai2_cddcnn_sample 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
ai2_fdcnn_fastboot 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
ai2_pdcnn_sample 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
alg_clrcst_sample_stream 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
alg_eth_sample 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
alg_fdcnn_ai2_sample 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
alg_fdcnn_ai2_sample_stream 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
alg_ftg_sample_stream 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
alg_ive_irv_sample 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
alg_ive_lut_sample 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
alg_ive_lut_sample_nonblocking 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
alg_lme_sample 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
alg_lme_sample_stream 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
alg_md_sample 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
alg_md_sample_stream 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
alg_odt_sample_stream 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
alg_pvdcnn_sample 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
alg_vqa_pip_sample 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
alg_vqa_sample_stream 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
dummy 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_audio_2bidirect_with_aec 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_audio_bidirect 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_audio_bidirect_with_aec 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_audio_capture_only 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_audio_capture_only_with_2dev 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_audio_capture_only_with_anr 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_audio_decode_only 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_audio_encode_only 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_audio_livesound 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_audio_livesound_with_extcodec 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_audio_output_only 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_audio_output_only_with_2dev 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_audio_playback 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_audio_playback_without_bind 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_audio_record 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_common 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_debug_test 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_gfx_only 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_capture_flow 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_capture_only 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_capture_only_with_dvs 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_decode_only 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_encode_only 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_liveview 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_liveview_server 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_liveview_with_ad 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_liveview_with_ccir 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_liveview_with_crop 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_liveview_with_dim 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_liveview_with_dir 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_liveview_with_dis 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_liveview_with_frc 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_liveview_with_isp 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_liveview_with_mode 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_liveview_with_osg 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_liveview_with_vcap_2dev 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_liveview_with_vcap_pat 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_liveview_with_vout_fb 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_liveview_with_vprc_extend 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_output_only 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_playback 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_playback_self 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_playback_server 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_playback_with_mode 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_process_only 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_record 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_record_flow 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_record_self 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_record_server 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_record_with_2path 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_record_with_8path 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_record_with_crop 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_record_with_dim 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_record_with_dir 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_record_with_dis 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_record_with_dis_mode 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_record_with_dis_vprc_2pass 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_record_with_dis_vprc_extend 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_record_with_fastboot 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_record_with_frc 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_record_with_isp 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_record_with_md 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_record_with_mode 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_record_with_osg 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_record_with_vcap_rgbir 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_record_with_venc_userqp 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_record_with_vprc_2pass 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_record_with_vprc_eis 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_record_with_vprc_extend 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_snapshot 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_snapshot_with_osg 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
hd_video_snapshot_with_vprc_extend 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
isp_demon 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
merge_fdtapp 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
pattern 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
rc_profile 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
vendor_3a 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
vendor_ae 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
vendor_af 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
vendor_auto_contrast 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
vendor_awb 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
vendor_cfg 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
vendor_chksum 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
vendor_dpc 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
vendor_iq 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
vendor_isp 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
vendor_ive 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
vendor_light 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
vendor_rgbir 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
Makefile 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
readme_sensor_setting.txt 1.一次S530代码提交 2023-03-28 15:07:53 +08:00
readme.txt 1.一次S530代码提交 2023-03-28 15:07:53 +08:00

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