Reads the next frame for this Track
.
This method might block if the
data for a complete frame is not available. It might also block if the stream contains
intervening data for a different interleaved Track
.
Once the other Track
is read by a readFrame
call from a
different thread, this method can read the frame. If the intervening
Track
has been disabled, data for that Track
is read and discarded.
Note: This scenario is necessary only if a PullDataSource
Demultiplexer
implementation wants to avoid buffering data locally and
copying the data to the Buffer
passed in as a parameter.
Implementations might decide to buffer data and not
block (if possible) and incur data copy overhead.
If this method is called on a Track
that has been disabled,
it returns immediately with the DISCARD
flag set on.
Each track has a sequence number that is updated by the Demultiplexer
for each frame.
If downstream nodes receive non-contiguous sequence numbers
for a particular Track
, they know that a data overflow has
occurred for that Track
.