hi all...
i m trying to create a sip application using the SDK documentation and the SIP Example that came along with the SDK.I am using Asterisk as the SIP Server. I am able to do the following:->
1. register the S60 Emulator at Asterisk server without using the SIP Profile.
2. send an invite from one peer to another via SIP Server. Both the peers are S60 Emulator
3. receive the invite at other end and send a 200 OK.
The important thing to note here is that at both ends i m using S60 Emulator as my SIP Phone.
Now if i use one peers as S60 Emulator and other Xlite SIP Phone , i cannot receive an invite from S60 Emulator to Xlite.
The error is: process_sdp: No compatible codecs
As far as i know , this is SDP codec problem..
I have created the SDP document as follows:-
Code:CSdpDocument* CSipRtpExSipEngine::SdpDocumentLC() { _LIT8( KSessionName, "SIP Example Application" ); // Create SDP document CSdpDocument* sdpDocument = CSdpDocument::NewL(); CleanupStack::PushL( sdpDocument ); CSdpOriginField* orgField = CSdpOriginField::NewL( "username, SessionId(), session_version, iLocalAddr ); sdpDocument->SetOriginField( orgField ); // Set session name sdpDocument->SetSessionNameL( KSessionName ); // Set connection data CSdpConnectionField* connField = CSdpConnectionField::NewL( iLocalAddr ); sdpDocument->SetConnectionField( connField ); return sdpDocument; }
the media fields are created as:-
Code:CSdpFmtAttributeField* rtpmapAttribute = NULL; _LIT8( KSdpOptionalEncodingParam, ""); TBuf8<10> payloadType; payloadType.AppendNum( KDefaultPayloadType ); TBuf8<10> samplingFreq; samplingFreq.AppendNum( KExampleSamplingFreq ); TBuf8<10> ptime; ptime.AppendNum( KDefaultPtime ); TBuf8<10> maxptime; maxptime.AppendNum( KDefaultMaxptime ); // Set media field // Set media type: audio RStringF media = StringPoolL().StringF( SdpCodecStringConstants::EMediaAudio, SdpCodecStringPool::StringTableL() ); // Set media transport: RTP/AVP RStringF prot = StringPoolL().StringF( SdpCodecStringConstants::EProtocolRtpAvp, SdpCodecStringPool::StringTableL() ); // Create the media line CSdpMediaField* mediaDescription = CSdpMediaField::NewL( media, iLocalMediaPort, prot, payloadType ); aDocument->MediaFields().Append( mediaDescription ); RStringF directionStr = StringPoolL().StringF( SdpCodecStringConstants::EAttributeSendrecv, SdpCodecStringPool::StringTableL() ); CSdpAttributeField* direction = CSdpAttributeField::NewLC( directionStr, KNullDesC8 ); mediaDescription->AttributeFields().AppendL( direction ); CleanupStack::Pop( direction ); RStringF rtpmapStr = StringPoolL().StringF( SdpCodecStringConstants::EAttributeRtpmap, SdpCodecStringPool::StringTableL() ); TSdpRtpmapValue rtpmapValue( KExampleCodecName(), samplingFreq, KSdpOptionalEncodingParam() ); HBufC8* rtpmapBuf = rtpmapValue.EncodeL(); CleanupStack::PushL( rtpmapBuf ); rtpmapAttribute = CSdpFmtAttributeField::NewL( rtpmapStr, payloadType, *rtpmapBuf ); CleanupStack::PopAndDestroy( rtpmapBuf ); CleanupStack::PushL( rtpmapAttribute ); mediaDescription->FormatAttributeFields().AppendL( rtpmapAttribute ); CleanupStack::Pop( rtpmapAttribute ); RStringF attributePtime = StringPoolL().StringF( SdpCodecStringConstants::EAttributePtime, SdpCodecStringPool::StringTableL() ); RStringF attributeMaxPtime = StringPoolL().StringF( SdpCodecStringConstants::EAttributeMaxptime, SdpCodecStringPool::StringTableL() ); CSdpAttributeField* ptimeLine = CSdpAttributeField::NewLC( attributePtime, ptime ); CSdpAttributeField* maxptimeLine = CSdpAttributeField::NewLC( attributeMaxPtime, maxptime ); mediaDescription->AttributeFields().AppendL( ptimeLine ); // this creates dependency between ptime and payload type ptimeLine->AssignTo( *rtpmapAttribute ); CleanupStack::Pop( maxptimeLine ); mediaDescription->AttributeFields().AppendL( maxptimeLine ); // this creates dependency between maxptime and payload type maxptimeLine->AssignTo( *rtpmapAttribute ); CleanupStack::Pop( ptimeLine ); }
in d above method:
KDefaultPayloadType = 102
KDefaultPtime = 40
KDefaultMaxptime = 80
KExampleSamplingFreq = 8000
_LIT8( KExampleCodecName, "G711" )
please help me on this.....
Thanx in advance......



