十一、海思HISI3556V200攝像頭功能裁剪

      海思HISI3556V200的開發板,硬件上是單個IMX307的攝像頭,但是從原廠提供過來的軟件SDK版本中的dashcam配置文件沒有單IMX307的配置。

因此,需用自己手動去配置。

        這裏我們使用 hi3556v200_dashcam_demb_imx307_bt656_1080p30_carrecorder_128M_config 這個文件作爲配置文件,將這個文件copy到SDK根目錄並修改爲.config

      注意:以下操作,全在海思的開發環境下執行。

一、配置SDK

在根目錄執行

make menuconfig

然後去掉如下選項.

 保存退出。

二、增加參數配置

1、添加參數目錄

在目錄

reference/dashcam/modules/param/inicfg/hi3559v200/carrecorder

 添加 imx307_128M 文件夾(在執行編譯的時候,會到這個文件夾查找參數,所以這個文件夾是必須的)

我的做法是

                                                            複製並改名   

imx307_bt656_1080p30_128M  =================>  imx307_128M

2、修改IMX307_128M參數,將其修改爲單攝像頭

A、去掉第二個攝像頭的相關文件

B、修改攝像頭2所涉及的文件

如圖所示,總共有7個文件需要修改。

1)、config_cfgaccess_entry.ini


[module]
module_num         = "19"
module1            = "media_common"
module2            = "workmode_common"
module3            = "workmode_record"
module4            = "workmode_photo"
module5            = "workmode_playback"
module6            = "workmode_usb"
module7            = "filemng"
module8            = "devmng"
module9            = "valueset"
module10           = "cam0_comm"
module11           = "cam0_comm_record"
module12           = "cam0_comm_photo"
module13           = "cam0_mediamode0"
module14           = "cam0_mediamode1"


[media_common]
path               = "./"
cfg_filename       = "config_product_media_common.ini"
[workmode_common]
path               = "./"
cfg_filename       = "config_product_workmode_common.ini"
[workmode_record]
path               = "./"
cfg_filename       = "config_product_workmode_record.ini"
[workmode_photo]
path               = "./"
cfg_filename       = "config_product_workmode_photo.ini"
[workmode_playback]
path               = "./"
cfg_filename       = "config_product_workmode_playback.ini"
[workmode_usb]
path               = "./"
cfg_filename       = "config_product_workmode_usb.ini"
[filemng]
path               = "./"
cfg_filename       = "config_product_filemng.ini"
[devmng]
path               = "./"
cfg_filename       = "config_product_devmng.ini"
[valueset]
path               = "./"
cfg_filename       = "config_product_valueset.ini"
[cam0_comm]
path               = "./"
cfg_filename       = "config_product_mediamode_cam0_comm.ini"
[cam0_comm_record]
path               = "./"
cfg_filename       = "config_product_mediamode_cam0_comm_record.ini"
[cam0_comm_photo]
path               = "./"
cfg_filename       = "config_product_mediamode_cam0_comm_photo.ini"
[cam0_mediamode0]
path               = "./"
cfg_filename       = "config_product_mediamode_cam0_record_1080p30.ini"

2)、config_product_media_common.ini


; ============= Common Vencoder Configure =============
[venc.video.main]
scene_mode         = "2"; 0:normal, 1:dv, 2:car
[venc.video.main.h264]
profile            = "2";h264 profile 0:baseline, 1:main, 2:high
ref_base           = "1"
ref_enhance        = "0"
ref_enable_pred    = "1"
[venc.video.main.h264.cbr]
max_qp             = "45"
min_qp             = "10"
max_iqp            = "45"
min_iqp            = "10"
[venc.video.main.h264.vbr]
max_qp             = "45"
min_qp             = "10"
max_iqp            = "45"
min_iqp            = "10"
[venc.video.main.h264.qvbr]
max_qp             = "51"
min_qp             = "25"
max_iqp            = "51"
min_iqp            = "25"
bit_percent_ul     = "100"
bit_percent_ll     = "45"
psnr_fluctuate_ul  = "30"
psnr_fluctuate_ll  = "23"
[venc.video.main.h265]
profile            = "0";h265 profile 0:main
ref_base           = "1"
ref_enhance        = "0"
ref_enable_pred    = "1"
[venc.video.main.h265.cbr]
max_qp             = "45"
min_qp             = "10"
max_iqp            = "45"
min_iqp            = "10"
[venc.video.main.h265.vbr]
max_qp             = "45"
min_qp             = "10"
max_iqp            = "45"
min_iqp            = "10"
[venc.video.main.h265.qvbr]
max_qp             = "51"
min_qp             = "25"
max_iqp            = "51"
min_iqp            = "25"
bit_percent_ul     = "100"
bit_percent_ll     = "45"
psnr_fluctuate_ul  = "30"
psnr_fluctuate_ll  = "23"

