WebRTC 音/视频模块学习中的 DirectSHow接口

原英文网址:点击打开链接

有些函数做了翻译,因为太多,有些函数就没做翻译了。

1、IAMExtDevice 接口:这个接口继承 IUnKnown 接口,控制设备的基本函数,其中的一些方法如下:

2、IAMStreamConfig 接口,在确定的采集和压缩过滤器上设置一些输出格式,同时设置音频/视频。用户能使用这个接口设置一些属性,比如:视频的输出路数和帧率,音频的采样率和通道数。同样是继承 IUnKnown 接口,其中一些方法如下:

注意,过滤器需要在他们的输出 IPin 上获得 IAMStreamConfig 接口,所以在使用该接口之前要枚举过滤器的 PIn,或者你也可以使用 Capture Graph Builder 对象来建立filter graph,你可以调用ICaptureGraphBuilder2::FindInterface 方法.注意在采集的时候可能要区分采集Pin和预览Pin。

IAMStreamConfig::GetNumberOfCapabilities () 方法的函数原型如下:

HRESULT GetNumberOfCapabilities(
  int* piCount,
  int* piSize
);

第一个参数用来保存所有可支持的音频/视频设备的数量,第二个参数用来保存配置AUDIO_STREAM_CONFIG_CAPS 或者 VIDEO_STREAM_CONFIG_CAPS,结构体的大小。

IAMStreamConfig::GetStreamCaps () 方法的函数原型如下:

HRESULT GetStreamCaps(
  int iIndex,
  AM_MEDIA_TYPE** pmt,
  BYTE* pSCC
);

这个方法获取音频、视频或者其他数据流的所依靠的结构体类型,在 pSCC中被指出,第一个参数是与GetNumberOfCapabilities方法对应piCount 中的设备标号,第二个参数是指向媒体类型结构体的指针,第三个参数指向媒体流的配置结构体。

关于媒体流的配置结构体,原网页:点击打开链接

Members

guid

GUID that identifies the format type. For example, FORMAT_VideoInfo or FORMAT_VideoInfo2. For more information, see the formattype member of the AM_MEDIA_TYPE structure.

VideoStandard

The analog video standard supported. The value is a bitwise combination of flags from theAnalogVideoStandard enumeration
type, or zero.

InputSize

Native size of the incoming video signal. For a compressor, the size is taken from the input pin. For a capture filter, the size is the largest signal the filter can digitize with every pixel remaining unique.

Note  Deprecated.

MinCroppingSize

Smallest source rectangle allowed. The source rectangle is defined in the rcSource member of theVIDEOINFOHEADER or VIDEOINFOHEADER2 structure.

Note  Deprecated.

MaxCroppingSize

Largest source rectangle allowed.

Note  Deprecated.

CropGranularityX

Horizontal granularity of the source rectangle. This value specifies the increments that are valid betweenMinCroppingSize and MaxCroppingSize.

Note  Deprecated.

CropGranularityY

Vertical granularity of the source rectangle. This value specifies the increments that are valid betweenMinCroppingSize and MaxCroppingSize.

Note  Deprecated.

CropAlignX

Required horizontal alignment of the source rectangle.

Note  Deprecated.

CropAlignY

Required vertical alignment of the source rectangle.

Note  Deprecated.

MinOutputSize

Minimum output size.

Note  Deprecated.

MaxOutputSize

Maximum output size.

Note  Deprecated.

OutputGranularityX

Granularity of the output width. This value specifies the increments that are valid betweenMinOutputSize and MaxOutputSize.

Note  Deprecated.

OutputGranularityY

Granularity of output height. This value specifies the increments that are valid between MinOutputSizeand MaxOutputSize.

Note  Deprecated.

StretchTapsX

Indicates how well the filter can stretch the image horizontally.

Note  Deprecated.

StretchTapsY

Indicates how well the filter can stretch the image vertically.

Note  Deprecated.

ShrinkTapsX

Indicates how well the filter can shrink the image horizontally.

Note  Deprecated.

ShrinkTapsY

Indicates how well the filter can shrink the image vertically.

Note  Deprecated.

The previous four structure members use the following values:

Value Meaning
0

Does not support stretching/shrinking.

1

Uses pixel doubling (stretching) or eliminates pixels (shrinking)

2

Uses interpolation (2 taps)

3 and higher

Uses interpolation (>2 taps)

MinFrameInterval

The minimum frame duration, in 100-nanosecond units. This value applies only to capture filters.

MaxFrameInterval

The maximum frame duration, in 100-nanosecond units. This value applies only to capture filters.

MinBitsPerSecond

Minimum data rate this pin can produce.

Note  Deprecated.

MaxBitsPerSecond

Maximum data rate this pin can produce.

3、IAMVideoControl 接口,这个接口让你可以水平或者垂直的反转一幅图片,可以设置一个外部触法按钮来采集图像,软件的方式模拟外部触法,以及列出可用帧率。同样是继承IUnKnown 接口,其中的方法如下:

未完。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-09 07:27:13

WebRTC 音/视频模块学习中的 DirectSHow接口的相关文章

转:?Android IOS WebRTC 音视频开发总结 (系列文章集合)

