Hello Jennifer,

The original Live555 implementation is rather old - I did not know it still 
works, there are some newer RTSP streamers. That first streamer (written by 
Ross himself) was made before the FPGA was providing the exact time stamp of 
each image. The FPGA is providing JPEG-compressed data in the circular buffer, 
aligning each new frame to 32 bytes and leaving additional gaps between frames, 
and the extra data after each frame includes 2 of the 32-bit words - seconds 
and microseconds of the time when the frame acquisition was started. You may 
find the code that extracts the timestamp here:
http://elphel.cvs.sourceforge.net/viewvc/elphel/elphel353-8.0/apps/astreamer/video.cpp?view=markup
 (line 254)

What is the overall software version in the camera that you are using?

Andrey


---- On Sat, 21 Nov 2015 10:17:04 -0800 Jennifer Valle 
<jvs1...@gmail.com> wrote ---- 

Hello,


My name is Jennifer Valle and I am doing the final degree project in UPC with 
some of its cameras, in particular,  NC353L Elphel cameras with the original 
code of Live555 about the RTSP protocol. I want to syncronized different 
cameras and I need its timestamps.
 In this code, there are a  testProgs_rtsp function with a struct timeval 
called PresentationTime  and I think that it's the same that timestamp of the 
server (cameras) when the RTCP is synchronized.
 I have a problem because when I execute the program, and RTCP is syncronized, 
I obtain negatives times and i don't understand why this occurs.


The part of the code that I want to modify is in DummySink::afterGettingFrame 
function.


void DummySink::afterGettingFrame(unsigned frameSize, unsigned 
numTruncatedBytes,struct timeval presentationTime, unsigned 
/*durationInMicroseconds*/) {
  // We've just received a frame of data.  (Optionally) print out information 
about it:
#ifdef DEBUG_PRINT_EACH_RECEIVED_FRAME
  if (fStreamId != NULL) envir() << "Stream \"" << fStreamId 
<< "\"; ";
  envir() << fSubsession.mediumName() << "/" << 
fSubsession.codecName() << ":\tReceived " << frameSize << " 
bytes";
  if (numTruncatedBytes > 0) envir() << " (with " << 
numTruncatedBytes << " bytes truncated)";
  char uSecsStr[6+1]; // used to output the 'microseconds' part of the 
presentation time
  sprintf(uSecsStr, "%06u", (unsigned)presentationTime.tv_usec);
  envir() << ".\tPresentation time: " << 
(int)presentationTime.tv_sec << "." << uSecsStr;
  if (fSubsession.rtpSource() != NULL && 
!fSubsession.rtpSource()->hasBeenSynchronizedUsingRTCP()) {
    envir() << "(not RTCP-synchronized!)"; // mark the debugging output 
to indicate that this presentation time is not RTCP-synchronized 
  }
#ifdef DEBUG_PRINT_NPT
  envir() << "\tNPT: " << 
fSubsession.getNormalPlayTime(presentationTime);
#endif
  envir() << "\n";#endif

And I obtain "incorrects" PresentationTimes:


Stream "rtsp://pa1"; video/JPEG: Received 97775 bytes. Presentation time: 
1448129165.229872(not RTCP-synchronized!) NPT: 0.000000
Stream "rtsp://pa1"; video/JPEG: Received 98174 bytes. Presentation time: 
1448129165.265949(not RTCP-synchronized!) NPT: 0.000000
Stream "rtsp://pa1"; video/JPEG: Received 98264 bytes. Presentation time: 
-760859674.598727 NPT: 0.000000
Stream "rtsp://pa1"; video/JPEG: Received 98233 bytes. Presentation time: 
-760859674.634804 NPT: 0.000000
Stream "rtsp://pa1"; video/JPEG: Received 98228 bytes. Presentation time: 
-760859674.670881 NPT: 0.000000
Stream "rtsp://pa1"; video/JPEG: Received 98644 bytes. Presentation time: 
-760859674.706947 NPT: 0.000000
Stream "rtsp://pa1"; video/JPEG: Received 98337 bytes. Presentation time: 
-760859674.743024 NPT: 0.000000
Stream "rtsp://pa1"; video/JPEG: Received 98147 bytes. Presentation time: 
-760859674.779101 NPT: 0.000000
Stream "rtsp://pa1"; video/JPEG: Received 97848 bytes. Presentation time: 
-760859674.815178 NPT: 0.000000 
How could you get the correct timestamp the server gives each frame? Is it the 
PresentationTime after RTCP is syncronized or is an another variable? If I have 
to use the PresentationTime, why do I get incorrect values? 





Kind regards.





Jennifer Valle

 _______________________________________________ 
Support-list mailing list 
Support-list@support.elphel.com 
http://support.elphel.com/mailman/listinfo/support-list_support.elphel.com 




_______________________________________________
Support-list mailing list
Support-list@support.elphel.com
http://support.elphel.com/mailman/listinfo/support-list_support.elphel.com

Reply via email to