// SPDX-FileCopyrightText: 2023 The Pion community <https://pion.ly>
// SPDX-License-Identifier: MIT

package util

import 

// MediaPacketIterator supports iterating through a list of media packets protected by
// a specific Fec packet.
type MediaPacketIterator struct {
	mediaPackets   []rtp.Packet
	coveredIndices []uint32
	nextIndex      int
}

// NewMediaPacketIterator returns a new MediaPacketIterator.
func ( []rtp.Packet,  []uint32) *MediaPacketIterator {
	return &MediaPacketIterator{
		mediaPackets:   ,
		coveredIndices: ,
		nextIndex:      0,
	}
}

// Reset sets the starting iterating index back to 0.
func ( *MediaPacketIterator) () *MediaPacketIterator {
	.nextIndex = 0

	return 
}

// HasNext indicates whether or not there are more media packets
// that can be iterated through.
func ( *MediaPacketIterator) () bool {
	return .nextIndex < len(.coveredIndices)
}

// Next returns the next media packet to iterate through.
func ( *MediaPacketIterator) () *rtp.Packet {
	if .nextIndex == len(.coveredIndices) {
		return nil
	}
	 := .mediaPackets[.coveredIndices[.nextIndex]]
	.nextIndex++

	return &
}

// First returns the first media packet to iterate through.
func ( *MediaPacketIterator) () *rtp.Packet {
	if len(.coveredIndices) == 0 {
		return nil
	}

	return &.mediaPackets[.coveredIndices[0]]
}