随笔分类 - webrtc Android IOS WebRTC 音视频开发总结(七八)-- 为什么WebRTC端到端监控很关键? 摘要: 本文主要介绍WebRTC端到端监控(我们翻译和整理的,译者:weizhenwei,校验:blacker),最早发表在[编风网] 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID:blackerteam 或 webrtcorgcn). callstats是一家做实时通讯性能测阅读全文 posted @ 2016-07-22 08:24

Android WebRTC 音视频开发总结

www.cnblogs.com/lingyunhu/p/3621057.html 前面介绍了WebRTCDemo的基本结构,本节主要介绍WebRTC音视频服务端的处理,,转载请说明出处(博客园RTC.Blacker). 通过前面的例子我们知道运行WebRTCDemo即可看到P2P的效果,实际应用中我们不可能让用户自己去里面设置对方的IP和音视频端口, 而且即使设置了对方的IP和端口也不一定能运行起来,因为P2P如果双方不在同一个网段则还需穿透NAT,那服务端具体该如何部署呢? 1.信令服务: 想

Android WebRTC 音视频开发总结(五)

这几天用WebRTC做了个视频监控的功能,分享出来,供想了解这方面内容的朋友参考. 一.基本模块: 1.视频采集端:相当于是客户端,用来采集视频,只需要发送视频,不需要接收. 2.视频监控端:接收采集端传入的视频数据,相当于监控客户端,不需要发送视频数据给客户端. 3.服务端:负责客户端注册.信令控制.数据包转发.UDP打洞等,支持TCP,UDP连接. 二.环境要求: 1.两台Andorid4.0 以上的手机,分别做采集端和监控端. 2.一台PC 做服务端. 3.PC.手机在同一个局域网内.理论

webrtc音视频解析流程分析

webrtc音视频解析流程包括多个线程: 1. rtp网络流接收线程(rtp stream reciever thread) 2. 音视频解码线程(decode thread) 3. 渲染线程(render thread) rtp网络流接收线程(rtp stream reciever thread): 接收网络rtp包,解析rtp包,得到音视频数据包.将解析出的rtp包,加入到RtpStreamReceiver::frame_buffer_中或最终加入VCMReceiver::jitter_bu

Android IOS WebRTC 音视频开发总结(八十五)-- 使用WebRTC广播网络摄像头视频(下)

本文主要介绍WebRTC (我们翻译和整理的,译者:weizhenwei,校验:blacker),最早发表在[编风网] 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID:blackerteam 或 webrtcorgcn). 回顾:Android IOS WebRTC 音视频开发总结(八十三)-- 使用WebRTC广播网络摄像头视频(上) 连接网络摄像头 正如上文所提,我们选用一款简单的D-Link DCS-7010L网络摄像头.关键原因在于它支持RTSP协议,因此服务

Android IOS WebRTC 音视频开发总结(二四)

本文主要分析webrtc音视频点对点部分的代码结构,文章来自博客园RTC.Blacker,转载请说明出处. 前段时间在查一个偶尔断线的问题(这种问题最蛋疼,不好重现,只能凭经验去搞),所以理了下webrtc的P2P代码结构,总结如下: 先来张图显示实际会话过程中的两种通讯路径:P2P或转发,92%的情况下是通过P2P实现. 注意:实际通讯过程中每个客户端都会不停地发送和接收Stun包,这样做是为了维护响应的连接和端口. 实际通讯过程中的核心组件为P2PTransportChannel,他代表着本

Android IOS WebRTC 音视频开发总结(六八)-- Google: What's next for WebRTC

本文主要从用户,公司和技术角度分析美女视频直播这个行业,文章最早发表在我们的微信公众号上,支持原创,详见这里, 欢迎关注微信公众号blackerteam,更多详见www.rtc.help Justion和Sarah是google webrtc项目的主要负责人,下面的图片是根据他们分享的内容进行整理的,涉及webrtc进展.优化等方方面面.整理这些资料的过程中我们发现他们对待webrtc还是挺用心的,为webrtc的完善做了很多的工作,谢谢他们! 原始视频时长53分13秒,全英文的,所以我们考虑做

Android WebRTC 音视频开发总结(一)

Android WebRTC 音视频开发总结(一) https://github.com/gandg/webrtc-ios 接触Android WebRTC有一段时间了,现在将研究过程中的一些经验和知识总结出来,希望大家有所帮助.本章主要介绍下面四点: 一.WebRTC是什么? WebRTC是Google提供的一个跨平台的音视频开源解决方案,旨在使其成为音视频通讯的标准.其实在Google将WebRTC开源之前,微软和苹果各自的通讯产品已占用很大市场份额(如Skype),估计Google也是为了

Android IOS WebRTC 音视频开发总结(六)

前段时间在搞IOS的音视频版本,所以将标题改为了Android IOS WebRTC 音视频开发总结, 下面总结一下开发过程中的一些经验: 1. IOS WebRTC音视频编译和下载: 有过android WEBRTC编译下载经验再去弄IOS,你会发现简单多了,再有问题,可以参考:http://www.cnblogs.com/ProbeStar/p/3411510.html  记住有MAC和IOS两个版本,要指定好你想要哪个版本. 2. 正确区分armv7 armv7s i386平台: 编译的时