Serenity and Hi10P content

serenity-for-android

#1

Hey,

 

first of all: great app, I love that I can use my beloved MX Player to play video files with it.

 

I've got one problem, though, I don't know whether I should ask here or in the general forums:

Hi10P (10-bit) encoded content seems to be directly streamed to my Android device using Serenity and MX Player. Currently there's no hardware-acceleration for 10 bit content - still the server sends the data in its original form, which results in artifacts using MX's HW codec.

 

Using the SW codec works but kills the purpose of having MX as the player in the first place.

 

Intended behaviour: Either Serenity should request a reencoded version of the file, or the PMS should detect the capabilities and reencode on its own.

 

How does Serenity query the PMS? Is there a certain identification string I could build a specific profile in the PMS for? Can 10 bit be detected by PMS in the first place, so such a profile would be possible?

 

 

Thank you very much

 

panni


#2

Hey,

first of all: great app, I love that I can use my beloved MX Player to play video files with it.

I've got one problem, though, I don't know whether I should ask here or in the general forums:

Hi10P (10-bit) encoded content seems to be directly streamed to my Android device using Serenity and MX Player. Currently there's no hardware-acceleration for 10 bit content - still the server sends the data in its original form, which results in artifacts using MX's HW codec.

Using the SW codec works but kills the purpose of having MX as the player in the first place.

Intended behaviour: Either Serenity should request a reencoded version of the file, or the PMS should detect the capabilities and reencode on its own.

How does Serenity query the PMS? Is there a certain identification string I could build a specific profile in the PMS for? Can 10 bit be detected by PMS in the first place, so such a profile would be possible?

Thank you very much

panni

Serenity doesn't support Transcoding due to some licensing restrictions by Plex for apps that are sold.  I don't make nearly enough to afford paying the licensing costs, so that is why MX Player is the preferred way to play content if you device can't play it back natively.   So everything that Serenity does is just pass the Direct Play url off to whatever video is requested to be played.

If you need better Hi10P support, I suggest starting a thread in the MX Player forum, and letting the developer their know about the issues.

http://forum.xda-developers.com/apps/mx-player


#3

Thanks for your answer.

The MX Player developer is very aware of the "issue", which isn't one, because it simply can't be solved. As I said, there is no hardware acceleration support for Hi10P besides Tegra devices, on the market.

Also: With Serenity's internal player it works, but it's in software mode, so people will waste a huge amount of battery on decoding the media.

Still the main questions I had stayed unanswered:

How does Serenity query the PMS? Is there a certain identification string I could build a specific profile in the PMS for? Can 10 bit be detected by PMS in the first place, so such a profile would be possible?

I think you're well aware of  the [DLNA Profiles](https://forums.plex.tv/topic/42523-writing-profiles-for-dlna-devices/) Plex supports.

Does Serenity use Plex's DLNA? If so, which identification string does it use?


#4

Still the main questions I had stayed unanswered:


I think you're well aware of  the DLNA Profiles Plex supports.

Does Serenity use Plex's DLNA? If so, which identification string does it use?

Serenity uses the REST XML api to communicate with the Plex Media Server.   It doesn't do anything with any of the profiles.  The profiles are only useful to let Plex know what media will need to be transcoded when delievered to the server.  Since Serenity doesn't support Transcoding it doesn't send any information to Plex letting it know what to transcode.   It just takes the direct stream URL and passes it to whatever player is being used.