S5PV210 DirectShow播放 程式當掉

glchild514 2013-01-24 02:47:44
同事測試了WinCE6.0 S5PV210 BSP DirectShow播放影片
撥,停,撥,停.........大概3xxx多次後會程式當掉or畫面黑掉跑不出畫面
相同程式跑
S3C6410上不會當掉
S5PV210上會當掉or畫面黑掉跑不出畫面
誰可以解決阿
我貼一下程式碼
#include "streams.h"
IGraphBuilder *pGraphBuilder = NULL;
IMediaControl *pMediaControl = NULL;

DWORD dwCount=0;
HRESULT hError;

SetDlgItemInt(IDC_COUNT ,dwCount,1);

if(FAILED(CoInitializeEx(NULL,COINIT_MULTITHREADED)))
{
RETAILMSG(1, (TEXT("CoInitialize failed !\r\n")));
}

while(1)
{
RETAILMSG(1, (TEXT("dwCount[%d]\r\n"),dwCount));

hError = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (void **)&pGraphBuilder);
if (FAILED(hError))
{
RETAILMSG(1, (TEXT("CoCreateInstance failed !\r\n")));
}

pGraphBuilder->QueryInterface(IID_IMediaControl, (void **)&pMediaControl);

hError = pGraphBuilder->RenderFile(L"\\NandFlash\\1.wmv", NULL);
if (FAILED(hError))
{
RETAILMSG(1, (TEXT("RenderFile failed !\r\n")));
}

pMediaControl->Run();

Sleep(1000);

//pMediaControl->Pause();
pMediaControl->Stop();

if (pGraphBuilder)
{
pMediaControl->Release();
pGraphBuilder->Release();
}

SetDlgItemInt(IDC_COUNT ,dwCount,1);
dwCount++;
}
CoUninitialize();
...全文
468 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhengmeifu 2013-05-27
  • 打赏
  • 举报
回复
关注中,应该BSP包的显示部分有问题吧?
glchild514 2013-05-23
  • 打赏
  • 举报
