AC3 Filter 的 使用,接口调用

ppzhao 2006-07-27 12:26:36
我用的版本为AC3 Filter 1.01 RC5,但是没找到该版本的源代码
找到版本ac3filter 0.70b的源代码,找到接口定义
///////////////////////////////////////////////////////////////////////////////
// Interface GUIDs
///////////////////////////////////////////////////////////////////////////////

// {E4539501-C609-46ea-AD2A-0E9700245683}
DEFINE_GUID(IID_IAC3Filter,
0xe4539501, 0xc609, 0x46ea, 0xad, 0x2a, 0xe, 0x97, 0x0, 0x24, 0x56, 0x83);

// {0D5572AB-30CF-4641-8162-4FB6966F45DF}
DEFINE_GUID(IID_IEqualizer,
0xd5572ab, 0x30cf, 0x4641, 0x81, 0x62, 0x4f, 0xb6, 0x96, 0x6f, 0x45, 0xdf);


///////////////////////////////////////////////////////////////////////////////
// CLSID GUIDs
///////////////////////////////////////////////////////////////////////////////

// {A753A1EC-973E-4718-AF8E-A3F554D45C44}
DEFINE_GUID(CLSID_AC3Filter,
0xa753a1ec, 0x973e, 0x4718, 0xaf, 0x8e, 0xa3, 0xf5, 0x54, 0xd4, 0x5c, 0x44);

// {FBA5FB05-58C3-45cb-8B0D-C2313EA048CF}
DEFINE_GUID(CLSID_AC3Filter_main,
0xfba5fb05, 0x58c3, 0x45cb, 0x8b, 0xd, 0xc2, 0x31, 0x3e, 0xa0, 0x48, 0xcf);

// {F0B801B1-A239-473b-B6B4-6AE3DB3ABBD3}
DEFINE_GUID(CLSID_AC3Filter_mixer,
0xf0b801b1, 0xa239, 0x473b, 0xb6, 0xb4, 0x6a, 0xe3, 0xdb, 0x3a, 0xbb, 0xd3);

// {8643B615-6A76-4060-8A29-C2C6BDF5D70F}
DEFINE_GUID(CLSID_AC3Filter_eq,
0x8643b615, 0x6a76, 0x4060, 0x8a, 0x29, 0xc2, 0xc6, 0xbd, 0xf5, 0xd7, 0xf);

// {363F46BE-27B4-4c8d-99E7-B1E049B84376}
DEFINE_GUID(CLSID_AC3Filter_sys,
0x363f46be, 0x27b4, 0x4c8d, 0x99, 0xe7, 0xb1, 0xe0, 0x49, 0xb8, 0x43, 0x76);

// {90A9B7D2-3794-45ea-9E23-140E3938D2D9}
DEFINE_GUID(CLSID_AC3Filter_about,
0x90a9b7d2, 0x3794, 0x45ea, 0x9e, 0x23, 0x14, 0xe, 0x39, 0x38, 0xd2, 0xd9);

///////////////////////////////////////////////////////////////////////////////
// Interface definitions
///////////////////////////////////////////////////////////////////////////////

