private static PacketComparer CreateComparer(PacketQueueComparison comparison)
        {
            switch (comparison)
            {
            case PacketQueueComparison.FirstDtsThenPts:
                return(PacketComparer.FirstDtsThenPts);

            case PacketQueueComparison.FirstPtsThenDts:
                return(PacketComparer.FirstPtsThenDts);

            default:
                throw new ArgumentOutOfRangeException(nameof(comparison), comparison, null);
            }
        }
 /// <summary>
 /// Creates a new <see cref="PacketQueue"/> instance using the specified comparing method and initial capacity.
 /// </summary>
 /// <param name="comparison">Comparing method.</param>
 /// <param name="capacity">Initial capacity.</param>
 internal PacketQueue(PacketQueueComparison comparison, int capacity)
 {
     Comparison = comparison;
     _list      = new List <AVPacket>(capacity);
 }
 /// <summary>
 /// Creates a new <see cref="PacketQueue"/> instance using specified comparing method and default initial capacity.
 /// </summary>
 /// <param name="comparison">Comparing method.</param>
 internal PacketQueue(PacketQueueComparison comparison)
 {
     Comparison = comparison;
     _list      = new List <AVPacket>();
 }
 /// <summary>
 /// Creates a new <see cref="PacketQueue"/> instance using the specified comparing method and initial capacity.
 /// </summary>
 /// <param name="comparison">Comparing method.</param>
 /// <param name="capacity">Initial capacity. Not used.</param>
 internal PacketQueue(PacketQueueComparison comparison, int capacity)
 {
     Comparison = comparison;
     _list      = new LinkedList <Packet>();
     _comparer  = CreateComparer(comparison);
 }