<html>
<head>
<style>
P
{
margin:0px;
padding:0px
}
body
{
FONT-SIZE: 10pt;
FONT-FAMILY:Tahoma
}
</style>
</head>
<body><P ><FONT class="" >I've</FONT> <FONT class="" >already</FONT> <FONT class="" >tryed</FONT> <FONT class="" >with</FONT> <FONT class="">vlc</FONT> to stream to <FONT class="">my</FONT> <FONT class="">eyebeam</FONT>. or <FONT class="">wengophone</FONT> (<A href="http://www.openwengo.fr" >www.openwengo.fr</A> <FONT class="">download</FONT> the <FONT class="">classical</FONT> one)</P>
<P >I <FONT class="" >basically</FONT> look <FONT class="" >with</FONT> <FONT class="" >ethereal</FONT> <FONT class="" >what's</FONT> the <FONT class="" >RTP</FONT> port in the <FONT class="" >SDP</FONT> and <FONT class="" >send</FONT> the stream and it works, It <FONT class="" >would</FONT> <FONT class="" >also</FONT> be possible <FONT class="" >with</FONT> <FONT class="" >vlc</FONT> to say that the audio channel has to be <FONT class="" >asterisk</FONT> and open a port <FONT class="" >with</FONT> <FONT class="" >asterisk</FONT> for <FONT class="" >listening</FONT> the <FONT class="" >RTP</FONT> for <FONT class="" >DTMF</FONT> ( <FONT class="" >trying</FONT> to <FONT class="" >get</FONT> the <FONT class="" >DTMF</FONT> <FONT class="" >from</FONT> the media stream is so <FONT class="" >old</FONT> that I <FONT class="" >doubt</FONT> that <FONT class="" >any</FONT> video <FONT class="" >SIP</FONT> phone <FONT class="" >still</FONT> uses that...)</P>
<P ><FONT class="" >Btw</FONT>, <FONT class="" >I've</FONT> made <FONT class="" >two</FONT> <FONT class="" >patched</FONT> for the <FONT class="" >SIP</FONT> and <FONT class="" >RTP</FONT> for <FONT class="" >asterisk</FONT> <FONT class="" >since</FONT> this one has a bug <FONT class="" >sending</FONT> <FONT class="" >it's</FONT> <FONT class="" >own</FONT> IP for the <FONT class="" >RTP</FONT> in the <FONT class="" >SDP</FONT> <FONT class="" >instead</FONT> of the IP <FONT class="" >it's</FONT> <FONT class="" >listening</FONT> to...</P>
<P > </P>
<P ><FONT class="" >Would</FONT> be cool to have a comment on it and <FONT class="" >eventually</FONT> to co...</P>
<P > </P>
<P ><BR >--- <FONT class=""><FONT class="">rtp</FONT>.c</FONT> 2006-05-24 15:14:42.000000000 +0200<BR >+++ <FONT class=""><FONT class="">rtp</FONT>_<FONT class="">patched</FONT>.c</FONT> 2006-05-24 15:28:50.000000000 +0200<BR >@@ -66,6 +66,15 @@<BR > <FONT class="">static</FONT> int <FONT class="">rtpend</FONT> = 0;<BR > <FONT class="">static</FONT> int <FONT class="">rtpdebug</FONT> = 0; /* Are <FONT class="">we</FONT> <FONT class="">debugging</FONT>? */<BR > <FONT class="">static</FONT> <FONT class="">struct</FONT> <FONT class="">sockaddr_in</FONT> <FONT class="">rtpdebugaddr</FONT>; /* <FONT class="">Debug</FONT> <FONT class="">packets</FONT> to/<FONT class="">from</FONT> this host */<BR >+<BR >+<BR >+/* *** <FONT class="">PATCHED</FONT> *** */<BR >+<FONT class="">static</FONT> <FONT class="">struct</FONT> <FONT class="">in_<FONT class="">addr</FONT></FONT> <FONT class=""><FONT class="">rtp</FONT>_bindaddr</FONT>;<BR >+/* ************** */<BR >+<BR >+<BR >+<BR >+<BR > #<FONT class="">ifdef</FONT> <FONT class="">SO_NO_CHECK</FONT><BR > <FONT class="">static</FONT> int <FONT class="">nochecksums</FONT> = 0;<BR > #<FONT class="">endif</FONT><BR >@@ -958,7 +967,11 @@<BR > for (;;) {<BR > /* Must be an <FONT class="">even</FONT> port <FONT class="">number</FONT> by <FONT class="">RTP</FONT> <FONT class="">spec</FONT> */<BR > <FONT class="">rtp</FONT>-><FONT class="">us.sin_port</FONT> = <FONT class="">htons</FONT>(x);<BR >- <FONT class="">rtp</FONT>-><FONT class="">us.sin_<FONT class="">addr</FONT></FONT> = <FONT class="">addr</FONT>;<BR >+<BR >+<BR >+ //<FONT class="">PATCHED</FONT> ->>> <FONT class="">rtp</FONT>-><FONT class="">us.sin_<FONT class="">addr</FONT></FONT> = <FONT class="">addr</FONT>;<BR >+ <FONT class="">rtp</FONT>-><FONT class="">us.sin_<FONT class="">addr</FONT></FONT> = (<FONT class=""><FONT class=""><FONT class="">rtp</FONT>_bindaddr</FONT>.s_<FONT class="">addr</FONT></FONT> != 0 ? <FONT class=""><FONT class="">rtp</FONT>_bindaddr</FONT> : <FONT class="">addr</FONT>);<BR >+<BR > /* If <FONT class="">there's</FONT> <FONT class="">rtcp</FONT>, <FONT class="">initialize</FONT> it as <FONT class="">well</FONT>. */<BR > if (<FONT class="">rtp</FONT>-><FONT class="">rtcp</FONT>)<BR > <FONT class="">rtp</FONT>-><FONT class="">rtcp</FONT>-><FONT class="">us.sin_port</FONT> = <FONT class="">htons</FONT>(x + 1);<BR >@@ -1825,6 +1838,12 @@<BR > <FONT class="">struct</FONT> <FONT class="">ast_config</FONT> *<FONT class="">cfg</FONT>;<BR > char *s;</P>
<P >+// <FONT class="" >PATCHED</FONT><BR >+ <FONT class="" >struct</FONT> <FONT class="" ><FONT class="">ast_<FONT class="" >hostent</FONT></FONT></FONT> <FONT class="" >ahp</FONT>;<BR >+ <FONT class="" >struct</FONT> <FONT class="" >hostent</FONT> *hp;<BR >+<BR >+<BR >+<BR > <FONT class="" >rtpstart</FONT> = 5000;<BR > <FONT class="" >rtpend</FONT> = 31000;<BR > <FONT class="" >dtmftimeout</FONT> = <FONT class="" >DEFAULT_DTMF_TIMEOUT</FONT>;<BR >@@ -1844,7 +1863,21 @@<BR > if (<FONT class="" >rtpend</FONT> > 65535)<BR > <FONT class="" >rtpend</FONT> = 65535;<BR > }<BR >- if ((s = <FONT class="" >ast_variable_retrieve</FONT>(<FONT class="" >cfg</FONT>, "general", "<FONT class="" >rtpchecksums</FONT>"))) {<BR >+<BR >+<BR >+ /* *** <FONT class="" >PATCHED</FONT> *** */<BR >+ if ((s = <FONT class="" >ast_variable_retrieve</FONT>(<FONT class="" >cfg</FONT>, "general", "<FONT class="" ><FONT class=""><FONT class="" >rtp</FONT>_bindaddr</FONT></FONT>"))) {<BR >+ if (!(hp = <FONT class="" >ast_gethostbyname</FONT>(s, &<FONT class="" >ahp</FONT>))) {<BR >+ <FONT class="" >ast_log</FONT>(<FONT class="" >LOG_WARNING</FONT>, "<FONT class="" >Invalid</FONT> <FONT class="" >address</FONT>: %s\n", s);<BR >+ } <FONT class="" >else</FONT> {<BR >+ <FONT class="" >memcpy</FONT>(&<FONT class="" ><FONT class=""><FONT class="" >rtp</FONT>_bindaddr</FONT></FONT>, hp-><FONT class="" ><FONT class="">h_<FONT class="" >addr</FONT></FONT></FONT>, <FONT class="" >sizeof</FONT>(<FONT class="" ><FONT class=""><FONT class="" >rtp</FONT>_bindaddr</FONT></FONT>));<BR >+ }<BR >+ }<BR >+ /* ************** */<BR >+<BR >+<BR >+<BR >+ if ((s = <FONT class="" >ast_variable_retrieve</FONT>(<FONT class="" >cfg</FONT>, "general", "<FONT class="" >rtpchecksums</FONT>"))) {<BR > #<FONT class="" >ifdef</FONT> <FONT class="" >SO_NO_CHECK</FONT><BR > if (<FONT class="">ast_false</FONT>(s))<BR > <FONT class="" >nochecksums</FONT> = 1;<BR ><BR ></P>
<P > </P>
<P > </P>
<P > </P>
<P > </P>
<P > </P>
<P >And for the <FONT class="">chan_sip.c</FONT></P>
<P > </P>
<P > </P>
<P > </P>
<P >--- <FONT class="">chan_sip.c</FONT> 2006-05-24 15:02:43.000000000 +0200<BR >+++ <FONT class="">chan_sip_<FONT class="">patched</FONT>.c</FONT> 2006-05-24 15:05:02.000000000 +0200<BR >@@ -4441,14 +4441,16 @@<BR > if (p-><FONT class="">redircodecs</FONT>)<BR > <FONT class="">capability</FONT> = p-><FONT class="">redircodecs</FONT>;<BR > } <FONT class="">else</FONT> {<BR >- <FONT class="">dest.sin_addr</FONT> = p-><FONT class="">ourip</FONT>;<BR >+ //<FONT class="">PATCHED</FONT> HERE ->>> <FONT class="">dest.sin_addr</FONT> = p-><FONT class="">ourip</FONT>;<BR >+ <FONT class="">dest.sin_addr</FONT> = <FONT class="">sin.sin_addr.s_addr</FONT> !=0 ? <FONT class="">sin.sin_addr:p</FONT>-><FONT class="">ourip</FONT>;<BR > <FONT class="">dest.sin_port</FONT> = <FONT class="">sin.sin_port</FONT>;<BR > }</P>
<P > /* Determine video destination */<BR > if (p-><FONT class="">vrtp</FONT>) {<BR > if (p-><FONT class=""><FONT class="">vredirip.sin_addr</FONT>.s_addr</FONT>) {<BR >- <FONT class="">vdest.sin_port</FONT> = p-><FONT class="">vredirip.sin_port</FONT>;<BR >+ //<FONT class="">PATCHED</FONT> HERE ->>> <FONT class="">vdest.sin_port</FONT> = p-><FONT class="">vredirip.sin_port</FONT>;<BR >+ <FONT class="">vdest.sin_addr</FONT> = <FONT class="">vsin.sin_addr.s_addr</FONT> != 0 ? <FONT class="">vsin.sin_addr:p</FONT>-><FONT class="">ourip</FONT>;<BR > <FONT class="">vdest.sin_addr</FONT> = p-><FONT class="">vredirip.sin_addr</FONT>;<BR > } <FONT class="">else</FONT> {<BR > <FONT class="">vdest.sin_addr</FONT> = p-><FONT class="">ourip</FONT>;<BR ></P>
<P > </P>
<P > </P>
<P > </P>
<P > </P>
<P > </P>
<P > </P>
<P>
<HR id=stopSpelling>
</P>
<P>> From: oej@edvina.net<BR>> Subject: Re: [Asterisk-video] app_mp4<BR>> Date: Wed, 24 May 2006 19:07:53 +0200<BR>> To: asterisk-video@lists.digium.com<BR>> <BR>> <BR>> 24 maj 2006 kl. 18.29 skrev Ramtin Amin:<BR>> <BR>> > Wouldn't it be possible to use VLC for transcoding the video ? <BR>> > Everything is already done actually, we could in the vlm just tell <BR>> > vlc to listen on a specific RTP port from where the h.263/h.264 <BR>> > stream comes, transcode it into whatever, and resend it.<BR>> ><BR>> > Is there any probleme using this method ?<BR>> Amin,<BR>> That's an idea I've also been discussing. If you have some time, <BR>> please dive into this and<BR>> find out if it's possible, what the licensing is and what kind of API <BR>> we could use for it.<BR>> <BR>> If we could have VLC on a separate machine doing transcoding, that <BR>> would propably<BR>> be a solution.<BR>> <BR>> Maybe a generic way to signal that we need RTP with transcoding <BR>> support to an<BR>> external device would be a way forward? We still need to be in the <BR>> audio path for<BR>> DTMF - so how would we handle RTCP synching in such a scenario?<BR>> <BR>> /O<BR>> _______________________________________________<BR>> --Bandwidth and Colocation provided by Easynews.com --<BR>> <BR>> asterisk-video mailing list<BR>> To UNSUBSCRIBE or update options visit:<BR>> http://lists.digium.com/mailman/listinfo/asterisk-video<BR></P><br /><hr />MSN Hotmail : <a href='http://www.imagine-msn.com/Hotmail/Post/GettingStarted/PrimaryAccount.aspx' target='_new'> 5 bonnes raisons de l'utiliser en e-mail principal</a></body>
</html>