{"id":108,"date":"2005-08-05T12:14:37","date_gmt":"2005-08-05T18:14:37","guid":{"rendered":"http:\/\/multimedia.cx\/eggs\/?p=108"},"modified":"2006-06-11T11:22:07","modified_gmt":"2006-06-11T18:22:07","slug":"getting-serious-about-pavc","status":"publish","type":"post","link":"https:\/\/multimedia.cx\/eggs\/getting-serious-about-pavc\/","title":{"rendered":"Getting Serious About PAVC"},"content":{"rendered":"<p>I realized recently that I have completed my initial goals laid out in <a href=\"http:\/\/multimedia.cx\/eggs\/?p=99\">this post<\/a>. And since this is a post about PAVC, let&#8217;s start out with some pretty console screenshots:<\/p>\n<p><center><br \/>\n<img decoding=\"async\" src=\"\/eggs\/images\/metalstorm1-1.png\" alt=\"Metal Storm\" \/><br \/>\n<em><a href=\"http:\/\/www.mobygames.com\/game\/nes\/metal-storm\">Metalstorm, NES<\/a>,<br \/>\none of the most graphically complex games on the NES console<\/em><br \/>\n<\/center><\/p>\n<p><!--more--><\/p>\n<p><center><br \/>\n<img decoding=\"async\" src=\"\/eggs\/images\/strider-1.png\" alt=\"Strider\" \/><br \/>\n<em><a href=\"http:\/\/www.mobygames.com\/game\/genesis\/strider\">Strider, on the Sega Genesis<\/a>,<br \/>\nas he strides his way past one of the single most beautiful panaromic vistas ever depicted in a video game<\/em><br \/>\n<\/center><\/p>\n<p>Anyway, the goals were as follows:<\/p>\n<ul>\n<li><strong>Test vectors:<\/strong> Done at the time, and I have generated further movie vectors, and longer ones as well, depicting more animation circumstances.<\/li>\n<li><strong>Codec development infrastructure:<\/strong> I have a basic <a href=\"http:\/\/ffmpeg.sourceforce.net\/\">FFmpeg<\/a> module set up for encoding and decoding experimentation.<\/li>\n<li><strong>Codec validation infrastructure:<\/strong> It has come to my attention that FFmpeg has a special mode (<em>-f crc<\/em>) that takes care of this.<\/li>\n<li><strong>Develop a palette transport model:<\/strong> Done, in the early encoding experiments. It may be able to stand some improvement.<\/li>\n<li><strong>Develop a basic coding model:<\/strong> Done, for better or worse.<\/li>\n<\/ul>\n<p>Time for some new goals. First, I need to get some basic compression scheme to work for the intraframes. Keep experimenting with the BWT\/MTF\/entropy solution. However, take it one step at a time. Code a bitstream using the BWT. Then, make sure that it decodes correctly with the inverse BWT code. Then add the MTF to the mix and make sure it reverses correctly. Finally, experiment with different entropy methods including Golomb, range coding, and arithmetic coding (always risky to use but interesting as a basis for comparison). Another experiment to try on top of this is to search for redundant 8&#215;8 blocks in the frame. Further, search for entire runs that are coded the same with the same block.<\/p>\n<p>Next, it is time to stop running and hiding and finally attack the interframe challenge. Some of the sub-challenges include:<\/p>\n<ul>\n<li>detecting when the frame has not changed at all from the previous frame<\/li>\n<li>intelligently determining which palette entries have changed since last frame; code them efficiently in order to avoid coding graphics<\/li>\n<li>detecting whole-screen, single-plane scrolling, first on a screen basis and, failing that, on a slice basis, and then on a block basis<\/li>\n<li>after scrolling compensation is achieved, invariably, there will be some new pixels appearing on the screen (at the borders) that need to be coded in an efficient manner<\/li>\n<li>detecting when a frame is one solid color, coding it efficiently, yet not using it as a reference frame&#8211; the next non-solid color frame is more likely to resemble the most recent non-solid color frame<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Time to move this new codec along&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,20],"tags":[],"class_list":["post-108","post","type-post","status-publish","format-standard","hentry","category-open-source-multimedia","category-pavc"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"Time to move this new codec along...\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Multimedia Mike\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/multimedia.cx\/eggs\/getting-serious-about-pavc\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Breaking Eggs And Making Omelettes | Topics On Multimedia Technology and Reverse Engineering\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Getting Serious About PAVC | Breaking Eggs And Making Omelettes\" \/>\n\t\t<meta property=\"og:description\" content=\"Time to move this new codec along...\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/multimedia.cx\/eggs\/getting-serious-about-pavc\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2005-08-05T18:14:37+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2006-06-11T18:22:07+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Getting Serious About PAVC | Breaking Eggs And Making Omelettes\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Time to move this new codec along...\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/getting-serious-about-pavc\\\/#article\",\"name\":\"Getting Serious About PAVC | Breaking Eggs And Making Omelettes\",\"headline\":\"Getting Serious About PAVC\",\"author\":{\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/author\\\/multimedia-mike\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"\\\/eggs\\\/images\\\/metalstorm1-1.png\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/getting-serious-about-pavc\\\/#articleImage\"},\"datePublished\":\"2005-08-05T12:14:37-07:00\",\"dateModified\":\"2006-06-11T11:22:07-07:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/getting-serious-about-pavc\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/getting-serious-about-pavc\\\/#webpage\"},\"articleSection\":\"Open Source Multimedia, PAVC\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/getting-serious-about-pavc\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/multimedia.cx\\\/eggs\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/category\\\/open-source-multimedia\\\/#listItem\",\"name\":\"Open Source Multimedia\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/category\\\/open-source-multimedia\\\/#listItem\",\"position\":2,\"name\":\"Open Source Multimedia\",\"item\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/category\\\/open-source-multimedia\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/category\\\/open-source-multimedia\\\/pavc\\\/#listItem\",\"name\":\"PAVC\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/category\\\/open-source-multimedia\\\/pavc\\\/#listItem\",\"position\":3,\"name\":\"PAVC\",\"item\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/category\\\/open-source-multimedia\\\/pavc\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/getting-serious-about-pavc\\\/#listItem\",\"name\":\"Getting Serious About PAVC\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/category\\\/open-source-multimedia\\\/#listItem\",\"name\":\"Open Source Multimedia\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/getting-serious-about-pavc\\\/#listItem\",\"position\":4,\"name\":\"Getting Serious About PAVC\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/category\\\/open-source-multimedia\\\/pavc\\\/#listItem\",\"name\":\"PAVC\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/#organization\",\"name\":\"Breaking Eggs And Making Omelettes\",\"description\":\"Topics On Multimedia Technology and Reverse Engineering\",\"url\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/author\\\/multimedia-mike\\\/#author\",\"url\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/author\\\/multimedia-mike\\\/\",\"name\":\"Multimedia Mike\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/getting-serious-about-pavc\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2eb93f7cada658f7986b5092062849fa255779eada3342c8f6b9a40764b95fdd?s=96&d=identicon&r=g\",\"width\":96,\"height\":96,\"caption\":\"Multimedia Mike\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/getting-serious-about-pavc\\\/#webpage\",\"url\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/getting-serious-about-pavc\\\/\",\"name\":\"Getting Serious About PAVC | Breaking Eggs And Making Omelettes\",\"description\":\"Time to move this new codec along...\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/getting-serious-about-pavc\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/author\\\/multimedia-mike\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/author\\\/multimedia-mike\\\/#author\"},\"datePublished\":\"2005-08-05T12:14:37-07:00\",\"dateModified\":\"2006-06-11T11:22:07-07:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/#website\",\"url\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/\",\"name\":\"Breaking Eggs And Making Omelettes\",\"description\":\"Topics On Multimedia Technology and Reverse Engineering\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Getting Serious About PAVC | Breaking Eggs And Making Omelettes","description":"Time to move this new codec along...","canonical_url":"https:\/\/multimedia.cx\/eggs\/getting-serious-about-pavc\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/multimedia.cx\/eggs\/getting-serious-about-pavc\/#article","name":"Getting Serious About PAVC | Breaking Eggs And Making Omelettes","headline":"Getting Serious About PAVC","author":{"@id":"https:\/\/multimedia.cx\/eggs\/author\/multimedia-mike\/#author"},"publisher":{"@id":"https:\/\/multimedia.cx\/eggs\/#organization"},"image":{"@type":"ImageObject","url":"\/eggs\/images\/metalstorm1-1.png","@id":"https:\/\/multimedia.cx\/eggs\/getting-serious-about-pavc\/#articleImage"},"datePublished":"2005-08-05T12:14:37-07:00","dateModified":"2006-06-11T11:22:07-07:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/multimedia.cx\/eggs\/getting-serious-about-pavc\/#webpage"},"isPartOf":{"@id":"https:\/\/multimedia.cx\/eggs\/getting-serious-about-pavc\/#webpage"},"articleSection":"Open Source Multimedia, PAVC"},{"@type":"BreadcrumbList","@id":"https:\/\/multimedia.cx\/eggs\/getting-serious-about-pavc\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/multimedia.cx\/eggs#listItem","position":1,"name":"Home","item":"https:\/\/multimedia.cx\/eggs","nextItem":{"@type":"ListItem","@id":"https:\/\/multimedia.cx\/eggs\/category\/open-source-multimedia\/#listItem","name":"Open Source Multimedia"}},{"@type":"ListItem","@id":"https:\/\/multimedia.cx\/eggs\/category\/open-source-multimedia\/#listItem","position":2,"name":"Open Source Multimedia","item":"https:\/\/multimedia.cx\/eggs\/category\/open-source-multimedia\/","nextItem":{"@type":"ListItem","@id":"https:\/\/multimedia.cx\/eggs\/category\/open-source-multimedia\/pavc\/#listItem","name":"PAVC"},"previousItem":{"@type":"ListItem","@id":"https:\/\/multimedia.cx\/eggs#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/multimedia.cx\/eggs\/category\/open-source-multimedia\/pavc\/#listItem","position":3,"name":"PAVC","item":"https:\/\/multimedia.cx\/eggs\/category\/open-source-multimedia\/pavc\/","nextItem":{"@type":"ListItem","@id":"https:\/\/multimedia.cx\/eggs\/getting-serious-about-pavc\/#listItem","name":"Getting Serious About PAVC"},"previousItem":{"@type":"ListItem","@id":"https:\/\/multimedia.cx\/eggs\/category\/open-source-multimedia\/#listItem","name":"Open Source Multimedia"}},{"@type":"ListItem","@id":"https:\/\/multimedia.cx\/eggs\/getting-serious-about-pavc\/#listItem","position":4,"name":"Getting Serious About PAVC","previousItem":{"@type":"ListItem","@id":"https:\/\/multimedia.cx\/eggs\/category\/open-source-multimedia\/pavc\/#listItem","name":"PAVC"}}]},{"@type":"Organization","@id":"https:\/\/multimedia.cx\/eggs\/#organization","name":"Breaking Eggs And Making Omelettes","description":"Topics On Multimedia Technology and Reverse Engineering","url":"https:\/\/multimedia.cx\/eggs\/"},{"@type":"Person","@id":"https:\/\/multimedia.cx\/eggs\/author\/multimedia-mike\/#author","url":"https:\/\/multimedia.cx\/eggs\/author\/multimedia-mike\/","name":"Multimedia Mike","image":{"@type":"ImageObject","@id":"https:\/\/multimedia.cx\/eggs\/getting-serious-about-pavc\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/2eb93f7cada658f7986b5092062849fa255779eada3342c8f6b9a40764b95fdd?s=96&d=identicon&r=g","width":96,"height":96,"caption":"Multimedia Mike"}},{"@type":"WebPage","@id":"https:\/\/multimedia.cx\/eggs\/getting-serious-about-pavc\/#webpage","url":"https:\/\/multimedia.cx\/eggs\/getting-serious-about-pavc\/","name":"Getting Serious About PAVC | Breaking Eggs And Making Omelettes","description":"Time to move this new codec along...","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/multimedia.cx\/eggs\/#website"},"breadcrumb":{"@id":"https:\/\/multimedia.cx\/eggs\/getting-serious-about-pavc\/#breadcrumblist"},"author":{"@id":"https:\/\/multimedia.cx\/eggs\/author\/multimedia-mike\/#author"},"creator":{"@id":"https:\/\/multimedia.cx\/eggs\/author\/multimedia-mike\/#author"},"datePublished":"2005-08-05T12:14:37-07:00","dateModified":"2006-06-11T11:22:07-07:00"},{"@type":"WebSite","@id":"https:\/\/multimedia.cx\/eggs\/#website","url":"https:\/\/multimedia.cx\/eggs\/","name":"Breaking Eggs And Making Omelettes","description":"Topics On Multimedia Technology and Reverse Engineering","inLanguage":"en-US","publisher":{"@id":"https:\/\/multimedia.cx\/eggs\/#organization"}}]},"og:locale":"en_US","og:site_name":"Breaking Eggs And Making Omelettes | Topics On Multimedia Technology and Reverse Engineering","og:type":"article","og:title":"Getting Serious About PAVC | Breaking Eggs And Making Omelettes","og:description":"Time to move this new codec along...","og:url":"https:\/\/multimedia.cx\/eggs\/getting-serious-about-pavc\/","article:published_time":"2005-08-05T18:14:37+00:00","article:modified_time":"2006-06-11T18:22:07+00:00","twitter:card":"summary","twitter:title":"Getting Serious About PAVC | Breaking Eggs And Making Omelettes","twitter:description":"Time to move this new codec along..."},"aioseo_meta_data":{"post_id":"108","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"location":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2020-12-31 21:43:32","updated":"2025-12-31 18:17:38","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/multimedia.cx\/eggs\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/multimedia.cx\/eggs\/category\/open-source-multimedia\/\" title=\"Open Source Multimedia\">Open Source Multimedia<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/multimedia.cx\/eggs\/category\/open-source-multimedia\/pavc\/\" title=\"PAVC\">PAVC<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tGetting Serious About PAVC\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/multimedia.cx\/eggs"},{"label":"Open Source Multimedia","link":"https:\/\/multimedia.cx\/eggs\/category\/open-source-multimedia\/"},{"label":"PAVC","link":"https:\/\/multimedia.cx\/eggs\/category\/open-source-multimedia\/pavc\/"},{"label":"Getting Serious About PAVC","link":"https:\/\/multimedia.cx\/eggs\/getting-serious-about-pavc\/"}],"_links":{"self":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts\/108","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/comments?post=108"}],"version-history":[{"count":0,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts\/108\/revisions"}],"wp:attachment":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/media?parent=108"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/categories?post=108"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/tags?post=108"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}