Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

HEVC level 156 always transcoding on supported devices #3380

Open
VampiricAlien opened this issue Feb 17, 2024 · 26 comments
Open

HEVC level 156 always transcoding on supported devices #3380

VampiricAlien opened this issue Feb 17, 2024 · 26 comments
Labels
bug Something isn't working playback Issue related to media playback

Comments

@VampiricAlien
Copy link

Describe the bug

I knew something was going on when the media was slow to play or the subtitles skipped ahead.

Reason for transcoding: The video codec's level is not supported

I think this #3281 has effected HEVC support on devices that once supported it.

Codec: HEVC
Profile: Main 10
Level: 156
Resolution: 1920x1080
Aspect ratio: 16:9

@lawadr @nielsvanvelzen pinging both of you because the pull request has effected playback.

Logs

Stream mapping:
Stream #0:0 -> #0:0 (hevc (native) -> h264 (libx264))
Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
[libx264 @ 0x563eef26b080] using SAR=1/1
[libx264 @ 0x563eef26b080] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 0x563eef26b080] profile Main, level 4.0, 4:2:0, 8-bit

"SupportsTranscoding":true,"SupportsDirectStream":true,"SupportsDirectPlay":true

Application version

v0.16.5

Where did you install the app from?

Sideloaded APK

Device information

Shield

Android version

Android 11

Jellyfin server version

10.8.13

@VampiricAlien VampiricAlien added the bug Something isn't working label Feb 17, 2024
@lawadr
Copy link
Contributor

lawadr commented Feb 17, 2024

This is odd. The only thing I can think of is that MediaCodec is reporting a lower level than is really supported, causing transcoding. But even that I can't believe is true.

Level 156 is profile level 5.2, which the Shield should definitely support. Does logcat show the device profile being sent to the server? Or maybe the server logs show it. This would certainly help narrow down the problem.

I'll take a look to see what could be causing this, even though I don't have a Shield to test on.

@lawadr
Copy link
Contributor

lawadr commented Feb 18, 2024

I don't think this affects the behaviour, but @nielsvanvelzen cherry picked the first commit in that PR for v0.16.5 rather than all of them. Therefore v0.16.5 contains the initial unfixed-up version of my change. I assume this was a mistake.

As I said, shouldn't affect anything, but more confusing to debug.

@lawadr
Copy link
Contributor

lawadr commented Feb 18, 2024

Is there any chance you can run dumpsys media.player in an adb shell and attach the result? This should dump exactly what MediaCodec reports as supported on the device.

@VampiricAlien
Copy link
Author

Nothing transcoded before last update, Does this help?

  Decoder "OMX.Nvidia.h265.decode" supports
    aliases: []
    attributes: 0xa: [
      encoder: 0,
      vendor: 1,
      software-only: 0,
      hw-accelerated: 1 ]
    owner: "default"
    rank: 256
    profile/levels: [
          1/131072 (Main/High 5.1),
          2/131072 (Main10/High 5.1),
       4096/131072 (Main10HDR10/High 5.1) ]
    colors: [
      0x7f420888 (YUV420Flexible),
      0x15 (YUV420SemiPlanar) ]
    details: AMessage(what = 0x00000000) = {
        string alignment = "2x2"
        string bitrate-range = "1-120000000"
        string block-size = "16x16"
        string blocks-per-second-range = "1-2000000"
        int32_t feature-adaptive-playback = 0
        int32_t feature-low-latency = 0
        string measured-frame-rate-1280x720-range = "1030-1030"
        string measured-frame-rate-1920x1088-range = "409-589"
        string measured-frame-rate-352x288-range = "2239-2239"
        string measured-frame-rate-640x368-range = "1950-1950"
        string performance-point-3840x2160-range = "60-60"
        string size-range = "144x144-3840x2176"
      }
  Decoder "OMX.Nvidia.h265.decode.secure" supports
    aliases: []
    attributes: 0xa: [
      encoder: 0,
      vendor: 1,
      software-only: 0,
      hw-accelerated: 1 ]
    owner: "default"
    rank: 256
    profile/levels: [
          1/131072 (Main/High 5.1),
          2/131072 (Main10/High 5.1),
       4096/131072 (Main10HDR10/High 5.1) ]
    colors: [
      0x7f420888 (YUV420Flexible),
      0x15 (YUV420SemiPlanar) ]
    details: AMessage(what = 0x00000000) = {
        string alignment = "2x2"
        string bitrate-range = "1-120000000"
        string block-size = "16x16"
        string blocks-per-second-range = "1-2000000"
        int32_t feature-adaptive-playback = 0
        int32_t feature-secure-playback = 1
        string performance-point-3840x2160-range = "60-60"
        string size-range = "144x144-3840x2176"
      }
  Decoder "OMX.google.hevc.decoder" supports
    aliases: []
    attributes: 0: [
      encoder: 0,
      vendor: 0,
      software-only: 0,
      hw-accelerated: 0 ]
    owner: "default"
    rank: 528
    profile/levels: [
          1/65536 (Main/Main 5.1),
          4/65536 (MainStill/Main 5.1) ]
    colors: [
      0x7f420888 (YUV420Flexible),
      0x13 (YUV420Planar) ]
    details: AMessage(what = 0x00000000) = {
        string alignment = "2x2"
        string bitrate-range = "1-10000000"
        string block-count-range = "1-196608"
        string block-size = "8x8"
        string blocks-per-second-range = "1-2000000"
        int32_t feature-adaptive-playback = 0
        string measured-frame-rate-1280x720-range = "120-140"
        string measured-frame-rate-1920x1080-range = "63-78"
        string measured-frame-rate-352x288-range = "584-590"
        string measured-frame-rate-640x360-range = "306-319"
        string size-range = "2x2-4096x4096"
      }

@nielsvanvelzen
Copy link
Member

I don't think this affects the behaviour, but @nielsvanvelzen cherry picked the first commit in that PR for v0.16.5 rather than all of them. Therefore v0.16.5 contains the initial unfixed-up version of my change. I assume this was a mistake.

It wasn't intentional and I've now cherrypicked the missing commits to make sure they will be in the next 0.16 release.

@lawadr
Copy link
Contributor

lawadr commented Feb 18, 2024

  Decoder "OMX.Nvidia.h265.decode" supports
    profile/levels: [
          1/131072 (Main/High 5.1),
          2/131072 (Main10/High 5.1),
       4096/131072 (Main10HDR10/High 5.1) ]

This shows that the device is self reporting a maximum of level 5.1 high tier for the Main 10 profile. This should guarantee support for all high tier and main tier streams at level 5.1 and below.

Your file appears to be encoded at level 5.2 main tier which your device doesn't report to support.

If you have a look at https://en.wikipedia.org/wiki/High_Efficiency_Video_Coding#Tiers_and_levels you can see that 5.2 main tier supports a bitrate of 60,000 kbit/s while 5.1 high tier supports up to 160,000 kbit/s. But as far as I know, a 5.2 encoding can support things that a 5.1 decoder can't handle.

My guess is that the Shield actually supports a higher level main tier than high tier, such as 5.2 main tier and 5.1 high tier, but it's not reporting that fact.

@MichaelRUSF
Copy link
Contributor

The shield probably has hardware decoders for up to 5.1 and software decoding for 5.2. Seems like the same issue with the Fire TV Stick 4K - 2nd Gen (2023). 5.2 now transcodes instead of relying on the built-in software decoder.

The device specs even state it only goes up to 5.1
"H.265 (HEVC). Hardware accelerated up to 3840x2160p (4K) @ 60 fps, 35 Mbps, Main 10 Profile Level 5.1, Color space 8-bit and 10-bit input with HDR10, HDR10+, and HLG"

Fire TV Stick's reported capabilities:

