Android media playback performance

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Android media playback performance

rrazavi
Hi,
I'm testing a simple gstreamer android application to playback H264 file,
the pipeline looks like this :
urisourcebin name=source ! decodebin name=proxy  ! glimagesinkelement
name=sink

and I use autoplug signal to connect decodebin to glimagesinkelement

My source is a H264 4K 30FPS file and I have tested this on 4 different
modern chip-set, all of them can playback the file smoothly using VLC or
android native media player.

using gstreamer I keep getting error(depending on chipset changes) :
sys/androidmedia/gstamcvideodec.c:1417:gst_amc_video_dec_loop:<amcvideodec-omxrkvideodecoderavc0>
Frame is too late, dropping (deadline -0:00:00.035990779)

If I connect decodebin to a " fakesink sync=true" I wont get errors from the
decoder, so I assume there are extra processes happening in GPU when we use
glimagesinkelement compared to other players that are not necessary and this
prevent gstreamer from having good performance. if I run this on an nvidia
shield the playback is fine which I assume it's because it has a powerful
GPU.
Does anyone have any suggestion on how to resolve this issue ?

Ihave tested against amlogic s912, allwiner H6, rockchip rk3318 and rk3328

Regards




--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Android media playback performance

Matthew Waters
1. glimagesinkelement does not include color conversion or uploading capabilities. You want glimagesink.
2. The raw decodebin ! glimagesink pipeline requires proxying the caps and context queries from decodebin to glimagesink.
3. You should use playbin/playbin3 instead which performs all these steps automatically

Cheers
-Matt

On Wed., 6 Nov. 2019, 07:46 rrazavi, <[hidden email]> wrote:
Hi,
I'm testing a simple gstreamer android application to playback H264 file,
the pipeline looks like this :
urisourcebin name=source ! decodebin name=proxy  ! glimagesinkelement
name=sink

and I use autoplug signal to connect decodebin to glimagesinkelement


My source is a H264 4K 30FPS file and I have tested this on 4 different
modern chip-set, all of them can playback the file smoothly using VLC or
android native media player.

using gstreamer I keep getting error(depending on chipset changes) :
sys/androidmedia/gstamcvideodec.c:1417:gst_amc_video_dec_loop:<amcvideodec-omxrkvideodecoderavc0>
Frame is too late, dropping (deadline -0:00:00.035990779)

If I connect decodebin to a " fakesink sync=true" I wont get errors from the
decoder, so I assume there are extra processes happening in GPU when we use
glimagesinkelement compared to other players that are not necessary and this
prevent gstreamer from having good performance. if I run this on an nvidia
shield the playback is fine which I assume it's because it has a powerful
GPU.
Does anyone have any suggestion on how to resolve this issue ?

Ihave tested against amlogic s912, allwiner H6, rockchip rk3318 and rk3328

Regards




--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Android media playback performance

rrazavi
Hi, thank you for your respond
1- I have used glimagesink and it makes no difference, you can put
glimagesinkelement there as decoder output is RGBA gl memory  and they get
linked fine, video does playback it's choppy and frames get dropped
2- I'm already doing negotiation with a   autoplug_query_cb
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/928>  , I'm
not sure that autoplug is enough or not
3- Exact same performance issue does exist using playbin or playbin3

and I forgot to mention I'm using gstreamer 1.16.1
Regards,
Reza



--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Android media playback performance

Sirius Wu
Hi Reza,

I am also using 1.16.1 on an rk3229 box to play HLS streamed videos. I have an issue with switching bitrate. For constant speed the playing is not choppy.

I do not use omx.google.aac.decoder because issue 189 still exists for my board.


rrazavi <[hidden email]> 於 2019年11月6日 週三 上午5:48 寫道:
Hi, thank you for your respond
1- I have used glimagesink and it makes no difference, you can put
glimagesinkelement there as decoder output is RGBA gl memory  and they get
linked fine, video does playback it's choppy and frames get dropped
2- I'm already doing negotiation with a   autoplug_query_cb
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/928>  , I'm
not sure that autoplug is enough or not
3- Exact same performance issue does exist using playbin or playbin3

and I forgot to mention I'm using gstreamer 1.16.1
Regards,
Reza



--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel