Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/videolan/dav1d.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src/lib.c
diff options
context:
space:
mode:
authorRonald S. Bultje <rsbultje@gmail.com>2019-11-17 17:32:09 +0300
committerRonald S. Bultje <rsbultje@gmail.com>2022-01-08 01:04:24 +0300
commit068697556fc784e088b351f56df26fab04d503c2 (patch)
tree1eedf215ada4965bef7649a64f3061a245725599 /src/lib.c
parent36beb8185dd9de5450c9a4cbcd0d969901a6b0cc (diff)
Add interface to output invisible (alt-ref) frames
Addresses part of #310.
Diffstat (limited to 'src/lib.c')
-rw-r--r--src/lib.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/lib.c b/src/lib.c
index e47fbfa..996a9dc 100644
--- a/src/lib.c
+++ b/src/lib.c
@@ -75,6 +75,7 @@ COLD void dav1d_default_settings(Dav1dSettings *const s) {
s->all_layers = 1; // just until the tests are adjusted
s->frame_size_limit = 0;
s->strict_std_compliance = 0;
+ s->output_invisible_frames = 0;
}
static void close_internal(Dav1dContext **const c_out, int flush);
@@ -129,6 +130,7 @@ COLD int dav1d_open(Dav1dContext **const c_out, const Dav1dSettings *const s) {
c->all_layers = s->all_layers;
c->frame_size_limit = s->frame_size_limit;
c->strict_std_compliance = s->strict_std_compliance;
+ c->output_invisible_frames = s->output_invisible_frames;
if (dav1d_mem_pool_init(&c->seq_hdr_pool) ||
dav1d_mem_pool_init(&c->frame_hdr_pool) ||
@@ -354,7 +356,9 @@ static int drain_picture(Dav1dContext *const c, Dav1dPicture *const out) {
const unsigned progress =
atomic_load_explicit(&out_delayed->progress[1],
memory_order_relaxed);
- if (out_delayed->visible && progress != FRAME_ERROR) {
+ if ((out_delayed->visible || c->output_invisible_frames) &&
+ progress != FRAME_ERROR)
+ {
dav1d_picture_ref(&c->out, &out_delayed->p);
c->event_flags |= dav1d_picture_get_event_flags(out_delayed);
}