[vlc] Re: H263 over RTP

Jean-Paul Saman jean-paul.saman at planet.nl
Tue Mar 6 13:46:00 CET 2007


chris.2.dobbs at bt.com wrote:
> All,
> If anyone is interested I have managed to get VLC to playback file based
> H263 video remotely over RTP (as a non-encapsulated elementary stream).
> 
> I had trouble getting this to work as I couldn't figure out how to
> transpose the file based H263 records into RFC4629 RTP packets. I
> finally managed to reverse engineer to live555 code (which includes an
> H263 streamer module) and this is what u have to do:
> 
> Many thanks to Ross Finlayson BTW who prodded me in the right direction
> several times...
> 
> The following does not detail all the RTP field setups as they are not
> crucial to getting this to work, things like sequence number and time
> stamps are taken as read...
> 
> 1. Read 5 bytes first (from file based H263 data) , this gives you a
> starting frame of reference.
>     Create 1st RTP packet and set the M bit to 1
>     Create and add to RTP payload the 2 byte H263 header and set the P
> bit to 1 (zero rest out)
>    
>     copy the 5 byte record  into the RTP payload body (after the H263
> header).
>  
>     Send it 
> 
> 2. Read as much as u can from file without blowing your MTU , in my case
> this is 1500 so I chose 1436 (like the live555 code)
> 
>     Create new RTP packet + new 2 byte H263 header
>     Scan newly read in H263 record for occurance of end of frame marker
> - this is two consectutive bytes of zeros (00 00).
> 	
>     pseudo code follows:
> 
>      IF eof frame marker found:
>                This record contains an end of frame so set the RTP M bit
> to 1 and  set the H263 header P bit to 0, then copy to RTP payload
> (after H263 header) 
> 	    the record data  up to but NOT including the "0000". Store
> remainder in temp.
> 	    The next record read will therefore be a new start of frame.
> 
>     IF eof frame marker not found:
>                IF previous record read contained an end of frame marker
>                            prefix the this packet with any remainder
> stored in temp and set the P bit to 1 
>                            and the M bit to 0.          
>                            Need to make sure at this point that we don't
> blow the MTU.
>                ELSE
>                            Set RTP M bit to 0 and H263 P bit to 0 and
> copy whole record into RTP payload(after the H263 header).
>     Send it !
> 
> 3. Repeat 2 until EOF
> 
> 
> To get a remote vlc to read this stream, create an sdp file like this
> 
>  v=0
> o=- 7776 3 IN IP4 10.215.130.112
> s=Test H263 stream
> i=Parameters for the session streamed by "ChipsAhoyH263"
> t=0 0
> m=video 7776 RTP/AVP 98
> a=rtpmap:98 H263-1998/90000
> a=fmtp:98 profile=0; level=40
> b=TIAS:2048000 
> 
> 
> Where 7776 is the port you are streaming out to from above steps.
> Save as say c:\testH263.sdp
> 
> Start vlc like this:
> 
> Vlc -vvv file://c:\testH263.sdp
> 
> 
> Start the stream and u should see video.
> 
> I guess I should have figured all this out from the various RFC's but to
> actually implement was not exactly straightforward - no where could I
> find info on how to look for the end of frame marker ("0000") which is
> the key to the whole thing! 
> Hope this helps as it drove me nuts...
> -Chris
> 
Can you sent us a patch in unified diff format against current vlc-trunk?

Gtz,
Jean-Paul Saman.

-- 
This is the vlc mailing-list, see http://www.videolan.org/vlc/
To unsubscribe, please read http://www.videolan.org/support/lists.html



More information about the vlc mailing list