有调过DSPack的demo中的AsyncEx的朋友吗?发现在GraphEdit中一切正常,放在程序就出错了

szjlq 2009-07-03 06:10:35
我直接用的DSPACK下的那个AsyncEx的例子,未做任何修改,编译注册后用GraphEdit手动连接一切正常,但用代码来连接就不行了,以前从未接触过DSHOW,调试了两天,感觉非常困惑,望有经验的朋友帮忙看看到底是哪里的问题.非常感谢.

测试的代码如下,SourceFilter直接用的Demo中的,未做修改:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DirectShow9, ActiveX, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const CLSID_AsyncEx: TGUID = '{3E0FA044-926C-42D9-BA12-EF16E980913B}';
var
Form1: TForm1;
GraphID: Integer;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
pGraphBuilder: IGraphBuilder;
pFileStream: IBaseFilter;
EnumPins: IEnumPins;
OutPin: IPin;
hr: HRESULT;
pLoader: IFileSourceFilter;
fetched: ULONG;
begin
CoInitialize(nil);
hr := CoCreateInstance(CLSID_FilterGraph, nil, CLSCTX_INPROC, IID_IGraphBuilder, pGraphBuilder);

//用CLSID_AsyncReader结果正确,如果用CLSID_AsyncEx,则最后Render时会返回 0x8004025F的错误
hr := CoCreateInstance(CLSID_AsyncEx, nil, CLSCTX_INPROC_SERVER, IID_IBaseFilter, pFileStream);

pGraphBuilder.AddFilter(pFileStream, 'SourceFilter');

pFileStream.QueryInterface(IID_IFileSourceFilter, pLoader);
hr := pLoader.Load('C:\WINDOWS\clock.avi', nil);

EnumPins := nil;
pFileStream.EnumPins(EnumPins);
EnumPins.Reset;
EnumPins.Next(1, OutPin, @fetched);
EnumPins := nil;
hr := pGraphBuilder.Render(OutPin); //此处不成功
OutPin := nil;

IGraphBuilder := nil;
IBaseFilter := nil;
CoUninitialize();
end;
end.
...全文
134 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhtiger126 2010-01-26
  • 打赏
  • 举报
回复
楼主,您是如何解决AsyncEx问题的啊?最后还是修改AsyncEx代码吗?
讲讲啊!!!
shuihan20e 2009-07-04
  • 打赏
  • 举报
回复
jf
gyk120 2009-07-04
  • 打赏
  • 举报
回复
能自己解决问题的都是牛人
yhf365 2009-07-04
  • 打赏
  • 举报
回复
囧,
过来接个分~
楼主这么晚还没睡?
szjlq 2009-07-04
  • 打赏
  • 举报
回复
已经OK了,在DSPACK的网站上找到调用方法了。

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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