<?xml version="1.0"?>
<policy type="or" name="SLUB Policy for MKV/FFV1v3, retrodigitized film 16mm" license="CC-BY-SA-4.0+">
  <description>SLUB related policy to test that the video file is suitable for archiving purposes.
    This checks if a MKV/FFV1v3 fulfills the needs for 16mm retrodigitization (also Super16, Normal16,…):
    - Container format is Matroska with error detection (CRC)
    - Video format is FFV1 with error detection (CRC) and with Intra mode (each frame is independent)
    - Audio format is PCM (unfortunately it can not contain error detection) or FLAC (it has CRC by design)
    This policy is based on:
    - Example MKV FFV1 digitization policy.xml
    - Video file is MKV + FFV1-Intra + PCM or FLAC with CRC32 everywhere.xml
    If there are any policy violations or suggestions, please send an email to langzeitarchiv@slub-dresden.de
  </description>
  <policy type="and" name="MKV, FFV1 Intra, PCM/FLAC, error detection">
    <policy type="and" name="Container">
      <rule name="General/FileExtension is mkv" value="FileExtension" tracktype="General" occurrence="*" operator="=">mkv</rule>
      <rule name="Container is MKV" value="Format" tracktype="General" occurrence="*" operator="=">Matroska</rule>
      <rule name="Unique ID is present" value="UniqueID" tracktype="General" occurrence="*"/>
      <rule name="Container uses error detection" value="extra/ErrorDetectionType" tracktype="General" occurrence="*" operator="=">Per level 1</rule>
      <rule name="General/Format_Version is 4" value="Format_Version" tracktype="General" occurrence="*" operator="=">4</rule>
      <policy type="and" name="FrameRate from 14Hz till 32Hz">
        <rule name="General/FrameRate is 14.000 or greater" value="FrameRate" tracktype="General" occurrence="*" operator="&gt;=">14.000</rule>
        <rule name="General/FrameRate is 32.000 or lower" value="FrameRate" tracktype="General" occurrence="*" operator="&lt;=">32.000</rule>
      </policy>
    </policy>
    <policy type="and" name="Video">
      <rule name="Video is FFV1" value="Format" tracktype="Video" occurrence="*" operator="=">FFV1</rule>
      <rule name="FFV1 is version 3.4 or later" value="Format_Version" tracktype="Video" occurrence="*" operator="&gt;=">3.4</rule>
      <rule name="GOP size of 1" value="Format_Settings_GOP" tracktype="Video" occurrence="*" operator="=">N=1</rule>
      <rule name="Video uses error detection" value="extra/ErrorDetectionType" tracktype="Video" occurrence="*" operator="=">Per slice</rule>
      <rule name="Frame Rate is Constant" value="FrameRate_Mode" tracktype="Video" occurrence="*" operator="=">CFR</rule>
      <rule name="Video/ScanType is Progressive" value="ScanType" tracktype="Video" occurrence="*" operator="=">Progressive</rule>
      <rule name="Video/Compression_Mode is Lossless" value="Compression_Mode" tracktype="Video" occurrence="*" operator="=">Lossless</rule>
      
      <policy type="and" name="Video is 2k/16bit RGB">
        <policy type="or" name="typical Resolutions">
          <policy type="and" name="DCI 2K  Format (2048x1080)">
            <rule name="Video/Width is 2048" value="Width" tracktype="Video" occurrence="*" operator="=">2048</rule>
            <rule name="Video/Height is 1080" value="Height" tracktype="Video" occurrence="*" operator="=">1080</rule>
            <rule name="Video/DisplayAspectRatio is 1.347" value="DisplayAspectRatio" tracktype="Video" occurrence="*" operator="=">1.347</rule>
          </policy>
          <policy type="and" name="2K HD Format, QSXGA 4:3 (2560x1920)">
            <rule name="Video/Width is 2560" value="Width" tracktype="Video" occurrence="*" operator="=">2560</rule>
            <rule name="Video/Height is 1920" value="Height" tracktype="Video" occurrence="*" operator="=">1920</rule>
            <rule name="Video/DisplayAspectRatio is 1.333 (4:3)" value="DisplayAspectRatio" tracktype="Video" occurrence="*" operator="=">1.333</rule>
          </policy>
          <policy type="and" name="2K minimum resolution">
            <rule name="Video/Width is at least 2048" value="Width" tracktype="Video" occurrence="*" operator=">=">2048</rule>
            <rule name="Video/Height is at least 1080" value="Height" tracktype="Video" occurrence="*" operator=">=">1080</rule>
            <rule name="Video/DisplayAspectRatio is at least 1" value="DisplayAspectRatio" tracktype="Video" occurrence="*" operator=">=">1.0</rule>
          </policy>
          <policy type="and" name="Normal 16, 80 lines/mm (824x600)">
            <rule name="Video/Width is at least 824" value="Width" tracktype="Video" occurrence="*" operator="&gt;">823</rule>
            <rule name="Video/Height is at least 600" value="Height" tracktype="Video" occurrence="*" operator="&gt;">599</rule>
          </policy>
          <policy type="and" name="Super16, 80 lines/mm (988x593)">
            <rule name="Video/Width is at least 988" value="Width" tracktype="Video" occurrence="*" operator="&gt;">988</rule>
            <rule name="Video/Height is at least 593" value="Height" tracktype="Video" occurrence="*" operator="&gt;">593</rule>
          </policy>
        </policy>
        <rule name="Video/PixelAspectRatio is 1.000" value="PixelAspectRatio" tracktype="Video" occurrence="*" operator="=">1.000</rule>
        <policy type="or" name="YUV or RGB">
          <policy type="and" name="YUV">
            <rule name="ColorSpace is YUV" value="ColorSpace" tracktype="Video" occurrence="*" operator="=">YUV</rule>
            <rule name="Chroma Subsampling is 4:4:4" value="ChromaSubsampling" tracktype="Video" occurrence="*" operator="=">4:4:4</rule>
          </policy>
          <policy type="and" name="RGB">
            <rule name="ColorSpace is RGB" value="ColorSpace" tracktype="Video" occurrence="*" operator="=">RGB</rule>
            <rule name="Chroma Subsampling is 4:4:4" value="ChromaSubsampling" tracktype="Video" occurrence="*" operator="=">4:4:4</rule>
          </policy>
        </policy>
        <rule name="Bit Depth is 16" value="BitDepth" tracktype="Video" occurrence="*" operator="=">16</rule>
      </policy>
    </policy>
    
    <policy type="or" name="Audio">
      <rule name="Audio does not exist" value="AudioCount" tracktype="General" occurrence="*" operator="must not exist"/>
      <policy type="or" name="Audio exist">
        <rule name="General/AudioCount is 1" value="AudioCount" tracktype="General" occurrence="*" operator="=">1</rule>
        <policy type="or" name="Audio is PCM or FLAC">
          <rule name="Audio is PCM" value="Format" tracktype="Audio" occurrence="*" operator="=">PCM</rule>
          <rule name="Audio is FLAC" value="Format" tracktype="Audio" occurrence="*" operator="=">FLAC</rule>
        </policy>
        <policy name="Audio is multiple of 48kHz till 192kHz" type="or">
          <rule name="Audio is 48000 Hz" value="SamplingRate" tracktype="Audio" occurrence="*" operator="=">48000</rule>
          <rule name="Audio is 96000 Hz" value="SamplingRate" tracktype="Audio" occurrence="*" operator="=">96000</rule>
          <rule name="Audio is 144000 Hz" value="SamplingRate" tracktype="Audio" occurrence="*" operator="=">144000</rule>
          <rule name="Audio is 192000 Hz" value="SamplingRate" tracktype="Audio" occurrence="*" operator="=">192000</rule>
        </policy>
        <policy type="or" name="Audio is Stereo or Mono">
          <rule name="Audio is mono" value="Channels" tracktype="Audio" occurrence="*" operator="=">1</rule>
          <rule name="Audio is stereo" value="Channels" tracktype="Audio" occurrence="*" operator="=">2</rule>
        </policy>
        <policy type="or" name="Audio Bit Depth is 16 or 24">
          <rule name="Bit Depth is 16" value="BitDepth" tracktype="Audio" occurrence="*" operator="=">16</rule>
          <rule name="Bit Depth is 24" value="BitDepth" tracktype="Audio" occurrence="*" operator="=">24</rule>
        </policy>
      </policy>
    </policy>
  </policy>
</policy>