private FrameData DeepClone(IntPtr data, int size) { FrameData clone = new FrameData(); clone.Data = new IntPtr(MemoryHeap.Alloc(size)); MemoryHeap.CopyMemory(clone.Data.ToPointer(), data.ToPointer(), size); clone.DataSize = size; return clone; }
private FrameData DeepClone(FrameData frameData) { FrameData clone = DeepClone(frameData.Data, frameData.DataSize); clone.DTS = frameData.DTS; clone.PTS = frameData.PTS; return clone; }
private FrameData DeepClone(byte[] buffer) { FrameData clone = new FrameData(); clone.Data = new IntPtr(MemoryHeap.Alloc(buffer.Length)); Marshal.Copy(buffer, 0, clone.Data, buffer.Length); clone.DataSize = buffer.Length; return clone; }
public void AddFrame(FrameData frameData) { if (!m_initilaized) { throw new InvalidOperationException("The instance must be initialized first. Call Initialize method before adding frames"); } if (frameData.Data == IntPtr.Zero) { throw new ArgumentNullException("frameData.Data"); } if (frameData.DataSize == 0) { throw new ArgumentException("DataSize value must be greater than zero", "frameData.DataSize"); } if (frameData.PTS < 0) { throw new ArgumentException("Pts value must be greater than zero", "frameData.PTS"); } m_queue.Add(DeepClone(frameData)); }
public void AddFrame(int streamId, FrameData frame) { var clone = DeepClone(frame); _mStreamData[streamId].Queue.Add(clone); }
private FrameData DeepClone(FrameData frameData) { var clone = DeepClone(frameData.Data, frameData.DataSize); clone.Dts = frameData.Dts; clone.Pts = frameData.Pts; return clone; }