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.

[参考译文] Linux/DRA746:Waylandsink:视频回放四倍

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/676523/linux-dra746-waylandsink-video-playback-qurey

器件型号:DRA746

工具/软件:Linux

大家好、团队、  

我们使用基于 DRA746 和 SDK 3.03的定制硬件和软件。

我们正在尝试播放高分辨率(2560x1442)视频。  

我们有两个具有相同编解码器属性的不同文件、一个文件在流水线和媒体播放器上都可以正常播放、但一个文件只能在流水线中播放、而在媒体播放器中失败并导致 Weston 崩溃。

还会获得以下日志:

日志信息详细信息1 T2511 GSTLogs FIXME playbin gstplaybin2.c (3182):_uridecodebin_event_probe: 考虑对流启动事件实施组 ID 处理
日志信息详细信息1 T2511 GSTLogs FIXME playbin gstplaybin2.c (3182):_uridecodebin_event_probe: 考虑对流启动事件实施组 ID 处理
日志信息详细信息1 T2510 GSTLogs WARN default mp4_interface.c (1150):gst_update_creation_data: 1970年之前无法处理数据时间
日志信息详细信息1 T2511 GSTLogs WARN Ducati gstducatividdec (1472):GST_Ducati_vidd_dec_chain: 从 CODE_Process 推入失败刷新
日志信息详细信息1 T2511 GSTLogs WARN Ducati gstducatih264dec (402):GST_Ducati_h264dec 设置灌电流_cap: 未在电容器上找到 num 次序的帧、根据流参数计算得出5
日志信息详细信息1 T2511 GSTLogs WARN Ducati gstducatih264dec (402):GST_Ducati_h264dec 设置灌电流_cap: 未在电容器上找到 num 次序的帧、根据流参数计算得出5
日志信息详细信息1 T2511 GSTLogs WARN Ducati gstducatih264dec (410):GST_Ducati_h264dec 设置灌电流_cap: 使用0帧重新排序
日志信息详细信息1 T2511 GSTLogs warn Ducati gstducatividdec (590):codec_process: 将电容器中的最大参考帧更改为13
日志信息详细信息1 T2511 GSTLogs warn landsink wlvideo.c (102):GST_WL_shm_format_TO_VIDEO:未找到 GST 视频格式
日志信息详细信息1 T2511 GSTLogs warn landsink wlvideo.c (102):GST_WL_shm_format_TO_VIDEO:未找到 GST 视频格式
日志信息详细信息1 T2511 GSTLogs warn Ducati gstducatividdec (753):codec_process: 推送失败刷新
日志信息详细信息1 T2530 GSTLogs WARN Ducati gstducatividdec (590):codec_process: 将电容器中的最大参考帧更改为16
日志信息详细1 T1951 GSTLogs FIXME bin gstbin.c (4075):GST_bin_query:再次在 GstBin 中实现持续时间缓存
日志信息详细信息1 T2511 GSTLogs WARN Ducati gstducatih264dec (402):GST_Ducati_h264dec 设置灌电流_cap: 未在电容器上找到 num 次序的帧、根据流参数计算得出5
日志信息详细信息1 T2526 GSTLogs FIXME bin gstbin.c (4075):GST_bin_query:再次在 GstBin 中实现持续时间缓存
日志信息详细信息1 T2526 GSTLogs FIXME bin gstbin.c (4075):GST_bin_query:再次在 GstBin 中实现持续时间缓存
日志信息详细信息1 T2526 GSTLogs FIXME bin gstbin.c (4075):GST_bin_query:再次在 GstBin 中实现持续时间缓存
日志信息详细信息1 T2511 GSTLogs warn Ducati gstducatividdec (753):codec_process: 推送失败刷新
日志信息详细信息1 T2511 GSTLogs WARN Ducati gstducatividdec (1472):GST_Ducati_vidd_dec_chain: 从 CODE_Process 推入失败刷新
日志信息详细信息1 T2321 GSTLogs warn Ducati gstducatividdec (570):codec_process: ERR=1、扩展错误=00040000
日志信息详细信息1 T2321 GSTLogs 错误 Ducati gstducati.c (61):GST_Ducati_log_extended_error_info:位18 (00040000):流结束
日志信息详细信息1 T2321 GSTLogs warn basesrc gstbasesrc.c (3481):gst_base_src_start_complete: 焊盘尚未激活
日志信息详细信息1 T2321 GSTLogs warn basesrc gstbasesrc.c (3481):gst_base_src_start_complete: 焊盘尚未激活

您能不能建议这里出了什么问题?

谢谢、此致、

