Music On Hold g729 won't play

In Asterisk 14.0.2, if I use Linphone with only g722 enabled, confbridge works fine and plays music on hold. If I set it to use g729 only it all works until I get to music on hold and then it hangs up.

I have checked the moh directory and it contains g729 music files for each title. I checked menuselect and music on hold g729 is selected. musiconhold.conf sets directory = moh

I want to use g729 as one of my users has a Cisco SPA303 which supports g729 and it sounds much nicer than g722.

Here is my CLI output. I don’t understand the following line since it just played confbridge-join.g729.

<CBAnn/1-00000004;1> Playing ‘confbridge-join.slin’ (language ‘en’)

    -- <PJSIP/mark-0000000c> Playing 'conf-getpin.g729' (language 'en')
  == Begin MixMonitor Recording CBRec/1-00000004
    -- Channel CBRec/1-00000004 joined 'softmix' base-bridge <f14568da-95c4-4166-afc5-0a3ca73c4df0>
    -- <PJSIP/mark-0000000c> Playing 'conf-waitforleader.g729' (language 'en')
    -- <PJSIP/mark-0000000c> Playing 'confbridge-join.g729' (language 'en')
    -- Channel CBAnn/1-00000004;2 joined 'softmix' base-bridge <f14568da-95c4-4166-afc5-0a3ca73c4df0>
    -- <CBAnn/1-00000004;1> Playing 'confbridge-join.slin' (language 'en')
    -- Channel CBAnn/1-00000004;2 left 'softmix' base-bridge <f14568da-95c4-4166-afc5-0a3ca73c4df0>
    -- Started music on hold, class 'default', on channel 'PJSIP/mark-0000000c'
    -- Channel PJSIP/mark-0000000c joined 'softmix' base-bridge <f14568da-95c4-4166-afc5-0a3ca73c4df0>
[Oct 27 10:49:21] WARNING[25314][C-0000000d]: translate.c:481 ast_translator_build_path: No translator path: (starting codec is not valid)
[Oct 27 10:49:21] WARNING[25314][C-0000000d]: channel.c:5505 set_format: Unable to find a codec translation path: (slin) -> (g729)

ConfBridge uses signed linear internally for mixing, it may be the case you are doing still requires mixing to happen so a translation path from signed linear to g729 is set up. If you are using ConfBridge at all you are going to need to eventually transcode regardless.

I don’t understand this response. Core show translation does not show g729 anywhere so I guess there is no translation. Is there a way to fix this? I don’t understand why it wouldn’t just pick and play a g729 file.

G729 is a commerically licensed codec for sale[1]. If you plan on using ConfBridge for conferencing you will need to have a license per channel, or to not use G729. The message is being output because ConfBridge mixes in signed linear and is trying to set your channel to transcode.

[1] https://www.digium.com/products/software/g729-codec

1 Like