X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=doc%2Fdesign%2Fdcpomatic.svg;h=4a626c9df48a99f3ee4116abc6568f539ec37928;hb=5807c8a5f7baec5355a2bae2771f197989001c92;hp=f1b61f8c14ae6c6dc073e5b100db5207fd65a72d;hpb=4a4725e41bf4070969223f9c40885063c50e61d0;p=dcpomatic.git
diff --git a/doc/design/dcpomatic.svg b/doc/design/dcpomatic.svg
index f1b61f8c1..4a626c9df 100644
--- a/doc/design/dcpomatic.svg
+++ b/doc/design/dcpomatic.svg
@@ -7,6 +7,7 @@
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="2104.7244"
@@ -15,222 +16,274 @@
version="1.1"
inkscape:version="0.48.4 r9939"
sodipodi:docname="dcpomatic.svg">
+
+ refX="0.0"
+ refY="0.0"
+ orient="auto"
+ inkscape:stockid="Arrow2Mstart">
+ style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round"
+ id="path4682" />
+ refX="0.0"
+ refY="0.0"
+ orient="auto"
+ inkscape:stockid="DotM">
+ d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+ id="path4722" />
+ refX="0.0"
+ refY="0.0"
+ orient="auto"
+ inkscape:stockid="DotL">
+ d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+ id="path4719" />
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Mend">
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ id="path4685" />
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="DotM">
+ d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
+ id="path4722-6"
+ inkscape:connector-curvature="0" />
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Mend">
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ id="path4685-5" />
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Mend">
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ id="path4685-59" />
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Mend">
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ id="path4685-0" />
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Mend">
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ id="path4685-3" />
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Mend">
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ id="path4685-6" />
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Mend">
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ id="path4685-6-3" />
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Mend">
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ id="path4685-6-7" />
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Mend">
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ id="path4685-6-8" />
+
+
+
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Mend">
+
+
+
+
+
+
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill:#ff0000;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.625;stroke-linejoin:round"
+ id="path3631-8" />
+
-
@@ -244,621 +297,1065 @@
+ id="layer1"
+ inkscape:groupmode="layer"
+ inkscape:label="Worker classes">
+ transform="translate(467.53078,0)"
+ id="g3412">
+ width="139"
+ height="139"
+ x="178"
+ y="154.36218" />
Player
+ x="187"
+ y="169.8515">Player
+ width="139"
+ height="24"
+ x="178"
+ y="154.36218" />
get_video()get_audio()
+ y="194.74094">get_video()get_audio()
Get video frame(s) at a time or aGet a video frame or a section ofsection of audio from a time range.audio from a time range given inDCPTime.
+ id="tspan3971">Times are expressed as DCPTime.
+ transform="translate(467.53078,26.938314)"
+ id="g3381">
+ width="139"
+ height="148.32523"
+ x="362.56888"
+ y="85.049988" />
PlayerVideoFrame
+ x="372.08694"
+ y="101.05739">PlayerVideoFrame
+ width="139"
+ height="24"
+ x="362.56888"
+ y="85.049988" />
Video that has come out of a playerVideo that has come out of a playerexcept with the bits still in theirexcept with the bits still in theirraw form (we may want to combineraw form (we may want to combinethe bits on a remote machine, orthe bits on a remote machine, ormaybe not bother to combine themmaybe not bother to combine themat all). Note: no timingat all). Note: no timinginformation.
+ id="tspan3214">information.
image()
+ x="368.44266"
+ y="200.65807">image()
Return image ready for the DCP(scaled, cropped, subtitled etc.)
+ y="214.6459">Return image ready for the DCP(scaled, cropped, subtitled etc.)
+ transform="translate(468.46449,26.938314)"
+ id="g3402">
+ width="139"
+ height="56.489033"
+ x="361.63516"
+ y="252.30872" />
AudioBuffers
+ x="371.15323"
+ y="268.3161">AudioBuffers
+ width="139"
+ height="24"
+ x="361.63516"
+ y="252.30872" />
Some audio data. Note: no timinginformation.
+ y="289.62686">Some audio data. Note: no timinginformation.
+ d="m 738.32413,190.12931 c 20.38674,-2.11382 51.40185,7.49492 61.93408,-14.99236 6.2714,-16.64807 -9.23451,-50.37941 19.28268,-51.67115 l 3.01783,0.37986 2.90173,0.82347"
+ style="fill:none;stroke:#000000;stroke-width:0.99999988px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-mid:none;marker-end:url(#Arrow2Mend)" />
+ id="path3488"
+ d="m 739.25629,209.6782 c 19.0896,1.88256 39.09258,-3.78124 57.46999,3.64406 6.923,4.65286 8.96998,13.82587 10.13419,21.68167 1.159,11.5046 0.4676,23.10702 1.1915,34.63519 -0.0177,7.44421 0.38829,16.22861 7.76265,20.08149 3.15045,1.47702 6.58375,1.85805 10.13283,2.06524"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-mid:none;marker-end:url(#Arrow2Mend)" />
+ transform="translate(0,-14.875458)"
+ id="g6208">
+ id="g6128"
+ transform="translate(73.725318,47.860863)">
+ height="74.012497"
+ width="139"
+ id="rect2985-0"
+ style="color:#000000;fill:none;stroke:#0000ff;stroke-width:0.99999988px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
VideoDecoder
+ id="tspan2989-9"
+ sodipodi:role="line">VideoDecoder
+ height="24"
+ width="139"
+ id="rect2991-8"
+ style="color:#000000;fill:none;stroke:#0000ff;stroke-width:0.99999988px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
get_video()
+ x="394.47705"
+ sodipodi:role="line">get_video()
Get a video frame (specified as anGet a video frame (specified as anindex) from this decoder's content.
+ x="394.62704"
+ sodipodi:role="line">index) from this decoder's content.
+ height="81.600082"
+ width="139"
+ id="rect2985-0-4"
+ style="color:#000000;fill:none;stroke:#0000ff;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
AudioDecoder
+ id="tspan2989-9-3"
+ sodipodi:role="line">AudioDecoder
+ height="24"
+ width="139"
+ id="rect2991-8-3"
+ style="color:#000000;fill:none;stroke:#0000ff;stroke-width:0.99999988px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
get_audio()
+ x="468.20236"
+ sodipodi:role="line">get_audio()
Get some audio frames (specified asGet some audio frames (specified asframe indices) from this decoder'sframe indices) from this decoder'scontent.
+ x="468.35236"
+ sodipodi:role="line">content.
+ id="path6367"
+ d="m 552.66966,176.1187 c 34.68428,-2.16068 34.15674,16.61591 96.92523,17.13336"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-3)" />
+ id="path6367-1"
+ d="m 552.96764,263.23334 c 34.68428,6.7399 34.15674,-51.83021 96.92523,-53.44415"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-3);display:inline" />
+ id="path6629"
+ d="m 447.18922,770.03876 531.7129,0"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
Video frame indicesVideo frame indiceswithin content.
+ sodipodi:role="line">within content.
Player::dcp_to_content_video()Player::dcp_to_content_video()Player::dcp_to_content_audio()
+ sodipodi:role="line">Player::dcp_to_content_audio()
DCPTime
+ id="tspan6703"
+ sodipodi:role="line">DCPTime
+ id="path6726"
+ d="m 475.60666,819.58715 c 4.8125,23.3677 24.57084,39.3133 24.57084,39.3133"
+ style="color:#000000;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;marker-end:url(#Arrow2Mend-3);visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ id="path6726-3"
+ d="m 674.98349,797.84632 c -4.8125,36.53647 -24.57084,61.46814 -24.57084,61.46814"
+ style="color:#000000;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;marker-start:url(#Arrow2Mstart);visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ height="98.153183"
+ width="139"
+ id="rect2985-0-3"
+ style="color:#000000;fill:none;stroke:#0000ff;stroke-width:0.99999988px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
Class
+ id="tspan2989-9-1"
+ sodipodi:role="line">Class
+ height="24"
+ width="139"
+ id="rect2991-8-1"
+ style="color:#000000;fill:none;stroke:#0000ff;stroke-width:0.99999988px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
method()
+ x="203.29256"
+ sodipodi:role="line">method()
Method description
+ x="202.94057"
+ sodipodi:role="line">Method description
Class description.
+ id="tspan3440"
+ sodipodi:role="line">Class description.
+ height="24"
+ width="139"
+ id="rect2991-8-1-2"
+ style="color:#000000;fill:none;stroke:#0000ff;stroke-width:0.99999988px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+
+
+ Playlist
+
+ video_identifer()
+ Return a string which uniquelydescribes the content which affectsthe image.
+ List of content.
+
+
+
+ has a
+
+
+
+ AudioDecoderStream
+
+ get()
+ Get some audio frames (specified asframe indices) from this stream'scontent.
+ Decoder for one stream of audio.
+
+
+
+
+ AudioDecoderStream
+
+ get()
+ Get some audio frames (specified asframe indices) from this stream'scontent.
+ Decoder for one stream of audio.
+
+
+
+
+ AudioDecoderStream
+
+ get()
+ Get some audio frames (specified asframe indices) from this stream'scontent.
+ Decoder for one stream of audio.
+
+
+
+
+ AudioDecoderStream
+
+ get()
+ Get some audio frames (specified asframe indices) from this stream'scontent.
+ Decoder for one stream of audio.
+
+
+
+
+
+ has many
+ has many
+ inkscape:label="Transcode"
+ id="layer2"
+ inkscape:groupmode="layer">
1. Get data
+ x="479.97995"
+ sodipodi:role="line">1. Get data
+ id="path5169"
+ d="M 552.30466,81.939339 651.01505,194.07502"
+ style="fill:#800000;stroke:#800000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#DotM)" />
+ id="path5169-2"
+ d="M 552.06133,81.672988 650.77172,209.34867"
+ style="fill:#800000;stroke:#800000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#DotM)" />
+ height="148.32523"
+ width="170.98779"
+ id="rect2985-2-5"
+ style="color:#000000;fill:none;stroke:#800000;stroke-width:0.99999988px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
DCPVideoFrame
+ id="tspan2989-6-4"
+ sodipodi:role="line">DCPVideoFrame
+ height="24"
+ width="170.98779"
+ id="rect2991-1-0"
+ style="color:#000000;fill:none;stroke:#800000;stroke-width:0.99999988px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ d="m 975.97792,124.96957 36.76918,0"
+ style="color:#000000;fill:none;stroke:#800000;stroke-width:0.99999988px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;marker-end:url(#Arrow2Mend);visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
PlayerVideoFrame
+ id="tspan2989-6-1"
+ sodipodi:role="line">PlayerVideoFrame
Film settingsFilm settingse.g. frame rate, J2K bandwidth
+ x="1023.8365"
+ sodipodi:role="line">e.g. frame rate, J2K bandwidth
2. Wrap video data
+ id="tspan5911"
+ sodipodi:role="line">2. Wrap video data
+ d="m 1197.57,124.96957 36.7691,0"
+ style="color:#000000;fill:none;stroke:#800000;stroke-width:0.99999988px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;marker-end:url(#Arrow2Mend);visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
_queue
+ id="tspan5958"
+ sodipodi:role="line">_queue
Encoded either locally or remotely,Encoded either locally or remotely,then written to disk.
+ x="1242.3323"
+ sodipodi:role="line">then written to disk.
+ d="m 975.97792,290.99377 36.76918,0"
+ style="color:#000000;fill:none;stroke:#800000;stroke-width:0.99999988px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;marker-end:url(#Arrow2Mend);visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
3. Write audio data to disk
+ id="tspan6032"
+ sodipodi:role="line">3. Write audio data to disk