GStreamer on Android with glimagesink does not work
Describe your issue
Using GStreamer 1.22.5 and glimagesink. On an Orange Pi 5 (RK3588s) chip I am unable to get glimagesink to play a 60fps smoothly at all. Local file playback or http stream.
Expected Behavior
A simple video file should be able to play smoothly on the RK3588s chip.
Observed Behavior
Unwatchable video, plays one frame and then after 30 seconds another frame shows up.
Setup
- Video: https://archive.org/details/BigBuckBunnyFULLHD60FPS
- Operating System: Android 12
- Device: Orange Pi 5
- GStreamer Version: 1.22.5
Steps to reproduce the bug
Take this code from: https://gstreamer.freedesktop.org/documentation/tutorials/android/video.html?gi-language=c and replace the pipeline with: playbin uri=file://path/to/big/buck/bunny/60fps video-sink=glimagesink
How reproducible is the bug?
Always reproduceable.
Screenshots if relevant
Solutions you have tried
Related non-duplicate issues
Additional Information
GStreamer+libav D 0:00:26.913173746 0xb400007d03078b80 :0: nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 0
GStreamer+...ERFORMANCE D 0:00:26.913178412 0xb400007d22e679e0 ../gst/gstminiobject.c:542:ensure_priv_data allocating private data GstMemory miniobject 0xb400007d5354bd70
GStreamer+libav D 0:00:26.913229162 0xb400007d22f31b00 ../ext/libav/gstavviddec.c:926:gst_ffmpegviddec_get_buffer2:<avdec_h264-0> getting buffer picture 0xb400007ce2ec9440
GStreamer+...ERFORMANCE D 0:00:26.913236746 0xb400007d22e679e0 ../gst/gstminiobject.c:441:gst_mini_object_make_writable copy GstBuffer miniobject 0xb400007d82ee8120 -> 0xb400007d82ee6a20
GStreamer+libav D 0:00:26.913280787 0xb400007d22f31b00 ../ext/libav/gstavviddec.c:932:gst_ffmpegviddec_get_buffer2:<avdec_h264-0> opaque value SN 253
GStreamer+...rsers_h264 D 0:00:26.913325412 0xb400007d22e679e0 ../gst-libs/gst/codecparsers/gsth264parser.c:250:gst_h264_parse_nalu_header Nal type 1, ref_idc 0
GStreamer+videodecoder D 0:00:26.913350787 0xb400007d22f31b00 ../gst-libs/gst/video/gstvideodecoder.c:4184:gst_video_decoder_get_frame:<avdec_h264-0> frame_number : 253
GStreamer+h264parse D 0:00:26.913391621 0xb400007d22e679e0 ../gst/videoparsers/gsth264parse.c:1264:gst_h264_parse_handle_frame_packetized:<h264parse0> AVC nal offset 12083
GStreamer+libav D 0:00:26.913429537 0xb400007d22f31b00 ../ext/libav/gstavviddec.c:734:gst_ffmpegviddec_video_frame_new:<avdec_h264-0> new video frame 0xb400007db2e773d0
GStreamer+h264parse D 0:00:26.913463662 0xb400007d22e679e0 ../gst/videoparsers/gsth264parse.c:972:gst_h264_parse_process_nal:<h264parse0> processing nal of type 1 Slice, size 12079
GStreamer+libav D 0:00:26.913492537 0xb400007d22f31b00 ../ext/libav/gstavviddec.c:959:gst_ffmpegviddec_get_buffer2:<avdec_h264-0> storing opaque 0xb400007db2e773d0
GStreamer+h264parse D 0:00:26.913531037 0xb400007d22e679e0 ../gst/videoparsers/gsth264parse.c:1086:gst_h264_parse_process_nal:<h264parse0> first_mb_in_slice = 0
GStreamer+h264parse D 0:00:26.913592871 0xb400007d22e679e0 ../gst/videoparsers/gsth264parse.c:1089:gst_h264_parse_process_nal:<h264parse0> frame start: 1
GStreamer+...rsers_h264 D 0:00:26.913633996 0xb400007d22e679e0 ../gst-libs/gst/codecparsers/gsth264parser.c:2294:gst_h264_parser_parse_slice_hdr parsing "Slice header", slice type 6
GStreamer+h264parse D 0:00:26.913677162 0xb400007d22e679e0 ../gst/videoparsers/gsth264parse.c:1097:gst_h264_parse_process_nal:<h264parse0> parse result 0, first MB: 0, slice type: 6
GStreamer+h264parse D 0:00:26.913722954 0xb400007d22e679e0 ../gst/videoparsers/gsth264parse.c:488:gst_h264_parse_wrap_nal:<h264parse0> nal length 12079
GStreamer+libav D 0:00:26.913736662 0xb400007d22f31b00 ../ext/libav/gstavviddec.c:1654:gst_ffmpegviddec_do_qos:<avdec_h264-0> decoding time 171114664
GStreamer+GST_MEMORY D 0:00:26.913760579 0xb400007d22e679e0 ../gst/gstmemory.c:141:gst_memory_init new memory 0xb400007da2e7ccd0, maxsize:12090 offset:0 size:12083
GStreamer+libav D 0:00:26.913814246 0xb400007d22f31b00 ../ext/libav/gstavviddec.c:1835:gst_ffmpegviddec_video_frame:<avdec_h264-0> pts 4100000000 duration 16666666
GStreamer+...rsers_h264 D 0:00:26.913882787 0xb400007d22e679e0 ../gst-libs/gst/codecparsers/gsth264parser.c:1617:gst_h264_parser_identify_nalu_avc Can't parse, buffer has too small size 12083, offset 12083
GStreamer+libav D 0:00:26.913883954 0xb400007d22f31b00 ../ext/libav/gstavviddec.c:1837:gst_ffmpegviddec_video_frame:<avdec_h264-0> picture: pts 0
GStreamer+libav D 0:00:26.913970287 0xb400007d22f31b00 ../ext/libav/gstavviddec.c:1839:gst_ffmpegviddec_video_frame:<avdec_h264-0> picture: num 168
GStreamer+libav D 0:00:26.914023079 0xb400007d22f31b00 ../ext/libav/gstavviddec.c:1841:gst_ffmpegviddec_video_frame:<avdec_h264-0> picture: display 0
GStreamer+GST_CAPS D 0:00:26.913945496 0xb400007d22e679e0 ../gst/gstpad.c:2715:gst_pad_has_current_caps:<h264parse0:src> check current pad caps video/x-h264, stream-format=(string)avc, alignment=(string)au, level=(string)5.2, profile=(string)high, codec_data=(buffer)01640034ffe1001e67640034acd9403c0043ec05b8086802000003000200000300f01e30632c01000668ebe3cb22c0, width=(int)3840, height=(int)2160, framerate=(fraction)60/1, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)2:1:7:1, coded-picture-structure=(string)frame, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true
GStreamer+libav D 0:00:26.914061579 0xb400007d22f31b00 ../ext/libav/gstavviddec.c:1843:gst_ffmpegviddec_video_frame:<avdec_h264-0> picture: opaque 0xb400007db2e76b90
GStreamer+GST_MEMORY D 0:00:26.914100954 0xb400007d22e679e0 ../gst/gstmemory.c:89:_gst_memory_free free memory 0xb400007d5354bd70
GStreamer+libav D 0:00:26.914114079 0xb400007d22f31b00 ../ext/libav/gstavviddec.c:1845:gst_ffmpegviddec_video_frame:<avdec_h264-0> picture: reordered opaque 244