Skip to content

Commit be92834

Browse files
committed
initial draft of objects test
ensures that ffv1 or mkv as objects pass expectations
1 parent 7aa1625 commit be92834

File tree

2 files changed

+77
-0
lines changed

2 files changed

+77
-0
lines changed

object_policies.xml

+68
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
<policy type="or" name="Apply policy if Matroska">
2+
<description>Example of a digitization specification of analog SD video to FFV1 and Matroska. This policy contains a copy of another policy (Is this NTSC or PAL SD).</description>
3+
<policy type="and" name="Not FFV1 and not Matroska?">
4+
<rule name="Is it not Matroska?" value="Format" tracktype="General" occurrence="*" operator="!=">Matroska</rule>
5+
<rule name="Is it not FFV1?" value="Format" tracktype="Video" occurrence="*" operator="!=">FFV1</rule>
6+
</policy>
7+
<policy type="and" name="Meets Matroska/FFV1 recommandations?">
8+
<description>Example of a digitization specification of analog SD video to FFV1 and Matroska.</description>
9+
<rule name="Is it Matroska?" value="Format" tracktype="General" occurrence="*" operator="=">Matroska</rule>
10+
<rule name="Matroska version 4 or greater?" value="Format_Version" tracktype="General" occurrence="*" operator="&gt;=">4</rule>
11+
<rule name="SegmentUID is present?" scope="mmt" value="Segment/Info/SegmentUID/"/>
12+
<rule name="Duration is greater than zero?" scope="mmt" operator="&gt;" value="Segment/Info/Duration/Data">0</rule>
13+
<rule name="SeekHead is present?" scope="mmt" value="Segment/SeekHead/"/>
14+
<rule name="Cues is present?" scope="mmt" value="Segment/Cues/"/>
15+
<policy type="and" name="Select Top-Level Elements have CRCs">
16+
<rule name="SeekHead CRC-32 is present?" scope="mmt" value="Segment/SeekHead/CRC-32/"/>
17+
<rule name="Info CRC-32 is present?" scope="mmt" value="Segment/Info/CRC-32/"/>
18+
<rule name="Tracks CRC-32 is present?" scope="mmt" value="Segment/Tracks/CRC-32/"/>
19+
<rule name="Cluster CRC-32 is present?" scope="mmt" value="Segment/Cluster/CRC-32/"/>
20+
<rule name="Cues CRC-32 is present?" scope="mmt" value="Segment/Cues/CRC-32/"/>
21+
<rule name="Tags CRC-32 is present?" scope="mmt" value="Segment/Tags/CRC-32/"/>
22+
</policy>
23+
<policy type="or" name="Video Scan Type is clarified?">
24+
<policy type="and" name="Interlaced video is clarified?">
25+
<rule name="Video is interlaced?" scope="mmt" value="Segment/Tracks/TrackEntry/Video/FlagInterlaced/Data" operator="=">1</rule>
26+
<policy type="or" name="FieldOrder is clarified?">
27+
<rule name="Video is Top Field displayed and stored first?" scope="mmt" value="Segment/Tracks/TrackEntry/Video/FieldOrder/Data" operator="=">1</rule>
28+
<rule name="Video is Bottom Field displayed and stored first?" scope="mmt" value="Segment/Tracks/TrackEntry/Video/FieldOrder/Data" operator="=">6</rule>
29+
<rule name="Video is Bottom Field displayed and Top Field stored first?" scope="mmt" value="Segment/Tracks/TrackEntry/Video/FieldOrder/Data" operator="=">9</rule>
30+
<rule name="Video is Top Field displayed and Bottom Field stored first?" scope="mmt" value="Segment/Tracks/TrackEntry/Video/FieldOrder/Data" operator="=">14</rule>
31+
</policy>
32+
</policy>
33+
<rule name="Video is progressive?" scope="mmt" value="Segment/Tracks/TrackEntry/Video/FlagInterlaced/Data" operator="=">2</rule>
34+
</policy>
35+
<policy type="or" name="Video Sample Range is clarified?">
36+
<rule name="Video is in Broadcast Range?" scope="mmt" value="Segment/Tracks/TrackEntry/Video/Colour/Range/Data" operator="=">1</rule>
37+
<rule name="Video is in Full Range?" scope="mmt" value="Segment/Tracks/TrackEntry/Video/Colour/Range/Data" operator="=">2</rule>
38+
<rule name="Video is defined by MatrixCoefficients/TransferCharacteristics?" scope="mmt" value="Segment/Tracks/TrackEntry/Video/Colour/Range/Data" operator="=">3</rule>
39+
</policy>
40+
<policy type="or" name="Video Colour Primary is clarified?">
41+
<rule name="Colour Primary data is stored?" scope="mmt" value="Segment/Tracks/TrackEntry/Video/Colour/Primaries"/>
42+
<rule name="Colour Primary data is not Unspecified?" scope="mmt" value="Segment/Tracks/TrackEntry/Video/Colour/Primaries/Data" operator="!=">2</rule>
43+
</policy>
44+
<rule name="Is the video FFV1?" value="Format" tracktype="Video">FFV1</rule>
45+
<rule name="FFV1 is version 3.4 or later?" value="Format_Version" tracktype="Video" operator="&gt;=">3.4</rule>
46+
<rule name="FFV1 is encoded in GOP size of 1?" value="Format_Settings_GOP" tracktype="Video" operator="=">N=1</rule>
47+
<rule name="FFV1 uses slice crcs?" value="extra/ErrorDetectionType" tracktype="Video" operator="=">Per slice</rule>
48+
<policy type="or" name="Is this NTSC or PAL SD?">
49+
<description>A test to see if the files use NTSC or PAL frame rates and sizes.</description>
50+
<policy type="or" name="Is this NTSC SD or PAL SD?">
51+
<policy type="and" name="Is this PAL?">
52+
<rule name="PAL height" value="Height" tracktype="Video" occurrence="1" operator="=">576</rule>
53+
<rule name="PAL Width" value="Width" tracktype="Video" occurrence="1" operator="=">720</rule>
54+
<rule name="PAL FrameRate" value="FrameRate" tracktype="Video" occurrence="1" operator="=">25.000</rule>
55+
</policy>
56+
<policy type="and" name="Is this NTSC?">
57+
<policy type="or" name="NTSC Height">
58+
<rule name="NTSC height" value="Height" tracktype="Video" occurrence="1" operator="=">486</rule>
59+
<rule name="NTSC-ish height" value="Height" tracktype="Video" occurrence="1" operator="=">480</rule>
60+
</policy>
61+
<rule name="NTSC Width" value="Width" tracktype="Video" occurrence="1" operator="=">720</rule>
62+
<rule name="NTSC FrameRate" value="FrameRate" tracktype="Video" occurrence="1" operator="=">29.970</rule>
63+
</policy>
64+
</policy>
65+
<rule name="Is Interlaced?" value="ScanType" tracktype="Video" occurrence="1" operator="=">Interlaced</rule>
66+
</policy>
67+
</policy>
68+
</policy>

