. | . |
---|---|
lemenkov / rtplib Goto Github PK
View Code? Open in Web Editor NEWOUTDATED. Use https://github.com/xirsys/xmedialib instead!!! Erlang library for dealing with rtp/rtcp (STILL IN A VERY EARLY STAGE)
OUTDATED. Use https://github.com/xirsys/xmedialib instead!!! Erlang library for dealing with rtp/rtcp (STILL IN A VERY EARLY STAGE)
Subj.
Hi, can you please specify the license of this code?
Thank you,
r.
When compiling resampler.c I'm getting three warnings for unused variables:
https://github.com/lemenkov/rtplib/blob/master/c_src/resampler.c#L80
https://github.com/lemenkov/rtplib/blob/master/c_src/resampler.c#L90
https://github.com/lemenkov/rtplib/blob/master/c_src/resampler.c#L99
Can I just ignore the warnings?
Subj
Some codecs require more than just setting bitrate and frequency. We should use CMD_SETUP for that.
Making all in c_src
make[1]: Entering directory /mnt/hdd2/src/rtplib/c_src' make[1]: Nothing to be done for
all'.
make[1]: Leaving directory /mnt/hdd2/src/rtplib/c_src' make[1]: Entering directory
/mnt/hdd2/src/rtplib'
make[1]: Nothing to be done for all-am'. make[1]: Leaving directory
/mnt/hdd2/src/rtplib'
/bin/mkdir -p ./priv/
/bin/bash /usr/local/src/rtplib/install-sh -c c_src/.libs/.so ./priv/
==> rtplib (compile)
src/codec.erl:none: error in parse transform 'do': {undef,
[{do,parse_transform,
[[{attribute,1,file,{"src/codec.erl",1}},
{attribute,33,module,codec},
{attribute,35,behaviour,gen_server},
{attribute,1,file,
{"src/../include/rtp.hrl",1}},
{attribute,33,record,
{rtp,
[{record_field,33,
{atom,33,padding},
{integer,33,0}},
{record_field,34,
{atom,34,marker},
{integer,34,0}},
{record_field,35,
{atom,35,payload_type}},
{record_field,36,
{atom,36,sequence_number}},
{record_field,37,{atom,37,timestamp}},
{record_field,38,{atom,38,ssrc}},
{record_field,39,
{atom,39,csrcs},
{nil,39}},
{record_field,40,
{atom,40,extension},
{atom,40,null}},
{record_field,41,
{atom,41,payload},
{bin,41,[]}}]}},
{attribute,43,record,
{extension,
[{record_field,43,{atom,43,type}},
{record_field,43,{atom,43,payload}}]}},
{attribute,48,record,
{dtmf,
[{record_field,48,{atom,48,event}},
{record_field,48,{atom,48,eof}},
{record_field,48,{atom,48,volume}},
{record_field,48,{atom,48,duration}}]}},
{attribute,52,record,
{tone,
[{record_field,52,{atom,52,modulation}},
{record_field,52,{atom,52,divider}},
{record_field,52,{atom,52,volume}},
{record_field,52,{atom,52,duration}},
{record_field,52,
{atom,52,frequencies},
{nil,52}}]}},
{attribute,39,file,{"src/codec.erl",39}},
{attribute,40,export,[{decode,2}]},
{attribute,41,export,[{encode,2}]},
{attribute,42,export,[{close,1}]},
{attribute,44,export,[{default_codecs,0}]},
{attribute,45,export,[{is_supported,1}]},
{attribute,47,export,[{start_link,1}]},
{attribute,48,export,[{init,1}]},
{attribute,49,export,[{handle_call,3}]},
{attribute,50,export,[{handle_cast,2}]},
{attribute,51,export,[{handle_info,2}]},
{attribute,52,export,[{code_change,3}]},
{attribute,53,export,[{terminate,2}]},
{attribute,61,record,
{state,
[{record_field,61,{atom,61,port}},
{record_field,61,{atom,61,type}},
{record_field,61,{atom,61,samplerate}},
{record_field,61,{atom,61,channels}},
{record_field,61,{atom,61,resolution}},
{record_field,61,
{atom,61,resampler}}]}},
{function,64,default_codecs,0,
[{clause,64,[],[],
[{cons,65,
{tuple,65,
[{atom,65,'PCMU'},
{integer,65,8000},
{integer,65,1}]},
{cons,65,
{tuple,65,
[{atom,65,'GSM'},
{integer,65,8000},
{integer,65,1}]},
{cons,65,
{tuple,65,
[{atom,65,'PCMA'},
{integer,65,8000},
{integer,65,1}]},
{cons,65,
{tuple,65,
[{atom,65,'G722'},
{integer,65,8000},
{integer,65,1}]},
{cons,65,
{tuple,65,
[{atom,65,'G729'},
{integer,65,8000},
{integer,65,1}]},
{nil,65}}}}}}]}]},
{function,67,is_supported,1,
[{clause,67,
[{tuple,67,
[{atom,67,'PCMU'},
{integer,67,8000},
{integer,67,1}]}],
[],
[{atom,67,true}]},
{clause,68,
[{tuple,68,
[{atom,68,'GSM'},
{integer,68,8000},
{integer,68,1}]}],
[],
[{atom,68,true}]},
{clause,69,
[{tuple,69,
[{atom,69,'DVI4'},
{integer,69,8000},
{integer,69,1}]}],
[],
[{atom,69,true}]},
{clause,70,
[{tuple,70,
[{atom,70,'DVI4'},
{integer,70,16000},
{integer,70,1}]}],
[],
[{atom,70,true}]},
{clause,71,
[{tuple,71,
[{atom,71,'PCMA'},
{integer,71,8000},
{integer,71,1}]}],
[],
[{atom,71,true}]},
{clause,72,
[{tuple,72,
[{atom,72,'G722'},
{integer,72,8000},
{integer,72,1}]}],
[],
[{atom,72,true}]},
{clause,73,
[{tuple,73,
[{atom,73,'G726'},
{integer,73,8000},
{integer,73,1}]}],
[],
[{atom,73,true}]},
{clause,74,
[{tuple,74,
[{atom,74,'G729'},
{integer,74,8000},
{integer,74,1}]}],
[],
[{atom,74,true}]},
{clause,75,
[{tuple,75,
[{atom,75,'LPC'},
{integer,75,8000},
{integer,75,1}]}],
[],
[{atom,75,true}]},
{clause,76,
[{tuple,76,
[{atom,76,'DVI4'},
{integer,76,11025},
{integer,76,1}]}],
[],
[{atom,76,true}]},
{clause,77,
[{tuple,77,
[{atom,77,'DVI4'},
{integer,77,22050},
{integer,77,1}]}],
[],
[{atom,77,true}]},
{clause,78,
[{tuple,78,
[{atom,78,'SPEEX'},
{integer,78,8000},
{integer,78,1}]}],
[],
[{atom,78,true}]},
{clause,79,
[{tuple,79,
[{atom,79,'SPEEX'},
{integer,79,16000},
{integer,79,1}]}],
[],
[{atom,79,true}]},
{clause,80,
[{tuple,80,
[{atom,80,'SPEEX'},
{integer,80,32000},
{integer,80,1}]}],
[],
[{atom,80,true}]},
{clause,81,
[{tuple,81,
[{atom,81,'ILBC'},
{integer,81,8000},
{integer,81,1}]}],
[],
[{atom,81,true}]},
{clause,82,
[{tuple,82,
[{atom,82,'OPUS'},
{integer,82,8000},
{integer,82,1}]}],
[],
[{atom,82,true}]},
{clause,83,
[{tuple,83,
[{atom,83,'OPUS'},
{integer,83,8000},
{integer,83,2}]}],
[],
[{atom,83,true}]},
{clause,84,
[{tuple,84,
[{atom,84,'OPUS'},
{integer,84,12000},
{integer,84,1}]}],
[],
[{atom,84,true}]},
{clause,85,
[{tuple,85,
[{atom,85,'OPUS'},
{integer,85,12000},
{integer,85,2}]}],
[],
[{atom,85,true}]},
{clause,86,
[{tuple,86,
[{atom,86,'OPUS'},
{integer,86,16000},
{integer,86,1}]}],
[],
[{atom,86,true}]},
{clause,87,
[{tuple,87,
[{atom,87,'OPUS'},
{integer,87,16000},
{integer,87,2}]}],
[],
[{atom,87,true}]},
{clause,88,
[{tuple,88,
[{atom,88,'OPUS'},
{integer,88,24000},
{integer,88,1}]}],
[],
[{atom,88,true}]},
{clause,89,
[{tuple,89,
[{atom,89,'OPUS'},
{integer,89,24000},
{integer,89,2}]}],
[],
[{atom,89,true}]},
{clause,90,
[{tuple,90,
[{atom,90,'OPUS'},
{integer,90,48000},
{integer,90,1}]}],
[],
[{atom,90,true}]},
{clause,91,
[{tuple,91,
[{atom,91,'OPUS'},
{integer,91,48000},
{integer,91,2}]}],
[],
[{atom,91,true}]},
{clause,92,
[{var,92,''}],
[],
[{atom,92,false}]}]},
{function,94,start_link,1,
[{clause,94,
[{var,94,'C'}],
[[{call,94,
{atom,94,is_integer},
[{var,94,'C'}]}]],
[{'case',95,
{call,95,
{atom,95,get},
[{var,95,'C'}]},
[{clause,96,
[{atom,96,undefined}],
[],
[{tuple,96,
[{atom,96,stop},
{atom,96,unsupported}]}]},
{clause,97,
[{match,97,
{tuple,97,
[{var,97,'Name'},
{var,97,'Clock'},
{var,97,'Channels'}]},
{var,97,'Desc'}}],
[],
[{call,97,
{atom,97,start_link},
[{var,97,'Desc'}]}]}]}]},
{clause,99,
[{var,99,'Args'}],
[],
[{'case',100,
{call,100,
{atom,100,is_supported},
[{var,100,'Args'}]},
[{clause,101,
[{atom,101,true}],
[],
[{call,101,
{remote,101,
{atom,101,gen_server},
{atom,101,start_link}},
[{atom,101,codec},
{var,101,'Args'},
{nil,101}]}]},
{clause,102,
[{atom,102,false}],
[],
[{tuple,102,
[{atom,102,stop},
{atom,102,unsupported}]}]}]}]}]},
{function,105,init,1,
[{clause,105,
[{tuple,105,
[{var,105,'Format'},
{var,105,'SampleRate'},
{var,105,'Channels'}]}],
[],
[{match,106,
{var,106,'DriverName'},
{'case',106,
{var,106,'Format'},
[{clause,107,
[{atom,107,'PCMU'}],
[],
[{atom,107,pcmu_codec_drv}]},
{clause,108,
[{atom,108,'GSM'}],
[],
[{atom,108,gsm_codec_drv}]},
{clause,109,
[{atom,109,'DVI4'}],
[],
[{atom,109,dvi4_codec_drv}]},
{clause,110,
[{atom,110,'PCMA'}],
[],
[{atom,110,pcma_codec_drv}]},
{clause,111,
[{atom,111,'G722'}],
[],
[{atom,111,g722_codec_drv}]},
{clause,112,
[{atom,112,'G726'}],
[],
[{atom,112,g726_codec_drv}]},
{clause,113,
[{atom,113,'G729'}],
[],
[{atom,113,g729_codec_drv}]},
{clause,114,
[{atom,114,'LPC'}],
[],
[{atom,114,lpc_codec_drv}]},
{clause,115,
[{atom,115,'SPEEX'}],
[],
[{atom,115,speex_codec_drv}]},
{clause,116,
[{atom,116,'ILBC'}],
[],
[{atom,116,ilbc_codec_drv}]},
{clause,117,
[{atom,117,'OPUS'}],
[],
[{atom,117,opus_codec_drv}]}]}},
{match,119,
{var,119,'Result'},
{call,119,
{atom,119,do},
[{lc,119,
{atom,119,error_m},
[{call,120,
{atom,120,load_library},
[{var,120,'DriverName'}]},
{call,121,
{atom,121,load_library},
[{atom,121,resampler_drv}]}]}]}},
{'case',123,
{var,123,'Result'},
[{clause,124,
[{atom,124,ok}],
[],
[{match,125,
{var,125,'Port'},
{call,125,
{atom,125,open_port},
[{tuple,125,
[{atom,125,spawn},
{var,125,'DriverName'}]},
{cons,125,
{atom,125,binary},
{nil,125}}]}},
{match,126,
{var,126,'PortResampler'},
{call,126,
{atom,126,open_port},
[{tuple,126,
[{atom,126,spawn},
{atom,126,resampler_drv}]},
{cons,126,
{atom,126,binary},
{nil,126}}]}},
{call,128,
{atom,128,port_control},
[{var,128,'Port'},
{integer,128,0},
{bin,128,
[{bin_element,128,
{var,128,'SampleRate'},
{integer,128,32},
[native,unsigned,integer]},
{bin_element,128,
{var,128,'Channels'},
{integer,128,32},
[native,unsigned,
integer]}]}]},
{tuple,129,
[{atom,129,ok},
{record,129,state,
[{record_field,129,
{atom,129,port},
{var,129,'Port'}},
{record_field,129,
{atom,129,type},
{var,129,'Format'}},
{record_field,129,
{atom,129,samplerate},
{var,129,'SampleRate'}},
{record_field,129,
{atom,129,channels},
{var,129,'Channels'}},
{record_field,129,
{atom,129,resolution},
{integer,129,16}},
{record_field,129,
{atom,129,resampler},
{var,129,
'PortResampler'}}]}]}]},
{clause,130,
[{tuple,130,
[{atom,130,error},
{var,130,'Error'}]}],
[],
[{tuple,131,
[{atom,131,stop},
{var,131,'Error'}]}]}]}]}]},
{function,135,handle_call,3,
[{clause,135,
[{tuple,136,
[{integer,136,1},
{tuple,136,
[{var,136,'Binary'},
{var,136,'SampleRate'},
{var,136,'Channels'},
{var,136,'Resolution'}]}]},
{var,137,'From'},
{match,138,
{record,138,state,
[{record_field,138,
{atom,138,port},
{var,138,'Port'}},
{record_field,138,
{atom,138,samplerate},
{var,138,'SampleRate'}},
{record_field,138,
{atom,138,channels},
{var,138,'Channels'}},
{record_field,138,
{atom,138,resolution},
{var,138,'Resolution'}}]},
{var,138,'State'}}],
[],
[{tuple,140,
[{atom,140,reply},
{call,140,
{atom,140,encode_binary},
[{var,140,'Port'},
{integer,140,1},
{var,140,'Binary'}]},
{var,140,'State'}]}]},
{clause,143,
[{tuple,144,
[{integer,144,1},
{tuple,144,
[{var,144,'Binary'},
{var,144,'SampleRate'},
{var,144,'Channels'},
{var,144,'Resolution'}]}]},
{var,145,'From'},
{match,146,
{record,146,state,
[{record_field,146,
{atom,146,port},
{var,146,'Port'}},
{record_field,146,
{atom,146,samplerate},
{var,146,'NativeSampleRate'}},
{record_field,146,
{atom,146,channels},
{var,146,'NativeChannels'}},
{record_field,146,
{atom,146,resolution},
{var,146,'NativeResolution'}},
{record_field,146,
{atom,146,resampler},
{var,146,'PortResampler'}}]},
{var,146,'State'}}],
[],
[{match,148,
{var,148,'Result'},
{call,148,
{atom,148,do},
[{lc,148,
{atom,148,error_m},
[{generate,149,
{var,149,'ResampledBinary'},
{call,149,
{atom,149,encode_binary},
[{var,149,'PortResampler'},
{op,149,'+',
{op,149,'+',
{op,149,'+',
{op,149,'',
{op,149,'div',
{var,149,'SampleRate'},
{integer,149,1000}},
{integer,149,16777216}},
{op,149,'',
{var,149,'Channels'},
{integer,149,65536}}},
{op,149,'_',
{op,149,'div',
{var,149,
'NativeSampleRate'},
{integer,149,1000}},
{integer,149,256}}},
{var,149,'NativeChannels'}},
{var,149,'Binary'}]}},
{call,150,
{atom,150,encode_binary},
[{var,150,'Port'},
{integer,150,1},
{var,150,
'ResampledBinary'}]}]}]}},
{tuple,152,
[{atom,152,reply},
{var,152,'Result'},
{var,152,'State'}]}]},
{clause,154,
[{tuple,155,
[{integer,155,2},{var,155,'Binary'}]},
{var,156,'From'},
{match,157,
{record,157,state,
[{record_field,157,
{atom,157,port},
{var,157,'Port'}},
{record_field,157,
{atom,157,type},
{atom,157,'G729'}},
{record_field,157,
{atom,157,samplerate},
{var,157,'SampleRate'}},
{record_field,157,
{atom,157,channels},
{var,157,'Channels'}},
{record_field,157,
{atom,157,resolution},
{var,157,'Resolution'}}]},
{var,157,'State'}}],
[],
[{match,160,
{var,160,'Size'},
{op,160,'*',
{integer,160,10},
{op,160,'div',
{call,160,
{atom,160,size},
[{var,160,'Binary'}]},
{integer,160,10}}}},
{match,161,
{bin,161,
[{bin_element,161,
{var,161,'RawBinary'},
{var,161,'Size'},
[binary]},
{bin_element,161,
{var,161,'ComfortNoise'},
default,
[binary]}]},
{var,161,'Binary'}},
{'case',163,
{call,163,
{atom,163,port_control},
[{var,163,'Port'},
{integer,163,2},
{var,163,'RawBinary'}]},
[{clause,164,
[{var,164,'NewBinary'}],
[[{call,164,
{atom,164,is_binary},
[{var,164,'NewBinary'}]}]],
[{tuple,165,
[{atom,165,reply},
{tuple,165,
[{atom,165,ok},
{tuple,165,
[{var,165,'NewBinary'},
{var,165,'SampleRate'},
{var,165,'Channels'},
{var,165,'Resolution'}]}]},
{var,165,'State'}]}]},
{clause,166,
[{var,166,''}],
[],
[{tuple,167,
[{atom,167,reply},
{tuple,167,
[{atom,167,error},
{atom,167,codec_error}]},
{var,167,'State'}]}]}]}]},
{clause,169,
[{tuple,170,
[{integer,170,2},{var,170,'Binary'}]},
{var,171,'From'},
{match,172,
{record,172,state,
[{record_field,172,
{atom,172,port},
{var,172,'Port'}},
{record_field,172,
{atom,172,type},
{var,172,'Format'}},
{record_field,172,
{atom,172,samplerate},
{var,172,'SampleRate'}},
{record_field,172,
{atom,172,channels},
{var,172,'Channels'}},
{record_field,172,
{atom,172,resolution},
{var,172,'Resolution'}}]},
{var,172,'State'}}],
[],
[{'case',174,
{call,174,
{atom,174,port_control},
[{var,174,'Port'},
{integer,174,2},
{var,174,'Binary'}]},
[{clause,175,
[{var,175,'NewBinary'}],
[[{call,175,
{atom,175,is_binary},
[{var,175,'NewBinary'}]}]],
[{tuple,176,
[{atom,176,reply},
{tuple,176,
[{atom,176,ok},
{tuple,176,
[{var,176,'NewBinary'},
{var,176,'SampleRate'},
{var,176,'Channels'},
{var,176,'Resolution'}]}]},
{var,176,'State'}]}]},
{clause,177,
[{var,177,''}],
[],
[{tuple,178,
[{atom,178,reply},
{tuple,178,
[{atom,178,error},
{atom,178,codec_error}]},
{var,178,'State'}]}]}]}]},
{clause,181,
[{var,181,'Other'},
{var,181,'From'},
{var,181,'State'}],
[],
[{tuple,182,
[{atom,182,noreply},
{var,182,'State'}]}]}]},
{function,184,handle_cast,2,
[{clause,184,
[{atom,184,stop},{var,184,'State'}],
[],
[{tuple,185,
[{atom,185,stop},
{atom,185,normal},
{var,185,'State'}]}]},
{clause,187,
[{var,187,'Request'},
{var,187,'State'}],
[],
[{tuple,188,
[{atom,188,noreply},
{var,188,'State'}]}]}]},
{function,190,handle_info,2,
[{clause,190,
[{tuple,190,
[{atom,190,'DOWN'},
{var,190,''},
{var,190,''},
{var,190,''},
{var,190,''}]},
{var,190,'State'}],
[],
[{tuple,191,
[{atom,191,stop},
{atom,191,normal},
{var,191,'State'}]}]},
{clause,193,
[{var,193,'_Info'},{var,193,'State'}],
[],
[{tuple,194,
[{atom,194,noreply},
{var,194,'State'}]}]}]},
{function,196,code_change,3,
[{clause,196,
[{var,196,'_OldVsn'},
{var,196,'State'},
{var,196,'_Extra'}],
[],
[{tuple,197,
[{atom,197,ok},
{var,197,'State'}]}]}]},
{function,199,terminate,2,
[{clause,199,
[{var,199,'Reason'},
{record,199,state,
[{record_field,199,
{atom,199,port},
{var,199,'Port'}},
{record_field,199,
{atom,199,resampler},
{var,199,'PortResampler'}}]}],
[],
[{'catch',200,
{call,200,
{atom,200,port_close},
[{var,200,'Port'}]}},
{'catch',201,
{call,201,
{atom,201,port_close},
[{var,201,'PortResampler'}]}},
{atom,202,ok}]}]},
{function,204,close,1,
[{clause,204,
[{var,204,'Codec'}],
[[{call,204,
{atom,204,is_pid},
[{var,204,'Codec'}]}]],
[{call,205,
{remote,205,
{atom,205,gen_server},
{atom,205,cast}},
[{var,205,'Codec'},
{atom,205,stop}]}]}]},
{function,207,decode,2,
[{clause,207,
[{var,207,'Codec'},{var,207,'Payload'}],
[[{call,207,
{atom,207,is_pid},
[{var,207,'Codec'}]},
{call,207,
{atom,207,is_binary},
[{var,207,'Payload'}]}]],
[{call,208,
{remote,208,
{atom,208,gen_server},
{atom,208,call}},
[{var,208,'Codec'},
{tuple,208,
[{integer,208,2},
{var,208,'Payload'}]}]}]}]},
{function,210,encode,2,
[{clause,210,
[{var,210,'Codec'},
{tuple,210,
[{var,210,'Payload'},
{var,210,'SampleRate'},
{var,210,'Channels'},
{var,210,'Resolution'}]}],
[[{call,210,
{atom,210,is_pid},
[{var,210,'Codec'}]},
{call,210,
{atom,210,is_binary},
[{var,210,'Payload'}]}]],
[{call,211,
{remote,211,
{atom,211,gen_server},
{atom,211,call}},
[{var,211,'Codec'},
{tuple,211,
[{integer,211,1},
{tuple,211,
[{var,211,'Payload'},
{var,211,'SampleRate'},
{var,211,'Channels'},
{var,211,'Resolution'}]}]}]}]}]},
{function,217,load_library,1,
[{clause,217,
[{var,217,'Name'}],
[],
[{'case',218,
{call,218,
{remote,218,
{atom,218,erl_ddll},
{atom,218,load_driver}},
[{call,218,{atom,218,get_priv},[]},
{var,218,'Name'}]},
[{clause,219,
[{atom,219,ok}],
[],
[{atom,219,ok}]},
{clause,220,
[{tuple,220,
[{atom,220,error},
{atom,220,already_loaded}]}],
[],
[{atom,220,ok}]},
{clause,221,
[{tuple,221,
[{atom,221,error},
{atom,221,permanent}]}],
[],
[{atom,221,ok}]},
{clause,222,
[{tuple,222,
[{atom,222,error},
{var,222,'Error'}]}],
[],
[{call,223,
{remote,223,
{atom,223,error_logger},
{atom,223,error_msg}},
[{string,223,
"Can't load ~p library: sn"},
{cons,223,
{var,223,'Name'},
{cons,223,
{call,223,
{remote,223,
{atom,223,erl_ddll},
{atom,223,format_error}},
[{var,223,'Error'}]},
{nil,223}}}]},
{tuple,224,
[{atom,224,error},
{var,224,'Error'}]}]}]}]}]},
{function,230,get_priv,0,
[{clause,230,[],[],
[{call,230,
{remote,230,
{atom,230,code},
{atom,230,lib_dir}},
[{atom,230,rtplib},
{atom,230,priv}]}]}]},
{function,233,encode_binary,3,
[{clause,233,
[{var,233,'Port'},
{var,233,'Cmd'},
{var,233,'BinIn'}],
[],
[{'case',234,
{call,234,
{atom,234,port_control},
[{var,234,'Port'},
{var,234,'Cmd'},
{var,234,'BinIn'}]},
[{clause,235,
[{var,235,'BinOut'}],
[[{call,235,
{atom,235,is_binary},
[{var,235,'BinOut'}]}]],
[{tuple,235,
[{atom,235,ok},
{var,235,'BinOut'}]}]},
{clause,236,
[{var,236,''}],
[],
[{tuple,236,
[{atom,236,error},
{atom,236,codec_error}]}]}]}]}]},
{eof,238}],
[{outdir,"ebin"},
debug_info,debug_info,
{d,'ERLSHA2'},
{i,"include"},
report_errors,report_warnings]]},
{compile,'-foldl_transform/2-anonymous-2-',2},
{compile,foldl_transform,2},
{compile,'-internal_comp/4-anonymous-1-',2},
{compile,fold_comp,3},
{compile,internal_comp,4},
{compile,internal,3}]}
make: *** [all] Error 1
Subj.
change "pkg-config --cflags ilbc" to "pkg-config --cflags libilbc" and likewise with --libs
See issue #13.
Subj.
Other BE linux systems are affected as well (MIPS / Tilera)
http://www.rfc-editor.org/rfc/rfc2198.txt
http://www.rfc-editor.org/rfc/rfc2833.txt
http://www.rfc-editor.org/rfc/rfc4733.txt
Two new payload types - 'tone' and 'red'
Hi,
What is required in order to use this lib as a real-time media server for WebRTC clients?
I'm thinking about something similar to Flash Media Server where a client can publish a stream and other clients can play it.
Do I need to implement the WebRTC handshake separately and use rtplib is a client or can the handshake be part of rtplib?
Maybe your other project erlrtpproxy is more suitable for this task?
Is it possible to send and receive audio/video packets from a Flash media server?
Thanks
Sangoma:
Dahdi:
Subj.
I've just found that timeout wasn't sent to the parent service.
RTP decoder must be able to detect and parse muxed RTCP packets (just check for the Payload value and pass the binary to the rtcp:decode(). The RTP/RTCP muxing was introduced as a draft (not so) recently:
http://tools.ietf.org/html/draft-ietf-avt-rtp-and-rtcp-mux-07
http://tools.ietf.org/html/rfc5761
This issue is a blocker for this one:
How to build a list of Payload types which can be used as the indication of the muxed RTCP:
1> lists:map(fun(X) -> <<_:1, Payload:7>> = <<X:8>>, {ok, Payload} end, [192, 193, 194, 195, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210]).
See issue #22.
The following RFC are not implemented:
http://tools.ietf.org/html/rfc5766 (TURN)
See these sources for the details:
http://anonsvn.wireshark.org/viewvc/trunk/epan/dissectors/packet-stun.c?revision=HEAD&view=markup
RHEL5 contains only speex-1.0.5.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.