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;
}
}
}