Skip to content
Snippets Groups Projects

Encoding issue Wave5

  • Clone with SSH
  • Clone with HTTPS
  • Embed
  • Share
    The snippet can be accessed without any authentication.
    Authored by Sebastian Fricke

    A non-deterministic issue was discovered with the Wave5 encoder.

    Tested on V9 + necessary changes (DT entry, Kconfig adjustment and get irq change) https://gitlab.collabora.com/chipsnmedia/kernel/-/commits/wave5_V9_base/

    TEST COMMAND

    for i in 1 2 3 4 5; do echo -e "\nRun $i\n"; gst-launch-1.0 videotestsrc num-buffers=300 ! v4l2h264enc ! h264parse ! qtmux ! filesink location=test.mp4; if [ $? -eq 1 ]; then echo "FAIL"; else echo "CORRECT"; fi; done

    So far, I have found three different issues:

    1. Internal data stream error in gstbasesrc
    ERROR: from element /GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0: Internal data stream error.
    Additional debug info:
    ../gstreamer-1.16.3/libs/gst/base/gstbasesrc.c(3072): gst_base_src_loop (): /GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0:
    streaming stopped, reason error (-5)
    1. Buffer has no PTS
    ERROR: from element /GstPipeline:pipeline0/GstQTMux:qtmux0: Could not multiplex stream.
    Additional debug info:
    ../gst-plugins-good-1.16.3/gst/isomp4/gstqtmux.c(4832): gst_qt_mux_add_buffer (): /GstPipeline:pipeline0/GstQTMux:qtmux0:
    Buffer has no PTS.
    1. unsorted double linked list corrupted
    (gst-launch-1.0:1541): GStreamer-WARNING **: 19:42:59.748: gst_mini_object_remove_parent: couldn't find parent 0xffff78056000 (object:0x268935a0)
    
    (gst-launch-1.0:1541): GStreamer-CRITICAL **: 19:42:59.748: gst_buffer_unmap: assertion 'GST_IS_BUFFER (buffer)' failed
    
    (gst-launch-1.0:1541): GStreamer-CRITICAL **: 19:42:59.748: gst_mini_object_unlock: assertion 'state >= SHARE_ONE' failed
    
    (gst-launch-1.0:1541): GStreamer-CRITICAL **: 19:42:59.748: gst_pad_push: assertion 'GST_IS_BUFFER (buffer)' failed
    malloc(): unsorted double linked list corrupted
    Aborted (core dumped)

    The issue is not determenistic:

    RESULT

    Run 1
    
    Setting pipeline to PAUSED ...
    Pipeline is PREROLLING ...
    Redistribute latency...
    Pipeline is PREROLLED ...
    Setting pipeline to PLAYING ...
    New clock: GstSystemClock
    Got EOS from element "pipeline0".
    Execution ended after 0:00:00.266642819
    Setting pipeline to NULL ...
    Freeing pipeline ...
    CORRECT
    
    Run 2
    
    Setting pipeline to PAUSED ...
    Pipeline is PREROLLING ...
    Redistribute latency...
    Pipeline is PREROLLED ...
    Setting pipeline to PLAYING ...
    New clock: GstSystemClock
    
    ** (gst-launch-1.0:1416): CRITICAL **: 18:41:43.239: gst_video_frame_map_id: assertion 'GST_IS_BUFFER (buffer)' failed
    
    (gst-launch-1.0:1416): GStreamer-CRITICAL **: 18:41:43.239: gst_pad_push: assertion 'GST_IS_BUFFER (buffer)' failed
    ERROR: from element /GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0: Internal data stream error.
    Additional debug info:
    ../gstreamer-1.16.3/libs/gst/base/gstbasesrc.c(3072): gst_base_src_loop (): /GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0:
    streaming stopped, reason error (-5)
    Execution ended after 0:00:00.013028300
    Setting pipeline to NULL ...
    Freeing pipeline ...
    FAIL
    
    Run 3
    
    Setting pipeline to PAUSED ...
    Pipeline is PREROLLING ...
    Redistribute latency...
    Pipeline is PREROLLED ...
    Setting pipeline to PLAYING ...
    New clock: GstSystemClock
    Got EOS from element "pipeline0".
    Execution ended after 0:00:00.266707590
    Setting pipeline to NULL ...
    Freeing pipeline ...
    CORRECT
    
    Run 4
    
    Setting pipeline to PAUSED ...
    Pipeline is PREROLLING ...
    Redistribute latency...
    Pipeline is PREROLLED ...
    Setting pipeline to PLAYING ...
    New clock: GstSystemClock
    Got EOS from element "pipeline0".
    Execution ended after 0:00:00.264410464
    Setting pipeline to NULL ...
    Freeing pipeline ...
    CORRECT
    
    Run 5
    
    Setting pipeline to PAUSED ...
    Pipeline is PREROLLING ...
    Redistribute latency...
    Pipeline is PREROLLED ...
    Setting pipeline to PLAYING ...
    New clock: GstSystemClock
    
    ** (gst-launch-1.0:1428): CRITICAL **: 18:41:44.139: gst_video_frame_map_id: assertion 'GST_IS_BUFFER (buffer)' failed
    
    (gst-launch-1.0:1428): GStreamer-CRITICAL **: 18:41:44.139: gst_pad_push: assertion 'GST_IS_BUFFER (buffer)' failed
    ERROR: from element /GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0: Internal data stream error.
    Additional debug info:
    ../gstreamer-1.16.3/libs/gst/base/gstbasesrc.c(3072): gst_base_src_loop (): /GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0:
    streaming stopped, reason error (-5)
    Execution ended after 0:00:00.128638867
    Setting pipeline to NULL ...
    Freeing pipeline ...
    FAIL
    Edited
    snippetfile1.txt 54.23 KiB
    0% Loading or .
    You are about to add 0 people to the discussion. Proceed with caution.
    Finish editing this message first!
    Please register or to comment