This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] RTOS/DRA74:编码前更新缓冲区、对吧?

Guru**** 2540720 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/738370/rtos-dra74-update-buffer-before-encode-is-right

器件型号:DRA74

工具/软件:TI-RTOS

您好!

我想添加时间水印。 我认为写入是 在编码帧之前更新每个帧、但下面的方法不起作用。 请帮我们查一下这个问题!!!

在编码之前,缓冲区是 YUV,检查 vsdk0304代码,我找到 Draw2D_drawCharYuv420SP 函数。

我写一个功能、如下所示:  

int Draw2D_Draw 水印(void *pFrame)

INT 状态;
Draw2D_手柄抽绳2DHDLLE;
draw2DHNULLLE=空;
Draw2D_BufInfo bufInfo;
状态= Draw2D_create (draw2DHnLd);
if (status!= system_link_status_sok)

退货状态;

//bufInfo
bufInfo.bufWidth = 1280;
bufInfo.bufHeight = 720;
//bufInfo.bufping[0]=;
bufInfo.dataFormat = system_DF_YUV420SP_UV;
bufInfo.transperentColor = DRAW2D_Transparent_color;
bufInfo.transperentColorFormat = SYSTEM_DF_YUV420SP_UV;

//设置附加地址  
bufInfo.bufAddr[0]=(uint32) pFrame;


状态= Draw2D_setBufInfo (draw2DHnelf、&bufInfo);  

Draw2D_FontProperty 字体;
// Draw2D_FontPrm PRM;
// Draw2D_getFontProperty (PRM、&font);

Draw2D_getPropertyFont12 (&font);

Draw2D_drawCharYuv420SP (draw2DHnlfl、0、'A'、&font);  
Draw2D_drawCharYuv420SP (draw2DHnlfl、30、0、'A'、&font);
Draw2D_drawCharYuv420SP (draw2DHnlfl、60、0、'A'、&font);  
Draw2D_drawCharYuv420SP (draw2DHnlfl、90、0、'A'、&font);  
Draw2D_drawCharYuv420SP (draw2DHnlfl、120、0、'A'、&font);
Draw2D_drawCharYuv420SP (draw2DHnele, 150, 0,'a',&font);  
Draw2D_drawCharYuv420SP (draw2DHnlfl、0、30、'A'、&font);  
Draw2D_drawCharYuv420SP (draw2DHnlfl、0、60、'A'、&font);
Draw2D_drawCharYuv420SP (draw2DHnlfl、0、90、'A'、&font);  
vps_printf ("水印已添加! \n");  
// Draw2D_clearBuf (draw2DHnlef);
status = Draw2D_delete ( draw2DHnlfe);

在下面的位置、我添加函数:

在函数 nt32 EncLink_codecQueueFramesToChQue (EncLink_Obj * pObj)中添加了!

对于(frameId = 0;frameId < frameList.numBuf;frameId++)

pFrame = frameList.buffers[frameId];
vidFrm = pFram->payload;

pChObj =&pObj->chObj[pFrame->chNum];



Draw2D_Draw 水印(pFrame->PAYLOAD);

if (system_sf_progressive==
System_Link_Ch_Info_Get_Flag_Scan_Format (
pObj->inQueInfo.chInfo[pFrame->chNum].flags))

pChObj->nextFid = 0;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好
    尝试设置
    pLinkChPrm->EncodingPreset = SYSTEM_XDM_USER_defined;

    并再次检查

    此致、Shiju
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Shiju

    正如您所说的、我也没有找到水印。

    我想为视频添加时间、检查 grpx 是否具有相对函数以完成它。
    你能给我一些建议吗?

    bufInfo.bufWidth = 1280;
    bufInfo.bufHeight = 720;
    //bufInfo.bufping[0]=;
    bufInfo.dataFormat = system_DF_YUV420SP_UV;
    bufInfo.transperentColor = DRAW2D_Transparent_color;
    bufInfo.transperentColorFormat = SYSTEM_DF_YUV420SP_UV;

    参数可能出错,我想设置 YUV 数据格式并向视频添加时间戳。
    您能帮我检查一下吗?

    小利奇
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好、Widic
    我个人尚未尝试过 H264编码器的水印功能、您需要在\ti_components\codecs\ivahd_h264enc_02_00_09_01_products\packages/ti\sdo\codecs\h264enc\docs\h264_Encoder_HDVICP2_UserGuide.pdf 下参考 H264编码 UG。

    这里的另一个选项是、只需通过处理时间戳数据来直接修改视频缓冲区。 您可能需要单独复制 Y 和 UV 数据、因为您将数据格式用作 YUV420SP。 在这种情况下、不需要视频编码的水印功能。

    此致、Shiju
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Shiju

    我想使用第二个选项。但是您能否提供有关如何配置 bufpPitch patameter 的详细信息?

    谢谢。
    鳏寡
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好,维迪克
    间距是缓冲器的宽度、对于 YOUV420格式 Y 和 UV、存储在2个不同的缓冲器中、每个缓冲器8位/像素。 在本例中、间距= Y 和 UV 缓冲器的视频宽度。
    例如、如果分辨率为1280x720、则 Y 和 UV 缓冲器的间距均为1280字节

    此致、Shiju
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