You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-15 14:13:16 +02:00
libavcodec/qsvenc.c: fix incorrect loop condition.
For example, the encoder may return MFX_WRN_INCOMPATIBLE_VIDEO_PARAM warning i.e. ret==5 old loop implementation will repeat several times until output buffer overflow. New implementation explicitly uses loop only for device busy case. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
committed by
Michael Niedermayer
parent
0054d5ac02
commit
b409748bc4
@@ -399,9 +399,12 @@ int ff_qsv_encode(AVCodecContext *avctx, QSVEncContext *q,
|
|||||||
|
|
||||||
do {
|
do {
|
||||||
ret = MFXVideoENCODE_EncodeFrameAsync(q->session, NULL, surf, &bs, &sync);
|
ret = MFXVideoENCODE_EncodeFrameAsync(q->session, NULL, surf, &bs, &sync);
|
||||||
if (ret == MFX_WRN_DEVICE_BUSY)
|
if (ret == MFX_WRN_DEVICE_BUSY) {
|
||||||
av_usleep(1);
|
av_usleep(1);
|
||||||
} while (ret > 0);
|
continue;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
} while ( 1 );
|
||||||
|
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return (ret == MFX_ERR_MORE_DATA) ? 0 : ff_qsv_error(ret);
|
return (ret == MFX_ERR_MORE_DATA) ? 0 : ff_qsv_error(ret);
|
||||||
|
Reference in New Issue
Block a user