From 7e7e74324ebf7a8ef5eb6c98f0fc2b65bb7bea34 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Thu, 23 Sep 2021 00:06:23 +0200 Subject: [PATCH] Update design doc. --- doc/design/video.svg | 871 +++++++++++++++++++++++++++++++++---------- 1 file changed, 674 insertions(+), 197 deletions(-) diff --git a/doc/design/video.svg b/doc/design/video.svg index c9985b1b6..59122b46f 100644 --- a/doc/design/video.svg +++ b/doc/design/video.svg @@ -1,6 +1,4 @@ - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + inkscape:snap-global="false" + inkscape:document-rotation="0" /> @@ -327,7 +467,7 @@ image/svg+xml - + @@ -350,200 +490,204 @@ sodipodi:nodetypes="cccc" /> Player + y="145.07965" + style="font-size:14px;line-height:1.25">Player Call Call give(ImageProxy) FFmpegDecoderFFmpegDecoderDCPDecoderDCPDecoderVideoMXFDecoderVideoMXFDecoderImageDecoder + id="tspan3467" + style="font-size:14px;line-height:1.25">ImageDecoder + y="30.933632" + style="font-size:40px;line-height:1.25">  + y="42.362206" + style="font-size:40px;line-height:1.25">  + y="48.076488" + style="font-size:40px;line-height:1.25">  RawImageProxyRawImageProxyMagickImageProxyMagickImageProxyJ2KImageProxy + sodipodi:role="line" + style="font-size:14px;line-height:1.25">J2KImageProxy image in any pixel format and colourspace + sodipodi:role="line" + style="font-size:8px;line-height:1.25">image in any pixel format and colourspace image assumed to be 24-bit RGB + sodipodi:role="line" + style="font-size:8px;line-height:1.25">image assumed to be 24-bit RGB image in J2K which could be sRGB or XYZ + sodipodi:role="line" + style="font-size:8px;line-height:1.25">image in J2K which could be sRGB or XYZ VideoDecoder + y="114.28626" + style="font-size:14px;line-height:1.25">VideoDecoder Add Add ColourConversion from Content Encoder + y="210.91785" + style="font-size:14px;line-height:1.25">Encoder FilmViewer + y="210.91785" + style="font-size:14px;line-height:1.25">FilmViewer Call Call image tellingFFmpeg to convert to RGB + y="234.08084" + id="tspan4857" + style="font-size:8px;line-height:1.25">FFmpeg to convert to RGB DCPVideoDCPVideo + id="tspan4893" + style="font-size:14px;line-height:1.25">  encode_locally() @@ -613,16 +758,16 @@ id="rect7578" style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffaaaa;fill-opacity:1;fill-rule:nonzero;stroke:#1a1a1a;stroke-width:1.0292846px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> RawImageProxy + sodipodi:role="line" + style="font-size:8px;line-height:1.25">RawImageProxy @@ -635,15 +780,15 @@ y="118.93896" /> YUV + y="126.86294" + style="font-size:8px;line-height:1.25">YUV RawImageProxy + sodipodi:role="line" + style="font-size:8px;line-height:1.25">RawImageProxy @@ -679,15 +824,15 @@ y="118.93896" /> RGB + y="126.86294" + style="font-size:8px;line-height:1.25">RGB MagickImageProxy + sodipodi:role="line" + style="font-size:8px;line-height:1.25">MagickImageProxy @@ -723,15 +868,15 @@ y="118.93896" /> RGB + y="126.86294" + style="font-size:8px;line-height:1.25">RGB J2KImageProxy + sodipodi:role="line" + style="font-size:8px;line-height:1.25">J2KImageProxy @@ -767,15 +912,15 @@ y="118.93896" /> RGB + y="126.86294" + style="font-size:8px;line-height:1.25">RGB J2KImageProxy + sodipodi:role="line" + style="font-size:8px;line-height:1.25">J2KImageProxy @@ -811,29 +956,28 @@ y="118.93896" /> XYZ + y="126.86294" + style="font-size:8px;line-height:1.25">XYZ Player:: DCP:: To RGB48LE + sodipodi:role="line" + style="font-size:8px;line-height:1.25">To RGB48LE Preview + y="226.5392" + style="font-size:8px;line-height:1.25">Preview Encode + y="36.546879" + style="font-size:8px;line-height:1.25">Encode To XYZ12LE + y="244.55614" + style="font-size:8px;line-height:1.25">To XYZ12LE To XYZ12LE + y="244.55614" + style="font-size:8px;line-height:1.25">To XYZ12LE To XYZ12LE + y="244.55614" + style="font-size:8px;line-height:1.25">To XYZ12LE To XYZ12LE + y="244.55614" + style="font-size:8px;line-height:1.25">To XYZ12LE RawImageProxy + sodipodi:role="line" + style="font-size:8px;line-height:1.25">RawImageProxy @@ -1080,15 +1224,15 @@ y="118.93896" /> YUV + y="126.86294" + style="font-size:8px;line-height:1.25">YUV RawImageProxy + sodipodi:role="line" + style="font-size:8px;line-height:1.25">RawImageProxy @@ -1124,15 +1268,15 @@ y="118.93896" /> RGB + y="126.86294" + style="font-size:8px;line-height:1.25">RGB MagickImageProxy + sodipodi:role="line" + style="font-size:8px;line-height:1.25">MagickImageProxy @@ -1168,15 +1312,15 @@ y="118.93896" /> RGB + y="126.86294" + style="font-size:8px;line-height:1.25">RGB J2KImageProxy + sodipodi:role="line" + style="font-size:8px;line-height:1.25">J2KImageProxy @@ -1212,15 +1356,15 @@ y="118.93896" /> RGB + y="126.86294" + style="font-size:8px;line-height:1.25">RGB J2KImageProxy + sodipodi:role="line" + style="font-size:8px;line-height:1.25">J2KImageProxy @@ -1256,29 +1400,28 @@ y="118.93896" /> XYZ + y="126.86294" + style="font-size:8px;line-height:1.25">XYZ Player:: To RGB24 + sodipodi:role="line" + style="font-size:8px;line-height:1.25">To RGB24 + + Decoder + + ContentVideo + ImageProxy + Player + + PlayerVideo + ImageProxy + + + Butler + DCPEncoder + + FFmpegEncoder + + VideoView + + SimpleVideoView + GLVideoView + + + calls PlayerVideo::image(), hence make_image() whichdoes crop_scale_window(), so the PlayerVideo's ImageProxy must be PADDED. + calls PlayerVideo::raw_image(), and passesthe result to GL, so the PlayerVideo'sImageProxy must be COMPACT. + [ImageProxy's image may be madeby ImageProxy::prepare() or by thedecoder which made the ImageProxy] + + + [J2K optimised] + [supporting any source] + + -- 2.30.2