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.
Part Number: DRA74
Tool/software: Linux
Hello Team,
We are using custom h/w and software based on DRA746 and SDK 3.03.
Playback for .mov file is not proper:
root@mmt2020-a880:~# gst-launch-1.0 playbin uri=file:///tmp/USB1-1.4-sda1/MPEG-4_AVC_720x576_25fps_5to4_1500kbps_VBR_highprofile.mov video-sink=waylandsink
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
^Chandling interrupt.
Interrupt: Stopping pipeline ...
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...
Sharing the file through Portal.
Complete debug logs with "export GST_DEBUG="2,wayland*:5" are attached.gst_debuglogs.txt
Regards,
Ikshwaku
Further Analysis Update:
1. We are observing a hang issue during pipeline pre-rolling state.
2. We analyzed the issue and found that Ducati video decoder is returning err = -1 for call to VIDDEC3_process() and no buffers are being pushed from the Ducati decoder to next element.
3. But audio buffers are being pushed and this is making the queue for audio getting full, causing the pipeline hang.
4. We checked the file using playbin with software video decoder plugin (avdec_h264). Software video decoder plugin is not getting any error and hence the pipeline is going to playing state. We dumped the software video decoder plugin output to a file and found that the video is proper in the dump file.
5. This issue is observed with default mp4 plugin as well.
Hi Ikshwaku,
h264parse here is always sending data for both the fields and but decoder is consuming only one field. There is a configuration for h264decoder to process both the fields in one process call.
Please apply this patch on gst-ducati, the stream will be playable.
--- a/src/gstducatih264dec.c
+++ b/src/gstducatih264dec.c
@@ -152,6 +152,7 @@ gst_ducati_h264dec_allocate_params (GstDucatiVidDec * self, gint params_sz,
params->presetLevelIdc = IH264VDEC_LEVEL41;
params->errConcealmentMode = IH264VDEC_APPLY_CONCEALMENT;
params->temporalDirModePred = TRUE;
+ params->processCallLevel = IH264VDEC_FRAMELEVELPROCESSCALL;
Please check if your testcases have few more interlaced streams. and check the behavior.
Thanks
Ram