Hi,
Check if these functions below were called.
if "SSRC id changes" - Then mediaLib should detect it (at least it used to
work).
I had an issue  when SSRC remained  the same while Seq and TimeStamp sudden
changed.


void MprRtpDispatcher::MpRtpStream::setSSRC(RtpSRC ssrc)
{
  // Reset decoder if this is not the first time setSSRC() is called.
  // Note, that we deliberately does not check whether SSRC really changed.
  // We trust caller to perform this check. Furthermore some broken
  // implementations does not change SSRC on a new stream start.
  if (mAddress != 0 && mpDecode != NULL)
  {
  mpDecode->reset();
  }

  setValue(ssrc);
}

/**************************************************/
UtlBoolean MprDecode::handleReset()
{
  OsLock lock(mLock);

  // Reset JB, JBE and dejitter
  mpJB->reset();
  mpJbEstimationState->reset();
  if (mpMyDJ != NULL)
  {
  mpMyDJ->reset();
  }

  mIsStreamInitialized = FALSE;
  mNumPrevCodecs = 0;

  return TRUE;
}
Paulo
On Fri, Jul 10, 2009 at 10:51 AM, Andrew Lavigne <[email protected]>wrote:

> Hi, Alexander
>
> Thanks for your reply.  Much appreciated. (and the other reply, too).
>
> Good to hear that the re-INVITE works for you.  I've done a little digging
> inside the code and it seems to me that something is getting confused in the
> dejitter buffer (class MprDejitter in sipXmediaLib).
>
> During the re-INVITE scenario, the media gateway switches over to a new RTP
> stream (it is sending me a PCMA RTP stream before the re-INVITE, then
> switches to a PCMU RTP stream afterwards.  The SIP exchange contains the
> proper SDP negotiation for the new codec type).
>
> In the trace fragment below, 47.129.106.75 is my little test client, and
> 47.135.211.232 is the media gateway that is hosting the audio conference.
>  You can see that the media gateway is sending PCMA RTP packets up until the
> time where it sends the SIP re-INVITE. My test client then replies with the
> appropriate SIP messages.  In the SDP data (which I've not included here)
> associated with these SIP messages, a new port and new codec is negotiated
> for the new RTP stream that will be sent by the media gateway after the
> re-INVITE.  Then, the media gateway starts sending packets along this new
> RTP stream.
>
> So, here's the interesting point:
>
> The packet stream going from my client to the media gateway changes it's
> codec from PCMA to PCMU, but the timestamp, sequence number maintain their
> incrementing sequence, and SSRC id remains unchanged.  However, for the
> packet stream coming back from my media gateway, the timestamp and sequence
> number are reset to new values, and the SSRC id changes.  This is the part
> that seems to trip up code in MprDejitter.   In the method pullPacket(),
> there's a check that compares an existing timestamp value with the timestamp
> value from a new packet.  This check causes the code that retrieves the
> packet to be bypassed, effectively causing the packet to be dropped.  All of
> the packets from the point of switchover on get dropped because of this (and
> this is probably why I don't hear anything after this point).
>
> So, the question is this:  is the media gateway doing something improper by
> switching to a new SSRC id, and resetting sequence id and timestamp?   Or is
> there something amiss with this bit of logic in pullPacket().  I'm not
> familiar enough with the standards to know this is valid behavior or not.
>
>
>
> No.     Time           Source                Destination           Protocol
> Info
>   3494 24.633243000   47.129.106.75         47.135.211.232        RTP
>  PT=ITU-T G.711 PCMA, SSRC=0x4A5425E6, Seq=618, Time=885647077
>   3495 24.651004000   47.135.211.232        47.129.106.75         RTP
>  PT=ITU-T G.711 PCMA, SSRC=0x95070000, Seq=2941, Time=3132451048
>   3496 24.653266000   47.129.106.75         47.135.211.232        RTP
>  PT=ITU-T G.711 PCMA, SSRC=0x4A5425E6, Seq=619, Time=885647237
>   3497 24.670539000   47.135.211.232        47.129.106.75         RTP
>  PT=ITU-T G.711 PCMA, SSRC=0x95070000, Seq=2942, Time=3132451208
>   3498 24.673185000   47.129.106.75         47.135.211.232        RTP
>  PT=ITU-T G.711 PCMA, SSRC=0x4A5425E6, Seq=620, Time=885647397
>   3500 24.691061000   47.135.211.232        47.129.106.75         SIP/SDP
>  Request: INVITE sip:[email protected]:6060, with session
> description
>   3501 24.693107000   47.129.106.75         47.135.211.232        RTP
>  PT=ITU-T G.711 PCMA, SSRC=0x4A5425E6, Seq=621, Time=885647557
>   3502 24.693878000   47.135.211.232        47.129.106.75         ICMP
> Destination unreachable (Port unreachable)
>   3503 24.695575000   47.129.106.75         47.135.211.232        SIP
>  Status: 100 Trying
>   3504 24.699837000   47.129.106.75         47.135.211.232        RTP
>  Unknown RTP version 0
>   3506 24.700186000   47.135.211.232        47.129.106.75         ICMP
> Destination unreachable (Port unreachable)
>   3508 24.707695000   47.129.106.75         47.135.211.232        SIP/SDP
>  Status: 200 OK, with session description
>   3509 24.713177000   47.129.106.75         47.135.211.232        RTP
>  PT=ITU-T G.711 PCMU, SSRC=0x4A5425E6, Seq=622, Time=885647717
>   3510 24.713955000   47.135.211.232        47.129.106.75         ICMP
> Destination unreachable (Port unreachable)
>   3511 24.719948000   47.135.211.232        47.129.106.75         SIP
>  Request: ACK sip:[email protected]:6060
>   3512 24.733115000   47.129.106.75         47.135.211.232        RTP
>  PT=ITU-T G.711 PCMU, SSRC=0x4A5425E6, Seq=623, Time=885647877
>   3521 24.753133000   47.129.106.75         47.135.211.232        RTP
>  PT=ITU-T G.711 PCMU, SSRC=0x4A5425E6, Seq=624, Time=885648037
>   3522 24.758177000   47.135.211.232        47.129.106.75         RTP
>  PT=ITU-T G.711 PCMU, SSRC=0xE8E, Seq=22427, Time=26582
>   3523 24.773143000   47.129.106.75         47.135.211.232        RTP
>  PT=ITU-T G.711 PCMU, SSRC=0x4A5425E6, Seq=625, Time=885648197
>   3524 24.778966000   47.135.211.232        47.129.106.75         RTP
>  PT=ITU-T G.711 PCMU, SSRC=0xE8E, Seq=22428, Time=26742
>   [... Etc etc ... ]
>
> ...Andrew
>
> -----Original Message-----
> From: [email protected] [mailto:[email protected]]
> On Behalf Of Alexander Chemeris
> Sent: Thursday, July 09, 2009 3:25 PM
> To: Lavigne, Andrew (CAR:PC00)
> Cc: [email protected]
> Subject: Re: [sipxtapi-dev] Input audio sometimes not connected properly
>
> Hi Andrew,
>
> We use sipXtapi a lot with our own Bridge (also sipXtapi-based), and it
> works perfectly with re-INVITE. So, no, this issue is not known.
> It would be helpful if you post here WireShark capture of the session with
> the note when audio is lost. Then we'll be able to see what's going.
>
> Also I'd recommend to add a simple audio logging to a file to
> MprDecode::doProcessFrame(). Just create a file, named after resource name
> (getName()) and write all audio data from 'outBufs[0]'
> right before "return TRUE". Then look into the file - what does it
> contains.
>
> On Thu, Jul 9, 2009 at 7:43 PM, Andrew Lavigne<[email protected]> wrote:
> > Hi, All
> >
> > I'm getting the sense that this list is not all that active.  Still, I
> > have a troublesome issue upon which I really really hope someone can
> > give me some insight.
> >
> > Using a simple little client with Sipxtapi, I'm setting up a SIP call
> > with an audio RTP stream to an audio conference bridge on a media
> gateway.
> > Mostly, everything gets set up ok:  The initial SIP Invite goes as
> > expected, the initial RTP stream for setting up the conference works
> perfectly fine.
> > Then, the media gateway sends my client a sip re-INVITE, along with a
> > new SDP for the new audio stream that will be used for the actual
> conference.
> > I'm looking at the SIP and RTP data in wireshark and everything gets
> > set up perfectly...
> >
> > EXCEPT that most of the time, the RTP stream that comes back from the
> > media gateway into sipxtapi seems to be improperly connected up.  I
> > see the proper RTP packets coming into sipxtapi, but I hear nothing in
> > my speakers.  Once in a blue moon, the issue does not manifest and I hear
> everything fine.
> > Then I'll run it again and - poof - no audio can be heard (even though
> > in wireshark I can clearly see it being sent from the media gateway
> > into my app).
> >
> > It seems like something is not quite right down in the medialib
> > somewhere - some sort of race condition or timing issue.  Sometimes it
> > works, sometimes it doesn't.    I'm poking around, placing debug lines
> > and breakpoints, trying to isolate the problem, but so far no luck.
> > My questions to any experts out there are:
> >
> > 1) is there any sort of known issue like this in sipxmedialib?  If so,
> > is there some easy workaround?
> > 2) any sort of hint as to where I'd look in order to verify if the RTP
> > packets are getting mixed in properly into the Flow Graph?  That would
> > be helpful, too.
> >
> > 3) any other ideas that I have not yet thought of.
> >
> > Please, please... if anyone knowledgeable is out there reading this,
> > could they please give me a few minutes of their time.  I would be
> > most appreciative.  This bug (I'm going to call it a bug until proven
> > otherwise) is really wasting a lot of my time.
> >
> > Many thanks x 100,
> > ...Andrew Lavigne
> >
> > _______________________________________________
> > sipxtapi-dev mailing list
> > [email protected]
> > List Archive: http://list.sipfoundry.org/archive/sipxtapi-dev/
> >
>
>
>
> --
> Regards,
> Alexander Chemeris.
>
> SIPez LLC.
> SIP VoIP, IM and Presence Consulting
> http://www.SIPez.com
> tel: +1 (617) 273-4000
> _______________________________________________
> sipxtapi-dev mailing list
> [email protected]
> List Archive: http://list.sipfoundry.org/archive/sipxtapi-dev/
>
_______________________________________________
sipxtapi-dev mailing list
[email protected]
List Archive: http://list.sipfoundry.org/archive/sipxtapi-dev/

Reply via email to