mirror of
https://code.videolan.org/videolan/dav1d
synced 2026-06-11 04:03:05 +00:00
Mark failed-to-decode frames as incomplete when --maxframedelay=1
Credit to oss-fuzz.
This commit is contained in:
@@ -3425,6 +3425,7 @@ void dav1d_decode_frame_exit(Dav1dFrameContext *const f, const int retval) {
|
||||
|
||||
for (int i = 0; i < f->n_tile_data; i++)
|
||||
dav1d_data_unref_internal(&f->tile[i].data);
|
||||
f->task_thread.retval = retval;
|
||||
}
|
||||
|
||||
int dav1d_decode_frame(Dav1dFrameContext *const f) {
|
||||
@@ -3448,6 +3449,7 @@ int dav1d_decode_frame(Dav1dFrameContext *const f) {
|
||||
}
|
||||
}
|
||||
pthread_mutex_unlock(&f->task_thread.ttd->lock);
|
||||
res = f->task_thread.retval;
|
||||
} else {
|
||||
res = dav1d_decode_frame_main(f);
|
||||
if (!res && f->frame_hdr->refresh_context && f->task_thread.update_set) {
|
||||
|
||||
@@ -302,6 +302,7 @@ struct Dav1dFrameContext {
|
||||
struct Dav1dTask *tasks, *tile_tasks[2], init_task;
|
||||
int num_tasks, num_tile_tasks;
|
||||
int done[2];
|
||||
int retval;
|
||||
int update_set; // whether we need to update CDF reference
|
||||
atomic_int error;
|
||||
int task_counter;
|
||||
|
||||
Reference in New Issue
Block a user