C 我能';我不理解这个代码结构。有人能解释一下如何执行这段代码吗?
在mediastreamer2中,我看到了很多我不理解的奇怪代码C 我能';我不理解这个代码结构。有人能解释一下如何执行这段代码吗?,c,C,在mediastreamer2中,我看到了很多我不理解的奇怪代码 static MSFilterMethod sender_methods[] = { {MS_RTP_SEND_MUTE, sender_mute}, {MS_RTP_SEND_UNMUTE, sender_unmute}, {MS_RTP_SEND_SET_SESSION, sender_set_session}, {MS_RTP_SEND_SEND_DTMF, sender_send_dtmf}, {MS_RTP_S
static MSFilterMethod sender_methods[] = {
{MS_RTP_SEND_MUTE, sender_mute},
{MS_RTP_SEND_UNMUTE, sender_unmute},
{MS_RTP_SEND_SET_SESSION, sender_set_session},
{MS_RTP_SEND_SEND_DTMF, sender_send_dtmf},
{MS_RTP_SEND_SET_RELAY_SESSION_ID, sender_set_relay_session_id},
{MS_FILTER_GET_SAMPLE_RATE, sender_get_sr },
{MS_FILTER_GET_NCHANNELS, sender_get_ch },
{MS_RTP_SEND_SET_DTMF_DURATION, sender_set_dtmf_duration },
{MS_RTP_SEND_SEND_GENERIC_CN, sender_send_generic_cn },
{0, NULL}
};
还有这个
MSFilterDesc ms_rtp_send_desc = {
MS_RTP_SEND_ID,
"MSRtpSend",
N_("RTP output filter"),
MS_FILTER_OTHER,
NULL,
1,
0,
sender_init,
NULL,
sender_process,
NULL,
sender_uninit,
sender_methods,
MS_FILTER_IS_PUMP
};
或
在sender_方法中,那些“sender_”是同一文件中的函数。我不知道如何调用其他函数。因为我看不到这些函数出现在其他文件中
整个项目都在Github中:
谢谢。以
.init=sender\u init
为例:这将初始化MSFilterDesc
结构的init
结构成员,使其指向sender\u init
函数的指针。要知道的两件事是和
对于其他的,第一个是结构数组的简单初始化。第二个是结构的简单初始化。它们是在某个.h文件中定义的?无论如何,github链接对未来的SO用户没有用处:(…很多时候,通过在结构中查找#define然后调用相应的函数来调用它们?实际上,这是#define in.h文件。#define MS#u FILTER_DESC u EXPORT(DESC)MS#u FILTER_DESC u EXPORT(MS#rtp#u send#DESC)谢谢,这意味着,当此结构初始化时,结构中的所有函数都将被调用?@Sven否,函数调用类似于
sender\u init()
。它只是获取一个指向函数的指针。然后,您可以将结构成员用作函数。同样,请阅读有关函数指针的内容。
MSFilterDesc ms_rtp_send_desc = {
.id = MS_RTP_SEND_ID,
.name = "MSRtpSend",
.text = N_("RTP output filter"),
.category = MS_FILTER_OTHER,
.ninputs = 1,
.noutputs = 0,
.init = sender_init,
.process = sender_process,
.uninit = sender_uninit,
.methods = sender_methods,
.flags=MS_FILTER_IS_PUMP
};