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:某些264流器解码失败

Guru**** 2589300 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/641140/linux-dra746-some-264-streamer-decode-failed

器件型号:DRA746

工具/软件:Linux

您好 RAM、  

我发现某些264媒体文件(在具有 VLC 应用程序的 PC 中是可以的)无法与 TI 264解码器一起播放。

outArgs 的扩展错误为 0x2000a00、该值被视为 IH264VDEC_ERR_MISSINGSLICE XDM_APPLIEDCONCEALMENT XDM_CORPTEDDATA。

我将此文件附在下面、请帮助我检查。

此外、解码器可以解析来自流头的正确宽度和高度。

请访问 Regards.e2e.ti.com/.../test3.mp4

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

    我已将您的问题转交给一位专家征求意见。

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    高您好、
    我使用 Elecard 流分析器分析了流、似乎整个流没有 I/IDR 帧。 所有帧都是 B 帧。
    但我们的示例应用 viddec3test 不会产生任何错误、但不会显示任何错误。

    我将进行检查并告知您

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

    高您好、

    在共享/mp4文件中、VCL 数据丢失。 使用 ffmpeg 提取基本流时、该流能够解码并排除任何错误。 连接提取的基本流。

    e2e.ti.com/.../test3_5F00_check.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Prashanth、您好!
    我检查了 test3_check.h264,发现264解码器可以解码,但仍然返回一些错误,例如:
    mOutArgs->ExtendedError 0xa10、IH264VDEC_ERR_MBDATA XDM_APPLIEDCONCEALMENT XDM_CORPTEDDATA

    TI 解码器 SDK 版本是否较旧? 较新的 SDK 可能可以吗?

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

    高您好、  

    使用最新的 SDK、我没有观察到初级流和您的 mp4流的任何错误。

    您可以使用远程 proc 日志检查编解码器版本。 在目标上执行以下命令、它将显示与 IPUMM 集成的所有编解码器的版本

    CAT /sys/kernel/debug/remoteproc/remoteproc1/trace0

    谢谢

    RAM

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

    高您好、

    [引用用户="Hongbo GAO"]我的 TI 解码器 SDK 版本是否较旧? 较新的 SDK 可能可以吗?! 您可以尝试上述 POST 中 RAM 所述的方法吗? 或者,您也可以在发行说明中检查编解码器版本。

    我在独立的最新编解码器版本中没有看到任何错误。 此外、Vega 分析仪未显示提取的流的任何错误。

    所有最新的编解码器版本都在这里: git.ti.com/.../codecs

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

    编解码器版本如下所示:

    [0][ 0.000] commit-ID:bdba6b5
    [0][ 0.000] CODEC VER 开始:
    [0][ 0.000] H264D-02.00.20.01
    [0][ 0.000] MPEG4D-01.00.15.01
    [0][ 0.000] MPEG2D-01.00.16.01
    [0][ 0.000] VC1D-01.00.02.04
    [0][ 0.000] MJPEGD-01.00.14.01
    [0][ 0.000]
    [0][ 0.000] H264E-02.00.09.01
    [0][ 0.000] MPEG4E-01.00.02.01


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

    高您好、
    最新的编解码器版本如下所示:

    解码器:
    1. H264D-02.00.21.01
    2. MPEG4D-01.00.15.01
    3. MPEG2D-01.00.17.01
    4. VC1D-01.00.02.05
    5. MJPEGD-01.00.16.01

    编码器:
    1. H264E-02.00.09.01
    MPEG4E-01.00.02.01

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

    您能否将帧编号、inputBytes 打印到编解码器和编解码器消耗的字节并共享日志。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Prashanth、您好!  

    [引用 user="Prashanth Kumar15"]您能否将帧编号 inputBytes 打印到编解码器和编解码器消耗的字节并共享日志。

    VIDDEC3_Process mInCount 1、mInArgs->inputID=b5902f28、FD 0x20、mInput b5a04000、大小3035、 字节消耗3035、时间戳0.000、错误0

    从上面的日志中、mInCount 是帧编号、size 是 inputBytes to codec 和 bytesConsumed。 错误是编解码器的结果。

    我为您附加了名为 ti_264_decode_fail.zip 的日志。

    最好的平地机。

    Gaoe2e.ti.com/.../ti_5F00_264_5F00_decoder_5F00_fail.zip

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

    感谢高的日志。

    似乎某些扩展参数设置会导致此问题。 使用基类参数可以正常工作。 请分享参数设置。 我将向您建议所需的修改。

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

    Prashanth、您好!  

    感谢您的回答。 参数如下所示:

    int32_t DecoderH264::initCommonStaticParams()
    {
    // xxx 其他编解码器支持;viddec3test 使用 IVIDDEC3_Params
    mParams =(VIDDEC3_Params*) DCE_alloc (sizeof (IH264VDEC_Params));
    if (!mParams){
    错误("DEC 参数内存分配失败");
    返回-1;
    }
    mParams->size = sizeof (IH264VDEC_Params);
    mParams->maxBitRate = 10000000;
    mParams->displayDelay = IVIDDEC3_DISPLAY_DELAY_AUTO;
    mParams->numOutputDataUnits = 0;
    
    //将最大宽度和高度设置为尽可能大
    mParams->maxWidth = 4096;//mWidth
    mParams->maxHeight = 4096;//mHeight
    mParams->maxFrameRate = 30000;
    mParams->dataEndease. = XDM_BYTE;
    mParams->forceChromaFormat = XDM_YUV_420SP;
    mParams->operatingMode = IVIDEO_DEDICE_ONLY;
    mParams->displayBufsMode = IVIDDEC3_DISPLAYBUFS 嵌入式;
    mParams->inputDataMode = IVIDEO_ENTIREFRAME;
    mParams->metadataType[0] = IVIDEO_METADAPLANE_NONE;
    mParams->metadataType[1] = IVIDEO_METADAPLANE_NONE;
    mParams->metadataType[2] = IVIDEO_METADAPLANE_NONE;
    mParams->outputDataMode = IVIDEO_ENTIREFRAME;
    mParams->numInputDataUnits = 0;
    mParams->errorInfoMode = IVIDEO_ERRORINFO_OFF;
    
    返回0;
    }
    
    int32_t DecoderH264::initSpecStaticParams()
    {
    断言(mParams);
    mH264Params =(IH264VDEC_Params *) mParams;
    mH264Params->dpbSizeInFrames = IH264VDEC_DPB_NUMFRAMES_AUTO;
    mH264Params->pConstantMemory = 0;
    mH264Params->presetLevelIdc = IH264VDEC_LEVEL41;
    mH264Params->errConcealmentMode = IH264VDEC_APPLE_HELITHOT;
    mH264Params->temporalDirModePred = true;
    mH264Params->detectCabacAlignErr = IH264VDEC_DISABLE_CABACALIGNERR_DETECTION;
    mH264Params->bitStreamFormat = IH264VDEC_BYTE_STREAME_FORMAT;
    mH264Params->假 帧类型= mDecodeIOnly? IH264VDEC_DEDEC_DEDR_I_ONLY:IH264VDEC_DEDEC_ALL;
    调试("mDecodeIOnly %d"、mDecodeIOnly);
    返回0;
    }
    
    int32_t DecoderH264:::initCommonDynamicParams()
    {
    如果(!mDynParams){
    mDynParams =(IVIDDEC3_DynamicParams*) dc_alloc (sizeof (IH264VDEC_DynamicParams));
    mDynParams->size = sizeof (IH264VDEC_DynamicParams);
    mH264DynParams =(IH264VDEC_DynamicParams *) mDynParams;
    
    mDynParams->displayWidth = 0;
    mDynParams->frameSkipMode = IVIDEO_NO_SKIP;
    mDynParams->newFrameFlag = XDAS_true;
    }
    
    //常用参数
    mDynParams->DecodeHeader = mDecoderHeader? XDM_parse_header:XDM_decode_AU;
    
    返回0;
    }
    
    int32_t DecoderH264::initSpecDynamicParams()
    {
    返回0;
    }
    

    首先、我将假头设置为 parse_header 模式、因为我要从流头解析 w/h。

    在我获得流分辨率后、再次将 诱骗接头设置为解码_AU 模式。

    此外、我注意到这些参数适用于其他264个流。

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

    高您好、

    感谢这里的 params。 一切看起来都很好。 您能否将 maxWidth & maxHeight 设置为低于2048。 对于这个数据流、假设 maxHeight = 1088;maxWidth = 1920。 因为、如果有的话
    最大高度或最大宽度的值大于2048、则支持的最小宽度为336。 (请参阅用户指南常见问题解答)

    此流分辨率为176x144。