using System.ComponentModel; using UnityEngine; namespace UnityEditor.Recorder { /// /// Recorder Utility classes. /// public static class CompressionUtility { /// /// Compression type for EXR files. /// public enum EXRCompressionType { /// /// No compression. /// None, /// /// Run-length encoding compression. /// RLE, /// /// Zip compression (individual scanlines). /// Zip, /// /// Wavelet compression. /// PIZ, /// /// Zip compression (16 scanlines). /// Zips, /// /// Fixed compression size designed for realtime playback. /// B44, /// /// Same as B44, but areas of flat color are further compressed. /// B44a, /// /// Dreamworks animation compression (32 scanlines). /// DWAA, /// /// Dreamworks animation compression (256 scanlines). /// DWAB, } /// /// Checks whether this package supports a compression type /// /// EXRCompressionType to check for /// True if the compression type is supported internal static bool SupportsCompressionLevel(EXRCompressionType compressionType) { switch (compressionType) { case EXRCompressionType.DWAA: case EXRCompressionType.DWAB: return true; default: return false; } } /// /// DWA Compression Type Info object /// internal static class DWACompressionTypeInfo { /// /// DWA Compression Type Minimum value /// public static readonly int k_MinValue = 1; /// /// DWA Compression Type Maximum value /// public static readonly int k_MaxValue = 100000; /// /// DWA Compression Type default value /// public static readonly int k_DefaultValue = 45; } internal static Texture2D.EXRFlags ToNativeType(EXRCompressionType type) { Texture2D.EXRFlags nativeType = Texture2D.EXRFlags.None; switch (type) { case EXRCompressionType.RLE: nativeType = Texture2D.EXRFlags.CompressRLE; break; case EXRCompressionType.Zip: nativeType = Texture2D.EXRFlags.CompressZIP; break; case EXRCompressionType.PIZ: nativeType = Texture2D.EXRFlags.CompressPIZ; break; case EXRCompressionType.None: nativeType = Texture2D.EXRFlags.None; break; default: throw new InvalidEnumArgumentException($"Unexpected compression type '{type}'."); } return nativeType; } } }