[asterisk-bugs] [Asterisk 0013513]: Recording transcoded call with Monitor() uses 3 licenses of G.729

Asterisk Bug Tracker noreply at bugs.digium.com
Tue Nov 18 08:36:19 CST 2008


A NOTE has been added to this issue. 
====================================================================== 
http://bugs.digium.com/view.php?id=13513 
====================================================================== 
Reported By:                blitzrage
Assigned To:                kpfleming
====================================================================== 
Project:                    Asterisk
Issue ID:                   13513
Category:                   Resources/res_monitor
Reproducibility:            always
Severity:                   minor
Priority:                   normal
Status:                     acknowledged
Asterisk Version:           SVN 
SVN Branch (only for SVN checkouts, not tarball releases):  1.4  
SVN Revision (number only!): 140850 
Disclaimer on File?:        N/A 
Request Review:              
====================================================================== 
Date Submitted:             2008-09-18 10:24 CDT
Last Modified:              2008-11-18 08:36 CST
====================================================================== 
Summary:                    Recording transcoded call with Monitor() uses 3
licenses of G.729
Description: 
When recording a call with Monitor() in the dialplan where one end is ulaw,
and the other G.729, it appears that Asterisk utilizes 4 licenses of G.729
in a single call. There may be some sort of optimization that could be done
here, or perhaps there is a reason this needs to happen?

My guess is that Asterisk is converting the ulaw to g.729 before it hits
Monitor(), and is then converting it back to .wav for recording?
====================================================================== 

---------------------------------------------------------------------- 
 (0094975) blitzrage (administrator) - 2008-11-18 08:36
 http://bugs.digium.com/view.php?id=13513#c94975 
---------------------------------------------------------------------- 
After having a discussion with Kevin and the rest of the development
members, there is no change necessarily required here. The behaviour of
using multiple channels is exactly what is expected based on the way the
code is written today.

If I understand correctly, this is how you get 3 decoder channels (which
is a utilization of 3 licenses. You get an encoder and decoder which equals
1 license, then the other 2 decoder channels are the other 2 channels,
which totals to 3 liceneses in use):

ulaw --> g729 (1 encoder)
ulaw <-- g729 (1 decoder)

The above is your call. That is utilizing a single license.

The following will be the additional 2 decoders you're using to Monitor()
the call.

ulaw --> g729 --> wav  (1 decoder)
ulaw <-- wav <--- g729 (1 decoder)

You may be able to optimize out one of the decoders by using the M() flag
in the Dial() application to trigger the Monitor() to happen on the other
channel. I have no had a chance to reproduce the issue because I'm having
issues with getting my G.729 license to load correctly on my development
box. But basically instead of calling the Macro(recordcall,...) before the
Dial(), you would do it just before bridging to the other channel with the
M() flag.

For now, this issue will remain acknowledged, but it is debatable whether
this is really a bug or not. It appears the way this work will not change
for the foreseeable future. 

Issue History 
Date Modified    Username       Field                    Change               
====================================================================== 
2008-11-18 08:36 blitzrage      Note Added: 0094975                          
======================================================================




More information about the asterisk-bugs mailing list