<?xml version="1.0" encoding="utf-8"?>
<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="en">
<title>Discrete Cosine</title>
<link rel="alternate" type="text/html" href="http://blog.lib.umn.edu/mcfa0086/discretecosine/" />
<modified>2012-12-07T19:29:25Z</modified>
<tagline>Video technology news, reviews and opinions</tagline>
<id>tag:blog.lib.umn.edu,2012:/mcfa0086/discretecosine//2458</id>
<generator url="http://www.movabletype.org/" version="4.31-en">Movable Type</generator>
<copyright>Copyright (c) 2012, 


</copyright>

<entry>
<title>Moving Along</title>
<link rel="alternate" type="text/html" href="http://blog.lib.umn.edu/mcfa0086/discretecosine/380078.html" />
<modified>2012-12-07T19:29:25Z</modified>
<issued>2012-12-07T18:12:50Z</issued>
<id>tag:blog.lib.umn.edu,2012:/mcfa0086/discretecosine//2458.380078</id>
<created>2012-12-07T18:12:50Z</created>
<summary type="text/plain">After many years on UThink, this blog now lives at www.discretecosine.com. And it&apos;s semi-active again!...</summary>
<author>
<name>
</name>
<url></url>
</author>
<dc:subject></dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://blog.lib.umn.edu/mcfa0086/discretecosine/">
<![CDATA[<p>After many years on UThink, this blog now lives at <a href="http://www.discretecosine.com">www.discretecosine.com</a>.  And it's semi-active again!</p>

<p><meta name="google-site-verification" content="fu3cHP2cf0QYqOr-_QndcqsOuE0fE6jadJ4xYlwqtCM" /></p>]]>

</content>
</entry>

<entry>
<title>An introduction to reverse engineering</title>
<link rel="alternate" type="text/html" href="http://blog.lib.umn.edu/mcfa0086/discretecosine/270299.html" />
<modified>2011-01-22T03:52:12Z</modified>
<issued>2011-01-21T20:49:30Z</issued>
<id>tag:blog.lib.umn.edu,2011:/mcfa0086/discretecosine//2458.270299</id>
<created>2011-01-21T20:49:30Z</created>
<summary type="text/plain">(This blog is still in hibernation, but I needed somewhere to post this) Reverse engineering is one of those wonderful topics, covering everything from simple &quot;guess how this program works&quot; problem solving, to poking at silicon with scanning electron microscopes....</summary>
<author>
<name>
</name>
<url></url>
</author>
<dc:subject></dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://blog.lib.umn.edu/mcfa0086/discretecosine/">
<![CDATA[<p>(This blog is still in hibernation, but I needed somewhere to post this)</p>

<p>Reverse engineering is one of those wonderful topics, covering everything from simple "guess how this program works" problem solving, to poking at silicon with scanning electron microscopes.  I'm always hugely fascinated by articles that walk through the steps involved in these types of activities, so I thought I'd contribute one back to the world.</p>

<p>In this case, I'm going to be looking at the export bundle format created by the Tandberg Content Server, a device for recording video conferences.  The bundle is intended for moving recordings between Tandberg devices, but it's also the easiest way to get all of the related assets for a recorded conference.  Unfortunately, there's no parser available to take the bundle files (.tcb) and output the component pieces.  Well, that just won't do.</p>

<p>For this type of reverse engineering, I basically want to learn enough about the TCB format to be able to parse out the individual files within it.  The only tools I'll need in this process are a hex editor, a notepad, and a way to convert between hex and decimal (the OS X calculator will do fine if you're not the type to do it in your head).  </p>

<p><strong>Step 1: Basic Research</strong><br />
After Googling around to see if this was a solved issue, I decided to dive into the format.  I brought a sample bundle into my trusty hex editor (in this case Hex Fiend).</p>

<p><a href="http://blog.lib.umn.edu/mcfa0086/discretecosine/1-1.jpg"><img alt="1-1.jpg" src="http://blog.lib.umn.edu/mcfa0086/discretecosine/assets_c/2011/01/1-1-thumb-350x113-67775.jpg" width="350" height="113" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></p>

<p>A few things are immediately obvious.  First, we see the first four bytes are the letters TCSB.  Another quick visit to Google confirms this header type isn't found elsewhere, and there's essentially no discussion of it.  Going a few bytes further, we see "contents.xml."  And a few bytes after that, we see what looks like plaintext XML.  This is  a pretty good clue that the TCB file consists of a <filename> <filecontents>.  Let's scan a bit further and see if we can confirm that.<br />
<a href="http://blog.lib.umn.edu/mcfa0086/discretecosine/1-2.jpg"><img alt="1-2.jpg" src="http://blog.lib.umn.edu/mcfa0086/discretecosine/assets_c/2011/01/1-2-thumb-350x66-67777.jpg" width="350" height="66" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a><br />
In this segment, we see the end of the XML, and something that could be another filename - "dbtransfer" - followed by what looks like gibberish.  That doesn't help too much.  Let's keep looking.<br />
<a href="http://blog.lib.umn.edu/mcfa0086/discretecosine/1-3.jpg"><img alt="1-3.jpg" src="http://blog.lib.umn.edu/mcfa0086/discretecosine/assets_c/2011/01/1-3-thumb-350x76-67779.jpg" width="350" height="76" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a><br />
Great - a .jpg!  Looking a bit further, we see the letters "JFIF," which is recognizable as part of a JPEG header.  If you weren't already familiar with that, a quick google for "jpg hex header" would clear up any confusion.  So, we've got the basics of the file format down, but we'll need a little bit more information if we're going to write a parser.</p>

<p>Step 2: Finding the pattern<br />
We can make an educated guess that a file like this has to provide a few hints to a decoder.  We would either expect a table of contents, describing where in the bundle each individual file was located, some sort of stop bit marking the boundary between files, byte offsets describing the locations of files, or a listing of file lengths.</p>

<p>There isn't any sign of a table of contents.  Let's start looking for a stop bit, as that would make writing our parser really easy.  Want I'm going to do is pull out all of the data between two prospective files, and I want two sets to compare.  <br />
I've placed asterisks to flag the bytes corresponding to the filenames, since those are known.</p>

<p><strong>1E D1 70 4C 25 06 36 4D 42 E9 65 6A 9F 5D 88 38 0A 00 *64 62 74 72 61 6E 73 66 65 72* 42 06 ED 48 0B 50 0A C4 14 D6 63 42 F2 BF E3 9D 20 29 00 00 00 00 00 00 DE E5 FD</strong></p>

<p><strong>01 0C 00 *63 6F 6E 74 65 6E 74 73 2E 78 6D 6C* 9E 0E FE D3 C9 3A 3A 85 F4 E4 22 FE D0 21 DC D7 53 03 00 00 00 00 00 00</strong></p>

<p>The first line corresponds to the "dbtransfer" entry, the second to the "contents.xml" entry.  Let's trim the first entry to match the second.</p>

<p><strong>38 0A 00 *64 62 74 72 61 6E 73 66 65 72* 42 06 ED 48 0B 50 0A C4 14 D6 63 42 F2 BF E3 9D 20 29 00 00 00 00 00 00 </p>

<p>01 0C 00 *63 6F 6E 74 65 6E 74 73 2E 78 6D 6C* 9E 0E FE D3 C9 3A 3A 85 F4 E4 22 FE D0 21 DC D7 53 03 00 00 00 00 00 00</strong></p>

<p>It looks like we've got three bytes before the filename, followed by 18 bytes, followed by six bytes of zero.  Unfortunately, there's no obvious pattern of bits which would correspond to a "break" between segments.  However, looking at those first three bytes, we see a 0x0A, and a 0x0C, two small values in the same place.  10 and 12.  Interesting - the 12 entry corresponds with "contents.xml" and the 10 entry corresponds with "dbtransfer".  Could that byte describe the length of the filename?  Let's look at our much longer JPG entry to be sure.</p>

<p><strong>70 4A 00 *77 77 77 5C 73 6C 69 64 65 73 5C 64 37 30 64 35 34 63 66 2D 32 39 35 62 2D 34 31 34 63 2D 61 38 64 66 2D 32 66 37 32 64 66 33 30 31 31 35 65 5C 74 68 75 6D 62 6E 61 69 6C 73 5C 74 68 75 6D 62 6E 61 69 6C 30 30 2E 6A 70 67* </strong></p>

<p>0x4A - 74, corresponding to a 74 character filename.  Looks like we're in business.  </p>

<p>At this point, it's worth an aside to talk about endianness.  I happen to know that the Tandberg Content Server runs Windows on Intel, so I went into this with the assumption that the format was little-endian.  However, if you're not sure, it's always worth looking at words backwards and forwards, just in case.</p>

<p>So we know how to find our filename.  Now how do we find our file data?  Let's go back to our JPEG.  We know that JPEGs start with 0xFFD8FFE0, and a quick trip to Google also tells us that they end with 0xFFD9.  We can use that to pull a sample jpeg out of our TCB, save it to disk, and confirm that we're on the right track.<br />
<a href="http://blog.lib.umn.edu/mcfa0086/discretecosine/2-2.jpg"><img alt="2-2.jpg" src="http://blog.lib.umn.edu/mcfa0086/discretecosine/assets_c/2011/01/2-2-thumb-350x243-67781.jpg" width="350" height="243" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></p>

<p>This is one of those great steps in reverse engineering - concrete proof that you're on the right track.  Everything seems to go quicker from this point on.  </p>

<p>So, we know we've got a JPEG file in a continuous 2177 byte segment.  We know that the format used byte lengths to describe filenames - maybe it also uses byte lengths to describe file lengths.  Let's look for 2177, or 0x8108, near our JPEG.</p>

<p><a href="http://blog.lib.umn.edu/mcfa0086/discretecosine/2-3.jpg"><img alt="2-3.jpg" src="http://blog.lib.umn.edu/mcfa0086/discretecosine/assets_c/2011/01/2-3-thumb-350x66-67783.jpg" width="350" height="66" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></p>

<p>Well, that's a good sign.  But, it could be coincidental, so at this point we'd want to check a few other files to be sure.  In fact, looking further in some file, we find some larger .mp4 files which don't quite match our guess.  It turns out that file length is a 32bit value, not a 16bit value - with our two jpegs, the larger bytes just happened to be zeros.</p>

<p>Step 3: Writing a parser</p>

<p>"Bbbbbut...", I hear you say!  "You have all these chunks of data you don't understand!"</p>

<p>True enough, but all I care about is getting the files out, with the proper names.  I don't care about creation dates, file permissions, or any of the other crud that this file format likely contains.</p>

<p><a href="http://blog.lib.umn.edu/mcfa0086/discretecosine/3-1.jpg"><img alt="3-1.jpg" src="http://blog.lib.umn.edu/mcfa0086/discretecosine/assets_c/2011/01/3-1-thumb-350x235-67786.jpg" width="350" height="235" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></p>

<p>Let's look at the first two files in this bundle.  A little bit of byte counting shows us the pattern that we can follow.  We'll treat the first file as a special case.  After that, we seek 16 bytes from the end of file data to find the filename length (2 bytes), then we're at the filename, then we seek 16 bytes to find the file length (4 bytes) and seek another 4 bytes to find the start of the file data.  Rinse, repeat.</p>

<p>I wrote a quick parser in PHP, since the eventual use for this information is part of a larger PHP-based application, but any language with basic raw file handling would work just as well.</p>

<p><a href="http://blog.lib.umn.edu/mcfa0086/discretecosine/tcsParser.txt">tcsParser.txt</a><br />
This was about the simplest possible type of reverse engineering - we had known data in an unknown format, without any compression or encryption.  It only gets harder from here...</p>]]>

