<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2100112265587221111</id><updated>2012-02-21T13:06:40.629Z</updated><category term='tms'/><category term='key management'/><category term='tkr'/><category term='kdm'/><category term='scaling'/><category term='theatre core'/><category term='digital cinema'/><title type='text'>The Silvered Screen</title><subtitle type='html'>Arts Alliance Media's software development blog</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://silveredscreen.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2100112265587221111/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://silveredscreen.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Matt Sullivan</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://2.bp.blogspot.com/-p3geMkFcPYY/TVQs7K_jDXI/AAAAAAAAV38/ioUpslUYIhM/s220/Buzz-Tron-icon.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>4</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2100112265587221111.post-7272302120398841886</id><published>2012-02-13T15:35:00.003Z</published><updated>2012-02-13T15:41:54.971Z</updated><title type='text'>Locksmith's TKR Implementation Mk II</title><content type='html'>Locksmith's first pass on implementing the TKR did not exactly hit the mark and, after a round or two of discussion with those kind enough to try out and comment on the service, the API has been revised to better support the TKR and its goals.&lt;br /&gt;&lt;br /&gt;Before we get into the changes, it is worth reiterating two salient points of the TKR:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A CPL will contain the base URL for retrieving KDMs for that CPL&lt;/li&gt;&lt;li&gt;The base URL will be combined with the screen server's thumbprint to gather all KDMs for that server&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;See section 3.1 of the &lt;a href="http://isdcf.com/papers/ISDCF-Doc8-TheaterKeyRetrieval-TKR-v0.2.pdf"&gt;TKR specification&lt;/a&gt; for further info.&lt;br /&gt;&lt;br /&gt;With those in mind, let's look at why Locksmith's first pass at implementing the TKR needed some revision.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;The Perils of URL Construction&lt;/h3&gt;&lt;br /&gt;Here's how the TKR URL looked in the first pass:&lt;pre&gt;&lt;code&gt;&lt;br /&gt;https://locksmith.artsalliancemedia.com/api/kdm/thumbprint/&amp;lt;server thumbprint&amp;gt;/cpl/&amp;lt;cpl uuid&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;See the problem? As the base URL should be embedded in the CPL and the thumbprint appended, we managed to stick the thumbprint right in the middle of the URL – simply appending the thumbprint wasn't an option. Systems would have to rip the URL apart and embed the thumbprint right in the middle.&lt;br /&gt;&lt;br /&gt;This is bad; Locksmith's new URL implementation is much simpler and more elegant:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;https://locksmith.artsalliancemedia.com/api/tkr/&amp;lt;cpl uuid&amp;gt;/&amp;lt;server thumbprint&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;The base URL is now neatly encapsulated and the server thumbprint (in hex) just needs to be appended to it.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Tar-balls and TKRs&lt;/h3&gt;&lt;br /&gt;Locksmith TKR Mk I required you to end the URL with /kdmbundle.tar in order to get your KDMs in the SMPTE 430-2 bundled format – again not really in the spirit of TKR. So now, by default, the new TKR URL above will return a KDM bundle, or a 404 if no KDMs are matched to the CPL uuid and thumbprint. The bundle is now also nicely named with CPL UUID.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;One URL to Rule Them All&lt;/h3&gt;TKR support boils down to getting a single base URL right:&lt;pre&gt;&lt;code&gt;&lt;br /&gt;https://locksmith.artsalliancemedia.com/api/tkr/&amp;lt;cpl uuid&amp;gt;/&amp;lt;server thumbprint&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;As Locksmith can determine both the CPL UUID and server thumbprint from the KDM, all KDMs uploaded into Locksmith will be automatically available for retrieval through the TKR method.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2100112265587221111-7272302120398841886?l=silveredscreen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://silveredscreen.blogspot.com/feeds/7272302120398841886/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://silveredscreen.blogspot.com/2012/02/locksmiths-tkr-implementation-mk-ii.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2100112265587221111/posts/default/7272302120398841886'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2100112265587221111/posts/default/7272302120398841886'/><link rel='alternate' type='text/html' href='http://silveredscreen.blogspot.com/2012/02/locksmiths-tkr-implementation-mk-ii.html' title='Locksmith&apos;s TKR Implementation Mk II'/><author><name>Matt Sullivan</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://2.bp.blogspot.com/-p3geMkFcPYY/TVQs7K_jDXI/AAAAAAAAV38/ioUpslUYIhM/s220/Buzz-Tron-icon.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2100112265587221111.post-7077471766194539370</id><published>2012-01-25T16:28:00.001Z</published><updated>2012-01-30T17:14:02.799Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='tkr'/><category scheme='http://www.blogger.com/atom/ns#' term='digital cinema'/><category scheme='http://www.blogger.com/atom/ns#' term='kdm'/><category scheme='http://www.blogger.com/atom/ns#' term='key management'/><title type='text'>KDM Delivery with Locksmith</title><content type='html'>&lt;b&gt;Delivering KDMs&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;KDM delivery for digital cinema is, like much of this fledgling technology, still in its infancy and is probably one of the most immature areas of digital cinema management. Getting KDMs to site is currently haphazard and fraught with error; typically KDMs are emailed to site – or sent on consumable media – and there is little-to-no feedback as to whether the KDM is actually valid for a server's certificate on its intended screen and has been successfully ingested, or that playback has successfully occurred for its targeted CPL.&lt;br /&gt;&lt;br /&gt;Recently Mike Radford put forward a proposal at &lt;a href="http://www.isdcf.com/"&gt;ISDCF&lt;/a&gt; for a method of distributing KDMs that could easily be integrated into on-site systems such as a TMS or directly into the SMS. The methodology, called &lt;a href="http://isdcf.com/papers/ISDCF-Doc8-TheaterKeyRetrieval-TKR-v0.2.pdf"&gt;Theater Key Retrieval&lt;/a&gt; (TKR), would allow KDM distributors to set up their own TKR servers and from which keys could be drawn down based on the certificate thumbprints of the on-site screen servers and the UUID of the encrypted CPL. The TKR servers would provide a RESTful API and the URL for gathering keys would be generated from an embedded link in the encrypted CPL's XML (in the language attribute of the Issuer tag), to which the certificate thumbprint of the screen server would be appended. That URL would link to a KDM bundle (ISO 26430-9:2009) containing all valid keys for the combination of CPL and thumbprint.&lt;br /&gt;&lt;br /&gt;It's an elegant and simple approach to KDM delivery: the target server thumbprints and CPL id can be easily determined from the KDM XML and on-site systems can interrogate screen server details to gather the correct thumbprints.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Locksmith&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="https://locksmith.artsalliancemedia.com/"&gt;Locksmith&lt;/a&gt; is an implementation of the ISDCF proposal: KDMs can be uploaded into the cloud-hosted service and then requested based on CPL ids and certificate thumbprints. Locksmith provides a RESTful JSON API that implements an extended set of functionality required by TKR.&lt;br /&gt;&lt;br /&gt;Locksmith also extends TKR's functionality in several ways; for example it provides methods to pull all valid and uncollected KDMs for a certificate thumbprint, mark KDMs as delivered, failed or successfully played back, and third parties can upload their own KDMs into Locksmith for delivery.&lt;br /&gt;&lt;br /&gt;Locksmith can additionally understand FLM-x feeds and gather site and certificate information that can be accessed through the API and used to match sites to certificate thumbprints (more on that in a future blog post).&lt;br /&gt;&lt;br /&gt;An early access version of &lt;a href="https://locksmith.artsalliancemedia.com/"&gt;Locksmith is available now&lt;/a&gt;. To try it out, you can request a username and password for the system by &lt;a href="mailto:locksmith@artsalliancemedia.com?subject=Locksmith-User-Request"&gt;emailing us&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-rR26a8IsgoE/TyFM-JJYgrI/AAAAAAAAYHg/L5cK1K29As4/s1600/locksmith_explanation_small.jpg" imageanchor="1" style=""&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-rR26a8IsgoE/TyFM-JJYgrI/AAAAAAAAYHg/L5cK1K29As4/s400/locksmith_explanation_small.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Locksmith's API&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Locksmith provides a RESTful API that returns JSON-formatted data (though both KDM XML and KDM tar bundles can be directly requested). Currently Locksmith requires a username and password to access and is served exclusively over HTTPS. We'll outline a few of the API calls available in the current build of Locksmith here and expand on these in a later post.&lt;br /&gt;&lt;br /&gt;The easiest way to play with the API is through a web browser, ideally with a plugin that pretty-prints the JSON output. I typically use Chrome with the &lt;a href="https://chrome.google.com/webstore/detail/chklaanhfefbnpoihckbnefhakgolnmc"&gt;JSONView extension&lt;/a&gt;; Firefox with the JSONovich add-on also works well. cURL can be easily used from the command line and the API documentation below provides examples using this.&lt;br /&gt;&lt;br /&gt;There's a Python snippet &lt;a href="https://gist.github.com/1682725"&gt;here&lt;/a&gt; that shows you how to access the system programmatically.&lt;br /&gt;&lt;br /&gt;Any problems, issues, comments or rants about the service and API, we'd love to get &lt;a href="mailto:locksmith@artsalliancemedia.com?subject=Locksmith-feedback"&gt;feedback&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Retrieving KDMs TKR Style&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;KDMs can be retrieved by specifying both their target CPL UUID and the server certificate thumbprint:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;curl -u &amp;lt;user&amp;gt;:&amp;lt;password&amp;gt; https://locksmith.artsalliancemedia.com/api/kdm/thumbprint/98a48a64c18f8e7f5df4c4036a188c1e5a8f59e4/cpl/65ce635c-b937-4035-8d6d-f1d5fddaea66&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;The thumbprint (as per the TKR) should be hex-encoded; if you want to use the base64 encoded string, the API supports that by appending the URL with &lt;code&gt;?encoding=base64&lt;/code&gt;, but be sure to ensure that the string is correctly escaped to keep it browser-friendly:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;curl -u &amp;lt;user&amp;gt;:&amp;lt;password&amp;gt; https://locksmith.artsalliancemedia.com/api/kdm/thumbprint/mKSKZMGPjn9d9MQDahiMHlqPWeQ%3D/cpl/65ce635c-b937-4035-8d6d-f1d5fddaea66?encoding=base64&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;Unexpired, pending KDMs are returned in a JSON-formatted list which contains the KDM XML along with meta-data both parsed out of the XML for easy access and status information regarding each KDM. A KDM bundle can also be requested by terminating the URL with &lt;code&gt;/kdmbundle.tar&lt;/code&gt;:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;curl -u &amp;lt;user&amp;gt;:&amp;lt;password&amp;gt; https://locksmith.artsalliancemedia.com/api/kdm/thumbprint/98a48a64c18f8e7f5df4c4036a188c1e5a8f59e4/cpl/65ce635c-b937-4035-8d6d-f1d5fddaea66/kdmbundle.tar&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;b&gt;Retrieving KDMs by Thumbprint&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Locksmith can also serve up all valid and pending KDMs for a single device, irrespective of CPL. It provides a simple means to download all pending KDMs for a server in a single call:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;curl -u &amp;lt;user&amp;gt;:&amp;lt;password&amp;gt; https://locksmith.artsalliancemedia.com/api/kdm/thumbprint/98a48a64c18f8e7f5df4c4036a188c1e5a8f59e4&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;b&gt;Marking KDM Status&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Locksmith tracks the status of KDMs and only serves up those KDMs which are pending delivery. A KDM is automatically marked as &lt;code&gt;pending&lt;/code&gt; when it is uploaded to the system. Once a KDM is retrieved from Locksmith, the retriever can mark the KDM as &lt;code&gt;delivered&lt;/code&gt;, &lt;code&gt;failed&lt;/code&gt; or &lt;code&gt;played&lt;/code&gt;. This is designed to both hide KDMs that are no longer &lt;code&gt;pending&lt;/code&gt; and to provide feedback to the KDM distributors as to whether the KDMs have been delivered/ingested and any problems discovered.&lt;br /&gt;&lt;br /&gt;To facilitate batch reporting of KDM statuses, the URL can be given either a single KDM UUID, or a JSON-formatted list of UUIDs:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;https://locksmith.artsalliancemedia.com/api/kdm/status/&amp;lt;status&amp;gt;/&amp;lt;UUID or JSON list of UUIDs&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;code&gt;status&lt;/code&gt; can be one of &lt;code&gt;pending&lt;/code&gt;, &lt;code&gt;delivered&lt;/code&gt;, &lt;code&gt;failed&lt;/code&gt; or &lt;code&gt;played&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Uploading KDMs&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;KDMs can be individually uploaded to Locksmith by POSTing XML to:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;https://locksmith.artsalliancemedia.com/api/kdm/save&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;An example Python snippet for uploading KDMs into Locksmith is &lt;a href="https://gist.github.com/1682725"&gt;available here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;No other information is needed; Locksmith can parse the KDM XML to determine the target CPL and server thumbprint.&lt;br /&gt;&lt;br /&gt;We'll add the ability to batch upload KDMs in a future Locksmith build.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;More To Come&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The API calls above will give you the basic tools to upload, distribute and mark KDMs through Locksmith. The API has a number of other reporting and FLM-related calls that extend Locksmith's functionality further, but we'll cover that in a later post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2100112265587221111-7077471766194539370?l=silveredscreen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://silveredscreen.blogspot.com/feeds/7077471766194539370/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://silveredscreen.blogspot.com/2012/01/locksmith-kdm-delivery.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2100112265587221111/posts/default/7077471766194539370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2100112265587221111/posts/default/7077471766194539370'/><link rel='alternate' type='text/html' href='http://silveredscreen.blogspot.com/2012/01/locksmith-kdm-delivery.html' title='KDM Delivery with Locksmith'/><author><name>Matt Sullivan</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://2.bp.blogspot.com/-p3geMkFcPYY/TVQs7K_jDXI/AAAAAAAAV38/ioUpslUYIhM/s220/Buzz-Tron-icon.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-rR26a8IsgoE/TyFM-JJYgrI/AAAAAAAAYHg/L5cK1K29As4/s72-c/locksmith_explanation_small.jpg' height='72' width='72'/><thr:total>0</thr:total><georss:featurename>AAM</georss:featurename><georss:point>51.4946728 -0.21062</georss:point><georss:box>51.4922013 -0.2155555 51.497144299999995 -0.2056845</georss:box></entry><entry><id>tag:blogger.com,1999:blog-2100112265587221111.post-2383445003230965484</id><published>2011-11-11T13:53:00.001Z</published><updated>2011-11-11T13:57:08.368Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='tms'/><category scheme='http://www.blogger.com/atom/ns#' term='digital cinema'/><title type='text'>Why you need a TMS ...</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-SFhhAZzjKUY/Tr0ol1HZ92I/AAAAAAAAX1g/uP_i8PfVNhE/s1600/why_use_tms.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-SFhhAZzjKUY/Tr0ol1HZ92I/AAAAAAAAX1g/uP_i8PfVNhE/s640/why_use_tms.jpg" width="550" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2100112265587221111-2383445003230965484?l=silveredscreen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://silveredscreen.blogspot.com/feeds/2383445003230965484/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://silveredscreen.blogspot.com/2011/11/why-you-need-tms.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2100112265587221111/posts/default/2383445003230965484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2100112265587221111/posts/default/2383445003230965484'/><link rel='alternate' type='text/html' href='http://silveredscreen.blogspot.com/2011/11/why-you-need-tms.html' title='Why you need a TMS ...'/><author><name>Matt Sullivan</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://2.bp.blogspot.com/-p3geMkFcPYY/TVQs7K_jDXI/AAAAAAAAV38/ioUpslUYIhM/s220/Buzz-Tron-icon.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-SFhhAZzjKUY/Tr0ol1HZ92I/AAAAAAAAX1g/uP_i8PfVNhE/s72-c/why_use_tms.jpg' height='72' width='72'/><thr:total>0</thr:total><georss:featurename>Hammersmith, London W14 8ST, UK</georss:featurename><georss:point>51.4946727 -0.21062</georss:point><georss:box>51.492201200000004 -0.2155555 51.4971442 -0.2056845</georss:box></entry><entry><id>tag:blogger.com,1999:blog-2100112265587221111.post-7702931731532980416</id><published>2011-10-22T13:01:00.000+01:00</published><updated>2011-10-22T13:49:14.835+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scaling'/><category scheme='http://www.blogger.com/atom/ns#' term='theatre core'/><category scheme='http://www.blogger.com/atom/ns#' term='digital cinema'/><title type='text'>Scaling Digital Cinema Software</title><content type='html'>Ready or not, digital cinema systems are fast becoming the norm; incumbent 35mm systems are being ripped out daily and digital screen playback servers and projectors installed to replace them. These new systems promise an&amp;nbsp;unprecedented&amp;nbsp;level of flexibility in theatre management, such as large libraries of local content, easy creation and modification of pre-show playlists and automated scheduling.&lt;br /&gt;&lt;br /&gt;The current crop of screen servers and integrated media boards offer APIs that can be remotely accessed and theatre management systems (TMS) exist to provide control of all screens within a single cinema, AAM’s TMS included.&lt;br /&gt;&lt;br /&gt;The application of these APIs go further: the potential to centrally manage screens across a cinema circuit. For example, AAM’s VPF software gathers logs and CPL meta-data from over 2,000 screens on a daily basis to a central location and Director provides centralised control of content, pre-show and scheduling for an exhibitor’s complete circuit.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Scaling Problems&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The promise of automated cinema brings its own challenges, the chief amongst these being scale.&lt;br /&gt;&lt;br /&gt;The scale problem is two-fold: how to scale a centralised system that communicates remotely with a thousand-plus screens while dealing with network vagaries, servers that are busily playing content, powered-down equipment and a host of other issues; and when there are multiple systems competing for the attention of a screen server, how do you ensure that they don’t impede or interrupt playback?&lt;br /&gt;&lt;br /&gt;For central control of a large circuit, scaling communication to each and every play-out server – not to mention the projection, point of sale and library systems – is a difficult task; server availability, time-outs, network issues all play a part in making the cycle of invoking a call to every server – say to collect logs or CPL data – a lengthy and error-prone task.&lt;br /&gt;&lt;br /&gt;Further compounding the problem, each model of screen server is a distinct beast; their APIs have very different implementations, communication protocols and response characteristics in terms of speed and reliability; each behaves differently when the API is under heavy load. While this may be manageable for an external system in isolation, when multiple systems require access to the screen server it is impossible to police.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Theatre Core&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The answer we’ve come up with to both problems of scale is to create a small service, called Theatre Core, that resides at each cinema theatre and proxies all interaction with digital cinema equipment.&lt;br /&gt;&lt;br /&gt;It acts as a gateway to digital equipment within a theatre, most critically the screen servers, and wraps the different APIs provided by those systems.&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-Qh-UePc1V4g/ToeUimi5u1I/AAAAAAAAXpM/X134ggyMnoQ/s1600/software_architecture.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img alt="Digital Cinema Software Architecture" border="0" src="http://2.bp.blogspot.com/-Qh-UePc1V4g/ToeUimi5u1I/AAAAAAAAXpM/X134ggyMnoQ/s400/software_architecture.png" width="500" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Theatre Core offers a number of advantages:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Homogeneous API Access&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Theatre Core provides a unified API for communication with different classes of digital cinema equipment. It has a set of standardised APIs for screen servers, projectors, library servers and POS systems, with more planned in the future. These hide the details of each manufacturer’s API. Any application that uses Theatre Core implements a single API and then gets access to all supported equipment.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Managed Access&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The API access load placed on a screen server can be precisely controlled by Theatre Core and the throughput throttled as necessary. Theatre Core knows the capabilities of the equipment with which it integrates and so can ensure that playback and other critical functionality is not impacted by too many external systems demanding attention.&lt;br /&gt;&lt;br /&gt;But what does Theatre Core do when it needs to respond to a request for data, but doesn’t want to overload a system’s API?&lt;br /&gt;&lt;br /&gt;&lt;b&gt;System State Caching&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Theatre Core maintains an internal state representation of screen servers, projectors and other equipment and manages the frequency of updating this state. Whenever a request for data about a server is received – for example CPL data, the validity of its KDMs, its playback status – Theatre Core can respond immediately using its internal state model.&lt;br /&gt;&lt;br /&gt;This significantly reduces the load on a screen server’s API and buffers external systems from potentially slow responses a play-out server may provide. Theatre Core is designed to provide low latency responses to requests, even under significant load. Some screen servers have response times in the range of seconds for certain calls; Theatre Core hides these failings by caching.&lt;br /&gt;&lt;br /&gt;Caching state does have its trade-offs. Theatre Core may not be fully synchronised when a screen server’s state changes and small lag-time may occur between the server changing and Theatre Core updating.&lt;br /&gt;&lt;br /&gt;That said, Theatre Core typically updates state every few seconds (the precise timings are dependent on the equipment and a lot of testing on our part to see what works best); in practice discrepancies are rarely seen.&lt;br /&gt;&lt;br /&gt;That trade-off gives blisteringly fast responses for log retrieval, KDMS, CPLs, playback state, etc. and lightens the load considerably on digital equipment.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Theatre and not Screen Level Scaling&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Theatre Core not only abstracts away the specifics of communication with equipment, it also provides aggregation functionality to collect data across multiple systems within a theatre in a single API call. For example you can get a listing of all CPLs in a theatre, gathered from every screen and library server; retrieve the playback state of all screen servers; list what equipment is contactable and gather the secure logs from all servers.&lt;br /&gt;&lt;br /&gt;This removes the necessity for central systems to have to request information from each and every piece of equipment at a complex; for many tasks, just a single call is made and the aggregated data returned. It provides far better scaling for systems: instead of making hundreds or thousands of calls to gather circuit-wide data, a call per complex can be made. Factoring in Theatre Core’s caching capabilities, the speed with which circuit-wide operations can occur is massively increased.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;AAM Software Ecosystem&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;We use Theatre Core as the basis for all communication to digital cinema equipment, both for systems local to the cinema (TMS and LMS) and centralised systems (Director and VPF). All of these systems access on-site equipment through Theatre Core and, in practice, have been deployed in production without scaling issues to over 2,000 screens and rising.&lt;br /&gt;&lt;br /&gt;Digital cinema promises a level of automation that is impossible with legacy 35mm systems; however to achieve these promises requires some careful thought and planning for cinema circuits of any great size.&lt;br /&gt;&lt;br /&gt;Theatre Core is designed to make building these systems – in a world of non-standard APIs, performance and capability – straightforward, removing the complexity of multi-equipment support while at the same time providing an architecture that will scale into the many thousands of screens.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2100112265587221111-7702931731532980416?l=silveredscreen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://silveredscreen.blogspot.com/feeds/7702931731532980416/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://silveredscreen.blogspot.com/2011/10/scaling-digital-cinema-software.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2100112265587221111/posts/default/7702931731532980416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2100112265587221111/posts/default/7702931731532980416'/><link rel='alternate' type='text/html' href='http://silveredscreen.blogspot.com/2011/10/scaling-digital-cinema-software.html' title='Scaling Digital Cinema Software'/><author><name>Matt Sullivan</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://2.bp.blogspot.com/-p3geMkFcPYY/TVQs7K_jDXI/AAAAAAAAV38/ioUpslUYIhM/s220/Buzz-Tron-icon.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-Qh-UePc1V4g/ToeUimi5u1I/AAAAAAAAXpM/X134ggyMnoQ/s72-c/software_architecture.png' height='72' width='72'/><thr:total>0</thr:total><georss:featurename>Hammersmith, London W14 8ST, UK</georss:featurename><georss:point>51.4946727 -0.21062</georss:point><georss:box>51.492201200000004 -0.2155555 51.4971442 -0.2056845</georss:box></entry></feed>
