Keith Kyzivat wrote:

On Thu, Nov 13, 2008 at 7:50 PM, Paul Whitfield <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>> wrote:


    The DTMF packets were from the same SSRC with the same time stamps
    as the audio stream.

    For my application I have re-worked the code to not call
    MprDecode::pushPacket() for DTMF packets,
     this then caused a problem that the DTMF packets
    never got decoded, I fixed this and my application is working fine now.

    Now all seems to work OK.


Might you have a patch file you can send up so this can be reviewed and checked into the repository?

Indeed I would be happy to.

Before generating these patches I had applied the the recent change for coping with multiple SSRC on the same RTP stream.

Regards

Paul


181,193d180
< // SSRC change handling
< void MprDecode::setmIsStreamInitialized(UtlBoolean initialized)
< {
<    mIsStreamInitialized = initialized;
< }
< 
< //needed when SSRC changes
< void MprDecode::resetDejitter()
< {
<    setmIsStreamInitialized(FALSE);
<    mpMyDJ->reset();
< }
< 
229a217,218
> //      RTL_EVENT(str_fg+"_MprDecode_PF_stream_position", 
> mStreamState.playbackStreamPosition);
> 
355,358c343
< 
<             if ( tryDecodeAsSignalling(rtp) )
<             {
<                 return TRUE;
---
>          dprintf(" <%"PRIu32" n=%d", rtp->getRtpTimestamp(), 
> nextPacketAvailable);
359a345,347
>       else
>       {
>          dprintf(" <-");
376a363
>             dprintf("]\n");
380,381c367
< 
< 
---
>       dprintf("]");
431a416,420
>       // Step 3. Get signaling data from packet if any.
>       if (rtp.isValid())
>       {
>          tryDecodeAsSignalling(rtp);
>       }
432a422
>    dprintf("\n");
452,453c442
<    pCurDec->decode(rtp,0, NULL); 
<    uint8_t signal;
---
>    uint8_t event;
460c449
<       sigRes = pCurDec->getSignalingData(signal,
---
>       sigRes = pCurDec->getSignalingData(event,
469c458
<                              (MprnDTMFMsg::KeyCode)signal,
---
>                              (MprnDTMFMsg::KeyCode)event,
477c466
<                                     | (uint32_t)(signal) << 16
---
>                                     | (uint32_t)(event) << 16
486c475
<                              (MprnDTMFMsg::KeyCode)signal,
---
>                              (MprnDTMFMsg::KeyCode)event,
494c483
<                                     | (uint32_t)(signal) << 16
---
>                                     | (uint32_t)(event) << 16
141,143c141
<        if ( !rtpPacket.isValid() )
<            return OS_FAILED;
< 
---
>       assert(rtpPacket.isValid());
188,190c186
< 
<    if ( !decoder->getInfo()->isSignalingCodec() )
<    {
---
>    RTL_EVENT("MpJitterBuffer_loss_pattern", !rtpPacket.isValid());
225,231c221
<            else
<            {
<                assert(!"Decoder returned 0 samples for non-signaling packet!" 
);
<            }
<        }
<    }
<    else // Signalling Codec 
---
>       else if (decoder->getInfo()->isSignalingCodec())
238a229,235
>       else
>       {
>          // Something should be definitely wrong here.
>          // But, in release mode we could continue with PLC.
>          assert(!"Decoder returned 0 samples for non-signaling packet!");
>       }
>    }
246d242
<    
_______________________________________________
sipxtapi-dev mailing list
[email protected]
List Archive: http://list.sipfoundry.org/archive/sipxtapi-dev/

Reply via email to