DECLARE_INTERFACE_(IAC3Filter, IUnknown)
{
// System
STDMETHOD (get_speakers) (AC3Speakers *spk) = 0;
STDMETHOD (set_speakers) (AC3Speakers spk) = 0;
STDMETHOD (get_timing) (bool *generate_timestamps, int *time_shift) = 0;
STDMETHOD (set_timing) (bool generate_timestamps, int time_shift) = 0;
STDMETHOD (get_wfx) (bool *wfx) = 0;
STDMETHOD (set_wfx) (bool wfx) = 0;
STDMETHOD (get_jitter) (bool *jitter_on, int *jitter) = 0;
STDMETHOD (set_jitter) (bool jitter_on) = 0;

// bit stream information
STDMETHOD (get_bsi) (BSI *bsi) = 0;
STDMETHOD (get_cpu_load) (double *cpu_load) = 0;
STDMETHOD (get_stat) (int *frames, int *errors) = 0;

// Gain control
STDMETHOD (get_gain) (sample_t *master, sample_t *gain) = 0; // mixer
STDMETHOD (set_gain) (sample_t master) = 0; // mixer
STDMETHOD (get_gains) (sample_t *slev, sample_t *clev, sample_t *lfelev) = 0; // mixer
STDMETHOD (set_gains) (sample_t slev, sample_t clev, sample_t lfelev) = 0; // mixer
STDMETHOD (get_bsi_locks) (bool *slev_lock, bool *clev_lock, bool *lfe_lock) = 0; // decoder
STDMETHOD (set_bsi_locks) (bool slev_lock, bool clev_lock, bool lfe_lock) = 0; // decoder
STDMETHOD (get_auto_gain) (bool *auto_gain) = 0; // mixer
STDMETHOD (set_auto_gain) (bool auto_gain) = 0; // mixer
STDMETHOD (get_normalize) (bool *normalize) = 0; // mixer
STDMETHOD (set_normalize) (bool normalize) = 0; // mixer
STDMETHOD (get_levels) (sample_t *source, sample_t *max_source, sample_t *speaker, sample_t *max_speaker) = 0; // mixer

// DRC
STDMETHOD (get_dynrng) (bool *dynrng, sample_t *dynrng_level, sample_t *dynrng_power) = 0; // decoder
STDMETHOD (set_dynrng) (bool dynrng, sample_t dynrng_power) = 0; // decoder

// Matrix params
STDMETHOD (get_matrix) (mixer_matrix_t *matrix) = 0; // mixer
STDMETHOD (set_matrix) (mixer_matrix_t *matrix) = 0; // mixer
STDMETHOD (get_auto_matrix)(bool *auto_matrix) = 0; // decoder
STDMETHOD (set_auto_matrix)(bool auto_matrix) = 0; // decoder
STDMETHOD (get_normalize_matrix)(bool *normalize_matrix) = 0; // decoder
STDMETHOD (set_normalize_matrix)(bool normalize_matrix) = 0; // decoder
STDMETHOD (get_expand_stereo)(bool *expand_stereo) = 0; // mixer
STDMETHOD (set_expand_stereo)(bool expand_stereo) = 0; // mixer
STDMETHOD (get_voice_control)(bool *voice_control) = 0; // mixer
STDMETHOD (set_voice_control)(bool voice_control) = 0; // mixer
STDMETHOD (get_bass_redir)(bool *bass_redir) = 0; // mixer
STDMETHOD (set_bass_redir)(bool bass_redir) = 0; // mixer

// Delay
STDMETHOD (get_delay_on) (bool *on) = 0;
STDMETHOD (set_delay_on) (bool on) = 0;
STDMETHOD (get_delay) (int *delay) = 0;
STDMETHOD (set_delay) (int *delay) = 0;

// Equalizer
STDMETHOD (get_eq_on) (bool *on) = 0;
STDMETHOD (set_eq_on) (bool on) = 0;
STDMETHOD (get_eq9) (sample_t *func) = 0;
STDMETHOD (set_eq9) (sample_t *func) = 0;
STDMETHOD (get_eq9_levels)(sample_t *func) = 0;

// Registry interface
STDMETHOD (get_config_file)(char *filename, int size) = 0;
STDMETHOD (get_config_autoload)(bool *config_autoload) = 0;
STDMETHOD (set_config_autoload)(bool config_autoload) = 0;

STDMETHOD (load_params) (const char *preset = 0, bool file = false) = 0;
STDMETHOD (save_params) (const char *preset = 0, bool file = false) = 0;
STDMETHOD (load_matrix) (const char *preset = 0, bool file = false) = 0;
STDMETHOD (save_matrix) (const char *preset = 0, bool file = false) = 0;
STDMETHOD (load_delay) (const char *preset = 0, bool file = false) = 0;
STDMETHOD (save_delay) (const char *preset = 0, bool file = false) = 0;
STDMETHOD (load_eq9) (const char *preset = 0, bool file = false) = 0;
STDMETHOD (save_eq9) (const char *preset = 0, bool file = false) = 0;
};

得到接口指针没问题,但是一调用接口方法,就报错。指了非法的地方了

我想调用其set_gain方法,是否有人使用过AC3 Filter 的接口,给我点指点,非常感谢!
...全文
477 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
ppzhao 2006-07-29
  • 打赏
  • 举报
回复
自己up

2,543

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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