mirror of https://git.ffmpeg.org/ffmpeg.git
Merge commit 'd1cd20e4e33f8139e150034b3c457302312d81bd'
* commit 'd1cd20e4e33f8139e150034b3c457302312d81bd': qsvenc: split encoding frames and reading from the async FIFO Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
This commit is contained in:
commit
ed9cff9edf
|
@ -907,8 +907,8 @@ static void print_interlace_msg(AVCodecContext *avctx, QSVEncContext *q)
|
|||
}
|
||||
}
|
||||
|
||||
int ff_qsv_encode(AVCodecContext *avctx, QSVEncContext *q,
|
||||
AVPacket *pkt, const AVFrame *frame, int *got_packet)
|
||||
static int encode_frame(AVCodecContext *avctx, QSVEncContext *q,
|
||||
const AVFrame *frame)
|
||||
{
|
||||
AVPacket new_pkt = { 0 };
|
||||
mfxBitstream *bs;
|
||||
|
@ -983,8 +983,24 @@ int ff_qsv_encode(AVCodecContext *avctx, QSVEncContext *q,
|
|||
av_freep(&bs);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int ff_qsv_encode(AVCodecContext *avctx, QSVEncContext *q,
|
||||
AVPacket *pkt, const AVFrame *frame, int *got_packet)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = encode_frame(avctx, q, frame);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
if (!av_fifo_space(q->async_fifo) ||
|
||||
(!frame && av_fifo_size(q->async_fifo))) {
|
||||
AVPacket new_pkt;
|
||||
mfxBitstream *bs;
|
||||
mfxSyncPoint sync;
|
||||
|
||||
av_fifo_generic_read(q->async_fifo, &new_pkt, sizeof(new_pkt), NULL);
|
||||
av_fifo_generic_read(q->async_fifo, &sync, sizeof(sync), NULL);
|
||||
av_fifo_generic_read(q->async_fifo, &bs, sizeof(bs), NULL);
|
||||
|
|
Loading…
Reference in New Issue