回复
越來越變態了 不斷的修改 , 測試 , 不斷的修改 , 測試 朝向新紀錄邁進 97961次掛掉 繼續努力 dwCount97961 Exception 'Data Abort' (4): Thread-Id=08390012(pth=856da5dc), Proc-Id=08330012(pprc=858886d8) 'DirectShow_TestBug.exe', VM-active=08330012(pprc=858886d8) 'DirectShow_TestBug.exe' PC=40064da4(coredll.dll+0x00054da4) RA=41442330(quartz.dll+0x000f2330) SP=0004f4b8, BVA=0026f000 KPSLExceptionHandler: flags=1 ControlPc=c0066d48 Exception 'Raised Exception' (-1): Thread-Id=08390012(pth=856da5dc), Proc-Id=00400002(pprc=82dd9Exception 'Data Abort' (4): Thread-Id=07ad5546(pth=8593c09c), Proc-Id=08330012(pprc=858886d8) 'DirectShow_TestBug308) 'NK.EXE', VM-active=08330012(pprc=858886d8) 'DirectShow_TestBug.exe' PC=c006bc14(k.coredll.dll+0x0001bc14) RA=8.exe', VM-active=08330012(pprc=858886d8) 'DirectShow_TestBug.exe' PC=41449430(quartz.dll+0x000f9430) RA=4144942003c840(kernel.dll+0x00007840) SP=d30df3b8, BVA=ffffffff 4(quartz.dll+0x000f9424) SP=0128fe50, BVA=00000060 Unhandled exception c0000005: Terminating thread 8593c09c
glchild514 2013-05-21
  • 打赏
  • 举报
回复
還是不能突破萬惡65xxx次 怎嚜辦呢?? 沒法子摟 dwCount[65210] Exception 'Data Abort' (4): Thread-Id=09e3000e(pth=856cc51c), Proc-Id=09e1000e(pprc=8587d39c) 'DireException 'Data Abort' (4): Thread-Id=08150012(pth=858a0180), Proc-Id=09e1000e(pprc=8587d39c) 'DirectShow_TestBug.exe', VM-activctShow_TestBug.exe', VM-active=09e1000e(pprc=8587d39c) 'DirectShow_TestBug.exe' PC=40064da4(coredll.dll+0x00054da4)e=09e1000e(pprc=8587d39c) 'DirectShow_TestBug.exe' PC=4002c428(coredll.dll+0x0001c428) RA=413a9e78(quartz.dll+0x000 RA=41442330(quartz.dll+0x000f2330) SP=0004f4b8, BVA=0026f000 59e78) SP=0019fd54, BVA=000003c0 KPSLExceptionHandler: flags=1 ControlPc=c0066d48 Exception 'Raised Exception' (-1): Thread-Id=09e3000e(pth=856cc51c), Proc-Id=00400002(pprc=82dc9308) 'NK.EXE', VM-active=09e1000e(pprc=8587d39c) 'DirectShow_TestBug.exe' PC=c006bc14(k.coredll.dll+0x0001bc14) RA=8003c840(kernel.dll+0x00007840) SP=d5b7f3b8, BVA=ffffffff Exception 'Data Abort' (4): Thread-Id=0652e246(pth=85bdd648), Proc-Id=09e1000e(pprc=8587d39c) 'DirectShow_TestBug.exe', VM-active=09e1000e(pprc=8587d39c) 'DirectShow_TestBug.exe' PC=41449430(quartz.dll+0x000f9430) RA=41449424(quartz.dll+0x000f9424) SP=0029fe50, BVA=00000060 Unhandled exception c0000005: Terminating thread 85bdd648
LouisScola 2013-05-20
  • 打赏
  • 举报
回复
cool。。。
glchild514 2013-05-20
  • 打赏
  • 举报
回复
意外解決一各問題 只要用S5PV210 BSP的人都會遇到 安裝微软的2010或者2011年全年包,播放视频就会花屏 下面是我之前找到的解法,我跟googleman說的方法 這各只要將之前的image.lib & image.pdb 蓋回去C:\WINCE600\PUBLIC\DIRECTX\OAK\LIB\ARMV4I\RETAIL\就可以恢復正常 不過現在如果改用 DirectDraw調用硬體支援overlay(HAL) 裡面的實作有Bug,但是我目前找不出問題在哪裡 所以我選擇先避開,讓HAL無效 讓DirectDraw改用軟體模擬overlay(HEL) 播放视频就会正常 image.lib & image.pdb 就可以使用最新的,不需要用舊的版本 我再來試試能不能突破萬惡65xxx次
glchild514 2013-05-20
  • 打赏
  • 举报
回复
怎嚜讓HAL無效其實不難 因為DirectDraw會使用CreateSurface方法創建主介面 就讓CreateSurface無效就可以 程式會在C:\WINCE600\PLATFORM\SMDKV210\SRC\DRIVERS\DISPLAY\DISPLAY_DRV\halcaps.cpp這裡面 DDHAL_DDCALLBACKS cbDDCallbacks =裡面把 DDHAL_CB32_CREATESURFACE HalCreateSurface 去掉就可以了 當然這樣會比使用硬體來的慢,不過先穩定優先 從天堂又掉回地獄了 萬惡的31xxx次 變成 65xxx次 讓我再查一查吧
glchild514 2013-05-20
  • 打赏
  • 举报
回复
從天堂又掉回地獄了 萬惡的31xxx次 變成 65xxx次 讓我再查一查吧 dwCount(65197) Exception 'Data Abort' (4): Thread-Id=082a000e(pth=856ce5dc), Proc-Id=0828000e(pprc=857415b8) 'DireException 'Data Abort' (4): Thread-Id=07a10006(pth=8594d928), Proc-Id=0828000e(pprc=857415b8) 'DirectShow_TestBug.exctShow_TestBug.exe', VM-active=0828000e(pprc=857415b8) 'DirectShow_TestBug.exe' PC=40064da4(coredll.dll+0x00054da4)e', VM-active=0828000e(pprc=857415b8) 'DirectShow_TestBug.exe' PC=4002c428(coredll.dll+0x0001c428) RA=413a9e34(quart RA=414422f0(quartz.dll+0x000f22f0) SP=0004f4b8, BVA=0026f000 z.dll+0x00059e34) SP=0019fd54, BVA=000003c0 KPSLExceptionHandler: flags=1 ControlPc=c0066d48 Exception 'Raised Exception' (-1): Thread-Id=082a000e(pth=856ce5dc), Proc-Id=00400002(pprc=82dc9308) 'NK.EXE', VM-active=0828000e(pprc=857415b8) 'DirectShow_TestBug.exe' PC=c006bc14(k.coredll.dll+0x0001bc14) RA=8003c840(kernel.dll+0x00007840) SP=d5bbf3b8, BVA=ffffffff Exception 'Data Abort' (4): Thread-Id=079c4a2e(pth=85b43480), Proc-Id=0828000e(pprc=857415b8) 'DirectShow_TestBug.exe', VM-active=0828000e(pprc=857415b8) 'DirectShow_TestBug.exe' PC=414493f0(quartz.dll+0x000f93f0) RA=414493e4(quartz.dll+0x000f93e4) SP=0029fe50, BVA=00000060 Unhandled exception c0000005: Terminating thread 85b43480
loongembedded 2013-05-19
  • 打赏
  • 举报
回复
是啊,麻烦楼主分享一下
遗忘de梦 2013-05-18
  • 打赏
  • 举报
回复
引用 8 楼 glchild514 的回复:
因為確定公司產品不能使用WinCE7 3美金版本 最終老大決定放棄移植到WinCE7的計畫 變成我還是必須在WinCE6 BSP上解決這各問題 同事測試了WinCE6.0 S5PV210 BSP DirectShow播放影片 撥,停,撥,停.........大概 31xxx 多次後會程式畫面黑掉跑不出畫面 相同程式跑 S3C6410上不會當掉 S5PV210上會當掉or畫面黑掉跑不出畫面 各位使用S5PV210 WinCE6 BSP的一定有這問題 今天是各好日子,我終於找到解決方法了 其實就是DirectDraw調用硬體支援overlay(HAL) 裡面的實作有Bug,但是我目前找不出問題在哪裡 所以我選擇先避開,讓HAL無效 讓DirectDraw改用軟體模擬overlay 程式部分在 C:\WINCE600\PLATFORM\SMDKV210\SRC\DRIVERS\DISPLAY\DISPLAY_DRV\halxxx.cpp 這些裡面 跑到目前突破31xxx次 , 已經45000次摟 哈哈哈 好爽好爽
如何让hal无效,改成软件模拟呢?
xqhrs232 2013-05-18
  • 打赏
  • 举报
回复
还没整过DSHOW的CAMERA应用呢
glchild514 2013-05-17
  • 打赏
  • 举报
回复
因為確定公司產品不能使用WinCE7 3美金版本 最終老大決定放棄移植到WinCE7的計畫 變成我還是必須在WinCE6 BSP上解決這各問題 同事測試了WinCE6.0 S5PV210 BSP DirectShow播放影片 撥,停,撥,停.........大概 31xxx 多次後會程式畫面黑掉跑不出畫面 相同程式跑 S3C6410上不會當掉 S5PV210上會當掉or畫面黑掉跑不出畫面 各位使用S5PV210 WinCE6 BSP的一定有這問題 今天是各好日子,我終於找到解決方法了 其實就是DirectDraw調用硬體支援overlay(HAL) 裡面的實作有Bug,但是我目前找不出問題在哪裡 所以我選擇先避開,讓HAL無效 讓DirectDraw改用軟體模擬overlay 程式部分在 C:\WINCE600\PLATFORM\SMDKV210\SRC\DRIVERS\DISPLAY\DISPLAY_DRV\halxxx.cpp 這些裡面 跑到目前突破31xxx次 , 已經45000次摟 哈哈哈 好爽好爽
cclutpk 2013-04-17
  • 打赏
  • 举报
回复
引用 4 楼 glchild514 的回复:
程式當掉or畫面黑掉跑不出畫面的時候 記憶體還有很多喔,不是記憶體不夠 我有關閉2D , Post測試 都還是當掉 我覺得是display driver本身的問題,頭大了
dshow的内存是在display memory里面,由系统预先分配,在可用内存里面是看不到的
gooogleman 2013-04-16
  • 打赏
  • 举报
回复
SMDKV210_WinCE70_REL_0.09_100716 想要这个。哎呀,wince啊。真是坑爹哦。没人要,但是客户都想找我做wince,又没多大量。 在折腾android了。
glchild514 2013-04-16
  • 打赏
  • 举报
回复
關於這各問題,看來小弟我在WinCE6.0 BSP上是解決不掉了 我是從SEC_S5PV210A_WinCE_6.x_FMD_EVT1.0_BSP_REL_1.02_100816這各版本 改成公司產品的 然後我今天忽然想到,所以我拿了Samsung Demo Kit 跑了SMDKV210_WinCE70_REL_0.09_100716這各版本 然後一樣做這各DirectShow播放測試 結果......WinCE7.0跑沒有問題耶 恩.......所以我可能要開始移植WinCE6.0 -> WinCE7.0 從SEC_S5PV210A_WinCE_6.x_FMD_EVT1.0_BSP_REL_1.02_100816這各版本 把我所有修改&新增的部份全部修正改到SMDKV210_WinCE70_REL_0.09_100716這各版本 可惡阿 又要搞我幾各月吧 希望能順利摟
glchild514 2013-01-25
  • 打赏
  • 举报
回复
程式當掉or畫面黑掉跑不出畫面的時候 記憶體還有很多喔,不是記憶體不夠 我有關閉2D , Post測試 都還是當掉 我覺得是display driver本身的問題,頭大了
gooogleman 2013-01-24
  • 打赏
  • 举报
回复
首先检查一下内存的使用情况。 这个directshow 在摄像头上遇到一些奇怪的问题,大分辨率下就会占用内存很大 或者启动时候瞬间很大。导致启动慢,尤其是在一些2451/6410 128M内存情况的时候非常明显。 在S5pv210 上512M内存足够大,所以没啥影响。
91program 2013-01-24
  • 打赏
  • 举报
回复
可能是 BSP filter 的问题,虽然上层代码是一样的,但对低层的调用可能不同。
一介布衣萧萧 2013-01-24
  • 打赏
  • 举报
回复
内存不足?内存泄露?

19,518

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