internal static bool Deserialize(Stream raw, StreamCapabilities _streamCapabilities) { var reader = new N2HBinaryReader(raw); //var length = raw.GetAvaliableByteCounts(); //if (length < 28) //{ // Logger.FATAL("Not enough data"); // return false; //} var ver = reader.ReadUInt64(); if (ver != Utils.__STREAM_CAPABILITIES_VERSION) { Logger.FATAL("Invalid stream capabilities version. Wanted: {0}; Got: {1}", Utils.__STREAM_CAPABILITIES_VERSION, ver); return(false); } _streamCapabilities.Clear(); _streamCapabilities.VideoCodecId = (VideoCodec)reader.ReadByte(); _streamCapabilities.AudioCodecId = (AudioCodec)reader.ReadByte(); _streamCapabilities.BandwidthHint = reader.ReadUInt32(); if (_streamCapabilities.VideoCodecId == VideoCodec.H264 && !VideoAvc.Deserialize(raw, out _streamCapabilities.Avc)) { Logger.FATAL("Unable to deserialize avc"); return(false); } if (_streamCapabilities.AudioCodecId == AudioCodec.Aac && !AudioAac.Deserialize(raw, out _streamCapabilities.Aac)) { Logger.FATAL("Unable to deserialize aac"); return(false); } return(true); }
internal static bool Deserialize(Stream raw, StreamCapabilities _streamCapabilities) { var reader = new N2HBinaryReader(raw); //var length = raw.GetAvaliableByteCounts(); //if (length < 28) //{ // Logger.FATAL("Not enough data"); // return false; //} var ver = reader.ReadUInt64(); if (ver != Utils.__STREAM_CAPABILITIES_VERSION) { Logger.FATAL("Invalid stream capabilities version. Wanted: {0}; Got: {1}", Utils.__STREAM_CAPABILITIES_VERSION, ver); return false; } _streamCapabilities.Clear(); _streamCapabilities.VideoCodecId = (VideoCodec)reader.ReadByte(); _streamCapabilities.AudioCodecId = (AudioCodec)reader.ReadByte(); _streamCapabilities.BandwidthHint = reader.ReadUInt32(); if (_streamCapabilities.VideoCodecId == VideoCodec.H264 && !VideoAvc.Deserialize(raw, out _streamCapabilities.Avc)) { Logger.FATAL("Unable to deserialize avc"); return false; } if (_streamCapabilities.AudioCodecId == AudioCodec.Aac && !AudioAac.Deserialize(raw, out _streamCapabilities.Aac)) { Logger.FATAL("Unable to deserialize aac"); return false; } return true; }