{"id":1210,"date":"2023-02-24T21:04:13","date_gmt":"2023-02-25T01:04:13","guid":{"rendered":"https:\/\/jausoft.com\/blog\/?p=1210"},"modified":"2023-02-24T21:04:13","modified_gmt":"2023-02-25T01:04:13","slug":"jogamps-jogl-ffmpeg-binding-update","status":"publish","type":"post","link":"https:\/\/jausoft.com\/blog\/2023\/02\/24\/jogamps-jogl-ffmpeg-binding-update\/","title":{"rendered":"JogAmp&#8217;s JOGL FFmpeg Binding Update"},"content":{"rendered":"<p>As already demonstrated in the <a href=\"https:\/\/jausoft.com\/blog\/2023\/02\/22\/reimagine-java-on-desktop-bare-metal-devices\/\">previous Graph UI blog<\/a>, the <a href=\"https:\/\/ffmpeg.org\/\">FFmpeg<\/a> binding has been properly update, now supporting version 4, 5 and the development trunk 6. Version 4 is currently used in Debian 11 and version 5 in Debian 12. Each implemented version uses the current non-deprecated FFmpeg code-path. <!--more--><\/p>\n<p>As usual, the decoded YUV frames directly end up in textures where the appropriate shader converts them to RGBA and may integrate it into the user&#8217;s scene.<\/p>\n<p>Audio is being transported from the decoder via JOAL to your ears.<\/p>\n<p><em>Shameless injection<\/em>: <strong>We are looking for JogAmp sponsorship<\/strong>, i.e. funding the work. <strong>We are also looking for contractual work<\/strong> &#8211; please contact me via the data <a href=\"https:\/\/jausoft.com\/\">given on our website<\/a>. You may want to <a href=\"https:\/\/jausoft.com\/team_en_sgothel.html\">check my CV here<\/a>.<br \/>\n<strong>Thank you!<\/strong><\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/jausoft.com\/blog\/wp-content\/uploads\/2023\/02\/MovieSimple-snap03-1400x940-1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1211\" src=\"https:\/\/jausoft.com\/blog\/wp-content\/uploads\/2023\/02\/MovieSimple-snap03-1400x940-1.png\" alt=\"\" width=\"1400\" height=\"940\" srcset=\"https:\/\/jausoft.com\/blog\/wp-content\/uploads\/2023\/02\/MovieSimple-snap03-1400x940-1.png 1400w, https:\/\/jausoft.com\/blog\/wp-content\/uploads\/2023\/02\/MovieSimple-snap03-1400x940-1-300x201.png 300w, https:\/\/jausoft.com\/blog\/wp-content\/uploads\/2023\/02\/MovieSimple-snap03-1400x940-1-1024x688.png 1024w, https:\/\/jausoft.com\/blog\/wp-content\/uploads\/2023\/02\/MovieSimple-snap03-1400x940-1-768x516.png 768w, https:\/\/jausoft.com\/blog\/wp-content\/uploads\/2023\/02\/MovieSimple-snap03-1400x940-1-1088x731.png 1088w\" sizes=\"auto, (max-width: 1400px) 100vw, 1400px\" \/><\/a>(click on the images to see them in full size)<\/p>\n<p>Hence we are able to watch our own demo video within our own code \ud83d\ude42<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"https:\/\/jausoft.com\/blog\/wp-content\/uploads\/2023\/02\/MovieCube-snap01-1400x940-1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1212\" src=\"https:\/\/jausoft.com\/blog\/wp-content\/uploads\/2023\/02\/MovieCube-snap01-1400x940-1.png\" alt=\"\" width=\"1400\" height=\"940\" srcset=\"https:\/\/jausoft.com\/blog\/wp-content\/uploads\/2023\/02\/MovieCube-snap01-1400x940-1.png 1400w, https:\/\/jausoft.com\/blog\/wp-content\/uploads\/2023\/02\/MovieCube-snap01-1400x940-1-300x201.png 300w, https:\/\/jausoft.com\/blog\/wp-content\/uploads\/2023\/02\/MovieCube-snap01-1400x940-1-1024x688.png 1024w, https:\/\/jausoft.com\/blog\/wp-content\/uploads\/2023\/02\/MovieCube-snap01-1400x940-1-768x516.png 768w, https:\/\/jausoft.com\/blog\/wp-content\/uploads\/2023\/02\/MovieCube-snap01-1400x940-1-1088x731.png 1088w\" sizes=\"auto, (max-width: 1400px) 100vw, 1400px\" \/><\/a><\/p>\n<p>Tested on GNU\/Linux using FFmpeg 4.3, 5.1 and 6.0. At a later stage I will test on Windows and MacOS, but it shall just work as once before.<\/p>\n<p>This brings back all video input and decoding (incl audio) to all platforms including Android.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>As already demonstrated in the previous Graph UI blog, the FFmpeg binding has been properly update, now supporting version 4, 5 and the development trunk 6. Version 4 is currently used in Debian 11 and version 5 in Debian 12. Each implemented version uses the current non-deprecated FFmpeg code-path.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[7,3,8],"tags":[9,27,72,13,74,16,44,31,17,46,73],"class_list":["post-1210","post","type-post","status-publish","format-standard","hentry","category-3d-opengl","category-computer-stuff","category-jogamp","tag-3d","tag-android","tag-audio","tag-embedded-device","tag-ffmpeg","tag-java","tag-jogamp","tag-mobile","tag-opengl","tag-openjdk","tag-video"],"_links":{"self":[{"href":"https:\/\/jausoft.com\/blog\/wp-json\/wp\/v2\/posts\/1210","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jausoft.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jausoft.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jausoft.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/jausoft.com\/blog\/wp-json\/wp\/v2\/comments?post=1210"}],"version-history":[{"count":5,"href":"https:\/\/jausoft.com\/blog\/wp-json\/wp\/v2\/posts\/1210\/revisions"}],"predecessor-version":[{"id":1217,"href":"https:\/\/jausoft.com\/blog\/wp-json\/wp\/v2\/posts\/1210\/revisions\/1217"}],"wp:attachment":[{"href":"https:\/\/jausoft.com\/blog\/wp-json\/wp\/v2\/media?parent=1210"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jausoft.com\/blog\/wp-json\/wp\/v2\/categories?post=1210"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jausoft.com\/blog\/wp-json\/wp\/v2\/tags?post=1210"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}