<div dir="ltr"><br><br>2016-04-19 16:19 GMT-03:00 Ross Finlayson <<a href="mailto:finlayson@live555.com">finlayson@live555.com</a>>:<br>>> We have a video subsession, which works fine streaming H.264 video frames.<br>>> We added another subsession for audio, we return as you suggested our<br>>> own framed source subclass.<br>>><br>>> The interesting thing is if we NOT ADD the video subsession to the<br>>> ServerMediaSession, the audio hears perfectly well. However, if we add<br>>> the video subsession, as well as the audio subsession we started to<br>>> hear some glitches.<br>>> Any ideas?<br>><br>> Problems like this are usually caused by one of two possible things:<br>><br>> 1/ You are blocking (or ‘spin waiting’) in one or both of your “FramedSource” subclasses (implementing your audio and/or video device).  You should not do this!  Remember that LIVE555-based applications are event-based, using a single-threaded event loop for concurrency.  If no data is immediately available, you should not block (or ‘spin wait’), because that would prevent events (for the other medium) from getting handled.  Instead, you should immediately return (to the event loop).<br><br><font color="#0000ff">We think that we're not blocking both subclasses. In both cases we capture in one thread, encoding in other thread (this signaled to deliverFrame) and send the stream using live555 in another thread.</font><div><font color="#0000ff"><br></font></div><div><font color="#0000ff">We tried using mutex when to avoid consumer-producer problem (to passing information between threads) and we didn't get most improvement as well.</font></div><div><font color="#0000ff"><br></font></div><div><font color="#0000ff">The clear thing is when we add the video subsession this cause that the event loop process not only the audio frames, it processes the video frames too.</font></div><div><font color="#0000ff"><br></font></div><div><font color="#0000ff">I copy below two links of the test which I have done. Maybe you have a better idea of what kind of mistake we are doing.</font></div><div><font color="#0000ff"><br></font></div><div><font color="#0000ff"><div><a href="https://drive.google.com/file/d/0B0rFtoVWa4g0VWFNb3luYUhoMmM/view?usp=sharing">https://drive.google.com/file/d/0B0rFtoVWa4g0VWFNb3luYUhoMmM/view?usp=sharing</a></div><div><br></div><div><a href="https://drive.google.com/file/d/0B0rFtoVWa4g0MzZDLXFjUEZFdW8/view?usp=sharing">https://drive.google.com/file/d/0B0rFtoVWa4g0MzZDLXFjUEZFdW8/view?usp=sharing</a></div><div><br></div></font><div><font color="#0000ff"><br></font>> 2/ You are not setting “fPresentationTime” properly in your video or audio media - of both.  The “fPresentationTime” values for each medium should be in sync, and aligned with ‘wall clock’ time (i.e., the time that you’d get by calling “gettimeofday()”).<br><span style="color:rgb(0,0,255)"><br></span><div><span style="color:rgb(0,0,255)">We're doing exactly this in video and audio framed source subclasses</span><br><br></div><div>> Ross Finlayson<br>> Live Networks, Inc.<br>> <a href="http://www.live555.com/">http://www.live555.com/</a><br>><br>><br>> _______________________________________________<br>> live-devel mailing list<br>> <a href="mailto:live-devel@lists.live555.com">live-devel@lists.live555.com</a><br>> <a href="http://lists.live555.com/mailman/listinfo/live-devel">http://lists.live555.com/mailman/listinfo/live-devel</a><br><br></div></div></div></div>