Media type 'video/ ':
  Decoder "OMX.MTK.VIDEO.DECODER.HEVC" supports
    aliases: []
    attributes: 0xa: [
      encoder: 0,
      vendor: 1,
      software-only: 0,
      hw-accelerated: 1 ]
    owner: "default"
    rank: 256
    profile/levels: [
          1/    1 (Main/Main 1),
          1/    2 (Main/High 1),
          1/    4 (Main/Main 2),
          1/    8 (Main/High 2),
          1/   16 (Main/Main 2.1),
          1/   32 (Main/High 2.1),
          1/   64 (Main/Main 3),
          1/  128 (Main/High 3),
          1/  256 (Main/Main 3.1),
          1/  512 (Main/High 3.1),
          1/ 1024 (Main/Main 4),
          1/ 2048 (Main/High 4),
          1/ 4096 (Main/Main 4.1),
          1/ 8192 (Main/High 4.1),
          1/16384 (Main/Main 5),
          1/32768 (Main/High 5),
          1/65536 (Main/Main 5.1),
          1/131072 (Main/High 5.1),
          2/    1 (Main10/Main 1),
          2/    2 (Main10/High 1),
          2/    4 (Main10/Main 2),
          2/    8 (Main10/High 2),
          2/   16 (Main10/Main 2.1),
          2/   32 (Main10/High 2.1),
          2/   64 (Main10/Main 3),
          2/  128 (Main10/High 3),
          2/  256 (Main10/Main 3.1),
          2/  512 (Main10/High 3.1),
          2/ 1024 (Main10/Main 4),
          2/ 2048 (Main10/High 4),
          2/ 4096 (Main10/Main 4.1),
          2/ 8192 (Main10/High 4.1),
          2/16384 (Main10/Main 5),
          2/32768 (Main10/High 5),
          2/65536 (Main10/Main 5.1),
          2/131072 (Main10/High 5.1),
       4096/    1 (Main10HDR10/Main 1),
       4096/    2 (Main10HDR10/High 1),
       4096/    4 (Main10HDR10/Main 2),
       4096/    8 (Main10HDR10/High 2),
       4096/   16 (Main10HDR10/Main 2.1),
       4096/   32 (Main10HDR10/High 2.1),
       4096/   64 (Main10HDR10/Main 3),
       4096/  128 (Main10HDR10/High 3),
       4096/  256 (Main10HDR10/Main 3.1),
       4096/  512 (Main10HDR10/High 3.1),
       4096/ 1024 (Main10HDR10/Main 4),
       4096/ 2048 (Main10HDR10/High 4),
       4096/ 4096 (Main10HDR10/Main 4.1),
       4096/ 8192 (Main10HDR10/High 4.1),
       4096/16384 (Main10HDR10/Main 5),
       4096/32768 (Main10HDR10/High 5),
       4096/65536 (Main10HDR10/Main 5.1),
       4096/131072 (Main10HDR10/High 5.1),
       8192/    1 (Main10HDR10Plus/Main 1),
       8192/    2 (Main10HDR10Plus/High 1),
       8192/    4 (Main10HDR10Plus/Main 2),
       8192/    8 (Main10HDR10Plus/High 2),
       8192/   16 (Main10HDR10Plus/Main 2.1),
       8192/   32 (Main10HDR10Plus/High 2.1),
       8192/   64 (Main10HDR10Plus/Main 3),
       8192/  128 (Main10HDR10Plus/High 3),
       8192/  256 (Main10HDR10Plus/Main 3.1),
       8192/  512 (Main10HDR10Plus/High 3.1),
       8192/ 1024 (Main10HDR10Plus/Main 4),
       8192/ 2048 (Main10HDR10Plus/High 4),
       8192/ 4096 (Main10HDR10Plus/Main 4.1),
       8192/ 8192 (Main10HDR10Plus/High 4.1),
       8192/16384 (Main10HDR10Plus/Main 5),
       8192/32768 (Main10HDR10Plus/High 5),
       8192/65536 (Main10HDR10Plus/Main 5.1),

	   
 Decoder "c2.android.hevc.decoder" supports
    aliases: [
      "OMX.google.hevc.decoder" ]
    attributes: 0x4: [
      encoder: 0,
      vendor: 0,
      software-only: 1,
      hw-accelerated: 0 ]
    owner: "codec2::software"
    rank: 512
    profile/levels: [
          1/524288 (Main/High 5.2),
          4/524288 (MainStill/High 5.2)

@lawadr
Copy link
Contributor

lawadr commented Feb 18, 2024

The shield probably has hardware decoders for up to 5.1 and software decoding for 5.2. Seems like the same issue with the Fire TV Stick 4K - 2nd Gen (2023). 5.2 now transcodes instead of relying on the built-in software decoder.

I don't think this is the case because all decoders are checked for the maximum, including software decoders.

From the information that @VampiricAlien provided, the software decoder on the Shield can't even handle Main 10 profile, which is what we're looking at. It supports only up to 5.1 main tier for the Main profile, while the hardware decoder supports up to 5.1 high tier for both Main and Main 10.

From the information you've provided from the Fire TV Stick 4K - 2nd Gen (2023), the software decoder supports only up to 5.2 high tier for the Main profile (and not the Main 10 profile). The hardware decoder supports up to 5.1 high tier for both Main and Main 10, which is the same as the Shield.

If you are also talking about a Main 10 level 5.2 main tier video stream, like @VampiricAlien is, then neither the Fire TV Stick 4K or the Shield seems to be reporting support for this. This indicates nothing in the logic of the change is broken as such, just that both devices seem to support beyond what they claim.

The previous behaviour for the Android TV client was to accept any HEVC Main stream if any HEVC decoder exists (practically all devices), and HEVC Main 10 if profile level 5 main tier is supported for it. The behaviour now is base support for both Main and Main 10 on the maximum level supported by any decoder. Therefore transcoding would be expected based on given the source file and reported decoder support.

@MichaelRUSF
Copy link
Contributor

MichaelRUSF commented Feb 18, 2024

Yeah, you are correct. I failed to notice that the software encoder was Main not Main10.

Current:
Main 5.2 plays without transcoding
Main10 5.2 transcodes

Without the level checks in the prior build, Main10 5.2 played without transcoding.

@lawadr
Copy link
Contributor

lawadr commented Feb 18, 2024

Here are some solutions:

  1. Do nothing and report issues to the device manufacturers to fix their media configs
  2. Remove the limit when the device reports a specific level or higher, such as 5.1 high tier
  3. Remove the limit for specific device IDs

@VampiricAlien
Copy link
Author

Here are some solutions:

1. Do nothing and report issues to the device manufacturers to fix their media configs

2. Remove the limit when the device reports a specific level or higher, such as 5.1 high tier

3. Remove the limit for specific device IDs

I don't see option 1 happening anytime soon, upgrade hardware should solved it but this might not be an option for everyone.
Since the update, I never hand an issue with HEVC main 10 level 5.1. ( as you said that both devices seem to support beyond what they claim), I am open to temp solution if needed.

@VampiricAlien
Copy link
Author

v0.16.6 doesn't fix this issue, is there a workaround?

@lawadr
Copy link
Contributor

lawadr commented Feb 26, 2024

v0.16.6 doesn't fix this issue, is there a workaround?

I'm struggling to find any information about what profile levels are supported on the Shield. I can't find a source that it supports HEVC Main 10 5.2. My concern is that you can get your specific media to play back on it, but other valid 5.2 media will fail.

@nielsvanvelzen nielsvanvelzen added the playback Issue related to media playback label Feb 26, 2024
@VampiricAlien
Copy link
Author

Tegra X1 (CPU) supports decode of 10-bit H.265 video streams, like you I can not find any more information out about levels.

Before the patch level 5.1 played without issue.

@lawadr
Copy link
Contributor

lawadr commented Feb 26, 2024

Before the patch level 5.1 played without issue.

Hang on. Your original post says that your media file is Main10 level 5.2, not level 5.1. Does 5.1 work? It definitely should.

If you do still mean 5.2 as your original post states, are you sure the Shield handles all 5.2 media? Have you tried playing back a UHD/4k stream on it? Give this file a try: http://www.larmoire.info/jellyfish/media/jellyfish-200-mbps-4k-uhd-hevc-10bit.mkv

Most (if not all?) streaming devices don't support HEVC level 5.2 because UHD Blu-rays are only 5.1. I can't think of many use cases right now for a streaming device to handle more than that considering the lack of content better than a UHD Blu-ray out there. In fact, HEVC level 5.2 is a very odd choice for 1080p content.

@thornbill
Copy link
Member

We also host copies of the jellyfish samples if needed: https://repo.jellyfin.org/jellyfish/

@VampiricAlien
Copy link
Author

Before the patch level 5.1 played without issue.

Hang on. Your original post says that your media file is Main10 level 5.2, not level 5.1. Does 5.1 work? It definitely should.

If you do still mean 5.2 as your original post states, are you sure the Shield handles all 5.2 media? Have you tried playing back a UHD/4k stream on it? Give this file a try: http://www.larmoire.info/jellyfish/media/jellyfish-200-mbps-4k-uhd-hevc-10bit.mkv

Most (if not all?) streaming devices don't support HEVC level 5.2 because UHD Blu-rays are only 5.1. I can't think of many use cases right now for a streaming device to handle more than that considering the lack of content better than a UHD Blu-ray out there. In fact, HEVC level 5.2 is a very odd choice for 1080p content.

Sorry, level 5.2. was working before the patch. Level wasn't an issue so never though much of it until now. I've updated the Level to 5.0, this won't change the fact that many will transcode now.

0.16 Beta 4:  The source file is entirely compatible with this client, and the session is receiving the file without modifications.
0.16.6: The video codec's level is not supported

The 4k video file from the link: Reason for transcoding: The video's bitrate exceeds the limit (was on 120Mbit/s, now set to auto, no change)
I think this is a device limit as I am unable to play it in the beta app.

Testing 4K files

Codec HEVC
Profile Main 10
Level 150
Resolution 3840x1920
Aspect ratio2:1
Interlaced No
Framerate 23.976025
Bitrate 14271 kbps
Bit depth 10 bit 

Reason for transcoding: The video's bitrate exceeds the limit. This plays in the beta app without transcoding.

I always have the beta app install for testing.

@nielsvanvelzen
Copy link
Member

The video's bitrate exceeds the limit.

What is the bitrate in the app preferences set to?

@VampiricAlien
Copy link
Author

VampiricAlien commented Feb 27, 2024

The video's bitrate exceeds the limit.

What is the bitrate in the app preferences set to?

Was set to 120, now set to auto.

120Mbit/s is the highest, is this set by my the device or app?

@lawadr
Copy link
Contributor

lawadr commented Feb 27, 2024

I've updated the Level to 5.0, this won't change the fact that many will transcode now.

What does this mean? You've updated what to 5.0?

The 4k video file from the link: Reason for transcoding: The video's bitrate exceeds the limit (was on 120Mbit/s, now set to auto, no change) I think this is a device limit as I am unable to play it in the beta app.

I think there's a 100mbit/s limit hardcoded in the client for direct played files, and 20mbit/s for transcoded streams. What I meant was to copy the file to the device, or put it on a USB stick or something, and try playing it in some local player to see if the hardware can do it. I'm pretty sure you'll find it won't play back properly, or at the very best it'll stutter badly. That's likely the reason the device doesn't advertise level 5.2.

Testing 4K files

Codec HEVC
Profile Main 10
Level 150
Resolution 3840x1920
Aspect ratio2:1
Interlaced No
Framerate 23.976025
Bitrate 14271 kbps
Bit depth 10 bit 

Reason for transcoding: The video's bitrate exceeds the limit. This plays in the beta app without transcoding.

That's a 5.0 file. We're trying to test for 5.2 support.

@VampiricAlien
Copy link
Author

@lawadr I understand we're testing support for Level 5.2, The level 150 was to show it plays in the beta app without transcode but in 0.16.6 because of the bitrate it transcodes. Possibly a new issue.

The Video file played without problem in VLC (as expected) testing using device player, playback wasn't smooth in the beginning but came right in the middle.

I downloaded jellyfish-160-mbps-4k-uhd-hevc-10bit.mkv and give that a try, it plays better the other file, 40Mb/s less made a little deference. It would seem like you said it's hard coded to 100Mb/s.

Where do we go from here? We have tested Nvdia Shield android 11 device to find it supports up to HEVC level 5.1 and has a hard coded bitrate limited of 120mb/s.

further more, the app used to play anything HEVC @ level 5.2. I do not know how.

@MichaelRUSF
Copy link
Contributor

First off let me say that 99.99% of my HEVC media is under Main10 5.1 and I have no issues playing them back. I was only able to find two files in my library that exceeded those limits, one HEVC Main 10 5.2 and one HEVC Main 10 6.1 file.

I’ve also been testing out this issue on different devices so let me limit this to my Sony X90J TV. It has a MediaTek MT5895, which supports “HEVC: 8K@60fps”. That should be at level 6.1 if I’m reading this table correctly.

With the level checks in place, I get limited to 5.2 level for both HEVC Main & Main10. Meaning any level higher than 5.2 gets transcoded, 5.2 and below direct plays. Both HEVC Main & Main10 6.1 sample media files will play directly with no issues if I bypass the level checks.

Dumpsys media.player comes back empty so I can’t tell what the TV is reporting as its capabilities, but it’s probably up to level 5.2 based on when transcoding begins. Even though I can play 6.1 Main and Main10 files directly.

To me, the ideal solution would be to have a user-adjustable menu. With the default option of auto, which would be set to the levels checks. Then the user could override it and choose their max level, very similar to how Plex handles h264 levels.

@VampiricAlien
Copy link
Author

First off let me say that 99.99% of my HEVC media is under Main10 5.1 and I have no issues playing them back. I was only able to find two files in my library that exceeded those limits, one HEVC Main 10 5.2 and one HEVC Main 10 6.1 file.

I’ve also been testing out this issue on different devices so let me limit this to my Sony X90J TV. It has a MediaTek MT5895, which supports “HEVC: 8K@60fps”. That should be at level 6.1 if I’m reading this table correctly.

With the level checks in place, I get limited to 5.2 level for both HEVC Main & Main10. Meaning any level higher than 5.2 gets transcoded, 5.2 and below direct plays. Both HEVC Main & Main10 6.1 sample media files will play directly with no issues if I bypass the level checks.

Dumpsys media.player comes back empty so I can’t tell what the TV is reporting as its capabilities, but it’s probably up to level 5.2 based on when transcoding begins. Even though I can play 6.1 Main and Main10 files directly.

To me, the ideal solution would be to have a user-adjustable menu. With the default option of auto, which would be set to the levels checks. Then the user could override it and choose their max level, very similar to how Plex handles h264 levels.

This would be an acceptable solution to this issue, in app setting or server setting?

@MichaelRUSF
Copy link
Contributor

@VampiricAlien That would be an app-based solution, but that's just an idea, no one is working on it. Would you mind attaching the entire dumpsys media.player for your shield? I'd like to know what's it reporting for other decoders. And which version of the shield do you have?

Also, you shouldn't use the auto bitrate option, stick with 120, and you'll get the best results. It's been removed as an option for the .17 release.

@VampiricAlien
Copy link
Author

Client
  pid(4516), connId(1), status(0), looping(false)
 NuPlayer
  state(4), atEOS(0), looping(0), autoLoop(0)
 AudioOutput
  stream type(3), left - right volume(1.000000, 1.000000)
  msec per frame(0.000000), latency (-1)
  aux effect id(0), send level (0.000000)

 5 registered handlers:
  1: MediaClock: 0 messages processed
  2: NuPlayerDriver Looper: 7 messages processed
  3: generic: 2 messages processed
  16: <stale>
  17: <stale>

Decoder infos by media types:
=============================

Media type 'audio/3gpp':
  Decoder "OMX.google.amrnb.decoder" supports
    aliases: []
    attributes: 0: [
      encoder: 0,
      vendor: 0,
      software-only: 0,
      hw-accelerated: 0 ]
    owner: "default"
    rank: 16
    profile/levels: []
    colors: []
    details: AMessage(what = 0x00000000) = {
        string bitrate-range = "4750-12200"
        string max-channel-count = "1"
        string sample-rate-ranges = "8000"
      }

Media type 'audio/amr-wb':
  Decoder "OMX.google.amrwb.decoder" supports
    aliases: []
    attributes: 0: [
      encoder: 0,
      vendor: 0,
      software-only: 0,
      hw-accelerated: 0 ]
    owner: "default"
    rank: 16
    profile/levels: []
    colors: []
    details: AMessage(what = 0x00000000) = {
        string bitrate-range = "6600-23850"
        string max-channel-count = "1"
        string sample-rate-ranges = "16000"
      }

Media type 'audio/flac':
  Decoder "OMX.google.flac.decoder" supports
    aliases: []
    attributes: 0: [
      encoder: 0,
      vendor: 0,
      software-only: 0,
      hw-accelerated: 0 ]
    owner: "default"
    rank: 16
    profile/levels: []
    colors: []
    details: AMessage(what = 0x00000000) = {
        string bitrate-range = "1-21000000"
        string max-channel-count = "8"
        string sample-rate-ranges = "1-655350"
      }

Media type 'audio/g711-alaw':
  Decoder "OMX.google.g711.alaw.decoder" supports
    aliases: []
    attributes: 0: [
      encoder: 0,
      vendor: 0,
      software-only: 0,
      hw-accelerated: 0 ]
    owner: "default"
    rank: 16
    profile/levels: []
    colors: []
    details: AMessage(what = 0x00000000) = {
        string bitrate-range = "64000"
        string max-channel-count = "6"
        string sample-rate-ranges = "8000-48000"
      }

Media type 'audio/g711-mlaw':
  Decoder "OMX.google.g711.mlaw.decoder" supports
    aliases: []
    attributes: 0: [
      encoder: 0,
      vendor: 0,
      software-only: 0,
      hw-accelerated: 0 ]
    owner: "default"
    rank: 16
    profile/levels: []
    colors: []
    details: AMessage(what = 0x00000000) = {
        string bitrate-range = "64000"
        string max-channel-count = "6"
        string sample-rate-ranges = "8000-48000"
      }

Media type 'audio/mp4a-latm':
  Decoder "OMX.google.aac.decoder" supports
    aliases: []
    attributes: 0: [
      encoder: 0,
      vendor: 0,
      software-only: 0,
      hw-accelerated: 0 ]
    owner: "default"
    rank: 16
    profile/levels: [
          2/    0 (LC/??),
          5/    0 (HE/??),
         29/    0 (HE_PS/??),
         23/    0 (LD/??),
         39/    0 (ELD/??),
         20/    0 (ERScalable/??),
         42/    0 (XHE/??) ]
    colors: []
    details: AMessage(what = 0x00000000) = {
        string bitrate-range = "8000-960000"
        string max-channel-count = "8"
        string sample-rate-ranges = "7350,8000,11025,12000,16000,22050,24000,32000,44100,48000"
      }

Media type 'audio/mpeg':
  Decoder "OMX.google.mp3.decoder" supports
    aliases: []
    attributes: 0: [
      encoder: 0,
      vendor: 0,
      software-only: 0,
      hw-accelerated: 0 ]
    owner: "default"
    rank: 16
    profile/levels: []
    colors: []
    details: AMessage(what = 0x00000000) = {
        string bitrate-range = "8000-320000"
        string max-channel-count = "2"
        string sample-rate-ranges = "8000,11025,12000,16000,22050,24000,32000,44100,48000"
      }

Media type 'audio/mpeg-L2':
  Decoder "OMX.Nvidia.mp2.decoder" supports
    aliases: []
    attributes: 0xa: [
      encoder: 0,
      vendor: 1,
      software-only: 0,
      hw-accelerated: 1 ]
    owner: "default"
    rank: 256
    profile/levels: []
    colors: []
    details: AMessage(what = 0x00000000) = {
        string bitrate-range = "8000-384000"
        string max-channel-count = "6"
        string sample-rate-ranges = "16000,22050,24000,32000,44100,48000"
      }

Media type 'audio/opus':
  Decoder "OMX.google.opus.decoder" supports
    aliases: []
    attributes: 0: [
      encoder: 0,
      vendor: 0,
      software-only: 0,
      hw-accelerated: 0 ]
    owner: "default"
    rank: 16
    profile/levels: []
    colors: []
    details: AMessage(what = 0x00000000) = {
        string bitrate-range = "6000-510000"
        string max-channel-count = "8"
        string sample-rate-ranges = "8000,12000,16000,24000,48000"
      }

Media type 'audio/raw':
  Decoder "OMX.google.raw.decoder" supports
    aliases: []
    attributes: 0: [
      encoder: 0,
      vendor: 0,
      software-only: 0,
      hw-accelerated: 0 ]
    owner: "default"
    rank: 16
    profile/levels: []
    colors: []
    details: AMessage(what = 0x00000000) = {
        string bitrate-range = "1-10000000"
        string max-channel-count = "8"
        string sample-rate-ranges = "8000-192000"
      }

Media type 'audio/vorbis':
  Decoder "OMX.google.vorbis.decoder" supports
    aliases: []
    attributes: 0: [
      encoder: 0,
      vendor: 0,
      software-only: 0,
      hw-accelerated: 0 ]
    owner: "default"
    rank: 16
    profile/levels: []
    colors: []
    details: AMessage(what = 0x00000000) = {
        string bitrate-range = "32000-500000"
        string max-channel-count = "8"
        string sample-rate-ranges = "8000-96000"
      }

Media type 'audio/x-ms-wma':
  Decoder "OMX.Nvidia.wma.decoder" supports
    aliases: []
    attributes: 0xa: [
      encoder: 0,
      vendor: 1,
      software-only: 0,
      hw-accelerated: 1 ]
    owner: "default"
    rank: 256
    profile/levels: []
    colors: []
    details: AMessage(what = 0x00000000) = {
        string bitrate-range = "8000-384000"
        string max-channel-count = "6"
        string sample-rate-ranges = "16000,22050,24000,32000,44100,48000"
      }

Media type 'video/3gpp':
  Decoder "OMX.Nvidia.h263.decode" supports
    aliases: []
    attributes: 0xa: [
      encoder: 0,
      vendor: 1,
      software-only: 0,
      hw-accelerated: 1 ]
    owner: "default"
    rank: 256
    profile/levels: [
          1/   32 (Baseline/50) ]
    colors: [
      0x7f420888 (YUV420Flexible),
      0x15 (YUV420SemiPlanar) ]
    details: AMessage(what = 0x00000000) = {
        string alignment = "2x2"
        int32_t feature-adaptive-playback = 0
        string measured-frame-rate-176x144-range = "2335-2335"
        string measured-frame-rate-352x288-range = "1492-1950"
        string performance-point-1920x1080-range = "240-240"
        string size-range = "48x48-720x576"
      }
  Decoder "OMX.google.h263.decoder" supports
    aliases: []
    attributes: 0: [
      encoder: 0,
      vendor: 0,
      software-only: 0,
      hw-accelerated: 0 ]
    owner: "default"
    rank: 528
    profile/levels: [
          1/    4 (Baseline/30),
          1/   16 (Baseline/45),
          8/    4 (ISWV2/30),
          8/   16 (ISWV2/45) ]
    colors: [
      0x7f420888 (YUV420Flexible),
      0x13 (YUV420Planar) ]
    details: AMessage(what = 0x00000000) = {
        string alignment = "2x2"
        string bitrate-range = "1-384000"
        int32_t feature-adaptive-playback = 0
        string measured-frame-rate-176x144-range = "1122-1187"
        string measured-frame-rate-352x288-range = "720-820"
        string size-range = "2x2-352x288"
      }

Media type 'video/avc':
  Decoder "OMX.Nvidia.h264.decode" supports
    aliases: []
    attributes: 0xa: [
      encoder: 0,
      vendor: 1,
      software-only: 0,
      hw-accelerated: 1 ]
    owner: "default"
    rank: 256
    profile/levels: [
          1/32768 (Baseline/5.1),
      65536/32768 (ConstrainedBaseline/5.1),
          2/65536 (Main/5.2),
          8/65536 (High/5.2),
      524288/65536 (ConstrainedHigh/5.2) ]
    colors: [
      0x7f420888 (YUV420Flexible),
      0x15 (YUV420SemiPlanar) ]
    details: AMessage(what = 0x00000000) = {
        string alignment = "2x2"
        string bitrate-range = "1-120000000"
        string block-size = "16x16"
        string blocks-per-second-range = "1-2000000"
        int32_t feature-adaptive-playback = 0
        int32_t feature-low-latency = 0
        string measured-frame-rate-1280x720-range = "811-811"
        string measured-frame-rate-1920x1088-range = "346-346"
        string measured-frame-rate-320x240-range = "2273-2273"
        string measured-frame-rate-720x480-range = "1413-1413"
        string performance-point-1920x1080-range = "240-240"
        string performance-point-3840x2160-range = "60-60"
        string size-range = "48x48-3840x2176"
      }
  Decoder "OMX.Nvidia.h264.decode.secure" supports
    aliases: []
    attributes: 0xa: [
      encoder: 0,
      vendor: 1,
      software-only: 0,
      hw-accelerated: 1 ]
    owner: "default"
    rank: 256
    profile/levels: [
          1/32768 (Baseline/5.1),
      65536/32768 (ConstrainedBaseline/5.1),
          2/65536 (Main/5.2),
          8/65536 (High/5.2),
      524288/65536 (ConstrainedHigh/5.2) ]
    colors: [
      0x7f420888 (YUV420Flexible),
      0x15 (YUV420SemiPlanar) ]
    details: AMessage(what = 0x00000000) = {
        string alignment = "2x2"
        string bitrate-range = "1-120000000"
        string block-size = "16x16"
        string blocks-per-second-range = "1-2000000"
        int32_t feature-adaptive-playback = 0
        int32_t feature-secure-playback = 1
        string performance-point-1920x1080-range = "240-240"
        string performance-point-3840x2160-range = "60-60"
        string size-range = "48x48-3840x2176"
      }
  Decoder "OMX.google.h264.decoder" supports
    aliases: []
    attributes: 0: [
      encoder: 0,
      vendor: 0,
      software-only: 0,
      hw-accelerated: 0 ]
    owner: "default"
    rank: 528
    profile/levels: [
      65536/65536 (ConstrainedBaseline/5.2),
          1/65536 (Baseline/5.2),
          2/65536 (Main/5.2),
      524288/65536 (ConstrainedHigh/5.2),
          8/65536 (High/5.2) ]
    colors: [
      0x7f420888 (YUV420Flexible),
      0x13 (YUV420Planar) ]
    details: AMessage(what = 0x00000000) = {
        string alignment = "2x2"
        string bitrate-range = "1-48000000"
        string block-count-range = "1-32768"
        string block-size = "16x16"
        string blocks-per-second-range = "1-1966080"
        int32_t feature-adaptive-playback = 0
        string measured-frame-rate-1280x720-range = "86-96"
        string measured-frame-rate-1920x1080-range = "64-71"
        string measured-frame-rate-320x240-range = "782-782"
        string measured-frame-rate-720x480-range = "227-253"
        string size-range = "2x2-4080x4080"
      }

Media type 'video/dolby-vision':
  Decoder "OMX.Nvidia.DOVI.decode" supports
    aliases: []
    attributes: 0xa: [
      encoder: 0,
      vendor: 1,
      software-only: 0,
      hw-accelerated: 1 ]
    owner: "default"
    rank: 256
    profile/levels: [
         32/  256 (??/??),
        256/  256 (??/??),
        512/  256 (??/??),
         16/  256 (??/??) ]
    colors: [
      0x7f420888 (YUV420Flexible),
      0x15 (YUV420SemiPlanar) ]
    details: AMessage(what = 0x00000000) = {
        string alignment = "2x2"
        string bitrate-range = "1-120000000"
        string block-size = "16x16"
        string blocks-per-second-range = "1-2000000"
        int32_t feature-adaptive-playback = 0
        string measured-frame-rate-1280x720-range = "1030-1030"
        string measured-frame-rate-1920x1088-range = "409-589"
        string measured-frame-rate-352x288-range = "2239-2239"
        string measured-frame-rate-640x368-range = "1950-1950"
        string performance-point-3840x2160-range = "60-60"
        string size-range = "144x144-3840x2176"
      }
  Decoder "OMX.Nvidia.DOVI.decode.secure" supports
    aliases: []
    attributes: 0xa: [
      encoder: 0,
      vendor: 1,
      software-only: 0,
      hw-accelerated: 1 ]
    owner: "default"
    rank: 256
    profile/levels: [
         32/  256 (??/??),
        256/  256 (??/??),
        512/  256 (??/??),
         16/  256 (??/??) ]
    colors: [
      0x7f420888 (YUV420Flexible),
      0x15 (YUV420SemiPlanar) ]
    details: AMessage(what = 0x00000000) = {
        string alignment = "2x2"
        string bitrate-range = "1-120000000"
        string block-size = "16x16"
        string blocks-per-second-range = "1-2000000"
        int32_t feature-adaptive-playback = 0
        int32_t feature-secure-playback = 1
        string performance-point-3840x2160-range = "60-60"
        string size-range = "144x144-3840x2176"
      }

Media type 'video/hevc':
  Decoder "OMX.Nvidia.h265.decode" supports
    aliases: []
    attributes: 0xa: [
      encoder: 0,
      vendor: 1,
      software-only: 0,
      hw-accelerated: 1 ]
    owner: "default"
    rank: 256
    profile/levels: [
          1/131072 (Main/High 5.1),
          2/131072 (Main10/High 5.1),
       4096/131072 (Main10HDR10/High 5.1) ]
    colors: [
      0x7f420888 (YUV420Flexible),
      0x15 (YUV420SemiPlanar) ]
    details: AMessage(what = 0x00000000) = {
        string alignment = "2x2"
        string bitrate-range = "1-120000000"
        string block-size = "16x16"
        string blocks-per-second-range = "1-2000000"
        int32_t feature-adaptive-playback = 0
        int32_t feature-low-latency = 0
        string measured-frame-rate-1280x720-range = "1030-1030"
        string measured-frame-rate-1920x1088-range = "409-589"
        string measured-frame-rate-352x288-range = "2239-2239"
        string measured-frame-rate-640x368-range = "1950-1950"
        string performance-point-3840x2160-range = "60-60"
        string size-range = "144x144-3840x2176"
      }
  Decoder "OMX.Nvidia.h265.decode.secure" supports
    aliases: []
    attributes: 0xa: [
      encoder: 0,
      vendor: 1,
      software-only: 0,
      hw-accelerated: 1 ]
    owner: "default"
    rank: 256
    profile/levels: [
          1/131072 (Main/High 5.1),
          2/131072 (Main10/High 5.1),
       4096/131072 (Main10HDR10/High 5.1) ]
    colors: [
      0x7f420888 (YUV420Flexible),
      0x15 (YUV420SemiPlanar) ]
    details: AMessage(what = 0x00000000) = {
        string alignment = "2x2"
        string bitrate-range = "1-120000000"
        string block-size = "16x16"
        string blocks-per-second-range = "1-2000000"
        int32_t feature-adaptive-playback = 0
        int32_t feature-secure-playback = 1
        string performance-point-3840x2160-range = "60-60"
        string size-range = "144x144-3840x2176"
      }
  Decoder "OMX.google.hevc.decoder" supports
    aliases: []
    attributes: 0: [
      encoder: 0,
      vendor: 0,
      software-only: 0,
      hw-accelerated: 0 ]
    owner: "default"
    rank: 528
    profile/levels: [
          1/65536 (Main/Main 5.1),
          4/65536 (MainStill/Main 5.1) ]
    colors: [
      0x7f420888 (YUV420Flexible),
      0x13 (YUV420Planar) ]
    details: AMessage(what = 0x00000000) = {
        string alignment = "2x2"
        string bitrate-range = "1-10000000"
        string block-count-range = "1-196608"
        string block-size = "8x8"
        string blocks-per-second-range = "1-2000000"
        int32_t feature-adaptive-playback = 0
        string measured-frame-rate-1280x720-range = "120-140"
        string measured-frame-rate-1920x1080-range = "63-78"
        string measured-frame-rate-352x288-range = "584-590"
        string measured-frame-rate-640x360-range = "306-319"
        string size-range = "2x2-4096x4096"
      }

Media type 'video/mp4v-es':
  Decoder "OMX.Nvidia.mp4.decode" supports
    aliases: []
    attributes: 0xa: [
      encoder: 0,
      vendor: 1,
      software-only: 0,
      hw-accelerated: 1 ]
    owner: "default"
    rank: 256
    profile/levels: [
          1/  128 (Simple/5),
      32768/  128 (AdvancedSimple/5) ]
    colors: [
      0x7f420888 (YUV420Flexible),
      0x15 (YUV420SemiPlanar) ]
    details: AMessage(what = 0x00000000) = {
        string alignment = "2x2"
        string bitrate-range = "1-10000000"
        string block-size = "16x16"
        string blocks-per-second-range = "1-244800"
        int32_t feature-adaptive-playback = 0
        string measured-frame-rate-176x144-range = "2635-2635"
        string measured-frame-rate-480x368-range = "1738-1738"
        string performance-point-1920x1080-range = "240-240"
        string size-range = "48x48-1920x1088"
      }
  Decoder "OMX.google.mpeg4.decoder" supports
    aliases: []
    attributes: 0: [
      encoder: 0,
      vendor: 0,
      software-only: 0,
      hw-accelerated: 0 ]
    owner: "default"
    rank: 528
    profile/levels: [
          1/   16 (Simple/3) ]
    colors: [
      0x7f420888 (YUV420Flexible),
      0x13 (YUV420Planar) ]
    details: AMessage(what = 0x00000000) = {
        string alignment = "2x2"
        string bitrate-range = "1-384000"
        string block-size = "16x16"
        string blocks-per-second-range = "12-11880"
        int32_t feature-adaptive-playback = 0
        string measured-frame-rate-176x144-range = "1140-1194"
        string size-range = "2x2-352x288"
      }

Media type 'video/mpeg2':
  Decoder "OMX.Nvidia.mpeg2v.decode" supports
    aliases: []
    attributes: 0xa: [
      encoder: 0,
      vendor: 1,
      software-only: 0,
      hw-accelerated: 1 ]
    owner: "default"
    rank: 256
    profile/levels: [
          0/    1 (Simple/ML),
          1/    3 (Main/HL) ]
    colors: [
      0x7f420888 (YUV420Flexible),
      0x15 (YUV420SemiPlanar) ]
    details: AMessage(what = 0x00000000) = {
        string alignment = "2x2"
        string bitrate-range = "1-120000000"
        string block-size = "16x16"
        string blocks-per-second-range = "1-2000000"
        int32_t feature-adaptive-playback = 0
        string performance-point-1920x1080-range = "240-240"
        string performance-point-3840x2160-range = "60-60"
        string size-range = "32x32-3840x2176"
      }

Media type 'video/wvc1':
  Decoder "OMX.Nvidia.vc1.decode" supports
    aliases: []
    attributes: 0xa: [
      encoder: 0,
      vendor: 1,
      software-only: 0,
      hw-accelerated: 1 ]
    owner: "default"
    rank: 256
    profile/levels: []
    colors: [
      0x7f420888 (YUV420Flexible),
      0x15 (YUV420SemiPlanar) ]
    details: AMessage(what = 0x00000000) = {
        string alignment = "2x2"
        string bitrate-range = "1-120000000"
        string block-size = "16x16"
        string blocks-per-second-range = "1-783360"
        int32_t feature-adaptive-playback = 0
        string performance-point-1920x1080-range = "240-240"
        string size-range = "32x32-3840x2176"
      }

Media type 'video/x-motion-jpeg':
  Decoder "OMX.Nvidia.mjpeg.decoder" supports
    aliases: []
    attributes: 0xa: [
      encoder: 0,
      vendor: 1,
      software-only: 0,
      hw-accelerated: 1 ]
    owner: "default"
    rank: 256
    profile/levels: []
    colors: [
      0x7f420888 (YUV420Flexible),
      0x15 (YUV420SemiPlanar) ]
    details: AMessage(what = 0x00000000) = {
        string block-size = "16x16"
        int32_t feature-adaptive-playback = 0
        string performance-point-1920x1080-range = "30-30"
      }

Media type 'video/x-ms-wmv':
  Decoder "OMX.Nvidia.vc1.decode" supports
    aliases, attributes, owner, rank: see above
    profile/levels: []
    colors: [
      0x7f420888 (YUV420Flexible),
      0x15 (YUV420SemiPlanar) ]
    details: AMessage(what = 0x00000000) = {
        string alignment = "2x2"
        string bitrate-range = "1-120000000"
        string block-size = "16x16"
        string blocks-per-second-range = "1-783360"
        int32_t feature-adaptive-playback = 0
        string performance-point-1920x1080-range = "240-240"
        string size-range = "32x32-3840x2176"
      }

Media type 'video/x-vnd.on2.vp8':
  Decoder "OMX.Nvidia.vp8.decode" supports
    aliases: []
    attributes: 0xa: [
      encoder: 0,
      vendor: 1,
      software-only: 0,
      hw-accelerated: 1 ]
    owner: "default"
    rank: 256
    profile/levels: []
    colors: [
      0x7f420888 (YUV420Flexible),
      0x15 (YUV420SemiPlanar) ]
    details: AMessage(what = 0x00000000) = {
        string alignment = "2x2"
        string bitrate-range = "1-120000000"
        string block-size = "16x16"
        string blocks-per-second-range = "1-783360"
        int32_t feature-adaptive-playback = 0
        string measured-frame-rate-1280x720-range = "536-536"
        string measured-frame-rate-1920x1088-range = "300-339"
        string measured-frame-rate-320x192-range = "2057-2057"
        string measured-frame-rate-640x368-range = "1438-1438"
        string performance-point-1920x1080-range = "240-240"
        string performance-point-3840x2160-range = "60-60"
        string size-range = "48x48-3840x2176"
      }
  Decoder "OMX.google.vp8.decoder" supports
    aliases: []
    attributes: 0: [
      encoder: 0,
      vendor: 0,
      software-only: 0,
      hw-accelerated: 0 ]
    owner: "default"
    rank: 528
    profile/levels: []
    colors: [
      0x7f420888 (YUV420Flexible),
      0x13 (YUV420Planar) ]
    details: AMessage(what = 0x00000000) = {
        string alignment = "2x2"
        string bitrate-range = "1-40000000"
        string block-count-range = "1-16384"
        string block-size = "16x16"
        string blocks-per-second-range = "1-1000000"
        int32_t feature-adaptive-playback = 0
        string max-concurrent-instances = "27"
        string measured-frame-rate-1280x720-range = "67-76"
        string measured-frame-rate-1920x1080-range = "26-29"
        string measured-frame-rate-320x180-range = "990-1087"
        string measured-frame-rate-640x360-range = "324-351"
        string size-range = "2x2-2048x2048"
      }

Media type 'video/x-vnd.on2.vp9':
  Decoder "OMX.Nvidia.vp9.decode" supports
    aliases: []
    attributes: 0xa: [
      encoder: 0,
      vendor: 1,
      software-only: 0,
      hw-accelerated: 1 ]
    owner: "default"
    rank: 256
    profile/levels: [
          1/  512 (0/5.1) ]
    colors: [
      0x7f420888 (YUV420Flexible),
      0x15 (YUV420SemiPlanar) ]
    details: AMessage(what = 0x00000000) = {
        string alignment = "2x2"
        string bitrate-range = "1-120000000"
        string block-size = "16x16"
        string blocks-per-second-range = "1-2000000"
        int32_t feature-adaptive-playback = 0
        string measured-frame-rate-1280x720-range = "643-643"
        string measured-frame-rate-1920x1088-range = "319-319"
        string measured-frame-rate-320x192-range = "3400-3500"
        string measured-frame-rate-640x368-range = "1532-1532"
        string performance-point-3840x2160-range = "60-60"
        string size-range = "144x144-3840x2176"
      }
  Decoder "OMX.Nvidia.vp9.decode.secure" supports
    aliases: []
    attributes: 0xa: [
      encoder: 0,
      vendor: 1,
      software-only: 0,
      hw-accelerated: 1 ]
    owner: "default"
    rank: 256
    profile/levels: [
          1/  512 (0/5.1) ]
    colors: [
      0x7f420888 (YUV420Flexible),
      0x15 (YUV420SemiPlanar) ]
    details: AMessage(what = 0x00000000) = {
        string alignment = "2x2"
        string bitrate-range = "1-120000000"
        string block-size = "16x16"
        string blocks-per-second-range = "1-2000000"
        int32_t feature-adaptive-playback = 0
        int32_t feature-secure-playback = 1
        string performance-point-3840x2160-range = "60-60"
        string size-range = "144x144-3840x2176"
      }
  Decoder "OMX.google.vp9.decoder" supports
    aliases: []
    attributes: 0: [
      encoder: 0,
      vendor: 0,
      software-only: 0,
      hw-accelerated: 0 ]
    owner: "default"
    rank: 528
    profile/levels: [
          1/  256 (0/5),
          4/  256 (2/5),
       4096/  256 (2HDR/5),
      16384/  256 (2HDRPlus/5) ]
    colors: [
      0x7f420888 (YUV420Flexible),
      0x13 (YUV420Planar) ]
    details: AMessage(what = 0x00000000) = {
        string alignment = "2x2"
        string bitrate-range = "1-40000000"
        string block-count-range = "1-16384"
        string block-size = "16x16"
        string blocks-per-second-range = "1-500000"
        int32_t feature-adaptive-playback = 0
        string measured-frame-rate-1280x720-range = "94-103"
        string measured-frame-rate-1920x1080-range = "52-57"
        string measured-frame-rate-320x180-range = "682-753"
        string measured-frame-rate-640x360-range = "287-313"
        string size-range = "2x2-2048x2048"
      }


Encoder infos by media types:
=============================

Media type 'audio/3gpp':
  Encoder "OMX.google.amrnb.encoder" supports
    aliases: []
    attributes: 0x1: [
      encoder: 1,
      vendor: 0,
      software-only: 0,
      hw-accelerated: 0 ]
    owner: "default"
    rank: 16
    profile/levels: []
    colors: []
    details: AMessage(what = 0x00000000) = {
        string bitrate-range = "4750-12200"
        string feature-bitrate-modes = "CBR"
        string max-channel-count = "1"
        string sample-rate-ranges = "8000"
      }

Media type 'audio/amr-wb':
  Encoder "OMX.google.amrwb.encoder" supports
    aliases: []
    attributes: 0x1: [
      encoder: 1,
      vendor: 0,
      software-only: 0,
      hw-accelerated: 0 ]
    owner: "default"
    rank: 16
    profile/levels: []
    colors: []
    details: AMessage(what = 0x00000000) = {
        string bitrate-range = "6600-23850"
        string feature-bitrate-modes = "CBR"
        string max-channel-count = "1"
        string sample-rate-ranges = "16000"
      }

Media type 'audio/flac':
  Encoder "OMX.google.flac.encoder" supports
    aliases: []
    attributes: 0x1: [
      encoder: 1,
      vendor: 0,
      software-only: 0,
      hw-accelerated: 0 ]
    owner: "default"
    rank: 16
    profile/levels: []
    colors: []
    details: AMessage(what = 0x00000000) = {
        string bitrate-range = "1-21000000"
        string complexity-default = "5"
        string complexity-range = "0-8"
        string feature-bitrate-modes = "CQ"
        string max-channel-count = "2"
        string sample-rate-ranges = "1-655350"
      }

Media type 'audio/mp4a-latm':
  Encoder "OMX.google.aac.encoder" supports
    aliases: []
    attributes: 0x1: [
      encoder: 1,
      vendor: 0,
      software-only: 0,
      hw-accelerated: 0 ]
    owner: "default"
    rank: 16
    profile/levels: [
          2/    0 (LC/??),
          5/    0 (HE/??),
         29/    0 (HE_PS/??),
         23/    0 (LD/??),
         39/    0 (ELD/??) ]
    colors: []
    details: AMessage(what = 0x00000000) = {
        string bitrate-range = "8000-960000"
        string max-channel-count = "6"
        string sample-rate-ranges = "8000,11025,12000,16000,22050,24000,32000,44100,48000"
      }

Media type 'image/vnd.android.heic':
  Encoder "OMX.Nvidia.h265.encoder" supports
    aliases: []
    attributes: 0xb: [
      encoder: 1,
      vendor: 1,
      software-only: 0,
      hw-accelerated: 1 ]
    owner: "default"
    rank: 256
    profile/levels: [
          1/32768 (??/??) ]
    colors: [
      0x7f420888 (YUV420Flexible),
      0x13 (YUV420Planar),
      0x15 (YUV420SemiPlanar),
      0x7f000789 (Surface),
      0x7ff00100 (??),
      0x7ff00101 (??),
      0x7ff00102 (??),
      0x7ff00103 (??),
      0x7ff00104 (??),
      0x7ff00105 (??) ]
    details: AMessage(what = 0x00000000) = {
        string alignment = "2x2"
        string bitrate-range = "1-50000000"
        string block-size = "16x16"
        string blocks-per-second-range = "1-783360"
        string feature-bitrate-modes = "VBR,CBR,CQ"
        string performance-point-3840x2160-range = "30-30"
        string quality-default = "45"
        string quality-range = "0-100"
        string quality-scale = "linear"
        string size-range = "96x96-3840x2176"
      }

Media type 'video/3gpp':
  Encoder "OMX.google.h263.encoder" supports
    aliases: []
    attributes: 0x1: [
      encoder: 1,
      vendor: 0,
      software-only: 0,
      hw-accelerated: 0 ]
    owner: "default"
    rank: 528
    profile/levels: [
          1/   16 (Baseline/45) ]
    colors: [
      0x7f420888 (YUV420Flexible),
      0x13 (YUV420Planar),
      0x15 (YUV420SemiPlanar),
      0x7f000789 (Surface) ]
    details: AMessage(what = 0x00000000) = {
        string alignment = "16x16"
        string bitrate-range = "1-128000"
        string measured-frame-rate-176x144-range = "643-656"
        string size-range = "176x144-176x144"
      }

Media type 'video/avc':
  Encoder "OMX.Nvidia.h264.encoder" supports
    aliases: []
    attributes: 0xb: [
      encoder: 1,
      vendor: 1,
      software-only: 0,
      hw-accelerated: 1 ]
    owner: "default"
    rank: 256
    profile/levels: [
          8/65536 (High/5.2),
          2/65536 (Main/5.2),
          1/65536 (Baseline/5.2) ]
    colors: [
      0x7f420888 (YUV420Flexible),
      0x13 (YUV420Planar),
      0x15 (YUV420SemiPlanar),
      0x7f000789 (Surface) ]
    details: AMessage(what = 0x00000000) = {
        string alignment = "2x2"
        string bitrate-range = "1-50000000"
        string block-size = "16x16"
        string blocks-per-second-range = "1-783360"
        string feature-bitrate-modes = "VBR,CBR"
        string measured-frame-rate-1280x720-range = "130-192"
        string measured-frame-rate-1920x1080-range = "70-95"
        string measured-frame-rate-320x240-range = "760-902"
        string measured-frame-rate-720x480-range = "280-387"
        string performance-point-1920x1080-range = "240-240"
        string performance-point-3840x2160-range = "30-30"
        string size-range = "48x48-3840x2176"
      }
  Encoder "OMX.google.h264.encoder" supports
    aliases: []
    attributes: 0x1: [
      encoder: 1,
      vendor: 0,
      software-only: 0,
      hw-accelerated: 0 ]
    owner: "default"
    rank: 528
    profile/levels: [
      65536/ 4096 (ConstrainedBaseline/4.1),
          1/ 4096 (Baseline/4.1),
          2/ 4096 (Main/4.1) ]
    colors: [
      0x7f420888 (YUV420Flexible),
      0x13 (YUV420Planar),
      0x15 (YUV420SemiPlanar),
      0x7f000789 (Surface) ]
    details: AMessage(what = 0x00000000) = {
        string alignment = "2x2"
        string bitrate-range = "1-12000000"
        string block-count-range = "1-8192"
        string block-size = "16x16"
        string blocks-per-second-range = "1-245760"
        int32_t feature-intra-refresh = 0
        string measured-frame-rate-1280x720-range = "88-112"
        string measured-frame-rate-1920x1080-range = "45-56"
        string measured-frame-rate-320x240-range = "490-610"
        string measured-frame-rate-720x480-range = "170-200"
        string size-range = "16x16-2048x2048"
      }

Media type 'video/hevc':
  Encoder "OMX.Nvidia.h265.encoder" supports
    aliases, attributes, owner, rank: see above
    profile/levels: [
          1/32768 (Main/High 5) ]
    colors: [
      0x7f420888 (YUV420Flexible),
      0x13 (YUV420Planar),
      0x15 (YUV420SemiPlanar),
      0x7f000789 (Surface),
      0x7ff00100 (??),
      0x7ff00101 (??),
      0x7ff00102 (??),
      0x7ff00103 (??),
      0x7ff00104 (??),
      0x7ff00105 (??) ]
    details: AMessage(what = 0x00000000) = {
        string alignment = "2x2"
        string bitrate-range = "1-50000000"
        string block-size = "16x16"
        string blocks-per-second-range = "1-783360"
        string feature-bitrate-modes = "VBR,CBR,CQ"
        string measured-frame-rate-1280x720-range = "135-171"
        string measured-frame-rate-1920x1080-range = "65-80"
        string measured-frame-rate-320x240-range = "850-982"
        string measured-frame-rate-3840x2160-range = "18-22"
        string measured-frame-rate-720x480-range = "300-364"
        string performance-point-3840x2160-range = "30-30"
        string quality-default = "45"
        string quality-range = "0-100"
        string quality-scale = "linear"
        string size-range = "96x96-3840x2176"
      }

Media type 'video/mp4v-es':
  Encoder "OMX.google.mpeg4.encoder" supports
    aliases: []
    attributes: 0x1: [
      encoder: 1,
      vendor: 0,
      software-only: 0,
      hw-accelerated: 0 ]
    owner: "default"
    rank: 528
    profile/levels: [
          4/    8 (Core/2) ]
    colors: [
      0x7f420888 (YUV420Flexible),
      0x13 (YUV420Planar),
      0x15 (YUV420SemiPlanar),
      0x7f000789 (Surface) ]
    details: AMessage(what = 0x00000000) = {
        string alignment = "16x16"
        string bitrate-range = "1-64000"
        string block-size = "16x16"
        string blocks-per-second-range = "12-1485"
        string measured-frame-rate-176x144-range = "689-754"
        string size-range = "16x16-176x144"
      }

Media type 'video/x-vnd.on2.vp8':
  Encoder "OMX.Nvidia.vp8.encoder" supports
    aliases: []
    attributes: 0xb: [
      encoder: 1,
      vendor: 1,
      software-only: 0,
      hw-accelerated: 1 ]
    owner: "default"
    rank: 256
    profile/levels: [
          1/    1 (Main/V0) ]
    colors: [
      0x7f420888 (YUV420Flexible),
      0x13 (YUV420Planar),
      0x15 (YUV420SemiPlanar),
      0x7f000789 (Surface) ]
    details: AMessage(what = 0x00000000) = {
        string alignment = "2x2"
        string bitrate-range = "1-50000000"
        string block-size = "16x16"
        string blocks-per-second-range = "1-783360"
        string feature-bitrate-modes = "VBR,CBR"
        string measured-frame-rate-1280x720-range = "114-145"
        string measured-frame-rate-320x180-range = "841-854"
        string measured-frame-rate-640x360-range = "363-421"
        string performance-point-3840x2160-range = "30-30"
        string size-range = "48x48-3840x2176"
      }
  Encoder "OMX.google.vp8.encoder" supports
    aliases: []
    attributes: 0x1: [
      encoder: 1,
      vendor: 0,
      software-only: 0,
      hw-accelerated: 0 ]
    owner: "default"
    rank: 528
    profile/levels: [
          1/    1 (Main/V0),
          1/    2 (Main/V1),
          1/    4 (Main/V2),
          1/    8 (Main/V3) ]
    colors: [
      0x7f420888 (YUV420Flexible),
      0x13 (YUV420Planar),
      0x15 (YUV420SemiPlanar),
      0x7f000789 (Surface) ]
    details: AMessage(what = 0x00000000) = {
        string alignment = "2x2"
        string bitrate-range = "1-40000000"
        string block-count-range = "1-16384"
        string block-size = "16x16"
        string feature-bitrate-modes = "VBR,CBR"
        string measured-frame-rate-1280x720-range = "35-36"
        string measured-frame-rate-1920x1080-range = "28-28"
        string measured-frame-rate-320x180-range = "242-253"
        string measured-frame-rate-640x360-range = "114-116"
        string size-range = "2x2-2048x2048"
      }

Media type 'video/x-vnd.on2.vp9':
  Encoder "OMX.google.vp9.encoder" supports
    aliases: []
    attributes: 0x1: [
      encoder: 1,
      vendor: 0,
      software-only: 0,
      hw-accelerated: 0 ]
    owner: "default"
    rank: 528
    profile/levels: [
          1/  128 (0/4.1) ]
    colors: [
      0x7f420888 (YUV420Flexible),
      0x13 (YUV420Planar),
      0x15 (YUV420SemiPlanar),
      0x7f000789 (Surface) ]
    details: AMessage(what = 0x00000000) = {
        string alignment = "2x2"
        string bitrate-range = "1-40000000"
        string block-count-range = "1-3600"
        string block-size = "16x16"
        string feature-bitrate-modes = "VBR,CBR"
        string size-range = "2x2-2048x2048"
      }

 No media recorder client

 Files opened and/or mapped:
  /proc/3375/fd/8 -> /data/app/~~mKbM3aLmd0dExMDREFTz0w==/flar2.homebutton-9BZuD8VrbsDMcgAzCy0Dyg==/base.apk
sif:/ $ 

2019 shield Tegra X1

unrelated, OMX.google.vorbis.decoder, the device has vorbis support but I have notice the app transcode the audio.

@VampiricAlien
Copy link
Author

@MichaelRUSF Have been testing different device that says it supports 5.2 but still trancecodes, not sure if this is any help to you

Decoder "c2.android.hevc.decoder" supports
    aliases: [
      "OMX.google.hevc.decoder" ]
    attributes: 0x4: [
      encoder: 0,
      vendor: 0,
      software-only: 1,
      hw-accelerated: 0 ]
    owner: "codec2::software"
    rank: 512
    profile/levels: [
          1/524288 (Main/High 5.2),
          4/524288 (MainStill/High 5.2) ]
    colors: [
      0x7f420888 (YUV420Flexible),
      0x13 (YUV420Planar),
      0x15 (YUV420SemiPlanar),
      0x14 (YUV420PackedPlanar),
      0x27 (YUV420PackedSemiPlanar) ]
    details: AMessage(what = 0x00000000) = {
        string measured-frame-rate-1280x720-range = "28-29"
        string measured-frame-rate-1920x1080-range = "20-20"
        string measured-frame-rate-352x288-range = "105-106"
        string measured-frame-rate-640x360-range = "59-60"
        string measured-frame-rate-720x480-range = "56-57"
        string alignment = "2x2"
        string bitrate-range = "1-5000000"
        string block-count-range = "1-65536"
        string block-size = "8x8"
        string blocks-per-second-range = "1-491520"
        int32_t feature-adaptive-playback = 0
        string size-range = "2x2-2048x2048"
      }

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working playback Issue related to media playback
Projects
None yet
Development

No branches or pull requests

5 participants