Você está na página 1de 10

BlogdoEnsinar

CompartilhandoConhecimento

AimportnciadosCodecs
ByRodrigoRibeiro
Caroscolegas,
NovamentetomoaliberdadeparaescrevernoblogdoEnsinar.Acreditoqueestesejaumassuntodeinteressegeralevoltadoatodosquetrabalhamcom
telefoniaIPeVoIP.Esteartigobuscafazerentenderoqueumcodec,quaissuascaractersticasecritriosparaimplementaodentrodeumservidor
Asterisk. Devo frisar que a fonte desse post provm do contedo da revista Linux Magazine Especial 3 VoIP com Asterisk
(http://www.linuxmagazine.com.br/especial/lme_3_voip_com_asterisk),baseadoemumaanliseescritaporFlvioE.Gonalves.
Umboaleituraparatodos!

Introduo
Primeiramente devemos definir o que um codec. Um codec (http://pt.wikipedia.org/wiki/Codec) (coderdecoder) um codificadordecodificador
(traduzindo ao p da letra), de um sinal ou um fluxo de dados digitais. Temos um exemplo abaixo que mostra como funciona a codificao PCM
(PulseCodeModulation)(http://en.wikipedia.org/wiki/Pulsecode_modulation):

Nocasoumsinalanalgicode4000Hz(faixadavozhumana)amostrado,quantizadoecodificado,gerandoumfluxodigitalde8000amostras,cada
uma codificada em 8 bits de dados, consumindo 64kbps de banda, que ser transmitido para o sistema. De acordo com a norma da ITU G.711
(http://www.itu.int/rec/TRECG.711/en)existem2tiposdealgoritmosparacodificarumsinalPCM:MulaweAlaw,designadosnoAsteriskcomo
ulawealaw.OprimeirousadonosEUAeJapo,enquantoosegundousadoemquasetodosospases.Existemvriascaractersticasquedevem
serentendidasemrelaoaumcodec.AbaixotemosumatabelacomoscodecsmaisconhecidoseusadosnoAsteriskeaseguirfocaremosemalgumas
caractersticasepontosimportantesarespeitodoscodecs.

TabelacomparativadosCodecs
Codecs

G.711

G.729

G.723
5,3 ou

GSM

iLBC
13,3ou

LarguradeBanda(Kbps)

64

6,3

13

15

Complexidade(Mips)

0,35

13

19

18

Resistncia a perda de
pacotes

3%

3%

3%

5% ou
7%

MOS

4,41

4,14

3,79

N/A

4,07

QualidadedeVoz
AqualidadedevozmedidaemMOS(http://en.wikipedia.org/wiki/Mean_Opinion_Score)(MeanOpinionScore,oumdiadosresultadosdas
opinies).OstestesparaMOSseguemanormaP.800daITU(http://www.itu.int/rec/TRECP.800199608I/en).OMOSvariaemumaescaladeum
(qualidaderuim)acinco(qualidadeexcelente)
Compensao(ocultao)
Conhecidacomoocultaodaperdadepacotes(PacketLossConcealment(http://en.wikipedia.org/wiki/Packet_Loss_Concealment)).Codecscomessa
caractersticaconseguemcompensareventuaisperdasdepacotesdevoz,ocultandoissoparaousuriofinal
Silncioerudo
Algunscodecspermitemadetecodesilncioouintervalosempresenadevoz,fazendocomqueessevazionosejatransmitido,economizando
banda.InfelizmenteoAsterisknosuporta(ainda)ainclusodesserecurso
Formadelicenciamento
Nemtodososcodecssogratuitos.AlgunscomooG.729eoG.723necessitamserlicenciados.Ocustonoalto:cercade10dlaresporcanal
simultneo.
Complexidade

AcomplexidadedeumcodecmedidaemMIPS(http://pt.wikipedia.org/wiki/MIPS)(milhesdeinstruesporsegundo).Chegaaserdifcilcomparar
a complexidade em MIPS, pois ela dependente de um processador. Em muitos casos os codecs so processados em DSPs
(http://pt.wikipedia.org/wiki/DSP) (Digital Signal Processor), preparados, construdos e at programados para isso, o que alivia a CPU principal do
processodecodificaoedecodificao.Logooprocessamentodecodecspodeserfeitotantoporsoftwarecomoporhardware.
Escolhendoocodec
Cadatipodecodecpossuiumaaplicaodiferente,dependentedosistema,ambienteesoluoaqueeleforimplementado.Porisso,saberescolherpode
fazerumagrandediferena.Abaixotemosumaanliseparacadatipoderede:
Codecspararedeslocais
Emredeslocaisgeralmentetemosbandapassanteemabundncia,deformaqueonveldecompressotemumpesopequenonaescolhadocodecaser
utilizado.Nessecasoumaescolhanaturalseriaog.711,queocupariacercade100kbps(incluindooscabealhos)paracadaligao
CodecspararedesWAN
EmumaredeWAN(http://en.wikipedia.org/wiki/Wide_Area_Network) (Wide AreaNetwork),normalmente temos uma banda passantepequena(64,
128ou256Kbps)ondepodemospriorizarotrfegodevoz.Nessetipoderedes,normalmente,poucocomumocorreremperdasdepacotes.Htrs
bonscodecsparaessetipoderede:oG.729provavelmentesedestaca,poisprovumaexcelentequalidadedevozcomumacompressode8para1o
G.723 permite taxas de compresso ainda maiores, mas com certa perda de qualidade por fim temos o GSM (http://www
mobile.ecs.soton.ac.uk/speech_codecs/standards/gsm.html)queumaalternativaparaaquelesqueprocuramcusto/benefcio.OpontonegativodoGSM
ficaparaofatodenotersuporteaocodecnamaioriadostelefonesIPseATAs.
CodecsparaInternet
EmumaredecomInternethdoisdesafios:bandapassanteefaltadecontroledomeio.Porissotemosumalatnciaaltaejitter(variaodalatncia),
queculminamcomaperdadepacotes.Algunscodecsforamdesenvolvidoscomessesrequisitosemmente.Ocodecmaisindicadoparaessetipoderede
oiLBC(http://en.wikipedia.org/wiki/Internet_Low_Bit_Rate_Codec), que tem uma boa resistncia a perda de pacotes e usa pouca banda passante.
Maisinformaespodemserencontradasnatabeladecodecsdessepost.
Consumo

A banda usada em codecs reservada apenas para o que chamamos de payload(http://pt.wikipedia.org/wiki/Payload), ou carga, de voz. Para que
umpacotedevozpossatrafegarpelaredeprecisoqueelesejaencapsuladousandocabealhosderede.UmasessodevozusandoocodecG.729em
umaredeEthernet,porexemplo,consomecercade30Kbps(quase4vezesotamanhodopayload!).Paraverificarquantocadacodecconsome,em
qualquertipoderede,podemosusarumacalculadoradebanda(http://www.asteriskexperts.com.br/bandcalc/bandcalcpt.php).
CodecnoAsterisk
Esseeosdoistpicosabaixojsomaistcnicos.ParaselecionarumcodecnoAsterisk,precisoeditarocanalrelativoaoprotocolodesejado(IAX,
SIP,H323,etc).Dentrodecadacanalpossvelescolheroscodecsparatodososusurios,presentenaseo[general],ouindividualmenteparacada
userem[peer/user].Porexemplo,paraselecionaroscodecsparatodososusurios,usamosaseo[general]:
[general]
disallow=all
allow=alaw
Eindividualmente,por[peer/user]:
[40200]
disallow=all
allow=g729
Transcodificao
EmalgumassituaesoAsteriskprecisaconverterospacotesdevozdeumcodecparaooutro.Esseprocessoconhecidocomotranscodificaoe
consomemuitosrecursosdeCPU.Semprequehconversodepacotesdevozdeumcodecparaooutro,inclusiveemleituraegravaodegravaes
dedados,ocorreatranscodificao.SeesseprocessopuderserevitadopodesepouparrecursosdeCPUeevitaracompradelicenasdesnecessrias.
EmpacotamentodoRTP
Naverso1.4doAsterisktambmpossvelalterarosmoldesdeempacotamentodecadacodec.Podeseagoraaumentaroudiminuiropayloaddecada
codec, por exemplo, usando 60ms ao invs de 20ms, no caso do codec G.729, impactando no consumo de banda. O empacotamento definido na
instruoAllow:
allow=g729:60

MaioresdetalhespodemserencontradosnositedaDigium(http://svn.digium.com/view/asterisk/branches/1.4/doc/rtppacketization.txt).
Concluso
A escolha correta do codec faz toda diferena na implementao de uma soluo de telefonia IP ou VoIP. Ela influencia, sobretudo, o consumo de
banda,nmerodecanaissimultneosequalidadedevozparaousuriofinal.Porissoescolhaocodecmaiscorretoparaoseutipoderede,usetcnicas
deQoS(http://en.wikipedia.org/wiki/Quality_of_service)(qualidadedeservio),priorizeotrfegodepacotesdevozeeviteastranscodificaes.
Abouttheseads
Thisentrywaspostedondezembro21,2008at9:49pmandisfiledunderTelefonia.YoucanfollowanyresponsestothisentrythroughtheRSS2.0
(http://wordpress.com/aboutthese
ads/)
feed.Youcanleavearesponse,ortrackbackfromyourownsite.

8RespostastoAimportnciadosCodecs
EsdrazLucenaSays:
abril29,2009s7:39pm
Qualseriaomotivodautilizaodatranscodificao?G711>FXSnotranscodifica,masoGSM>FXScodifica??
RodrigoRibeiroSays:
abril30,2009s2:02pm
CaroEsdraz,
Voucolocaralgunstrechosabaixo,retiradosdealgumasfontesdainternetequevoclarearmelhoraidia:
UsaraCPUdoPCparaprocessaroudiocondenvel!
OAsteriskusaaCPUdoservidorparaprocessaroscanaisdevoz,aoinvsdeterumDSP(processadordesinaisdigitais)dedicadoacadacanal.
EnquantoistopermitiuqueocustofossereduzidoparaasplacasE1/T1ematquatrovezes,tornouosistema,sim,dependentedodesempenhoda
CPU.Comumdimensionamentocorreto,oAsteriskcapazdelidarcomgrandesvolumesdechamadas.RecentementeaDigiumlanouumaplaca
chamadaTC400BcomDSPsparaaquelesquedesejamprocessaravoz(transcodificao,cancelamentodeecoedtmf)emprocessadoresdesinais
digitais (DSPs) dedicados sem usar a CPU principal do computador. Esta placa possui um custo bastante razovel se comparado com o custo de
licenciamentoindividualdocodecG.729jembutido.

OpapeldosCODECs(COder/DECoder)codificaravozemumformatoespecficoparatransporteemumarededigital.CadatipodeCODEC
possuiumusoespecfico.Algunscomoog.729,porexemplo,permitemquesecodifiqueosinaldeudiovelocidadede8kilobits/segundo,uma
compressode8para1emcomparaocomacodificaoPCM(PulseCodeModulation)usadanaredepblica.Almdissoacodificaodevoz
permiteautilizaodediversasoutrasfuncionalidades,comoporexemplo:
*Detecodevoz(VAD)
*Transmissodedadosdescontinua(DTX)
*Geraoderudodeconforto(CNG)
*Maiorrobustezfrenteaperdadepacotes
Existem diversos CODECs que o asterisk pode utilizar, sendo que o Asterisk pode fazer a transcodificao de um CODEC para outro de forma
transparente. Entretanto alguns CODECs no Asterisk so suportados apenas no modo passthrough, em outras palavra, eles no podem ser
transcodificados,dadoqueoAsterisknoentendeostreamdebitsutilizadopelosmesmos.
OAsterisksuportaosseguintesCODECs:
G.711ulaw(usadonosEUA)(64Kbps)
G.711alaw(usadonaEuropaenoBrasil)(64Kbps)
G.723.1ModoPassthrough
G.72632kbpsnoAsterisk1.0.3,16/24/32/40kbps
G.729Precisadelicena,amenosqueestejausandoomodopassthru.(8Kbps)
GSM(1213Kbps)
iLBC(15Kbps)
LPC10(2.5Kbps)
Speex(2.1544.2Kbps).
Fonte:http://site.asteriskguide.com/FreeChapters123pt.htm

ParaaliviarousodeCPUdamquinadoAsterisk,pelomotivodestanoterumDSP,existemasplacasquefazemesseprocesso,codificandoe
transcodificandooudio.UmexemplojcitadoacimaadaTC400B(http://thevoipbox.net/products.php?product=PlacaTC400BG.729aCodec
Transcoder).
Existemtambmtestesdetranscodificaoparaconhecimentopblico,mostrandoaatuaoedesempenhodealgunscenrioscomAsterisk:
http://www.asteriskexperts.com.br/index.php/arquivodenoticiasmainmenu51/1391500chamadassimultaneasnoasterisk.html
http://www.albertosato.voipcenter.com.br/?p=239
http://clevitonmendes.blogspot.com/2008/06/desempenhodoasterisknaverso14.html
Logopossvelafirmarqueatranscodificaooprocessonoqualocontedodevozcompactadooucodificadotranscodificadoparaserusadona
formadecodecparaaredepblicaououtrotipodecodecaserusadointernamentenoAsterisk,sejaelepropritrio(etendolicenadeuso)ouno.
NocasodoG711,comoeleusaamesmataxadecodificao(64kb)daredepblica(codecPCM)elenoprecisasertranscodificado,seocaminho
for G711 > FXS. No caso do G729 (proprietrio), GSM ou outro, que tem taxas de compactao e digitalizao diferentes, preciso haver a
transcodificaoparaqueotipodeudiovenhaasercompatvelcomoPCM(PSTN).
Esperoqueeutenhasanadoasuadvida,eparaqualqueroutrasintaseavontade.
ConceitosBsicosdeQoSTemplriodaTecnologiaSays:
junho7,2009s7:43pm
[]deQoSJunho7,2009RodrigoRibeiroEscreviumartigoaalgumtemponoblogdoEnsinar(outroblogondetambmfaopostagens)que
temrelaescomoassuntodeQoS.Nocasoera[]
FernandoMeiraLinsSays:
janeiro16,2010s3:19pm
PrezadoRodrigo,suaexplicaofoibemelucidativaemvriospontos,masconfessoquemesmotendobuscadoasinformaesderefernciaquevc
indicou,noconsseguientenderaondeestavantagemoudesvantagem,emaumentaroudiminuiroEmpacotamentodoRTP
Ouseja:Achoqueentendimuitomal!rsrsrs.
Passarparaallow=g729:60siginificariaestartriplicandooconsumodebandadoCODEC?Qualavantagemedesvantagemdesefazerisso?Est
relacionadamaisaoconsumodebandaouqualidadedavoz?

Grato
Fernando
wesleyvolcovSays:
janeiro26,2010s1:29pm
CaroFernando,
Ofatodeseaumentarabandautilizadanocodecpodeinfluenciarmuitonaqualidadedoaudio.Compacotesmaiorestemosmenosfragmentao,
menosperdadedados,porm,serutilizadamaisbandaparaqueissoocorra.
Balancearboaqualidadedevozeconsumonoexcessivodelarguradebanda,hojeumaquestomuitoabrangente.Umaboaopoutilizaro
codecg729,pormhnecessidadedelicenanocasodetranscode.
Esperoterajudado.
FernandoMeiraLinsSays:
janeiro26,2010s4:29pm
AgradeoarespostaBom,porfavormeconfirmesemeuentendimentoexplanadoabaixo,estcorreto.
Entoseusarmosporexemplog729:40,teramosumpoucomaisdequalidadecommenorpossibilidadedeperdadepacotesporfragmentao,e
consumiramosodobrodabandatradicionaldocodec.
Seriaentoumg729comconsumonominalde16kbaoinvsde8kb.Naprticasemdvidaahistriaoutra,masagrossomodoisso?
SamuelSays:
julho18,2012s6:35pm
CarosoupraticamenteumleigonesteassuntoegostariadesaberqualomelhorcodecparautilizarcomoCsipsimpleeVononumGalaxy5,GSM
ouILBCoupossodeixarambos?
MessiasGalvoSays:
abril29,2013s2:06pm
Derrepente algum possa me ajudar..Estou desenvolvenso um software de decodificao de tons de DTMF pelo telefone, para isso uso um FAX
MODEMVOICEecomandosATs(comandosdemodem).Osoftwarefuncionaquasebem,atendealigaoentranomodevoicerecebeostons
decodifica, o problema que se esses tons vierem muito rpido o modem no da conta de decodificar os pacotes por inteiro comea a quebrar
nmeros,eaindacertosmodemsrecebecaracterestruncadostipo:1~/3~/6~/7~/9,aoinvezde:123456789.

OtemaKubrick.CrieumwebsiteoubloggratuitonoWordPress.com.
Entradas(RSS)eComentrios(RSS).
Seguir

SeguirBlogdoEnsinar
CrieumsitecomWordPress.com