diff options
| author | Carl Hetherington <cth@carlh.net> | 2014-06-26 23:36:24 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2014-06-26 23:36:24 +0100 |
| commit | 4616b19fb5241a54c9d57f7a91bb975f41aed14b (patch) | |
| tree | d067450cb12dd3629fe88ef9a578c6b1cabe7884 | |
| parent | f1d30fb114b3b2c6ccd8fdf5823e7cd6b26c1eef (diff) | |
| parent | 20fa26ea6ecfdbecea8bb1230c8388cce3fd521f (diff) | |
Merge master.
57 files changed, 1953 insertions, 185 deletions
@@ -2,8 +2,43 @@ * Add subtitle view. +2014-06-26 Carl Hetherington <cth@carlh.net> + + * Version 1.70.1 released. + +2014-06-26 Carl Hetherington <cth@carlh.net> + + * Support different KDM formulations. + + * Allow override of detected video frame rates. + + * Optimisation of uncertain effect to encoder and server + thread handling. + + * Version 1.70.0 released. + +2014-06-25 Carl Hetherington <cth@carlh.net> + + * Version 1.69.37 released. + +2014-06-25 Carl Hetherington <cth@carlh.net> + + * Version 1.69.36 released. + +2014-06-25 Carl Hetherington <cth@carlh.net> + + * Support pixel format 46 in make_black(). + +2014-06-24 Carl Hetherington <cth@carlh.net> + + * Re-assign timeline tracks when things are + moved about. + 2014-06-23 Carl Hetherington <cth@carlh.net> + * Try harder to cope with DCP names specified + already in CamelCase. + * Add option to CC a KDM email, and add $SCREENS and $CINEMA_NAME as variables in the email. @@ -97,6 +97,21 @@ deb_depends['7'] = {'libc6': '2.13', 'libcurl3': '7.26.0', 'libzip2': '0.10.1'} +deb_depends['unstable'] = {'libc6': '2.13', + 'libssh-4': '0.5.4', + 'libboost-filesystem1.55.0': '1.55.0', + 'libboost-thread1.55.0': '1.55.0', + 'libsndfile1': '1.0.25', + 'libmagick++5': '8:6.7.7.10', + 'libxml++2.6-2': '2.34.2', + 'libgtk2.0-0': '2.24.10', + 'libxmlsec1': '1.2.18', + 'libboost-date-time1.55.0': '1.55.0', + 'libxmlsec1-openssl': '1.2.18', + 'libcurl3': '7.26.0', + 'libzip2': '0.10.1'} + + def packages(name, packages, f): s = '%s: ' % name for p in packages: @@ -151,6 +166,8 @@ def build(target, options): elif target.platform == 'linux': if target.distro == 'debian' or target.distro == 'ubuntu': cmd += ' --target-debian' + if target.version == 'unstable': + cmd += ' --debian-unstable' elif target.distro == 'centos': cmd += ' --target-centos' @@ -186,6 +203,8 @@ def package_debian(target, cpu, version): target.set('CDIST_LINKFLAGS', target.get('LINKFLAGS')) target.set('CDIST_CXXFLAGS', target.get('CXXFLAGS')) target.set('CDIST_PKG_CONFIG_PATH', target.get('PKG_CONFIG_PATH')) + if target.version == 'unstable': + target.set('CDIST_EXTRA_CONFIGURE', '--debian-unstable') target.command('dpkg-buildpackage') debs = [] diff --git a/debian/changelog b/debian/changelog index 0470cab2b..7a38ec535 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -dcpomatic (1.69.35-1) UNRELEASED; urgency=low +dcpomatic (1.70.1-1) UNRELEASED; urgency=low * New upstream release. * New upstream release. @@ -159,8 +159,12 @@ dcpomatic (1.69.35-1) UNRELEASED; urgency=low * New upstream release. * New upstream release. * New upstream release. + * New upstream release. + * New upstream release. + * New upstream release. + * New upstream release. - -- Carl Hetherington <carl@d1stkfactory> Sun, 22 Jun 2014 21:49:09 +0100 + -- Carl Hetherington <carl@d1stkfactory> Thu, 26 Jun 2014 19:30:39 +0100 dcpomatic (0.87-1) UNRELEASED; urgency=low diff --git a/debian/rules b/debian/rules index aed2292a2..619dfff5e 100755 --- a/debian/rules +++ b/debian/rules @@ -14,7 +14,7 @@ override_dh_auto_configure: LINKFLAGS=$(CDIST_LINKFLAGS) CXXFLAGS="$(CXXFLAGS) $(CDIST_CXXFLAGS)" PKG_CONFIG_PATH=$(CDIST_PKG_CONFIG_PATH) \ - ./waf --nocache configure --prefix=/usr --target-debian --enable-debug + ./waf --nocache configure --prefix=/usr --target-debian --enable-debug $(CDIST_EXTRA_CONFIGURE) override_dh_auto_build: ./waf --nocache build diff --git a/doc/manual/Makefile b/doc/manual/Makefile index 2e37c96be..408f874f6 100644 --- a/doc/manual/Makefile +++ b/doc/manual/Makefile @@ -2,7 +2,8 @@ all: html pdf -DIAGRAMS := file-structure.svg 3d-left-right.svg 3d-top-bottom.svg timecode.svg +DIAGRAMS := file-structure.svg 3d-left-right.svg 3d-top-bottom.svg timecode.svg pipeline1.svg pipeline2.svg \ + pipeline3.svg pipeline4.svg SCREENSHOTS := file-new.png video-new-film.png still-new-film.png video-select-content-file.png \ still-select-content-file.png examine-thumbs.png examine-content.png timing-tab.png \ diff --git a/doc/manual/dcpomatic.xml b/doc/manual/dcpomatic.xml index dd0d3bf0c..dee7fe052 100644 --- a/doc/manual/dcpomatic.xml +++ b/doc/manual/dcpomatic.xml @@ -953,6 +953,127 @@ any changes to the corresponding timecode. </section> +<section> +<title>Video processing pipeline</title> + +<para> +This section gives a little more detail about how DCP-o-matic process +video as it takes it from a source and puts it into a DCP. +</para> + +<para> +Consider, as a somewhat over-the-top example, that we have a 720 x 576 +image which is letterboxed with 36 black pixels each at the top and +bottom, and the video content within the letterbox should be presented +in the DCP at ratio of 2.39:1 within a 1.85:1 frame (such as might +happen with a trailer). The source image is shown in <xref +linkend="fig-pipeline1"/>. +</para> + +<figure id="fig-pipeline1"> + <title>Example image to demonstrate video processing</title> + <mediaobject> + <imageobject> + <imagedata scale="100" fileref="diagrams/pipeline1&dia;"/> + </imageobject> + </mediaobject> +</figure> + +<para> +DCP-o-matic runs through the following steps when preparing an image for a DCP: +</para> + +<itemizedlist> +<listitem>Crop</listitem> +<listitem>Scale</listitem> +<listitem>Place in container</listitem> +</itemizedlist> + +<para> +First, some amount of the image can be cropped. This is almost always +used to remove black borders (letterboxing and/or pillarboxing) around +images. +</para> + +<para> +In our example image, we would use 36 pixels of crop from the top and +bottom. This would give the new image shown in <xref +linkend="fig-pipeline2"/>. +</para> + +<figure id="fig-pipeline2"> + <title>Example image after cropping</title> + <mediaobject> + <imageobject> + <imagedata scale="100" fileref="diagrams/pipeline2&dia;"/> + </imageobject> + </mediaobject> +</figure> + +<para> +The next step is to scale the image. Since this content should be +presented in a 2.39:1 aspect ratio inside a 1.85:1 DCP we would select +<guilabel>Scope</guilabel> from the <guilabel>Scale to</guilabel> +option in the <guilabel>Video</guilabel> tab and +<guilabel>Flat</guilabel> from the <guilabel>Container</guilabel> +option in the <guilabel>DCP</guilabel> tab. +</para> + +<para>The <guilabel>Scale to</guilabel> option should always be set to +the aspect ratio at which the content should be seen. The +<guilabel>Container</guilabel> option should be set to the preset that +you want to use on the projector. Of course, these two settings will +often be the same. +</para> + +<para> +Given the scaling and container information, DCP-o-matic will look at +the DCP's container size, and then scale the source image up until one +or both of its dimensions (width, height or both) fits the size of the +container, all the while preserving the desired aspect ratio. +</para> + +<para> +In our example here, the DCP's container is specified as 1.85:1 (so +that the DCP will play back correctly using the projector's +‘Flat’ preset). At 2K, 1.85:1 is 1998 pixels by 1080. +Scaling the source up whilst preserving its 1.85:1 aspect ratio will +result in the image hitting the sides of the container first, at a +size of 1998 x 836. This gives us a new version of the image as shown +in <xref linkend="fig-pipeline3"/>. +</para> + +<figure id="fig-pipeline3"> + <title>Example image after cropping and scaling</title> + <mediaobject> + <imageobject> + <imagedata scale="100" fileref="diagrams/pipeline3&dia;"/> + </imageobject> + </mediaobject> +</figure> + +<para> +The final step is to place the image into the DCP. In this case, +since we have a 2.39:1 image that should be presented as a 1.85:1 DCP, +we have set the <guilabel>container</guilabel> in the +<guilabel>DCP</guilabel> tab to be Scope. Since the content has been +scaled to 1998 x 836, and a Flat container is 1998 x 1080, there will +be some black bars at the top and bottom of the image. DCP-o-matic +shares out this black equally, as shown in <xref +linkend="fig-pipeline3"/>. +</para> + +<figure id="fig-pipeline4"> + <title>Example image in the DCP</title> + <mediaobject> + <imageobject> + <imagedata scale="100" fileref="diagrams/pipeline4&dia;"/> + </imageobject> + </mediaobject> +</figure> + +</section> + </chapter> <chapter xml:id="ch-dcp" xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="en"> diff --git a/doc/manual/diagrams/pipeline1.svg b/doc/manual/diagrams/pipeline1.svg new file mode 100644 index 000000000..a38babe72 --- /dev/null +++ b/doc/manual/diagrams/pipeline1.svg @@ -0,0 +1,403 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + 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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="744.09448819" + height="1052.3622047" + id="svg2" + version="1.1" + inkscape:version="0.48.4 r9939" + sodipodi:docname="pipeline1.svg"> + <defs + id="defs4"> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow2Mend" + style="overflow:visible;"> + <path + id="path3804" + style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(0.6) rotate(180) translate(0,0)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-2" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3804-6" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-6" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3804-68" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-27" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3804-3" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-63" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3804-0" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="marker4324" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4326" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="marker4328" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4330" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="marker4332" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4334" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-4" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3804-37" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-0" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3804-69" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-62" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3804-8" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-8" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3804-7" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="marker4517" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4519" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-5" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3804-9" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="marker4564" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4566" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.68026787" + inkscape:cx="68.529071" + inkscape:cy="731.88908" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1366" + inkscape:window-height="714" + inkscape:window-x="1024" + inkscape:window-y="27" + inkscape:window-maximized="1" /> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + id="g2997" + transform="matrix(0.5,0,0,0.5,42.040939,-158.30444)"> + <rect + y="373.03476" + x="59.186138" + height="576" + width="720" + id="rect2993" + style="color:#000000;fill:#000000;stroke:#000000;stroke-width:2px;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" /> + <rect + y="409.03476" + x="59.186138" + height="504" + width="720" + id="rect2995" + style="color:#000000;fill:#ffffff;stroke:#ff0000;stroke-width:2px;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" /> + </g> + <rect + style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ff0000;stroke-width:4;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" + id="rect3001-5" + width="356.93597" + height="248.66312" + x="73.139694" + y="47.699894" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.99999988px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" + d="M 119.40168,123.4643 75.898647,50.852713" + id="path3003-3" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.99999988px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" + d="M 119.6764,220.30008 76.173359,292.91167" + id="path3003-2-1" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.99999988px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" + d="m 383.11031,220.01077 43.50304,72.61159" + id="path3003-2-6-6" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.99999988px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" + d="M 383.67493,123.63022 427.17796,51.018628" + id="path3003-2-6-1-2" + inkscape:connector-curvature="0" /> + <text + xml:space="preserve" + style="font-size:31.10634041px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Latin Modern Sans;-inkscape-font-specification:Latin Modern Sans" + x="218.78021" + y="72.278893" + id="text4289-2" + sodipodi:linespacing="125%" + transform="scale(0.77402823,1.2919425)"><tspan + sodipodi:role="line" + x="218.78021" + y="72.278893" + id="tspan4293-6">My scope image</tspan></text> + <path + sodipodi:type="arc" + style="color:#000000;fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:#0000ff;stroke-width:0;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" + id="path4297-6" + sodipodi:cx="66.00634" + sodipodi:cy="392.02936" + sodipodi:rx="19.128368" + sodipodi:ry="19.128368" + d="m 85.134708,392.02936 a 19.128368,19.128368 0 1 1 -38.256736,0 19.128368,19.128368 0 1 1 38.256736,0 z" + transform="matrix(1.5048241,0,0,2.5117253,96.288613,-775.54059)" /> + <path + sodipodi:type="star" + style="color:#000000;fill:#808000;fill-opacity:1;fill-rule:nonzero;stroke:#808000;stroke-width:0;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" + id="path4299-6" + sodipodi:sides="5" + sodipodi:cx="76.513474" + sodipodi:cy="378.82809" + sodipodi:r1="37.006886" + sodipodi:r2="18.503443" + sodipodi:arg1="2.861293" + sodipodi:arg2="3.4896115" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 40.950871,389.06581 18.168437,-16.54806 -3.331932,-24.34807 21.352497,12.16558 22.12677,-10.69283 -4.971868,24.0668 17.007025,17.73955 -24.425277,2.70852 -11.615849,21.65647 -10.123785,-22.39284 z" + inkscape:transform-center-x="3.2284995" + inkscape:transform-center-y="-3.7074407" + transform="matrix(1.0899007,0,0,1.8191701,221.12185,-485.77846)" /> + <g + id="g4546"> + <text + sodipodi:linespacing="125%" + id="text4415" + y="39.445469" + x="-21.738394" + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Latin Modern Mono;-inkscape-font-specification:Latin Modern Mono" + xml:space="preserve"><tspan + y="39.445469" + x="-21.738394" + id="tspan4417" + sodipodi:role="line">36 pixels</tspan></text> + <path + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" + id="path4419-3" + d="m 60.126683,65.320801 0,-18.125005" + style="color:#000000;fill:none;stroke:#000000;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" /> + <path + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" + id="path4419-3-2" + d="m 60.107467,7.7999961 0,18.1250059" + style="color:#000000;fill:none;stroke:#000000;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" /> + </g> + <g + transform="translate(0,271.37284)" + id="g4546-3"> + <text + sodipodi:linespacing="125%" + id="text4415-0" + y="39.445469" + x="-21.738394" + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Latin Modern Mono;-inkscape-font-specification:Latin Modern Mono" + xml:space="preserve"><tspan + y="39.445469" + x="-21.738394" + id="tspan4417-4" + sodipodi:role="line">36 pixels</tspan></text> + <path + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" + id="path4419-3-6" + d="m 60.126683,65.320801 0,-18.125005" + style="color:#000000;fill:none;stroke:#000000;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" /> + <path + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" + id="path4419-3-2-6" + d="m 60.107467,7.7999961 0,18.1250059" + style="color:#000000;fill:none;stroke:#000000;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" /> + </g> + </g> +</svg> diff --git a/doc/manual/diagrams/pipeline2.svg b/doc/manual/diagrams/pipeline2.svg new file mode 100644 index 000000000..eac77b401 --- /dev/null +++ b/doc/manual/diagrams/pipeline2.svg @@ -0,0 +1,332 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + 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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="744.09448819" + height="1052.3622047" + id="svg2" + version="1.1" + inkscape:version="0.48.4 r9939" + sodipodi:docname="pipeline2.svg"> + <defs + id="defs4"> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow2Mend" + style="overflow:visible;"> + <path + id="path3804" + style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(0.6) rotate(180) translate(0,0)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-2" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3804-6" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-6" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3804-68" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-27" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3804-3" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-63" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3804-0" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="marker4324" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4326" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="marker4328" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4330" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="marker4332" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4334" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-4" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3804-37" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-0" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3804-69" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-62" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3804-8" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-8" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3804-7" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="marker4517" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4519" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-5" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3804-9" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="marker4564" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4566" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.68026787" + inkscape:cx="68.529071" + inkscape:cy="731.88908" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1366" + inkscape:window-height="714" + inkscape:window-x="1024" + inkscape:window-y="27" + inkscape:window-maximized="1" /> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <rect + style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ff0000;stroke-width:4;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" + id="rect3001-5" + width="356.93597" + height="248.66312" + x="73.139694" + y="47.699894" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.99999988px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" + d="M 119.40168,123.4643 75.898647,50.852713" + id="path3003-3" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.99999988px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" + d="M 119.6764,220.30008 76.173359,292.91167" + id="path3003-2-1" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.99999988px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" + d="m 383.11031,220.01077 43.50304,72.61159" + id="path3003-2-6-6" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.99999988px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" + d="M 383.67493,123.63022 427.17796,51.018628" + id="path3003-2-6-1-2" + inkscape:connector-curvature="0" /> + <text + xml:space="preserve" + style="font-size:31.10634041px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Latin Modern Sans;-inkscape-font-specification:Latin Modern Sans" + x="218.78021" + y="72.278893" + id="text4289-2" + sodipodi:linespacing="125%" + transform="scale(0.77402823,1.2919425)"><tspan + sodipodi:role="line" + x="218.78021" + y="72.278893" + id="tspan4293-6">My scope image</tspan></text> + <path + sodipodi:type="arc" + style="color:#000000;fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:#0000ff;stroke-width:0;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" + id="path4297-6" + sodipodi:cx="66.00634" + sodipodi:cy="392.02936" + sodipodi:rx="19.128368" + sodipodi:ry="19.128368" + d="m 85.134708,392.02936 a 19.128368,19.128368 0 1 1 -38.256736,0 19.128368,19.128368 0 1 1 38.256736,0 z" + transform="matrix(1.5048241,0,0,2.5117253,96.288613,-775.54059)" /> + <path + sodipodi:type="star" + style="color:#000000;fill:#808000;fill-opacity:1;fill-rule:nonzero;stroke:#808000;stroke-width:0;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" + id="path4299-6" + sodipodi:sides="5" + sodipodi:cx="76.513474" + sodipodi:cy="378.82809" + sodipodi:r1="37.006886" + sodipodi:r2="18.503443" + sodipodi:arg1="2.861293" + sodipodi:arg2="3.4896115" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 40.950871,389.06581 18.168437,-16.54806 -3.331932,-24.34807 21.352497,12.16558 22.12677,-10.69283 -4.971868,24.0668 17.007025,17.73955 -24.425277,2.70852 -11.615849,21.65647 -10.123785,-22.39284 z" + inkscape:transform-center-x="3.2284995" + inkscape:transform-center-y="-3.7074407" + transform="matrix(1.0899007,0,0,1.8191701,221.12185,-485.77846)" /> + </g> +</svg> diff --git a/doc/manual/diagrams/pipeline3.svg b/doc/manual/diagrams/pipeline3.svg new file mode 100644 index 000000000..976418b1a --- /dev/null +++ b/doc/manual/diagrams/pipeline3.svg @@ -0,0 +1,336 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + 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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="744.09448819" + height="1052.3622047" + id="svg2" + version="1.1" + inkscape:version="0.48.4 r9939" + sodipodi:docname="pipeline3.svg"> + <defs + id="defs4"> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow2Mend" + style="overflow:visible;"> + <path + id="path3804" + style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(0.6) rotate(180) translate(0,0)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-2" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3804-6" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-6" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3804-68" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-27" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3804-3" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-63" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3804-0" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="marker4324" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4326" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="marker4328" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4330" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="marker4332" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4334" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-4" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3804-37" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-0" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3804-69" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-62" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3804-8" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-8" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3804-7" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="marker4517" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4519" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-5" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3804-9" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="marker4564" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4566" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.68026787" + inkscape:cx="-16.846029" + inkscape:cy="731.88908" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1366" + inkscape:window-height="714" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" /> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + id="g4634" + transform="matrix(1.3949981,0,0,0.80970039,-33.234153,29.7975)"> + <rect + y="47.699894" + x="73.139694" + height="248.66312" + width="356.93597" + id="rect3001-5" + style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ff0000;stroke-width:3.76366544;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" /> + <path + inkscape:connector-curvature="0" + id="path3003-3" + d="M 119.40168,123.4643 75.898647,50.852713" + style="fill:none;stroke:#000000;stroke-width:0.94091618px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" /> + <path + inkscape:connector-curvature="0" + id="path3003-2-1" + d="M 119.6764,220.30008 76.173359,292.91167" + style="fill:none;stroke:#000000;stroke-width:0.94091618px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" /> + <path + inkscape:connector-curvature="0" + id="path3003-2-6-6" + d="m 383.11031,220.01077 43.50304,72.61159" + style="fill:none;stroke:#000000;stroke-width:0.94091618px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" /> + <path + inkscape:connector-curvature="0" + id="path3003-2-6-1-2" + d="M 383.67493,123.63022 427.17796,51.018628" + style="fill:none;stroke:#000000;stroke-width:0.94091618px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" /> + <text + transform="scale(0.77402823,1.2919425)" + sodipodi:linespacing="125%" + id="text4289-2" + y="72.278893" + x="218.78021" + style="font-size:31.10634041px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Latin Modern Sans;-inkscape-font-specification:Latin Modern Sans" + xml:space="preserve"><tspan + id="tspan4293-6" + y="72.278893" + x="218.78021" + sodipodi:role="line">My scope image</tspan></text> + <path + transform="matrix(1.5048241,0,0,2.5117253,96.288613,-775.54059)" + d="m 85.134708,392.02936 c 0,10.5643 -8.564062,19.12837 -19.128368,19.12837 -10.564306,0 -19.128368,-8.56407 -19.128368,-19.12837 0,-10.56431 8.564062,-19.12837 19.128368,-19.12837 10.564306,0 19.128368,8.56406 19.128368,19.12837 z" + sodipodi:ry="19.128368" + sodipodi:rx="19.128368" + sodipodi:cy="392.02936" + sodipodi:cx="66.00634" + id="path4297-6" + style="color:#000000;fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:#0000ff;stroke-width:0;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" + sodipodi:type="arc" /> + <path + transform="matrix(1.0899007,0,0,1.8191701,221.12185,-485.77846)" + inkscape:transform-center-y="-3.7074407" + inkscape:transform-center-x="3.2284995" + d="m 40.950871,389.06581 18.168437,-16.54806 -3.331932,-24.34807 21.352497,12.16558 22.12677,-10.69283 -4.971868,24.0668 17.007025,17.73955 -24.425277,2.70852 -11.615849,21.65647 -10.123785,-22.39284 z" + inkscape:randomized="0" + inkscape:rounded="0" + inkscape:flatsided="false" + sodipodi:arg2="3.4896115" + sodipodi:arg1="2.861293" + sodipodi:r2="18.503443" + sodipodi:r1="37.006886" + sodipodi:cy="378.82809" + sodipodi:cx="76.513474" + sodipodi:sides="5" + id="path4299-6" + style="color:#000000;fill:#808000;fill-opacity:1;fill-rule:nonzero;stroke:#808000;stroke-width:0;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" + sodipodi:type="star" /> + </g> + </g> +</svg> diff --git a/doc/manual/diagrams/pipeline4.svg b/doc/manual/diagrams/pipeline4.svg new file mode 100644 index 000000000..b369b325a --- /dev/null +++ b/doc/manual/diagrams/pipeline4.svg @@ -0,0 +1,343 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + 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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="744.09448819" + height="1052.3622047" + id="svg2" + version="1.1" + inkscape:version="0.48.4 r9939" + sodipodi:docname="pipeline4.svg"> + <defs + id="defs4"> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow2Mend" + style="overflow:visible;"> + <path + id="path3804" + style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(0.6) rotate(180) translate(0,0)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-2" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3804-6" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-6" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3804-68" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-27" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3804-3" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-63" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3804-0" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="marker4324" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4326" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="marker4328" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4330" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="marker4332" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4334" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-4" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3804-37" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-0" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3804-69" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-62" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3804-8" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-8" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3804-7" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="marker4517" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4519" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-5" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3804-9" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="marker4564" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4566" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + 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" + transform="scale(-0.6,-0.6)" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1.2898269" + inkscape:cx="292.85461" + inkscape:cy="838.64023" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1366" + inkscape:window-height="714" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" /> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <rect + style="color:#000000;fill:#000000;stroke:#000000;stroke-width:0.99999987999999995px;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" + id="rect4773" + width="499.5" + height="270" + x="68.635796" + y="35.863335" /> + <g + id="g4634" + transform="matrix(1.3905207,0,0,0.8071016,-32.107615,30.244575)"> + <rect + y="47.699894" + x="73.139694" + height="248.66312" + width="356.93597" + id="rect3001-5" + style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ff0000;stroke-width:3.77578402;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" /> + <path + inkscape:connector-curvature="0" + id="path3003-3" + d="M 119.40168,123.4643 75.898647,50.852713" + style="fill:none;stroke:#000000;stroke-width:0.94394588px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" /> + <path + inkscape:connector-curvature="0" + id="path3003-2-1" + d="M 119.6764,220.30008 76.173359,292.91167" + style="fill:none;stroke:#000000;stroke-width:0.94394588px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" /> + <path + inkscape:connector-curvature="0" + id="path3003-2-6-6" + d="m 383.11031,220.01077 43.50304,72.61159" + style="fill:none;stroke:#000000;stroke-width:0.94394588px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" /> + <path + inkscape:connector-curvature="0" + id="path3003-2-6-1-2" + d="M 383.67493,123.63022 427.17796,51.018628" + style="fill:none;stroke:#000000;stroke-width:0.94394588px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" /> + <text + transform="scale(0.77402823,1.2919425)" + sodipodi:linespacing="125%" + id="text4289-2" + y="72.278893" + x="218.78021" + style="font-size:31.10634041px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Latin Modern Sans;-inkscape-font-specification:Latin Modern Sans" + xml:space="preserve"><tspan + id="tspan4293-6" + y="72.278893" + x="218.78021" + sodipodi:role="line">My scope image</tspan></text> + <path + transform="matrix(1.5048241,0,0,2.5117253,96.288613,-775.54059)" + d="m 85.134708,392.02936 c 0,10.5643 -8.564062,19.12837 -19.128368,19.12837 -10.564306,0 -19.128368,-8.56407 -19.128368,-19.12837 0,-10.56431 8.564062,-19.12837 19.128368,-19.12837 10.564306,0 19.128368,8.56406 19.128368,19.12837 z" + sodipodi:ry="19.128368" + sodipodi:rx="19.128368" + sodipodi:cy="392.02936" + sodipodi:cx="66.00634" + id="path4297-6" + style="color:#000000;fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:#0000ff;stroke-width:0;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" + sodipodi:type="arc" /> + <path + transform="matrix(1.0899007,0,0,1.8191701,221.12185,-485.77846)" + inkscape:transform-center-y="-3.7074407" + inkscape:transform-center-x="3.2284995" + d="m 40.950871,389.06581 18.168437,-16.54806 -3.331932,-24.34807 21.352497,12.16558 22.12677,-10.69283 -4.971868,24.0668 17.007025,17.73955 -24.425277,2.70852 -11.615849,21.65647 -10.123785,-22.39284 z" + inkscape:randomized="0" + inkscape:rounded="0" + inkscape:flatsided="false" + sodipodi:arg2="3.4896115" + sodipodi:arg1="2.861293" + sodipodi:r2="18.503443" + sodipodi:r1="37.006886" + sodipodi:cy="378.82809" + sodipodi:cx="76.513474" + sodipodi:sides="5" + id="path4299-6" + style="color:#000000;fill:#808000;fill-opacity:1;fill-rule:nonzero;stroke:#808000;stroke-width:0;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" + sodipodi:type="star" /> + </g> + </g> +</svg> diff --git a/src/lib/encoder.cc b/src/lib/encoder.cc index 5dc9e47c7..0756586a9 100644 --- a/src/lib/encoder.cc +++ b/src/lib/encoder.cc @@ -106,8 +106,8 @@ Encoder::process_end () /* Keep waking workers until the queue is empty */ while (!_queue.empty ()) { - _condition.notify_all (); - _condition.wait (lock); + _empty_condition.notify_all (); + _full_condition.wait (lock); } lock.unlock (); @@ -192,7 +192,7 @@ Encoder::process_video (shared_ptr<PlayerVideoFrame> pvf) /* Wait until the queue has gone down a bit */ while (_queue.size() >= _threads.size() * 2 && !_terminate) { LOG_TIMING ("decoder sleeps with queue of %1", _queue.size()); - _condition.wait (lock); + _full_condition.wait (lock); LOG_TIMING ("decoder wakes with queue of %1", _queue.size()); } @@ -223,8 +223,11 @@ Encoder::process_video (shared_ptr<PlayerVideoFrame> pvf) _film->log() ) )); - - _condition.notify_all (); + + /* The queue might not be empty any more, so notify anything which is + waiting on that. + */ + _empty_condition.notify_all (); } if (pvf->eyes() != EYES_LEFT) { @@ -244,7 +247,8 @@ Encoder::terminate_threads () { boost::mutex::scoped_lock lock (_mutex); _terminate = true; - _condition.notify_all (); + _full_condition.notify_all (); + _empty_condition.notify_all (); } for (list<boost::thread *>::iterator i = _threads.begin(); i != _threads.end(); ++i) { @@ -267,12 +271,12 @@ try */ int remote_backoff = 0; - while (1) { + while (true) { LOG_TIMING ("[%1] encoder thread sleeps", boost::this_thread::get_id()); boost::mutex::scoped_lock lock (_mutex); while (_queue.empty () && !_terminate) { - _condition.wait (lock); + _empty_condition.wait (lock); } if (_terminate) { @@ -334,8 +338,9 @@ try dcpomatic_sleep (remote_backoff); } + /* The queue might not be full any more, so notify anything that is waiting on that */ lock.lock (); - _condition.notify_all (); + _full_condition.notify_all (); } } catch (...) diff --git a/src/lib/encoder.h b/src/lib/encoder.h index 678cdf04e..6bb97012a 100644 --- a/src/lib/encoder.h +++ b/src/lib/encoder.h @@ -110,7 +110,10 @@ private: std::list<boost::shared_ptr<DCPVideoFrame> > _queue; std::list<boost::thread *> _threads; mutable boost::mutex _mutex; - boost::condition _condition; + /** condition to manage thread wakeups when we have nothing to do */ + boost::condition _empty_condition; + /** condition to manage thread wakeups when we have too much to do */ + boost::condition _full_condition; boost::shared_ptr<Writer> _writer; Waker _waker; diff --git a/src/lib/film.cc b/src/lib/film.cc index b01a70b72..1456314be 100644 --- a/src/lib/film.cc +++ b/src/lib/film.cc @@ -77,9 +77,11 @@ using boost::to_upper_copy; using boost::ends_with; using boost::starts_with; using boost::optional; +using boost::is_any_of; using dcp::Size; using dcp::Signer; using dcp::raw_convert; +using dcp::raw_convert; #define LOG_GENERAL(...) log()->log (String::compose (__VA_ARGS__), Log::TYPE_GENERAL); #define LOG_GENERAL_NC(...) log()->log (__VA_ARGS__, Log::TYPE_GENERAL); @@ -491,16 +493,39 @@ Film::isdcf_name (bool if_created_now) const stringstream d; string raw_name = name (); + + /* Split the raw name up into words */ + vector<string> words; + split (words, raw_name, is_any_of (" ")); + string fixed_name; - bool cap_next = true; - for (size_t i = 0; i < raw_name.length(); ++i) { - if (raw_name[i] == ' ') { - cap_next = true; - } else if (cap_next) { - fixed_name += toupper (raw_name[i]); - cap_next = false; - } else { - fixed_name += tolower (raw_name[i]); + + /* Add each word to fixed_name */ + for (vector<string>::const_iterator i = words.begin(); i != words.end(); ++i) { + string w = *i; + + /* First letter is always capitalised */ + w[0] = toupper (w[0]); + + /* Count caps in w */ + size_t caps = 0; + for (size_t i = 0; i < w.size(); ++i) { + if (isupper (w[i])) { + ++caps; + } + } + + /* If w is all caps make the rest of it lower case, otherwise + leave it alone. + */ + if (caps == w.size ()) { + for (size_t i = 1; i < w.size(); ++i) { + w[i] = tolower (w[i]); + } + } + + for (size_t i = 0; i < w.size(); ++i) { + fixed_name += w[i]; } } @@ -829,7 +854,7 @@ Film::j2c_path (int f, Eyes e, bool t) const return file (p); } -/** Find all the DCPs in our directory that can be libdcp::DCP::read() and return details of their CPLs */ +/** Find all the DCPs in our directory that can be dcp::DCP::read() and return details of their CPLs */ vector<CPLSummary> Film::cpls () const { @@ -1027,13 +1052,14 @@ Film::make_kdm ( shared_ptr<dcp::Certificate> target, boost::filesystem::path cpl_file, dcp::LocalTime from, - dcp::LocalTime until + dcp::LocalTime until, + dcp::Formulation formulation ) const { shared_ptr<const dcp::CPL> cpl (new dcp::CPL (cpl_file)); return dcp::DecryptedKDM ( cpl, from, until, "DCP-o-matic", cpl->content_title_text(), dcp::LocalTime().as_string() - ).encrypt (make_signer(), target); + ).encrypt (make_signer(), target, formulation); } list<dcp::EncryptedKDM> @@ -1041,13 +1067,14 @@ Film::make_kdms ( list<shared_ptr<Screen> > screens, boost::filesystem::path dcp, dcp::LocalTime from, - dcp::LocalTime until + dcp::LocalTime until, + dcp::Formulation formulation ) const { list<dcp::EncryptedKDM> kdms; for (list<shared_ptr<Screen> >::iterator i = screens.begin(); i != screens.end(); ++i) { - kdms.push_back (make_kdm ((*i)->certificate, dcp, from, until)); + kdms.push_back (make_kdm ((*i)->certificate, dcp, from, until, formulation)); } return kdms; diff --git a/src/lib/film.h b/src/lib/film.h index a44c606d6..178fd9002 100644 --- a/src/lib/film.h +++ b/src/lib/film.h @@ -123,14 +123,16 @@ public: boost::shared_ptr<dcp::Certificate> target, boost::filesystem::path cpl_file, dcp::LocalTime from, - dcp::LocalTime until + dcp::LocalTime until, + dcp::Formulation formulation ) const; std::list<dcp::EncryptedKDM> make_kdms ( std::list<boost::shared_ptr<Screen> >, boost::filesystem::path cpl_file, dcp::LocalTime from, - dcp::LocalTime until + dcp::LocalTime until, + dcp::Formulation formulation ) const; dcp::Key key () const { @@ -148,7 +150,7 @@ public: NONE, NAME, USE_ISDCF_NAME, - /** The playlist's content list has changed (i.e. content has been added, moved around or removed) */ + /** The playlist's content list has changed (i.e. content has been added or removed) */ CONTENT, DCP_CONTENT_TYPE, CONTAINER, diff --git a/src/lib/image.cc b/src/lib/image.cc index 2ce3738b9..680c063f1 100644 --- a/src/lib/image.cc +++ b/src/lib/image.cc @@ -322,6 +322,7 @@ Image::make_black () case PIX_FMT_RGBA: case PIX_FMT_ABGR: case PIX_FMT_BGRA: + case PIX_FMT_RGB555LE: memset (data()[0], 0, lines(0) * stride()[0]); break; diff --git a/src/lib/kdm.cc b/src/lib/kdm.cc index 5754fd469..dd2b756c1 100644 --- a/src/lib/kdm.cc +++ b/src/lib/kdm.cc @@ -22,6 +22,7 @@ #include <quickmail.h> #include <zip.h> #include <dcp/encrypted_kdm.h> +#include <dcp/types.h> #include "kdm.h" #include "cinema.h" #include "exceptions.h" @@ -105,10 +106,11 @@ make_screen_kdms ( list<shared_ptr<Screen> > screens, boost::filesystem::path cpl, dcp::LocalTime from, - dcp::LocalTime to + dcp::LocalTime to, + dcp::Formulation formulation ) { - list<dcp::EncryptedKDM> kdms = film->make_kdms (screens, cpl, from, to); + list<dcp::EncryptedKDM> kdms = film->make_kdms (screens, cpl, from, to, formulation); list<ScreenKDM> screen_kdms; @@ -129,10 +131,11 @@ make_cinema_kdms ( list<shared_ptr<Screen> > screens, boost::filesystem::path cpl, dcp::LocalTime from, - dcp::LocalTime to + dcp::LocalTime to, + dcp::Formulation formulation ) { - list<ScreenKDM> screen_kdms = make_screen_kdms (film, screens, cpl, from, to); + list<ScreenKDM> screen_kdms = make_screen_kdms (film, screens, cpl, from, to, formulation); list<CinemaKDMs> cinema_kdms; while (!screen_kdms.empty ()) { @@ -175,10 +178,11 @@ write_kdm_files ( boost::filesystem::path cpl, dcp::LocalTime from, dcp::LocalTime to, + dcp::Formulation formulation, boost::filesystem::path directory ) { - list<ScreenKDM> screen_kdms = make_screen_kdms (film, screens, cpl, from, to); + list<ScreenKDM> screen_kdms = make_screen_kdms (film, screens, cpl, from, to, formulation); /* Write KDMs to the specified directory */ for (list<ScreenKDM>::iterator i = screen_kdms.begin(); i != screen_kdms.end(); ++i) { @@ -195,10 +199,11 @@ write_kdm_zip_files ( boost::filesystem::path cpl, dcp::LocalTime from, dcp::LocalTime to, + dcp::Formulation formulation, boost::filesystem::path directory ) { - list<CinemaKDMs> cinema_kdms = make_cinema_kdms (film, screens, cpl, from, to); + list<CinemaKDMs> cinema_kdms = make_cinema_kdms (film, screens, cpl, from, to, formulation); for (list<CinemaKDMs>::const_iterator i = cinema_kdms.begin(); i != cinema_kdms.end(); ++i) { boost::filesystem::path path = directory; @@ -213,10 +218,11 @@ email_kdms ( list<shared_ptr<Screen> > screens, boost::filesystem::path cpl, dcp::LocalTime from, - dcp::LocalTime to + dcp::LocalTime to, + dcp::Formulation formulation ) { - list<CinemaKDMs> cinema_kdms = make_cinema_kdms (film, screens, cpl, from, to); + list<CinemaKDMs> cinema_kdms = make_cinema_kdms (film, screens, cpl, from, to, formulation); for (list<CinemaKDMs>::const_iterator i = cinema_kdms.begin(); i != cinema_kdms.end(); ++i) { diff --git a/src/lib/kdm.h b/src/lib/kdm.h index 023107a82..b80ef454f 100644 --- a/src/lib/kdm.h +++ b/src/lib/kdm.h @@ -29,6 +29,7 @@ extern void write_kdm_files ( boost::filesystem::path cpl, dcp::LocalTime from, dcp::LocalTime to, + dcp::Formulation formulation, boost::filesystem::path directory ); @@ -38,6 +39,7 @@ extern void write_kdm_zip_files ( boost::filesystem::path cpl, dcp::LocalTime from, dcp::LocalTime to, + dcp::Formulation formulation, boost::filesystem::path directory ); @@ -46,6 +48,7 @@ extern void email_kdms ( std::list<boost::shared_ptr<Screen> > screens, boost::filesystem::path cpl, dcp::LocalTime from, - dcp::LocalTime to + dcp::LocalTime to, + dcp::Formulation formulation ); diff --git a/src/lib/playlist.cc b/src/lib/playlist.cc index 1c268ca11..710b9cc09 100644 --- a/src/lib/playlist.cc +++ b/src/lib/playlist.cc @@ -371,8 +371,6 @@ Playlist::move_earlier (shared_ptr<Content> c) (*previous)->set_position (p + c->length_after_trim ()); c->set_position (p); sort (_content.begin(), _content.end(), ContentSorter ()); - - Changed (); } void @@ -398,6 +396,4 @@ Playlist::move_later (shared_ptr<Content> c) (*next)->set_position (c->position ()); c->set_position (p + c->length_after_trim ()); sort (_content.begin(), _content.end(), ContentSorter ()); - - Changed (); } diff --git a/src/lib/playlist.h b/src/lib/playlist.h index 3e5093aca..9e3dbb6df 100644 --- a/src/lib/playlist.h +++ b/src/lib/playlist.h @@ -78,8 +78,12 @@ public: void repeat (ContentList, int); + /** Emitted when content has been added to or removed from the playlist */ mutable boost::signals2::signal<void ()> Changed; - /** Third parameter is true if signals are currently being emitted frequently */ + /** Emitted when something about a piece of our content has changed; + * these emissions include when the position of the content changes. + * Third parameter is true if signals are currently being emitted frequently. + */ mutable boost::signals2::signal<void (boost::weak_ptr<Content>, int, bool)> ContentChanged; private: diff --git a/src/lib/po/de_DE.po b/src/lib/po/de_DE.po index 9f6380c36..6b73bea17 100644 --- a/src/lib/po/de_DE.po +++ b/src/lib/po/de_DE.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-06-23 00:25+0100\n" +"POT-Creation-Date: 2014-06-24 14:53+0100\n" "PO-Revision-Date: 2014-06-21 03:55+0100\n" "Last-Translator: Carsten Kurz\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -106,7 +106,7 @@ msgstr "Center" msgid "Checking existing image data" msgstr "Überprüfe bestehende Bilddateien" -#: src/lib/writer.cc:464 +#: src/lib/writer.cc:471 msgid "Computing audio digest" msgstr "Tonübersicht berechnen" @@ -114,7 +114,7 @@ msgstr "Tonübersicht berechnen" msgid "Computing digest" msgstr "Zusammenfassung berechnen" -#: src/lib/writer.cc:460 +#: src/lib/writer.cc:467 msgid "Computing image digest" msgstr "Bildübersicht berechnen" @@ -493,7 +493,7 @@ msgstr "" msgid "There was not enough memory to do this." msgstr "Zu wenig Speicher für diese Operation." -#: src/lib/film.cc:412 +#: src/lib/film.cc:413 msgid "" "This film was created with a newer version of DCP-o-matic, and it cannot be " "loaded into this version. Sorry!" @@ -502,7 +502,7 @@ msgstr "" "kann leider nicht mit dieser älteren Version geladen werden. Sie müssen den " "Film neu erstellen. Sorry!" -#: src/lib/film.cc:404 +#: src/lib/film.cc:405 msgid "" "This film was created with an older version of DCP-o-matic, and " "unfortunately it cannot be loaded into this version. You will need to " @@ -564,7 +564,7 @@ msgstr "X" msgid "Yet Another Deinterlacing Filter" msgstr "Und ein weiterer De-Interlacer..." -#: src/lib/film.cc:309 +#: src/lib/film.cc:310 msgid "You must add some content to the DCP before creating it" msgstr "Sie müssen erst Inhalte hinzufügen bevor Sie ein DCP erstellen können!" @@ -576,7 +576,7 @@ msgstr "[Bewegte Bilder]" msgid "[still]" msgstr "[Standbild]" -#: src/lib/film.cc:257 +#: src/lib/film.cc:258 msgid "cannot contain slashes" msgstr "Darf keine Schrägstriche enthalten" @@ -588,11 +588,11 @@ msgstr "Zeit zur Verbindung abgelaufen" msgid "connecting" msgstr "verbinde..." -#: src/lib/film.cc:305 +#: src/lib/film.cc:306 msgid "container" msgstr "Containerformat" -#: src/lib/film.cc:313 +#: src/lib/film.cc:314 msgid "content type" msgstr "Inhaltsbeschreibung" @@ -616,7 +616,7 @@ msgstr "Keine Spur-Information gefunden" msgid "could not find video decoder" msgstr "Bild-Dekoder nicht gefunden" -#: src/lib/writer.cc:428 +#: src/lib/writer.cc:435 msgid "could not move audio MXF into the DCP (%1)" msgstr "Ton MXF kann nicht in das DCP verschoben werden (%1)" @@ -712,7 +712,7 @@ msgstr "wird verschoben" msgid "multi-part subtitles not yet supported" msgstr "Mehr-Segment Untertitel werden noch nicht unterstützt" -#: src/lib/film.cc:257 src/lib/film.cc:317 +#: src/lib/film.cc:258 src/lib/film.cc:318 msgid "name" msgstr "Name" diff --git a/src/lib/po/es_ES.po b/src/lib/po/es_ES.po index d243f0b9a..813600fe5 100644 --- a/src/lib/po/es_ES.po +++ b/src/lib/po/es_ES.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: LIBDCPOMATIC\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-06-23 00:25+0100\n" +"POT-Creation-Date: 2014-06-24 14:53+0100\n" "PO-Revision-Date: 2014-04-20 10:12-0500\n" "Last-Translator: Manuel AC <manuel.acevedo@civantos.>\n" "Language-Team: Manuel AC <manuel.acevedo@civantos.com>\n" @@ -105,7 +105,7 @@ msgstr "Centro" msgid "Checking existing image data" msgstr "Comprobando las imágenes existentes" -#: src/lib/writer.cc:464 +#: src/lib/writer.cc:471 msgid "Computing audio digest" msgstr "Calculando la firma resumen del audio" @@ -113,7 +113,7 @@ msgstr "Calculando la firma resumen del audio" msgid "Computing digest" msgstr "Calculando la firma resumen" -#: src/lib/writer.cc:460 +#: src/lib/writer.cc:467 msgid "Computing image digest" msgstr "Calculando la firma resumen de imagen" @@ -487,7 +487,7 @@ msgstr "" msgid "There was not enough memory to do this." msgstr "No hubo suficiente memoria para hacer esto." -#: src/lib/film.cc:412 +#: src/lib/film.cc:413 msgid "" "This film was created with a newer version of DCP-o-matic, and it cannot be " "loaded into this version. Sorry!" @@ -496,7 +496,7 @@ msgstr "" "desgraciadamente no s puede cargar. Necesitas crear una nueva película, " "volver a añadir y configurar ton contenido. ¡Lo siento!" -#: src/lib/film.cc:404 +#: src/lib/film.cc:405 msgid "" "This film was created with an older version of DCP-o-matic, and " "unfortunately it cannot be loaded into this version. You will need to " @@ -558,7 +558,7 @@ msgstr "X" msgid "Yet Another Deinterlacing Filter" msgstr "Yet Another Deinterlacing Filter" -#: src/lib/film.cc:309 +#: src/lib/film.cc:310 msgid "You must add some content to the DCP before creating it" msgstr "Tienes que añadir contenido al DCP antes de crearlo." @@ -570,7 +570,7 @@ msgstr "[imágenes en movimiento]" msgid "[still]" msgstr "[imagen fija]" -#: src/lib/film.cc:257 +#: src/lib/film.cc:258 msgid "cannot contain slashes" msgstr "no puede contener barras" @@ -582,11 +582,11 @@ msgstr "tiempo de conexión agotado" msgid "connecting" msgstr "conectando" -#: src/lib/film.cc:305 +#: src/lib/film.cc:306 msgid "container" msgstr "continente" -#: src/lib/film.cc:313 +#: src/lib/film.cc:314 msgid "content type" msgstr "tipo de contenido" @@ -610,7 +610,7 @@ msgstr "no se pudo encontrar información del flujo" msgid "could not find video decoder" msgstr "no se pudo encontrar decodificador de vídeo" -#: src/lib/writer.cc:428 +#: src/lib/writer.cc:435 msgid "could not move audio MXF into the DCP (%1)" msgstr "no s puedo mover el audio MXF en el DCP (%1)" @@ -706,7 +706,7 @@ msgstr "moviendo" msgid "multi-part subtitles not yet supported" msgstr "todavía no se soportan subtítulos en múltiples partes" -#: src/lib/film.cc:257 src/lib/film.cc:317 +#: src/lib/film.cc:258 src/lib/film.cc:318 msgid "name" msgstr "nombre" diff --git a/src/lib/po/fr_FR.po b/src/lib/po/fr_FR.po index 117565dce..6cef1b3dc 100644 --- a/src/lib/po/fr_FR.po +++ b/src/lib/po/fr_FR.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: DCP-o-matic FRENCH\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-06-23 00:25+0100\n" +"POT-Creation-Date: 2014-06-24 14:53+0100\n" "PO-Revision-Date: 2014-06-20 15:53+0100\n" "Last-Translator: \n" "Language-Team: \n" @@ -105,7 +105,7 @@ msgstr "Centre" msgid "Checking existing image data" msgstr "Recherche de données images existantes" -#: src/lib/writer.cc:464 +#: src/lib/writer.cc:471 msgid "Computing audio digest" msgstr "Fabrication rendu audio" @@ -113,7 +113,7 @@ msgstr "Fabrication rendu audio" msgid "Computing digest" msgstr "fabrication rendu" -#: src/lib/writer.cc:460 +#: src/lib/writer.cc:467 msgid "Computing image digest" msgstr "Fabrication rendu image" @@ -479,7 +479,7 @@ msgstr "" msgid "There was not enough memory to do this." msgstr "Il n'y avait pas assez de mémoire pour faire cela." -#: src/lib/film.cc:412 +#: src/lib/film.cc:413 msgid "" "This film was created with a newer version of DCP-o-matic, and it cannot be " "loaded into this version. Sorry!" @@ -487,7 +487,7 @@ msgstr "" "Ce film a été créé avec une nouvelle version de DCP-o-matic et il ne peut " "être ouvert dans cette version du programme. Désolé!" -#: src/lib/film.cc:404 +#: src/lib/film.cc:405 msgid "" "This film was created with an older version of DCP-o-matic, and " "unfortunately it cannot be loaded into this version. You will need to " @@ -549,7 +549,7 @@ msgstr "X" msgid "Yet Another Deinterlacing Filter" msgstr "Un autre filtre de désentrelacement" -#: src/lib/film.cc:309 +#: src/lib/film.cc:310 msgid "You must add some content to the DCP before creating it" msgstr "Ajoutez un contenu pour créer le DCP" @@ -561,7 +561,7 @@ msgstr "[Déplacement d'images]" msgid "[still]" msgstr "[restant]" -#: src/lib/film.cc:257 +#: src/lib/film.cc:258 msgid "cannot contain slashes" msgstr "slash interdit" @@ -573,11 +573,11 @@ msgstr "temps de connexion expiré" msgid "connecting" msgstr "connexion" -#: src/lib/film.cc:305 +#: src/lib/film.cc:306 msgid "container" msgstr "conteneur" -#: src/lib/film.cc:313 +#: src/lib/film.cc:314 msgid "content type" msgstr "type de contenu" @@ -601,7 +601,7 @@ msgstr "information du flux introuvable" msgid "could not find video decoder" msgstr "décodeur vidéo introuvable" -#: src/lib/writer.cc:428 +#: src/lib/writer.cc:435 msgid "could not move audio MXF into the DCP (%1)" msgstr "ne peut déplacer un MXF son dans le DCP (%1)" @@ -699,7 +699,7 @@ msgstr "déplacement" msgid "multi-part subtitles not yet supported" msgstr "sous-titres en plusieurs parties non supportés" -#: src/lib/film.cc:257 src/lib/film.cc:317 +#: src/lib/film.cc:258 src/lib/film.cc:318 msgid "name" msgstr "nom" diff --git a/src/lib/po/it_IT.po b/src/lib/po/it_IT.po index fb73fa1d0..e2bce6f87 100644 --- a/src/lib/po/it_IT.po +++ b/src/lib/po/it_IT.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: IT VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-06-23 00:25+0100\n" +"POT-Creation-Date: 2014-06-24 14:53+0100\n" "PO-Revision-Date: 2014-02-03 10:48+0100\n" "Last-Translator: William Fanelli <william.f@impronte.com>\n" "Language-Team: \n" @@ -106,7 +106,7 @@ msgstr "Centro" msgid "Checking existing image data" msgstr "" -#: src/lib/writer.cc:464 +#: src/lib/writer.cc:471 msgid "Computing audio digest" msgstr "" @@ -114,7 +114,7 @@ msgstr "" msgid "Computing digest" msgstr "" -#: src/lib/writer.cc:460 +#: src/lib/writer.cc:467 msgid "Computing image digest" msgstr "" @@ -498,7 +498,7 @@ msgstr "" msgid "There was not enough memory to do this." msgstr "" -#: src/lib/film.cc:412 +#: src/lib/film.cc:413 #, fuzzy msgid "" "This film was created with a newer version of DCP-o-matic, and it cannot be " @@ -509,7 +509,7 @@ msgstr "" "un nuovo film, ri-aggiungere i tuoi contenuti e configurarlo di nuovo. Ci " "dispiace!" -#: src/lib/film.cc:404 +#: src/lib/film.cc:405 msgid "" "This film was created with an older version of DCP-o-matic, and " "unfortunately it cannot be loaded into this version. You will need to " @@ -572,7 +572,7 @@ msgstr "X" msgid "Yet Another Deinterlacing Filter" msgstr "Altro filtro di deinterlacciamento" -#: src/lib/film.cc:309 +#: src/lib/film.cc:310 msgid "You must add some content to the DCP before creating it" msgstr "Devi aggiungere dei contenuti al DCP prima di crearlo" @@ -585,7 +585,7 @@ msgstr "" msgid "[still]" msgstr "ancora" -#: src/lib/film.cc:257 +#: src/lib/film.cc:258 msgid "cannot contain slashes" msgstr "non può contenere barre" @@ -597,11 +597,11 @@ msgstr "connessione scaduta" msgid "connecting" msgstr "mi sto connettendo" -#: src/lib/film.cc:305 +#: src/lib/film.cc:306 msgid "container" msgstr "contenitore" -#: src/lib/film.cc:313 +#: src/lib/film.cc:314 msgid "content type" msgstr "tipo di contenuto" @@ -625,7 +625,7 @@ msgstr "non riesco a trovare informazioni sullo streaming" msgid "could not find video decoder" msgstr "non riesco a trovare il decoder video" -#: src/lib/writer.cc:428 +#: src/lib/writer.cc:435 msgid "could not move audio MXF into the DCP (%1)" msgstr "" @@ -723,7 +723,7 @@ msgstr "" msgid "multi-part subtitles not yet supported" msgstr "sottotitoli multi-part non ancora supportati" -#: src/lib/film.cc:257 src/lib/film.cc:317 +#: src/lib/film.cc:258 src/lib/film.cc:318 msgid "name" msgstr "nome" diff --git a/src/lib/po/nl_NL.po b/src/lib/po/nl_NL.po index 98f5c918c..f471ce8af 100644 --- a/src/lib/po/nl_NL.po +++ b/src/lib/po/nl_NL.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: DCP-o-matic\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-06-23 00:25+0100\n" +"POT-Creation-Date: 2014-06-24 14:53+0100\n" "PO-Revision-Date: 2014-03-30 19:39+0100\n" "Last-Translator: Theo Kooijmans <tkooijmans@universaldv.nl>\n" "Language-Team: UniversalDV <Tkooijmans@universaldv.nl>\n" @@ -106,7 +106,7 @@ msgstr "Midden" msgid "Checking existing image data" msgstr "Controleer bestaande videodata" -#: src/lib/writer.cc:464 +#: src/lib/writer.cc:471 msgid "Computing audio digest" msgstr "Verwerk audio data" @@ -114,7 +114,7 @@ msgstr "Verwerk audio data" msgid "Computing digest" msgstr "Verwerken..." -#: src/lib/writer.cc:460 +#: src/lib/writer.cc:467 msgid "Computing image digest" msgstr "Verwerk video data" @@ -491,7 +491,7 @@ msgstr "" msgid "There was not enough memory to do this." msgstr "Er was niet genoeg geheugen om dit uit te voeren." -#: src/lib/film.cc:412 +#: src/lib/film.cc:413 msgid "" "This film was created with a newer version of DCP-o-matic, and it cannot be " "loaded into this version. Sorry!" @@ -499,7 +499,7 @@ msgstr "" "Deze film is gemaakt met een nieuwere versie van DCP-o-matic en kan niet " "geopend worden. Sorry!" -#: src/lib/film.cc:404 +#: src/lib/film.cc:405 msgid "" "This film was created with an older version of DCP-o-matic, and " "unfortunately it cannot be loaded into this version. You will need to " @@ -561,7 +561,7 @@ msgstr "X" msgid "Yet Another Deinterlacing Filter" msgstr "Yet Another Deinterlacing Filter" -#: src/lib/film.cc:309 +#: src/lib/film.cc:310 msgid "You must add some content to the DCP before creating it" msgstr "U moet wat content toevoegen voor het maken van de DCP" @@ -573,7 +573,7 @@ msgstr "[bewegend beeld]" msgid "[still]" msgstr "[still]" -#: src/lib/film.cc:257 +#: src/lib/film.cc:258 msgid "cannot contain slashes" msgstr "er mag geen '\" gebruikt worden" @@ -585,11 +585,11 @@ msgstr "verbinding timeout" msgid "connecting" msgstr "verbinden" -#: src/lib/film.cc:305 +#: src/lib/film.cc:306 msgid "container" msgstr "container" -#: src/lib/film.cc:313 +#: src/lib/film.cc:314 msgid "content type" msgstr "content type" @@ -613,7 +613,7 @@ msgstr "kan geen stream informatie vinden" msgid "could not find video decoder" msgstr "kan geen videodecoder vinden" -#: src/lib/writer.cc:428 +#: src/lib/writer.cc:435 msgid "could not move audio MXF into the DCP (%1)" msgstr "kan MXF audio niet plaatsen in DCP (%1)" @@ -709,7 +709,7 @@ msgstr "bewegend" msgid "multi-part subtitles not yet supported" msgstr "ondertitels met meerdere delen worden nog niet ondersteund." -#: src/lib/film.cc:257 src/lib/film.cc:317 +#: src/lib/film.cc:258 src/lib/film.cc:318 msgid "name" msgstr "naam" diff --git a/src/lib/po/sv_SE.po b/src/lib/po/sv_SE.po index f3c0ba9d2..98d76e3bd 100644 --- a/src/lib/po/sv_SE.po +++ b/src/lib/po/sv_SE.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: DCP-o-matic\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-06-23 00:25+0100\n" +"POT-Creation-Date: 2014-06-24 14:53+0100\n" "PO-Revision-Date: 2014-01-19 08:59+0100\n" "Last-Translator: Adam Klotblixt <adam.klotblixt@gmail.com>\n" "Language-Team: \n" @@ -105,7 +105,7 @@ msgstr "Center" msgid "Checking existing image data" msgstr "Kontrollerar befintligt bilddata" -#: src/lib/writer.cc:464 +#: src/lib/writer.cc:471 msgid "Computing audio digest" msgstr "Beräknar audiosammanfattning" @@ -113,7 +113,7 @@ msgstr "Beräknar audiosammanfattning" msgid "Computing digest" msgstr "Beräknar sammanfattning" -#: src/lib/writer.cc:460 +#: src/lib/writer.cc:467 msgid "Computing image digest" msgstr "Beräknar bildsammanfattning" @@ -494,7 +494,7 @@ msgstr "" msgid "There was not enough memory to do this." msgstr "" -#: src/lib/film.cc:412 +#: src/lib/film.cc:413 #, fuzzy msgid "" "This film was created with a newer version of DCP-o-matic, and it cannot be " @@ -504,7 +504,7 @@ msgstr "" "inte öppnas i denna version. Du måste skapa en ny Film, lägga till ditt " "innehåll och konfigurera allt igen. Ursäkta!" -#: src/lib/film.cc:404 +#: src/lib/film.cc:405 msgid "" "This film was created with an older version of DCP-o-matic, and " "unfortunately it cannot be loaded into this version. You will need to " @@ -568,7 +568,7 @@ msgstr "X" msgid "Yet Another Deinterlacing Filter" msgstr "Yet Another Deinterlacing Filter" -#: src/lib/film.cc:309 +#: src/lib/film.cc:310 msgid "You must add some content to the DCP before creating it" msgstr "Du måste lägga till något innehåll till DCP:n innan du skapar den" @@ -580,7 +580,7 @@ msgstr "[rörliga bilder]" msgid "[still]" msgstr "[stillbild]" -#: src/lib/film.cc:257 +#: src/lib/film.cc:258 msgid "cannot contain slashes" msgstr "får inte innehålla snedstreck" @@ -593,11 +593,11 @@ msgstr "uppkopplingen tajmade ur" msgid "connecting" msgstr "kopplar upp" -#: src/lib/film.cc:305 +#: src/lib/film.cc:306 msgid "container" msgstr "behållare" -#: src/lib/film.cc:313 +#: src/lib/film.cc:314 msgid "content type" msgstr "innehållstyp" @@ -621,7 +621,7 @@ msgstr "kunde inte hitta information om strömmen" msgid "could not find video decoder" msgstr "kunde inte hitta video-avkodare" -#: src/lib/writer.cc:428 +#: src/lib/writer.cc:435 msgid "could not move audio MXF into the DCP (%1)" msgstr "kunde inte flytta audio-MXF in i DCP:n (%1)" @@ -719,7 +719,7 @@ msgstr "rörlig" msgid "multi-part subtitles not yet supported" msgstr "undertexter i flera delar stöds inte ännu" -#: src/lib/film.cc:257 src/lib/film.cc:317 +#: src/lib/film.cc:258 src/lib/film.cc:318 msgid "name" msgstr "namn" diff --git a/src/lib/send_kdm_email_job.cc b/src/lib/send_kdm_email_job.cc index 8af0b556a..de0322272 100644 --- a/src/lib/send_kdm_email_job.cc +++ b/src/lib/send_kdm_email_job.cc @@ -33,13 +33,15 @@ SendKDMEmailJob::SendKDMEmailJob ( list<shared_ptr<Screen> > screens, boost::filesystem::path dcp, boost::posix_time::ptime from, - boost::posix_time::ptime to + boost::posix_time::ptime to, + dcp::Formulation formulation ) : Job (f) , _screens (screens) , _dcp (dcp) , _from (from) , _to (to) + , _formulation (formulation) { } @@ -62,7 +64,7 @@ SendKDMEmailJob::run () try { set_progress_unknown (); - email_kdms (_film, _screens, _dcp, _from, _to); + email_kdms (_film, _screens, _dcp, _from, _to, _formulation); set_progress (1); set_state (FINISHED_OK); diff --git a/src/lib/send_kdm_email_job.h b/src/lib/send_kdm_email_job.h index f4d154a91..084836715 100644 --- a/src/lib/send_kdm_email_job.h +++ b/src/lib/send_kdm_email_job.h @@ -18,6 +18,7 @@ */ #include <boost/filesystem.hpp> +#include <dcp/types.h> #include "job.h" class Screen; @@ -30,7 +31,8 @@ public: std::list<boost::shared_ptr<Screen> >, boost::filesystem::path, boost::posix_time::ptime, - boost::posix_time::ptime + boost::posix_time::ptime, + dcp::Formulation ); std::string name () const; @@ -42,4 +44,5 @@ private: boost::filesystem::path _dcp; boost::posix_time::ptime _from; boost::posix_time::ptime _to; + dcp::Formulation _formulation; }; diff --git a/src/lib/server.cc b/src/lib/server.cc index 66ee2b0e3..fe792e307 100644 --- a/src/lib/server.cc +++ b/src/lib/server.cc @@ -79,7 +79,7 @@ Server::~Server () { boost::mutex::scoped_lock lm (_worker_mutex); _terminate = true; - _worker_condition.notify_all (); + _empty_condition.notify_all (); } for (vector<boost::thread*>::iterator i = _worker_threads.begin(); i != _worker_threads.end(); ++i) { @@ -139,7 +139,7 @@ Server::worker_thread () while (1) { boost::mutex::scoped_lock lock (_worker_mutex); while (_queue.empty () && !_terminate) { - _worker_condition.wait (lock); + _empty_condition.wait (lock); } if (_terminate) { @@ -194,7 +194,7 @@ Server::worker_thread () LOG_GENERAL_NC (message.str ()); } - _worker_condition.notify_all (); + _full_condition.notify_all (); } } @@ -291,11 +291,11 @@ Server::handle_accept (shared_ptr<Socket> socket, boost::system::error_code cons /* Wait until the queue has gone down a bit */ while (_queue.size() >= _worker_threads.size() * 2 && !_terminate) { - _worker_condition.wait (lock); + _full_condition.wait (lock); } _queue.push_back (socket); - _worker_condition.notify_all (); + _empty_condition.notify_all (); start_accept (); } diff --git a/src/lib/server.h b/src/lib/server.h index 9f3e99f9c..b340bba07 100644 --- a/src/lib/server.h +++ b/src/lib/server.h @@ -107,8 +107,8 @@ private: std::vector<boost::thread *> _worker_threads; std::list<boost::shared_ptr<Socket> > _queue; boost::mutex _worker_mutex; - boost::condition _worker_condition; - + boost::condition _full_condition; + boost::condition _empty_condition; boost::shared_ptr<Log> _log; bool _verbose; diff --git a/src/lib/util.h b/src/lib/util.h index 7d3afb022..094d57f40 100644 --- a/src/lib/util.h +++ b/src/lib/util.h @@ -48,7 +48,7 @@ extern "C" { #define DCPOMATIC_HELLO "Boys, you gotta learn not to talk to nuns that way" -namespace libdcp { +namespace dcp { class Signer; } diff --git a/src/lib/video_content.cc b/src/lib/video_content.cc index 05f5c538e..f52a75e70 100644 --- a/src/lib/video_content.cc +++ b/src/lib/video_content.cc @@ -408,6 +408,21 @@ VideoContent::scale_and_crop_to_fit_height () set_right_crop (crop / 2); } +void +VideoContent::set_video_frame_rate (float r) +{ + { + boost::mutex::scoped_lock lm (_mutex); + if (_video_frame_rate == r) { + return; + } + + _video_frame_rate = r; + } + + signal_changed (VideoContentProperty::VIDEO_FRAME_RATE); +} + VideoContentScale::VideoContentScale (Ratio const * r) : _ratio (r) , _scale (true) diff --git a/src/lib/video_content.h b/src/lib/video_content.h index 4206efc2c..7d9cb4f8f 100644 --- a/src/lib/video_content.h +++ b/src/lib/video_content.h @@ -116,6 +116,7 @@ public: } void set_video_frame_type (VideoFrameType); + void set_video_frame_rate (float); void set_left_crop (int); void set_right_crop (int); diff --git a/src/lib/writer.cc b/src/lib/writer.cc index 580dfe4f2..33817ca6e 100644 --- a/src/lib/writer.cc +++ b/src/lib/writer.cc @@ -139,6 +139,7 @@ Writer::write (shared_ptr<const EncodedData> encoded, int frame, Eyes eyes) boost::mutex::scoped_lock lock (_mutex); while (_queued_full_in_memory > _maximum_frames_in_memory) { + /* The queue is too big; wait until that is sorted out */ _full_condition.wait (lock); } @@ -160,7 +161,8 @@ Writer::write (shared_ptr<const EncodedData> encoded, int frame, Eyes eyes) _queue.push_back (qi); ++_queued_full_in_memory; } - + + /* Now there's something to do: wake anything wait()ing on _empty_condition */ _empty_condition.notify_all (); } @@ -170,6 +172,7 @@ Writer::fake_write (int frame, Eyes eyes) boost::mutex::scoped_lock lock (_mutex); while (_queued_full_in_memory > _maximum_frames_in_memory) { + /* The queue is too big; wait until that is sorted out */ _full_condition.wait (lock); } @@ -191,6 +194,7 @@ Writer::fake_write (int frame, Eyes eyes) _queue.push_back (qi); } + /* Now there's something to do: wake anything wait()ing on _empty_condition */ _empty_condition.notify_all (); } @@ -244,9 +248,11 @@ try while (1) { if (_finish || _queued_full_in_memory > _maximum_frames_in_memory || have_sequenced_image_at_queue_head ()) { + /* We've got something to do: go and do it */ break; } + /* Nothing to do: wait until something happens which may indicate that we do */ LOG_TIMING (N_("writer sleeps with a queue of %1"), _queue.size()); _empty_condition.wait (lock); LOG_TIMING (N_("writer wakes with a queue of %1"), _queue.size()); @@ -336,6 +342,7 @@ try --_queued_full_in_memory; } + /* The queue has probably just gone down a bit; notify anything wait()ing on _full_condition */ _full_condition.notify_all (); } } diff --git a/src/tools/dcpomatic.cc b/src/tools/dcpomatic.cc index 237fa4e58..1fb7feb7d 100644 --- a/src/tools/dcpomatic.cc +++ b/src/tools/dcpomatic.cc @@ -470,10 +470,10 @@ private: try { if (d->write_to ()) { - write_kdm_files (film, d->screens (), d->cpl (), d->from (), d->until (), d->directory ()); + write_kdm_files (film, d->screens (), d->cpl (), d->from (), d->until (), d->formulation (), d->directory ()); } else { JobManager::instance()->add ( - shared_ptr<Job> (new SendKDMEmailJob (film, d->screens (), d->cpl (), d->from (), d->until ())) + shared_ptr<Job> (new SendKDMEmailJob (film, d->screens (), d->cpl (), d->from (), d->until (), d->formulation ())) ); } } catch (dcp::NotEncryptedError& e) { diff --git a/src/tools/dcpomatic_kdm.cc b/src/tools/dcpomatic_kdm.cc index 0f2d5b8a3..fa14dd141 100644 --- a/src/tools/dcpomatic_kdm.cc +++ b/src/tools/dcpomatic_kdm.cc @@ -44,6 +44,7 @@ help () " -f, --valid-from valid from time (in local time zone) (e.g. \"2013-09-28 01:41:51\") or \"now\"\n" " -t, --valid-to valid to time (in local time zone) (e.g. \"2014-09-28 01:41:51\")\n" " -d, --valid-duration valid duration (e.g. \"1 day\", \"4 hours\", \"2 weeks\")\n" + " --formulation modified-transitional-1, dci-any or dci-specific [default modified-transitional-1]\n" " -z, --zip ZIP each cinema's KDMs into its own file\n" " -v, --verbose be verbose\n" " -c, --cinema specify a cinema, either by name or email address\n" @@ -110,6 +111,7 @@ int main (int argc, char* argv[]) bool cinemas = false; string duration_string; bool verbose = false; + dcp::Formulation formulation = dcp::MODIFIED_TRANSITIONAL_1; program_name = argv[0]; @@ -126,10 +128,11 @@ int main (int argc, char* argv[]) { "zip", no_argument, 0, 'z' }, { "duration", required_argument, 0, 'd' }, { "verbose", no_argument, 0, 'v' }, + { "formulation", required_argument, 0, 'C' }, { 0, 0, 0, 0 } }; - int c = getopt_long (argc, argv, "ho:f:t:c:A:Bzd:v", long_options, &option_index); + int c = getopt_long (argc, argv, "ho:f:t:c:A:Bzd:vC:", long_options, &option_index); if (c == -1) { break; @@ -166,6 +169,16 @@ int main (int argc, char* argv[]) case 'v': verbose = true; break; + case 'C': + if (string (optarg) == "modified-transitional-1") { + formulation = dcp::MODIFIED_TRANSITIONAL_1; + } else if (string (optarg) == "dci-any") { + formulation = dcp::DCI_ANY; + } else if (string (optarg) == "dci-specific") { + formulation = dcp::DCI_SPECIFIC; + } else { + error ("unrecognised KDM formulation " + formulation); + } } } @@ -236,7 +249,7 @@ int main (int argc, char* argv[]) } shared_ptr<dcp::Certificate> certificate (new dcp::Certificate (boost::filesystem::path (certificate_file))); - dcp::EncryptedKDM kdm = film->make_kdm (certificate, cpl, valid_from.get(), valid_to.get()); + dcp::EncryptedKDM kdm = film->make_kdm (certificate, cpl, valid_from.get(), valid_to.get(), formulation); kdm.as_xml (output); if (verbose) { cout << "Generated KDM " << output << " for certificate.\n"; @@ -260,13 +273,18 @@ int main (int argc, char* argv[]) try { if (zip) { - write_kdm_zip_files (film, (*i)->screens(), cpl, dcp::LocalTime (valid_from.get()), dcp::LocalTime (valid_to.get()), output); - + write_kdm_zip_files ( + film, (*i)->screens(), cpl, dcp::LocalTime (valid_from.get()), dcp::LocalTime (valid_to.get()), formulation, output + ); + if (verbose) { cout << "Wrote ZIP files to " << output << "\n"; } } else { - write_kdm_files (film, (*i)->screens(), cpl, dcp::LocalTime (valid_from.get()), dcp::LocalTime (valid_to.get()), output); + write_kdm_files ( + film, (*i)->screens(), cpl, dcp::LocalTime (valid_from.get()), dcp::LocalTime (valid_to.get()), formulation, output + ); + if (verbose) { cout << "Wrote KDM files to " << output << "\n"; } diff --git a/src/tools/po/de_DE.po b/src/tools/po/de_DE.po index 8d4a51bac..209458f23 100644 --- a/src/tools/po/de_DE.po +++ b/src/tools/po/de_DE.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-06-23 00:25+0100\n" +"POT-Creation-Date: 2014-06-24 14:53+0100\n" "PO-Revision-Date: 2014-06-21 02:38+0100\n" "Last-Translator: Carsten Kurz\n" "Language-Team: LANGUAGE <LL@li.org>\n" diff --git a/src/tools/po/es_ES.po b/src/tools/po/es_ES.po index 1fb15f5a0..374877caf 100644 --- a/src/tools/po/es_ES.po +++ b/src/tools/po/es_ES.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: DCPOMATIC\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-06-23 00:25+0100\n" +"POT-Creation-Date: 2014-06-24 14:53+0100\n" "PO-Revision-Date: 2014-04-20 10:21-0500\n" "Last-Translator: Manuel AC <manuel.acevedo@civantos.>\n" "Language-Team: Manuel AC <manuel.acevedo@civantos.com>\n" diff --git a/src/tools/po/fr_FR.po b/src/tools/po/fr_FR.po index cb81a4995..fca31b0b5 100644 --- a/src/tools/po/fr_FR.po +++ b/src/tools/po/fr_FR.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: DCP-o-matic FRENCH\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-06-23 00:25+0100\n" +"POT-Creation-Date: 2014-06-24 14:53+0100\n" "PO-Revision-Date: 2014-06-20 15:57+0100\n" "Last-Translator: \n" "Language-Team: \n" diff --git a/src/tools/po/it_IT.po b/src/tools/po/it_IT.po index 0d49d1396..c3baa96d1 100644 --- a/src/tools/po/it_IT.po +++ b/src/tools/po/it_IT.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: IT VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-06-23 00:25+0100\n" +"POT-Creation-Date: 2014-06-24 14:53+0100\n" "PO-Revision-Date: 2014-02-03 09:36+0100\n" "Last-Translator: William Fanelli <william.f@impronte.com>\n" "Language-Team: \n" diff --git a/src/tools/po/nl_NL.po b/src/tools/po/nl_NL.po index 7a6bd0602..fe0bf7ef8 100644 --- a/src/tools/po/nl_NL.po +++ b/src/tools/po/nl_NL.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: DCP-o-matic\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-06-23 00:25+0100\n" +"POT-Creation-Date: 2014-06-24 14:53+0100\n" "PO-Revision-Date: 2014-03-30 19:38+0100\n" "Last-Translator: Theo Kooijmans <tkooijmans@universaldv.nl>\n" "Language-Team: UniversalDV <Tkooijmans@universaldv.nl>\n" diff --git a/src/tools/po/sv_SE.po b/src/tools/po/sv_SE.po index fb114885e..be2a243c5 100644 --- a/src/tools/po/sv_SE.po +++ b/src/tools/po/sv_SE.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: DCP-o-matic\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-06-23 00:25+0100\n" +"POT-Creation-Date: 2014-06-24 14:53+0100\n" "PO-Revision-Date: 2014-01-19 08:59+0100\n" "Last-Translator: Adam Klotblixt <adam.klotblixt@gmail.com>\n" "Language-Team: \n" diff --git a/src/wx/about_dialog.cc b/src/wx/about_dialog.cc index 21274cda2..b8eecc90a 100644 --- a/src/wx/about_dialog.cc +++ b/src/wx/about_dialog.cc @@ -116,6 +116,7 @@ AboutDialog::AboutDialog (wxWindow* parent) supported_by.Add (wxT ("Manual AC")); supported_by.Add (wxT ("Kambiz Afshar")); supported_by.Add (wxT ("Louis Belloisy")); + supported_by.Add (wxT ("Mike Blakesley")); supported_by.Add (wxT ("Jeff Boot")); supported_by.Add (wxT ("Kieran Carroll")); supported_by.Add (wxT ("Frank Cianciolo")); diff --git a/src/wx/kdm_dialog.cc b/src/wx/kdm_dialog.cc index 6750e0e98..0fdb1fe50 100644 --- a/src/wx/kdm_dialog.cc +++ b/src/wx/kdm_dialog.cc @@ -159,6 +159,14 @@ KDMDialog::KDMDialog (wxWindow* parent, boost::shared_ptr<const Film> film) table = new wxFlexGridSizer (2, DCPOMATIC_SIZER_X_GAP, 0); + add_label_to_sizer (table, this, _("KDM type"), true); + _type = new wxChoice (this, wxID_ANY); + _type->Append ("Modified Transitional 1"); + _type->Append ("DCI Any"); + _type->Append ("DCI Specific"); + table->Add (_type, 1, wxEXPAND); + _type->SetSelection (0); + _write_to = new wxRadioButton (this, wxID_ANY, _("Write to")); table->Add (_write_to, 1, wxEXPAND); @@ -480,6 +488,21 @@ KDMDialog::write_to () const return _write_to->GetValue (); } +dcp::Formulation +KDMDialog::formulation () const +{ + switch (_type->GetSelection()) { + case 0: + return dcp::MODIFIED_TRANSITIONAL_1; + case 1: + return dcp::DCI_ANY; + case 2: + return dcp::DCI_SPECIFIC; + default: + assert (false); + } +} + void KDMDialog::update_cpl_choice () { diff --git a/src/wx/kdm_dialog.h b/src/wx/kdm_dialog.h index 6327b29e8..0fc95db84 100644 --- a/src/wx/kdm_dialog.h +++ b/src/wx/kdm_dialog.h @@ -48,6 +48,7 @@ public: boost::filesystem::path cpl () const; boost::filesystem::path directory () const; bool write_to () const; + dcp::Formulation formulation () const; private: void add_cinema (boost::shared_ptr<Cinema>); @@ -83,6 +84,7 @@ private: wxStaticText* _dcp_directory; wxStaticText* _cpl_id; wxStaticText* _cpl_annotation_text; + wxChoice* _type; wxRadioButton* _write_to; #ifdef DCPOMATIC_USE_OWN_DIR_PICKER DirPickerCtrl* _folder; diff --git a/src/wx/po/de_DE.po b/src/wx/po/de_DE.po index 017383c03..d0dcccb75 100644 --- a/src/wx/po/de_DE.po +++ b/src/wx/po/de_DE.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-06-23 00:25+0100\n" +"POT-Creation-Date: 2014-06-24 14:53+0100\n" "PO-Revision-Date: 2014-06-21 04:06+0100\n" "Last-Translator: Carsten Kurz\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -941,7 +941,7 @@ msgstr "Untertitel Sprache (z.B. EN)" msgid "Subtitles" msgstr "Untertitel" -#: src/wx/about_dialog.cc:152 +#: src/wx/about_dialog.cc:153 msgid "Supported by" msgstr "Unterstützt durch" @@ -965,7 +965,7 @@ msgstr "Gebiet (z.B. UK)" msgid "Test version " msgstr "Test Version" -#: src/wx/about_dialog.cc:197 +#: src/wx/about_dialog.cc:198 msgid "Tested by" msgstr "Getestet von" @@ -1148,7 +1148,7 @@ msgstr "" "Ihr DCP hat weniger als 6 Audiokanäle. Das kann auf manchen Projektoren zu " "Problemen führen." -#: src/wx/timeline.cc:216 +#: src/wx/timeline.cc:220 msgid "audio" msgstr "Ton" @@ -1173,7 +1173,7 @@ msgstr "ms" msgid "s" msgstr "s" -#: src/wx/timeline.cc:239 +#: src/wx/timeline.cc:243 msgid "still" msgstr "Standbild" @@ -1181,7 +1181,7 @@ msgstr "Standbild" msgid "times" msgstr "Zeiten" -#: src/wx/timeline.cc:237 +#: src/wx/timeline.cc:241 msgid "video" msgstr "Bild" diff --git a/src/wx/po/es_ES.po b/src/wx/po/es_ES.po index d7e48c045..d84e5355c 100644 --- a/src/wx/po/es_ES.po +++ b/src/wx/po/es_ES.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: libdcpomatic-wx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-06-23 00:25+0100\n" +"POT-Creation-Date: 2014-06-24 14:53+0100\n" "PO-Revision-Date: 2014-04-20 12:06-0500\n" "Last-Translator: Manuel AC <manuel.acevedo@civantos.>\n" "Language-Team: Manuel AC <manuel.acevedo@civantos.com>\n" @@ -947,7 +947,7 @@ msgstr "Idioma del subtítulo (ej. EN)" msgid "Subtitles" msgstr "Subtítulos" -#: src/wx/about_dialog.cc:152 +#: src/wx/about_dialog.cc:153 msgid "Supported by" msgstr "Soportado por" @@ -972,7 +972,7 @@ msgstr "Territorio (ej. ES)" msgid "Test version " msgstr "Versión en prueba" -#: src/wx/about_dialog.cc:197 +#: src/wx/about_dialog.cc:198 msgid "Tested by" msgstr "Comprobado por" @@ -1156,7 +1156,7 @@ msgstr "" "Tu DCP tiene menos de 6 canales de audio. Esto puede causar problemas con " "algunos proyectores." -#: src/wx/timeline.cc:216 +#: src/wx/timeline.cc:220 msgid "audio" msgstr "audio" @@ -1181,7 +1181,7 @@ msgstr "ms" msgid "s" msgstr "s" -#: src/wx/timeline.cc:239 +#: src/wx/timeline.cc:243 msgid "still" msgstr "fijo" @@ -1189,7 +1189,7 @@ msgstr "fijo" msgid "times" msgstr "veces" -#: src/wx/timeline.cc:237 +#: src/wx/timeline.cc:241 msgid "video" msgstr "vídeo" diff --git a/src/wx/po/fr_FR.po b/src/wx/po/fr_FR.po index 9801710eb..766bd3ad3 100644 --- a/src/wx/po/fr_FR.po +++ b/src/wx/po/fr_FR.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: DCP-o-matic FRENCH\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-06-23 00:25+0100\n" +"POT-Creation-Date: 2014-06-24 14:53+0100\n" "PO-Revision-Date: 2014-06-20 16:08+0100\n" "Last-Translator: \n" "Language-Team: \n" @@ -939,7 +939,7 @@ msgstr "Langue de sous-titres (ex. FR)" msgid "Subtitles" msgstr "Sous-titres" -#: src/wx/about_dialog.cc:152 +#: src/wx/about_dialog.cc:153 msgid "Supported by" msgstr "Soutenu par" @@ -963,7 +963,7 @@ msgstr "Territoire (ex. FR)" msgid "Test version " msgstr "Version Test" -#: src/wx/about_dialog.cc:197 +#: src/wx/about_dialog.cc:198 msgid "Tested by" msgstr "Testé par" @@ -1145,7 +1145,7 @@ msgstr "" "Votre DCP a moins de 6 canaux audio. Cela peut créer des problèmes de " "lecture sur certains projecteurs." -#: src/wx/timeline.cc:216 +#: src/wx/timeline.cc:220 msgid "audio" msgstr "audio" @@ -1170,7 +1170,7 @@ msgstr "ms" msgid "s" msgstr "s" -#: src/wx/timeline.cc:239 +#: src/wx/timeline.cc:243 msgid "still" msgstr "fixe" @@ -1178,7 +1178,7 @@ msgstr "fixe" msgid "times" msgstr "fois" -#: src/wx/timeline.cc:237 +#: src/wx/timeline.cc:241 msgid "video" msgstr "vidéo" diff --git a/src/wx/po/it_IT.po b/src/wx/po/it_IT.po index 79febb5ab..7789601a7 100644 --- a/src/wx/po/it_IT.po +++ b/src/wx/po/it_IT.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: IT VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-06-23 00:25+0100\n" +"POT-Creation-Date: 2014-06-24 14:53+0100\n" "PO-Revision-Date: 2014-02-03 10:46+0100\n" "Last-Translator: William Fanelli <william.f@impronte.com>\n" "Language-Team: \n" @@ -958,7 +958,7 @@ msgstr "Lingua dei Sottotitoli (es. FR)" msgid "Subtitles" msgstr "Sottotitoli" -#: src/wx/about_dialog.cc:152 +#: src/wx/about_dialog.cc:153 msgid "Supported by" msgstr "" @@ -984,7 +984,7 @@ msgstr "Nazione (es. UK)" msgid "Test version " msgstr "Versione di test" -#: src/wx/about_dialog.cc:197 +#: src/wx/about_dialog.cc:198 msgid "Tested by" msgstr "" @@ -1167,7 +1167,7 @@ msgstr "" "Il vostro DCP ha meno di 6 canali audio. Questo può causare problemi su " "alcuni proiettori." -#: src/wx/timeline.cc:216 +#: src/wx/timeline.cc:220 #, fuzzy msgid "audio" msgstr "Audio" @@ -1193,7 +1193,7 @@ msgstr "ms" msgid "s" msgstr "s" -#: src/wx/timeline.cc:239 +#: src/wx/timeline.cc:243 msgid "still" msgstr "" @@ -1201,7 +1201,7 @@ msgstr "" msgid "times" msgstr "" -#: src/wx/timeline.cc:237 +#: src/wx/timeline.cc:241 #, fuzzy msgid "video" msgstr "Video" diff --git a/src/wx/po/nl_NL.po b/src/wx/po/nl_NL.po index 514ec4665..b33e4a748 100644 --- a/src/wx/po/nl_NL.po +++ b/src/wx/po/nl_NL.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: DCP-o-matic\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-06-23 00:25+0100\n" +"POT-Creation-Date: 2014-06-24 14:53+0100\n" "PO-Revision-Date: 2014-03-30 19:40+0100\n" "Last-Translator: Theo Kooijmans <tkooijmans@universaldv.nl>\n" "Language-Team: UniversalDV <TKooijmans@universaldv.nl>\n" @@ -953,7 +953,7 @@ msgstr "Ondertitel Taal (vb NL)" msgid "Subtitles" msgstr "Ondertitels" -#: src/wx/about_dialog.cc:152 +#: src/wx/about_dialog.cc:153 msgid "Supported by" msgstr "Ondersteund door" @@ -978,7 +978,7 @@ msgstr "Grondgebied (vb NL)" msgid "Test version " msgstr "Test Versie" -#: src/wx/about_dialog.cc:197 +#: src/wx/about_dialog.cc:198 msgid "Tested by" msgstr "Getest door" @@ -1160,7 +1160,7 @@ msgstr "" "Uw DCP heeft minder dan 6 audio kanalen. This kan problemen geven op sommige " "projectors." -#: src/wx/timeline.cc:216 +#: src/wx/timeline.cc:220 msgid "audio" msgstr "audio" @@ -1185,7 +1185,7 @@ msgstr "ms" msgid "s" msgstr "s" -#: src/wx/timeline.cc:239 +#: src/wx/timeline.cc:243 msgid "still" msgstr "still" @@ -1193,7 +1193,7 @@ msgstr "still" msgid "times" msgstr "tijden" -#: src/wx/timeline.cc:237 +#: src/wx/timeline.cc:241 msgid "video" msgstr "video" diff --git a/src/wx/po/sv_SE.po b/src/wx/po/sv_SE.po index dd62b1e29..657fe847a 100644 --- a/src/wx/po/sv_SE.po +++ b/src/wx/po/sv_SE.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: DCP-o-matic\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-06-23 00:25+0100\n" +"POT-Creation-Date: 2014-06-24 14:53+0100\n" "PO-Revision-Date: 2014-01-19 09:14+0100\n" "Last-Translator: Adam Klotblixt <adam.klotblixt@gmail.com>\n" "Language-Team: \n" @@ -970,7 +970,7 @@ msgstr "Undertextspråk (ex. SV)" msgid "Subtitles" msgstr "Undertexter" -#: src/wx/about_dialog.cc:152 +#: src/wx/about_dialog.cc:153 msgid "Supported by" msgstr "Stöd från" @@ -995,7 +995,7 @@ msgstr "Område (ex. SV)" msgid "Test version " msgstr "Testversion" -#: src/wx/about_dialog.cc:197 +#: src/wx/about_dialog.cc:198 #, fuzzy msgid "Tested by" msgstr "Översatt av" @@ -1183,7 +1183,7 @@ msgstr "" "Din DCP har mindre än 6 audiokanaler. Detta kan medföra problem på vissa " "projektorer." -#: src/wx/timeline.cc:216 +#: src/wx/timeline.cc:220 msgid "audio" msgstr "audio" @@ -1208,7 +1208,7 @@ msgstr "ms" msgid "s" msgstr "s" -#: src/wx/timeline.cc:239 +#: src/wx/timeline.cc:243 msgid "still" msgstr "stillbild" @@ -1217,7 +1217,7 @@ msgstr "stillbild" msgid "times" msgstr "tider" -#: src/wx/timeline.cc:237 +#: src/wx/timeline.cc:241 msgid "video" msgstr "video" diff --git a/src/wx/timeline.cc b/src/wx/timeline.cc index 4b56168a1..534f4eda7 100644 --- a/src/wx/timeline.cc +++ b/src/wx/timeline.cc @@ -127,6 +127,10 @@ public: _track = t; } + void unset_track () { + _track = boost::optional<int> (); + } + optional<int> track () const { return _track; } @@ -386,7 +390,8 @@ Timeline::Timeline (wxWindow* parent, FilmEditor* ed, shared_ptr<Film> film) SetMinSize (wxSize (640, tracks() * track_height() + 96)); - _playlist_connection = film->playlist()->Changed.connect (bind (&Timeline::playlist_changed, this)); + _playlist_changed_connection = film->playlist()->Changed.connect (bind (&Timeline::playlist_changed, this)); + _playlist_content_changed_connection = film->playlist()->ContentChanged.connect (bind (&Timeline::playlist_content_changed, this, _2)); } void @@ -441,9 +446,28 @@ Timeline::playlist_changed () } void +Timeline::playlist_content_changed (int property) +{ + ensure_ui_thread (); + + if (property == ContentProperty::POSITION) { + assign_tracks (); + setup_pixels_per_second (); + Refresh (); + } +} + +void Timeline::assign_tracks () { for (ViewList::iterator i = _views.begin(); i != _views.end(); ++i) { + shared_ptr<ContentView> c = dynamic_pointer_cast<ContentView> (*i); + if (c) { + c->unset_track (); + } + } + + for (ViewList::iterator i = _views.begin(); i != _views.end(); ++i) { shared_ptr<ContentView> cv = dynamic_pointer_cast<ContentView> (*i); if (!cv) { continue; @@ -680,7 +704,7 @@ Timeline::set_position_from_event (wxMouseEvent& ev) if (new_position < DCPTime ()) { new_position = DCPTime (); } - + _down_view->content()->set_position (new_position); shared_ptr<Film> film = _film.lock (); diff --git a/src/wx/timeline.h b/src/wx/timeline.h index 4ba1cc425..8f23f6894 100644 --- a/src/wx/timeline.h +++ b/src/wx/timeline.h @@ -79,6 +79,7 @@ private: void right_down (wxMouseEvent &); void mouse_moved (wxMouseEvent &); void playlist_changed (); + void playlist_content_changed (int); void resized (); void assign_tracks (); void set_position_from_event (wxMouseEvent &); @@ -105,5 +106,6 @@ private: ContentMenu _menu; bool _snap; - boost::signals2::scoped_connection _playlist_connection; + boost::signals2::scoped_connection _playlist_changed_connection; + boost::signals2::scoped_connection _playlist_content_changed_connection; }; diff --git a/src/wx/timing_panel.cc b/src/wx/timing_panel.cc index 9a4551193..df77a2ef1 100644 --- a/src/wx/timing_panel.cc +++ b/src/wx/timing_panel.cc @@ -17,6 +17,7 @@ */ +#include <dcp/raw_convert.h> #include "lib/content.h" #include "lib/image_content.h" #include "timing_panel.h" @@ -28,7 +29,7 @@ using std::cout; using std::string; using boost::shared_ptr; using boost::dynamic_pointer_cast; -using boost::lexical_cast; +using dcp::raw_convert; TimingPanel::TimingPanel (FilmEditor* e) /* horrid hack for apparent lack of context support with wxWidgets i18n code */ @@ -124,7 +125,7 @@ TimingPanel::film_content_changed (int property) if (content) { shared_ptr<VideoContent> vc = dynamic_pointer_cast<VideoContent> (content); if (vc) { - _video_frame_rate->SetValue (std_to_wx (lexical_cast<string> (vc->video_frame_rate ()))); + _video_frame_rate->SetValue (std_to_wx (raw_convert<string> (vc->video_frame_rate (), 5))); } else { _video_frame_rate->SetValue ("24"); } @@ -133,10 +134,11 @@ TimingPanel::film_content_changed (int property) } } + shared_ptr<VideoContent> vc = dynamic_pointer_cast<VideoContent> (content); shared_ptr<ImageContent> ic = dynamic_pointer_cast<ImageContent> (content); _full_length->set_editable (ic && ic->still ()); _play_length->set_editable (!ic || !ic->still ()); - _video_frame_rate->Enable (ic && !ic->still ()); + _video_frame_rate->Enable (vc); _set_video_frame_rate->Enable (false); } @@ -201,9 +203,9 @@ TimingPanel::set_video_frame_rate () { ContentList c = _editor->selected_content (); if (c.size() == 1) { - shared_ptr<ImageContent> ic = dynamic_pointer_cast<ImageContent> (c.front ()); - if (ic) { - ic->set_video_frame_rate (lexical_cast<float> (wx_to_std (_video_frame_rate->GetValue ()))); + shared_ptr<VideoContent> vc = dynamic_pointer_cast<VideoContent> (c.front ()); + if (vc) { + vc->set_video_frame_rate (raw_convert<float> (wx_to_std (_video_frame_rate->GetValue ()))); } _set_video_frame_rate->Enable (false); } diff --git a/src/wx/wscript b/src/wx/wscript index 0c87c09be..bc21f9d81 100644 --- a/src/wx/wscript +++ b/src/wx/wscript @@ -64,6 +64,10 @@ def configure(conf): conf.env.STLIB_WXWIDGETS = ['wx_gtk2u_richtext-3.0', 'wx_gtk2u_xrc-3.0', 'wx_gtk2u_qa-3.0', 'wx_baseu_net-3.0', 'wx_gtk2u_html-3.0', 'wx_gtk2u_adv-3.0', 'wx_gtk2u_core-3.0', 'wx_baseu_xml-3.0', 'wx_baseu-3.0'] conf.env.LIB_WXWIDGETS = ['tiff', 'SM', 'dl', 'jpeg', 'png', 'X11', 'expat'] + if conf.env.TARGET_DEBIAN and conf.env.DEBIAN_UNSTABLE: + conf.env.LIB_WXWIDGETS.append('Xxf86vm') + conf.env.LIB_WXWIDGETS.append('Xext') + conf.env.LIB_WXWIDGETS.append('X11') conf.in_msg = 1 wx_version = conf.check_cfg(package='', path=conf.options.wx_config, args='--version').strip() diff --git a/test/isdcf_name_test.cc b/test/isdcf_name_test.cc index dd1b64162..c2ea833bd 100644 --- a/test/isdcf_name_test.cc +++ b/test/isdcf_name_test.cc @@ -101,5 +101,25 @@ BOOST_AUTO_TEST_CASE (isdcf_name_test) film->set_isdcf_metadata (m); film->set_video_frame_rate (48); BOOST_CHECK_EQUAL (film->isdcf_name(false), "MyNiceFilmWith_XSN-2-Temp-Pre-RedBand-MyChain-2D-4fl-48_F-133_DE-FR_US-R_10_4K_DI_20140704_PP_SMPTE_VF"); + + /* Test a name which is already in camelCase */ + + film->set_three_d (false); + m.temp_version = false; + m.pre_release = false; + m.red_band = false; + m.chain = ""; + m.two_d_version_of_three_d = false; + m.mastered_luminance = ""; + film->set_isdcf_metadata (m); + film->set_video_frame_rate (24); + film->set_name ("IKnowCamels"); + BOOST_CHECK_EQUAL (film->isdcf_name(false), "IKnowCamels_XSN-2_F-133_DE-FR_US-R_10_4K_DI_20140704_PP_SMPTE_VF"); + + /* And one in capitals */ + + film->set_name ("LIKE SHOUTING"); + BOOST_CHECK_EQUAL (film->isdcf_name(false), "LikeShouting_XSN-2_F-133_DE-FR_US-R_10_4K_DI_20140704_PP_SMPTE_VF"); } + diff --git a/test/make_black_test.cc b/test/make_black_test.cc index 0ae2fd137..f6c3a4bb2 100644 --- a/test/make_black_test.cc +++ b/test/make_black_test.cc @@ -40,12 +40,12 @@ BOOST_AUTO_TEST_CASE (make_black_test) dcp::Size out_size (1024, 1024); list<AVPixelFormat> pix_fmts; - pix_fmts.push_back (AV_PIX_FMT_RGB24); + pix_fmts.push_back (AV_PIX_FMT_RGB24); // 2 pix_fmts.push_back (AV_PIX_FMT_ARGB); pix_fmts.push_back (AV_PIX_FMT_RGBA); pix_fmts.push_back (AV_PIX_FMT_ABGR); pix_fmts.push_back (AV_PIX_FMT_BGRA); - pix_fmts.push_back (AV_PIX_FMT_YUV420P); + pix_fmts.push_back (AV_PIX_FMT_YUV420P); // 0 pix_fmts.push_back (AV_PIX_FMT_YUV411P); pix_fmts.push_back (AV_PIX_FMT_YUV422P10LE); pix_fmts.push_back (AV_PIX_FMT_YUV422P16LE); @@ -75,7 +75,8 @@ BOOST_AUTO_TEST_CASE (make_black_test) pix_fmts.push_back (AV_PIX_FMT_YUVA420P16LE); pix_fmts.push_back (AV_PIX_FMT_YUVA422P16LE); pix_fmts.push_back (AV_PIX_FMT_YUVA444P16LE); - + pix_fmts.push_back (AV_PIX_FMT_RGB555LE); // 46 + int N = 0; for (list<AVPixelFormat>::const_iterator i = pix_fmts.begin(); i != pix_fmts.end(); ++i) { boost::shared_ptr<Image> foo (new Image (*i, in_size, true)); @@ -13,6 +13,7 @@ def options(opt): opt.add_option('--disable-gui', action='store_true', default=False, help='disable building of GUI tools') opt.add_option('--target-windows', action='store_true', default=False, help='set up to do a cross-compile to make a Windows package') opt.add_option('--target-debian', action='store_true', default=False, help='set up to compile for a Debian/Ubuntu package') + opt.add_option('--debian-unstable', action='store_true', default=False, help='add extra libraries to static-build correctly on Debian unstable') opt.add_option('--target-centos', action='store_true', default=False, help='set up to compile for a Centos package') opt.add_option('--magickpp-config', action='store', default='Magick++-config', help='path to Magick++-config') opt.add_option('--wx-config', action='store', default='wx-config', help='path to wx-config') @@ -55,7 +56,7 @@ def dynamic_openjpeg(conf): conf.check_cfg(package='libopenjpeg', args='--cflags --libs', max_version='1.5.2', mandatory=True) def static_dcp(conf, static_boost, static_xmlpp, static_xmlsec, static_ssh): - conf.check_cfg(package='libdcp-1.0', atleast_version='0.92', args='--cflags', uselib_store='DCP', mandatory=True) + conf.check_cfg(package='libdcp-1.0', atleast_version='0.95', args='--cflags', uselib_store='DCP', mandatory=True) conf.env.DEFINES_DCP = [f.replace('\\', '') for f in conf.env.DEFINES_DCP] conf.env.STLIB_DCP = ['dcp-1.0', 'asdcp-libdcp-1.0', 'kumu-libdcp-1.0'] conf.env.LIB_DCP = ['glibmm-2.4', 'ssl', 'crypto', 'bz2', 'xslt'] @@ -163,6 +164,7 @@ def configure(conf): conf.env.TARGET_WINDOWS = conf.options.target_windows conf.env.DISABLE_GUI = conf.options.disable_gui conf.env.TARGET_DEBIAN = conf.options.target_debian + conf.env.DEBIAN_UNSTABLE = conf.options.debian_unstable conf.env.TARGET_CENTOS = conf.options.target_centos conf.env.VERSION = VERSION conf.env.TARGET_OSX = sys.platform == 'darwin' |
