mirror of
https://github.com/moonlight-stream/moonlight-qt.git
synced 2026-05-18 23:50:16 +00:00
Don't manually override v4l2m2m buffer counts
This causes POLLERR when decoding from meson-vdec on the Libre Computer Alta (and likely other Amlogic boards). Our requried buffer counts were already lower than the default 16/20 configuration that FFmpeg uses, so overriding them was just a memory usage optimization.
This commit is contained in:
@@ -564,23 +564,6 @@ bool FFmpegVideoDecoder::completeInitialization(const AVCodec* decoder, enum AVP
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// The V4L2M2M decoders are one of the rare non-hwaccel decoders that allocates
|
|
||||||
// hardware frames under the hood. We need to adjust the number of buffers it
|
|
||||||
// allocates to ensure it allocates enough for our use case, but not too many.
|
|
||||||
// Normal hwaccel decoders will examine the codec/bitstream and the value we
|
|
||||||
// set in extra_hw_frames to determine how many buffers are required.
|
|
||||||
if (QString::fromUtf8(decoder->name).endsWith("_v4l2m2m", Qt::CaseInsensitive)) {
|
|
||||||
// 2 buffers for incoming compressed video data
|
|
||||||
av_dict_set_int(&options, "num_output_buffers", 2, 0);
|
|
||||||
|
|
||||||
// 4 ref frames + what pacer holds + a working surface for each output
|
|
||||||
//
|
|
||||||
// NB: The reason we allocate 4 ref frames and not 16 (H.264 maximum)
|
|
||||||
// is because V4L2M2M decoders have reference frame invalidation disabled
|
|
||||||
// for compatibility, so we will never actually need 16 reference frames.
|
|
||||||
av_dict_set_int(&options, "num_capture_buffers", 4 + PACER_MAX_OUTSTANDING_FRAMES + 2, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
QString optionVarName = QString("%1_AVOPTIONS").arg(decoder->name).toUpper();
|
QString optionVarName = QString("%1_AVOPTIONS").arg(decoder->name).toUpper();
|
||||||
QByteArray optionVarValue = qgetenv(optionVarName.toUtf8());
|
QByteArray optionVarValue = qgetenv(optionVarName.toUtf8());
|
||||||
if (!optionVarValue.isNull()) {
|
if (!optionVarValue.isNull()) {
|
||||||
|
|||||||
Reference in New Issue
Block a user