我一整天都在研究,并没有走得太远.我在Windows 7上,使用directx 11.(我的最终输出是DX11纹理上的视频帧)我想解码一些非常大的H.264视频文件,而CPU(使用libav)则没有剪了它.
我已经看过了使用DXVA2的libav的hwaccel功能,但是当我需要创建一个IDirectXVideoDecoder时,它只能用一个D3D9接口来创建.(我没有使用DX11)
每当我查看DXVA文档时,它都没有引用DX11,是在DX10或11中删除了吗?(无法找到任何关于此的确认,也没有任何说明DXVA2是多余的,可能是它被DXVA-HD超越了吗?)
然后我查看了媒体基础SDK,因为它看起来像我应该用于DX11 ...但我的标题中没有类型(文档说只是包括,但这没有产生任何东西).他们还指定了最少的窗口8来使用它.
我相信使用MF我需要windows 8 SDK,它现在包含所有directx libs/headers.
因此,这与Windows 7存在差距...是否有可能获得硬件加速视频解码?如果是的话,我应该使用哪种API?
我为Android编译了一个旧版本的FFmpeg(如果我没记错的话是0.6.X).FFmpeg解码视频帧,缩放它,然后我使用OpenGL在屏幕上绘制它.据我所知,问题在于解码和缩放 - 它们不是硬件加速的.
我的问题是:
android ffmpeg video-codecs hardware-acceleration live-wallpaper
我正在开发ICS并尝试理解为什么在SurfaceView中使用Canvas时Canvas.isHardwareAccelerated()将始终返回FALSE.
我尝试过这样一个非常基本的例子:http: //android-coding.blogspot.com/2011/05/drawing-on-surfaceview.html 或者这个:http://jmsliu.com/199/android-帆布example.html的
我甚至将它们修改为在绘制循环中没有任何画布调用,以为我可能在某些绘图调用中遇到了一些不受支持的HW accel操作.我在"不支持的绘图操作"developer.android.com/guide/topics/graphics/hardware-accel.html下检查了此列表,但我没有做任何这些.
我在开发者选项中使用Force GPU渲染标志以及清单内部,我也指定minSDK/targetSDK> = 14.
View.isHardwareAccelerated将返回TRUE,而Canvas.isHardwareAccelerated将始终返回FALSE.
我已经看到Canvas.java的硬编码返回false为isHardwareAccelerated(),而HardwareCanvas.java返回true.我想由于某些原因我没有获得硬件路径,为什么?
SurfaceView中的Canvas可以加速硬件吗?
谢谢
谷歌已宣布Android模拟器最终使用GPU,如此处所述
但是,我找不到如何使用它的教程.我试图做一些事情而且它一直在崩溃.
到目前为止,我试过:
在"...\extras\intel\Hardware_Accelerated_Execution_Manager\IntelHaxm.exe"上安装应用程序.
启用/禁用avd的GPU仿真上的标志.
重启eclipse和操作系统.
是否有人成功使用新功能?
android gpu emulation hardware-acceleration android-virtual-device
我有一个在许多设备上加速硬件的View.在该视图中,我需要能够检查是否使用了硬件加速. 根据Android SDK文档,这是使用完成的View.isHardwareAccelerated().有趣的是,在支持硬件加速的设备上进行测试时,即使Views本身实际上是硬件加速,此方法也总是返回false.(我已经最终确认了这一点)它变得更加混乱:
如果我打电话给View.getLayerType()我,我发现它始终设置为View.LAYER_TYPE_NONE.如果我打电话给View.setLayerType(View.LAYER_TYPE_SOFTWARE)我可以有效地禁用硬件加速.我可以通过调用View.setLayerType(View.LAYER_TYPE_HARDWARE)OR 重新启用它View.setLayerType(View.LAYER_TYPE_NONE).为什么要View.LAYER_TYPE_NONE启用硬件加速???
继续,对于支持hw加速的设备,似乎我可以通过检查是否View.LAYER_TYPE_SOFTWARE设置来检查状态,但是我怀疑这种方法不适用于不支持hw加速的设备.我想知道我是在滥用View.isHardwareAccelerated()还是只是被打破了.
编辑:我想我更接近理解这个问题.这个问题也很有帮助:
我的工作理论是,当调用构造函数时,View还不知道硬件是否加速,这是我正在检查的地方.如果是这种情况,我想知道我可以在我的类中覆盖哪些扩展View,这将允许我成功检查硬件加速.我怀疑它View.onSizeChanged(...)会起作用,但我想避免使用可能被无数次调用的东西.
编辑#2:看起来就是这样.我把支票搬进去View.onSizeChanged(),现在报道正确.我仍然想知道在我的视图中是否有更好的位置我可以移动此检查.
在我完成多核编程课程的编写时,我想出了一些非常奇怪的东西,我想和你讨论.
我们被要求创建任何程序,以显示为多核平台编程的显着改进.我决定尝试在GPU上编写代码以试用OpenCL.我已经选择了矩阵卷积问题,因为我对它非常熟悉(我之前使用open_mpi对它进行了并行处理,对于大图像来说速度很快).
所以在这里,我选择一个大的GIF文件(2.5 MB)[2816X2112],我运行顺序版本(原始代码),我得到平均15.3秒.
然后我运行我刚刚在我的MBP集成GeForce 9400M上编写的新OpenCL版本,我得到的平均时间为1.26秒.到目前为止一切都很好,它的速度是12倍!
但是现在我进入节能面板打开"图形性能模式"该模式关闭GeForce 9400M并打开我的系统所具有的Geforce 9600M GT.Apple称这张卡的速度是集成卡的两倍.
猜猜看,我使用kick-ass显卡的时间平均为3.2秒...我的9600M GT似乎比9400M慢两倍多..
对于那些倾向于OpenCL的人,我在开始之前将所有数据复制到远程缓冲区,因此实际计算不需要往返于主ram的往返.另外,我让OpenCL确定最佳本地工作量,因为我已经读过它们在确定参数时已经做了很好的实现.
有人有线索吗?
编辑:makefile文件的完整源代码http://www.mathieusavard.info/convolution.zip
cd gimage
make
cd ../clconvolute
make
put a large input.gif in clconvolute and run it to see results
Run Code Online (Sandbox Code Playgroud) 我在使用Samsung S3(Android 4.1.1)运行视频时遇到问题,问题似乎是因为视频片段在片段上,因为如果我把它放在活动上,它就可以了.我还发现如果我打开GPU硬件加速,视频就可以工作了.我还有一个通过在SurfaceView上绘制而制作的游戏,该视图也不起作用(仅在启用GPU的情况下)...应用程序内容的其余部分按原样显示(按钮和其他布局).
我在Nexus S和仿真器上测试了应用程序,它在其他设备上运行良好.
有谁知道是什么问题?谢谢!
以下是代码:
public class VideoFragment extends Fragment implements MediaPlayer.OnCompletionListener,
MediaPlayer.OnPreparedListener, MediaPlayer.OnErrorListener {
private Video mVideo;
private VideoView mVideoView;
// The video position
private int mPosition;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View fragmentView = inflater.inflate(R.layout.screen_video, container, false);
mVideoView = (VideoView) fragmentView.findViewById(R.id.VideoView);
return fragmentView;
}
@Override
public void onPause() {
super.onPause();
// Pause the video if it is playing
if (mVideoView.isPlaying()) {
mVideoView.pause();
}
// Save the current video position
mPosition = …Run Code Online (Sandbox Code Playgroud) android hardware-acceleration android-fragments android-canvas
我正在使用Facebook的Rebound库复制其聊天头实现中看到的有弹性的动画.问题是,大多数时候动画都会断断续续.一些图片将更好地解释这一点.这是黄油般流畅的聊天头像:

这是我的尝试(注意白色动画View几乎所有帧都跳过):

偶尔它会顺利运行:

下面是我目前正在使用的代码(如果你想快速设置,整个项目都在Github上).我猜这与我的硬件加速没有正确启用有关View.有2个Spring在我的SpringSystem,一个用于"泡沫"(在Android图标),而另一个为内容(白色View时显示上轻敲气泡).如何解决这个问题的任何帮助将不胜感激.谢谢.
AndroidManifest.xml:
<application android:hardwareAccelerated="true" ...>
...
</application>
Run Code Online (Sandbox Code Playgroud)
AppService.java:
// the following code is in AppService#onCreate()
// AppService extends android.app.Service
// full code at https://github.com/vickychijwani/BubbleNote
mContent.setLayerType(View.LAYER_TYPE_HARDWARE, null);
final Spring bubbleSpring = system.createSpring();
bubbleSpring.setCurrentValue(1.0);
bubbleSpring.addListener(new SpringListener() {
@Override
public void onSpringUpdate(Spring spring) {
float value = (float) spring.getCurrentValue();
params.x = (int) (mPos[0] * value);
params.y = (int) (mPos[1] * value);
mWindowManager.updateViewLayout(mBubble, params);
// …Run Code Online (Sandbox Code Playgroud) animation android hardware-acceleration android-animation facebook-messenger
我正在构建一个需要在画布上进行大量绘制的应用程序.我注意到应用程序在高分辨率设备(例如nexus 7)中有点滞后.我看到开发人员选项中有一个Force GPU选项.启用强制GPU后,我的应用程序运行绝对流畅.
我已经读过这个Force GPU选项被称为硬件加速,它仅适用于Android 3.0及更高版本.
我的应用针对Android 2.3及更高版本.
是否有可能在任何Android 3.0或更高版本的设备上以编程方式启用硬件加速(或强制GPU - 无论魔法是什么)?
就像是:
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB){
Turn On Hardware Accelerate HERE but How can i do this?
any code snippet would be welcome/helpful/thanks
}
Run Code Online (Sandbox Code Playgroud) 我正在测试一个网站,我在最新的Chrome版本上遇到了奇怪的问题.在非视网膜iMac上,它显示效果很好,但在5k Retina iMac上,背景颜色变得略微偏离.
附加图像以演示......
希望你能看到这里发生的事情.盒装区域的颜色与实际背景颜色略有不同.背景颜色仅在上面设置body.
如果您关闭硬件加速,问题就会消失.
有这个或想法的经验吗?
android ×7
canvas ×2
gpu ×2
animation ×1
directx ×1
directx-11 ×1
dxva ×1
emulation ×1
ffmpeg ×1
h.264 ×1
opencl ×1
surfaceview ×1
video-codecs ×1