f_enhancement_pair: keep retained frames within the hw surface budget
Reduce the queue to 8 frames and reserve that many extra surfaces on both the BL and EL decoders.
This commit is contained in:
1 parent
228f3109fd
commit
b955aa28f3
3 files changed
+10
-1
No files matched your search
@@ -29,7 +29,7 @@
|
||||
#define PTS_MATCH_TOLERANCE 1e-6
|
||||
|
||||
// Number of frames hold for matching.
|
||||
#define QUEUE_MAX 16
|
||||
#define QUEUE_MAX MP_ENHANCEMENT_PAIR_QUEUE_MAX
|
||||
|
||||
struct priv {
|
||||
struct mp_decoder_wrapper *el_dec;
|
||||
@@ -226,6 +226,8 @@ struct mp_filter *mp_enhancement_pair_create(struct mp_filter *parent,
|
||||
|
||||
struct priv *p = f->priv;
|
||||
p->el_dec = mp_decoder_wrapper_create(f, el_sh);
|
||||
if (p->el_dec)
|
||||
mp_decoder_wrapper_set_extra_hw_frames(p->el_dec, QUEUE_MAX);
|
||||
if (!p->el_dec || !mp_decoder_wrapper_reinit(p->el_dec)) {
|
||||
MP_WARN(f, "Failed to set up enhancement-layer decoder; "
|
||||
"rendering base layer only.\n");
|
||||
|
||||
@@ -21,6 +21,9 @@
|
||||
|
||||
struct sh_stream;
|
||||
|
||||
// Maximum number of decoded frames the pairing filter retains while matching.
|
||||
#define MP_ENHANCEMENT_PAIR_QUEUE_MAX 8
|
||||
|
||||
// Enhancement-layer pairing filter.
|
||||
//
|
||||
// Reads base-layer (BL) mp_image frames from its input pin, decodes the
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
#include "sub/osd.h"
|
||||
#include "video/hwdec.h"
|
||||
#include "filters/f_decoder_wrapper.h"
|
||||
#include "filters/f_enhancement_pair.h"
|
||||
#include "video/out/vo.h"
|
||||
|
||||
#include "core.h"
|
||||
@@ -192,6 +193,9 @@ int init_video_decoder(struct MPContext *mpctx, struct track *track)
|
||||
if (!track->dec)
|
||||
goto err_out;
|
||||
|
||||
if (sh_stream_dependent_sibling(track->stream))
|
||||
mp_decoder_wrapper_set_extra_hw_frames(track->dec, MP_ENHANCEMENT_PAIR_QUEUE_MAX);
|
||||
|
||||
if (!mp_decoder_wrapper_reinit(track->dec))
|
||||
goto err_out;
|
||||
|
||||
|
||||
Reference in new issue
Block a user