Re: Reminder: Issue 11

Greg Wright <[email protected]>
Newsgroups gmane.comp.multimedia.helix.devel
Message-ID <[email protected]>
Mahmoud Hammoud wrote:
> Hi All,
> 
> I posted some questions related to packet reception by the client sockets,
> Jyotsana preferred that someone else take a shot at those. Your
> contributions are DEARLY APPRECIATED.
> 
> 1) How many levels of buffering is there in the client? That is, we know
> that the packets first received by the network interface (whether UDP or
> TCP) are first accumulated within calls to HandleRead( ) in a structure of
> type HXSocketData; then, "read" events issued by the client core result in
> the packets being read from this initial buffer within calls to
> ReadFrom(...,...) (is this accurate? What is the basis for issuing such
> events?) What happens next? I mean arent the streams contained in the media
> clip then buffered in different places, for the "just-in-time" delivery to
> take place?

Just some brief comments...

After the core (hxcleng.cpp) reads the packets(events) from the network layer (jitter
buffer it is sometimes called) the packets are then sent to each renderer
in some amount of time before they are needed. This amount of time is roughly
the pre-roll of the clip. The renderers then take the packets and de-packetize
them into input frames for the decoders, which output decoded frames.


Basically, the core *pulls* packets from the network side of the media
framework and *pushes* them on the other side (renderers) in a just-in-time
fashion.

I assume you have read: https://client.helixcommunity.org/2006/devdocs/buffering


> 
> 2) I'm finding this a little confusing: on one hand, the UDP sockets for the
> different streams involved in a media session are created with
> RTSPClientProtocol::InitSockets( ) (which in turn also calls
> CreateUDPSockets(..)) and on the other hand the actual reading/reception of
> the packets from the network interface seems to take place in
> HXThreadedSocket where the code looks relatively "low-level". Could you
> please give me some hints on how these 2 different modules relate to one
> another? Just a small summary about how the packets are received and
> the "event-driven" playout that then takes place would do..

Does the above help with how packets are received?

Again, the engine read packets from the network layer. In the network
layer we are pulling packets off of the sockets. At that layer we are
also asking for re-sends of lost, late or out-of-order packets. The
Engine pulls packets out of the network layer as needed and pushed them
into the renderers ahead of the presentation time.

--greg.


> 
> Best Regards,
> 
> Mahmoud

_______________________________________________
Helix-client-dev mailing list
[email protected]
http://lists.helixcommunity.org/mailman/listinfo/helix-client-dev
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.