[venc.video.sub]
scene_mode         = "2"; 0:normal, 1:dv, 2:car
[venc.video.sub.h264]
profile            = "2";h264 profile 0:baseline, 1:main, 2:high
[venc.video.sub.h264.cbr]
max_qp             = "45"
min_qp             = "10"
max_iqp            = "45"
min_iqp            = "10"
[venc.video.sub.h264.vbr]
max_qp             = "45"
min_qp             = "10"
max_iqp            = "45"
min_iqp            = "10"
[venc.video.sub.h264.qvbr]
max_qp             = "51"
min_qp             = "25"
max_iqp            = "51"
min_iqp            = "25"
bit_percent_ul     = "100"
bit_percent_ll     = "45"
psnr_fluctuate_ul  = "30"
psnr_fluctuate_ll  = "23"
[venc.video.sub.h265]
profile            = "0";h265 profile 0:main
[venc.video.sub.h265.cbr]
max_qp             = "45"
min_qp             = "10"
max_iqp            = "45"
min_iqp            = "10"
[venc.video.sub.h265.vbr]
max_qp             = "45"
min_qp             = "10"
max_iqp            = "45"
min_iqp            = "10"
[venc.video.sub.h265.qvbr]
max_qp             = "51"
min_qp             = "25"
max_iqp            = "51"
min_iqp            = "25"
bit_percent_ul     = "100"
bit_percent_ll     = "45"
psnr_fluctuate_ul  = "30"
psnr_fluctuate_ll  = "23"

[venc.snap.single]
enable_dcf         = "1"
quality_factor     = "95"
largethumbnail_num = "0"
largethumbnail0_width  = "960"
largethumbnail0_height = "720"
largethumbnail1_width  = "960"
largethumbnail1_height = "720"

[venc.snap.sub]
enable_dcf         = "0"
quality_factor     = "95"
largethumbnail_num = "0"
largethumbnail0_width  = "0"
largethumbnail0_height = "0"
largethumbnail1_width  = "0"
largethumbnail1_height = "0"

[venc.hierarchical.qp]
qp_delta0          = "-2"
qp_delta1          = "-4"
qp_delta2          = "0"
qp_delta3          = "0"
frame_num0         = "1"
frame_num1         = "1"
frame_num2         = "0"
frame_num3         = "0"

; ============= Common Live Configure =================
[venc.live.src.0]
bindedmod         = "1"; 0-vcap, 1-vpss
modhdl            = "0"; vcappipe handle if binded mod vcap, vpsshdl if binded mod vpss
chnhdl            = "1"; vcappipechn handle if binded mod vcap, vpssporthdl if binded mod vpss
; =============== OSD Configure ===============
[osd]
osdcnt             = "4"; 0~16
base_font_w        = "48"
base_font_h        = "96"
base_res_w         = "1920"
base_res_h         = "1080"
[osd.0]
type               = "0"; 0:time,1:string,2:bitmap
timefmt            = "0"; 0:yyyy-mm-dd 24h
color              = "65535"; 0xffff
bg_color           = "3276"; 0x0ccc
dispnum            = "1";
[osd.0.display.0]
show               = "1"
bind_module        = "1"; 0:Vcap, 1:Vpss,2:Stitch,3:Venc,4:Disp
modhdl             = "0"; vpsshdl if binded mod vpss
chnhdl             = "0"; vpssporthdl if binded mod vpss
start_x            = "50";
start_y            = "0";
fg_alpha           = "100"
bg_alpha           = "0"
batch              = "0" camid+type
[osd.1]
type               = "0"; 0:time,1:string,2:bitmap
timefmt            = "0"; 0:yyyy-mm-dd 24h
color              = "65535";
bg_color           = "3276";
dispnum            = "1";
[osd.1.display.0]
show               = "1"
bind_module        = "3"; 0:Vcap, 1:Vpss,2:Stitch,3:Venc,4:Disp
modhdl             = "0"; vpsshdl if binded mod vpss
chnhdl             = "1"; vpssporthdl if binded mod vpss
start_x            = "50";
start_y            = "0";
fg_alpha           = "100"
bg_alpha           = "0"
batch              = "0" camid+type
[osd.2]
type               = "2"; 0:time,1:string,2:bitmap
bmp_width         = "160"; for 1080P
bmp_height        = "160"; for 1080P
dispnum            = "1";
[osd.2.display.0]
show               = "1"
bind_module        = "1"; 0:Vcap, 1:Vpss,2:Stitch,3:Venc,4:Disp
modhdl             = "0"; vpsshdl if binded mod vpss
chnhdl             = "0"; vpssporthdl if binded mod vpss
start_x            = "0";
start_y            = "0";
fg_alpha           = "100"
bg_alpha           = "0"
batch              = "2" camid+type
[osd.3]
type               = "2"; 0:time,1:string,2:bitmap
bmp_width         = "86"; for VGA
bmp_height        = "86"; for VGA
dispnum            = "1";
[osd.3.display.0]
show               = "1"
bind_module        = "3"; 0:Vcap, 1:Vpss,2:Stitch,3:Venc,4:Disp
modhdl             = "0"; vpsshdl if binded mod vpss
chnhdl             = "1"; vpssporthdl if binded mod vpss
start_x            = "0";
start_y            = "0";
fg_alpha           = "100"
bg_alpha           = "0"
batch              = "2" camid+type