verifypackage

+9
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,15 @@ while [ "${*}" != "" ] ; do
1111
PACKAGE="${1}"
1212
MEDIAID=$(basename "${PACKAGE}")
1313
shift
14+
#verify objects files
15+
while read OBJECT_FILE ; do
16+
STATUS=$(mediaconch -fx -p "${SCRIPTDIR}/object_policies.xml" "${OBJECT_FILE}" | xml sel -N mc="https://mediaarea.net/mediaconch" -t -v mc:MediaConch/mc:media/mc:policy/@outcome -n)
17+
if [[ "$STATUS" = "pass!" ]] ; then
18+
_report -dt "Pass: ${OBJECT_FILE}"
19+
else
20+
mediaconch -fs -p "${SCRIPTDIR}/object_policies.xml" "${OBJECT_FILE}"
21+
fi
22+
done < <(find "${PACKAGE}/objects" -type f -size +0 "${OBJECTS_FIND_EXCLUSIONS[@]}")
1423
#verify the makebroadcast file
1524
if [ -f "${PACKAGE}/objects/service/${MEDIAID}.mov" ] ; then
1625
STATUS=$(mediaconch -fx -p "${SCRIPTDIR}/makebroadcast_policies.xml" "${PACKAGE}/objects/service/${MEDIAID}.mov" | xml sel -N mc="https://mediaarea.net/mediaconch" -t -v mc:MediaConch/mc:media/mc:policy/@outcome -n)

0 commit comments

Comments
 (0)