Jump to content

Does Emby use custom codecs? Because it plays them in directplay 😵


Go to solution Solved by Luke,

Recommended Posts

I can't understand what's going on anymore.

Video MediaInfo:


ID                                       : 1
Format                                   : HEVC
Format/Info                              : High Efficiency Video Coding
Format profile                           : Main 10@L4@Main
Codec ID                                 : V_MPEGH/ISO/HEVC
Duration                                 : 23 min 41 s
Bit rate                                 : 3 950 kb/s
Width                                    : 1 920 pixels
Height                                   : 1 080 pixels
Display aspect ratio                     : 16:9
Frame rate mode                          : Variable
Frame rate                               : 23.465 FPS
Original frame rate                      : 23.976 (24000/1001) FPS
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 10 bits
Bits/(Pixel*Frame)                       : 0.081
Stream size                              : 670 MiB (69%)
Writing library                          : x265 2.9:[Mac OS X][clang 10.0.0][64 bit] 10bit
Encoding settings                        : cpuid=1111039 / frame-threads=2 / wpp / no-pmode / no-pme / no-psnr / no-ssim / log-level=2 / input-csp=1 / input-res=1920x1080 / interlace=0 / total-frames=0 / level-idc=0 / high-tier=1 / uhd-bd=0 / ref=2 / no-allow-non-conformance / no-repeat-headers / annexb / no-aud / no-hrd / info / hash=0 / no-temporal-layers / open-gop / min-keyint=24 / keyint=240 / gop-lookahead=0 / bframes=4 / b-adapt=0 / b-pyramid / bframe-bias=0 / rc-lookahead=15 / lookahead-slices=6 / scenecut=40 / radl=0 / no-intra-refresh / ctu=64 / min-cu-size=8 / no-rect / no-amp / max-tu-size=32 / tu-inter-depth=1 / tu-intra-depth=1 / limit-tu=0 / rdoq-level=0 / dynamic-rd=0.00 / no-ssim-rd / signhide / no-tskip / nr-intra=0 / nr-inter=0 / no-constrained-intra / strong-intra-smoothing / max-merge=2 / limit-refs=3 / no-limit-modes / me=1 / subme=1 / merange=57 / temporal-mvp / weightp / no-weightb / no-analyze-src-pics / deblock=0:0 / sao / no-sao-non-deblock / rd=2 / early-skip / rskip / fast-intra / no-tskip-fast / no-cu-lossless / no-b-intra / no-splitrd-skip / rdpenalty=0 / psy-rd=2.00 / psy-rdoq=0.00 / no-rd-refine / no-lossless / cbqpoffs=0 / crqpoffs=0 / rc=abr / bitrate=4000 / qcomp=0.60 / qpstep=4 / stats-write=0 / stats-read=2 / cplxblur=20.0 / qblur=0.5 / ipratio=1.40 / pbratio=1.30 / aq-mode=1 / aq-strength=1.00 / cutree / zone-count=0 / no-strict-cbr / qg-size=32 / no-rc-grain / qpmax=69 / qpmin=0 / no-const-vbv / sar=1 / overscan=0 / videoformat=5 / range=0 / colorprim=1 / transfer=1 / colormatrix=1 / chromaloc=0 / display-window=0 / max-cll=0,0 / min-luma=0 / max-luma=1023 / log2-max-poc-lsb=8 / vui-timing-info / vui-hrd-info / slices=1 / no-opt-qp-pps / no-opt-ref-list-length-pps / no-multi-pass-opt-rps / scenecut-bias=0.05 / no-opt-cu-delta-qp / no-aq-motion / no-hdr / no-hdr-opt / no-dhdr10-opt / no-idr-recovery-sei / analysis-reuse-level=5 / scale-factor=0 / refine-intra=0 / refine-inter=0 / refine-mv=0 / no-limit-sao / ctu-info=0 / no-lowpass-dct / refine-mv-type=0 / copy-pic=1 / max-ausize-factor=1.0 / no-dynamic-refine / no-single-sei
Default                                  : Yes
Forced                                   : No
Color range                              : Limited
Color primaries                          : BT.709
Transfer characteristics                 : BT.709
Matrix coefficients                      : BT.709

