diff --git a/libavformat/mpeg.c b/libavformat/mpeg.c
index b2a98221cdfcc72a3ae23f1e0162e39584cc0875..d30fc53fc939d04185ad89e1e4db1f1cf54f29e2 100644
--- a/libavformat/mpeg.c
+++ b/libavformat/mpeg.c
@@ -1028,9 +1028,10 @@ static int remove_decoded_packets(AVFormatContext *ctx, int64_t scr){
     for(i=0; i<ctx->nb_streams; i++){
         AVStream *st = ctx->streams[i];
         StreamInfo *stream = st->priv_data;
-        PacketDesc *pkt_desc= stream->predecode_packet;
+        PacketDesc *pkt_desc;
 
-        while(pkt_desc && scr > pkt_desc->dts){ //FIXME > vs >=
+        while((pkt_desc= stream->predecode_packet)
+              && scr > pkt_desc->dts){ //FIXME > vs >=
             if(stream->buffer_index < pkt_desc->size ||
                stream->predecode_packet == stream->premux_packet){
                 av_log(ctx, AV_LOG_ERROR,