Open donchummar opened 3 years ago
Thanks for the thorough description, and the repro steps.
any idea whats going on here ?
Everything seems to point at this being an issue with the sony device you are testing on.
The following steps I would suggest are:
adb shell screenrecord
, which clearly show the expected and observed behavior.Assigning @ojw28 for input on device-specific issues.
This is a related issue of https://github.com/google/ExoPlayer/issues/7999
Setting setZOrderMediaOverlay
to false for the big view is recommended.
I didn't tested on that device, but I don't have any reports that it malfunctions on this app https://play.google.com/store/apps/details?id=com.fgl27.twitch and there is a lot of sony bravia devices using it.
Test it and let us know, the app uses latest version of ExoPlayer.
- As a workaround for sony tv devices, is it acceptable for you to use Texture view?
we are moving all the contents to drm protected asset with multiview so we eventually have to move to surfaceview
- Report to the device manufacturer. I think we can help with this if you provide us with two videos captured on the device using
adb shell screenrecord
, which clearly show the expected and observed behavior.
attached video of how it behaves
this video is recored with adb but for some reason this video not showing the issue as actually visible in tv
https://user-images.githubusercontent.com/6000288/111228043-ad13a080-8637-11eb-9849-7971e5f57022.mp4
so i have recorded video with my mobile to see actual behaviour. attaching the same here
https://user-images.githubusercontent.com/6000288/111231123-d1be4700-863c-11eb-8807-848469a2eb10.mp4
one more thing to mention when we switch players with big and small , small player is able to move to big player but big player first rendered is failing to display in small player on further switch it behaves same.
- Setting setZOrderMediaOverlay to false for the big view is recommended.
if you see the code i have provided i am doing that but does not help
- I didn't tested on that device, but I don't have any reports that it malfunctions on this app https://play.google.com/store/apps/details?id=com.fgl27.twitch and there is a lot of sony bravia devices using it.
the above app also has the same issue attaching the video here , you can see that video is loading and once starts its going behind the big player
https://user-images.githubusercontent.com/6000288/111231640-ba338e00-863d-11eb-810d-f41a949842a0.mp4
Sorry I didn't look at yours code, just the info from first post.
Very unfortunately and unexpected result, yes the HW codec seems to be the issue, didn't expect it on Android 9 maybe they are using very old codec libraries that they have ported from an old Android version, as I only see this type of issue on Android 7 and bellow that maybe the case.
Unfortunately no device seems to be properly test for a simple in app picture in picture feature, as I have encounter many singular devices issues when trying to use multiple player.
Unfortunately at least on my test even though textureview
solves the issue of picture in picture, in most cases the image quality has a noticeable degradation, and some users have reported that isn't just a visual degradation but a performance one as is noticeable that some devices will drop frames playing content using textureview
but when playing the same content on surfaceview
they don't.
Thanks for the update
Another thing i found is which ever surface is rendered second is showing above other even if we set setZOrderMediaOverlay
to false
Even i have seen noticeable frame-drops with textureview
, so that can not be fix
So how do i go about this to next level, do you report this to sony from your side or do i need to contact them. ?
I'm just a user of ExoPlayer trying to help as this is something that affect one of my projects, once the developers responsible for ExoPlayer have all the info and is determined that the manufacturer of the device need to take a look they will inform and reply back to you on what can be done.
Two sample of that here https://github.com/google/ExoPlayer/issues/8427 and https://github.com/google/ExoPlayer/issues/7998
Can this be checked when possible please.
Thank you
In my sample app i have feature to swap one full screen player and small PIP player above full screen player , when clicking on swap button i need to swap content each other. Each player is sitting in different fragment. When switching i am changing the constraint with animation
TransitionManager.beginDelayedTransition(layout)
. i am changing theelevation
of fragment container to bring small player above big player on each swap operation. This is working fine when i set surface astextureview
but i found that when i set surface assurfaceview
, the small player which is shown above getting transparent on surface part. By settingsetZOrderMediaOverlay
true to small player it is fixed in other devices like Nvdea and MIBox but sony tv failed to pass with that fix.i have changed the video renderer from
OMX.MTK.VIDEO.DECODER.AVC
toOMX.google.h264.decoder
then its works but i cannot rely on software codecany idea whats going on here ?
here is the sample code :
ExoPlayerTest.zip
android version : 9 exo-player version - 2.12.1