예제 #1
0
 internal void EnqueueBuffer(FileInfo target, VideoSlice buffer)
 {
     _starving = false;
     _queue.Enqueue(new PendingBuffer(target, buffer));
     Log.Trace("Enqueued buffer for " + target.Name + " - queue now contains " + _queue.Count + " buffers.");
     _msgAddEvent.Reset();
 }
예제 #2
0
 internal unsafe bool TryLoadBufferFromDisk(FileInfo target, VideoSlice buffer)
 {
     return(buffer.TryReset() &&
            UnbufferedFileTools.TryRead(
                target,
                (int)buffer.BufferSize,
                buffer.AsBytePtr
                ));
 }
예제 #3
0
 internal unsafe bool TryWriteBufferToDisk(FileInfo target, VideoSlice buffer)
 {
     Log.Trace("Attempting to write a frame buffer to '" + target.Name + "'");
     if (!UnbufferedFileTools.TryWrite(
             target,
             (int)buffer.BufferSize,
             buffer.AsBytePtr)
         )
     {
         Log.Error("UnbufferedFileTools.TryWrite(" + target.Name + ") failed.");
         return(false);
     }
     // Now that the buffer contents have been written to disk, clear the buffer frames for the
     // next set of contents.
     buffer.TryReset();
     buffer.Unlock();
     return(true);
 }
예제 #4
0
 public PendingBuffer(FileInfo target, VideoSlice buffer)
 {
     Target = target;
     Buffer = buffer;
 }
예제 #5
0
 internal static bool TryRead(FileInfo file, VideoSlice buffer)
 {
     return(TryRead(file, (int)buffer.BufferSize, buffer.AsBytePtr));
 }