Hi! I think subtitles in spudec.c should be maintained in start_pts order. E.g. when detecting timestamps and substreams in demux_mpg_open(), a subtitle from near the end of the input file can be read, which subsequently "blocks" the list -- the first packet is never taken in spudec_heartbeat(). Alternatively, demux_mpg_open() could at its end flush the queue with spudec_reset(), but I think the following is also very simple and preferable, because it is also tolerant against subtitles in the wrong order in a broken input file. Regards, Wolfram. diff -urb MPlayer-1.0pre7/spudec.c MPlayer-1.0pre7-wg/spudec.c --- MPlayer-1.0pre7/spudec.c Sat Jan 8 22:06:04 2005 +++ MPlayer-1.0pre7-wg/spudec.c Fri Sep 23 14:19:29 2005 @@ -95,11 +95,22 @@ static void spudec_queue_packet(spudec_handle_t *this, packet_t *packet) { - if (this->queue_head == NULL) + packet_t *last = 0, *p = this->queue_head; + while (p && p->start_pts<packet->start_pts) { + last = p; + p = p->next; + } + if (last) { + packet->next = last->next; + last->next = packet; + if (last == this->queue_tail) + this->queue_tail = packet; + } else { + packet->next = p; this->queue_head = packet; - else - this->queue_tail->next = packet; + if (!p) this->queue_tail = packet; + } } static packet_t *spudec_dequeue_packet(spudec_handle_t *this)