eyelovu 2021-05-21 15:34
浏览 78

HI3518EV300 H265编码视频为什么只是黑白色无法显示彩色?

在使用HI3518EV300SDK进行可视门铃开发中,选择使用的PIXEL_FORMAT_YVU_SEMIPLANAR_420视频输入输出格式使用H265格式进行编码。编码后的文件无论怎么都是显示的黑白颜色。但是使用pqtool的视频流又能看到彩色。只是pq_stream关键部分只有库没有源代码。我查看了SDK中所有的文档,未找到相关问题的解决方案,我也参照PQTOOL中读取的sensor(GC2053)参数修改了参数,也不起作用。还想尝试从数据流里分析下YUV数据里是否有UV色彩分量,但是由于不知道H265数据的具体格式以及是否受数据编码格式SAMPLE_RC_AVBR的影响,无法分析出来。现在我把我初始化里的配置信息贴出来,希望有大神能帮我分析下我无法正常显示彩色的原因,指导下我可以通过修改哪个参数来实现彩色。谢谢!

static ISP_PUB_ATTR_S g_isp_pub_attr = {
#if defined CONFIG_SNS0_SC2231
    {0, 0, 1920, 1080},
    {1920, 1080},
    30,
    BAYER_BGGR,
    WDR_MODE_NONE,
    0,
#elif defined CONFIG_SNS0_GC2053
    {0, 0, 1920, 1080},
    {1920, 1080},
    20,
    BAYER_RGGB,
    WDR_MODE_NONE,
    0,
#else
#error "should define sensor type first"
#endif
};
HI_U16 g_default_ccm[CCM_MATRIX_SIZE] = {
    0x0037, 0x00B7, 0x0012,
    0x0037, 0x00B7, 0x0012,
    0x0037, 0x00B7, 0x0012
};

static SAMPLE_VI_CONFIG_S g_vi_cfg = {
    .astViInfo[0].stDevInfo.ViDev = 0,
    .astViInfo[0].stDevInfo.enWDRMode = WDR_MODE_NONE,
    .astViInfo[0].stPipeInfo.enMastPipeMode = VI_ONLINE_VPSS_ONLINE,
    .astViInfo[0].stPipeInfo.aPipe[0] = 0,
    .astViInfo[0].stPipeInfo.aPipe[1] = -1,
    .astViInfo[0].stPipeInfo.bMultiPipe = HI_FALSE,
    .astViInfo[0].stPipeInfo.bVcNumCfged = HI_FALSE,
    .astViInfo[0].stChnInfo.ViChn = 0,
//    .astViInfo[0].stChnInfo.u32Depth = 0,
    .astViInfo[0].stChnInfo.enPixFormat = PIXEL_FORMAT_YVU_SEMIPLANAR_420,
    .astViInfo[0].stChnInfo.enDynamicRange = DYNAMIC_RANGE_SDR8,
    .astViInfo[0].stChnInfo.enVideoFormat = VIDEO_FORMAT_LINEAR,
    .astViInfo[0].stChnInfo.enCompressMode = COMPRESS_MODE_NONE,
    .s32WorkingViNum = 1,
    .as32WorkingViId[0] = 0,
};
static SIZE_S g_st_size = {1920, 1080};
PIC_SIZE_E g_size = PIC_1080P;

static VPSS_GRP_ATTR_S g_vpss_grp_attr = {
    .stFrameRate.s32SrcFrameRate = -1,
    .stFrameRate.s32DstFrameRate = -1,
    .enDynamicRange = DYNAMIC_RANGE_SDR8,
    .enPixelFormat = PIXEL_FORMAT_YVU_SEMIPLANAR_420,
    .u32MaxW = 1920,
    .u32MaxH = 1080,
    .bNrEn = HI_TRUE,
    .stNrAttr.enNrType       = VPSS_NR_TYPE_VIDEO,
    .stNrAttr.enCompressMode = COMPRESS_MODE_FRAME,
    .stNrAttr.enNrMotionMode = NR_MOTION_MODE_NORMAL,

};

/* vpss */
static BTK_IOTC_MEDIA_VPSS_CHN_ATTR g_vpss_chn_attr = {
    .chn_enable[0] = HI_TRUE,
    .chn_enable[1] = HI_TRUE,
    .vpss_chn_attr[0].u32Width = 1920,
    .vpss_chn_attr[0].u32Height = 1080,
    .vpss_chn_attr[0].u32Depth = 0,
    .vpss_chn_attr[0].bMirror = HI_FALSE,
    .vpss_chn_attr[0].bFlip = HI_FALSE,
    .vpss_chn_attr[0].enChnMode = VPSS_CHN_MODE_USER,
    .vpss_chn_attr[0].enCompressMode = COMPRESS_MODE_NONE,
    .vpss_chn_attr[0].enDynamicRange = DYNAMIC_RANGE_SDR8,
    .vpss_chn_attr[0].enVideoFormat = VIDEO_FORMAT_LINEAR,
    .vpss_chn_attr[0].enPixelFormat = PIXEL_FORMAT_YVU_SEMIPLANAR_420,
    .vpss_chn_attr[0].stFrameRate.s32SrcFrameRate = 25,
    .vpss_chn_attr[0].stFrameRate.s32DstFrameRate = 25,

    .vpss_chn_attr[1].u32Width = 640,
    .vpss_chn_attr[1].u32Height = 360,
    .vpss_chn_attr[1].u32Depth = 1,
    .vpss_chn_attr[1].bMirror = HI_FALSE,
    .vpss_chn_attr[1].bFlip = HI_FALSE,
    .vpss_chn_attr[1].enChnMode = VPSS_CHN_MODE_USER,
    .vpss_chn_attr[1].enCompressMode = COMPRESS_MODE_NONE,
    .vpss_chn_attr[1].enDynamicRange = DYNAMIC_RANGE_SDR8,
    .vpss_chn_attr[1].enVideoFormat = VIDEO_FORMAT_LINEAR,
    .vpss_chn_attr[1].enPixelFormat = PIXEL_FORMAT_YVU_SEMIPLANAR_420,
    .vpss_chn_attr[1].stFrameRate.s32SrcFrameRate = -1,
    .vpss_chn_attr[1].stFrameRate.s32DstFrameRate = -1,
};

static BTK_IOTC_MEDIA_VENC_ATTR g_venc_attr = {
    .venc_chn = 0,
    .type = PT_H265,
    .rc_mode = SAMPLE_RC_AVBR,
    .profile = 0,
    .rcn_ref_share_buf = HI_TRUE,
    .gop_attr.enGopMode = VENC_GOPMODE_NORMALP,//VENC_GOPMODE_SMARTP,
    .gop_attr.stNormalP.s32IPQpDelta = 4
};
 

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
    • ¥15 求daily translation(DT)偏差订正方法的代码
    • ¥15 js调用html页面需要隐藏某个按钮
    • ¥15 ads仿真结果在圆图上是怎么读数的
    • ¥20 Cotex M3的调试和程序执行方式是什么样的?
    • ¥20 java项目连接sqlserver时报ssl相关错误
    • ¥15 一道python难题3
    • ¥15 牛顿斯科特系数表表示
    • ¥15 arduino 步进电机
    • ¥20 程序进入HardFault_Handler