docs.unity3d.com
    目次を表示する/隠す

    Class TimedDataBuffer<T>

    A circular buffer of data samples ordered by the FrameTime of each sample.

    Inheritance
    Object
    CircularBuffer<(T1, T2)<FrameTime, T>>
    TimedDataBuffer<T>
    Inherited Members
    CircularBuffer<(FrameTime frameTime, T value)>.Count
    CircularBuffer<(FrameTime frameTime, T value)>.Capacity
    CircularBuffer<(FrameTime frameTime, T value)>.ElementDiscarded
    CircularBuffer<(FrameTime frameTime, T value)>.Add((T1, T2)<FrameTime, T>)
    CircularBuffer<(FrameTime frameTime, T value)>.PushBack((T1, T2)<FrameTime, T>)
    CircularBuffer<(FrameTime frameTime, T value)>.PushFront((T1, T2)<FrameTime, T>)
    CircularBuffer<(FrameTime frameTime, T value)>.PushIndex(Int32, (T1, T2)<FrameTime, T>)
    CircularBuffer<(FrameTime frameTime, T value)>.PopFront()
    CircularBuffer<(FrameTime frameTime, T value)>.PopBack()
    CircularBuffer<(FrameTime frameTime, T value)>.PeekFront()
    CircularBuffer<(FrameTime frameTime, T value)>.PeekBack()
    CircularBuffer<(FrameTime frameTime, T value)>.PeekIndex(Int32)
    CircularBuffer<(FrameTime frameTime, T value)>.Clear()
    CircularBuffer<(FrameTime frameTime, T value)>.SetCapacity(Int32)
    CircularBuffer<(FrameTime frameTime, T value)>.Item[Int32]
    CircularBuffer<(FrameTime frameTime, T value)>.GetEnumerator()
    Namespace: Unity.LiveCapture
    Syntax
    public class TimedDataBuffer<T> : CircularBuffer<(FrameTime frameTime, T value)>, IReadOnlyList<(FrameTime frameTime, T value)>, IReadOnlyCollection<(FrameTime frameTime, T value)>, IEnumerable<(FrameTime frameTime, T value)>, IEnumerable
    Type Parameters
    Name Description
    T

    The datatype of the samples.

    Constructors

    TimedDataBuffer(FrameRate, Int32, Action<T>)

    Creates a new TimedDataBuffer<T> instance.

    Declaration
    public TimedDataBuffer(FrameRate frameRate, int capacity = 5, Action<T> sampleDiscard = null)
    Parameters
    Type Name Description
    FrameRate frameRate

    The frame rate of the samples.

    Int32 capacity

    The capacity of the buffer.

    Action<T> sampleDiscard

    A callback invoked for each sample that is discarded from the buffer. This may be used to dispose samples if needed.

    Exceptions
    Type Condition
    ArgumentException

    Thrown if frameRate is invalid.

    Properties

    Interpolator

    The interpolator used when TryGetSample(FrameTime, out T) is called for a time which lies between two samples.

    Declaration
    public IInterpolator<T> Interpolator { get; set; }
    Property Value
    Type Description
    IInterpolator<T>

    Methods

    Add(in T, Double)

    Adds a new sample to the buffer.

    Declaration
    public void Add(in T value, double time)
    Parameters
    Type Name Description
    T value

    The sample value.

    Double time

    The time of the sample in seconds.

    Remarks

    When the buffer is full, the oldest sample in the buffer is discarded. The sample is inserted into the buffer so that the samples are ordered by increasing time. If a sample with the specified time already exists in the buffer, its value is updated with the new value.

    Add(in T, in FrameTimeWithRate)

    Adds a new sample to the buffer.

    Declaration
    public void Add(in T value, in FrameTimeWithRate time)
    Parameters
    Type Name Description
    T value

    The sample value.

    FrameTimeWithRate time

    The time of the sample in frames.

    Remarks

    When the buffer is full, the oldest sample in the buffer is discarded. The sample is inserted into the buffer so that the samples are ordered by increasing time. If a sample with the specified time already exists in the buffer, its value is updated with the new value.

    GetFrameRate()

    Gets the frame rate of the buffered samples.

    Declaration
    public FrameRate GetFrameRate()
    Returns
    Type Description
    FrameRate

    The frame rate of the buffered samples.

    GetSamplesInRange(FrameTime, FrameTime)

    Retrieves the buffered samples that lie in a time range.

    Declaration
    public IEnumerable<(FrameTime time, T value)> GetSamplesInRange(FrameTime from, FrameTime to)
    Parameters
    Type Name Description
    FrameTime from

    The start time of the range, expressed relative to the FrameRate.

    FrameTime to

    The end time of the range, expressed relative to the FrameRate.

    Returns
    Type Description
    IEnumerable<(T1, T2)<FrameTime, T>>

    An iterator that returns all samples in the specified range.

    Remarks

    The range bounds are inclusive.

    SetFrameRate(FrameRate)

    Sets the frame rate of the buffered samples.

    Declaration
    public void SetFrameRate(FrameRate frameRate)
    Parameters
    Type Name Description
    FrameRate frameRate

    The new frame rate.

    Remarks

    This will remap the frame time of all samples in the buffer to match the new frame rate.

    Exceptions
    Type Condition
    ArgumentException

    Thrown if frameRate is invalid.

    TryGetBufferRange(out FrameTime, out FrameTime)

    Gets the frame time of the newest and oldest samples in the buffer.

    Declaration
    public bool TryGetBufferRange(out FrameTime oldestSample, out FrameTime newestSample)
    Parameters
    Type Name Description
    FrameTime oldestSample

    The frame time of the oldest sample in the buffer, or langword_csharp_default if there are no samples in the buffer.

    FrameTime newestSample

    The frame time of the newest sample in the buffer, or langword_csharp_default if there are no samples in the buffer.

    Returns
    Type Description
    Boolean

    true if there are any samples in the buffer; otherwise, false.

    TryGetSample(FrameTime, out T)

    Retrieves a sample from the buffer at the specified time.

    Declaration
    public TimedSampleStatus TryGetSample(FrameTime frame, out T sampleValue)
    Parameters
    Type Name Description
    FrameTime frame

    The time to retrieve the sample data for, expressed relative to the FrameRate.

    T sampleValue

    The retrieved sample, if successful.

    Returns
    Type Description
    TimedSampleStatus

    The status of the retrieved sample.

    Remarks

    If there isn't a sample at the specified time, the following occurs:

    a) if the time is bounded by the oldest and newest samples contained in the buffer, sampleValue is set to the nearest sample and returns Ok.
    b) if the time is outside of the buffer but there is at least one buffered sample, sampleValue is set to the newest or oldest buffered sample (whichever is closer) and returns Behind or Ahead respectively.
    c) otherwise, returns DataMissing and sets sampleValue to langword_csharp_default.

    See Also

    CircularBuffer<T>
    トップに戻る
    Copyright © 2023 Unity Technologies — 商標と利用規約
    • 法律関連
    • プライバシーポリシー
    • クッキー
    • 私の個人情報を販売または共有しない
    • Your Privacy Choices (Cookie Settings)