{"id":110,"date":"2005-08-15T17:23:58","date_gmt":"2005-08-15T23:23:58","guid":{"rendered":"http:\/\/multimedia.cx\/eggs\/?p=110"},"modified":"2008-03-01T15:10:31","modified_gmt":"2008-03-01T23:10:31","slug":"java-multimedia-library","status":"publish","type":"post","link":"https:\/\/multimedia.cx\/eggs\/java-multimedia-library\/","title":{"rendered":"Java Multimedia Library"},"content":{"rendered":"<p>Every so often, a discussion of the <a href=\"http:\/\/java.sun.com\/products\/java-media\/jmf\/index.jsp\">Java Multimedia Format (JMF) library<\/a> pops up on an open source multimedia development list. I had never given it any kind of attention until a Google search recently led me to the documentation. I always assumed that it just supported raw formats and some common, open MPEG formats. It turns out that the <a href=\"http:\/\/java.sun.com\/products\/java-media\/jmf\/2.1.1\/formats.html\">library actually supports<\/a> a few better known codecs, some of which are not completely reverse engineering. Of course, my interest in this would be decompiling them and de-obfuscating them beforehand, as necessary. The library contains a non-obfuscated, pure-Java implementation of the Cinepak codec. It also includes an obfuscated, pure-Java implementation of what I believe are some or all of the MPEG-1 codecs.<\/p>\n<p>However, most interesting codecs (including all of those that are not yet RE&#8217;d) are only supported via the Win32 or Linux\/Solaris &#8220;Performance Packs&#8221; which are presumably compiled, SIMD-optimized x86 code.<\/p>\n<p>Some curious features&#8211; the pure-Java portion of the library supports some of the quirkier Sound Blaster playback frequencies like 11127 Hz and 22254 Hz (while the performance packs support 8000 Hz -> 48000 Hz). Also, I can not get over the fact that the <a href=\"http:\/\/java.sun.com\/products\/java-media\/jmf\/2.1.1\/apidocs\/javax\/media\/format\/VideoFormat.html\">documentation for the javax.media.format.VideoFormat<\/a> class states that SMC corresponds to &#8220;Sorenson format&#8221;. (<a href=\"http:\/\/multimedia.cx\/smc.txt\">Here is the SMC format, apparently named for its creator, one Sean M. Callahan<\/a>.)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Surveying the Java Multimedia Format library&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[],"class_list":["post-110","post","type-post","status-publish","format-standard","hentry","category-java"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts\/110","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=110"}],"version-history":[{"count":0,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts\/110\/revisions"}],"wp:attachment":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/media?parent=110"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/categories?post=110"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/tags?post=110"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}