public override DemuxPacketWrapper Read()
{
lock (_syncObj)
{
IntPtr demuxPacketPtr = Functions.DemuxRead();
// If there is no more data, DemuxRead returns 0
if (demuxPacketPtr == IntPtr.Zero)
return new DemuxPacketWrapper(); // EOS indicator
DemuxPacket demuxPacket = Marshal.PtrToStructure<DemuxPacket>(demuxPacketPtr);
if (demuxPacket.StreamId == Constants.DMX_SPECIALID_STREAMCHANGE || demuxPacket.StreamId == Constants.DMX_SPECIALID_STREAMINFO)
{
UpdateStreams();
}
return new DemuxPacketWrapper(demuxPacket, demuxPacketPtr);
}
}
}