Reputation: 1706
I have a Java based VoIP Softphone (jPhoneLite) that supports H.263+ and H.264. But currently the H.263 (RFC2190) is incomplete. According to the RFC the data must be split up at MB (macroblock?) boundaries but I have no idea how to find them. If you look at FFMPEG source /libavformat/rtpenc_h263_rfc2190.c in function ff_rtp_send_h263_rfc2190() you can see that the mb boundary info is passed to their packetizer from the encoder somehow. I use ffmpeg to encode my video into H263 data but I don't know if ffmpeg provides a function to obtain these MB pointers/offsets.
https://github.com/FFmpeg/FFmpeg/blob/master/libavformat/rtpenc_h263_rfc2190.c
http://jphonelite.sourceforge.net
Any help? Thanks.
Upvotes: 1
Views: 892
Reputation: 34
The H.26x bit stream is divided in layers, generally each layer starts with unique sequence of bits.
You can read about it in section: 3.2 GOB Numbering of rfc2190
After reviewing ffmpeg code, the search for the start code is done by: ff_h263_find_resync_marker_reverse() in rtpenc_h263.c .
Upvotes: 1
Reputation: 77910
I prefer open source Jitsi written in Java.
Other option is Linphone, open source as well with good mediastramer2 that supports h263/264 (msx264). You can find relevant code there
Upvotes: 0