Not sure if this made it through to the list so I'm resending.....

- Brad

-----------------------------------------------------------------
Ross,

I modifies MultiFramedRTPSource to add the ability to set and call a callback function to gain access to the RTP extended header. This works for my test scenario. If there is no RTP extended header (probably 90% of the time this is the case) then the added code has no effect on the the system.

I have attached a patch/diff of the changes I made. I hope you'll add them into the official tree....

Thanks for your help,
Brad

-----------------------------------------------------------------

diff -rupN --exclude=Makefile live/liveMedia/include/RTPSource.hh live. 2009.02.23/liveMedia/include/RTPSource.hh --- live/liveMedia/include/RTPSource.hh 2009-03-25 16:20:34.000000000 -0400 +++ live.2009.02.23/liveMedia/include/RTPSource.hh 2009-02-23 05:03:54.000000000 -0500
@@ -76,10 +76,6 @@ public:
   u_int16_t curPacketRTPSeqNum() const { return fCurPacketRTPSeqNum; }
u_int32_t curPacketRTPTimestamp() const { return fCurPacketRTPTimestamp; }

- // This is used to set a callback to retrieve the RTP Header Extension data - typedef void (*RtpExtHdrCallback_t)(uint16_t profile, uint16_t len, uint8_t* pHdrData, void* pPriv); - void setRtpExtHdrCallback( RtpExtHdrCallback_t callback, void* pPriv ) { fRtpExtHdrCallback = callback; fRtpExtHdrCallbackPrivData = pPriv;}
-
 protected:
   RTPSource(UsageEnvironment& env, Groupsock* RTPgs,
            unsigned char rtpPayloadFormat, u_int32_t rtpTimestampFrequency);
@@ -93,8 +89,6 @@ protected:
   Boolean fCurPacketMarkerBit;
   Boolean fCurPacketHasBeenSynchronizedUsingRTCP;
   u_int32_t fLastReceivedSSRC;
-  RtpExtHdrCallback_t fRtpExtHdrCallback;
-  void*               fRtpExtHdrCallbackPrivData;

 private:
   // redefined virtual functions:
diff -rupN --exclude=Makefile live/liveMedia/MultiFramedRTPSource.cpp live.2009.02.23/liveMedia/MultiFramedRTPSource.cpp --- live/liveMedia/MultiFramedRTPSource.cpp 2009-03-30 08:49:05.000000000 -0400 +++ live.2009.02.23/liveMedia/MultiFramedRTPSource.cpp 2009-02-23 05:03:54.000000000 -0500
@@ -71,8 +71,6 @@ MultiFramedRTPSource

   // Try to use a big receive buffer for RTP:
   increaseReceiveBufferTo(env, RTPgs->socketNum(), 50*1024);
-
-  fRtpExtHdrCallback = NULL;
 }

 void MultiFramedRTPSource::reset() {
@@ -248,16 +246,11 @@ void MultiFramedRTPSource::networkReadHa
     ADVANCE(cc*4);

     // Check for (& ignore) any RTP header extension
-    // If a callback is set we pass any header extension info to it
     if (rtpHdr&0x10000000) {
       if (bPacket->dataSize() < 4) break;
unsigned extHdr = ntohl(*(unsigned*)(bPacket->data())); ADVANCE(4);
       unsigned remExtSize = 4*(extHdr&0xFFFF);
       if (bPacket->dataSize() < remExtSize) break;
-      if( source->fRtpExtHdrCallback )
-      {
- source->fRtpExtHdrCallback(extHdr>>16, remExtSize, bPacket- >data(), source->fRtpExtHdrCallbackPrivData);
-      }
       ADVANCE(remExtSize);
     }



_______________________________________________
live-devel mailing list
live-devel@lists.live555.com
http://lists.live555.com/mailman/listinfo/live-devel

Reply via email to