public SparseSampleByteStream(
     Time <Sample> initialTime,
     BufferAllocator <byte> allocator,
     int sliverSize,
     int maxBufferedFrameCount = 0)
     : base(initialTime,
            new DenseFrameByteStream(allocator, sliverSize, maxBufferedFrameCount),
            maxBufferedFrameCount)
 {
 }
 public DenseFrameByteStream(
     BufferAllocator <byte> allocator,
     int sliverSize,
     Duration <Frame> maxBufferedDuration = default(Duration <Frame>),
     bool useContinuousLoopingMapper      = false)
     : base(0,
            allocator,
            sliverSize,
            SliceByteExtension.CopyToSlice,
            SliceByteExtension.CopyToIntPtr,
            SliceByteExtension.RawAccess,
            maxBufferedDuration,
            useContinuousLoopingMapper)
 {
 }
 public DenseSampleFloatStream(
     Time <Sample> initialTime,
     BufferAllocator <float> allocator,
     int sliverSize,
     Duration <Sample> maxBufferedDuration = default(Duration <Sample>),
     bool useContinuousLoopingMapper       = false)
     : base(initialTime,
            allocator,
            sliverSize,
            SliceFloatExtension.CopyToSlice,
            SliceFloatExtension.CopyToIntPtr,
            SliceFloatExtension.RawAccess,
            maxBufferedDuration,
            useContinuousLoopingMapper)
 {
 }
        public BufferedSliceStream(
            Time <TTime> initialTime,
            BufferAllocator <TValue> allocator,
            int sliverSize,
            Action <IntPtr, Slice <TTime, TValue> > copyIntPtrToSliceAction,
            Action <Slice <TTime, TValue>, IntPtr> copySliceToIntPtrAction,
            Action <Slice <TTime, TValue>, Action <IntPtr, int> > rawSliceAccessAction,
            Duration <TTime> maxBufferedDuration = default(Duration <TTime>),
            bool useContinuousLoopingMapper      = false)
            : base(initialTime, sliverSize)
        {
            _allocator = allocator;
            _copyIntPtrToSliceAction    = copyIntPtrToSliceAction;
            _copySliceToIntPtrAction    = copySliceToIntPtrAction;
            _rawSliceAccessAction       = rawSliceAccessAction;
            _maxBufferedDuration        = maxBufferedDuration;
            _useContinuousLoopingMapper = useContinuousLoopingMapper;

            // as long as we are appending, we use the identity mapping
            // TODO: support delay mapping
            _intervalMapper = new IdentityIntervalMapper <TTime, TValue>(this);
        }