JohnHoder / sipdroid

Automatically exported from code.google.com/p/sipdroid
GNU General Public License v3.0
1 stars 0 forks source link

Case sensitive problem for H.263 codec negotiation via sdp #586

Open GoogleCodeExporter opened 8 years ago

GoogleCodeExporter commented 8 years ago
Hi all experts,
I give you a problem that should be taken in charge:

The rtpmap string for an H.H.263+ video media handshake expect the string:

(1) a=rtpmap:[Dynamic Payload type] H263-1998/90000

Sipdroid uses instead:

(2) a=rtpmap:[Dynamic Payload type] h263-1998/90000

The h is low case.

It happends that some registrars take the Sipdroid sdp, recognize the H263-1998 
codec and change the row from (2) to (1). So the peer user agent
answer to the registrar with the correct (1) rtpmap description.

Sipdroid red the row (1) do not understand the codec type and do not start to 
decode the video packets.

Solution at this problem are two:
1- Change the h in the Sipdroid rtpmap from low to up case. (more standard)
2- Make sipdroid not case sensitive.

Best regards,
Alberto!

Original issue reported on code.google.com by MaramaoP...@gmail.com on 4 Aug 2010 at 12:19

GoogleCodeExporter commented 8 years ago
Hi,
anybody can tell me how sipdroid play the video rtp stream received? I searched 
all web site, all issues and i don't find any information about this field.

best Regards,
André Barbosa.

Original comment by afilipeb...@gmail.com on 2 Nov 2010 at 9:30

GoogleCodeExporter commented 8 years ago
..Have you had a look into the sipdroid code?
Mainly it should use the OpenCORE media framework.

Alberto!

Original comment by MaramaoP...@gmail.com on 2 Nov 2010 at 10:23

GoogleCodeExporter commented 8 years ago
Hi Alberto,
the OpenCORE media framework is used by Android Media Framework for RTSP, HTTP 
and play multimedia files. I think that you can't use the OpenCORE features in 
your application. The Android media framework don't have any method for playing 
RTP media.
Sipdroid use AudioTrack to play audio packates, but i can't find anything to 
play video packages in Android API.
I already search about video in sipdroid and all people told that SIPdroid use 
RTSP to playing the video stream!

Do you have more information about the video transmission on SipDroid?

by the way, you are portuguese?

Best Regards,
André Barbosa.

Original comment by afilipeb...@gmail.com on 2 Nov 2010 at 11:49

GoogleCodeExporter commented 8 years ago
Ok, a simple look at the sipdroid code shows that:
- To encode the video it use the Android MediaRecorder -> OpenCORE (hidden by 
the Android abstractions)
 http://www.google.com/codesearch?q=h263+package%3Ahttp%3A%2F%2Fsipdroid\.googlecode\.com&origq=h263&btnG=Search+Trunk
- To send/receive the video/audio Sipdroid has its own implementation of the 
RTP stream
 http://www.google.com/codesearch?q=RtpSocket+package%3Ahttp%3A%2F%2Fsipdroid\.googlecode\.com&hl=it

To clear the RTSP part: RTSP is a protocol used to manage the contents of a 
audio/video communication and thought for audio/video streaming. The stream 
itself is provided with the RTP protocol that carry a particular content 
encoded in a particular codec.
RTPS manage how many streams and what they have to carry, on what you finally 
can call Media content. (RTSP do a lot more than this.. look at Wikipedia)

In VoIP communications the protocol SIP do the signalling of the communication 
and uses the protocol SDP to define the contents of the media that will flow in 
the two directions.
So Sipdroid implements a user agent that manage SIP and SDP to do the codec 
handshaking and then send/receive RTP streams.

A bit darker? :)

and, hehe I am Italian.

Best Regards,
Alberto!

Original comment by MaramaoP...@gmail.com on 2 Nov 2010 at 1:28

GoogleCodeExporter commented 8 years ago
I know how RTSP and SIP work. The problem is that Android plataform have 
support for RTSP in OpenCORE framework. You can send the rtsp link by the 
Android API to the OpenCORE framework to play video stream. However, Android 
plataform don't support SIP natively, so you need implement this on application 
layer like SIPDroid.
When you implement the SIP protocol in application layer, after you established 
the session, the video stream is received through RTP. You need to get de media 
information from RTP package like SIPDroid do, and send this information to 
media player to play this. At this moment the Android API don't have methods 
for you send this information to the media player. So my question is "Ao 
SIPDroid play this information?"

you know how SIPDroid play the video stream information?

Original comment by afilipeb...@gmail.com on 2 Nov 2010 at 2:32