如何在 Jack 中使用非默认端口类型?

问题描述 投票:0回答:1

我在跑什么

我正在尝试在插孔中创建一个非默认类型端口(意味着不是音频也不是 midi),但不清楚这是否真的可能,因为我还没有找到任何关于它的示例或讨论,尽管基于在文档上它应该受到支持。

我正在运行以下代码:

    jack_port_t *ret1 = jack_port_register(client, "testAudio", JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, 0);
    jack_port_t *ret2 = jack_port_register(client, "hw2p", "my port type", JackPortIsInput, 256);

结果

ret1
返回有效端口,但
ret2
nullptr

预期结果

它们应该都是有效端口(非空)。

相关文档

Jack API 在 jack_port_register 函数的描述中包含以下内容:

jack_port_t* jack_port_register (   jack_client_t *     client,
const char *    port_name,
const char *    port_type,
unsigned long   flags,
unsigned long   buffer_size 
)

“...所有端口都有一个类型,可以是作为参数传递的任何非 NULL 和非零长度字符串。某些端口类型内置于 JACK API 中,例如 JACK_DEFAULT_AUDIO_TYPE 或 JACK_DEFAULT_MIDI_TYPE”

它对该函数的 buffer_size 参数进行了以下说明:

“如果这不是内置 port_type,则必须为非零。否则,它将被忽略。”

非常感谢任何帮助!

来源:https://jackaudio.org/api/group__PortFunctions.html

linux audio jack
1个回答
0
投票

如果你检查插件的网站,你会找到产品的描述(强调我的):

JACK Audio Connection Kit(或JACK)是一个专业的sound服务器API 以及一对守护进程实现,以提供实时、低延迟 应用程序之间音频和MIDI数据的连接。

该产品显然是针对音频数据的。 如果你下载并查看源代码,你可以看到它显然是针对音频处理的,有位深度、通道、采样频率等概念......

你谈论“非标准”端口,但实际上并不存在这样的东西。 您要么有一个音频端口、一个 MIDI 端口、一个串行端口、一个 USB 端口……因为端口不仅仅是一个变量,而且是一个物理连接器,定义哪根线连接到哪根线,以及终端设备如何一起通信(通信协议)。

根据您尝试实现的协议,可能有 JACK 的开源替代方案。

© www.soinside.com 2019 - 2024. All rights reserved.