justchen

justchen

1个粉丝

11

问答

0

专栏

1

资料

justchen  发布于  2019-05-30 16:38:33
采纳率 0%
11个问答
2784

HI_TDE2_QuickCopy ycbcr422格式不成功求指导

 
数据源与目标地址都是 VIDEO_FRAME_INFO_S 结构,   使用QuickCopy把 A结构的数据往B里拷贝,发现只拷贝成功了亮度部分,cbcr部份没成功.
求大神指导

[code]VIDEO_FRAME_INFO_S stFrame;
VIDEO_FRAME_INFO_S *pstVFrame = xxxx;
HI_S32 s32Ret = HI_SUCCESS;

TDE_HANDLE s32Handle;
TDE2_SURFACE_S tde_src;
TDE2_SURFACE_S tde_dst;
TDE2_RECT_S stSrcRect;
TDE2_RECT_S stDstRect;

..................

tde_src.u32PhyAddr = stFrame.stVFrame.u32PhyAddr[0];
tde_src.enColorFmt = TDE2_COLOR_FMT_YCbCr422;
tde_src.u32Width   = stFrame.stVFrame.u32Width;
tde_src.u32Height  = stFrame.stVFrame.u32Height;
tde_src.u32Stride  = stFrame.stVFrame.u32Stride[0];
tde_src.pu8ClutPhyAddr = nullptr;
tde_src.bYCbCrClut = HI_FALSE; //HI_TRUE;
tde_src.bAlphaMax255 = HI_FALSE;
tde_src.bAlphaExt1555 = HI_FALSE;
tde_src.u8Alpha0 = 0xFF;
tde_src.u8Alpha1 = 0xFF;
tde_src.u32CbCrPhyAddr = stFrame.stVFrame.u32PhyAddr[1];
tde_src.u32CbCrStride = stFrame.stVFrame.u32Stride[1];

stSrcRect.s32Xpos = 0;
stSrcRect.s32Ypos = 0;
stSrcRect.u32Width = stFrame.stVFrame.u32Width;
stSrcRect.u32Height = stFrame.stVFrame.u32Height;

//----------
tde_dst.u32PhyAddr = pstVFrame->stVFrame.u32PhyAddr[0];
tde_dst.enColorFmt = TDE2_COLOR_FMT_YCbCr422;
tde_dst.u32Width   = pstVFrame->stVFrame.u32Width;
tde_dst.u32Height  = pstVFrame->stVFrame.u32Height;
tde_dst.u32Stride  = pstVFrame->stVFrame.u32Stride[0];
tde_dst.pu8ClutPhyAddr = nullptr;
tde_dst.bYCbCrClut = HI_FALSE;//HI_TRUE;
tde_dst.bAlphaMax255 = HI_FALSE;
tde_dst.bAlphaExt1555 = HI_FALSE;
tde_dst.u8Alpha0 = 0xFF;
tde_dst.u8Alpha1 = 0xFF;
tde_dst.u32CbCrPhyAddr = pstVFrame->stVFrame.u32PhyAddr[1];
tde_dst.u32CbCrStride = pstVFrame->stVFrame.u32Stride[1];

stDstRect.s32Xpos = 0;
stDstRect.s32Ypos = 0;
stDstRect.u32Width = pstVFrame->stVFrame.u32Width;
stDstRect.u32Height = pstVFrame->stVFrame.u32Height;


s32Handle = HI_TDE2_BeginJob();
if(HI_ERR_TDE_INVALID_HANDLE == s32Handle)
{
        printf(" tde start job failed!\n");
}

s32Ret = HI_TDE2_QuickCopy(s32Handle, &tde_src, &stSrcRect, &tde_dst, &stDstRect);
if(s32Ret < 0)
{
        printf("Line:%d failed,ret=0x%x!\n", __LINE__, s32Ret);
        HI_TDE2_CancelJob(s32Handle);
        HI_MPPRUN( HI_MPI_VPSS_ReleaseChnFrame(0, 0, &stFrame) );
        continue;
}

s32Ret = HI_TDE2_EndJob(s32Handle, HI_FALSE, HI_TRUE, 30);
if(s32Ret < 0)
{
        printf("Line:%d,HI_TDE2_EndJob failed,ret=0x%x!\n", __LINE__, s32Ret);
        HI_TDE2_CancelJob(s32Handle);
}


HI_U8       *tmpVirAddr;
HI_U8       *tmpVirAddr2;

tmpVirAddr = (HI_U8 *) HI_MPI_SYS_Mmap(stFrame.stVFrame.u32PhyAddr[0], 1920*1080*2);
tmpVirAddr2 = (HI_U8 *)pstVFrame->stVFrame.pVirAddr[0];
// TDE没将CBCR部份拷贝过来,自已memcpy后图像是OK的,没这段代码图像只有灰度
memcpy( tmpVirAddr2+1920*1080, tmpVirAddr+1920*1080, 1920*1080);  

HI_MPI_SYS_Munmap( tmpVirAddr, 1920*1080*2);

pstVFrame->stVFrame.u32TimeRef++;
HI_MPPRUN( HI_MPI_VO_SendFrame( VODEV_HD, 0, pstVFrame, -1) );
[/code]
我来回答
回答3个
时间排序
认可量排序

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2019-05-30 17:10:50
认可0
看来 TDE2_COLOR_FMT_YCbCr422 并不是semi-planer的

楼主可以试试TDE2_COLOR_FMT_byte, semi-planer要copy两次

justchen

1个粉丝

11

问答

0

专栏

1

资料

justchen 2019-05-30 17:37:19
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=143883&ptid=74822]zhuangweiye 发表于 2019-5-30 17:10[/url]
看来 TDE2_COLOR_FMT_YCbCr422 并不是semi-planer的

楼主可以试试TDE2_COLOR_FMT_byte, semi-planer要co ...[/quote]

多谢大神
将stVFrame.u32PhyAddr[0] 与 stVFrame.u32PhyAddr[1] 分成两次拷贝的确是可以的.只是这代码写得太蛋痛了.
在计算偏移量时居然没飘..

qn1530776437

0个粉丝

3

问答

0

专栏

0

资料

qn1530776437 2020-03-03 09:58:58
认可0
请教一下TED怎么用?open放在项目初始化里还是每次都要open一下,用完都要close一下?谢谢!
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区