; ============= Common Vdisplay Configure =============
[disp.0]
enable             = "1";
disphdl            = "0"
bg_color           = "0"
windowcnt          = "1"

[disp.0.csc]
enable             = "1"
cscmatrix          = "VO_CSC_MATRIX_BT601_TO_RGB_PC"
luma               = "50"
contrast           = "50"
hue                = "50"
saturation         = "50"

[disp.0.SRC.0]
bindedmod         = "1"; 0-vcap, 1-vpss
modhdl            = "0"; vcappipe handle if binded mod vcap, vpsshdl if binded mod vpss
chnhdl            = "2"; vcappipechn handle if binded mod vcap, vpssporthdl if binded mod vpss


[disp.0.window.0]
enable             = "1"
wndhdl             = "0"
preview_cam_id     = "0"
rotate             = "1"; 0:0,1:90,2:180,3:270
[disp.0.window.0.aspectratio]
mode               = "2"; 0:full screen,1:ratio no change,1:1, 2:ratio manual set
bg_color           = "0"
rect_x             = "0"
rect_y             = "0"
rect_width         = "240"
rect_height        = "320"
[disp.0.window.0.wndattr]
rect_x             = "0"
rect_y             = "0"
rect_width         = "320"
rect_height        = "240"
priority           = "0"

; ============= Common Acapture Configure =============
[acapture.0]
enable             = "1"
handle             = "0"
sample_rate        = "48000"
bit_width          = "1";0:8,1:16,2:24
sound_mode         = "0";0:mono,1:stereo
track_mode         = "0";0:normal,1:both left,2:both right,3:exchange,4:mix,5:left mute,6:right mute,7:both mute
work_mode          = "0";0:I2S_MASTER,1:I2S_SLAVE,2:PCM_SLAVE_STD,3:PCM_SLAVE_NSTD,4:PCM_MASTER_STD,5:PCM_MASTER_NSTD
ptnum_per_frm      = "1024"
mixer_mic_mode     = "1";0:IN0,1:IN1,2:IN_D
resample_rate      = "48000"
audiogain          = "20"
[acapture.0.chnl.0]
handle             = "0"
enable             = "1"
enable_vqe         = "1"
[acapture.0.chnl.1]
handle             = "1"
enable             = "0"
enable_vqe         = "0"

; ============= Common Aencoder Configure =============
[aenc.0]
enable             = "1"
aenchdl            = "0"
acaphdl            = "0"
acapchdl           = "0"
audio_format       = "0"; 0:aac-lc,1:opus
ptnum_per_frm      = "1024"
[aenc.0.aac]
aac_type           = "0"; 0:AAC-LC,1:EAAC,2:EAACPLUS,3:AACLD,4:AACELD
bit_rate           = "128000"
sample_rate        = "48000"
bit_width          = "1"; 1:16
sound_mode         = "0"; 0:mono,1:stereo
trans_type         = "0";0:ADTS,1:LOAS,2:LATM_MCP1
band_width         = "0"

