{"id":237,"date":"2015-10-25T18:43:24","date_gmt":"2015-10-25T18:43:24","guid":{"rendered":"http:\/\/blog.arrozcru.org\/?p=237"},"modified":"2015-10-25T19:07:43","modified_gmt":"2015-10-25T19:07:43","slug":"ffglitch-pixel-formats","status":"publish","type":"post","link":"http:\/\/blog.arrozcru.org\/?p=237","title":{"rendered":"ffglitch pixel formats"},"content":{"rendered":"<p>This weekend I was at the <a href=\"http:\/\/pcgb.io\/\">Poetic Computation Group Belgium<\/a>\u00a0and <a href=\"http:\/\/pcgb.io\/author\/greg-berger\/\">Greg Berger<\/a> mentioned doing <a href=\"http:\/\/pcgb.io\/glitch-fooling-around-with-ffmpeg-codecs\/\">glitch art with FFmpeg<\/a>.<\/p>\n<p>Being a former <a href=\"http:\/\/ffmpeg.org\/\">FFmpeg<\/a> developer myself, I remembered having made quite a bunch of experimentation with it, but it was mostly ephemeral and just for fun. Then I thought to myself: what about turning those bits and pieces of experimentation into blog posts and projects on GitHub?<\/p>\n<p>And so the first project is born into my very new <a href=\"https:\/\/github.com\/ramiropolla\/ffglitch\">ffglitch repository<\/a>. The name of the repository suggests more FFmpeg glitch art projects will come, and I hope my laziness doesn&#8217;t stop me from doing this (which it likely will).<\/p>\n<h2>pix_fmt<\/h2>\n<p><a href=\"https:\/\/github.com\/ramiropolla\/ffglitch\/tree\/master\/pix_fmt\">https:\/\/github.com\/ramiropolla\/ffglitch\/tree\/master\/pix_fmt<\/a><\/p>\n<p>The pix_fmt project consists of doing a whole bunch of incorrect pixel format conversions. If you don&#8217;t know what pixel formats are, read up on my previous blog post <a href=\"http:\/\/blog.arrozcru.org\/?p=234\">pixel formats 101<\/a>.<\/p>\n<p>The project is a script that generates a bunch of combinations for pixel format conversion. For example, \u00a0one such conversion takes raw RGB data as input, pretends that data is YUV420p, and reconverts it to RGB. The project does this for all possible input to output pixel format combinations. This amounts to nearly 10000 images, with about 4000 being unique.<\/p>\n<p>To try it out, just do:<\/p>\n<pre class=\"toolbar:2 lang:default highlight:0 decode:true\">$ git clone https:\/\/github.com\/ramiropolla\/ffglitch.git\r\n$ cd pix_fmt\r\n$ python pix_fmts.py &lt;input.png&gt; &gt; makefile\r\n$ make -r -k -jN\r\n$ cd output_dir\r\n$ fdupes --delete --noprompt .<\/pre>\n<p>What are the results like? Well, here are some samples (originals first):<\/p>\n<p><a href=\"http:\/\/caca.zoy.org\/wiki\/libcaca\">libcaca<\/a> logo:<\/p>\n<p><a href=\"http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/yuvj444p_yuv420p12le.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-246\" src=\"http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/libcaca-logo2.png\" alt=\"libcaca-logo\" width=\"100\" height=\"100\" \/><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-240\" src=\"http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/yuvj444p_yuv420p12le.png\" alt=\"yuvj444p_yuv420p12le\" width=\"100\" height=\"100\" \/><\/a> <a href=\"http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/yuva422p9le_yuv420p16be.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-241\" src=\"http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/yuva422p9le_yuv420p16be.png\" alt=\"yuva422p9le_yuv420p16be\" width=\"100\" height=\"100\" \/><\/a> <a href=\"http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/yuva422p9be_yuv444p14le.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-242\" src=\"http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/yuva422p9be_yuv444p14le.png\" alt=\"yuva422p9be_yuv444p14le\" width=\"100\" height=\"100\" \/><\/a> <a href=\"http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/yuv444p16be_yuv420p14be.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-243\" src=\"http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/yuv444p16be_yuv420p14be.png\" alt=\"yuv444p16be_yuv420p14be\" width=\"100\" height=\"100\" \/><\/a> <a href=\"http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/yuv444p12le_yuv444p16be.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-244\" src=\"http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/yuv444p12le_yuv444p16be.png\" alt=\"yuv444p12le_yuv444p16be\" width=\"100\" height=\"100\" \/><\/a> <a href=\"http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/xyz12be_yuv420p10le.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-245\" src=\"http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/xyz12be_yuv420p10le.png\" alt=\"xyz12be_yuv420p10le\" width=\"100\" height=\"100\" \/><\/a> \u00a0<a href=\"http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/gbrp_yuvj440p.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-247\" src=\"http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/gbrp_yuvj440p.png\" alt=\"gbrp_yuvj440p\" width=\"100\" height=\"100\" \/><\/a> <a href=\"http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/gbrp9be_yuv422p10le.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-248\" src=\"http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/gbrp9be_yuv422p10le.png\" alt=\"gbrp9be_yuv422p10le\" width=\"100\" height=\"100\" \/><\/a> <a href=\"http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/gbrp9be_bgr48le.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-249\" src=\"http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/gbrp9be_bgr48le.png\" alt=\"gbrp9be_bgr48le\" width=\"100\" height=\"100\" \/><\/a> <a href=\"http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/gbrp12le_yuv420p10le.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-250\" src=\"http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/gbrp12le_yuv420p10le.png\" alt=\"gbrp12le_yuv420p10le\" width=\"100\" height=\"100\" \/><\/a><\/p>\n<p><a href=\"http:\/\/tarrafa.net\/\">Tarrafa hackerspace<\/a> logo with yellow background:<\/p>\n<p><a href=\"http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/yuva444p_yuv422p12le.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-256\" src=\"http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/argb_argb.png\" alt=\"argb_argb\" width=\"256\" height=\"256\" srcset=\"http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/argb_argb.png 256w, http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/argb_argb-150x150.png 150w\" sizes=\"auto, (max-width: 256px) 100vw, 256px\" \/><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-251\" src=\"http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/yuva444p_yuv422p12le.png\" alt=\"yuva444p_yuv422p12le\" width=\"256\" height=\"256\" srcset=\"http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/yuva444p_yuv422p12le.png 256w, http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/yuva444p_yuv422p12le-150x150.png 150w\" sizes=\"auto, (max-width: 256px) 100vw, 256px\" \/><\/a>\u00a0<a href=\"http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/yuv444p16le_yuv422p14le.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-252\" src=\"http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/yuv444p16le_yuv422p14le.png\" alt=\"yuv444p16le_yuv422p14le\" width=\"256\" height=\"256\" srcset=\"http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/yuv444p16le_yuv422p14le.png 256w, http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/yuv444p16le_yuv422p14le-150x150.png 150w\" sizes=\"auto, (max-width: 256px) 100vw, 256px\" \/><\/a>\u00a0<a href=\"http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/yuv444p16le_yuv422p12le.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-253\" src=\"http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/yuv444p16le_yuv422p12le.png\" alt=\"yuv444p16le_yuv422p12le\" width=\"256\" height=\"256\" srcset=\"http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/yuv444p16le_yuv422p12le.png 256w, http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/yuv444p16le_yuv422p12le-150x150.png 150w\" sizes=\"auto, (max-width: 256px) 100vw, 256px\" \/><\/a>\u00a0<a href=\"http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/gbrp10be_xyz12le.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-254\" src=\"http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/gbrp10be_xyz12le.png\" alt=\"gbrp10be_xyz12le\" width=\"256\" height=\"256\" srcset=\"http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/gbrp10be_xyz12le.png 256w, http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/gbrp10be_xyz12le-150x150.png 150w\" sizes=\"auto, (max-width: 256px) 100vw, 256px\" \/><\/a>\u00a0<a href=\"http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/bgr48be_yuv444p14be.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-255\" src=\"http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/bgr48be_yuv444p14be.png\" alt=\"bgr48be_yuv444p14be\" width=\"256\" height=\"256\" srcset=\"http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/bgr48be_yuv444p14be.png 256w, http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/bgr48be_yuv444p14be-150x150.png 150w\" sizes=\"auto, (max-width: 256px) 100vw, 256px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/tarrafa.net\/\">Tarrafa hackerspace<\/a> logo with white background:<\/p>\n<p><a href=\"http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/argb_argb1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-283 size-medium\" src=\"http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/argb_argb1-300x300.png\" alt=\"argb_argb\" width=\"300\" height=\"300\" srcset=\"http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/argb_argb1-300x300.png 300w, http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/argb_argb1-150x150.png 150w, http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/argb_argb1.png 696w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a> <a href=\"http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/bgr24_yuv444p.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-239 size-medium\" src=\"http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/bgr24_yuv444p-300x300.png\" alt=\"bgr24_yuv444p.png\" width=\"300\" height=\"300\" srcset=\"http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/bgr24_yuv444p-300x300.png 300w, http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/bgr24_yuv444p-150x150.png 150w, http:\/\/blog.arrozcru.org\/wp-content\/uploads\/2015\/10\/bgr24_yuv444p.png 696w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Check it out, make your own ffglitch.pix_fmt and post the link in the comments!<\/p>\n<p>Have fun&#8230;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This weekend I was at the Poetic Computation Group Belgium\u00a0and Greg Berger mentioned doing glitch art with FFmpeg. Being a former FFmpeg developer myself, I remembered having made quite a bunch of experimentation with it, but it was mostly ephemeral and just for fun. Then I thought to myself: what about turning those bits and &hellip; <a href=\"http:\/\/blog.arrozcru.org\/?p=237\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">ffglitch pixel formats<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10,13,11],"tags":[],"class_list":["post-237","post","type-post","status-publish","format-standard","hentry","category-ffmpeg","category-glitch-art","category-pixel-formats"],"_links":{"self":[{"href":"http:\/\/blog.arrozcru.org\/index.php?rest_route=\/wp\/v2\/posts\/237","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.arrozcru.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.arrozcru.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.arrozcru.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.arrozcru.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=237"}],"version-history":[{"count":7,"href":"http:\/\/blog.arrozcru.org\/index.php?rest_route=\/wp\/v2\/posts\/237\/revisions"}],"predecessor-version":[{"id":288,"href":"http:\/\/blog.arrozcru.org\/index.php?rest_route=\/wp\/v2\/posts\/237\/revisions\/288"}],"wp:attachment":[{"href":"http:\/\/blog.arrozcru.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=237"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.arrozcru.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=237"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.arrozcru.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=237"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}