Hi all, I have developed an Android VR player, which supports 4K video playback so far. I want to include the support for 8K video. The current Snapdragon 845 mobile platform supports up to 4K video playback, which lacks the support for my requirement. So I choose Android-x86 as my platform for development, which is Android OS runs on Intel x86 architecture. I've tried to play 8K(7680*3840) HEVC encoded video on Android-x86 7.1-r2 with VLC for Android, the screen freeze. My CPU is Intel Core i5-7400 and my graphics card is NVIDIA GeForce GTX 1060. I am pretty sure my NVIDIA card is able to decode 8K video. Because with the same hardware, I play the same 8K video on Ubuntu 16.04 with ffplay smoothly. NVIDIA's decoder usage is about 40% and CPU usage is about 50%.>From NVIDIA website (https://developer.nvidia.com/nvidia-video-codec-sdk#NVDECFeatures), we know Pascal cards support up to 8192*8192 resolution video decoding acceleration with HEVC codec. From Nouveau feature matrix ( https://nouveau.freedesktop.org/wiki/FeatureMatrix/), we know the progress of video decoding acceleration on NV130 family ( https://nouveau.freedesktop.org/wiki/CodeNames/#NV130) is TODO. In Nouveau VideoAcceleration page ( https://nouveau.freedesktop.org/wiki/VideoAcceleration/), we can see that each element in VP6+ row is TODO as well. I can imagine there is a long way to go to fulfill my requirements. But I know a driver for my NVIDIA card is a must for the hardware decoder to work. Can somebody shed some lights that if I want to play an 8K HEVC encoded video on Android-x86 with NVIDIA's decoder enabled, what should I do in this project? And how to start? Best regards, Victor -------------- next part -------------- An HTML attachment was scrubbed... URL: <https://lists.freedesktop.org/archives/nouveau/attachments/20181019/95efd59b/attachment.html>
On Fri, Oct 19, 2018 at 8:53 AM 孫偉程 <dmvictor at gmail.com> wrote:> I can imagine there is a long way to go to fulfill my requirements. But I know a driver for my NVIDIA card is a must for the hardware decoder to work. Can somebody shed some lights that if I want to play an 8K HEVC encoded video on Android-x86 with NVIDIA's decoder enabled, what should I do in this project? And how to start?The steps are straightforward, although each one of them is fairly tricky. 1. Load decoding firmware into the engine 2. Hook up engine "servicing" (like interrupts, channels, etc) 3. Figure out the how the commands work, what data they require, how that data is formatted, etc. 4. Sit back and enjoy some 8K HEVC video. In VP3/4/5, there are 3 stages to decoding -- BSP (bit-stream processor), VP (video processor), and PPP (post-processing processor?). Starting with VP6, we believe these got integrated into a single engine. However not much more is known. I have a vague notion that the way the data is passed in hasn't really changed much, although obviously for HEVC it will have as that's a new format. Perhaps it's all even simpler now if you don't have to drive the VP/PPP independently. But perhaps you still do and they're just all in a single engine. I haven't so much as looked at a command stream... Loading the firmware could be a drag on GM20x+ -- if you have to deal with secure mode, it'll be a huge pain. You will also have to locate the firmware, which is no longer quite as easy as it once was, I think the GPU will DMA it from system memory now as opposed to it being uploaded directly in the mmiotrace. I've created a "scanner" tool which looks through the blob for firmware-looking things. Cheers, -ilia
Dear Ilia, Thanks for your reply. The works seem complicated. To the best of my knowledge, at a high level for building my 8K HW decode enabled Android OS, I need to do the following. 1. Extract firmware from the NVIDIA binary driver. 2. Make a customized kernel with the extracted firmware. 3. Replace Android-x86's kernel with the customized kernel. 4. Add libdrm, DDX, Mesa & libVDPAU to Android-x86 for userspace implementation. 5. Build the customized Android-x86 image. Is there something I am missing or misunderstanding? Thank you! Best regards, Victor On Fri, 19 Oct 2018 at 21:09, Ilia Mirkin <imirkin at alum.mit.edu> wrote:> On Fri, Oct 19, 2018 at 8:53 AM 孫偉程 <dmvictor at gmail.com> wrote: > > I can imagine there is a long way to go to fulfill my requirements. But > I know a driver for my NVIDIA card is a must for the hardware decoder to > work. Can somebody shed some lights that if I want to play an 8K HEVC > encoded video on Android-x86 with NVIDIA's decoder enabled, what should I > do in this project? And how to start? > > The steps are straightforward, although each one of them is fairly tricky. > > 1. Load decoding firmware into the engine > 2. Hook up engine "servicing" (like interrupts, channels, etc) > 3. Figure out the how the commands work, what data they require, how > that data is formatted, etc. > 4. Sit back and enjoy some 8K HEVC video. > > In VP3/4/5, there are 3 stages to decoding -- BSP (bit-stream > processor), VP (video processor), and PPP (post-processing > processor?). Starting with VP6, we believe these got integrated into a > single engine. However not much more is known. I have a vague notion > that the way the data is passed in hasn't really changed much, > although obviously for HEVC it will have as that's a new format. > Perhaps it's all even simpler now if you don't have to drive the > VP/PPP independently. But perhaps you still do and they're just all in > a single engine. I haven't so much as looked at a command stream... > > Loading the firmware could be a drag on GM20x+ -- if you have to deal > with secure mode, it'll be a huge pain. You will also have to locate > the firmware, which is no longer quite as easy as it once was, I think > the GPU will DMA it from system memory now as opposed to it being > uploaded directly in the mmiotrace. I've created a "scanner" tool > which looks through the blob for firmware-looking things. > > Cheers, > > -ilia >-------------- next part -------------- An HTML attachment was scrubbed... URL: <https://lists.freedesktop.org/archives/nouveau/attachments/20181020/4f45e0ef/attachment.html>