; ============= Common Ao Configure =============
[ao.0]
enable             = "1"
handle             = "0"
sample_rate        = "48000"
bit_width          = "1"; 1:16
sound_mode         = "1";0:mono,1:stereo
track_mode         = "0";0:normal,1:both left,2:both right,3:exchange,4:mix,5:left mute,6:right mute,7:both mute
work_mode          = "0";0:I2S_MASTER,1:I2S_SLAVE,2:PCM_SLAVE_STD,3:PCM_SLAVE_NSTD,4:PCM_MASTER_STD,5:PCM_MASTER_NSTD
ptnum_per_frm      = "1024"
ao_i2c_type        = "0"
volume             = "66"; 0:off, 66;low, 83: middle, 96:high
[ao.0.chnl.0]
handle             = "0"
enable             = "1"
[ao.0.chnl.1]
handle             = "1"
enable             = "0"

3)、config_product_valueset.ini

; ============= Configure Item ValueSet =============
[cam.0.enc.payloadtype]
num                = "2"
description0       = "H264"
value0             = "0"
description1       = "H265"
value1             = "1"

[screen.dormant]
num                = "3"
description0       = "OFF"
value0             = "0"
description1       = "1MIN"
value1             = "60"
description2       = "3MIN"
value2             = "180"

[screen.brightness]
num                = "3"
description0       = "LOW"
value0             = "20"
description1       = "MIDDLE"
value1             = "50"
description2       = "HIGH"
value2             = "100"

[cam.0.mediamode.record]
num                = "1"
description0       = "1080P30"
value0             = "HI_PDT_MEDIAMODE_1080P_30"

[cam.0.mediamode.photo]
num                = "1"
description0       = "1080P"
value0             = "HI_PDT_MEDIAMODE_PHOTO_1080P"


[volume]
num                = "4"
description0       = "MUTE"
value0             = "0"
description1       = "LOW"
value1             = "33"
description2       = "MIDDLE"
value2             = "66"
description3       = "HIGH"
value3             = "100"

[drive_sensitivity]
num                = "4"
description0       = "OFF"
value0             = "0"
description1       = "LOW"
value1             = "1"
description2       = "MIDDLE"
value2             = "2"
description3       = "HIGH"
value3             = "3"

[parking_sensitivity]
num                = "4"
description0       = "OFF"
value0             = "0"
description1       = "LOW"
value1             = "1"
description2       = "MIDDLE"
value2             = "2"
description3       = "HIGH"
value3             = "3"

[usb.mode]
num                = "3"
description0       = "CHARGE"
value0             = "0"
description1       = "UVC"
value1             = "1"
description2       = "STORAGE"
value2             = "2"

[system.language]
num                = "2"
description0       = "en"
value0             = "0"
description1       = "zh"
value1             = "1"

[cam.0.wdr.status]
num                = "1"
description0       = "OFF"
value0             = "0"
description1       = "ON"
value1             = "3"

[cam.0.video.mode]
num                = "2"
description0       = "PAL"
value0             = "0"
description1       = "NTSC"
value1             = "1"


[cam.0.ldc.status]
num                = "1"
description0       = "OFF"
value0             = "0"


[cam.0.flip.status]
num                = "2"
description0       = "OFF"
value0             = "0"
description1       = "ON"
value1             = "1"


[cam.0.mirror.status]
num                = "2"
description0       = "OFF"
value0             = "0"
description1       = "ON"
value1             = "1"


[cam.0.antiflicker.mode]
num                = "3"
description0       = "NONE"
value0             = "0"
description1       = "50"
value1             = "1"
description2       = "60"
value2             = "2"


[splite_time]
num                = "3"
description0       = "1MIN"
value0             = "60"
description1       = "3MIN"
value1             = "180"
description2       = "5MIN"
value2             = "300"

[record.lapse.interval]
num                = "3"
description0       = "0.5S"
value0             = "500"
description1       = "1S"
value1             = "1000"
description2       = "5S"
value2             = "5000"

[record.type]
num                = "2"
description0       = "NORMAL"
value0             = "0"
description1       = "LAPSE"
value1             = "1"

4)、config_product_workmode_photo.ini

; ============= Common Media Configure ======================
[common.mediamode.config.0]
CAMID              = "0"
mediamode          = "HI_PDT_MEDIAMODE_PHOTO_1080P"


; ============= photo data source Configure ================
[photosource.0]
enable             = "1"
vcappipehdl        = "0"
pipechnhdl         = "0"
vpsshdl            = "0"
vporthdl           = "0"
venchdl            = "2"; jpeg

5)、config_product_workmode_playback.ini

; =============Playback WorkMode Configure =============

