blob: 65bf6737f9ab6fc334c82e728682e8df255d500d [file] [log] [blame]
// Copyright 2024 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#[path = "./mod.rs"]
mod tests;
use crabby_avif::reformat::rgb::*;
use tests::*;
#[test_case::test_case("paris_identity.avif", "paris_icc_exif_xmp.png"; "lossless_identity")]
#[test_case::test_case("paris_ycgco_re.avif", "paris_icc_exif_xmp.png"; "lossless_ycgco_re")]
fn lossless(avif_file: &str, png_file: &str) {
let mut decoder = get_decoder(avif_file);
assert!(decoder.parse().is_ok());
if !HAS_DECODER {
return;
}
assert!(decoder.next_image().is_ok());
let decoded = decoder.image().expect("image was none");
let mut rgb = Image::create_from_yuv(decoded);
rgb.depth = 8;
rgb.format = Format::Rgb;
assert!(rgb.allocate().is_ok());
assert!(rgb.convert_from_yuv(decoded).is_ok());
let source = decode_png(png_file);
assert_eq!(
source,
rgb.pixels
.as_ref()
.unwrap()
.slice(0, source.len() as u32)
.unwrap()
);
}