_com_ptr_t的使用

转载自:http://blog.csdn.net/wishfly/archive/2007/05/27/1627528.aspx

 

对于COM调用,大量的AddRef/Release调用无疑是例行公事和让人生厌。

_com_ptr_t 是vc运行库中提供的固有的封装COM接口的智能指针,相比CComPtr/CComQIPtr缺少移植性,但是支持不是ATL实现部分的的异常和操作。

以下是DirectShow中播放一个文件的代码:

 

使用com_ptr_t后简单了很多:

 

假如我们要复制一个接口,常常要

pG1 = pG2;

pG1->AddRef();

...

pG1->Release();

对于_com_ptr_t , 只要pG1 = pG2;就可以了

注意以下的代码:

IGraphBuilderPtr pGraph ;

pGraph.CreateInstance( CLSID_FilterGraph );

...

CoUninitialize();

因为 pGraph 会在超出作用域时析构,也就是在CoUninitialize()之后调用 IUnkown::Release() ,这样会引起问题,可以这样解决:

pGraph.Release();  CoUninitialize();

或者

pGraph = NULL;  CoUninitialize(); //这样会隐含的调用_com_ptr_t::Release()

绝对不可以调用 pGraph->Release();  因为这是调用IUnkown::Release()然后再调用一次pGraph.Release();  将会两次释放接口指针。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Delphi 7 是一个流行的编程语言和集成开发环境,用于开发Windows平台的应用程序。libvlc_media_t_ptr 是一个指向 VLC Media 类型的指针,在 Delphi 7 中可以用于与 VLC 媒体库进行交互。RTSP(Real Time Streaming Protocol)是一种用于实时流媒体传输的网络协议。 在 Delphi 7 中,可以使用 libvlc_media_t_ptr 类型的指针与 VLC 媒体库进行 RTSP 流媒体传输。利用这个指针,可以创建、控制和播放 RTSP 流。你可以通过 Delphi 7 的代码,使用 libvlc_media_t_ptr 类型的指针,将 RTSP 流媒体传输集成到你的应用程序中。 首先,你需要在 Delphi 7 项目中引用并加载 libvlc.dll 文件,并正确设置库函数的调用方式。然后,可以通过调用 libvlc_media_new_location 函数来创建一个新的 RTSP 流媒体对象。此函数将 RTSP URL 作为参数,并返回一个 libvlc_media_t_ptr 类型的指针,指向创建的媒体对象。你可以调用其他函数,如 libvlc_media_get_mrl,用于获取 RTSP URL。 接下来,你可以使用 libvlc_new 创建一个新的 VLC 实例。然后,使用 libvlc_media_player_new_from_media 函数创建一个媒体播放器对象,将之前创建的 libvlc_media_t_ptr 类型的指针作为参数。最后,使用 libvlc_media_player_play 函数开始播放 RTSP 流。 在播放过程中,你可以使用 libvlc_media_player_stop 函数来停止播放,使用 libvlc_media_player_release 函数释放资源。还有其他一些函数可用于控制 RTSP 流的播放,如音量控制、快进/快退等。 总之,通过 Delphi 7 中的 libvlc_media_t_ptr 类型的指针,你可以在你的应用程序中实现 RTSP 流媒体传输。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值