A multiplexer selectively chooses packets for discarding during periods of
congestion. In a first embodiment, thresholds for fill levels of a FIFO
queue are set for a plurality of priority types. As thresholds are
exceeded, incoming packet below a set priority level will be prevented
from entering the queue and packets at the front of the queue below the
set priority will be discarded. In a second embodiment, packets within a
queue may be marked for deletion. A forward/discard list assigns an index
to a new packet and maintains a list of the stream associated with each
packet. A priority index list maintains a list of packets for each
priority type by index number. A video metadata buffer stores the
metadata for each enqueued packet. A physical video buffer stores the
packets. When an incoming packet cannot be enqueued, packets of lower
priority are detected by reference to the index list and marked for
discard.