@@ -254,14 +254,18 @@ def test_write_wmv():
254
254
255
255
@no_warnings_allowed
256
256
def test_write_quality ():
257
+ try :
258
+ import numpy as np
259
+ except ImportError :
260
+ return skip ("Missing 'numpy' test dependency" )
257
261
258
262
sizes = []
259
263
for quality in [2 , 5 , 9 ]:
260
264
# Prepare for writing
261
265
gen = imageio_ffmpeg .write_frames (test_file2 , (64 , 64 ), quality = quality )
262
266
gen .send (None ) # seed
263
267
for i in range (9 ):
264
- data = bytes ([ min ( 255 , 100 + i * 10 )] * 64 * 64 * 3 )
268
+ data = np . random . randint ( 0 , 255 , ( 64 , 64 , 3 ), dtype = "uint8" )
265
269
gen .send (data )
266
270
gen .close ()
267
271
with open (test_file2 , "rb" ) as f :
@@ -270,7 +274,29 @@ def test_write_quality():
270
274
nframes , nsecs = imageio_ffmpeg .count_frames_and_secs (test_file2 )
271
275
assert nframes == 9
272
276
273
- assert sizes [0 ] < sizes [1 ] < sizes [2 ]
277
+ assert sizes [0 ] <= sizes [1 ] <= sizes [2 ]
278
+
279
+ # Add a test compression with lossless mode with ffmpeg
280
+ gen = imageio_ffmpeg .write_frames (
281
+ test_file2 ,
282
+ (64 , 64 ),
283
+ # Setting the quality to None should disable
284
+ # any premade settings
285
+ quality = None ,
286
+ output_params = ["-qp" , "0" ],
287
+ )
288
+ gen .send (None ) # seed
289
+ for i in range (9 ):
290
+ data = np .random .randint (0 , 255 , (64 , 64 , 3 ), dtype = "uint8" )
291
+ gen .send (data )
292
+ gen .close ()
293
+ with open (test_file2 , "rb" ) as f :
294
+ size_lossless = len (f .read ())
295
+ # Check nframes
296
+ nframes , nsecs = imageio_ffmpeg .count_frames_and_secs (test_file2 )
297
+ assert nframes == 9
298
+
299
+ assert sizes [2 ] < size_lossless
274
300
275
301
276
302
@no_warnings_allowed
0 commit comments