Ikshwaku

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Ikshwaku、
    我在这里已经为此提供了一个解决方案。
    e2e.ti.com/.../668140

    您是否未进行此修复?

    RAM
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    现在、U 意识到您已经在 gstducati 中修复了以支持高分辨率流。
    特定的蒸汽会出现问题。 请分享该数据流
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、RAM、

    我们已将此修复程序包含在构建中。 最初、我们针对视频文件提出了此问题、该文件无法播放。 在包含用于修复之后、我们能够使用 gstreamer 流水线播放该文件和另一个文件。 但是、当我们尝试使用媒体播放器时、Weston 就会崩溃。

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

    您可以通过以下链接下载视频文件: transfer.harman.com/.../2Q4SzThb0NPljmj4JV3uml

    此致、
    Ikshwaku
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Ikshwaku、
    我没有看到新高分辨率流的媒体流播放有任何问题。 它对我提到的修补程序运行良好。

    您还需要在 gstvpe 上添加补丁、因为 playbin 始终选择 VPE。

    --src/gstvpepbins.c
    ++ b/src/gstvpepbins.c
    @@-40、12 + 40、12 @@静态 GstStaticPadTemplate ducatih264d_dec_sink_factory = GST_static_pad_template
    GST_STATIC_CAPS ("视频/x-h264、"
    "stream-format = byte-stream、"/*仅为 byte-stream *
    "对齐= au、" /*仅整个帧*/
    - "宽度=(int)[16、2048],"
    + "宽度=(int)[16、2560],"
    "高度=(int)[16、2048];"
    "视频/x-h264、"
    "stream-format = byte-stream、"/*仅为 byte-stream *
    "对齐= au、" /*仅整个帧*/
    - "宽度=(int)[16、2048],"
    + "宽度=(int)[16、2560],"
    "高度=(int)[16、2048],"
    "配置文件=(字符串){HIGH、HIGH -10 INTRAT、HIGH -10、HIGH -4:2:2 INTRAT、"
    "high-4:2:2、high-4:4:4–Intra、high-4:4:4、cavlc-4:4:4-Intra}、"

    如果没有此修补程序,Playbin 也可以正常工作。 您能否在 gstvpe 上应用此修补程序并进行尝试
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、RAM、

    使用 playbin,我们可以播放此视频,但当使用 Media Player 尝试时,Weston 崩溃,视频无法播放,并且无法获得我在第一个帖子中传播的日志。
    但其他高分辨率视频可通过 gstreamer 流水线和 Media Player 播放

    因此、如果有任何输入、媒体播放器出现故障。

    此致、
    Ikshwaku
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Ikshwaku
    您能否检查 dmesg 日志并查看任何日志"omapdrm omapdrm.0: Could not remap:-12 "或
    libdce MMRpc 是否有错误?

    我怀疑128MB 的平铺内存已用尽,无法播放此内容。 请确认您是否观察到这些错误。

    从您的媒体播放器日志中、似乎 playbin 选择 Ittiam 的多路信号分离器、但流水线选择您要尝试的多路信号分离器?
    如果您使用相同的多路信号分离器、则显式流水线而不是 qtdemux 会怎么样?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    RAM
    在 demsg 中获得了这些日志

    [613.317416] omapdrm omapdrm.0:无法重映射:-12 (3)
    [613.317439] PVR_K:(错误):DmaBufImportAndAcquiredPhysAddr:dma_Buf_map_attachment failed:-487782080
    [613.317455] PVR_K:(错误):PVRSRVMapDmaBufKM:无法获取 dma-buf phys addr
    [613.317470] PVR_K:(错误):PVRSRVMapDmaBufBW:映射 dma-buf 句柄失败

    对于媒体播放器、我们不使用显式流水线、而是使用普通的 Playbin 流水线、将 landsink 用作视频接收器。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的、128MB 的平铺器已用尽、这是错误和播放此特定流失败的原因。
    您能检查一下
    开始播放之前、请先执行 Cat /sys/kernel/debug/dri/0/tiler_map。 这显示了已占用的更平铺内存大小。 理想情况下、如果您的 LCD 尺寸为1920x1080、则该值应约为8 MB

    PSDKLA3.03修复了在非平铺内存中分配 SGX 缓冲区的问题

    RAM
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Cat /sys/kernel/debug/dri/0/tiler_map 正在打印容器0和容器1、我无法理解输出。

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

    您好、Ikshwaku、

    我下载了 tiler_map 日志。 容器0显示随时占用的 TILER2D 存储器、容器1是 TILER1D 存储器引脚信息。 TILER2D 不被任何应用程序使用。

    该图形显示占用或剩余的内存大小。 在 Before_playback.txt 中,开始回放之前大约还剩下99MB。 它还显示了1440k、1500k 和1024k 的缓冲区分配。 在启动应用程序之前、您是否知道在 Weston 上还运行什么?

    After_playback.txt 显示了许多6048k 缓冲器。 这些是分配给 Ducati 解码器输出的缓冲器。 2560x1440的填充宽度和高度分别为268x1536和268x1536x1.5=6048kb。  tiler_map 显示播放过程中剩余大约35MB 的内存。

    对于问题流、您将观察到整个128MB 内存已用尽、并导致错误。

    但在 EVM 上、媒体播放器播放显示大约20MB 仍然是 left.e2e.ti.com/.../before_5F00_playbck_5F00_EVM.txt

    e2e.ti.com/.../after_5F00_playbck_5F00_EVM.txt

    RAM