</content>
</entry>

<entry>
<title>A nice comparison of mics</title>
<link rel="alternate" type="text/html" href="http://blog.lib.umn.edu/mcfa0086/discretecosine/236746.html" />
<modified>2010-06-03T18:08:32Z</modified>
<issued>2010-06-03T18:08:29Z</issued>
<id>tag:blog.lib.umn.edu,2010:/mcfa0086/discretecosine//2458.236746</id>
<created>2010-06-03T18:08:29Z</created>
<summary type="text/plain"> DVEStore has done a great comparison of different types of microphones on video. Audio is a black art, and folks rarely put in the time to do A/B/C comparisons. We tend to just default to a set of mics...</summary>
<author>
<name>
</name>
<url></url>
</author>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://blog.lib.umn.edu/mcfa0086/discretecosine/">
<![CDATA[<p>
DVEStore has done a <a href="http://www.freshdv.com/2010/06/shotgun-mic-sound-comparisons.html">great comparison</a> of different types of microphones on video.  Audio is a black art, and folks rarely put in the time to do A/B/C comparisons.  We tend to just default to a set of mics that we've decided are "good enough" and then don't go back to reevaluate.  
</p>]]>

</content>
</entry>

<entry>
<title>Presentation on the HTML5 video tag</title>
<link rel="alternate" type="text/html" href="http://blog.lib.umn.edu/mcfa0086/discretecosine/232797.html" />
<modified>2010-04-29T17:41:49Z</modified>
<issued>2010-04-29T17:41:47Z</issued>
<id>tag:blog.lib.umn.edu,2010:/mcfa0086/discretecosine//2458.232797</id>
<created>2010-04-29T17:41:47Z</created>
<summary type="text/plain"><![CDATA[ A few weeks back, I was given the opportunity to present at MinneWebcon. My talk, "&lt;video&gt; will be your friend" focused on the legal issues and implementation possibilities surrounding the HTML5 video tag. I've put my slides online, if...]]></summary>
<author>
<name>
</name>
<url></url>
</author>
<dc:subject></dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://blog.lib.umn.edu/mcfa0086/discretecosine/">
<![CDATA[<p>
A few weeks back, I was given the opportunity to present at <a href="http://minnewebcon.umn.edu/">MinneWebcon</a>.  My talk, "&lt;video&gt; will be your friend" focused on the legal issues and implementation possibilities surrounding the HTML5 video tag.
</p><p>
I've put my slides online, if you want to take a look.  I've also <a href="https://mediamill.cla.umn.edu/mediamagnet2/feedGenerator/multisourceFlashViewer/2627">recorded</a> the first half the of the lecture as part of a test of our Mocha class capture application.  I'll be recording the second half Real Soon Now.
</p>
<div style="width:425px" id="__ss_3904182"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/sith33/html5-video-presentation" title="HTML5 Video Presentation">HTML5 Video Presentation</a></strong><object id="__sse3904182" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=minnewebconpres2-100429123148-phpapp01&stripped_title=html5-video-presentation" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse3904182" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=minnewebconpres2-100429123148-phpapp01&stripped_title=html5-video-presentation" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object><div style="padding:5px 0 12px">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/sith33">sith33</a>.</div></div>]]>

</content>
</entry>

<entry>
<title>NAB 2010 wrapup</title>
<link rel="alternate" type="text/html" href="http://blog.lib.umn.edu/mcfa0086/discretecosine/229430.html" />
<modified>2010-04-15T15:48:14Z</modified>
<issued>2010-04-15T15:48:11Z</issued>
<id>tag:blog.lib.umn.edu,2010:/mcfa0086/discretecosine//2458.229430</id>
<created>2010-04-15T15:48:11Z</created>
<summary type="text/plain"> Another year of NAB has come and gone. Making it out of Vegas with some remaining faith in humanity seems like a successful outcome. So, anything worth talking about at the show? First off, there&apos;s 3d. 3D is The...</summary>
<author>
<name>
</name>
<url></url>
</author>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://blog.lib.umn.edu/mcfa0086/discretecosine/">
<![CDATA[<p>
Another year of NAB has come and gone.  Making it out of Vegas with some remaining faith in humanity seems like a successful outcome.  So, anything worth talking about at the show?  
</p><p>
First off, there's 3d.  3D is The Next Big Thing, and that was obvious to anyone who spent half a second on the show floor.  Everything from camera rigs, to post production apps, to display technology was all 3d, all the time.  I'm not a huge fan of 3d in most cases, but the industry is at least feigning interest.
</p><p>
Luckily, at a show as big as NAB, there's plenty of other cool stuff to see.  So, what struck my fancy?
</p><p>
First off, Avid and Adobe were showing new versions of Media Composer and Premiere.  Both sounded pretty amazing on paper, but I must say I was somewhat underwhelmed by both in reality.  Premiere felt a little rough around the edges - the Mercurial Engine wasn't the sort of next generation tech that I expected.  Media Composer 5 has some nice new tweaks, but it's still rather Avid-y - which is good for Avid people, less interesting for the rest of us.
</p><p>
In other software news, Blackmagic Design was showing off some of what they're doing with the DaVinci technology that they acquired.  Software-only Da Vinci Resolve for $999 is a pretty amazing deal, and the demos were quite nice.  That said, color correction is an art, so just making the technology cheaper isn't necessarily going to dramatically change the number of folks who do it well - see Color.
</p><p>
Blackmagic also has a pile of new USB 3.0 hardware devices, including the absolutely gorgeous UltraStudio Pro.  Makes me pine for USB 3.0 on the mac.
</p><p>
On the production side, we saw new cameras from just about everyone.  To start at the high end, the Arri <a href="http://www.arridigital.com/alexa">Alexa</a> was absolutely stunning.  Perhaps the nicest digital cinema footage I've seen.  Not only that, but they've worked out a usable workflow, recording to ProRes plus RAW.  At the price point they're promising, the world is going to get a lot more difficult for RED.
</p><p>
Sony's new <a href="http://pro.sony.com/bbsccms/ext/xdcamex/xdcamex102009.shtml?PID=O:xdcamextease102009pm_exsite:video">XDCam EX </a>gear is another good step forward for that format.  Nothing groundbreaking, but another nice progression.  I was kind of hoping we'd see 4:2:2 EX gear from them, but I suppose they need to justify the disc based formats for a while longer.
</p><p>
The Panasonic<a href="http://www2.panasonic.com/webapp/wcs/stores/servlet/prModelDetail?storeId=11301&amp;catalogId=13251&amp;itemId=407080&amp;modelNo=Content04082010101919040&amp;surfModel"> AG-AF100</a> is another interesting camera, bringing micro 4/3rds into video.  The only strange thing is the recording side - AVCHD to SD cards.  While I'm thrilled to see them using SD instead of P2, it sure would have been nice to have an AVCIntra option.
</p><p>
Finally, Canon's 4:2:2 <a href="http://www.usa.canon.com/templatedata/pressrelease/20100407_xf_procamcorders.html">XF cams</a> are a nice option for the ENG/EFP market.  Nothing groundbreaking, aside from the extra color sampling, but it's a nice step up from what they've been doing.  
</p><p>
Speaking of Canon, it's interesting to see the ways that the 5d and 7d have made their way into mainstream filmmaking.  At one point, I thought they'd be relegated to the indie community - folks looking for nice DoF on a budget.  Instead, they seem to have been adopted by a huge range of productions, from episodic TV to features.  While they're not right for everyone, the price and quality make them an easy choice in many cases.
</p><p>
One of the stars of the show for me was the <a href="http://www.goprocamera.com/">GoPro</a>, a small waterproof HD camera that ships with a variety of mounts, designed to be used in places where you couldn't or wouldn't use a more full featured camera.  No LCD, just a record button and a wide angle lens.  I bought two.
</p><p>
Those are the things that stand out for me.  While there was plenty of interesting stuff to be seen, given the current economic conditions at the University, I wasn't exactly in a shopping mindset.  The show definitely felt more optimistic than it did last year, and companies are again pushing out new products.  However, attendances was about 20% lower than 2008, and that was definitely noticeable on the show floor.  
</p>]]>

</content>
</entry>

<entry>
<title>CaptionManager - easily add and remove captions from QT movies</title>
<link rel="alternate" type="text/html" href="http://blog.lib.umn.edu/mcfa0086/discretecosine/219906.html" />
<modified>2010-02-18T16:26:28Z</modified>
<issued>2010-02-18T16:24:36Z</issued>
<id>tag:blog.lib.umn.edu,2010:/mcfa0086/discretecosine//2458.219906</id>
<created>2010-02-18T16:24:36Z</created>
<summary type="text/plain"> Cough. Yeah. Remember this blog? Right then. Here&apos;s a new little app to add and remove caption tracks (SCC files) from Quicktime files. In theory you can do this with Quicktime Pro, but it doesn&apos;t seem to work so...</summary>
<author>
<name>
</name>
<url></url>
</author>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://blog.lib.umn.edu/mcfa0086/discretecosine/">
<![CDATA[<p>
Cough.  Yeah.  Remember this blog?  Right then.
</p><p>
Here's a new little app to add and remove caption tracks (SCC files) from Quicktime files.  In theory you can do this with Quicktime Pro, but it doesn't seem to work so well anymore. 
</p><p>
This zip file includes the source for the app, Xcode project, and a compiled build.
</p><p>
Basically, you can open a quicktime movie, and it'll detect whether there are already captions or not.  Then you can strip the captions if they already exist (plus an associated TC track) or add new captions from an SCC file.  You'll either need to be on Snow Leopard or have the <a href="http://developer.apple.com/mac/library/samplecode/ClosedCaptionImporter/">Caption Component </a>installed.  The built version is Intel only, though you could probably compile a PPC version if you were so inclined.
</p><p>
The app writes out a new file, rather than updating in place, due to some limitations in QTKit.
</p><p>
For the command line, running ./CaptionManager.app/Contents/MacOS/CaptionManager -help will give you the relevant info.
</p><p>
No license attached, because I still don't understand the implications of BSDing stuff created on the University's dime.
</p><p>
<a href="http://blog.lib.umn.edu/mcfa0086/discretecosine/CaptionManager.zip">CaptionManager.zip</a>
</p><p>
Oh also, the GUI leaks a little memory.  Deal.  I've also posted a <a href="http://mediamill.cla.umn.edu/mediamill/display/61101">screencast</a> of the app.
</p>]]>

</content>
</entry>

<entry>
<title>Sony Launches Less Useful Z5U</title>
<link rel="alternate" type="text/html" href="http://blog.lib.umn.edu/mcfa0086/discretecosine/205521.html" />
<modified>2009-11-18T18:31:49Z</modified>
<issued>2009-11-18T18:25:40Z</issued>
<id>tag:blog.lib.umn.edu,2009:/mcfa0086/discretecosine//2458.205521</id>
<created>2009-11-18T18:25:40Z</created>
<summary type="text/plain"> Sony today announced the NXCAM, an AVCHD-based &quot;professional&quot; camera which bears a striking resemblance to the EX1 and Z5U. You get 1080p exmor CMOS chips (presumably 1/3&quot;?) and records AVCHD to the highly popular (sarcasm) Memory Stick media. Pricing...</summary>
<author>
<name>
</name>
<url></url>
</author>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://blog.lib.umn.edu/mcfa0086/discretecosine/">
<![CDATA[<p>
Sony today announced the NXCAM, an AVCHD-based "professional" camera which bears a striking resemblance to the EX1 and Z5U.
</p><p>
You get 1080p exmor CMOS chips (presumably 1/3"?) and records AVCHD to the highly popular (sarcasm) Memory Stick media.
</p><p>
Pricing hasn't been announced, but presumably it'll be in the $4000 range like the Z5U.  I'll be curious to see how this shakes out in the market.
</p>]]>

</content>
</entry>

<entry>
<title>ClipWrap 2.0 brings AVCHD support</title>
<link rel="alternate" type="text/html" href="http://blog.lib.umn.edu/mcfa0086/discretecosine/199947.html" />
<modified>2009-10-26T19:59:36Z</modified>
<issued>2009-10-26T19:59:34Z</issued>
<id>tag:blog.lib.umn.edu,2009:/mcfa0086/discretecosine//2458.199947</id>
<created>2009-10-26T19:59:34Z</created>
<summary type="text/plain"> Do you love AVCHD, but hate the long, disk consuming transcodes? Well, ClipWrap 2.0 is here, and it lets you turn your AVCHD mts files into Quicktime compatible mov files, with no transcoding, and no generation loss. Dig it....</summary>
<author>
<name>
</name>
<url></url>
</author>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://blog.lib.umn.edu/mcfa0086/discretecosine/">
<![CDATA[<p>
Do you love AVCHD, but hate the long, disk consuming transcodes?  Well,<a href="http://www.clipwrap.com/downloadtrial.php"> ClipWrap 2.0</a> is here, and it lets you turn your AVCHD mts files into Quicktime compatible mov files, with no transcoding, and no generation loss.  Dig it.
</p><p>
(disclaimer: the author of ClipWrap is a friend)
</p>]]>

</content>
</entry>

<entry>
<title>XDCam EX gets some friends</title>
<link rel="alternate" type="text/html" href="http://blog.lib.umn.edu/mcfa0086/discretecosine/199100.html" />
<modified>2009-10-21T20:10:22Z</modified>
<issued>2009-10-21T20:10:19Z</issued>
<id>tag:blog.lib.umn.edu,2009:/mcfa0086/discretecosine//2458.199100</id>
<created>2009-10-21T20:10:19Z</created>
<summary type="text/plain"> Sony has announced a couple new additions to the XDCamEX family - the PMW-350 and the PMW-EX1R. The 350 is a shouldermount camera with interchangeable lenses and 2/3&quot; chips. That puts it somewhere between the 1/2&quot; PDW-F355 and the...</summary>
<author>
<name>
</name>
<url></url>
</author>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://blog.lib.umn.edu/mcfa0086/discretecosine/">
<![CDATA[<p>
Sony has <a href="http://blog.digitalcontentproducer.com/briefingroom/2009/10/21/sony-redefines-the-capabilities-of-solid-state-production-with-new-xdcam-ex-camcorders/">announced</a> a couple new additions to the XDCamEX family - the PMW-350 and the PMW-EX1R.
</p><p>
The 350 is a shouldermount camera with interchangeable lenses and 2/3" chips.  That puts it somewhere between the 1/2" PDW-F355 and the 2/3" 4:2:2 PDW-700.  
</p><p style="text-align:center;">
<a href="http://blog.lib.umn.edu/mcfa0086/discretecosine/sony_pmw-350_angle_med.jpg" onclick="window.open('http://blog.lib.umn.edu/mcfa0086/discretecosine/sony_pmw-350_angle_med.jpg','popup','width=297,height=233,scrollbars=no,resizable=yes,toolbar=no,directories=no,location=no,menubar=no,status=yes,left=0,top=0');return false"><img src="http://blog.lib.umn.edu/mcfa0086/discretecosine/sony_pmw-350_angle_med-tm.jpg" height="200" width="254" border="1" hspace="4" vspace="4" alt="Sony Pmw-350 Angle Med" /></a>
</p><p>
The EX1R is a minor bump to the EX1, adding features that users have asked for, like a dedicated viewfinder and a DVCam recording mode.
</p><p>
For me, the most interesting bit of news is that Sony is launching the "MEAD-MS01," an SXS to MemoryStick adapter.  I guess Sony noticed that many EX1 and EX3 users have been using SD adapters, and decided to get into that market.  And of course, they had to use everyone's least favorite flash format, Memorystick.  I'll stick to my SD cards for now, but it's nice to see Sony "legitimize" that recording option a bit. 
</p>]]>

</content>
</entry>

<entry>
<title>Podcast Producer 2 tip - running xgrid jobs as logged in user</title>
<link rel="alternate" type="text/html" href="http://blog.lib.umn.edu/mcfa0086/discretecosine/198479.html" />
<modified>2009-10-19T20:56:47Z</modified>
<issued>2009-10-19T20:56:42Z</issued>
<id>tag:blog.lib.umn.edu,2009:/mcfa0086/discretecosine//2458.198479</id>
<created>2009-10-19T20:56:42Z</created>
<summary type="text/plain"> So I&apos;ve been playing with an interesting &quot;feature&quot; in PCP2 - the &quot;chapterize&quot; command generates different results when it can talk to the window server versus when it can&apos;t. In my case, it generates much better results in the...</summary>
<author>
<name>
</name>
<url></url>
</author>
<dc:subject></dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://blog.lib.umn.edu/mcfa0086/discretecosine/">
<![CDATA[<p>
So I've been playing with an interesting "feature" in PCP2 - the "chapterize" command generates different results when it can talk to the window server versus when it can't.  In my case, it generates much better results in the case of the former.  
</p><p>
"But," you say, "my PCP2 xgrid jobs can't talk to the window server!"
</p><p>
Very true.  However, you can change the user that PCP2 uses to submit Xgrid jobs, and Xgrid will run the job with that user's permissions if everyone is single signon'd to the same kerberos domain.  
</p><p>
So, now we've got PCP2 jobs running as a real user.  Next, log into the GUI as that user.  
</p><p>
Now, when PCP2 workflows run, they'll be able to talk to the window server, and at least in the case of "chapterize," use what appears to be the "Good" code path.  Faster, more accurate, more delightful.
</p><p style="text-align:center;">
<a href="http://blog.lib.umn.edu/mcfa0086/discretecosine/pcpserveradmin.jpg" onclick="window.open('http://blog.lib.umn.edu/mcfa0086/discretecosine/pcpserveradmin.jpg','popup','width=900,height=725,scrollbars=no,resizable=yes,toolbar=no,directories=no,location=no,menubar=no,status=yes,left=0,top=0');return false"><img src="http://blog.lib.umn.edu/mcfa0086/discretecosine/pcpserveradmin-tm.jpg" height="200" width="248" border="1" hspace="4" vspace="4" alt="Pcpserveradmin" /></a>
</p>]]>

</content>
</entry>

<entry>
<title>Why iFrame is a good idea</title>
<link rel="alternate" type="text/html" href="http://blog.lib.umn.edu/mcfa0086/discretecosine/197899.html" />
<modified>2009-10-15T15:18:08Z</modified>
<issued>2009-10-15T15:18:03Z</issued>
<id>tag:blog.lib.umn.edu,2009:/mcfa0086/discretecosine//2458.197899</id>
<created>2009-10-15T15:18:03Z</created>
<summary type="text/plain"> I&apos;ve seen some hilariously uninformed posts about the new Apple iFrame specification. Let me take a minute to explain what it actually is. First off, as opposed to what the fellow in the Washington Post writes, it&apos;s not really...</summary>
<author>
<name>
</name>
<url></url>
</author>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://blog.lib.umn.edu/mcfa0086/discretecosine/">
<![CDATA[<p>
I've seen some <a href="http://www.washingtonpost.com/wp-dyn/content/article/2009/10/14/AR2009101403544.html">hilariously uninformed posts</a> about the new <a href="http://support.apple.com/kb/HT3905">Apple iFrame</a> specification.  Let me take a minute to explain what it actually is.
</p><p>
First off, as opposed to what the fellow in the Washington Post writes, it's not really a new format.  iFrame is just a way of using formats that we've already know and love.  As the name suggests, iFrame is just an i-frame only H.264 specification, using AAC audio.  An intraframe version of H.264 eh?  Sounds a lot like AVC-Intra, right?  Exactly.  And for exactly the same reasons - edit-ability.  Whereas AVC-Intra targets the high end, iFrame targets the low end.
</p><p>
Even when used in intraframe mode, H.264 has some huge advantage over the older intraframe codecs like DV or DVCProHD.  For example, significantly better entropy coding, adaptive quantization, and potentially variable bitrates.  There are many others.  Essentially, it's what happens when you take DV and spend another 10 years working on making it better.  That's why Panasonic's AVC-Intra cameras can do DVCProHD quality video at half (or less) the bitrate.
</p><p>
Why does iFrame matter for editing?  Anyone who's tried to edit video from one of the modern H.264 cameras without first transcoding to an intraframe format has experienced the huge CPU demands and sluggish performance.  Behind the scenes it's even worse.  Because interframe H.264 can have very long GOPs, displaying any single frame can rely on dozens or even hundreds of other frames.  Because of the complexity of H.264, building these frames is very high-cost.  And it's a variable cost.  Decoding the first frame in a GOP is relatively trivial, while decoding the middle B-frame can be hugely expensive.  
</p><p>
Programs like iMovie mask that from the user in some cases, but at the expensive of high overhead.  But, anyone who's imported AVC-HD video into Final Cut Pro or iMovie knows that there's a long "importing" step - behind the scenes, the applications are transcoding your video into an intraframe format, like Apple Intermediate or ProRes.  It sort of defeats one of the main purposes of a file-based workflow.
</p><p>
You've also probably noticed the amount of time it takes to export a video in an interframe format.  Anyone who's edited HDV in Final Cut Pro has experienced this.  With DV, doing an "export to quicktime" is simply a matter of Final Cut Pro rewriting all of the data to disk - it's essentially a file copy.  With HDV, Final Cut Pro has to do a complete reencode of the whole timeline, to fit everything into the new GOP structure.  Not only is this time consuming, but it's essentially a generation loss.
</p><p>
iFrame solves these issues by giving you an intraframe codec, with modern efficiency, which can be decoded by any of the H.264 decoders that we already know and love.  
</p><p>
Having this as an optional setting on cameras is a huge step forward for folks interested in editing video.  Hopefully some of the manufacturers of AVC-HD cameras will adopt this format as well.  I'll gladly trade a little resolution for instant edit-ability. 
</p>]]>

</content>
</entry>

<entry>
<title>The other shoe drops</title>
<link rel="alternate" type="text/html" href="http://blog.lib.umn.edu/mcfa0086/discretecosine/197470.html" />
<modified>2009-10-13T20:53:07Z</modified>
<issued>2009-10-13T20:52:26Z</issued>
<id>tag:blog.lib.umn.edu,2009:/mcfa0086/discretecosine//2458.197470</id>
<created>2009-10-13T20:52:26Z</created>
<summary type="text/plain">Sure enough, Apple has announced iMovie 8.0.5 with support for the iFrame format. I win the prize!...</summary>
<author>
<name>
</name>
<url></url>
</author>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://blog.lib.umn.edu/mcfa0086/discretecosine/">
<![CDATA[<p>Sure enough, Apple has <a href="http://support.apple.com/kb/DL859">announced</a> iMovie 8.0.5 with support for the iFrame format.  I win the prize!</p>]]>

</content>
</entry>

<entry>
<title>New Sanyo cameras have editing in mind</title>
<link rel="alternate" type="text/html" href="http://blog.lib.umn.edu/mcfa0086/discretecosine/197411.html" />
<modified>2009-10-13T17:28:41Z</modified>
<issued>2009-10-13T17:28:38Z</issued>
<id>tag:blog.lib.umn.edu,2009:/mcfa0086/discretecosine//2458.197411</id>
<created>2009-10-13T17:28:38Z</created>
<summary type="text/plain"> Sanyo has announced some &apos;A&apos; revisions to their existing FH1 and HD2000 cameras, which add a new &quot;iFrame&quot; mode. It appears this is an i-frame only h264 mode, at a reduced 960x540 resolution. It&apos;s a very interesting idea -...</summary>
<author>
<name>
</name>
<url></url>
</author>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://blog.lib.umn.edu/mcfa0086/discretecosine/">
<![CDATA[<p>
Sanyo has <a href="http://www.electronista.com/articles/09/10/13/new.sanyo.camcorders.get.iframe.support/">announced</a> some 'A' revisions to their existing FH1 and HD2000 cameras, which add a new "iFrame" mode.  It appears this is an i-frame only h264 mode, at a reduced 960x540 resolution.  It's a very interesting idea - if other manufacturers adopted it as an optional setting, and if NLE manufacturers supported it, it could turn H264 into an edit-friendly format.  Right now, editing H264 is hamstrung by the extremely long GOPs and complex interframe relationships.  Going to i-frame only makes it essentially a more advanced version of a codec like DV or DVCProHD.  
</p><p>
Interestingly, the bottom of the press release mentions that
</p><blockquote>
"The iFrame logo and the iFrame symbol are trademarks of Apple Inc."
</blockquote><p>
That's news to me.  One wonders if Sanyo jumped the gun on a release, or if this is just a format that Apple uses internally in tools like iMovie, which Sanyo has co-opted.  I'll certainly be keeping my eyes open for an Apple announcement about "iFrame."
</p>]]>

</content>
</entry>

<entry>
<title>Quicktime Eats Cookies</title>
<link rel="alternate" type="text/html" href="http://blog.lib.umn.edu/mcfa0086/discretecosine/191975.html" />
<modified>2009-09-20T03:38:24Z</modified>
<issued>2009-09-20T03:33:09Z</issued>
<id>tag:blog.lib.umn.edu,2009:/mcfa0086/discretecosine//2458.191975</id>
<created>2009-09-20T03:33:09Z</created>
<summary type="text/plain">It appears that when embedding Quicktime in a webpage, being viewed by Safari 4 in Snow Leopard, Quicktime no longer passes cookies to the server. So, if you&apos;re having the Quicktime plugin load a file that uses cookie data to...</summary>
<author>
<name>
</name>
<url></url>
</author>
<dc:subject></dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://blog.lib.umn.edu/mcfa0086/discretecosine/">
<![CDATA[<p>It appears that when embedding Quicktime in a webpage, being viewed by Safari 4 in Snow Leopard, Quicktime no longer passes cookies to the server.  So, if you're having the Quicktime plugin load a file that uses cookie data to verify permissions, you'll need to move to a query string model.  </p>

<p>This only happens when Safari is running in 64bit mode, so I imagine it has to do with the "plugins running as separate entities" crash protection that Snow Leopard adds.</p>

<p>This does not appear to impact the Flash plugin.</p>]]>

</content>
</entry>

<entry>
<title>Podcast Producer 2 REST api</title>
<link rel="alternate" type="text/html" href="http://blog.lib.umn.edu/mcfa0086/discretecosine/190610.html" />
<modified>2009-09-11T15:19:42Z</modified>
<issued>2009-09-11T15:19:40Z</issued>
<id>tag:blog.lib.umn.edu,2009:/mcfa0086/discretecosine//2458.190610</id>
<created>2009-09-11T15:19:40Z</created>
<summary type="text/plain"> I&apos;ve been working on documenting the REST api that PCP2 uses for client server communication as part of a new project. I thought it might be useful to other folks. Consider this a work in progress - I&apos;ve only...</summary>
<author>
<name>
</name>
<url></url>
</author>
<dc:subject></dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://blog.lib.umn.edu/mcfa0086/discretecosine/">
<![CDATA[<p>
I've been working on documenting the REST api that PCP2 uses for client server communication as part of a new project.  I thought it might be useful to other folks.  Consider this a work in progress - I've only documented the workflow for doing a multisource recording so far.  Follow the job for the info.
</p>]]>
<![CDATA[<p>
Each section gives a sample command and a sample response. 
</p><p>
All pages are behind basic HTTP auth.
</p><p>
General sequence of events
</p><p>
* get workflow list
<br />* get cameras
<br />* request status for camera (including thumbnail)
<br />* start cameras
<br />* create recording enclosure
<br />* stop cameras, provide submission_UUID returned by above step, include title
</p><p>
----
</p><p>
*URL: https://pcpserver:8170/podcastproducer/info 
</p><p>
*Type: GET 
</p><p>
*Content: version=2 
</p><p>
*Response: 
<br />&lt;pre&gt;
<br />&lt;podcast_producer_result&gt;
<br />  &lt;action&gt;index&lt;/action&gt;
<br />  &lt;status&gt;success&lt;/status&gt;
<br />  &lt;plist version="1.0"&gt;
<br />    &lt;dict&gt;
<br />      &lt;key&gt;server_version&lt;/key&gt;
<br />      &lt;string&gt;2.0&lt;/string&gt;
<br />      &lt;key&gt;http_auth_type&lt;/key&gt;
<br />      &lt;array&gt;
<br />        &lt;string&gt;basic&lt;/string&gt;
<br />        &lt;string&gt;digest&lt;/string&gt;
<br />        &lt;string&gt;kerberos&lt;/string&gt;
<br />      &lt;/array&gt;
<br />      &lt;key&gt;krb_service_principals&lt;/key&gt;
<br />      &lt;array&gt;
<br />        &lt;string&gt;pcast/x101-186-103-dhcp.cla.umn.edu@X101-186-103-DHCP.CLA.UMN.EDU&lt;/string&gt;
<br />      &lt;/array&gt;
<br />      &lt;key&gt;server_uuid&lt;/key&gt;
<br />      &lt;string&gt;DB31DA49-10AE-472C-B3B9-86A8F8112399&lt;/string&gt;
<br />      &lt;key&gt;cluster_members&lt;/key&gt;
<br />      &lt;dict&gt;
<br />        &lt;key&gt;F1021B98-7E7E-44FB-8EB1-E0DA1885D5BA&lt;/key&gt;
<br />        &lt;dict&gt;
<br />          &lt;key&gt;date_added&lt;/key&gt;
<br />          &lt;string&gt;Tue Sep 01 10:23:49 -0500 2009&lt;/string&gt;
<br />          &lt;key&gt;last_update&lt;/key&gt;
<br />          &lt;string&gt;Tue Sep 08 10:35:17 -0500 2009&lt;/string&gt;
<br />          &lt;key&gt;server_host&lt;/key&gt;
<br />          &lt;string&gt;x101-186-103-dhcp.cla.umn.edu&lt;/string&gt;
<br />          &lt;key&gt;server_port&lt;/key&gt;
<br />          &lt;string&gt;8170&lt;/string&gt;
<br />          &lt;key&gt;tunnel_agent_host&lt;/key&gt;
<br />          &lt;string&gt;x101-186-103-dhcp.cla.umn.edu&lt;/string&gt;
<br />          &lt;key&gt;tunnel_agent_port&lt;/key&gt;
<br />          &lt;string&gt;8175&lt;/string&gt;
<br />          &lt;key&gt;network_addrs&lt;/key&gt;
<br />          &lt;array&gt;
<br />            &lt;string&gt;128.101.186.103&lt;/string&gt;
<br />          &lt;/array&gt;
<br />        &lt;/dict&gt;
<br />      &lt;/dict&gt;
<br />    &lt;/dict&gt;
<br />  &lt;/plist&gt;
<br />&lt;/podcast_producer_result&gt;
<br />&lt;/pre&gt;
</p><p>
----
</p><p>
* URL: https://pcpserver:8170/podcastproducer/workflows
<br />* Type: GET
<br />* Content: version=2&#38;language=en
<br />* Response:
<br />&lt;pre&gt;
<br />&lt;podcast_producer_result&gt;
<br />  &lt;action&gt;index&lt;/action&gt;
<br />  &lt;status&gt;success&lt;/status&gt;
<br />  &lt;results&gt;OK&lt;/results&gt;
<br />  &lt;plist version="1.0"&gt;
<br />    &lt;dict&gt;
<br />      &lt;key&gt;user_fullname&lt;/key&gt;
<br />      &lt;string&gt;podcast&lt;/string&gt;
<br />      &lt;key&gt;user_shortname&lt;/key&gt;
<br />      &lt;string&gt;podcast&lt;/string&gt;
<br />      &lt;key&gt;workflows&lt;/key&gt;
<br />      &lt;array&gt;
<br />        &lt;dict&gt;
<br />          &lt;key&gt;name&lt;/key&gt;
<br />          &lt;string&gt;Montage&lt;/string&gt;
<br />          &lt;key&gt;title&lt;/key&gt;
<br />          &lt;string&gt;Montage&lt;/string&gt;
<br />          &lt;key&gt;description&lt;/key&gt;
<br />          &lt;string&gt;Montage workflow&lt;/string&gt;
<br />          &lt;key&gt;uuid&lt;/key&gt;
<br />          &lt;string&gt;F797D54D-1539-42AA-B6AC-3CB3A4C15EF5&lt;/string&gt;
<br />          &lt;key&gt;version&lt;/key&gt;
<br />          &lt;string&gt;2.0&lt;/string&gt;
<br />          &lt;key&gt;editor&lt;/key&gt;
<br />          &lt;string&gt;Podcast Composer&lt;/string&gt;
<br />          &lt;key&gt;sources&lt;/key&gt;
<br />          &lt;array&gt;
<br />&lt;dict&gt;
<br />	&lt;key&gt;contentTypes&lt;/key&gt;
<br />	&lt;array&gt;
<br />		&lt;string&gt;com.apple.quicktime-movie&lt;/string&gt;
<br />		&lt;string&gt;com.adobe.pdf&lt;/string&gt;
<br />		&lt;string&gt;com.apple.iwork.keynote.key&lt;/string&gt;
<br />		&lt;string&gt;com.apple.iwork.pages.pages&lt;/string&gt;
<br />		&lt;string&gt;org.openxmlformats.wordprocessingml.document&lt;/string&gt;
<br />		&lt;string&gt;com.microsoft.word.doc&lt;/string&gt;
<br />		&lt;string&gt;org.openxmlformats.presentationml.presentation&lt;/string&gt;
<br />		&lt;string&gt;com.microsoft.powerpoint.ppt&lt;/string&gt;
<br />		&lt;string&gt;com.microsoft.bmp&lt;/string&gt;
<br />		&lt;string&gt;com.compuserve.gif&lt;/string&gt;
<br />		&lt;string&gt;public.jpeg-2000&lt;/string&gt;
<br />		&lt;string&gt;public.jpeg&lt;/string&gt;
<br />		&lt;string&gt;com.adobe.pdf&lt;/string&gt;
<br />		&lt;string&gt;com.apple.pict&lt;/string&gt;
<br />		&lt;string&gt;public.png&lt;/string&gt;
<br />		&lt;string&gt;com.adobe.photoshop-image&lt;/string&gt;
<br />		&lt;string&gt;com.sgi.sgi-image&lt;/string&gt;
<br />		&lt;string&gt;com.truevision.tga-image&lt;/string&gt;
<br />		&lt;string&gt;public.tiff&lt;/string&gt;
<br />	&lt;/array&gt;
<br />	&lt;key&gt;description&lt;/key&gt;
<br />	&lt;string&gt;Any Document&lt;/string&gt;
<br />	&lt;key&gt;isFolder&lt;/key&gt;
<br />	&lt;true/&gt;
<br />	&lt;key&gt;isOptional&lt;/key&gt;
<br />	&lt;false/&gt;
<br />	&lt;key&gt;sourceTypes&lt;/key&gt;
<br />	&lt;array&gt;
<br />		&lt;string&gt;File&lt;/string&gt;
<br />	&lt;/array&gt;
<br />&lt;/dict&gt;
<br />          &lt;/array&gt;
<br />          &lt;key&gt;user_requirements&lt;/key&gt;
<br />          &lt;array&gt;
<br />            &lt;string&gt;Title&lt;/string&gt;
<br />            &lt;string&gt;Description&lt;/string&gt;
<br />          &lt;/array&gt;
<br />          &lt;key&gt;access_control_entries&lt;/key&gt;
<br />          &lt;array&gt;
<br />          &lt;/array&gt;
<br />        &lt;/dict&gt;
<br />        &lt;dict&gt;
<br />          &lt;key&gt;name&lt;/key&gt;
<br />          &lt;string&gt;Single Source&lt;/string&gt;
<br />          &lt;key&gt;title&lt;/key&gt;
<br />          &lt;string&gt;Single Source&lt;/string&gt;
<br />          &lt;key&gt;description&lt;/key&gt;
<br />          &lt;string&gt;Single Source workflow&lt;/string&gt;
<br />          &lt;key&gt;uuid&lt;/key&gt;
<br />          &lt;string&gt;DEFA1587-A650-426E-92DA-01C5EB811705&lt;/string&gt;
<br />          &lt;key&gt;version&lt;/key&gt;
<br />          &lt;string&gt;2.0&lt;/string&gt;
<br />          &lt;key&gt;editor&lt;/key&gt;
<br />          &lt;string&gt;Podcast Composer&lt;/string&gt;
<br />          &lt;key&gt;sources&lt;/key&gt;
<br />          &lt;array&gt;
<br />&lt;dict&gt;
<br />	&lt;key&gt;contentTypes&lt;/key&gt;
<br />	&lt;array&gt;
<br />		&lt;string&gt;com.apple.quicktime-movie&lt;/string&gt;
<br />	&lt;/array&gt;
<br />	&lt;key&gt;description&lt;/key&gt;
<br />	&lt;string&gt;Any Video&lt;/string&gt;
<br />	&lt;key&gt;isFolder&lt;/key&gt;
<br />	&lt;false/&gt;
<br />	&lt;key&gt;isOptional&lt;/key&gt;
<br />	&lt;false/&gt;
<br />	&lt;key&gt;sourceTypes&lt;/key&gt;
<br />	&lt;array&gt;
<br />		&lt;string&gt;Video&lt;/string&gt;
<br />		&lt;string&gt;Screen&lt;/string&gt;
<br />		&lt;string&gt;Audio&lt;/string&gt;
<br />		&lt;string&gt;File&lt;/string&gt;
<br />	&lt;/array&gt;
<br />&lt;/dict&gt;
<br />          &lt;/array&gt;
<br />          &lt;key&gt;user_requirements&lt;/key&gt;
<br />          &lt;array&gt;
<br />            &lt;string&gt;Title&lt;/string&gt;
<br />            &lt;string&gt;Description&lt;/string&gt;
<br />          &lt;/array&gt;
<br />          &lt;key&gt;access_control_entries&lt;/key&gt;
<br />          &lt;array&gt;
<br />          &lt;/array&gt;
<br />        &lt;/dict&gt;
<br />      &lt;/array&gt;
<br />    &lt;/dict&gt;
<br />  &lt;/plist&gt;
<br />&lt;/podcast_producer_result&gt;
<br />&lt;/pre&gt;
<br />----
</p><p>
* URL: https://pcpserver:8170/podcastproducer/cameras
<br />* Type: GET
<br />* Content: version=2
<br />* Response:
<br />&lt;pre&gt;
<br />&lt;podcast_producer_result&gt;
<br />  &lt;action&gt;index&lt;/action&gt;
<br />  &lt;status&gt;success&lt;/status&gt;
<br />  &lt;plist version="1.0"&gt;
<br />    &lt;dict&gt;
<br />      &lt;key&gt;cameras&lt;/key&gt;
<br />      &lt;array&gt;
<br />        &lt;dict&gt;
<br />          &lt;key&gt;name&lt;/key&gt;
<br />          &lt;string&gt;150-A Camera&lt;/string&gt;
<br />          &lt;key&gt;uuid&lt;/key&gt;
<br />          &lt;string&gt;307682A5-B552-4AFA-B7E2-3811D772C9A1&lt;/string&gt;
<br />          &lt;key&gt;connected_to_member_uuid&lt;/key&gt;
<br />          &lt;string&gt;F1021B98-7E7E-44FB-8EB1-E0DA1885D5BA&lt;/string&gt;
<br />          &lt;key&gt;in_use&lt;/key&gt;
<br />          &lt;string&gt;false&lt;/string&gt;
<br />          &lt;key&gt;recording_status&lt;/key&gt;
<br />          &lt;string&gt;online&lt;/string&gt;
<br />          &lt;key&gt;preview_url&lt;/key&gt;
<br />          &lt;string&gt;https://x101-186-103-dhcp.cla.umn.edu:8170/podcastproducer/previews/307682A5-B552-4AFA-B7E2-3811D772C9A1.jpg&lt;/string&gt;
<br />          &lt;key&gt;access_control_entries&lt;/key&gt;
<br />          &lt;array&gt;
<br />          &lt;/array&gt;
<br />        &lt;/dict&gt;
<br />        &lt;dict&gt;
<br />          &lt;key&gt;name&lt;/key&gt;
<br />          &lt;string&gt;150-A Epiphan&lt;/string&gt;
<br />          &lt;key&gt;uuid&lt;/key&gt;
<br />          &lt;string&gt;CE610AB0-CA50-49EB-8FFE-78E57CDCA550&lt;/string&gt;
<br />          &lt;key&gt;connected_to_member_uuid&lt;/key&gt;
<br />          &lt;string&gt;F1021B98-7E7E-44FB-8EB1-E0DA1885D5BA&lt;/string&gt;
<br />          &lt;key&gt;in_use&lt;/key&gt;
<br />          &lt;string&gt;false&lt;/string&gt;
<br />          &lt;key&gt;recording_status&lt;/key&gt;
<br />          &lt;string&gt;online&lt;/string&gt;
<br />          &lt;key&gt;preview_url&lt;/key&gt;
<br />          &lt;string&gt;https://x101-186-103-dhcp.cla.umn.edu:8170/podcastproducer/previews/CE610AB0-CA50-49EB-8FFE-78E57CDCA550.jpg&lt;/string&gt;
<br />          &lt;key&gt;access_control_entries&lt;/key&gt;
<br />          &lt;array&gt;
<br />          &lt;/array&gt;
<br />        &lt;/dict&gt;
<br />      &lt;/array&gt;
<br />    &lt;/dict&gt;
<br />  &lt;/plist&gt;
<br />&lt;/podcast_producer_result&gt;
<br />&lt;/pre&gt;
</p><p>
----
</p><p>
* URL: https://pcpserver:8170/podcastproducer/cameras/start
<br />* Type: POST
<br />* Content: action=pause&#38;version=2&#38;camera_name=150-A%20Camera&#38;controller=cameras
<br />* Response:
<br />&lt;pre&gt;
<br />&lt;podcast_producer_result&gt;
<br />  &lt;action&gt;start&lt;/action&gt;
<br />  &lt;status&gt;success&lt;/status&gt;
<br />  &lt;results&gt;OK&lt;/results&gt;
<br />&lt;/podcast_producer_result&gt;
<br />&lt;/pre&gt;
</p><p>
----
</p><p>
* URL: https://pcpserver:8170/podcastproducer/cameras/status
<br />* Type: POST
<br />* Content: delay=0&#38;action=start&#38;version=2&#38;camera_name=150-A%20Epiphan&#38;controller=cameras
<br />* Response:
<br />&lt;pre&gt;&lt;podcast_producer_result&gt;
<br />  &lt;action&gt;status&lt;/action&gt;
<br />  &lt;status&gt;success&lt;/status&gt;
<br />  &lt;results&gt;OK&lt;/results&gt;
<br />  &lt;plist version="1.0"&gt;
<br />    &lt;dict&gt;
<br />      &lt;key&gt;preview&lt;/key&gt;
<br />      &lt;string&gt;https://x101-186-103-dhcp.cla.umn.edu:8170/podcastproducer/previews/307682A5-B552-4AFA-B7E2-3811D772C9A1.jpg&lt;/string&gt;
<br />      &lt;key&gt;preview_image_data&lt;/key&gt;
<br />      &lt;string&gt;RAW JPEG DATA RAW JPEG DATA RAW JPEG DATA RAW JPEG DATA RAW JPEG DATA&lt;/string&gt;
<br />      &lt;key&gt;recording_status&lt;/key&gt;
<br />      &lt;string&gt;online&lt;/string&gt;
<br />      &lt;key&gt;started_at&lt;/key&gt;
<br />      &lt;string&gt;Tue Sep 08 09:31:40 -0500 2009&lt;/string&gt;
<br />      &lt;key&gt;stopped_at&lt;/key&gt;
<br />      &lt;string&gt;Tue Sep 08 09:32:10 -0500 2009&lt;/string&gt;
<br />      &lt;key&gt;elapsed&lt;/key&gt;
<br />      &lt;string&gt;41&lt;/string&gt;
<br />      &lt;key&gt;last_error&lt;/key&gt;
<br />      &lt;string&gt;805306368&lt;/string&gt;
<br />    &lt;/dict&gt;
<br />  &lt;/plist&gt;
<br />&lt;/podcast_producer_result&gt;
<br />&lt;/pre&gt;
</p><p>
----
</p><p>
* URL: https://pcpserver:8170/podcastproducer/cameras/pause
<br />* Type: POST
<br />* Content: action=pause&#38;version=2&#38;camera_name=150-A%20Camera&#38;controller=cameras
<br />* Response:
<br />&lt;pre&gt;&lt;podcast_producer_result&gt;
<br />  &lt;action&gt;status&lt;/action&gt;
<br />  &lt;status&gt;success&lt;/status&gt;
<br />  &lt;results&gt;OK&lt;/results&gt;
<br />  &lt;plist version="1.0"&gt;
<br />    &lt;dict&gt;
<br />      &lt;key&gt;preview&lt;/key&gt;
<br />      &lt;string&gt;https://x101-186-103-dhcp.cla.umn.edu:8170/podcastproducer/previews/307682A5-B552-4AFA-B7E2-3811D772C9A1.jpg&lt;/string&gt;
<br />      &lt;key&gt;recording_status&lt;/key&gt;
<br />      &lt;string&gt;online&lt;/string&gt;
<br />      &lt;key&gt;started_at&lt;/key&gt;
<br />      &lt;string&gt;Tue Sep 08 09:31:40 -0500 2009&lt;/string&gt;
<br />      &lt;key&gt;stopped_at&lt;/key&gt;
<br />      &lt;string&gt;Tue Sep 08 09:32:10 -0500 2009&lt;/string&gt;
<br />      &lt;key&gt;elapsed&lt;/key&gt;
<br />      &lt;string&gt;41&lt;/string&gt;
<br />      &lt;key&gt;last_error&lt;/key&gt;
<br />      &lt;string&gt;805306368&lt;/string&gt;
<br />    &lt;/dict&gt;
<br />  &lt;/plist&gt;
<br />&lt;/podcast_producer_result&gt;&lt;/pre&gt;
</p><p>
----
</p><p>
* URL: https://pcpserver:8170/podcastproducer/cameras/stop
<br />* Type: POST
<br />* Content: workflow_name=&#38;UserMetadata_Description=&#38;submission_uuid=7497E3AC-0A75-4C7C-8C66-26294C9274FE&#38;action=stop&#38;version=2&#38;camera_name=150-A%20Epiphan&#38;controller=cameras&#38;UserMetadata_Title=Test123
<br />* Response:
<br />&lt;pre&gt;&lt;podcast_producer_result&gt;
<br />  &lt;action&gt;stop&lt;/action&gt;
<br />  &lt;status&gt;success&lt;/status&gt;
<br />  &lt;results&gt;OK&lt;/results&gt;
<br />&lt;/podcast_producer_result&gt;
<br />&lt;/pre&gt;
</p><p>
----
</p><p>
* URL: https://pcpserver:8170/podcastproducer/recordings/create
<br />* Type: POST
<br />* Content: version=2&#38;workflow_uuid=C6EF52A7-04E3-477D-9F38-6B61F108D7B9
<br />* Response:
<br />&lt;pre&gt;
<br />&lt;podcast_producer_result&gt;
<br />  &lt;action&gt;create&lt;/action&gt;
<br />  &lt;status&gt;success&lt;/status&gt;
<br />  &lt;results&gt;OK&lt;/results&gt;
<br />  &lt;plist version="1.0"&gt;
<br />    &lt;dict&gt;
<br />      &lt;key&gt;workflow_uuid&lt;/key&gt;
<br />      &lt;string&gt;C6EF52A7-04E3-477D-9F38-6B61F108D7B9&lt;/string&gt;
<br />      &lt;key&gt;recording_uuid&lt;/key&gt;
<br />      &lt;string&gt;FD5A1459-F7CE-41FA-8155-049DF774298B&lt;/string&gt;
<br />      &lt;key&gt;submission_uuids&lt;/key&gt;
<br />      &lt;array&gt;
<br />        &lt;string&gt;A626D8E4-E439-4E57-9982-DB4BD035CB41&lt;/string&gt;
<br />        &lt;string&gt;CFBCCB74-A41F-42D3-BEAA-58165B1116C6&lt;/string&gt;
<br />      &lt;/array&gt;
<br />    &lt;/dict&gt;
<br />  &lt;/plist&gt;
<br />&lt;/podcast_producer_result&gt;
<br />&lt;/pre&gt;
</p>]]>
</content>
</entry>

</feed>
