掌桥专利:专业的专利平台
掌桥专利
首页

创建声卡的方法、装置、电子设备及存储介质

文献发布时间:2023-06-19 11:29:13


创建声卡的方法、装置、电子设备及存储介质

技术领域

本发明实施例涉及音频领域,特别涉及一种创建声卡的方法、装置、电子设备及存储介质。

背景技术

在音频领域中,底层的实现是基于高级Linux声音架构(Advanced Linux SoundArchitecture,ALSA)进行设计的,基于ALSA设计的框架将底层分成了系统级芯片(Systemon Chip,SOC)和编译码器(Coder-Decoder,Codec)两部分,声卡的创建都需要依赖SOC和Codec这两个部分,如图1所示,为现有技术中声卡的结构示意图,通过该声卡可以实现音频输入和音频输出;如果缺少了Codec,就无法完成声卡的创建。

发明内容

本发明实施例的目的在于提供一种创建声卡的方法、装置、电子设备及存储介质,实现在没有编译码器的情况下,完成声卡的建立。

为解决上述技术问题,本发明的实施例提供了一种创建声卡的方法,包括:将系统级芯片中指向编译码器的连接部分指定为预设编译码;将所述系统级芯片的信息和所述预设编译码的信息传递给预设的应用程序接口函数,完成声卡的创建。

本发明的实施例还提供了一种创建声卡的装置,包括:指定模块,用于将系统级芯片中指向编译码器的连接部分指定为预设编译码;创建模块,用于将所述系统级芯片的信息和所述预设编译码的信息传递给预设的应用程序接口函数,完成声卡的创建。

本发明的实施例还提供了一种电子设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述所述的创建声卡的方法。

本发明的实施例还提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现上述所述的创建声卡的方法。

本发明实施例相对于现有技术而言,将系统级芯片中指向编译码器的连接部分指定为预设编译码,这样即使没有编译码器,也可以从软件层面建立系统级芯片和预设编译码之间的关系;将系统级芯片的信息和预设编译码的信息传递给预设的应用程序接口函数,这样应用程序接口也可以知道系统级芯片和编译码之间的关系,从而完成声卡的创建。

另外,所述将系统级芯片中指向编译码器的连接部分指定为预设编译码,包括:添加系统级芯片的数字音频接口的函数;根据所述数字音频接口的函数,将系统级芯片中指向编译码的连接部分指定为预设编译码。通过这样的方法,可以实现成功的将系统级芯片中指向编译码的连接部分指定为预设编译码。

另外,在所述完成声卡的创建之后,还包括:先加载音频芯片,并将所述音频芯片加载完成的信息发送给所述声卡;根据所述音频芯片的信息修改所述声卡的数字音频接口的函数,使所述数字音频接口用于将所述声卡和所述音频芯片进行连接。通过这样的方法,先加载音频芯片,并将音频芯片加载完成的信息发送给声卡,可以使声卡知道现在需要通过数字音频接口连接到哪一个音频芯片上,再根据音频芯片的信息修改声卡的数字音频接口的函数,无论哪种音频芯片,均可以动态调整数字音频接口的函数,使修改后的数字音频接口用于连接声卡和音频芯片,实现声卡与不同的音频芯片的兼容。

另外,在所述根据所述音频芯片的信息修改所述声卡的数字音频接口的函数,使所述数字音频接口用于将所述声卡和所述音频芯片进行连接之后,还包括:确定与所述音频芯片对应的音频参数;加载所述音频参数。通过这样的方法,还可以实现音频参数的兼容设计。

另外,所述先加载音频芯片,并将所述音频芯片加载完成的信息发送给所述声卡,包括:先加载音频芯片;通过EXPORT_SYSMPOL导出变量符号,若所述变量符号表征所述音频芯片加载完成,则将所述音频芯片加载完成的信息发送给所述声卡。通过这样的方法,可以较简单的知道音频芯片是否加载完成。

另外,所述根据所述音频芯片的信息修改所述声卡的数字音频接口的函数,使所述数字音频接口用于将所述声卡和所述音频芯片进行连接,包括:根据所述音频芯片的信息修改所述声卡的数字音频接口的函数中与所述预设编译码相关的内容,使所述数字音频接口用于将所述声卡和所述音频芯片进行连接。通过这样的方法,可以成功实现使数字音频接口用于连接声卡和音频芯片。

另外,所述先加载音频芯片,并将所述音频芯片加载完成的信息发送给所述声卡,包括:根据初始化脚本中的加载顺序先加载音频芯片,并将所述音频芯片加载完成的信息发送给所述声卡。通过这样的方法,可以较简单的实现先加载音频芯片。

附图说明

一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。

图1是现有技术中声卡的结构示意图;

图2是根据本发明第一实施例中的创建声卡的方法的流程图;

图3是根据本发明第一实施例中的步骤101的一种具体实现方式的流程图;

