描述
Why do I get an error when using GStreamer in reduced latency mode (latency-mode=1) when trying to decode more than 2 streams?
gst-launch-1.0 -v -e filesrc location="test_rec.mkv" ! matroskademux ! h265parse ! omxh265dec latency-mode=1 internal-entropy-buffers=5 ! fakesink &
Setting pipeline to PAUSED ...
Setting pipeline to PAUSED ...
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Pipeline is PREROLLING ...
Pipeline is PREROLLING ...
...
...
/!\ decoder: hardware doesn't have enough resources (142)
[E] [TreatSetStateCommand]: OMX_ALG_ErrorChannelResourceUnavailable
[E] [FillThisBuffer]: OMX_ErrorInvalidState
ERROR: from element /GstPipeline:pipeline0/GstOMXH265Dec-omxh265dec:omxh265dec-omxh265dec0: GStreamer encountered a general supporting library error.
Additional debug info:
../../git/omx/gstomxvideodec.c(3362): gst_omx_video_dec_handle_frame (): /GstPipeline:pipeline0/GstOMXH265Dec-omxh265dec:omxh265dec-omxh265dec0:
OpenMAX component in error state Component doesn't have enough hardware resources available to process the channel (0x90001001)
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
[E] [GetParameter]: OMX_IndexParamPortDefinition : OMX_ErrorInvalidState
[E] [GetParameter]: OMX_IndexParamPortDefinition : OMX_ErrorInvalidState
[E] [GetParameter]: OMX_IndexParamPortDefinition : OMX_ErrorInvalidState
[E] [GetParameter]: OMX_IndexParamPortDefinition : OMX_ErrorInvalidState
[E] [SendCommand]: OMX_ErrorInvalidState
[E] [GetParameter]: OMX_IndexParamPortDefinition : OMX_ErrorInvalidState
gst-launch-1.0: base/omx_module/omx_module_dec.cpp:366: void DecModule::FreeDMA(int): Assertion `!handlesOut.Exist(handle)' failed.
...
解决方案
This is a known issue with the Zynq UltraScale+ MPSoC VCU - LogiCORE H.264/H.265 Video Codec Unit (VCU) when using GStreamer with reduced latency mode (latency-mode=1).
The OMX layer was incorrectly setting the VCU to Low Latency mode (latency-mode=2).
- 2018.2 - Users can download the PetaLinux Recipes and Patch files from (Xilinx Answer 71798) to work around this issue.
- 2018.3 - Users can download the PetaLinux Recipes and Patch files from (Xilinx Answer 71798) to work around this issue.
- 2019.1 - Users can download the PetaLinux Recipes and Patch files from (Xilinx Answer 72324) to work around this issue.
- 2019.2 - This issue will be fixed in the 2019.2 and later versions.