File: relax-deps.diff

package info (click to toggle)
rust-image 0.25.8-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,044 kB
  • sloc: makefile: 2
file content (123 lines) | stat: -rw-r--r-- 4,284 bytes parent folder | download
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -57,11 +57,2 @@
 [features]
-avif = [
-    "dep:ravif",
-    "dep:rgb",
-]
-avif-native = [
-    "dep:mp4parse",
-    "dep:dav1d",
-]
-benchmarks = []
 bmp = []
@@ -74,3 +74,2 @@
 default-formats = [
-    "avif",
     "bmp",
@@ -105,3 +105,2 @@
 ]
-nasm = ["ravif?/asm"]
 png = ["dep:png"]
@@ -223,3 +200,2 @@
     "dep:rayon",
-    "ravif?/threading",
 ]
@@ -158,6 +158,2 @@
 
-[dependencies.dav1d]
-version = "0.10.3"
-optional = true
-
 [dependencies.exr]
@@ -177,6 +177,2 @@
 
-[dependencies.mp4parse]
-version = "0.17.0"
-optional = true
-
 [dependencies.num-traits]
@@ -185,3 +185,3 @@
 [dependencies.png]
-version = "0.18.0"
+version = "0.17.16"
 optional = true
@@ -192,6 +192,2 @@
 
-[dependencies.ravif]
-version = "0.11.12"
-optional = true
-default-features = false
 
--- a/src/codecs/png.rs
+++ b/src/codecs/png.rs
@@ -305,13 +305,8 @@ impl<R: BufRead + Seek> ApngDecoder<R> {
         if self.has_thumbnail {
             // Clone the limits so that our one-off allocation that's destroyed after this scope doesn't persist
             let mut limits = self.inner.limits.clone();
-
-            let buffer_size = self.inner.reader.output_buffer_size().ok_or_else(|| {
-                ImageError::Limits(LimitError::from_kind(LimitErrorKind::InsufficientMemory))
-            })?;
-
-            limits.reserve_usize(buffer_size)?;
-            let mut buffer = vec![0; buffer_size];
+            limits.reserve_usize(self.inner.reader.output_buffer_size())?;
+            let mut buffer = vec![0; self.inner.reader.output_buffer_size()];
             // TODO: add `png::Reader::change_limits()` and call it here
             // to also constrain the internal buffer allocations in the PNG crate
             self.inner
@@ -368,10 +363,7 @@ impl<R: BufRead + Seek> ApngDecoder<R> {
         let mut limits = self.inner.limits.clone();
 
         // Read next frame data.
-        let raw_frame_size = self.inner.reader.output_buffer_size().ok_or_else(|| {
-            ImageError::Limits(LimitError::from_kind(LimitErrorKind::InsufficientMemory))
-        })?;
-
+        let raw_frame_size = self.inner.reader.output_buffer_size();
         limits.reserve_usize(raw_frame_size)?;
         let mut buffer = vec![0; raw_frame_size];
         // TODO: add `png::Reader::change_limits()` and call it here
@@ -604,20 +596,21 @@ impl<W: Write> PngEncoder<W> {
                 ))
             }
         };
-
         let comp = match self.compression {
-            CompressionType::Default => png::Compression::Balanced,
-            CompressionType::Best => png::Compression::High,
+            CompressionType::Default => png::Compression::Default,
+            CompressionType::Best => png::Compression::Best,
             _ => png::Compression::Fast,
         };
-
-        let filter = match self.filter {
-            FilterType::NoFilter => png::Filter::NoFilter,
-            FilterType::Sub => png::Filter::Sub,
-            FilterType::Up => png::Filter::Up,
-            FilterType::Avg => png::Filter::Avg,
-            FilterType::Paeth => png::Filter::Paeth,
-            FilterType::Adaptive => png::Filter::Adaptive,
+        let (filter, adaptive_filter) = match self.filter {
+            FilterType::NoFilter => (
+                png::FilterType::NoFilter,
+                png::AdaptiveFilterType::NonAdaptive,
+            ),
+            FilterType::Sub => (png::FilterType::Sub, png::AdaptiveFilterType::NonAdaptive),
+            FilterType::Up => (png::FilterType::Up, png::AdaptiveFilterType::NonAdaptive),
+            FilterType::Avg => (png::FilterType::Avg, png::AdaptiveFilterType::NonAdaptive),
+            FilterType::Paeth => (png::FilterType::Paeth, png::AdaptiveFilterType::NonAdaptive),
+            FilterType::Adaptive => (png::FilterType::Sub, png::AdaptiveFilterType::Adaptive),
         };
 
         let mut info = png::Info::with_size(width, height);
@@ -636,6 +629,7 @@ impl<W: Write> PngEncoder<W> {
         encoder.set_depth(bits);
         encoder.set_compression(comp);
         encoder.set_filter(filter);
+        encoder.set_adaptive_filter(adaptive_filter);
         let mut writer = encoder
             .write_header()
             .map_err(|e| ImageError::IoError(e.into()))?;