0

我正在对此进行查询,因为我不是 C 专家。看看是否有任何人可以帮助解决它。我将 g729 集成到 pjsip lib 中,我从这里得到了 g729 编解码器文件。这是我遵循的步骤:

首先,我在“pjmedia/src/pjmedia-codec/audio_codecs.c”中注册了g729

#if PJMEDIA_HAS_G729_CODEC
    /* Register G729 */
    status = pjmedia_codec_g729_init(endpt);
    if (status != PJ_SUCCESS){

    return status;
     }
#endif

现在我有两个文件“pj_g729.c”和“pj_g729.h”,据我所知,我必须将它们复制到 pjsip lib 中。所以我复制了“pjmedia/src/pjmedia-codec”中的“pj_g729.c”和“/root/pjsip/trunk_2_allloweversionsuccess_and_widssl_g729/pjmedia/include/pjmedia-codec”中的“pj_g729.h”。

执行此操作后,我正在运行 make 它给出错误:'未定义的引用在状态 = pjmedia_codec_g729_init(endpt);'。

我也对“PJMEDIA_HAS_G729_CODEC”有疑问,因为我没有在库中找到这个变量。所以我必须声明它吗?我为它苦苦挣扎了很长时间。任何帮助都会很明显。

4

3 回答 3

1

您可以按照 g7221 如何在 pjsip 中添加的步骤进行操作。找出提到 g722 的文件并为 g729 编解码器添加额外的行。您可以将 g729.a 文件粘贴到 pjsip 的第三方库中。

于 2014-10-02T09:47:37.523 回答
1

从编译器看到错误行的事实来看,它PJMEDIA_HAS_G729_CODEC实际上是在某处定义的。否则该行将被直接跳过。

问题是在 C 中,头文件必须是#included 才能声明函数。这将连接两个源文件。这里audio_codecs.cpj_g729.c应该都包括pj_g729.h.

于 2014-10-07T14:20:54.043 回答
1

您需要将 pj_g729.h 包含到 pjmedia-codec.h 中。

#include <pjmedia-codec/pj_g729.h>

这会将 g729 头文件包含到 pjmedia-codec.h 头中,并将避免在 status = pjmedia_codec_g729_init(endpt);' 处出现未定义引用的错误。

于 2015-05-10T12:29:19.947 回答