图4是根据本发明第一实施例中的声卡的结构示意图;

图5是根据本发明第二实施例中的创建声卡的方法的流程图;

图6是根据本发明第二实施例中的步骤203的一种具体实现方式的流程图;

图7是根据本发明第三实施例中的创建声卡的方法的流程图;

图8是根据本发明第四实施例中的创建声卡的装置的结构示意图;

图9是根据本发明第五实施例中的电子设备的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施例进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施例中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施例的种种变化和修改,也可以实现本申请所要求保护的技术方案。以下各个实施例的划分是为了描述方便,不应对本发明的具体实现方式构成任何限定,各个实施例在不矛盾的前提下可以相互结合相互引用。

本发明的第一实施例涉及一种创建声卡的方法,应用于电子设备,具体流程如图2所示,包括:

步骤101,将系统级芯片中指向编译码器的连接部分指定为预设编译码。

具体地说,在硬件设计上,将编译码器(Coder-Decoder,Codec)部分进行去除,只保留系统级芯片(System on Chip,SOC)部分;在软件设计上,对SOC进行重新定义,将SOC中指向Codec的连接部分指定为预设编译码,预设编译码相当于虚拟的Codec。

在一个例子中,将系统级芯片中指向编译码器的连接部分指定为预设编译码的具体流程图如图3所示,包括:

步骤1011,添加系统级芯片的数字音频接口的函数。

步骤1012,根据数字音频接口的函数,将系统级芯片中指向编译码的连接部分指定为预设编译码。

具体地说,在machine driver中的probe函数中添加SOC的数字音频接口的函数即dai_link函数,将SOC的信息和预设编译码的信息填充在dai_link函数中,这样可以将SOC和预设编译码建立联系,即将系统级芯片中指向编译码的连接部分指定为预设编译码。通过这样的方法,可以实现成功的将系统级芯片中指向编译码的连接部分指定为预设编译码。

步骤102,将系统级芯片的信息和预设编译码的信息传递给预设的应用程序接口函数,完成声卡的创建。

具体地说,调用ALSAcore提供的预设的应用程序接口(Application ProgrammingInterface,API)函数,将SOC的信息和预设编译码的信息传递给预设的API函数,即可完成声卡的创建,如图4所示,为本实施例中的声卡的结构示意图。

本实施例中,将系统级芯片中指向编译码器的连接部分指定为预设编译码,这样即使没有编译码器,也可以从软件层面建立系统级芯片和预设编译码之间的关系;将系统级芯片的信息和预设编译码的信息传递给预设的应用程序接口函数,这样应用程序接口也可以知道系统级芯片和编译码之间的关系,从而完成声卡的创建。

本发明的第二实施例涉及一种创建声卡的方法。第二实施例与第一实施例大致相同,主要区别之处在于:在完后声卡的创建之后,还给出了兼容不同音频芯片的实现过程,具体流程如图5所示,包括:

步骤201,将系统级芯片中指向编译码器的连接部分指定为预设编译码。

步骤202,将系统级芯片的信息和预设编译码的信息传递给预设的应用程序接口函数,完成声卡的创建。

步骤201-202与第一实施例中的步骤101-102类似,在此不再赘述。

步骤203,先加载音频芯片,并将音频芯片加载完成的信息发送给声卡。

具体地说,预先设定模块的加载顺序,使音频芯片在声卡之前进行加载,并将音频芯片加载完成的信息发送给声卡,这样声卡就可以知道现在需要通过数字音频接口连接到哪一个音频芯片上。

在一个例子中,先加载音频芯片,并将音频芯片加载完成的信息发送给声卡的具体流程图如图6所示,包括:

步骤2031,先加载音频芯片。

步骤2032,通过EXPORT_SYSMPOL导出变量符号,若变量符号表征音频芯片加载完成,则将音频芯片加载完成的信息发送给声卡。

具体地说,预先设定模块的加载顺序,使音频芯片在声卡之前进行加载,且音频芯片的driver中添加有变量符号,预先设定表征音频芯片加载完成的变量符号;通过EXPORT_SYSMPOL导出变量符号,使之对内核完全公开,这样machine driver可以访问到该变量符号,所以当machine driver判断出变量符号表征音频芯片加载完成时,将音频芯片加载完成的信息发送给声卡。例如:若表征音频芯片加载完成的变量符号为1,则machine driver判断出变量符号为1时,则表征音频芯片加载完成,将音频芯片加载完成的信息发送给声卡;若表征音频芯片加载完成的变量符号为2,则machine driver判断出变量符号为2时,则表征音频芯片加载完成,将音频芯片加载完成的信息发送给声卡。

