//!This crate provides a library for decoding valid
//! ITU-T Rec. T.851 (09/2005) ITU-T T.81 (JPEG-1) or JPEG images.
//!
//!
//!
//! # Features
//! - SSE and AVX accelerated functions to speed up certain decoding operations
//! - Really fast and accurate 32 bit IDCT algorithm
//! - Fast color convert functions
//! - RGBA and RGBX (4-Channel) color conversion functions
//! - YCbCr to GrayScale conversion.
//!
//! # Usage
//! Add zune-jpeg to the dependencies in the project Cargo.toml
//!
//! ```toml
//! [dependencies]
//! zune_jpeg = "0.2.0"
//! ```
//! # Examples
//!
//! ## Decode a JPEG file with default arguments.
//! ```no_run
//! use zune_jpeg::Decoder;
//! //will contain pixels
//! let mut pixels = Decoder::new().decode_file("a_jpeg_file").unwrap();
//!
//! ```
//!
//! ## Decode a JPEG file to RGBA format
//! ```no_run
//! use zune_jpeg::{ColorSpace, Decoder, ZuneJpegOptions};
//! let mut decoder = Decoder::new_with_options(ZuneJpegOptions::new().set_out_colorspace(ColorSpace::RGBA));
//! decoder.decode_file("a_jpeg_file");
//! ```
//!
//! ## Decode an image and get it's width and height.
//! ```no_run
//! use zune_jpeg::{Decoder, ZuneJpegOptions};
//! use zune_jpeg::ColorSpace::GRAYSCALE;
//! let mut decoder = Decoder::new_with_options(ZuneJpegOptions::new()
//! .set_out_colorspace(GRAYSCALE));
//! let img_data = std::fs::read("a_valid.jpeg").unwrap();
//! decoder.read_headers(&img_data);
//! let image_info = decoder.info().unwrap();
//! println!("{},{}",image_info.width,image_info.height)
//! ```
//!
//!
//! # Crate features.
//! This crate tries to be as minimal as possible while being extensible
//! enough to handle the complexities arising from parsing different types
//! of jpeg images.
//!
//! Safety is a top concern that is why we provide both static ways to disable unsafe code,
//! disabling x86 feature, and dynamic ,by using `ZuneJpegOptions::set_unsafe(false)`,
//! both of these disable platform specific optimizations, which reduce the speed of decompression.
//!
//! Please do note that careful consideration has been taken to ensure that the unsafe paths
//! are only unsafe because they depend on platform specific intrinsics, hence no need to disable them
//!
//! The crate tries to decode as many images as possible, as a best effort, even those violating the standard
//! , this means a lot of images may get silent warnings and wrong output, but if you are sure you will be handling
//! images that follow the spec, set `ZuneJpegOptions::set_strict` to true.
extern crate log;
pub use crate;
pub use crate ColorSpace;
pub use crate ZuneJpegOptions;