天天看点

十一、海思HISI3556V200摄像头功能裁剪

      海思HISI3556V200的开发板,硬件上是单个IMX307的摄像头,但是从原厂提供过来的软件SDK版本中的dashcam配置文件没有单IMX307的配置。

十一、海思HISI3556V200摄像头功能裁剪

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

        这里我们使用 hi3556v200_dashcam_demb_imx307_bt656_1080p30_carrecorder_128M_config 这个文件作为配置文件,将这个文件copy到SDK根目录并修改为.config

      注意:以下操作,全在海思的开发环境下执行。

一、配置SDK

在根目录执行

make menuconfig
           

然后去掉如下选项.

十一、海思HISI3556V200摄像头功能裁剪
十一、海思HISI3556V200摄像头功能裁剪

 保存退出。

二、增加参数配置

1、添加参数目录

在目录

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

 添加 imx307_128M 文件夹(在执行编译的时候,会到这个文件夹查找参数,所以这个文件夹是必须的)

我的做法是

                                                            复制并改名   

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

2、修改IMX307_128M参数,将其修改为单摄像头

A、去掉第二个摄像头的相关文件

十一、海思HISI3556V200摄像头功能裁剪

B、修改摄像头2所涉及的文件

十一、海思HISI3556V200摄像头功能裁剪

如图所示,总共有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 中获取相应的升级镜像,烧录到开发板即可。

十一、海思HISI3556V200摄像头功能裁剪

继续阅读