4) Try to procure plugins such as VLC or MPlayer-gecko. Are they allowed to decode on the hardware?
Are plugins sandboxed in the same way?
Is this a good idea?
2) Use a bit of the work that has been done for ChromeOS HW-accelerated support. Would it reasonably work if I could get OpenMax working on debian 7?
3) Compile chromium with use_system_ffmpeg.
4) Try to procure plugins such as VLC or MPlayer-gecko. Are they allowed to decode on the hardware? Are plugins sandboxed in the same way? Can that be disabled? Is this a good idea?
5) Compile own webkit and try to shoehorn playing via system ffmpeg decoded frames in.
W1Z-sAGQin4 is the thread you should most pay attention to, and bug 137247 is the bug that probably contains the most pointers.
Your best bet is to get VA-API drivers/libs working on your target platform and then enabling VAVDA in your build of chromium. Make sure you set the GYP_DEFINES variables to enable h264 decoding:proprietary_codecs=1 ffmpeg_branding=Chrome branding=Chrome
Note that this is an entirely unsupported/untested configuration and you likely *will* need to use a debugger to figure out what's going wrong until it all goes right (and that even once it works, it may well break in the future as nobody else will be building your config).
2) Use a bit of the work that has been done for ChromeOS HW-accelerated support. Would it reasonably work if I could get OpenMax working on debian 7?
I don't believe OMX-IL implementations exist for x86/intel hardware.Intel's horse is VA-API, which is why I recommend VAVDA above.
3) Compile chromium with use_system_ffmpeg.As you've guessed, this will be useless to you - the system ffmpeg still runs inside the renderer.You can disable the sandbox, but that's a bad idea, and I don't know if even that would make the system ffmpeg use any HW accel (I've never tried).
4) Try to procure plugins such as VLC or MPlayer-gecko. Are they allowed to decode on the hardware? Are plugins sandboxed in the same way? Can that be disabled? Is this a good idea?NPAPI plugins are not sandboxed, and it is a terrible idea to use them for that reason.
5) Compile own webkit and try to shoehorn playing via system ffmpeg decoded frames in.This combines the weaknesses of your #1 & #3 :)
Good luck,-a
Note that this is an entirely unsupported/untested configuration and you likely *will* need to use a debugger to figure out what's going wrong until it all goes right (and that even once it works, it may well break in the future as nobody else will be building your config).It indeed seemed to me that VAVDA on Chrome for linux is still heavily in testing.
3) Compile chromium with use_system_ffmpeg.As you've guessed, this will be useless to you - the system ffmpeg still runs inside the renderer.You can disable the sandbox, but that's a bad idea, and I don't know if even that would make the system ffmpeg use any HW accel (I've never tried).That's actually interesting. In this comment and in a later comment you refer to the badness of running outside of the sandbox. In theory I fully agree with you, but if it is what is necessary to get some HW acceleration for my videos, it doesn't seem like the worst thing in the world. Are you more concerned about loss of security or crash-proneness? Because I can take the lack of security, I will only display local content.
4) Try to procure plugins such as VLC or MPlayer-gecko. Are they allowed to decode on the hardware? Are plugins sandboxed in the same way? Can that be disabled? Is this a good idea?NPAPI plugins are not sandboxed, and it is a terrible idea to use them for that reason.Security, crashing or both?
Note that this is an entirely unsupported/untested configuration and you likely *will* need to use a debugger to figure out what's going wrong until it all goes right (and that even once it works, it may well break in the future as nobody else will be building your config).It indeed seemed to me that VAVDA on Chrome for linux is still heavily in testing.Not really. VAVDA on CrOS is shipping / production quality. VAVDA on Linux is not even a little bit in testing :)
3) Compile chromium with use_system_ffmpeg.As you've guessed, this will be useless to you - the system ffmpeg still runs inside the renderer.You can disable the sandbox, but that's a bad idea, and I don't know if even that would make the system ffmpeg use any HW accel (I've never tried).That's actually interesting. In this comment and in a later comment you refer to the badness of running outside of the sandbox. In theory I fully agree with you, but if it is what is necessary to get some HW acceleration for my videos, it doesn't seem like the worst thing in the world. Are you more concerned about loss of security or crash-proneness? Because I can take the lack of security, I will only display local content.I'm concerned about security, and about the odds that the thing you build to only play local content will eventually get applied to untrusted content ;)
If all you need is a local media player, you might be better off using a media player application instead of a web browser...
4) Try to procure plugins such as VLC or MPlayer-gecko. Are they allowed to decode on the hardware? Are plugins sandboxed in the same way? Can that be disabled? Is this a good idea?NPAPI plugins are not sandboxed, and it is a terrible idea to use them for that reason.Security, crashing or both?Security.-a
It indeed seemed to me that VAVDA on Chrome for linux is still heavily in testing.Not really. VAVDA on CrOS is shipping / production quality. VAVDA on Linux is not even a little bit in testing :)The CrOS part of your sentence gives me more hope while the linux part of your sentence gives me less hope. I guess it cancels out :).
One more thing, if you happen to know this, in which version did libvpx decoding get switched out for ffvp8 decoding?
I'm asking because we're currently staying on an older version of chrome for stability reasons
I've been looking for a few days on how to get hardware accelerated video to display in Chrome on linux.
I'm developing an application which will run inside the browser and sometimes needs to display heavy 1080p videos (I can choose the encoder used). The devices are usually intel Atoms so they are too low-powered for smooth playback through software.After enquiring on the IRC channel, looking at the bug tracker and searching for terms such as "ffmpeg" and "omx" I'm still not sure what would be the most fruitful thing for me to do at the moment.Hardware platform: Intel HD 3000 and 4000 chips
Some ideas that I've had:1) Extend chromium source myself => I know C++ but have no experience with neither Chromium nor ffmpeg nor OMX nor VA-API so I assume that's a very steep learning curve and I don't think I have sufficient time for that allotted to this project
2) Use a bit of the work that has been done for ChromeOS HW-accelerated support. Would it reasonably work if I could get OpenMax working on debian 7?
3) Compile chromium with use_system_ffmpeg. I'm not sure if this will help as the posts I've read seem to hint that whatever ffmpeg (system or internal) is used, it is sandboxed and cannot reach the GPU. This will sound stupid but is there a way I can disable the sandbox? Probably not but I'm running on a closed platform so it doesn't need to be secure in that regard.
4) Try to procure plugins such as VLC or MPlayer-gecko. Are they allowed to decode on the hardware? Are plugins sandboxed in the same way? Can that be disabled? Is this a good idea?
5) Compile own webkit and try to shoehorn playing via system ffmpeg decoded frames in.
Some are of course far more far flung than others (especially the own webkit browser), but at this point I'm willing to consider everything. What do you guys think would be the most fruitful way to spend my time trying to get this to work?
I know the chromium devs are busy with making the web a better place for all and you probably won't be able to answer every question in my mail, but I would appreciate even a "it's not going to happen, look for something else".
Thanks in advance,NicolasP.S.: I have these mailing list posts bookmarked, descending date of OP:https://groups.google.com/a/chromium.org/forum/?fromgroups=#!searchin/chromium-dev/ffmpeg/chromium-dev/o0qIVudjoSI/FIC2bg1IPZsJ (about using system mesa, thought I'd flag it just in case)
https://groups.google.com/a/chromium.org/forum/?fromgroups#!searchin/chromium-dev/ffmpeg/chromium-dev/VL2Hb5W581E/n4q_VDG4i7sJ (about ffvp8 being used for decodes)
--
--
Chromium Developers mailing list: chromi...@chromium.org
View archives, change email options, or unsubscribe:
http://groups.google.com/a/chromium.org/group/chromium-dev
My 2 cents...
On Tue, Feb 19, 2013 at 7:02 AM, <nicolash...@gmail.com> wrote:
I've been looking for a few days on how to get hardware accelerated video to display in Chrome on linux.Preferred approach is OpenMac for linux.
I'm developing an application which will run inside the browser and sometimes needs to display heavy 1080p videos (I can choose the encoder used). The devices are usually intel Atoms so they are too low-powered for smooth playback through software.After enquiring on the IRC channel, looking at the bug tracker and searching for terms such as "ffmpeg" and "omx" I'm still not sure what would be the most fruitful thing for me to do at the moment.Hardware platform: Intel HD 3000 and 4000 chipsAtom has GMA, not Intel HD.You're better off with external nVidia Ion for Atom.
Some ideas that I've had:1) Extend chromium source myself => I know C++ but have no experience with neither Chromium nor ffmpeg nor OMX nor VA-API so I assume that's a very steep learning curve and I don't think I have sufficient time for that allotted to this projectNone of these work within the sandbox.
2) Use a bit of the work that has been done for ChromeOS HW-accelerated support. Would it reasonably work if I could get OpenMax working on debian 7?Yes
3) Compile chromium with use_system_ffmpeg. I'm not sure if this will help as the posts I've read seem to hint that whatever ffmpeg (system or internal) is used, it is sandboxed and cannot reach the GPU. This will sound stupid but is there a way I can disable the sandbox? Probably not but I'm running on a closed platform so it doesn't need to be secure in that regard.Sandbox will prevent this. Same as (1). Historically we tested outside the sandbox, but you couldnt ship code like this.
4) Try to procure plugins such as VLC or MPlayer-gecko. Are they allowed to decode on the hardware? Are plugins sandboxed in the same way? Can that be disabled? Is this a good idea?Short term will work with NPAPI or ActiveX, but not Pepper.
5) Compile own webkit and try to shoehorn playing via system ffmpeg decoded frames in.Safari/Quicktime and Netflix work this way.
Some are of course far more far flung than others (especially the own webkit browser), but at this point I'm willing to consider everything. What do you guys think would be the most fruitful way to spend my time trying to get this to work?OpenMax or CPU.
I know the chromium devs are busy with making the web a better place for all and you probably won't be able to answer every question in my mail, but I would appreciate even a "it's not going to happen, look for something else".Chrome has the internals to do HW decode.Its enabled for Windows publicly.Making it work for Linux would be the next step.
I've been looking for a few days on how to get hardware accelerated video to display in Chrome on linux.Preferred approach is OpenMac for linux.So even for non-chromeos cases?
2) Use a bit of the work that has been done for ChromeOS HW-accelerated support. Would it reasonably work if I could get OpenMax working on debian 7?YesThat's encouraging. I suppose that's this OVDA thing I've been reading about, no? I wonder if both Intel and NVIDIA cards can be driven by OpenMax. I got the idea from raspberry pi.
I know the chromium devs are busy with making the web a better place for all and you probably won't be able to answer every question in my mail, but I would appreciate even a "it's not going to happen, look for something else".Chrome has the internals to do HW decode.Its enabled for Windows publicly.Making it work for Linux would be the next step.
Yet windows probably uses something else than OVDA or VAVDA, no? How come this avoids the sandbox at any rate?