{"id":41852,"date":"2024-01-24T11:44:50","date_gmt":"2024-01-24T16:44:50","guid":{"rendered":"https:\/\/mjtsai.com\/blog\/?p=41852"},"modified":"2024-01-24T11:44:50","modified_gmt":"2024-01-24T16:44:50","slug":"quicktime-as-a-tape-archival-format","status":"publish","type":"post","link":"https:\/\/mjtsai.com\/blog\/2024\/01\/24\/quicktime-as-a-tape-archival-format\/","title":{"rendered":"QuickTime As a Tape Archival Format"},"content":{"rendered":"<p><a href=\"https:\/\/eschatologist.net\/blog\/?p=409\">Chris Hanson<\/a> (<a href=\"https:\/\/news.ycombinator.com\/item?id=39087118\">Hacker News<\/a>):<\/p>\n<blockquote cite=\"https:\/\/eschatologist.net\/blog\/?p=409\">\n<p>A lot of people think QuickTime is a &ldquo;video format,&rdquo; but that&rsquo;s not really accurate. Video and audio playback are applications <em>atop<\/em> the QuickTime container format; the container format itself is a means of representing multiple typed <em>tracks<\/em> of time-based <em>media<\/em>, each of which may have their own representation in the form of <em>samples<\/em> interpreted according to their own CODECs.<\/p>\n<p>[&#8230;]<\/p>\n<p>Once you realize that the tracks themselves can be arbitrary, it starts to become clear how this format maps nicely to tape content: Since tapes themselves are linear, they&rsquo;re fundamentally time-based.<\/p>\n<p>[&#8230;]<\/p>\n<p>The format can also be leveraged to support random access <em>including writes<\/em>, since the intelligence for that can be in the &ldquo;CODEC&rdquo; for the &ldquo;tape&rdquo; track media, combined with the QuickTime format&rsquo;s existing support for non-destructive edits. New data can be overlaid based on its &ldquo;temporal&rdquo; position, which should more or less accurately simulate how a rewritten tape would actually work, while still preserving the data that was just overwritten.<\/p>\n<p>[&#8230;]<\/p>\n<p>Darwin Streaming Server as a whole and its QTFileLib component are written in quite straightforward &ldquo;C with Classes&rdquo;-style C++, and QTFileLib has an API surface representing all of the major low-level and application-level concepts of the file format. <\/p>\n<\/blockquote>","protected":false},"excerpt":{"rendered":"<p>Chris Hanson (Hacker News): A lot of people think QuickTime is a &ldquo;video format,&rdquo; but that&rsquo;s not really accurate. Video and audio playback are applications atop the QuickTime container format; the container format itself is a means of representing multiple typed tracks of time-based media, each of which may have their own representation in the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"apple_news_api_created_at":"2024-01-24T16:44:53Z","apple_news_api_id":"e0cf7822-edd0-49fc-9cc4-53b7586f1b5c","apple_news_api_modified_at":"2024-01-24T16:44:53Z","apple_news_api_revision":"AAAAAAAAAAD\/\/\/\/\/\/\/\/\/\/w==","apple_news_api_share_url":"https:\/\/apple.news\/A4M94Iu3QSfycxFO3WG8bXA","apple_news_coverimage":0,"apple_news_coverimage_caption":"","apple_news_is_hidden":false,"apple_news_is_paid":false,"apple_news_is_preview":false,"apple_news_is_sponsored":false,"apple_news_maturity_rating":"","apple_news_metadata":"\"\"","apple_news_pullquote":"","apple_news_pullquote_position":"","apple_news_slug":"","apple_news_sections":"\"\"","apple_news_suppress_video_url":false,"apple_news_use_image_component":false,"footnotes":""},"categories":[2],"tags":[30,74,71,271],"class_list":["post-41852","post","type-post","status-publish","format-standard","hentry","category-technology","tag-mac","tag-opensource","tag-programming","tag-quicktime"],"apple_news_notices":[],"_links":{"self":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/41852","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/comments?post=41852"}],"version-history":[{"count":1,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/41852\/revisions"}],"predecessor-version":[{"id":41853,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/41852\/revisions\/41853"}],"wp:attachment":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/media?parent=41852"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/categories?post=41852"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/tags?post=41852"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}