如何解决多次打开CameraDshowApp.exe系统死机的问题(高分辨率camera)
2010-11-19 15:28
731 查看
最近在调试CameraDshowApp.exe的时候遇到了一个问题,当camera的分辨率为800*600,640*480或其他分辨率更小时,多次打开CameraDshowApp.exe没有什么问题,当camera分辨率为1280*1024或更高时,第一次运行CameraDshowApp.exe没有问题,第二次打开系统就会死掉。很明显问题是出在系统内存上,但遗憾的是没有找到问题的根源在哪里,对DirectShow还是不熟啊!
打开CameraDshowApp.exe时界面如下:
通过验证发现只要去掉选项:Video Encoder,File Mux,AudioCapture,Audio Encoder就能解决camera高分辨时多次打开CameraDshowApp.exe系统死机的问题。但是每次都要这样操作就太麻烦了,可以在程序里面完成,修改的文件为D:/WINCE600/PRIVATE/TEST/MULTIMEDIA/DIRECTX/DSHOW/CAMERA/CAMERAAPP/main.c 代码如下:
hID = GetDlgItem(hDlg, IDC_FILEMUXCHECK);
SendMessage(hID, BM_SETCHECK, BST_UNCHECKED, 0);
hID = GetDlgItem(hDlg, IDC_AUDIOCAPTURE);
SendMessage(hID, BM_SETCHECK, BST_UNCHECKED, 0);
hID = GetDlgItem(hDlg, IDC_VIDEOENCODER);
SendMessage(hID, BM_SETCHECK, BST_UNCHECKED, 0);
hID = GetDlgItem(hDlg, IDC_AUDIOENCODER);
SendMessage(hID, BM_SETCHECK, BST_UNCHECKED, 0);
以上代码是在初始化时通过SendMessage向窗体控件CheckBox发送消息不选择上述四项;
g_dwFilters = VIDEO_CAPTURE_FILTER | VIDEO_RENDERER | STILL_IMAGE_SINK ;
设置默认的滤波器为渲染滤波器,捕获滤波器和拍照滤波器。
通过这些代码也能发现问题就出在这里,默认的g_dwFilters还包括了Video Encoder,File Mux,AudioCapture,Audio Encoder对应的滤波器,当包括了这些滤波器时系统要分配更多的内存,或超过了CameraDshowApp.exe默认分配的内存。以至于camera输出高分辨图像时会出现异常,如果哪位知道问题的根源,或CameraDshowApp.exe中是如何分配内存的请告诉我,谢谢了。
打开CameraDshowApp.exe时界面如下:
通过验证发现只要去掉选项:Video Encoder,File Mux,AudioCapture,Audio Encoder就能解决camera高分辨时多次打开CameraDshowApp.exe系统死机的问题。但是每次都要这样操作就太麻烦了,可以在程序里面完成,修改的文件为D:/WINCE600/PRIVATE/TEST/MULTIMEDIA/DIRECTX/DSHOW/CAMERA/CAMERAAPP/main.c 代码如下:
hID = GetDlgItem(hDlg, IDC_FILEMUXCHECK);
SendMessage(hID, BM_SETCHECK, BST_UNCHECKED, 0);
hID = GetDlgItem(hDlg, IDC_AUDIOCAPTURE);
SendMessage(hID, BM_SETCHECK, BST_UNCHECKED, 0);
hID = GetDlgItem(hDlg, IDC_VIDEOENCODER);
SendMessage(hID, BM_SETCHECK, BST_UNCHECKED, 0);
hID = GetDlgItem(hDlg, IDC_AUDIOENCODER);
SendMessage(hID, BM_SETCHECK, BST_UNCHECKED, 0);
以上代码是在初始化时通过SendMessage向窗体控件CheckBox发送消息不选择上述四项;
g_dwFilters = VIDEO_CAPTURE_FILTER | VIDEO_RENDERER | STILL_IMAGE_SINK ;
设置默认的滤波器为渲染滤波器,捕获滤波器和拍照滤波器。
通过这些代码也能发现问题就出在这里,默认的g_dwFilters还包括了Video Encoder,File Mux,AudioCapture,Audio Encoder对应的滤波器,当包括了这些滤波器时系统要分配更多的内存,或超过了CameraDshowApp.exe默认分配的内存。以至于camera输出高分辨图像时会出现异常,如果哪位知道问题的根源,或CameraDshowApp.exe中是如何分配内存的请告诉我,谢谢了。
相关文章推荐
- 如何解决多次打开CameraDshowApp.exe系统死机的问题(高分辨率camera)
- 解决小米miui系统调用系统裁剪图片功能camera.action.CROP后崩溃或重新打开app的问题
- 解决小米miui系统调用系统裁剪图片功能camera.action.CROP后崩溃或重新打开app的问题
- Win10系统如何解除程序打开被阻止的问题?Win10系统解除程序打开被阻止的解决方法
- 如何解决mac系统打开谷歌浏览器出现的跨域问题
- win8 打开大型exe应用死机问题解决办法
- #Mac技巧#如何在Mac系统上新建TXT文档,以及打开txt文稿的乱码问题如何解决
- 系统无法打开CHM文档时报错的解决方法 ![scripchs.exe的问题]绝对原创
- 解决Android被系统回收,重打开崩溃等问题
- 【问题记录】解决,打开app时,EditView的自动获得焦点,并且软键盘弹出
- 【工具用法】如何解决Windows10 和 deepin(Linux)双系统时间的同步问题
- 关于Android app首次安装完成后在安装界面直接“打开”应用再按home键返回桌面,重新进入app重复实例化launcher activity的问题的解决
- js笔记:如何解决mouseover与mouseout的多次触发问题
- WebDev.WebServer.EXE 如何解决x86问题
- 系统提示弹出“XXX.EXE不是有效Win32应用程序”的错误情况如何解决
- 如何升级到Windows10系统?升级win10系统遇到的问题解决汇总(含视频体验)
- 如何解决jQuery EasyUI 已打开Tab重新加载问题
- 解决IOS9 下在App中无法打开其他应用的问题
- 如何解决.csv格式文件用excel打开是乱码的问题?
- 如何解决2012年7月1日增加闰秒后引起linux系统重启问题