aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/patches/vlc-dav1d-compat.patch
blob: 3cb737faba232b470f52d5f7634b07140af2c544 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
Fix build against dav1d 1.0.

  https://code.videolan.org/videolan/vlc/-/merge_requests/1618

Patch adjusted for VLC 3.0 taken from Gentoo:

  https://gitweb.gentoo.org/repo/gentoo.git/tree/media-video/vlc/files/vlc-3.0.17.3-dav1d-1.0.0.patch

--- a/modules/codec/dav1d.c
+++ b/modules/codec/dav1d.c
@@ -63,10 +63,16 @@ vlc_module_begin ()
     set_category(CAT_INPUT)
     set_subcategory(SUBCAT_INPUT_VCODEC)
 
+#if DAV1D_API_VERSION_MAJOR >= 6
+    add_integer_with_range("dav1d-thread-frames", 0, 0, DAV1D_MAX_THREADS,
+                THREAD_FRAMES_TEXT, THREAD_FRAMES_LONGTEXT, false)
+    add_obsolete_string("dav1d-thread-tiles") // unused with dav1d 1.0
+#else
     add_integer_with_range("dav1d-thread-frames", 0, 0, DAV1D_MAX_FRAME_THREADS,
                 THREAD_FRAMES_TEXT, THREAD_FRAMES_LONGTEXT, false)
     add_integer_with_range("dav1d-thread-tiles", 0, 0, DAV1D_MAX_TILE_THREADS,
                 THREAD_TILES_TEXT, THREAD_TILES_LONGTEXT, false)
+#endif
 vlc_module_end ()
 
 /*****************************************************************************
@@ -294,6 +300,11 @@ static int OpenDecoder(vlc_object_t *p_this)
         return VLC_ENOMEM;
 
     dav1d_default_settings(&p_sys->s);
+#if DAV1D_API_VERSION_MAJOR >= 6
+    p_sys->s.n_threads = var_InheritInteger(p_this, "dav1d-thread-frames");
+    if (p_sys->s.n_threads == 0)
+        p_sys->s.n_threads = (i_core_count < 16) ? i_core_count : 16;
+#else
     p_sys->s.n_tile_threads = var_InheritInteger(p_this, "dav1d-thread-tiles");
     if (p_sys->s.n_tile_threads == 0)
         p_sys->s.n_tile_threads =
@@ -303,6 +314,7 @@ static int OpenDecoder(vlc_object_t *p_this)
     p_sys->s.n_frame_threads = var_InheritInteger(p_this, "dav1d-thread-frames");
     if (p_sys->s.n_frame_threads == 0)
         p_sys->s.n_frame_threads = (i_core_count < 16) ? i_core_count : 16;
+#endif
     p_sys->s.allocator.cookie = dec;
     p_sys->s.allocator.alloc_picture_callback = NewPicture;
     p_sys->s.allocator.release_picture_callback = FreePicture;
@@ -313,12 +325,20 @@ static int OpenDecoder(vlc_object_t *p_this)
         return VLC_EGENERIC;
     }
 
+#if DAV1D_API_VERSION_MAJOR >= 6
+    msg_Dbg(p_this, "Using dav1d version %s with %d threads",
+            dav1d_version(), p_sys->s.n_threads);
+
+    dec->i_extra_picture_buffers = (p_sys->s.n_threads - 1);
+#else
     msg_Dbg(p_this, "Using dav1d version %s with %d/%d frame/tile threads",
             dav1d_version(), p_sys->s.n_frame_threads, p_sys->s.n_tile_threads);
 
+    dec->i_extra_picture_buffers = (p_sys->s.n_frame_threads - 1);
+#endif
+
     dec->pf_decode = Decode;
     dec->pf_flush = FlushDecoder;
-    dec->i_extra_picture_buffers = (p_sys->s.n_frame_threads - 1);
 
     dec->fmt_out.video.i_width = dec->fmt_in.video.i_width;
     dec->fmt_out.video.i_height = dec->fmt_in.video.i_height;
GitLab