]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/qsvdec.h
avcodec/dvdsub: fix partial packet assembly
[ffmpeg] / libavcodec / qsvdec.h
index c30627a4bd24d26b9ec762cfdf619dff512454db..2b989c259a115a4f0f040d999edfff5b93638459 100644 (file)
@@ -51,10 +51,21 @@ typedef struct QSVContext {
     AVFifoBuffer *async_fifo;
     AVFifoBuffer *input_fifo;
 
+    // we should to buffer input packets at some cases
+    // else it is not possible to handle dynamic stream changes correctly
+    // this fifo uses for input packets buffering
+    AVFifoBuffer *pkt_fifo;
+
     // this flag indicates that header parsed,
     // decoder instance created and ready to general decoding
     int engine_ready;
 
+    // we can not just re-init decoder if different sequence header arrived
+    // we should to deliver all buffered frames but we can not decode new packets
+    // this time. So when reinit_pending is non-zero we flushing decoder and
+    // accumulate new arrived packets into pkt_fifo
+    int reinit_pending;
+
     // options set by the caller
     int async_depth;
     int iopattern;
@@ -73,6 +84,8 @@ int ff_qsv_decode(AVCodecContext *s, QSVContext *q,
                   AVFrame *frame, int *got_frame,
                   AVPacket *avpkt);
 
+void ff_qsv_decode_reset(AVCodecContext *avctx, QSVContext *q);
+
 int ff_qsv_decode_close(QSVContext *q);
 
 #endif /* AVCODEC_QSVDEC_H */