在一个例子中,先加载音频芯片,并将音频芯片加载完成的信息发送给所述声卡,包括:根据初始化脚本中的加载顺序先加载音频芯片,并将音频芯片加载完成的信息发送给声卡。具体地说,在初始化脚本中预先设定加载顺序,这样初始化脚本运行时,可以根据初始化脚本中的加载顺序先加载音频芯片,并在音频芯片加载完成之后,将音频芯片加载完成的信息发送给声卡。通过这样的方法,可以较简单的实现先加载音频芯片。

在一个例子中,先加载音频芯片,通过全局变量导出变量符号,若变量符号表征音频芯片加载完成,则将音频芯片加载完成的信息发送给声卡。具体地说,预先设定模块的加载顺序,使音频芯片在声卡之前进行加载,且音频芯片的driver中添加有变量符号,预先设定表征音频芯片加载完成的变量符号;通过全局变量导出变量符号,使之对内核完全公开,这样machine driver可以访问到该变量符号,所以当machine driver判断出变量符号表征音频芯片加载完成时,将音频芯片加载完成的信息发送给声卡。

步骤204,根据音频芯片的信息修改声卡的数字音频接口的函数,使数字音频接口用于将声卡和音频芯片进行连接。

在一个例子中,根据音频芯片的信息修改声卡的数字音频接口的函数,使数字音频接口用于将声卡和音频芯片进行连接,包括:根据音频芯片的信息修改声卡的数字音频接口的函数中与预设编译码相关的内容,使数字音频接口用于将声卡和音频芯片进行连接。具体地说,根据音频芯片的信息将dai_link函数中的Codec_name和Codec_dai_name修改为音频芯片的标识,使数字音频接口用于将声卡和音频芯片进行连接。

本实施例中,先加载音频芯片,并将音频芯片加载完成的信息发送给声卡,可以使声卡知道现在需要通过数字音频接口连接到哪一个音频芯片上,再根据音频芯片的信息修改声卡的数字音频接口的函数,无论哪种音频芯片,均可以动态调整数字音频接口的函数,使修改后的数字音频接口用于连接声卡和音频芯片,实现声卡与不同的音频芯片的兼容。

本发明的第三实施例涉及一种创建声卡的方法。第三实施例与第二实施例大致相同,主要区别之处在于:还给出了兼容音频参数的实现过程,具体流程如图7所示,包括:

步骤301,将系统级芯片中指向编译码器的连接部分指定为预设编译码。

步骤302,将系统级芯片的信息和预设编译码的信息传递给预设的应用程序接口函数,完成声卡的创建。

步骤303,先加载音频芯片,并将音频芯片加载完成的信息发送给声卡。

步骤304,根据音频芯片的信息修改声卡的数字音频接口的函数,使数字音频接口用于将声卡和音频芯片进行连接。

步骤301-304与第二实施例中的步骤201-204类似,在此不再赘述。

步骤305,确定与音频芯片对应的音频参数。

步骤306,加载音频参数。

具体地说,音频hal层获取音频芯片的标识,根据标识确定当前的音频芯片是哪种类型的音频芯片,再去预设目录中查找与音频芯片的类型对应的音频参数,并加载查找到的音频参数,实现音频参数的兼容设计。

本实施例中,除了实现声卡与不同的音频芯片的兼容之外,还可以实现音频参数的兼容设计。

上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。

本发明第四实施例涉及一种创建声卡的装置,如图8所示,包括:指定模块401,创建模块402;

指定模块401,用于将系统级芯片中指向编译码器的连接部分指定为预设编译码。

创建模块402,用于将系统级芯片的信息和预设编译码的信息传递给预设的应用程序接口函数,完成声卡的创建。

不难发现,本实施例为与第一实施例、第二实施例和第三实施例相对应的装置实施例,本实施例可与第一实施例、第二实施例和第三实施例互相配合实施。第一实施例、第二实施例和第三实施例中提到的相关技术细节在本实施例中依然有效,为了减少重复,这里不再赘述。相应地,本实施例中提到的相关技术细节也可应用在第一实施例、第二实施例和第三实施例中。

值得一提的是,本实施例中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本发明的创新部分,本实施例中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施例中不存在其它的单元。

本发明第五实施例涉及一种电子设备,如图9所示,包括至少一个处理器501;以及,与所述至少一个处理器501通信连接的存储器502;其中,所述存储器502存储有可被所述至少一个处理器501执行的指令,所述指令被所述至少一个处理器501执行,以使所述至少一个处理器501能够执行上述任一所述的创建声卡的方法。

其中,存储器和处理器采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器和存储器的各种电路连接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器。

处理器负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器可以被用于存储处理器在执行操作时所使用的数据。

本发明第六实施例涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述方法实施例。

即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

本领域的普通技术人员可以理解,上述各实施例是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。

相关技术
  • 创建声卡的方法、装置、电子设备及存储介质
  • 元件库的创建方法、创建装置、电子设备及存储介质
技术分类

06120112942300