; ============= Playback Configure =============
[playback.mediamode.config.0]
CAMID              = "0"
mediamode          = "HI_PDT_MEDIAMODE_1080P_30"

[playback.player.config]
interval_ms        = "500";Current playing Time notify interval in Ms
video_buff         = "6291456"; unit:byte;if 0,use the inner default value
audio_buff         = "0"; [1k,100M] unit:byte;if 0,use the inner default value
pause_mode         = "0"; 0:do not pause; 1:pause after first frame render.

[playback.vout.opt]
vout_type          = "0"; 0-vpss, 1-vo
mod_hdl            = "0"; vpsshdl if vout_type vpss
chn_hdl            = "1"; vpssporthdl if vout_type vpss

[playback.aout.opt]
dev_hdl            = "0";
ao_hdl             = "0";
; ============= Playback Configure =============

6)、config_product_workmode_record.ini

; ============= Apply To NormalRec WorkMode =================

; ============= Common Media Configure ======================
[common.mediamode.config.0]
CAMID              = "0"
mediamode          = "HI_PDT_MEDIAMODE_1080P_30"


; ============= photo data source Configure ================
[photosource.0]
enable             = "1"
vcappipehdl        = "0"
pipechnhdl         = "0"
vpsshdl            = "0"
vporthdl           = "0"
venchdl            = "2"; jpeg

; ================= record Configure =======================
[record.common]
muxer_type         = "0"; 0:mp4,1:mov,2:ts
thm_type           = "1"; 0:independence,1:embedded,2:none
repaire_unit       = "10485760";0:unsupport, >0 repair data unit Byte
pre_alloc_unit     = "20971520"; 0:unsupport, >0 pre allocate unit  Byte

[normal.0]
enable             = "1"
split_type         = "1"; 0:none, 1:time
split_time         = "60"; second
recbuffer_time     = "3000"; ms
prerec_time        = "0"; second
filecnt            = "1"
thmcnt             = "1"
thmhdl0            = "3"
playfps            = "-1"
record_type         = "0"; 0:norm,1:lapse
lapse_interval     = "500"; millisecond

[normal.0.filenum.0.fileattr]
venccnt            = "1"
venc_hdl0          = "0"; main record
aenccnt            = "1"
aenc_hdl0          = "0";
thumbnail_hdl      = "3"; record thumbnail
recvbuf_size       = "131072"; unit:Byte

 7)、config_product_workmode_usb.ini

; ============= USB WorkMode =================
[common]
usb_mode           = "0"; 0:charge, 1:uvc, 2:storage
; ============= UVC Configure =============
[uvc.mediamode.config.0]
CAMID              = "0"
mediamode          = "HI_PDT_MEDIAMODE_1080P_30"


[uvc]
dev_path           = "/dev/video0";
[uvc.capability.yuv420]
count              = "1"
video_mode0        = "0"; 0:VGA30
video_defmode      = "0"; 0:VGA30
[uvc.capability.mjpeg]
count              = "3"
video_mode0        = "0"; 0:VGA30
video_bitrate0     = "20480";
video_mode1        = "1"; 1:720P30
video_bitrate1     = "20480";
video_mode2        = "2"; 2:1080P30
video_bitrate2     = "40960";
video_defmode      = "1"; 1:720P30
[uvc.capability.h264]
count              = "3"
video_mode0        = "0"; 0:VGA30
video_bitrate0     = "20480";
video_mode1        = "1"; 1:720P30
video_bitrate1     = "20480";
video_mode2        = "2"; 2:1080P30
video_bitrate2     = "40960";
video_defmode      = "1"; 1:720P30

[uvc.datasource]
vproc_hdl          = "0"
vport_hdl          = "1"
venc_hdl           = "1"
acap_hdl           = "0"

[uvc.buffer]
buffer_size        = "3110400"; 1920*1080*1.5
buffer_count       = "6"; >= 6

; ============= USB Storage Configure =============
[usb.storage]
dev_path           = "/dev/mmcblk0p1";
sysfile            = "/sys/devices/platform/soc/100e0000.hidwc3_0/gadget/lun0/file";
usb_state_proc     = "/proc/dwc3/100e0000.hidwc3_0/csts";

3、重新編譯及燒錄新固件開發板

在SDK根目錄下執行

make all

等待編譯完成之後,從目錄 reference/out/hi3559v200_dashcam_carrecorder_demb_imx307/burn/spinor 中獲取相應的升級鏡像,燒錄到開發板即可。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章