Audio #1
ID                                       : 2
Format                                   : FLAC
Format/Info                              : Free Lossless Audio Codec
Codec ID                                 : A_FLAC
Duration                                 : 23 min 41 s
Bit rate mode                            : Variable
Bit rate                                 : 1 369 kb/s
Channel(s)                               : 2 channels
Channel layout                           : L R
Sampling rate                            : 48.0 kHz
Frame rate                               : 10.196 FPS (4708 SPF)
Bit depth                                : 24 bits
Compression mode                         : Lossless
Stream size                              : 232 MiB (24%)
Title                                    : Giapponese FLAC
Language                                 : Japanese
Default                                  : No
Forced                                   : No


Teclast M40 (Android 10),

  • Unisoc T618 Processor
  • Mali-G52 3EE GPU (Also MP2/3EE)

Supported HW Codecs theoretically (VIDEO): 





Supported HW Codecs for real, by MXPlayer (VIDEO): 




What happens: On Plex, MX Player and other video players, it starts in SW and therefore not in Full DirectPlay (Plex do transcode 😭).
On Emby they all go directplay (🥴) and those who can keep up with it do quite well (But I don't understand if I'm in HW or SW, it doesn't tell you).
Some get buggy and I have to force the aspect ratio to anything that IS NOT "Auto" or I get the frozen frame (it's also difficult because you have to pull up the navbar software and then press on the settings for AR, as long as the navbar software stays up, the video returns to work, if you don't change AR it freezes again on the last frame before the navbar disappeared).

But let's get back to the main course.
From what I understand after 1 year of use, Plex and MX Player are the best to understand what is 100% supported or not (like it's an on-off switch, if you don't have 100% but 99%, they go into transcode/SW ).
Also plex tells me it is using ExoPlayer.
I remembered that on Emby, a few months ago, the app told you which player it used on android (on the Nintendo Switch with Android 8, the emby app told me it used MPV, I'm sure).
Leaving aside the player, it would be useful to have a feature that tells you which codecs in HW the app is able to use as MX Player and if directplay is in HW or SW as MX Player.

MX Player Status: 




Summing up:

Emby goes to directplay but doesn't give me any information (HW / SW / etc.).

and the menu for nerds tells me nothing about playback info except "direct play" which answers itself.




In order to understand each other,
Plex says AC3 is not supported. If I force plex to play a file with AC3, the audio is mute.
If I start AC3 on Emby, it can be heard ... But in the playback info I only have "directplay".
But I know that Emby uses native codecs (which according to Plex I do not have for AC3) and therefore I am no longer understanding if it is Plex that limits itself to not doing SW regardless while emby goes to SW even for unsupported codecs or emby it goes to HW and then uses custom codecs.

Link to comment
Share on other sites

Hi, I'm a bit confused as you're talking about AC3 but Stats for Nerds is show FLAC audio.

Please post the Media Info information you see for this media item.
This info is at the bottom of the detail page (in a browser) for the move/episode.

Link to comment
Share on other sites

10 minutes ago, cayars said:

Hi, I'm a bit confused as you're talking about AC3 but Stats for Nerds is show FLAC audio.

Please post the Media Info information you see for this media item.
This info is at the bottom of the detail page (in a browser) for the move/episode.

Ninth, I misspelled.
The one on the AC3 is a simpler example. The stats from nerds that you see are referred to the mediainfo that I put in the spoiler above (and in any case also for the FLAC it is the same speech, plex transcode FLAC > AAC while emby no, it does not tell me if it is transcoding in SW or HW and consequently I don't understand what is happening).

Emby according to the Help page uses the internal player or better, the manufacturer's codecs and the android ones (MediaCodec + OpenMax / SPRD).
Which is the same for Plex that uses ExoPlayer but that it too is limited to internal codecs.
But then why if they both go with the same codecs, emby goes to directplay and plex doesn't?
I go into directplay as well with vobsubs and ass that plex is fixed to transcodes if any.

So, either emby uses custom codecs and a player that is not exoplayer; or I'm not understanding anything anymore 😵.
Also it seemed to me that once it tells you which player used emby and even if it was in HW or SW the transcoding (from the nerds menu I say, not from the web dashboard, which no longer shows me the "I" and I think it is that you have to pay the premium to see the info or no longer show it if it is in directplay)

Link to comment
Share on other sites

  • Solution

To answer the question, yes we use exoplayer but we've customized it heavily in order to be able to direct play as much as possible.

But yes, options to control hardware decoding in the app would be something we could look at adding.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Create New...