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.
大家好、
我使用的是 DVSDK 4_02_00_01、并且遇到了与同时使用 DEI 和 h264编码器相关的问题
我的应用程序陷入死锁或收到 SIGSEV。
我正在附加调试日志、希望能够解决这个问题
谢谢、此致
Apurv Padole
是否有人面临相同的问题? 是否有人可以解决此问题?
您好 Apurv、
是否可以尝试将以下参数设置为1。
enableDDRbuff = 1.
h264Params.videncParams.size = sizeof (IH264VENC_Params);
h264Params.profileIdc = 100;/*!<配置文件 IDC */
h264Params.levelIdc = 50;/*!<级别 IDC *
h264Params.entropyMode = 1;/*!<熵模式标志0-CAVLC、1-CABAC */
h264Params.transform8x8FlagIntraFrame = 1;/*!<帧间8x8转换的标志*/
h264Params.transform8x8FlagInterFrame = 1;/*!<内部帧中8x8变换的标志*/
h264Params.seqScalingFlag = 1;
h264Params.videncParams.maxFrameRate = 25000;
h264Params.videncParams.reconchromaFormat = 9;
h264Params.videncParams.rateControlPreset = 2;
h264Params.videncParams.maxBitRate = 1500000;
h264Params.videncParams.encodingPreset = 2;
h264Params.videncParams.maxWidth = 576;
h264Params.videncParams.maxHeight = 720;
h264Params.videncParams.inputChromaFormat = 9;
h264Params.enableDDRbuff = 1;
其他 h264 prameters 设置为默认值。
DEI 和 H264编码器进程都以不同的线程运行。
将来自 deinterlacer 的输出缓冲器提供给调整器、调整器将其转换为预期分辨率 viz 736x576、然后将来自电阻器的输出缓冲器提供给 H264编码器。
我在调用处理函数之前正在为 DEI 创建输出缓冲器。
DEI 2.0版和 H264 2.20版
Uboot 中的操作模式被设定为单次触发模式
两种算法都处于不同的暂存组 ID 中、如果它们处于相同暂存组 ID 中、则会发生帧丢失。
您好!
[引用 user="Apurv Padole">H264版本2.20 [/quot]这是一个相当旧的版本。 最新的 GAED 版本为02.30.00.06可下载@
我已附加最新版本的调试库及其接口文件。 请对接口文件进行必要的更改。 您能否尝试使用此调试库、将其重命名为.a. 您的所有参数设置看起来都很好。
e2e.ti.com/.../h264venc_5F00_ti_5F00_arm926_5F00_debug.a.txt
您好 Prashanth、
感谢您的支持。
我已根据您的建议更改了编解码器和调试库。 现在我没有遇到分割故障、但 H264流程中存在致命的不可恢复错误。
我正在附加当前调试日志:e2e.ti.com/.../13Feb_5F00_CrashingDebug2.txt
谢谢、此致、
Apurv Padole
您好 Apurv、
感谢您的日志。 和更新。
您是否为此日志使用了调试库? 如果没有、您可以重命名我共享给"h264venc_ti_arm926.a"的调试库。 现在不启用 CE_DEBUG 日志。 调试库日志现在应该已经足够了。 您还可以共享您现在使用的所有参数。
您好 Praveen、
真的很抱歉,不能再回到过去了
H264参数与之前相同。
Deinterlacer 参数
deiAttrs.height = 576;
deiAttrs.width = 720;
deiAttrs.inFormat =彩色空间_UYVY;
deiAttrs.outFormat =彩色空间_UYVY;
deiAttrs.threshold[0]= 1;
deiAttrs.threshold[1]= 33;
deiAttrs.sysBaseAddr = sysBaseAddr;
deiOutBufferAttrs.dim.height = 576;
deiOutBufferAttrs.dim.width = 720;
deiOutBufferAttrs.dim.lineLength = DMI_Roundup (BufferGfx_calcLineLength (deiOutBufferAttrs.dim.width、
Colorspace_UYVY)、32);
deiOutBufferAttrs.dim.x = 0;
deiOutBufferAttrs.dim.y = 0;
deiOutBufferAttrs.colorspace =彩色空间_UYVY;
我已更改 H264调试库、并附加了调试日志 e2e.ti.com/.../14Jan_5F00_DebugCrashing.txt
谢谢、此致
Apurv Padole
您好!
您能否设置 maxWidth = 1920和 maxHeight = 1080。 并根据需要设置 InputWidth 和 inputHeight。
仅为了记录、我在 H264编码器资源分配(Venc1_create ("h264")之前调用 Deinterlacer 的资源分配函数(Venc1_create)。 这样做是否有问题?
当我在 Deinterlacer 之前调用 H264编码器的资源分配时、没有收到 SIGSEGV、但没有发生隔行。
您好!
[引用 user="Apurv Padole">在 H264编码器资源分配(Venc1_create ("h264")之前、我正在为 Deinterlacer 调用资源分配函数(Venc1_create)作为记录。 这样做是否有问题?[/报价]这不应导致任何问题。
您能否尝试在使用 h264软件包的示例 testapplication 中设置默认参数? 您可以在 DVSDK_insatlldir/DM365_codecs_xx_xx_xx/packages/ti/sdo/codec/h264enc/apps/client/test/testvecs/config/testparams.cfg 上找到它
让 enableDDRbuff = 1;同时确保 将 XDM_YUV_420SP 馈送至 h264编码器。 不支持其他格式。
对于 DEI 的调试库、您需要联系您当地的 TI FAE。
您好!
在为 Deinterlacer 分配资源之前、我尝试为 h264编码器分配资源、我可以看到调试日志中存在一些差异。
代码正常工作、但此方法使视频质量下降。 我正在附加调试日志:e2e.ti.com/.../17Jan2017.txt
maxWidth 和 maxHeight 被设定为720 x 576
谢谢、此致
Apurv Padole
您好!
您面临哪些质量问题?
为什么有帧丢失? DEI 和 H264编码器是否以30fps 运行?
此致、
Anand
帧丢失是由于防止了算法的抢占。 我在调用 DEI 进程之前锁定了互斥量、并在 DEI 进程完成后将其解锁。 在调用 h264编码过程之前、相同的互斥锁被锁定、在 h264编码过程完成后解锁。
我们将返回到出现的方形一分割故障
但并非定期。 它会在一段时间内发生一次。 我无法获取回溯日志。
您好!
为 H264编码器设置'enableDDRBuff=1 '后、就不需要互斥量。
H264和 DEI 可以并行运行。
此致、
Anand
您好!
如果提供 DEI 和 JPEG 的调试库、调试 Segmentation 故障会更容易。
谢谢、此致
Apurv
您好 Prashanth、
答案如下:-
>>您能解释一下您的用例吗? 它以前是 DEI + H264编码器。 您是否同时使用 DEI+H264Encod器+JPEG 编码器? 如何设置组 ID?
我们以前的用例就像同时录制和捕获。 我们初始化了 JPEG 编码器。 我们将在记录期间创建 H264和 DEI 的实例。
但现在、我们只尝试进行视频录制。 在这种情况下、我们将在录制过程中创建 H264和 DEI 编码器、但不会创建 JPEG 编码器。 在这种情况下、我们还会遇到段错误、有时还会重启内核。
我们将为 H264和 JPEG 设置灌浆 ID "1"、为 DEI 设置"2"。
>>当您设置 enableDDRBuff=1 (正如之前和 Anand 建议的那样)时、DEI+H264编码器应该能够解决任何问题。
当您看到分割故障时、您能否共享更多日志、这将有助于进一步分析。
我们设置 enableDDRBuff=1、但会出现分段故障。
内核重新引导的日志文件随附此文件。 e2e.ti.com/.../Kernel-_5F00_Rebooting_5F00_logs.txt
谢谢、此致
UMA Shanker
尊敬的 Uma Shanker:
感谢您的详细回复和内核重启日志(我是编解码器工程师、在系统方面的知识有限。 它看起来像是系统问题)。 您也可以共享分割故障日志吗?
您好 Prashanth、
感谢您的回答。
现在、我们没有遇到分段故障。 我们现在将重新启动内核。
当我们同时使用 h264和 dei 时、您能确认它是否与 h264参数有任何相关性吗?
测量参数如下所示:-
modprobe cmemk phys_start=0x87800000 phys_end=0x90000000 allowOverlap=1 phys_start_1_0x00001000 phys_end_1_0x00008000 Pools;1=1x28672 useHeapIfPoolUnavailable = 1
我要附加我们的配置文件。
e2e.ti.com/.../2134.encodedecode_5F00_new.txt
谢谢、此致
UMA Shanker
尊敬的 Uma Shanker:
只要 H264编码器的"enableDDRBuff = 1"、H264编码器与 DEI 之间就没有相关性。
我认为内核重新启动是因为 WDT 开始启动、因为您的系统已挂起。
PL 确保 H264编码器在系统中正常工作。
此致、
Anand
Anand、您好!
如果系统挂起、内核是否会向应用程序发送 SIGSEV 信号?
此致、
Apurv
您好 Apurv、
如果您已启用看门狗计时器(WDT)、则它将在不活动时过期并重新引导系统。
此致、
Anand