/** @file filterconfig.h
* /brief <定义Filter需要的结构以及接口>
*
* /version 1.0.0
* /author 廉会勇
* /date 2004/03/17
*
* /note <这里填写本文件的详细功能描述和注解>
* /note 历史记录:
* /note <这里填写历史版本信息,格式如“V2.0.0 更改的主要信息”>
*
* /warning <这里填写本文件相关的警告信息>
*/
//
#ifndef __FilterConfig_H__
#define __FilterConfig_H__
#ifdef __cplusplus
extern "C" {
#endif
#include "H323MsApi.h"
//263的压缩方式
#define BICOMP_H263 mmioFOURCC('H', '2', '6', '3')
#define BICOMP_YUV12 mmioFOURCC('I', '4', '2', '0')//12 bit yuv411
#define VIDEO_WIDTH 352//352
#define VIDEO_HEIGHT 288//288
const GUID MediaType_H263 =
{ 0x33363248, 0x0000, 0x0010,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71};
//I420媒体类型
//{30323449-0000-0010-8000-00AA00389B71}
const GUID MediaType_I420 =
{ 0x30323449, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 };
//2006.07.01 add
// {A2107D04-5F36-4463-8E17-811AD76B51D7}
static const GUID IID_IVideoParamInterface =
{ 0xa2107d04, 0x5f36, 0x4463, { 0x8e, 0x17, 0x81, 0x1a, 0xd7, 0x6b, 0x51, 0xd7 } };
// {FAA6B638-8DA1-440d-B38C-2E99325EEE94}
static const GUID IID_IAudioParamInterface =
{ 0xfaa6b638, 0x8da1, 0x440d, { 0xb3, 0x8c, 0x2e, 0x99, 0x32, 0x5e, 0xee, 0x94 } };
// {EEF58089-3E41-477e-9220-C50944708E19}
static const GUID IID_IRtpParamHandle =
{ 0xeef58089, 0x3e41, 0x477e, { 0x92, 0x20, 0xc5, 0x9, 0x44, 0x70, 0x8e, 0x19 } };
// {537A6911-0356-4759-B1DF-E9158C366A0B}
static const GUID IID_IVideoDecInterface =
{ 0x537a6911, 0x356, 0x4759, 0xb1, 0xdf, 0xe9, 0x15, 0x8c, 0x36, 0x6a, 0xb };
// {F52E5633-6A14-46f8-BD81-5B0083823EE1}
static const GUID IID_IVideoEncInterface =
{ 0xf52e5633, 0x6a14, 0x46f8, { 0xbd, 0x81, 0x5b, 0x0, 0x83, 0x82, 0x3e, 0xe1 } };
// {FC6C10F2-40ED-4dc0-BA20-0145BAF782F8}
static const GUID IID_IAudioDecInterface =
{ 0xfc6c10f2, 0x40ed, 0x4dc0, { 0xba, 0x20, 0x1, 0x45, 0xba, 0xf7, 0x82, 0xf8 } };
// {1555F97F-665C-4419-AAF1-DAAFE6CFB731}
static const GUID IID_IAudioEncInterface =
{ 0x1555f97f, 0x665c, 0x4419, { 0xaa, 0xf1, 0xda, 0xaf, 0xe6, 0xcf, 0xb7, 0x31 } };
// {9DE560F8-1C5B-4ca1-9C7E-B8174D4AEB4F}
//static const GUID IID_IRtpSenderHandle =
//{ 0x9de560f8, 0x1c5b, 0x4ca1, { 0x9c, 0x7e, 0xb8, 0x17, 0x4d, 0x4a, 0xeb, 0x4f } };
// {5A84A487-A897-48e0-9E35-7E2831A16D2E}
//static const GUID IID_IRtpRecHandle =
//{ 0x5a84a487, 0xa897, 0x48e0, { 0x9e, 0x35, 0x7e, 0x28, 0x31, 0xa1, 0x6d, 0x2e } };
// {11E96D56-A869-42fe-9654-33EA4C6CD05D}
static const GUID IID_IImageCapInterface =
{ 0x11e96d56, 0xa869, 0x42fe, { 0x96, 0x54, 0x33, 0xea, 0x4c, 0x6c, 0xd0, 0x5d } };
// {F4E79217-7903-4b04-AA59-82862682CB1C}
static const GUID IID_IJRtpGetSocket =
{ 0xf4e79217, 0x7903, 0x4b04, { 0xaa, 0x59, 0x82, 0x86, 0x26, 0x82, 0xcb, 0x1c } };
struct __declspec(novtable)
IJRtpGetSocket:public IUnknown
{
virtual int STDMETHODCALLTYPE GetRtpSocket() = 0;
virtual int STDMETHODCALLTYPE GetRtcpSocket() = 0;
};
struct __declspec(novtable)
IRtpParamHandle:public IUnknown
{
virtual HRESULT STDMETHODCALLTYPE set_RtpParam(T_RTPPARAM tRtpParam) = 0;
virtual HRESULT STDMETHODCALLTYPE get_RtpParam(T_RTPPARAM &tRtpParam) = 0;
virtual HRESULT STDMETHODCALLTYPE set_AddDestAddr(T_RTPPARAM tRtpParam) = 0;
virtual HRESULT STDMETHODCALLTYPE record(const char* filepath) = 0;
};
/**********************视频filter中的外部接口*********************/
struct __declspec(novtable)
IVideoParamInterface:public IUnknown
{
//在Encoder中设置视频格式
virtual HRESULT STDMETHODCALLTYPE set_VideoCodecParam(T_VIDEO_CODEC_PARAM tVideoCodecParam) = 0;
virtual HRESULT STDMETHODCALLTYPE get_VideoCodecParam(T_VIDEO_CODEC_PARAM &tVideoCodecParam) = 0;
//在Decoder中实现抓图
virtual HRESULT STDMETHODCALLTYPE get_CurrentImage(const char* filePath) = 0;
};
//在VideoEFilter中实现的参数设置接口
struct __declspec(novtable)
IVideoEncInterface:public IUnknown
{
//在Encoder中设置视频格式
//#define CIF4 1 #define CIF 2 #define QCIF 3 #define SQCIF 4
virtual HRESULT STDMETHODCALLTYPE set_VideoFormat(int nFormat) = 0;
virtual HRESULT STDMETHODCALLTYPE get_VideoFormat(int &nFormat) = 0;
virtual HRESULT STDMETHODCALLTYPE set_Bandwidth(int nBandwidth) = 0;
virtual HRESULT STDMETHODCALLTYPE set_USBNhe728() = 0;
virtual HRESULT STDMETHODCALLTYPE set_InterFrameEnable(int nCountIFrame) = 0;
virtual HRESULT STDMETHODCALLTYPE set_KeyFrameInterval(int nInterval) = 0;
};
//在Mp4DecoderFilter中实现的抓图接口
struct __declspec(novtable)
IVideoDecInterface:public IUnknown
{
virtual HRESULT STDMETHODCALLTYPE get_CurrentImage(const char* filePath) = 0;
//在Decoder中设置视频格式
//#define CIF4 1 #define CIF 2 #define QCIF 3 #define SQCIF 4
virtual HRESULT STDMETHODCALLTYPE set_VideoFormat(int nFormat) = 0;
virtual HRESULT STDMETHODCALLTYPE get_VideoFormat(int &nFormat) = 0;
};
/**********************音频filter中的外部接口*********************/
/*音频编码中的接口*/
struct __declspec(novtable)
IAudioEncInterface:public IUnknown
{
virtual HRESULT STDMETHODCALLTYPE set_AudioCodecType(AUDIO_CODEC_TYPE nCodecType) = 0;
virtual HRESULT STDMETHODCALLTYPE get_AudioCodecType(AUDIO_CODEC_TYPE &nCodecType) = 0;
};
/*音频解码中的接口*/
struct __declspec(novtable)
IAudioDecInterface:public IUnknown
{
virtual HRESULT STDMETHODCALLTYPE set_AudioCodecType(AUDIO_CODEC_TYPE nCodecType) = 0;
virtual HRESULT STDMETHODCALLTYPE get_AudioCodecType(AUDIO_CODEC_TYPE &nCodecType) = 0;
};
struct __declspec(novtable)
IAudioParamInterface:public IUnknown
{
virtual HRESULT STDMETHODCALLTYPE set_AudioCodecParam(T_AUDIO_CODEC_PARAM tAudioCodecParam) = 0;
virtual HRESULT STDMETHODCALLTYPE get_AudioCodecParam(T_AUDIO_CODEC_PARAM &tAudioCodecParam) = 0;
};
//在ImageCapFilter中实现的获取位图位置的接口
struct __declspec(novtable)
IImageCapInterface:public IUnknown
{
virtual HRESULT STDMETHODCALLTYPE set_CapImageFilePath(const char* filePath) = 0;
};
#ifdef __cplusplus
}
#endif
#endif