/// <summary> /// Default constructor /// </summary> /// <param name="msd"></param> public H264Parser(SampleBuffer outputBuffer, IContainerMetadata metadata, HLSStream hlsStream) : base(outputBuffer, hlsStream) { string[] resolution = null; string s; if (metadata.Attributes != null && metadata.Attributes.TryGetValue(HLSPlaylistMetaKeys.Resolution, out s)) { string[] components = s.Split(new char[] { 'x' }); if (components != null && components.Length == 2) resolution = components; } if (resolution == null) { HLSTrace.WriteLine("Missing 'Resolution' tag in HLS MetaKeys, defaulting to the maximum supported resolution of 1280x720."); resolution = new string[] { "1280", "720" }; } Dictionary<MediaStreamAttributeKeys, string> streamAttributes = new Dictionary<MediaStreamAttributeKeys, string>(); streamAttributes[MediaStreamAttributeKeys.VideoFourCC] = "H264"; streamAttributes[MediaStreamAttributeKeys.Width] = resolution[0]; streamAttributes[MediaStreamAttributeKeys.Height] = resolution[1]; Description = new MediaStreamDescription(MediaStreamType.Video, streamAttributes); }
/// <summary> /// Constructor for pass-through reading without decrypting /// </summary> /// <param name="stream"></param> public EncryptedStream(Stream stream, DateTime RequestStartTime, HttpWebResponse response, bool discontinuity, HLSStream hlsStream) { _stream = stream; _response = response; _discontinuity = discontinuity; _hlsStream = hlsStream; _requestStartTime = RequestStartTime; }
/// <summary> /// Default constructor /// </summary> /// <param name="msd"></param> public ADTSParser(SampleBuffer outputBuffer, HLSStream hlsStream) : base(outputBuffer, hlsStream) { _bitstream = new BitstreamReader(); }
/// <summary> /// Default constructor /// </summary> /// <param name="stream"></param> /// <param name="decryptor"></param> /// <param name="bufferSize"></param> public EncryptedStream(Stream stream, DateTime RequestStartTime, HttpWebResponse response, bool discontinuity, ICryptoTransform decryptor, int bufferSize, HLSStream hlsStream) { _stream = stream; _response = response; _discontinuity = discontinuity; _decryptor = decryptor; _hlsStream = hlsStream; _requestStartTime = RequestStartTime; if (decryptor != null) { bufferSize = (bufferSize/_decryptor.InputBlockSize + 2) * _decryptor.InputBlockSize; _decryptBuffer = new byte[bufferSize]; _swapBuffer = new byte[bufferSize]; } }
/// <summary> /// Default constructor. /// </summary> /// <param name="msd"></param> public MediaFormatParser(SampleBuffer outputBuffer, HLSStream hlsStream) { _outputBuffer = outputBuffer; _byteBuffer = new byte[InitialBufferSize]; _hlsStream = hlsStream; }
public Sample AllocSample(long timestamp, long duration, uint bitrate, HLSStream hlsStream, int dataSize) { lock (this) { if (0 == _sampleWrapperPool.Count) { Sample sample = new Sample(timestamp, duration, bitrate, hlsStream, dataSize, _msd, this); return sample; } else { Sample sample = _sampleWrapperPool.Dequeue(); sample.Reset(timestamp, duration, bitrate, hlsStream, dataSize, _msd, this); return sample; } } }
public void Reset(long timestamp, long duration, uint bitrate, HLSStream hlsStream, int dataSize, MediaStreamDescription msd, SampleBuffer buffer) { _timestamp = timestamp; _duration = duration; _bitrate = bitrate; _hlsStream = hlsStream; _msd = msd; _isKeyFrame = false; _adjustedTimeStamp = 0; if (dataSize != -1 && null != buffer) { _dataItem = buffer.FIFOMemoryPool.Alloc(dataSize); } else { _dataItem = null; } _sampleBuffer = buffer; }
/// <summary> /// Default constructor /// </summary> /// <param name="timestamp"></param> /// <param name="timestamp">Sample timestamp in HNS units</param> /// <param name="duration">Sample duartion in HNS units</param> /// <param name="bitrate">Bitrate of the stream that this sample was created from</param> public Sample(long timestamp, long duration, uint bitrate, HLSStream hlsStream, int dataSize, MediaStreamDescription msd, SampleBuffer buffer) { if (null == _keyFrameAttr) { _keyFrameAttr = new Dictionary<MediaSampleAttributeKeys,string>(); _keyFrameAttr[MediaSampleAttributeKeys.KeyFrameFlag] = Boolean.TrueString; } if (null == _nonKeyFrameAttr) { _nonKeyFrameAttr = new Dictionary<MediaSampleAttributeKeys,string>(); _nonKeyFrameAttr[MediaSampleAttributeKeys.KeyFrameFlag] = Boolean.FalseString; } Reset(timestamp, duration, bitrate, hlsStream, dataSize, msd, buffer); }