https://wiki.xiph.org/api.php?action=feedcontributions&user=Brion&feedformat=atomXiphWiki - User contributions [en]2024-03-19T06:35:21ZUser contributionsMediaWiki 1.40.1https://wiki.xiph.org/index.php?title=How_to_help&diff=15943How to help2015-08-13T14:56:03Z<p>Brion: /* Flash port of Theora */</p>
<hr />
<div>__NOTOC__<br />
This page is intended to collect ideas and areas where new participants can contribute to Xiph.org initiatives.<br />
<br />
Because this is an open wiki not all of these points have been reviewed with core Xiph developers.<br /><br />
It is always best to coordinate your efforts on the relevant Xiph mailing lists and IRC channels.<br />
<br />
One of the best ways people can contribute is by using the tools and formats.<br />
<br />
This accomplishes two primary goals:<br />
# By providing materials in free formats you help lower the barriers to adoption for others<br />
# By using the tools you will discover problems which you can report contributing to further development and refinement <br />
<br />
Most of our organizational discussion happens over IRC on the '''freenode.net''' network.<br /><br />
See project-specific channels below, or join #xiph on irc.freenode.net for general information.<br />
<br />
==Software Outreach==<br />
Xiph.org software often reaches users via other software.<br />
<br />
E.g. Few people run libtheora by itself, many people use libtheora through other tools like VLC, Firefox, or gstreamer.<br /><br />
These tools are maintained by other projects but the reliability and robustness of the free format support in these applications is critical to the public's ability to use Xiph.org formats. <br />
<br />
Relevant contribution areas:<br />
# Testing, e.g. [[TheoraTestsuite]] and reporting bugs into the relevant bug trackers<br />
# Cross porting features<br />
# Updating tools to support the latest features in the Xiph.org implementations (e.g. two-pass encoding for video tools)<br />
<br />
==Theora specific activities==<br />
Places to discuss development:<br />
* Theora mailing list<br />
* '''#theora''' on '''irc.freenode.net'''<br />
----------------------<br />
*Identifying videos where 1.1 or 1.2-development (ptalarbvorm) produce significantly worse results than prior versions. (These case is important compared to "works worse than some random format" because the differences are more likely to be actionable rather than just chance consequences related to differences in the encoders overall behaviour)<br />
<br />
*Decoder assembly optimization for additional platforms (MIPS64; PPC)<br />
**Skills required: optimization and development experience on the relevant platform. <br />
<br />
*Decoder general performance improvements<br />
**Skills required: C language; Use of a profiler. Optionally: SIMD assembly on relevant platforms.<br />
<br />
==Vorbis specific activities==<br />
Places to discuss development: Vorbis mailing list; #vorbis on irc.freenode.net<br />
<br />
<br />
*Identifying test samples where Vorbis encodings at very high quality are not completely transparent under careful listening tests. <br />
*Identifying test cases that exemplify the improvements in the current AoTuV development. (Helps with AoTuV merging)<br />
*Identifying test samples where Vorbis performs worse than other formats.<br />
<br />
==Skeleton specific activities==<br />
Places to discuss development: Theora mailing list; #theora on irc.freenode.net<br />
<br />
==Liboggz specific activities==<br />
Places to discuss development: Theora mailing list; #theora on irc.freenode.net<br />
<br />
==Cortado specific activities==<br />
<br />
As of August 2015, Cortado is largely unmaintained. Consider the JavaScript-based [[ogv.js]] for new and updated projects; ogv.js has replaced Cortado on Wikipedia and Wikimedia Commons as a fallback in Safari, IE, and Edge browsers that lack native Ogg or WebM support.<br />
<br />
<br />
Places to discuss development: Theora mailing list; #theora on irc.freenode.net<br />
<br />
Cortado is contains Java implementation of Vorbis/Theora/Kate/Ogg and an applet that allows playback of these formats on the web. It is the most popular fallback for HTML5 Ogg video, allowing users on legacy browsers (as old as Netscape 4) to play modern web video.<br />
* See the cortado todo: [[Cortado/todo]]<br />
<br />
==Flash port of Theora==<br />
There are several workable implementations of Vorbis for the flash virtual machine. An implementation of Theora would allow the creation of a flash applet which plays Ogg video. One possible tool for this would be Adobe Alchemy, a C to Flash compiler which can be used to compile libtheora for flash. Beyond the basic codec porting work there is significant effort required building a player infrastructure around them because the built-in flash video infrastructure are not available for user implemented codecs (unlike silverlight). This initiative is primarily hindered by the surprising lack of overlap between flash developers and people who care about unencumbered formats.<br />
<br />
Earlier versions of [[ogv.js]] experimented with this -- see [[Flash]] and [[Talk:ogv.js]]. Note that as of August 2015, most modern browsers can perform Theora decoding adequately in JavaScript without need for Flash.<br />
<br />
==Additional tools work==<br />
*Build and refine fall-back tools for HTML5 video based on Cortado, Flash Vorbis, and the upcoming Silverlight applet support. Many existing fallback tools require users to adopt H.264, such tools are valuable for media providers who are willing and able to distribute H.264 but they are not useful for ones who are not, and they are not tools that Xiph can really stand behind.<br />
<br />
==OggDSF specific activities==<br />
Directshow is the windows video codec API, OggDSF provides support for Vorbis/Theora/Speex/Flac and Ogg in directshow.<br />
<br />
Places to discuss development: Theora mailing list; #theora on irc.freenode.net<br />
<br />
*Testing. Much of the Xiph.org community are run various unix-like operating systems. While OggDSF is widely used, it isn't frequently used by much of the more experienced Xiph.org community and hasn't has sufficient scrutiny. <br />
<br />
<br />
==PR and organizational matters==<br />
*Participate in external promotional activities such as [http://www.fsf.org/resources/formats/playogg PlayOgg!]<br />
*[http://videoonwikipedia.org Contribute] to Wikipedia's video collection<br />
*Locate media coverage regarding free formats and related areas and share it with the the mailing lists<br />
*Encourage additional media distributors to support HTML5 with Theora<br />
<br />
==Internet outreach==<br />
* Encourage places using poor tools (e.g. ffvorbis encoder) to switch to better software.<br />
* Encourage adoption of Theora video for html5 and theora based fallbacks</div>Brionhttps://wiki.xiph.org/index.php?title=How_to_help&diff=15942How to help2015-08-13T14:54:30Z<p>Brion: /* Cortado specific activities */</p>
<hr />
<div>__NOTOC__<br />
This page is intended to collect ideas and areas where new participants can contribute to Xiph.org initiatives.<br />
<br />
Because this is an open wiki not all of these points have been reviewed with core Xiph developers.<br /><br />
It is always best to coordinate your efforts on the relevant Xiph mailing lists and IRC channels.<br />
<br />
One of the best ways people can contribute is by using the tools and formats.<br />
<br />
This accomplishes two primary goals:<br />
# By providing materials in free formats you help lower the barriers to adoption for others<br />
# By using the tools you will discover problems which you can report contributing to further development and refinement <br />
<br />
Most of our organizational discussion happens over IRC on the '''freenode.net''' network.<br /><br />
See project-specific channels below, or join #xiph on irc.freenode.net for general information.<br />
<br />
==Software Outreach==<br />
Xiph.org software often reaches users via other software.<br />
<br />
E.g. Few people run libtheora by itself, many people use libtheora through other tools like VLC, Firefox, or gstreamer.<br /><br />
These tools are maintained by other projects but the reliability and robustness of the free format support in these applications is critical to the public's ability to use Xiph.org formats. <br />
<br />
Relevant contribution areas:<br />
# Testing, e.g. [[TheoraTestsuite]] and reporting bugs into the relevant bug trackers<br />
# Cross porting features<br />
# Updating tools to support the latest features in the Xiph.org implementations (e.g. two-pass encoding for video tools)<br />
<br />
==Theora specific activities==<br />
Places to discuss development:<br />
* Theora mailing list<br />
* '''#theora''' on '''irc.freenode.net'''<br />
----------------------<br />
*Identifying videos where 1.1 or 1.2-development (ptalarbvorm) produce significantly worse results than prior versions. (These case is important compared to "works worse than some random format" because the differences are more likely to be actionable rather than just chance consequences related to differences in the encoders overall behaviour)<br />
<br />
*Decoder assembly optimization for additional platforms (MIPS64; PPC)<br />
**Skills required: optimization and development experience on the relevant platform. <br />
<br />
*Decoder general performance improvements<br />
**Skills required: C language; Use of a profiler. Optionally: SIMD assembly on relevant platforms.<br />
<br />
==Vorbis specific activities==<br />
Places to discuss development: Vorbis mailing list; #vorbis on irc.freenode.net<br />
<br />
<br />
*Identifying test samples where Vorbis encodings at very high quality are not completely transparent under careful listening tests. <br />
*Identifying test cases that exemplify the improvements in the current AoTuV development. (Helps with AoTuV merging)<br />
*Identifying test samples where Vorbis performs worse than other formats.<br />
<br />
==Skeleton specific activities==<br />
Places to discuss development: Theora mailing list; #theora on irc.freenode.net<br />
<br />
==Liboggz specific activities==<br />
Places to discuss development: Theora mailing list; #theora on irc.freenode.net<br />
<br />
==Cortado specific activities==<br />
<br />
As of August 2015, Cortado is largely unmaintained. Consider the JavaScript-based [[ogv.js]] for new and updated projects; ogv.js has replaced Cortado on Wikipedia and Wikimedia Commons as a fallback in Safari, IE, and Edge browsers that lack native Ogg or WebM support.<br />
<br />
<br />
Places to discuss development: Theora mailing list; #theora on irc.freenode.net<br />
<br />
Cortado is contains Java implementation of Vorbis/Theora/Kate/Ogg and an applet that allows playback of these formats on the web. It is the most popular fallback for HTML5 Ogg video, allowing users on legacy browsers (as old as Netscape 4) to play modern web video.<br />
* See the cortado todo: [[Cortado/todo]]<br />
<br />
==Flash port of Theora==<br />
There are several workable implementations of Vorbis for the flash virtual machine. An implementation of Theora would allow the creation of a flash applet which plays Ogg video. One possible tool for this would be Adobe Alchemy, a C to Flash compiler which can be used to compile libtheora for flash. Beyond the basic codec porting work there is significant effort required building a player infrastructure around them because the built-in flash video infrastructure are not available for user implemented codecs (unlike silverlight). This initiative is primarily hindered by the surprising lack of overlap between flash developers and people who care about unencumbered formats.<br />
<br />
==Additional tools work==<br />
*Build and refine fall-back tools for HTML5 video based on Cortado, Flash Vorbis, and the upcoming Silverlight applet support. Many existing fallback tools require users to adopt H.264, such tools are valuable for media providers who are willing and able to distribute H.264 but they are not useful for ones who are not, and they are not tools that Xiph can really stand behind.<br />
<br />
==OggDSF specific activities==<br />
Directshow is the windows video codec API, OggDSF provides support for Vorbis/Theora/Speex/Flac and Ogg in directshow.<br />
<br />
Places to discuss development: Theora mailing list; #theora on irc.freenode.net<br />
<br />
*Testing. Much of the Xiph.org community are run various unix-like operating systems. While OggDSF is widely used, it isn't frequently used by much of the more experienced Xiph.org community and hasn't has sufficient scrutiny. <br />
<br />
<br />
==PR and organizational matters==<br />
*Participate in external promotional activities such as [http://www.fsf.org/resources/formats/playogg PlayOgg!]<br />
*[http://videoonwikipedia.org Contribute] to Wikipedia's video collection<br />
*Locate media coverage regarding free formats and related areas and share it with the the mailing lists<br />
*Encourage additional media distributors to support HTML5 with Theora<br />
<br />
==Internet outreach==<br />
* Encourage places using poor tools (e.g. ffvorbis encoder) to switch to better software.<br />
* Encourage adoption of Theora video for html5 and theora based fallbacks</div>Brionhttps://wiki.xiph.org/index.php?title=TheoraSoftwarePlayers&diff=15941TheoraSoftwarePlayers2015-08-13T14:51:15Z<p>Brion: +ogv.js</p>
<hr />
<div>== Multi-platform ==<br />
* [http://www.videolan.org/vlc/ VLC Media Player]: Open Source media player and streaming server that support virtually every video and audio format<br />
* [https://helixcommunity.org/projects/xiph/ Xiph Plugins for Real Player/Producer]<br />
* Quicktime components for [http://qtcomponents.sourceforge.net/ Quicktime 6] and [http://www.xiph.org/quicktime/ Quicktime 7] – QuickTime and Macintosh OS X plug-ins<br />
* [http://www.mplayerhq.hu/ Mplayer]: Open Source video player (some limitations). [http://smplayer.sourceforge.net/ SMPlayer] is a front-end which provides mplayer and libraries for different platforms.<br />
* [http://www.coreplayer.com/ CorePlayer]: A multimedia platform for mobile and desktop computer systems<br />
* [http://www.flumotion.net/cortado/ Cortado]: Java applet playing ogg/theora/vorbis<br />
* [[ogv.js]]: JavaScript cross-compile of libogg/vorbis/theora/opus with player logic, for use as a drop-in shim for HTML5 audio/video in Safari/IE/Edge browsers<br />
* [http://www.mozilla.com Mozilla Firefox]: Open Source web browser, Theora support since version 3.5 (was 3.1 beta)<br />
* [http://www.opera.com/ Opera] Web browser (closed source freeware), Theora support in experimental builds from 2007-Nov (very buggy), 10.5x versions (official support, but still had problems), and version 10.60 (2010-Jul-01) and newer (should be mature, also supports WebM/VP8 video)<br />
* [http://www.google.com/chrome Google Chrome]: Web browser (supports Theora, WebM/VP8 and H264)<br />
* Safari 3.1 and later: if the [http://xiph.org/quicktime/ XiphQT] components are installed<br />
<br />
== Windows ==<br />
* [http://www.xiph.org/dshow/ DirectShow filter]: Adds support for Ogg Vorbis, Ogg Speex, Ogg Theora, Ogg FLAC, and native FLAC to any DirectShow-compliant player such as Windows Media Player and BSPlayer<br />
* [http://www.visonair.tv/player.php Visonair.tv Player]: Freeware player - Plays Ogg Vorbis and Theora streams<br />
* [http://www.acquiredigital.com/ Acquire Digital Signage and Kiosk Software]: Plays back all ogg media using the included DirectShow filters.<br />
<br />
== Linux/BSD ==<br />
* [http://player.helixcommunity.org Helix Player] - an open source media player for Linux, Solaris, and Symbian based on the [http://helix-client.helixcommunity.org Helix DNA Client] media engine.<br />
* [http://www.gnomefiles.org/app.php?soft_id=64 Totem] - a Free Software (GPL-licensed) media player based on [http://xinehq.de xine] or [http://gstreamer.freedesktop.org GStreamer] media engine.<br />
* [http://www.xine-project.org/home Xine]: a Free Software (GPL-licensed) media player, complete with its own media engine and a long list of supported formats.<br />
<br />
== Mac OS X ==<br />
<br />
* [http://www.xine-project.org/home Xine]: a Free Software (GPL-licensed) media player, complete with its own media engine and a long list of supported formats. Supports Darwin/MacOS X (ppc) via the fink project.<br />
* [http://mac.eltima.com/ogg-player.html Elmedia Player] – media player for Mac, which supports playback of lots of video formats (OGG Theora, WebM (???), proprietary formats), closed source freeware + PRO version<br />
<br />
== iOS ==<br />
<br />
* [https://itunes.apple.com/us/app/yxplayer/id373751560?mt=8 yxplayer]: for-pay video player, which can play Vorbis audio and Theora video. In app store, no jailbreak required.<br />
<br />
== See also == <br />
{{Template:Theora}}<br />
<br />
[[Category:Theora]]</div>Brionhttps://wiki.xiph.org/index.php?title=TheoraDecoders&diff=15940TheoraDecoders2015-08-13T14:49:51Z<p>Brion: +ogv.js</p>
<hr />
<div>==Decoder implementations==<br />
* '''theora''': 1.2.x versions of the reference encoder/decoder library (also known as '''Ptalarbvorm'''): [http://svn.xiph.org/trunk/theora/ theora svn], [http://svn.xiph.org/releases/theora/ theora official releases].<br />
* '''theora-1.1''': 1.1.x versions of the reference encoder/decoder library (also known as '''Thusnelda'''): [http://svn.xiph.org/branches/theora-1.1/ theora-1.1 svn].<br />
* '''Theorarm''': an Ogg Theora/Vorbis decoding library optimised for use on ARM processors: [http://wss.co.uk/pinknoise/theorarm/ Theorarm web site]. These optimizations were merged in the 1.2 reference library.<br />
* '''Leonora''': Theora decoder for the C64x+ DSP coprocessor on the OMAP3 SoC manufactured by Texas Instruments. This series of SoCs is used in a variety of mobile devices including the Palm Pre, Motorola Droid, and Nokia’s N series of phones. [http://code.entropywave.com/leonora/ Leonora web site]. These optimizations were merged in the 1.2 reference library.<br />
* '''theora-old''': old encoder/decoder library (the decoder does not support all theora features); theora version up to 1.0 alpha 7 were using this code trunk: [http://svn.xiph.org/trunk/theora-old/ theora-old svn].<br />
* '''theora-exp''': old, no longer developed, experimental encoder/decoder library: [http://svn.xiph.org/trunk/theora-exp/ theora-exp svn]. Its improvements were merged in the 1.1.0 reference library.<br />
* '''[http://theora.org/cortado/ Cortado]''': old, no longer developed. A GPL Java decoder for Ogg Theora, Ogg Vorbis and other codecs. Embedding this applet on your website you can give viewers access to streams from either the Flumotion streaming server or play a local file from your server without the need for a locally installed media player supporting the correct formats on the visitors computer.<br />
* '''[[ogv.js]]''': JavaScript cross-compile of libogg/vorbis/theora/opus with player logic, for use as a drop-in shim for HTML5 audio/video in Safari/IE/Edge browsers. As of August 2015, in use on Wikipedia and Wikimedia Commons bundled through MediaWiki's '''[http://www.mediawiki.org/wiki/Extension:TimedMediaHandler TimedMediaHandler]'''.<br />
* '''[http://ffmpeg.mplayerhq.hu/ ffmpeg]''': old versions didn't support all theora features (showing corrupted frames) and were also a lot slower than libtheora. Newer version improved somewhat (see also [http://xiphmont.livejournal.com/51160.html?thread=145880#t145880 this comment from Monty]).<br />
<br />
See also [[Theora Hardware]] for hardware implementations.<br />
<br />
==Decoder front ends==<br />
* '''[http://libtheoraplayer.sourceforge.net libtheoraplayer]''': Simple to use and powerful API for playing Theora videos.<br />
* '''[[Etheora]]''': a simplified API to theora reference encoder/decoder.<br />
<br />
==See also==<br />
{{Template:Theora}}<br />
<br />
[[Category:Theora]]</div>Brionhttps://wiki.xiph.org/index.php?title=Cortado&diff=15939Cortado2015-08-13T14:45:51Z<p>Brion: </p>
<hr />
<div>Cortado is a Java applet that plays Ogg audio and video files, available for browsers that do not play Ogg media natively.<br />
<br />
''See also [[ogv.js]] for a more actively maintained project (as of 2015) that runs in JavaScript on modern browsers.''<br />
<br />
*[[Cortado/release]] — Instructions for performing a Cortado release<br />
*[[Cortado/todo]] - Guide to things we want accomplished</div>Brionhttps://wiki.xiph.org/index.php?title=Flash&diff=15938Flash2015-08-13T14:42:37Z<p>Brion: ogv.js no longer includes experimental Flash build</p>
<hr />
<div>It's possible to build libogg, libvorbis, libtheora etc to ActionScript3 (Flash) bytecode using the [http://crossbridge.io/ CrossBridge compiler].<br />
<br />
A development version of [[ogv.js]] used to include such a Flash build, however development was stopped on it due to lack of maintenance on CrossBridge and general limitations in the Flash platform. If there's interest -- and maintenance on CrossBridge picks up -- it could be restored, benefiting users of older browsers (IE 9 and below, Safari 5 and below).</div>Brionhttps://wiki.xiph.org/index.php?title=Talk:Ogv.js&diff=15937Talk:Ogv.js2015-08-13T14:38:06Z<p>Brion: /* Flash codecs */</p>
<hr />
<div>== Flash codecs ==<br />
<br />
I'm experimenting with using [https://github.com/adobe-flash/crossbridge crossbridge] (formerly FlasCC) to build the codec libraries to ActionScript bytecode, for a possible Ogg-playing Flash fallback for older browsers. So far I can build all the libraries but am having trouble linking them. [[User:Brion|Brion]] 12:58, 22 February 2014 (PST)<br />
<br />
:Now working in the main build. --[[User:Brion|Brion]] 14:44, 18 March 2014 (PDT)<br />
<br />
I removed those a while ago; it worked but had some problems:<br />
* streaming/seeking would have required server-side support (HTTP Range header is blacklisted in requests made by Flash!)<br />
* CrossBridge compiler hella slow, no working Linux build available<br />
* CrossBridge compiler is not being actively maintained, so continues to bitrot<br />
* share of IE 9 and below keeps shrinking, so diminishing returns trying to maintain it<br />
<br />
If someone's interested it could be picked up again though; all the old code's in ogv.js's git history. --[[User:Brion|Brion]] ([[User talk:Brion|talk]]) 07:38, 13 August 2015 (PDT)</div>Brionhttps://wiki.xiph.org/index.php?title=Ogv.js&diff=15936Ogv.js2015-08-13T14:34:16Z<p>Brion: updates; has soft-launched on Wikipedia/Wikimedia Commons</p>
<hr />
<div>At least libogg, libvorbis, libopus, and libtheora can be built to JavaScript using [http://emscripten.org/ emscripten] pretty straightforwardly.<br />
<br />
'''[https://github.com/brion/ogv.js ogv.js]''' is a wrapper around these with basic JavaScript interfaces and video/audio playback wrappers semi-compatible with the native HTML5 <video>/<audio> elements.<br />
<br />
Currently (August 2015) in use for audio/video playback in Safari/IE/Edge browsers on Wikipedia and [https://commons.wikimedia.org/wiki/Commons:Media_of_the_day Wikimedia Commons].<br />
<br />
Generic decoding, or even encoding, should be possible in the future but needs better APIs to be sane.<br />
<br />
== Building ==<br />
<br />
See the [https://github.com/brion/ogv.js#readme readme.md] for details of building the full ogv.js package. The standard autotools build systems are used with the emscripten compiler front-end.<br />
<br />
You can also [https://github.com/brion/ogv.js/releases download a pre-built release of ogv.js].<br />
<br />
== Demo ==<br />
<br />
Playback demo at: https://brionv.com/misc/ogv.js/demo/<br />
<br />
Integration into MediaWiki demo at: https://ogvjs-testing.wmflabs.org/ (defaults to native codecs when available, still a work in progress)<br />
<br />
JavaScript video works in all current browsers, audio works if Web Audio API is there (latest Firefox, Safari, Chrome), or with a Flash audio shim for IE.<br />
<br />
== Notes ==<br />
<br />
* libtheora<br />
** Must pass --disable-asm for emscripten, as it misdetects the host/target?<br />
** needs a slight fix to a function signature to quiet an error from emscripten compiler<br />
* libvorbis<br />
** experiments with using tremor instead of libvorbis showed it produces significantly smaller JS code. Performance, however, seems to be better with libvorbis, so the switch to tremor was not pursued.<br />
* libopus<br />
** it works!<br />
* Internet Explorer<br />
** JS player works on IE 10 and 11 only, but requires a Flash shim for audio<br />
* Edge<br />
** JS player works using native Web Audio, no Flash required. Even works on Windows 10 Mobile!<br />
* Safari<br />
** JS player works on OS X 10.8/Safari 6.1, OS X 10.9/Safari 7, and iOS 8<br />
** Safari JIT crashes on iOS 7<br />
** Audio must be triggered from a UI event to work on iOS (no auto play)<br />
<br />
== Performance ==<br />
<br />
Performance seems adequate on recent-ish desktops/laptops in the latest browsers, and on 64-bit iOS devices, but is woefully poor for medium-sized videos on 32-bit mobile phones and tablets.<br />
<br />
'''Internet Explorer'''<br />
* Older versions than IE 10 not supported<br />
* Flash audio shim required due to lack of Web Audio<br />
* JavaScript performance is not as good as other browsers<br />
<br />
'''Edge/Windows 10'''<br />
* Works natively<br />
* Faster than IE 11 but not as fast as others<br />
** Experimental asm.js optimizations bump performance back in line (set in about:flags)<br />
<br />
'''Safari/Mac OS X'''<br />
* JS has JIT bugs on 6.0, too slow on 5 and older<br />
* Works well on 6.1/7/8/9<br />
<br />
'''Safari/iOS'''<br />
* 64-bit iOS 7 devices hit decode speed targets at 360p/30fps video<br />
** tested iPhone 5s, iPad Air<br />
* 32-bit iOS 7 devices play audio, or video up to 160p/15fps acceptably<br />
** tested iPod Touch 5th-gen, iPhone 4s, iPad 3<br />
* iOS 6 seems to support the right APIs but doesn't play correctly, and the JIT is much too slow.<br />
* non-Safari iOS browsers always disable the JIT and are much too slow.<br />
<br />
'''Other modern browsers'''<br />
* Other modern browsers don't actually need this for playback as they support Ogg Theora/Vorbis or WebM natively. Still of interest for experimental transcoding or encoding scenarios though.<br />
* Of modern browsers, Firefox performs JS best (asm.js optimizations).<br />
* Chrome and Opera (the new Chromium-based one) perform pretty well too.<br />
<br />
== HTML5 integration ==<br />
<br />
Current playback demo uses a custom wrapper 'ogvjs' element which is extended to support a subset of the [https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement HTMLMediaElement API]. With some additional selection/loader code this can be used to dynamically replace a <video> or <audio> tag.<br />
<br />
WebRTC and MediaStreams also do not appear to allow easily plugging in custom JS codecs, but audio and video frames could be sent over WebRTC data channels as ArrayBuffers.<br />
<br />
Live encoding from getUserMedia may be possible but I suspect frame rate will be awful as there's no way to grab the bits directly... and of course encoding is likely to be slow.<br />
<br />
Transcoding from a native HTML5 video element may be similarly complex.<br />
<br />
== Related projects ==<br />
<br />
* [[iOS]] codecs<br />
<br />
{{DISPLAYTITLE:ogv.js}}</div>Brionhttps://wiki.xiph.org/index.php?title=IOS&diff=15891IOS2015-06-20T13:14:45Z<p>Brion: </p>
<hr />
<div>At least libogg, libvorbis, and libtheora build for and run on iOS without modification in their current incarnations.<br />
<br />
== Cross-compiling ==<br />
<br />
Cross-compile on OS X with Xcode command-line tools and the iOS SDK. You may have to install autoconf, automake, and libtool from Homebrew or manually.<br />
<br />
The cross-compiled autotools builds only generate one architecture at a time, so you may wish to combine the output libraries into 'universal' form using lipo. (The frameworks listed below do this for you in their build systems or leave linking to Xcode.)<br />
<br />
== CocoaPods ==<br />
<br />
[https://cocoapods.org/ CocoaPods] is a source-centric package manager for iOS and Mac OS X projects built with Xcode. libogg, libvorbis, and libtheora packages [https://github.com/brion/OGVKit-Specs are in progress].<br />
<br />
See [[#OGVKit]] for a player widget wrapping these packages.<br />
<br />
To use the low-level libraries directly in a CocoaPods app, add them to your Podfile:<br />
<br />
<pre><br />
source 'https://github.com/CocoaPods/Specs.git'<br />
source 'https://github.com/brion/OGVKit-Specs.git' # temporary package home<br />
<br />
target 'MyProject'<br />
pod 'libtheora'<br />
pod 'libvorbis'<br />
# note 'libogg' will be automatically pulled in as a dependency<br />
end<br />
</pre><br />
<br />
and re-run <code>pod install</code>.<br />
<br />
Todo:<br />
* use subspecs to enable/disable encoders<br />
* enable assembly acceleration for Theora<br />
* package libopus<br />
* upload the podspec to CocoaPods main repo<br />
* possibly upstream the podspec into the libraries<br />
<br />
== Frameworks ==<br />
<br />
=== GStreamer ===<br />
<br />
GStreamer is available for iOS in the 0.10-based SDK from http://gstreamer.com/ or the mainline GStreamer 1.x series builds, includes Ogg codecs by default, and should automatically disable patented codecs if not enabled.<br />
<br />
* Note that the GStreamer packaging for iOS does not provide a high-level Objective-C player widget, but sample code looks relatively straightforward to connect a GStreamer pipeline to a CAEGLLayer or such.<br />
* Warning: the current build infrastructure only produces armv7 and 32-bit simulator builds of the libraries, which means you can't use it in a 64-bit build of your app.<br />
<br />
Commercial consulting for the 0.10 SDK is available through GStreamer.com's partners Collabora and Fluendo.<br />
<br />
May add about 13MB to app size, depending on options selected.<br />
<br />
=== MobileVLCKit ===<br />
<br />
[https://wiki.videolan.org/VLCKit/ MobileVLCKit] wraps many codecs including the main Xiph ones, and has a high-level Objective-C player interface that can be instantiated immediately in an app.<br />
<br />
However note that the build system compiles in *lots* of patented codecs by default, which may make this tricky for US-based developers.<br />
<br />
VLC developers are pretty responsive, but concentrate on the VLC player case.<br />
<br />
May add a few dozen megs to your app size.<br />
<br />
=== OGVKit ===<br />
<br />
Work in progress package to build the libraries and wrap them with a high-level Objective-C interface that can be easily dropped into in an Xcode project: https://github.com/brion/OGVKit<br />
<br />
OGVKit is designed to be deployed as a [[#CocoaPods]] package, so it can be easily dropped into an Xcode project.<br />
<br />
Currently supports basic Ogg Theora/Vorbis and WebM VP8/Vorbis playback; seeking is in progress and the API is being cleaned up.<br />
<br />
<pre><br />
source 'https://github.com/CocoaPods/Specs.git'<br />
source 'https://github.com/brion/OGVKit-Specs.git' # temporary package home<br />
<br />
target 'MyProject'<br />
pod 'OGVKit'<br />
end<br />
</pre><br />
<br />
and re-run <code>pod install</code>.<br />
<br />
The package can be trimmed down with subspecs, for instance to include only Ogg Vorbis playback (thus skipping other codecs):<br />
<br />
<pre><br />
pod 'OGVKit/Decoder/Ogg/Vorbis'<br />
</pre><br />
<br />
Adds about 2-5MB to app size depending on options.<br />
<br />
=== Performance ===<br />
<br />
See preliminary benchmarks at https://github.com/brion/OGVKit/wiki/Device-notes and https://github.com/brion/OGVKit/wiki/Energy-usage<br />
<br />
== OS integration ==<br />
<br />
=== Native codecs ===<br />
<br />
<span style="color:red; font-weight:bold">NO</span><br />
<br />
iOS's native media framework is [https://developer.apple.com/av-foundation/ AVFoundation], which unfortunately is not extensible with codec or file type plugins. :(<br />
<br />
It should be possible for an Obj-C wrapper library to use the same audio and video buffer types for input/output as AVFoundation does, however, which will make it easier to hook them up together for transcoding or live encoding from the camera.<br />
<br />
=== File type handler ===<br />
<br />
<span style="color:green; font-weight:bold">YES</span><br />
<br />
It is possible for an app that plays Ogg media to register its file types with the system, allowing other apps that may download files (Safari, Mail, Dropbox, etc) to prompt to open them in the player.<br />
<br />
VLC for iOS implements this but there are usability problems inherent in the system: Safari will download the entire file and '''then''' hand it off to the player, so you cannot play during the download.<br />
<br />
=== URL handler ===<br />
<br />
<span style="color:orange; font-weight:bold">YES, BUT</span><br />
<br />
It is possible for an app that plays Ogg media to register a URL handler, which would allow other apps or web content to launch the player. A remote URL could be included as a parameter on that URL, allowing apps or web content to hand off something to download-and-play progressively.<br />
<br />
VLC for iOS implements this; prepend 'vlc:' to a URL to download or stream it in VLC.<br />
<br />
Unfortunately you can't do something like register for 'http[s]://*/*.ogv' -- you can only register a scheme such as 'vlc' or 'x-ogvkit-player'. So you can't accept arbitrary HTTP or HTTPS links; the calling app or web content needs to know your app-specific URL scheme.<br />
<br />
== Related projects ==<br />
<br />
* [[ogv.js]] JavaScript codec works in iOS Safari<br />
<br />
{{DISPLAYTITLE:iOS}}</div>Brionhttps://wiki.xiph.org/index.php?title=IOS&diff=15890IOS2015-06-20T13:13:39Z<p>Brion: </p>
<hr />
<div>At least libogg, libvorbis, and libtheora build for and run on iOS without modification in their current incarnations.<br />
<br />
== Cross-compiling ==<br />
<br />
Cross-compile on OS X with Xcode command-line tools and the iOS SDK. You may have to install autoconf, automake, and libtool from Homebrew or manually.<br />
<br />
The cross-compiled autotools builds only generate one architecture at a time, so you may wish to combine the output libraries into 'universal' form using lipo. (The frameworks listed below do this for you in their build systems or leave linking to Xcode.)<br />
<br />
== CocoaPods ==<br />
<br />
[https://cocoapods.org/ CocoaPods] is a source-centric package manager for iOS and Mac OS X projects. libogg, libvorbis, and libtheora packages are in progress.<br />
<br />
See [[#OGVKit]] for a player widget wrapping these packages.<br />
<br />
To use the low-level libraries directly in a CocoaPods app, add them to your Podfile:<br />
<br />
<pre><br />
source 'https://github.com/CocoaPods/Specs.git'<br />
source 'https://github.com/brion/OGVKit-Specs.git' # temporary package home<br />
<br />
target 'MyProject'<br />
pod 'libtheora'<br />
pod 'libvorbis'<br />
# note 'libogg' will be automatically pulled in as a dependency<br />
end<br />
</pre><br />
<br />
and re-run <code>pod install</code>.<br />
<br />
Todo:<br />
* use subspecs to enable/disable encoders<br />
* enable assembly acceleration for Theora<br />
* package libopus<br />
* upload the podspec to CocoaPods main repo<br />
* possibly upstream the podspec into the libraries<br />
<br />
== Frameworks ==<br />
<br />
=== GStreamer ===<br />
<br />
GStreamer is available for iOS in the 0.10-based SDK from http://gstreamer.com/ or the mainline GStreamer 1.x series builds, includes Ogg codecs by default, and should automatically disable patented codecs if not enabled.<br />
<br />
* Note that the GStreamer packaging for iOS does not provide a high-level Objective-C player widget, but sample code looks relatively straightforward to connect a GStreamer pipeline to a CAEGLLayer or such.<br />
* Warning: the current build infrastructure only produces armv7 and 32-bit simulator builds of the libraries, which means you can't use it in a 64-bit build of your app.<br />
<br />
Commercial consulting for the 0.10 SDK is available through GStreamer.com's partners Collabora and Fluendo.<br />
<br />
May add about 13MB to app size, depending on options selected.<br />
<br />
=== MobileVLCKit ===<br />
<br />
[https://wiki.videolan.org/VLCKit/ MobileVLCKit] wraps many codecs including the main Xiph ones, and has a high-level Objective-C player interface that can be instantiated immediately in an app.<br />
<br />
However note that the build system compiles in *lots* of patented codecs by default, which may make this tricky for US-based developers.<br />
<br />
VLC developers are pretty responsive, but concentrate on the VLC player case.<br />
<br />
May add a few dozen megs to your app size.<br />
<br />
=== OGVKit ===<br />
<br />
Work in progress package to build the libraries and wrap them with a high-level Objective-C interface that can be easily dropped into in an Xcode project: https://github.com/brion/OGVKit<br />
<br />
OGVKit is designed to be deployed as a [[#CocoaPods]] package, so it can be easily dropped into an Xcode project.<br />
<br />
Currently supports basic Ogg Theora/Vorbis and WebM VP8/Vorbis playback; seeking is in progress and the API is being cleaned up.<br />
<br />
<pre><br />
source 'https://github.com/CocoaPods/Specs.git'<br />
source 'https://github.com/brion/OGVKit-Specs.git' # temporary package home<br />
<br />
target 'MyProject'<br />
pod 'OGVKit'<br />
end<br />
</pre><br />
<br />
and re-run <code>pod install</code>.<br />
<br />
The package can be trimmed down with subspecs, for instance to include only Ogg Vorbis playback (thus skipping other codecs):<br />
<br />
<pre><br />
pod 'OGVKit/Decoder/Ogg/Vorbis'<br />
</pre><br />
<br />
Adds about 2-5MB to app size depending on options.<br />
<br />
=== Performance ===<br />
<br />
See preliminary benchmarks at https://github.com/brion/OGVKit/wiki/Device-notes and https://github.com/brion/OGVKit/wiki/Energy-usage<br />
<br />
== OS integration ==<br />
<br />
=== Native codecs ===<br />
<br />
<span style="color:red; font-weight:bold">NO</span><br />
<br />
iOS's native media framework is [https://developer.apple.com/av-foundation/ AVFoundation], which unfortunately is not extensible with codec or file type plugins. :(<br />
<br />
It should be possible for an Obj-C wrapper library to use the same audio and video buffer types for input/output as AVFoundation does, however, which will make it easier to hook them up together for transcoding or live encoding from the camera.<br />
<br />
=== File type handler ===<br />
<br />
<span style="color:green; font-weight:bold">YES</span><br />
<br />
It is possible for an app that plays Ogg media to register its file types with the system, allowing other apps that may download files (Safari, Mail, Dropbox, etc) to prompt to open them in the player.<br />
<br />
VLC for iOS implements this but there are usability problems inherent in the system: Safari will download the entire file and '''then''' hand it off to the player, so you cannot play during the download.<br />
<br />
=== URL handler ===<br />
<br />
<span style="color:orange; font-weight:bold">YES, BUT</span><br />
<br />
It is possible for an app that plays Ogg media to register a URL handler, which would allow other apps or web content to launch the player. A remote URL could be included as a parameter on that URL, allowing apps or web content to hand off something to download-and-play progressively.<br />
<br />
VLC for iOS implements this; prepend 'vlc:' to a URL to download or stream it in VLC.<br />
<br />
Unfortunately you can't do something like register for 'http[s]://*/*.ogv' -- you can only register a scheme such as 'vlc' or 'x-ogvkit-player'. So you can't accept arbitrary HTTP or HTTPS links; the calling app or web content needs to know your app-specific URL scheme.<br />
<br />
== Related projects ==<br />
<br />
* [[ogv.js]] JavaScript codec works in iOS Safari<br />
<br />
{{DISPLAYTITLE:iOS}}</div>Brionhttps://wiki.xiph.org/index.php?title=IOS&diff=15889IOS2015-06-20T13:11:41Z<p>Brion: CocoaPods packaging in progress, OGVKit updates, couple brief notes on VLC for iOS usage</p>
<hr />
<div>At least libogg, libvorbis, and libtheora build for and run on iOS without modification in their current incarnations.<br />
<br />
== Cross-compiling ==<br />
<br />
Cross-compile on OS X with Xcode command-line tools and the iOS SDK. You may have to install autoconf, automake, and libtool from Homebrew or manually.<br />
<br />
The cross-compiled autotools builds only generate one architecture at a time, so you may wish to combine the output libraries into 'universal' form using lipo. (The frameworks listed below do this for you in their build systems; see [[#OgvKit]] for a relatively lightweight example.)<br />
<br />
== CocoaPods ==<br />
<br />
[https://cocoapods.org/ CocoaPods] is a source-centric package manager for iOS and Mac OS X projects. libogg, libvorbis, and libtheora packages are in progress.<br />
<br />
See [[#OGVKit]] for a player widget wrapping these packages.<br />
<br />
To use the low-level libraries directly in a CocoaPods app, add them to your Podfile:<br />
<br />
<pre><br />
source 'https://github.com/CocoaPods/Specs.git'<br />
source 'https://github.com/brion/OGVKit-Specs.git' # temporary package home<br />
<br />
target 'MyProject'<br />
pod 'libtheora'<br />
pod 'libvorbis'<br />
# note 'libogg' will be automatically pulled in as a dependency<br />
end<br />
</pre><br />
<br />
and re-run <code>pod install</code>.<br />
<br />
Todo:<br />
* use subspecs to enable/disable encoders<br />
* enable assembly acceleration for Theora<br />
* package libopus<br />
* upload the podspec to CocoaPods main repo<br />
* possibly upstream the podspec into the libraries<br />
<br />
== Frameworks ==<br />
<br />
=== GStreamer ===<br />
<br />
GStreamer is available for iOS in the 0.10-based SDK from http://gstreamer.com/ or the mainline GStreamer 1.x series builds, includes Ogg codecs by default, and should automatically disable patented codecs if not enabled.<br />
<br />
* Note that the GStreamer packaging for iOS does not provide a high-level Objective-C player widget, but sample code looks relatively straightforward to connect a GStreamer pipeline to a CAEGLLayer or such.<br />
* Warning: the current build infrastructure only produces armv7 and 32-bit simulator builds of the libraries, which means you can't use it in a 64-bit build of your app.<br />
<br />
Commercial consulting for the 0.10 SDK is available through GStreamer.com's partners Collabora and Fluendo.<br />
<br />
May add about 13MB to app size, depending on options selected.<br />
<br />
=== MobileVLCKit ===<br />
<br />
[https://wiki.videolan.org/VLCKit/ MobileVLCKit] wraps many codecs including the main Xiph ones, and has a high-level Objective-C player interface that can be instantiated immediately in an app.<br />
<br />
However note that the build system compiles in *lots* of patented codecs by default, which may make this tricky for US-based developers.<br />
<br />
VLC developers are pretty responsive, but concentrate on the VLC player case.<br />
<br />
May add a few dozen megs to your app size.<br />
<br />
=== OGVKit ===<br />
<br />
Work in progress package to build the libraries and wrap them with a high-level Objective-C interface that can be easily dropped into in an Xcode project: https://github.com/brion/OGVKit<br />
<br />
OGVKit is designed to be deployed as a [[#CocoaPods]] package, so it can be easily dropped into an Xcode project.<br />
<br />
Currently supports basic Ogg Theora/Vorbis and WebM VP8/Vorbis playback; seeking is in progress and the API is being cleaned up.<br />
<br />
<pre><br />
source 'https://github.com/CocoaPods/Specs.git'<br />
source 'https://github.com/brion/OGVKit-Specs.git' # temporary package home<br />
<br />
target 'MyProject'<br />
pod 'OGVKit'<br />
end<br />
</pre><br />
<br />
and re-run <code>pod install</code>.<br />
<br />
The package can be trimmed down with subspecs, for instance to include only Ogg Vorbis playback (thus skipping other codecs):<br />
<br />
<pre><br />
pod 'OGVKit/Decoder/Ogg/Vorbis'<br />
</pre><br />
<br />
Adds about 2-5MB to app size depending on options.<br />
<br />
=== Performance ===<br />
<br />
See preliminary benchmarks at https://github.com/brion/OGVKit/wiki/Device-notes and https://github.com/brion/OGVKit/wiki/Energy-usage<br />
<br />
== OS integration ==<br />
<br />
=== Native codecs ===<br />
<br />
<span style="color:red; font-weight:bold">NO</span><br />
<br />
iOS's native media framework is [https://developer.apple.com/av-foundation/ AVFoundation], which unfortunately is not extensible with codec or file type plugins. :(<br />
<br />
It should be possible for an Obj-C wrapper library to use the same audio and video buffer types for input/output as AVFoundation does, however, which will make it easier to hook them up together for transcoding or live encoding from the camera.<br />
<br />
=== File type handler ===<br />
<br />
<span style="color:green; font-weight:bold">YES</span><br />
<br />
It is possible for an app that plays Ogg media to register its file types with the system, allowing other apps that may download files (Safari, Mail, Dropbox, etc) to prompt to open them in the player.<br />
<br />
VLC for iOS implements this but there are usability problems inherent in the system: Safari will download the entire file and '''then''' hand it off to the player, so you cannot play during the download.<br />
<br />
=== URL handler ===<br />
<br />
<span style="color:orange; font-weight:bold">YES, BUT</span><br />
<br />
It is possible for an app that plays Ogg media to register a URL handler, which would allow other apps or web content to launch the player. A remote URL could be included as a parameter on that URL, allowing apps or web content to hand off something to download-and-play progressively.<br />
<br />
VLC for iOS implements this; prepend 'vlc:' to a URL to download or stream it in VLC.<br />
<br />
Unfortunately you can't do something like register for 'http[s]://*/*.ogv' -- you can only register a scheme such as 'vlc' or 'x-ogvkit-player'. So you can't accept arbitrary HTTP or HTTPS links; the calling app or web content needs to know your app-specific URL scheme.<br />
<br />
== Related projects ==<br />
<br />
* [[ogv.js]] JavaScript codec works in iOS Safari<br />
<br />
{{DISPLAYTITLE:iOS}}</div>Brionhttps://wiki.xiph.org/index.php?title=Ogv.js&diff=14799Ogv.js2014-07-17T20:43:16Z<p>Brion: merged opus support; link MediaWiki integration demo</p>
<hr />
<div>At least libogg, libvorbis, libopus, and libtheora can be built to JavaScript using [http://emscripten.org/ emscripten], and to Flash with [http://adobe-flash.github.io/crossbridge/ Crossbridge], with only slight modifications.<br />
<br />
'''[https://github.com/brion/ogv.js ogv.js]''' is a wrapper around these with basic JavaScript/ActionScript3 interfaces and video/audio playback wrappers semi-compatible with the native HTML5 <video>/<audio> elements.<br />
<br />
Currently the internal interfaces are very much in development. I ([[User:Brion]]) hope to get these in use for playback of audio and video content on Wikipedia and Wikimedia Commons in browsers that don't support Ogg or WebM natively, as our community has rejected the idea of making and serving out MP4 transcodes for those browsers.<br />
<br />
Generic decoding, or even encoding, should be possible in the future but needs better APIs to be sane.<br />
<br />
== Building ==<br />
<br />
The build scripts make slight changes to configure scripts which may or may not be necessary, need to dive in in more detail.<br />
<br />
There's also a slight fix needed in libtheora: https://github.com/brion/theora/commit/06a0e4acf9c35f4bd31b8788a8a573cb89262333 which is probably safe to upstream (check this!)<br />
<br />
== Demo ==<br />
<br />
Playback demo at: https://brionv.com/misc/ogv.js/demo/<br />
<br />
Integration into MediaWiki demo at: https://ogvjs-testing.wmflabs.org/ (defaults to native codecs when available, still a work in progress)<br />
<br />
JavaScript video works in all current browsers, audio works if Web Audio API is there (latest Firefox, Safari, Chrome), or with a Flash audio shim for IE. Audio may have issues starting in iOS Safari, which can cause videos with audio to also fail.<br />
<br />
Flash video/audio playback works in all current browsers and IE 9; IE 6/7/8 support is planned.<br />
<br />
== Notes ==<br />
<br />
* libtheora<br />
** Must pass --disable-asm for emscripten, as it misdetects the host/target?<br />
** needs a slight fix to a function signature to quiet an error from emscripten compiler<br />
* libvorbis<br />
** experiments with using tremor instead of libvorbis showed it produces significantly smaller JS code. Performance, however, seems to be better with libvorbis, so the switch to tremor was not pursued.<br />
* libopus<br />
** not yet built into the Flash version<br />
* Internet Explorer<br />
** JS player works on IE 10 and 11 only, but requires a Flash shim for audio<br />
** Flash player with JS wrapper works in IE 9/10/11; working on 6/7/8 support<br />
* Safari<br />
** JS player works on OS X 10.8/Safari 6.1, OS X 10.9/Safari 7, and iOS 7<br />
** Safari JIT crash on iOS 7 64-bit seems to have been resolved by moving to the new emscripten LLVM backend<br />
** Audio must be triggered from a UI event to work on iOS (no auto play)<br />
** WebGL works in iOS 8 beta, OS X 10.10 beta, and OS X 10.9 when enabled in developer menu<br />
<br />
== Performance ==<br />
<br />
Performance seems adequate on recent-ish desktops/laptops in the latest browsers, but is woefully poor for medium-sized videos on most mobile phones and tablets.<br />
<br />
'''Internet Explorer'''<br />
* JavaScript supported only on IE 10/11; needs Flash for audio and for older browsers<br />
* JavaScript performance is not as good as other browsers, and there's a lot of GC churn visible in dev tools UI responsiveness profiling<br />
* Flash player performance is similar to IE 11's JS on MacBook Pro, but has fewer slowdowns<br />
* Flash player performs about the same as IE 11 JS on a Surface RT (Nvidia Tegra 3 CPU)<br />
* Flash player performs significantly better than IE 11 JavaScript on an old Atom-based tablet where JS can't quite handle 360p/30<br />
<br />
'''Safari/Mac OS X'''<br />
* JS and Flash performance about the same on Safari 6.1/7; JS won't work or too slow on 6 and older<br />
* Flash should work on old Safari (not yet tested)<br />
<br />
'''Safari/iOS'''<br />
* JavaScript only, no Flash<br />
* 64-bit iOS 7 devices hit decode speed targets at 360p/30fps video<br />
** tested iPhone 5s<br />
* 32-bit iOS 7 devices play audio, or video up to 160p/15fps acceptably<br />
** tested iPod Touch 5th-gen and iPad 3<br />
* iOS 6 seems to support the right APIs but doesn't play correctly, and the JIT is much too slow.<br />
* non-Safari iOS browsers always disable the JIT and are much too slow.<br />
<br />
'''Other modern browsers'''<br />
* Other modern browsers don't actually need this for playback as they support Ogg Theora/Vorbis or WebM natively. Still of interest for experimental transcoding or encoding scenarios though.<br />
* Unsurprisingly, Flash version performs about the same in any browser on the same hardware.<br />
* Of modern browsers, Firefox performs JS best (asm.js optimizations). Beware that current release Firefox 27 only uses the asm.js optimizations on the first run; this is fixed in Firefox 30 nightlies.<br />
* Chrome and Opera (the new Chromium-based one) perform pretty well too, maybe slightly better than Safari.<br />
<br />
== HTML5 integration ==<br />
<br />
Current playback demo uses a custom wrapper 'ogvjs' or 'ogvswf' element which is extended to support a subset of the [https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement HTMLMediaElement API]. With some additional selection/loader code this could be used to dynamically replace a <video> or <audio> tag.<br />
<br />
WebRTC and MediaStreams also do not appear to allow easily plugging in custom JS codecs, but audio and video frames could be sent over WebRTC data channels as ArrayBuffers.<br />
<br />
Live encoding from getUserMedia may be possible but I suspect frame rate will be awful as there's no way to grab the bits directly... and of course encoding is likely to be slow.<br />
<br />
Transcoding from a native HTML5 video element may be similarly complex.<br />
<br />
== Related projects ==<br />
<br />
* [[iOS]] codecs<br />
<br />
{{DISPLAYTITLE:ogv.js}}</div>Brionhttps://wiki.xiph.org/index.php?title=IOS&diff=14769IOS2014-07-07T20:28:28Z<p>Brion: damn you autocorrect</p>
<hr />
<div>At least libogg, libvorbis, and libtheora build for and run on iOS without modification in their current incarnations.<br />
<br />
== Basic building ==<br />
<br />
Cross-compile on OS X with Xcode command-line tools and the iOS SDK. You may have to install autoconf, automake, and libtool from Homebrew or manually.<br />
<br />
The cross-compiled autotools builds only generate one architecture at a time, so you may wish to combine the output libraries into 'universal' form using lipo. (The frameworks listed below do this for you in their build systems; see [[#OgvKit]] for a relatively lightweight example.)<br />
<br />
== Frameworks ==<br />
<br />
=== GStreamer ===<br />
<br />
GStreamer is available for iOS in the 0.10-based SDK from http://gstreamer.com/ or the mainline GStreamer 1.x series builds, includes Ogg codecs by default, and should automatically disable patented codecs if not enabled.<br />
<br />
* Note that the GStreamer packaging for iOS does not provide a high-level Objective-C player widget, but sample code looks relatively straightforward to connect a GStreamer pipeline to a CAEGLLayer or such.<br />
* Warning: the current build infrastructure only produces armv7 and 32-bit simulator builds of the libraries, which means you can't use it in a 64-bit build of your app.<br />
<br />
Commercial consulting for the 0.10 SDK is available through GStreamer.com's partners Collabora and Fluendo.<br />
<br />
May add about 13MB to app size, depending on options selected.<br />
<br />
=== MobileVLCKit ===<br />
<br />
[https://wiki.videolan.org/VLCKit/ MobileVLCKit] wraps many codecs including the main Xiph ones, and has a high-level Objective-C player interface that can be instantiated immediately in an app.<br />
<br />
However note that the build system compiles in *lots* of patented codecs by default, which may make this tricky for US-based developers.<br />
<br />
VLC developers are pretty responsive, but concentrate on the VLC player case.<br />
<br />
May add a few dozen megs to your app size.<br />
<br />
=== OgvKit ===<br />
<br />
Experimental work in progress script to build the libraries and wrap them with a high-level Objective-C interface that can be easily dropped into in an Xcode project: https://github.com/brion/OgvKit<br />
<br />
Adds about 2MB to app size.<br />
<br />
==== Building ====<br />
<br />
Build the C libraries first in a terminal:<br />
* Requires autoconf, automake, and libtool; can be installed via homebrew.<br />
* Run 'make' to build all C libraries<br />
<br />
Once the C libs are built, you can fire up the OgvKit or OgvDemo projects in Xcode and run/test them directly:<br />
* OgvKit: Xcode project with the Obj-C wrapper built as a static library<br />
* OgvDemo: Xcode project with sample app, imports the OgvKit project<br />
<br />
<br />
==== Notes ====<br />
<br />
* CLI makefile builds each library for armv7, armv7s, arm64 for devices and i386, x86_64 for simulator, then combines them to multi-arch universal binaries<br />
* wrapper library links to and encapsulates the low-level C libraries, so this should be usable in future Swift projects as well as Obj-C<br />
* libtheora<br />
** Must pass --disable-asm, as the asm code doesn't build for iOS (yet?) [https://gist.github.com/brion/7345164 errs]<br />
** doesn't build with iOS 7.1 SDK from the current git mirror -- need to get git mirror fixed or change build system to fetch from svn<br />
<br />
=== Performance ===<br />
<br />
See preliminary benchmarks at https://github.com/brion/OgvKit/wiki/Device-notes<br />
<br />
== OS integration ==<br />
<br />
=== Native codecs ===<br />
<br />
<span style="color:red; font-weight:bold">NO</span><br />
<br />
iOS's native media framework is [https://developer.apple.com/av-foundation/ AVFoundation], which unfortunately is not extensible with codec or file type plugins. :(<br />
<br />
It should be possible for an Obj-C wrapper library to use the same audio and video buffer types for input/output as AVFoundation does, however, which will make it easier to hook them up together for transcoding or live encoding from the camera.<br />
<br />
=== File type handler ===<br />
<br />
<span style="color:green; font-weight:bold">YES</span><br />
<br />
It is possible for an app that plays Ogg media to register its file types with the system, allowing other apps that may download files (Safari, Mail, Dropbox, etc) to prompt to open them in the player.<br />
<br />
I have implemented an early test of this in OgvKit demo player; it works but, for instance Safari will download the entire file and '''then''' hand it off to the player, so you cannot play during the download.<br />
<br />
=== URL handler ===<br />
<br />
<span style="color:orange; font-weight:bold">YES, BUT</span><br />
<br />
It is possible for an app that plays Ogg media to register a URL handler, which would allow other apps or web content to launch the player. A remote URL could be included as a parameter on that URL, allowing apps or web content to hand off something to download-and-play progressively.<br />
<br />
Unfortunately you can't do something like register for 'http[s]://*/*.ogv' -- you can only register a scheme such as 'x-ogvkit-player'. So you can't accept arbitrary HTTP or HTTPS links; the calling app or web content needs to know your app-specific URL scheme.<br />
<br />
== Related projects ==<br />
<br />
* [[ogv.js]] JavaScript codec works in iOS Safari<br />
<br />
{{DISPLAYTITLE:iOS}}</div>Brionhttps://wiki.xiph.org/index.php?title=IOS&diff=14768IOS2014-07-07T19:21:01Z<p>Brion: Rework page a little, add GStreamer information</p>
<hr />
<div>At least libogg, libvorbis, and libtheora build for and run on iOS without modification in their current incarnations.<br />
<br />
== Basic building ==<br />
<br />
Cross-compile on OS X with Xcode command-line tools and the iOS SDK. You may have to install autoconf, automaker, and libtool from Homebrew or manually.<br />
<br />
The cross-compiled auto tools only generate one architecture at a time, so you may wish to combine the output libraries into 'universal' form using lipo. (The frameworks listed below do this for you in their build systems; see [[#OgvKit]] for a relatively lightweight example.)<br />
<br />
== Frameworks ==<br />
<br />
=== GStreamer ===<br />
<br />
GStreamer is available for iOS in the 0.10-based SDK from http://gstreamer.com/ or the mainline GStreamer 1.x series builds, includes Ogg codecs by default, and should automatically disable patented codecs if not enabled.<br />
<br />
* Note that the GStreamer packaging for iOS does not provide a high-level Objective-C player widget, but sample code looks relatively straightforward to connect a GStreamer pipeline to a CAEGLLayer or such.<br />
* Warning: the current build infrastructure only produces armv7 and 32-bit simulator builds of the libraries, which means you can't use it in a 64-bit build of your app.<br />
<br />
Commercial consulting for the 0.10 SDK is available through GStreamer.com's partners Collabora and Fluendo.<br />
<br />
May add about 13MB to app size, depending on options selected.<br />
<br />
=== MobileVLCKit ===<br />
<br />
[https://wiki.videolan.org/VLCKit/ MobileVLCKit] wraps many codecs including the main Xiph ones, and has a high-level Objective-C player interface that can be instantiated immediately in an app.<br />
<br />
However note that the build system compiles in *lots* of patented codecs by default, which may make this tricky for US-based developers.<br />
<br />
VLC developers are pretty responsive, but concentrate on the VLC player case.<br />
<br />
May add a few dozen megs to your app size.<br />
<br />
=== OgvKit ===<br />
<br />
Experimental work in progress script to build the libraries and wrap them with a high-level Objective-C interface that can be easily dropped into in an Xcode project: https://github.com/brion/OgvKit<br />
<br />
Adds about 2MB to app size.<br />
<br />
==== Building ====<br />
<br />
Build the C libraries first in a terminal:<br />
* Requires autoconf, automake, and libtool; can be installed via homebrew.<br />
* Run 'make' to build all C libraries<br />
<br />
Once the C libs are built, you can fire up the OgvKit or OgvDemo projects in Xcode and run/test them directly:<br />
* OgvKit: Xcode project with the Obj-C wrapper built as a static library<br />
* OgvDemo: Xcode project with sample app, imports the OgvKit project<br />
<br />
<br />
==== Notes ====<br />
<br />
* CLI makefile builds each library for armv7, armv7s, arm64 for devices and i386, x86_64 for simulator, then combines them to multi-arch universal binaries<br />
* wrapper library links to and encapsulates the low-level C libraries, so this should be usable in future Swift projects as well as Obj-C<br />
* libtheora<br />
** Must pass --disable-asm, as the asm code doesn't build for iOS (yet?) [https://gist.github.com/brion/7345164 errs]<br />
** doesn't build with iOS 7.1 SDK from the current git mirror -- need to get git mirror fixed or change build system to fetch from svn<br />
<br />
=== Performance ===<br />
<br />
See preliminary benchmarks at https://github.com/brion/OgvKit/wiki/Device-notes<br />
<br />
== OS integration ==<br />
<br />
=== Native codecs ===<br />
<br />
<span style="color:red; font-weight:bold">NO</span><br />
<br />
iOS's native media framework is [https://developer.apple.com/av-foundation/ AVFoundation], which unfortunately is not extensible with codec or file type plugins. :(<br />
<br />
It should be possible for an Obj-C wrapper library to use the same audio and video buffer types for input/output as AVFoundation does, however, which will make it easier to hook them up together for transcoding or live encoding from the camera.<br />
<br />
=== File type handler ===<br />
<br />
<span style="color:green; font-weight:bold">YES</span><br />
<br />
It is possible for an app that plays Ogg media to register its file types with the system, allowing other apps that may download files (Safari, Mail, Dropbox, etc) to prompt to open them in the player.<br />
<br />
I have implemented an early test of this in OgvKit demo player; it works but, for instance Safari will download the entire file and '''then''' hand it off to the player, so you cannot play during the download.<br />
<br />
=== URL handler ===<br />
<br />
<span style="color:orange; font-weight:bold">YES, BUT</span><br />
<br />
It is possible for an app that plays Ogg media to register a URL handler, which would allow other apps or web content to launch the player. A remote URL could be included as a parameter on that URL, allowing apps or web content to hand off something to download-and-play progressively.<br />
<br />
Unfortunately you can't do something like register for 'http[s]://*/*.ogv' -- you can only register a scheme such as 'x-ogvkit-player'. So you can't accept arbitrary HTTP or HTTPS links; the calling app or web content needs to know your app-specific URL scheme.<br />
<br />
== Related projects ==<br />
<br />
* [[ogv.js]] JavaScript codec works in iOS Safari<br />
<br />
{{DISPLAYTITLE:iOS}}</div>Brionhttps://wiki.xiph.org/index.php?title=IOS&diff=14749IOS2014-06-26T07:50:32Z<p>Brion: /* Building */ updates</p>
<hr />
<div>At least libogg, libvorbis, and libtheora build and run on iOS without modification in their current incarnations.<br />
<br />
== Building ==<br />
<br />
Experimental work in progress script to build the libraries and wrap them with a high-level Objective-C interface that can be easily dropped into in an Xcode project: https://github.com/brion/OgvKit<br />
<br />
Build the C libraries first in a terminal:<br />
* Requires autoconf, automake, and libtool; can be installed via homebrew.<br />
* Run 'make' to build all C libraries<br />
<br />
Once the C libs are built, you can fire up the OgvKit or OgvDemo projects in Xcode and run/test them directly:<br />
* OgvKit: Xcode project with the Obj-C wrapper built as a static library<br />
* OgvDemo: Xcode project with sample app, imports the OgvKit project<br />
<br />
<br />
=== Notes ===<br />
<br />
* CLI makefile builds each library for armv7, armv7s, arm64 for devices and i386, x86_64 for simulator, then combines them to multi-arch universal binaries<br />
* wrapper library links to and encapsulates the low-level C libraries, so this should be usable in future Swift projects as well as Obj-C<br />
* libtheora<br />
** Must pass --disable-asm, as the asm code doesn't build for iOS (yet?) [https://gist.github.com/brion/7345164 errs]<br />
** doesn't build with iOS 7.1 SDK from the current git mirror -- need to get git mirror fixed or change build system to fetch from svn<br />
<br />
== Performance ==<br />
<br />
See preliminary benchmarks at https://github.com/brion/OgvKit/wiki/Device-notes<br />
<br />
== OS integration ==<br />
<br />
=== Native codecs ===<br />
<br />
<span style="color:red; font-weight:bold">NO</span><br />
<br />
iOS's native media framework is [https://developer.apple.com/av-foundation/ AVFoundation], which unfortunately is not extensible with codec or file type plugins. :(<br />
<br />
It should be possible for an Obj-C wrapper library to use the same audio and video buffer types for input/output as AVFoundation does, however, which will make it easier to hook them up together for transcoding or live encoding from the camera.<br />
<br />
=== File type handler ===<br />
<br />
<span style="color:green; font-weight:bold">YES</span><br />
<br />
It is possible for an app that plays Ogg media to register its file types with the system, allowing other apps that may download files (Safari, Mail, Dropbox, etc) to prompt to open them in the player.<br />
<br />
I have implemented an early test of this in OgvKit demo player; it works but, for instance Safari will download the entire file and '''then''' hand it off to the player, so you cannot play during the download.<br />
<br />
=== URL handler ===<br />
<br />
<span style="color:orange; font-weight:bold">YES, BUT</span><br />
<br />
It is possible for an app that plays Ogg media to register a URL handler, which would allow other apps or web content to launch the player. A remote URL could be included as a parameter on that URL, allowing apps or web content to hand off something to download-and-play progressively.<br />
<br />
Unfortunately you can't do something like register for 'http[s]://*/*.ogv' -- you can only register a scheme such as 'x-ogvkit-player'. So you can't accept arbitrary HTTP or HTTPS links; the calling app or web content needs to know your app-specific URL scheme.<br />
<br />
== Related projects ==<br />
<br />
* [[ogv.js]] JavaScript codec works in iOS Safari<br />
* [https://wiki.videolan.org/VLCKit/ MobileVLCKit] wraps many codecs including the main Xiph ones, and has a high-level player interface<br />
<br />
{{DISPLAYTITLE:iOS}}</div>Brionhttps://wiki.xiph.org/index.php?title=Codecs_for_Windows_Store_apps&diff=14636Codecs for Windows Store apps2014-04-29T11:04:59Z<p>Brion: link to WebM DirectShow component source which includes a MediaFoundation extension to use as inspiration</p>
<hr />
<div>== Progress ==<br />
<br />
As of April 22, 2014:<br />
* ogg, vorbis, theora build as DLLs for Windows/RT/Phone 8.1<br />
* [[User:Brion|Brion]] doing some research on Media Foundation codec plugins<br />
** backup plan for C++/.NET apps if that fails: make a limited-functionality player as a Xaml component that can be reused<br />
** additional backup plan for HTML apps: package codec as a Windows Runtime component and reuse the player frontend from [[JavaScript|ogv.js]]<br />
<br />
== Building libraries for Windows Runtime ==<br />
<br />
Windows 8+/RT and Windows Phone 8.1 apps are sandboxed (similarly to iOS or Android) and use the sorta-COM-based Windows Runtime libraries rather than classic Win32.<br />
<br />
Work in progress adapting the win32 Visual Studio projects for the libraries ogg, vorbis, and theora libraries:<br />
<br />
* https://github.com/brion/OgvRT (wrapper test app that draws a file to screen with Direct3D)<br />
* https://github.com/brion/ogg/commits/metro - branch with build files<br />
* https://github.com/brion/vorbis/commits/metro - branch with build files<br />
* https://github.com/brion/theora/commits/metro - branch with build files<br />
* Will try Opus as well but don't have test files yet.<br />
<br />
These build for both Windows 8.1 (x86, x64, and ARM) and Windows Phone 8.1 (x86 for simulator, ARM for device) using the "Universal Windows application" support in the latest Visual Studio 2013 Express.<br />
<br />
<br />
== Media Foundation extensions ==<br />
<br />
Windows Runtime's standard media framework is the COM-based Media Foundation, introduced in Windows 7. This is different from DirectShow and uses a different model for codecs.<br />
<br />
Unfortunately, Windows Store apps can't install globally available extensions because they are sandboxed... System-wide installation is not possible at all on ARM-based Windows RT or Windows Phone 8.1 either, as all apps must use the sandboxed model.<br />
<br />
Fortunately, Windows Store apps can install locally available extensions that work within their sandbox. There is a [http://code.msdn.microsoft.com/windowsapps/media-extensions-sample-7b466096 sample project with an MPEG1 decoder].<br />
<br />
In theory, a codec plugin done the right way can work with HTML5-based or .NET-based apps as well as C++-based ones using Windows Runtime directly.<br />
<br />
=== Related projects ===<br />
<br />
The WebM project's [https://chromium.googlesource.com/webm/webmdshow 'webmdshow' DirectShow drivers] also include a MediaFoundation extension supporting WebM streams, with VP8 and Vorbis decoders. Currently this doesn't build as-is with Visual Studio 2013 Express (it uses some desktop and MFC headers, not all of which seem to ship with Express) but it should be a useful example to work from.<br />
<br />
== Potential IE support ==<br />
<br />
If MediaFoundation extensions for Ogg can be installed system-wide on Windows 8/8.1 it may be possible to use them for <video>/<audio> content in IE (as with the WebM components, which include Vorbis support but not in Ogg container!)... Uncertain yet how feasible this is, may need whitelisting with Microsoft.<br />
<br />
See also [[JavaScript]] codecs for in-browser support on IE 10/11.</div>Brionhttps://wiki.xiph.org/index.php?title=Codecs_for_Windows_Store_apps&diff=14622Codecs for Windows Store apps2014-04-22T18:11:18Z<p>Brion: some notes on work in progress</p>
<hr />
<div>== Progress ==<br />
<br />
As of April 22, 2014:<br />
* ogg, vorbis, theora build as DLLs for Windows/RT/Phone 8.1<br />
* [[User:Brion|Brion]] doing some research on Media Foundation codec plugins<br />
** backup plan for C++/.NET apps if that fails: make a limited-functionality player as a Xaml component that can be reused<br />
** additional backup plan for HTML apps: package codec as a Windows Runtime component and reuse the player frontend from [[JavaScript|ogv.js]]<br />
<br />
== Building libraries for Windows Runtime ==<br />
<br />
Windows 8+/RT and Windows Phone 8.1 apps are sandboxed (similarly to iOS or Android) and use the sorta-COM-based Windows Runtime libraries rather than classic Win32.<br />
<br />
Work in progress adapting the win32 Visual Studio projects for the libraries ogg, vorbis, and theora libraries:<br />
<br />
* https://github.com/brion/OgvRT (wrapper test app that draws a file to screen with Direct3D)<br />
* https://github.com/brion/ogg/commits/metro - branch with build files<br />
* https://github.com/brion/vorbis/commits/metro - branch with build files<br />
* https://github.com/brion/theora/commits/metro - branch with build files<br />
* Will try Opus as well but don't have test files yet.<br />
<br />
These build for both Windows 8.1 (x86, x64, and ARM) and Windows Phone 8.1 (x86 for simulator, ARM for device) using the "Universal Windows application" support in the latest Visual Studio 2013 Express.<br />
<br />
<br />
== Media Foundation extensions ==<br />
<br />
Windows Runtime's standard media framework is the COM-based Media Foundation, introduced in Windows 7. This is different from DirectShow and uses a different model for codecs.<br />
<br />
Unfortunately, Windows Store apps can't install globally available extensions because they are sandboxed.<br />
<br />
Fortunately, Windows Store apps can install locally available extensions that work within their sandbox. There is a [http://code.msdn.microsoft.com/windowsapps/media-extensions-sample-7b466096 sample project with an MPEG1 decoder].<br />
<br />
In theory, a codec plugin done the right way can work with HTML5-based or .NET-based apps as well as C++-based ones using Windows Runtime directly.</div>Brionhttps://wiki.xiph.org/index.php?title=User:Brion&diff=14621User:Brion2014-04-22T17:58:27Z<p>Brion: </p>
<hr />
<div>https://www.mediawiki.org/wiki/User:Brion_VIBBER<br />
<br />
== OGV Theora/Vorbis player experiments ==<br />
<br />
* [[iOS]] experiments<br />
* [[JavaScript]] experiments<br />
* [[Codecs for Windows Store apps]] experiments</div>Brionhttps://wiki.xiph.org/index.php?title=Ogv.js&diff=14546Ogv.js2014-03-18T21:49:14Z<p>Brion: fix caps in title :D</p>
<hr />
<div>At least libogg, libvorbis, and libtheora can be built to JavaScript using [http://emscripten.org/ emscripten], and to Flash with [http://adobe-flash.github.io/crossbridge/ Crossbridge], with only slight modifications.<br />
<br />
'''[https://github.com/brion/ogv.js ogv.js]''' is a wrapper around these with basic JavaScript/ActionScript3 interfaces and video/audio playback wrappers semi-compatible with the native HTML5 <video>/<audio> elements.<br />
<br />
Currently the internal interfaces are very much in development. I ([[User:Brion]]) hope to get these in use for playback of audio and video content on Wikipedia and Wikimedia Commons in browsers that don't support Ogg or WebM natively, as our community has rejected the idea of making and serving out MP4 transcodes for those browsers.<br />
<br />
Generic decoding, or even encoding, should be possible in the future but needs better APIs to be sane.<br />
<br />
== Building ==<br />
<br />
The build scripts make slight changes to configure scripts which may or may not be necessary, need to dive in in more detail.<br />
<br />
There's also a slight fix needed in libtheora: https://github.com/brion/theora/commit/06a0e4acf9c35f4bd31b8788a8a573cb89262333 which is probably safe to upstream (check this!)<br />
<br />
== Demo ==<br />
<br />
Playback demo at: https://brionv.com/misc/ogv.js/demo/<br />
<br />
JavaScript video works in all current browsers, audio works if Web Audio API is there (latest Firefox, Safari, Chrome), or with a Flash audio shim for IE.<br />
<br />
Flash video/audio playback works in all current browsers and IE 9; IE 6/7/8 support is planned.<br />
<br />
== Notes ==<br />
<br />
* libtheora<br />
** Must pass --disable-asm for emscripten, as it misdetects the host/target?<br />
** needs a slight fix to a function signature to quiet an error from emscripten compiler<br />
* libvorbis<br />
** experiments with using tremor instead of libvorbis showed it produces significantly smaller JS code. Performance, however, seems to be better with libvorbis, so the switch to tremor was not pursued.<br />
* Internet Explorer<br />
** JS player works on IE 10 and 11 only, but requires a Flash shim for audio<br />
** Flash player with JS wrapper works in IE 9/10/11; working on 6/7/8 support<br />
* Safari<br />
** JS player works on OS X 10.8/Safari 6.1, OS X 10.9/Safari 7, and iOS 7<br />
** Safari JIT crash on iOS 7 64-bit seems to have been resolved by moving to the new emscripten LLVM backend<br />
** Audio must be triggered from a UI event to work on iOS (no autoplay)<br />
<br />
== Performance ==<br />
<br />
Performance seems adequate on recent-ish desktops/laptops in the latest browsers, but is woefully poor for medium-sized videos on most mobile phones and tablets.<br />
<br />
'''Internet Explorer'''<br />
* JavaScript supported only on IE 10/11; needs Flash for audio and for older browsers<br />
* JavaScript performance is not as good as other browsers, and there's a lot of GC churn visible in dev tools UI responsiveness profiling<br />
* Flash player performance is similar to IE 11's JS on MacBook Pro, but has fewer slowdowns<br />
* Flash player performs about the same as IE 11 JS on a Surface RT (Nvidia Tegra 3 CPU)<br />
* Flash player performs significantly better than IE 11 JavaScript on an old Atom-based tablet where JS can't quite handle 360p/30<br />
<br />
'''Safari/Mac OS X'''<br />
* JS and Flash performance about the same on Safari 6.1/7; JS won't work or too slow on 6 and older<br />
* Flash should work on old Safari (not yet tested)<br />
<br />
'''Safari/iOS'''<br />
* JavaScript only, no Flash<br />
* 64-bit iOS 7 devices hit decode speed targets at 360p/30fps video<br />
** tested iPhone 5s<br />
* 32-bit iOS 7 devices play audio, or video up to 160p/15fps acceptably<br />
** tested iPod Touch 5th-gen and iPad 3<br />
* iOS 6 seems to support the right APIs but doesn't play correctly, and the JIT is much too slow.<br />
* non-Safari iOS browsers always disable the JIT and are much too slow.<br />
<br />
'''Other modern browsers'''<br />
* Other modern browsers don't actually need this for playback as they support Ogg Theora/Vorbis or WebM natively. Still of interest for experimental transcoding or encoding scenarios though.<br />
* Unsurprisingly, Flash version performs about the same in any browser on the same hardware.<br />
* Of modern browsers, Firefox performs JS best (asm.js optimizations). Beware that current release Firefox 27 only uses the asm.js optimizations on the first run; this is fixed in Firefox 30 nightlies.<br />
* Chrome and Opera (the new Chromium-based one) perform pretty well too, maybe slightly better than Safari.<br />
<br />
== HTML5 integration ==<br />
<br />
Current playback demo uses a custom wrapper 'ogvjs' or 'ogvswf' element which is extended to support a subset of the [https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement HTMLMediaElement API]. With some additional selection/loader code this could be used to dynamically replace a <video> or <audio> tag.<br />
<br />
WebRTC and MediaStreams also do not appear to allow easily plugging in custom JS codecs, but audio and video frames could be sent over WebRTC data channels as ArrayBuffers.<br />
<br />
Live encoding from getUserMedia may be possible but I suspect frame rate will be awful as there's no way to grab the bits directly... and of course encoding is likely to be slow.<br />
<br />
Transcoding from a native HTML5 video element may be similarly complex.<br />
<br />
== Related projects ==<br />
<br />
* [[iOS]] codecs<br />
<br />
{{DISPLAYTITLE:ogv.js}}</div>Brionhttps://wiki.xiph.org/index.php?title=IOS&diff=14545IOS2014-03-18T21:48:56Z<p>Brion: /* Related projects */ update link to ogv.js</p>
<hr />
<div>At least libogg, libvorbis, and libtheora build and run on iOS without modification in their current incarnations.<br />
<br />
== Building ==<br />
<br />
Experimental work in progress script to build the libraries to .framework bundles that can be easily linked to in an Xcode project: https://github.com/brion/OgvKit<br />
<br />
=== Notes ===<br />
<br />
* uses existing autoconf build infrastructure; scripts wrap autogen.sh with appropriate settings, then combine the build products into framework bundles<br />
* framework bundles each contain a 'fat binary' library with armv7, armv7s, arm64 for devices and i386, x86_64 for simulator, plus a subdirectory with the C headers<br />
* libtheora<br />
** Must pass --disable-asm, as the asm code doesn't build for iOS (yet?) [https://gist.github.com/brion/7345164 errs]<br />
<br />
== Performance ==<br />
<br />
See preliminary benchmarks at https://github.com/brion/OgvKit/wiki/Device-notes<br />
<br />
== OS integration ==<br />
<br />
=== Native codecs ===<br />
<br />
<span style="color:red; font-weight:bold">NO</span><br />
<br />
iOS's native media framework is [https://developer.apple.com/av-foundation/ AVFoundation], which unfortunately is not extensible with codec or file type plugins. :(<br />
<br />
It should be possible for an Obj-C wrapper library to use the same audio and video buffer types for input/output as AVFoundation does, however, which will make it easier to hook them up together for transcoding or live encoding from the camera.<br />
<br />
=== File type handler ===<br />
<br />
<span style="color:green; font-weight:bold">YES</span><br />
<br />
It is possible for an app that plays Ogg media to register its file types with the system, allowing other apps that may download files (Safari, Mail, Dropbox, etc) to prompt to open them in the player.<br />
<br />
I have implemented an early test of this in OgvKit demo player; it works but, for instance Safari will download the entire file and '''then''' hand it off to the player, so you cannot play during the download.<br />
<br />
=== URL handler ===<br />
<br />
<span style="color:orange; font-weight:bold">YES, BUT</span><br />
<br />
It is possible for an app that plays Ogg media to register a URL handler, which would allow other apps or web content to launch the player. A remote URL could be included as a parameter on that URL, allowing apps or web content to hand off something to download-and-play progressively.<br />
<br />
Unfortunately you can't do something like register for 'http[s]://*/*.ogv' -- you can only register a scheme such as 'x-ogvkit-player'. So you can't accept arbitrary HTTP or HTTPS links; the calling app or web content needs to know your app-specific URL scheme.<br />
<br />
== Related projects ==<br />
<br />
* [[ogv.js]] JavaScript codec works in iOS Safari<br />
* [https://wiki.videolan.org/VLCKit/ MobileVLCKit] wraps many codecs including the main Xiph ones, and has a high-level player interface<br />
<br />
{{DISPLAYTITLE:iOS}}</div>Brionhttps://wiki.xiph.org/index.php?title=Talk:Ogv.js&diff=14544Talk:Ogv.js2014-03-18T21:44:16Z<p>Brion: </p>
<hr />
<div>== Flash codecs ==<br />
<br />
I'm experimenting with using [https://github.com/adobe-flash/crossbridge crossbridge] (formerly FlasCC) to build the codec libraries to ActionScript bytecode, for a possible Ogg-playing Flash fallback for older browsers. So far I can build all the libraries but am having trouble linking them. [[User:Brion|Brion]] 12:58, 22 February 2014 (PST)<br />
<br />
:Now working in the main build. --[[User:Brion|Brion]] 14:44, 18 March 2014 (PDT)</div>Brionhttps://wiki.xiph.org/index.php?title=Javascript&diff=14543Javascript2014-03-18T21:42:48Z<p>Brion: Redirected page to Ogv.js</p>
<hr />
<div>#redirect [[ogv.js]]</div>Brionhttps://wiki.xiph.org/index.php?title=Flash&diff=14542Flash2014-03-18T21:42:12Z<p>Brion: Flash decoder implemented in ogv.js project</p>
<hr />
<div>#redirect [[Ogv.js]]</div>Brionhttps://wiki.xiph.org/index.php?title=Ogv.js&diff=14541Ogv.js2014-03-18T21:41:41Z<p>Brion: updates</p>
<hr />
<div>At least libogg, libvorbis, and libtheora can be built to JavaScript using [http://emscripten.org/ emscripten], and to Flash with [http://adobe-flash.github.io/crossbridge/ Crossbridge], with only slight modifications.<br />
<br />
'''[https://github.com/brion/ogv.js ogv.js]''' is a wrapper around these with basic JavaScript/ActionScript3 interfaces and video/audio playback wrappers semi-compatible with the native HTML5 <video>/<audio> elements.<br />
<br />
Currently the internal interfaces are very much in development. I ([[User:Brion]]) hope to get these in use for playback of audio and video content on Wikipedia and Wikimedia Commons in browsers that don't support Ogg or WebM natively, as our community has rejected the idea of making and serving out MP4 transcodes for those browsers.<br />
<br />
Generic decoding, or even encoding, should be possible in the future but needs better APIs to be sane.<br />
<br />
== Building ==<br />
<br />
The build scripts make slight changes to configure scripts which may or may not be necessary, need to dive in in more detail.<br />
<br />
There's also a slight fix needed in libtheora: https://github.com/brion/theora/commit/06a0e4acf9c35f4bd31b8788a8a573cb89262333 which is probably safe to upstream (check this!)<br />
<br />
== Demo ==<br />
<br />
Playback demo at: https://brionv.com/misc/ogv.js/demo/<br />
<br />
JavaScript video works in all current browsers, audio works if Web Audio API is there (latest Firefox, Safari, Chrome), or with a Flash audio shim for IE.<br />
<br />
Flash video/audio playback works in all current browsers and IE 9; IE 6/7/8 support is planned.<br />
<br />
== Notes ==<br />
<br />
* libtheora<br />
** Must pass --disable-asm for emscripten, as it misdetects the host/target?<br />
** needs a slight fix to a function signature to quiet an error from emscripten compiler<br />
* libvorbis<br />
** experiments with using tremor instead of libvorbis showed it produces significantly smaller JS code. Performance, however, seems to be better with libvorbis, so the switch to tremor was not pursued.<br />
* Internet Explorer<br />
** JS player works on IE 10 and 11 only, but requires a Flash shim for audio<br />
** Flash player with JS wrapper works in IE 9/10/11; working on 6/7/8 support<br />
* Safari<br />
** JS player works on OS X 10.8/Safari 6.1, OS X 10.9/Safari 7, and iOS 7<br />
** Safari JIT crash on iOS 7 64-bit seems to have been resolved by moving to the new emscripten LLVM backend<br />
** Audio must be triggered from a UI event to work on iOS (no autoplay)<br />
<br />
== Performance ==<br />
<br />
Performance seems adequate on recent-ish desktops/laptops in the latest browsers, but is woefully poor for medium-sized videos on most mobile phones and tablets.<br />
<br />
'''Internet Explorer'''<br />
* JavaScript supported only on IE 10/11; needs Flash for audio and for older browsers<br />
* JavaScript performance is not as good as other browsers, and there's a lot of GC churn visible in dev tools UI responsiveness profiling<br />
* Flash player performance is similar to IE 11's JS on MacBook Pro, but has fewer slowdowns<br />
* Flash player performs about the same as IE 11 JS on a Surface RT (Nvidia Tegra 3 CPU)<br />
* Flash player performs significantly better than IE 11 JavaScript on an old Atom-based tablet where JS can't quite handle 360p/30<br />
<br />
'''Safari/Mac OS X'''<br />
* JS and Flash performance about the same on Safari 6.1/7; JS won't work or too slow on 6 and older<br />
* Flash should work on old Safari (not yet tested)<br />
<br />
'''Safari/iOS'''<br />
* JavaScript only, no Flash<br />
* 64-bit iOS 7 devices hit decode speed targets at 360p/30fps video<br />
** tested iPhone 5s<br />
* 32-bit iOS 7 devices play audio, or video up to 160p/15fps acceptably<br />
** tested iPod Touch 5th-gen and iPad 3<br />
* iOS 6 seems to support the right APIs but doesn't play correctly, and the JIT is much too slow.<br />
* non-Safari iOS browsers always disable the JIT and are much too slow.<br />
<br />
'''Other modern browsers'''<br />
* Other modern browsers don't actually need this for playback as they support Ogg Theora/Vorbis or WebM natively. Still of interest for experimental transcoding or encoding scenarios though.<br />
* Unsurprisingly, Flash version performs about the same in any browser on the same hardware.<br />
* Of modern browsers, Firefox performs JS best (asm.js optimizations). Beware that current release Firefox 27 only uses the asm.js optimizations on the first run; this is fixed in Firefox 30 nightlies.<br />
* Chrome and Opera (the new Chromium-based one) perform pretty well too, maybe slightly better than Safari.<br />
<br />
== HTML5 integration ==<br />
<br />
Current playback demo uses a custom wrapper 'ogvjs' or 'ogvswf' element which is extended to support a subset of the [https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement HTMLMediaElement API]. With some additional selection/loader code this could be used to dynamically replace a <video> or <audio> tag.<br />
<br />
WebRTC and MediaStreams also do not appear to allow easily plugging in custom JS codecs, but audio and video frames could be sent over WebRTC data channels as ArrayBuffers.<br />
<br />
Live encoding from getUserMedia may be possible but I suspect frame rate will be awful as there's no way to grab the bits directly... and of course encoding is likely to be slow.<br />
<br />
Transcoding from a native HTML5 video element may be similarly complex.<br />
<br />
== Related projects ==<br />
<br />
* [[iOS]] codecs</div>Brionhttps://wiki.xiph.org/index.php?title=Talk:JavaScript&diff=14540Talk:JavaScript2014-03-18T21:11:27Z<p>Brion: moved Talk:JavaScript to Talk:Ogv.js: Merging with Flash notes</p>
<hr />
<div>#REDIRECT [[Talk:Ogv.js]]</div>Brionhttps://wiki.xiph.org/index.php?title=Talk:Ogv.js&diff=14539Talk:Ogv.js2014-03-18T21:11:27Z<p>Brion: moved Talk:JavaScript to Talk:Ogv.js: Merging with Flash notes</p>
<hr />
<div>== Flash codecs ==<br />
<br />
I'm experimenting with using [https://github.com/adobe-flash/crossbridge crossbridge] (formerly FlasCC) to build the codec libraries to ActionScript bytecode, for a possible Ogg-playing Flash fallback for older browsers. So far I can build all the libraries but am having trouble linking them. [[User:Brion|Brion]] 12:58, 22 February 2014 (PST)</div>Brionhttps://wiki.xiph.org/index.php?title=JavaScript&diff=14538JavaScript2014-03-18T21:11:26Z<p>Brion: moved JavaScript to Ogv.js: Merging with Flash notes</p>
<hr />
<div>#REDIRECT [[Ogv.js]]</div>Brionhttps://wiki.xiph.org/index.php?title=Ogv.js&diff=14537Ogv.js2014-03-18T21:11:26Z<p>Brion: moved JavaScript to Ogv.js: Merging with Flash notes</p>
<hr />
<div>At least libogg, libvorbis, and libtheora can be built to JavaScript using [http://emscripten.org/ emscripten] with only slight modifications.<br />
<br />
== Building ==<br />
<br />
Experimental work in progress script to build these: https://github.com/brion/ogv.js based on previous work for AudioCogs integration: https://github.com/devongovett/ogg.js<br />
<br />
The build scripts make slight changes to configure scripts which may or may not be necessary, need to dive in in more detail.<br />
<br />
There's also a slight fix needed in libtheora: https://github.com/brion/theora/commit/06a0e4acf9c35f4bd31b8788a8a573cb89262333 which is probably safe to upstream (check this!)<br />
<br />
== Demo ==<br />
<br />
Playback demo at: https://brionv.com/misc/ogv.js/demo/<br />
<br />
Video works in all current browsers, audio works if Web Audio API is there (latest Firefox, Safari, Chrome), or with a Flash audio shim for IE.<br />
<br />
== Notes ==<br />
<br />
* libtheora<br />
** Must pass --disable-asm<br />
** needs a slight fix to a function signature to quiet an error from emscripten compiler<br />
* libvorbis<br />
** experiments with using tremor instead of libvorbis showed it produces significantly smaller JS code. Performance, however, seems to be better with libvorbis, so the switch to tremor was not pursued.<br />
* Internet Explorer<br />
** works on IE 10 and 11 only<br />
** Flash audio shim works pretty well<br />
* Safari<br />
** works on OS X 10.8/Safari 6.1, OS X 10.9/Safari 7, and iOS 7<br />
** Safari JIT crash seems to have been resolved by moving to the new emscripten LLVM backend<br />
** Audio must be triggered from a UI event to work on iOS (no autoplay)<br />
<br />
Performance seems adequate on recent-ish desktops/laptops in the latest browsers, but is woefully poor on most mobile phones and tablets. The 64-bit iPhone 5s more or less hits decode speed targets at ~360p video; other iOS devices struggle to play 160p.<br />
<br />
== HTML5 integration ==<br />
<br />
Current playback demo simply outputs to a &lt;canvas> element, doing YUV to RGB conversion in software.<br />
<br />
It's not clear to me that playback could be integrated into an actual &lt;audio> or &lt;video> element, but similar JavaScript interfaces could be wrapped around a &lt;canvas>.<br />
<br />
WebRTC also does not appear to allow easily plugging in custom JS codecs, but audio and video frames could be sent over the data channels as ArrayBuffers.<br />
<br />
Live encoding may be possible connected to getUserMedia, I have not attempted this yet.<br />
<br />
== Related projects ==<br />
<br />
* [[iOS]] codecs (todo)<br />
* Flash codecs (see [[Talk:JavaScript#Flash codecs|Talk page]])</div>Brionhttps://wiki.xiph.org/index.php?title=Ogv.js&diff=14507Ogv.js2014-03-07T00:17:15Z<p>Brion: slight updates</p>
<hr />
<div>At least libogg, libvorbis, and libtheora can be built to JavaScript using [http://emscripten.org/ emscripten] with only slight modifications.<br />
<br />
== Building ==<br />
<br />
Experimental work in progress script to build these: https://github.com/brion/ogv.js based on previous work for AudioCogs integration: https://github.com/devongovett/ogg.js<br />
<br />
The build scripts make slight changes to configure scripts which may or may not be necessary, need to dive in in more detail.<br />
<br />
There's also a slight fix needed in libtheora: https://github.com/brion/theora/commit/06a0e4acf9c35f4bd31b8788a8a573cb89262333 which is probably safe to upstream (check this!)<br />
<br />
== Demo ==<br />
<br />
Playback demo at: https://brionv.com/misc/ogv.js/demo/<br />
<br />
Video works in all current browsers, audio works if Web Audio API is there (latest Firefox, Safari, Chrome), or with a Flash audio shim for IE.<br />
<br />
== Notes ==<br />
<br />
* libtheora<br />
** Must pass --disable-asm<br />
** needs a slight fix to a function signature to quiet an error from emscripten compiler<br />
* libvorbis<br />
** currently using tremor instead of libvorbis; not sure if it decodes faster but it produces much smaller JS code<br />
* Internet Explorer<br />
** works on IE 10 and 11 only<br />
** Flash audio shim works pretty well<br />
* Safari<br />
** works on OS X 10.8/Safari 6.1, OS X 10.9/Safari 7, and iOS 7<br />
** Safari JIT crash seems to have been resolved by moving to the new emscripten LLVM backend<br />
** Audio must be triggered from a UI event to work on iOS (no autoplay)<br />
<br />
Performance seems adequate on recentish desktops/laptops in the latest browsers, but is woefully poor on most mobile phones and tablets. The 64-bit iPhone 5s more or less hits decode speed targets at ~360p video; other iOS devices struggle to play 160p.<br />
<br />
== HTML5 integration ==<br />
<br />
Current playback demo simply outputs to a &lt;canvas> element, doing YUV to RGB conversion in software.<br />
<br />
It's not clear to me that playback could be integrated into an actual &lt;audio> or &lt;video> element, but similar JavaScript interfaces could be wrapped around a &lt;canvas>.<br />
<br />
WebRTC also does not appear to allow easily plugging in custom JS codecs, but audio and video frames could be sent over the data channels as ArrayBuffers.<br />
<br />
Live encoding may be possible connected to getUserMedia, I have not attempted this yet.<br />
<br />
== Related projects ==<br />
<br />
* [[iOS]] codecs (todo)<br />
* Flash codecs (see [[Talk:JavaScript#Flash codecs|Talk page]])</div>Brionhttps://wiki.xiph.org/index.php?title=Ogv.js&diff=14478Ogv.js2014-02-22T12:58:29Z<p>Brion: /* Related projects */ Flash</p>
<hr />
<div>At least libogg, libvorbis, and libtheora can be built to JavaScript using [http://emscripten.org/ emscripten] with only slight modifications.<br />
<br />
== Building ==<br />
<br />
Experimental work in progress script to build these: https://github.com/brion/ogv.js based on previous work for AudioCogs integration: https://github.com/devongovett/ogg.js<br />
<br />
The build scripts make slight changes to configure scripts which may or may not be necessary, need to dive in in more detail.<br />
<br />
There's also a slight fix needed in libtheora: https://github.com/brion/theora/commit/06a0e4acf9c35f4bd31b8788a8a573cb89262333 which is probably safe to upstream (check this!)<br />
<br />
== Demo ==<br />
<br />
Playback demo at: https://brionv.com/misc/ogv.js/demo/<br />
<br />
Video works in all current browsers, audio works if Web Audio API is there (latest Firefox, Safari, Chrome), or with a Flash audio shim for IE.<br />
<br />
== Notes ==<br />
<br />
* libtheora<br />
** Must pass --disable-asm<br />
** needs a slight fix to a function signature to quiet an error from emscripten compiler<br />
* Internet Explorer<br />
** works on IE 10 and 11 only<br />
** Flash audio shim works pretty well but needs optimization on slow machines<br />
* Safari<br />
** Safari JIT crash seems to have been resolved by moving to the new emscripten LLVM backend<br />
** Audio must be triggered from a UI event to work on iOS (no autoplay)<br />
<br />
Performance seems adequate on recentish desktops/laptops in the latest browsers, but is woefully poor on mobile phones and tablets. The 64-bit iPhone 5s barely hits decode speed targets at ~360p video.<br />
<br />
== HTML5 integration ==<br />
<br />
Current playback demo simply outputs to a &lt;canvas> element, doing YUV to RGB conversion in software.<br />
<br />
It's not clear to me that playback could be integrated into an actual &lt;audio> or &lt;video> element, but similar JavaScript interfaces could be wrapped around a &lt;canvas>.<br />
<br />
WebRTC also does not appear to allow easily plugging in custom JS codecs, but audio and video frames could be sent over the data channels as ArrayBuffers.<br />
<br />
Live encoding may be possible connected to getUserMedia, I have not attempted this yet.<br />
<br />
== Related projects ==<br />
<br />
* [[iOS]] codecs (todo)<br />
* Flash codecs<br />
** I'm also experimenting with using [https://github.com/adobe-flash/crossbridge crossbridge] (formerly FlasCC) to build the codec libraries to ActionScript bytecode, for a possible Ogg-playing Flash fallback for older browsers. So far I can build all the libraries but am having trouble linking them. (February 2014)</div>Brionhttps://wiki.xiph.org/index.php?title=Ogv.js&diff=14477Ogv.js2014-02-22T10:48:35Z<p>Brion: a few updates</p>
<hr />
<div>At least libogg, libvorbis, and libtheora can be built to JavaScript using [http://emscripten.org/ emscripten] with only slight modifications.<br />
<br />
== Building ==<br />
<br />
Experimental work in progress script to build these: https://github.com/brion/ogv.js based on previous work for AudioCogs integration: https://github.com/devongovett/ogg.js<br />
<br />
The build scripts make slight changes to configure scripts which may or may not be necessary, need to dive in in more detail.<br />
<br />
There's also a slight fix needed in libtheora: https://github.com/brion/theora/commit/06a0e4acf9c35f4bd31b8788a8a573cb89262333 which is probably safe to upstream (check this!)<br />
<br />
== Demo ==<br />
<br />
Playback demo at: https://brionv.com/misc/ogv.js/demo/<br />
<br />
Video works in all current browsers, audio works if Web Audio API is there (latest Firefox, Safari, Chrome), or with a Flash audio shim for IE.<br />
<br />
== Notes ==<br />
<br />
* libtheora<br />
** Must pass --disable-asm<br />
** needs a slight fix to a function signature to quiet an error from emscripten compiler<br />
* Internet Explorer<br />
** works on IE 10 and 11 only<br />
** Flash audio shim works pretty well but needs optimization on slow machines<br />
* Safari<br />
** Safari JIT crash seems to have been resolved by moving to the new emscripten LLVM backend<br />
** Audio must be triggered from a UI event to work on iOS (no autoplay)<br />
<br />
Performance seems adequate on recentish desktops/laptops in the latest browsers, but is woefully poor on mobile phones and tablets. The 64-bit iPhone 5s barely hits decode speed targets at ~360p video.<br />
<br />
== HTML5 integration ==<br />
<br />
Current playback demo simply outputs to a &lt;canvas> element, doing YUV to RGB conversion in software.<br />
<br />
It's not clear to me that playback could be integrated into an actual &lt;audio> or &lt;video> element, but similar JavaScript interfaces could be wrapped around a &lt;canvas>.<br />
<br />
WebRTC also does not appear to allow easily plugging in custom JS codecs, but audio and video frames could be sent over the data channels as ArrayBuffers.<br />
<br />
Live encoding may be possible connected to getUserMedia, I have not attempted this yet.<br />
<br />
== Related projects ==<br />
<br />
* [[iOS]] codecs (todo)</div>Brionhttps://wiki.xiph.org/index.php?title=IOS&diff=14447IOS2014-02-09T21:39:10Z<p>Brion: /* Related projects */ MobileVLCKit</p>
<hr />
<div>At least libogg, libvorbis, and libtheora build and run on iOS without modification in their current incarnations.<br />
<br />
== Building ==<br />
<br />
Experimental work in progress script to build the libraries to .framework bundles that can be easily linked to in an Xcode project: https://github.com/brion/OgvKit<br />
<br />
=== Notes ===<br />
<br />
* uses existing autoconf build infrastructure; scripts wrap autogen.sh with appropriate settings, then combine the build products into framework bundles<br />
* framework bundles each contain a 'fat binary' library with armv7, armv7s, arm64 for devices and i386, x86_64 for simulator, plus a subdirectory with the C headers<br />
* libtheora<br />
** Must pass --disable-asm, as the asm code doesn't build for iOS (yet?) [https://gist.github.com/brion/7345164 errs]<br />
<br />
== Performance ==<br />
<br />
See preliminary benchmarks at https://github.com/brion/OgvKit/wiki/Device-notes<br />
<br />
== OS integration ==<br />
<br />
=== Native codecs ===<br />
<br />
<span style="color:red; font-weight:bold">NO</span><br />
<br />
iOS's native media framework is [https://developer.apple.com/av-foundation/ AVFoundation], which unfortunately is not extensible with codec or file type plugins. :(<br />
<br />
It should be possible for an Obj-C wrapper library to use the same audio and video buffer types for input/output as AVFoundation does, however, which will make it easier to hook them up together for transcoding or live encoding from the camera.<br />
<br />
=== File type handler ===<br />
<br />
<span style="color:green; font-weight:bold">YES</span><br />
<br />
It is possible for an app that plays Ogg media to register its file types with the system, allowing other apps that may download files (Safari, Mail, Dropbox, etc) to prompt to open them in the player.<br />
<br />
I have implemented an early test of this in OgvKit demo player; it works but, for instance Safari will download the entire file and '''then''' hand it off to the player, so you cannot play during the download.<br />
<br />
=== URL handler ===<br />
<br />
<span style="color:orange; font-weight:bold">YES, BUT</span><br />
<br />
It is possible for an app that plays Ogg media to register a URL handler, which would allow other apps or web content to launch the player. A remote URL could be included as a parameter on that URL, allowing apps or web content to hand off something to download-and-play progressively.<br />
<br />
Unfortunately you can't do something like register for 'http[s]://*/*.ogv' -- you can only register a scheme such as 'x-ogvkit-player'. So you can't accept arbitrary HTTP or HTTPS links; the calling app or web content needs to know your app-specific URL scheme.<br />
<br />
== Related projects ==<br />
<br />
* [[JavaScript]] codecs<br />
* [https://wiki.videolan.org/VLCKit/ MobileVLCKit] wraps many codecs including the main Xiph ones, and has a high-level player interface<br />
<br />
{{DISPLAYTITLE:iOS}}</div>Brionhttps://wiki.xiph.org/index.php?title=IOS&diff=14316IOS2013-11-09T13:09:45Z<p>Brion: /* Notes */</p>
<hr />
<div>At least libogg, libvorbis, and libtheora build and run on iOS without modification in their current incarnations.<br />
<br />
== Building ==<br />
<br />
Experimental work in progress script to build the libraries to .framework bundles that can be easily linked to in an Xcode project: https://github.com/brion/OgvKit<br />
<br />
=== Notes ===<br />
<br />
* uses existing autoconf build infrastructure; scripts wrap autogen.sh with appropriate settings, then combine the build products into framework bundles<br />
* framework bundles each contain a 'fat binary' library with armv7, armv7s, arm64 for devices and i386, x86_64 for simulator, plus a subdirectory with the C headers<br />
* libtheora<br />
** Must pass --disable-asm, as the asm code doesn't build for iOS (yet?) [https://gist.github.com/brion/7345164 errs]<br />
<br />
== Performance ==<br />
<br />
See preliminary benchmarks at https://github.com/brion/OgvKit/wiki/Device-notes<br />
<br />
== OS integration ==<br />
<br />
=== Native codecs ===<br />
<br />
<span style="color:red; font-weight:bold">NO</span><br />
<br />
iOS's native media framework is [https://developer.apple.com/av-foundation/ AVFoundation], which unfortunately is not extensible with codec or file type plugins. :(<br />
<br />
It should be possible for an Obj-C wrapper library to use the same audio and video buffer types for input/output as AVFoundation does, however, which will make it easier to hook them up together for transcoding or live encoding from the camera.<br />
<br />
=== File type handler ===<br />
<br />
<span style="color:green; font-weight:bold">YES</span><br />
<br />
It is possible for an app that plays Ogg media to register its file types with the system, allowing other apps that may download files (Safari, Mail, Dropbox, etc) to prompt to open them in the player.<br />
<br />
I have implemented an early test of this in OgvKit demo player; it works but, for instance Safari will download the entire file and '''then''' hand it off to the player, so you cannot play during the download.<br />
<br />
=== URL handler ===<br />
<br />
<span style="color:orange; font-weight:bold">YES, BUT</span><br />
<br />
It is possible for an app that plays Ogg media to register a URL handler, which would allow other apps or web content to launch the player. A remote URL could be included as a parameter on that URL, allowing apps or web content to hand off something to download-and-play progressively.<br />
<br />
Unfortunately you can't do something like register for 'http[s]://*/*.ogv' -- you can only register a scheme such as 'x-ogvkit-player'. So you can't accept arbitrary HTTP or HTTPS links; the calling app or web content needs to know your app-specific URL scheme.<br />
<br />
== Related projects ==<br />
<br />
* [[JavaScript]] codecs<br />
<br />
{{DISPLAYTITLE:iOS}}</div>Brionhttps://wiki.xiph.org/index.php?title=IOS&diff=14315IOS2013-11-09T13:09:21Z<p>Brion: </p>
<hr />
<div>At least libogg, libvorbis, and libtheora build and run on iOS without modification in their current incarnations.<br />
<br />
== Building ==<br />
<br />
Experimental work in progress script to build the libraries to .framework bundles that can be easily linked to in an Xcode project: https://github.com/brion/OgvKit<br />
<br />
=== Notes ===<br />
<br />
* uses existing autoconf build infrastructure; scripts wrap autogen.sh with appropriate settings, then combine into framework bundles<br />
* framework bundles each contain a 'fat binary' library with armv7, armv7s, arm64 for devices and i386, x86_64 for simulator, plus a subdirectory with the C headers<br />
* libtheora<br />
** Must pass --disable-asm, as the asm code doesn't build for iOS (yet?) [https://gist.github.com/brion/7345164 errs]<br />
<br />
== Performance ==<br />
<br />
See preliminary benchmarks at https://github.com/brion/OgvKit/wiki/Device-notes<br />
<br />
== OS integration ==<br />
<br />
=== Native codecs ===<br />
<br />
<span style="color:red; font-weight:bold">NO</span><br />
<br />
iOS's native media framework is [https://developer.apple.com/av-foundation/ AVFoundation], which unfortunately is not extensible with codec or file type plugins. :(<br />
<br />
It should be possible for an Obj-C wrapper library to use the same audio and video buffer types for input/output as AVFoundation does, however, which will make it easier to hook them up together for transcoding or live encoding from the camera.<br />
<br />
=== File type handler ===<br />
<br />
<span style="color:green; font-weight:bold">YES</span><br />
<br />
It is possible for an app that plays Ogg media to register its file types with the system, allowing other apps that may download files (Safari, Mail, Dropbox, etc) to prompt to open them in the player.<br />
<br />
I have implemented an early test of this in OgvKit demo player; it works but, for instance Safari will download the entire file and '''then''' hand it off to the player, so you cannot play during the download.<br />
<br />
=== URL handler ===<br />
<br />
<span style="color:orange; font-weight:bold">YES, BUT</span><br />
<br />
It is possible for an app that plays Ogg media to register a URL handler, which would allow other apps or web content to launch the player. A remote URL could be included as a parameter on that URL, allowing apps or web content to hand off something to download-and-play progressively.<br />
<br />
Unfortunately you can't do something like register for 'http[s]://*/*.ogv' -- you can only register a scheme such as 'x-ogvkit-player'. So you can't accept arbitrary HTTP or HTTPS links; the calling app or web content needs to know your app-specific URL scheme.<br />
<br />
== Related projects ==<br />
<br />
* [[JavaScript]] codecs<br />
<br />
{{DISPLAYTITLE:iOS}}</div>Brionhttps://wiki.xiph.org/index.php?title=IOS&diff=14314IOS2013-11-09T13:04:02Z<p>Brion: /* Notes */</p>
<hr />
<div>At least libogg, libvorbis, and libtheora build and run on iOS without modification in their current incarnations.<br />
<br />
== Building ==<br />
<br />
Experimental work in progress script to build the libraries to .framework bundles that can be easily linked to in an Xcode project: https://github.com/brion/OgvKit<br />
<br />
== Performance ==<br />
<br />
See preliminary benchmarks at https://github.com/brion/OgvKit/wiki/Device-notes<br />
<br />
== Notes ==<br />
<br />
* libtheora<br />
** Must pass --disable-asm, as the asm code doesn't build for iOS (yet?) [https://gist.github.com/brion/7345164 errs]<br />
<br />
== OS integration ==<br />
<br />
=== Native codecs ===<br />
<br />
<span style="color:red; font-weight:bold">NO</span><br />
<br />
iOS's native media framework is [https://developer.apple.com/av-foundation/ AVFoundation], which unfortunately is not extensible with codec or file type plugins. :(<br />
<br />
It should be possible for an Obj-C wrapper library to use the same audio and video buffer types for input/output as AVFoundation does, however, which will make it easier to hook them up together for transcoding or live encoding from the camera.<br />
<br />
=== File type handler ===<br />
<br />
<span style="color:green; font-weight:bold">YES</span><br />
<br />
It is possible for an app that plays Ogg media to register its file types with the system, allowing other apps that may download files (Safari, Mail, Dropbox, etc) to prompt to open them in the player.<br />
<br />
I have implemented an early test of this in OgvKit demo player; it works but, for instance Safari will download the entire file and '''then''' hand it off to the player, so you cannot play during the download.<br />
<br />
=== URL handler ===<br />
<br />
<span style="color:orange; font-weight:bold">YES, BUT</span><br />
<br />
It is possible for an app that plays Ogg media to register a URL handler, which would allow other apps or web content to launch the player. A remote URL could be included as a parameter on that URL, allowing apps or web content to hand off something to download-and-play progressively.<br />
<br />
Unfortunately you can't do something like register for 'http[s]://*/*.ogv' -- you can only register a scheme such as 'x-ogvkit-player'. So you can't accept arbitrary HTTP or HTTPS links; the calling app or web content needs to know your app-specific URL scheme.<br />
<br />
== Related projects ==<br />
<br />
* [[JavaScript]] codecs<br />
<br />
{{DISPLAYTITLE:iOS}}</div>Brionhttps://wiki.xiph.org/index.php?title=User:Brion&diff=14313User:Brion2013-11-09T13:01:51Z<p>Brion: </p>
<hr />
<div>https://www.mediawiki.org/wiki/User:Brion_VIBBER<br />
<br />
== OGV Theora/Vorbis player experiments ==<br />
<br />
* [[iOS]] experiments<br />
* [[JavaScript]] experiments</div>Brionhttps://wiki.xiph.org/index.php?title=User:Brion&diff=14312User:Brion2013-11-09T13:01:43Z<p>Brion: </p>
<hr />
<div>https://www.mediawiki.org/wiki/User:Brion_VIBBER<br />
<br />
== OGV Theora/Vorbis player experiments ===<br />
<br />
* [[iOS]] experiments<br />
* [[JavaScript]] experiments</div>Brionhttps://wiki.xiph.org/index.php?title=User:Brion&diff=14311User:Brion2013-11-09T12:48:32Z<p>Brion: Created page with "https://www.mediawiki.org/wiki/User:Brion_VIBBER * iOS experiments * JavaScript experiments"</p>
<hr />
<div>https://www.mediawiki.org/wiki/User:Brion_VIBBER<br />
<br />
* [[iOS]] experiments<br />
* [[JavaScript]] experiments</div>Brionhttps://wiki.xiph.org/index.php?title=IOS&diff=14310IOS2013-11-09T12:45:33Z<p>Brion: /* OS integration */</p>
<hr />
<div>At least libogg, libvorbis, and libtheora build and run on iOS without modification in their current incarnations.<br />
<br />
== Building ==<br />
<br />
Experimental work in progress script to build the libraries to .framework bundles that can be easily linked to in an Xcode project: https://github.com/brion/OgvKit<br />
<br />
== Notes ==<br />
<br />
* libtheora<br />
** Must pass --disable-asm, as the asm code doesn't build for iOS (yet?) [https://gist.github.com/brion/7345164 errs]<br />
<br />
== OS integration ==<br />
<br />
=== Native codecs ===<br />
<br />
<span style="color:red; font-weight:bold">NO</span><br />
<br />
iOS's native media framework is [https://developer.apple.com/av-foundation/ AVFoundation], which unfortunately is not extensible with codec or file type plugins. :(<br />
<br />
It should be possible for an Obj-C wrapper library to use the same audio and video buffer types for input/output as AVFoundation does, however, which will make it easier to hook them up together for transcoding or live encoding from the camera.<br />
<br />
=== File type handler ===<br />
<br />
<span style="color:green; font-weight:bold">YES</span><br />
<br />
It is possible for an app that plays Ogg media to register its file types with the system, allowing other apps that may download files (Safari, Mail, Dropbox, etc) to prompt to open them in the player.<br />
<br />
I have implemented an early test of this in OgvKit demo player; it works but, for instance Safari will download the entire file and '''then''' hand it off to the player, so you cannot play during the download.<br />
<br />
=== URL handler ===<br />
<br />
<span style="color:orange; font-weight:bold">YES, BUT</span><br />
<br />
It is possible for an app that plays Ogg media to register a URL handler, which would allow other apps or web content to launch the player. A remote URL could be included as a parameter on that URL, allowing apps or web content to hand off something to download-and-play progressively.<br />
<br />
Unfortunately you can't do something like register for 'http[s]://*/*.ogv' -- you can only register a scheme such as 'x-ogvkit-player'. So you can't accept arbitrary HTTP or HTTPS links; the calling app or web content needs to know your app-specific URL scheme.<br />
<br />
== Related projects ==<br />
<br />
* [[JavaScript]] codecs<br />
<br />
{{DISPLAYTITLE:iOS}}</div>Brionhttps://wiki.xiph.org/index.php?title=TheoraSoftwarePlayers&diff=14304TheoraSoftwarePlayers2013-11-08T01:02:09Z<p>Brion: /* iOS */ found at least one player in store</p>
<hr />
<div>== Multi-platform ==<br />
* [http://www.videolan.org/vlc/ VLC Media Player]: Open Source media player and streaming server that support virtually every video and audio format<br />
* [https://helixcommunity.org/projects/xiph/ Xiph Plugins for Real Player/Producer]<br />
* Quicktime components for [http://qtcomponents.sourceforge.net/ Quicktime 6] and [http://www.xiph.org/quicktime/ Quicktime 7] – QuickTime and Macintosh OS X plug-ins<br />
* [http://www.mplayerhq.hu/ Mplayer]: Open Source video player (some limitations). [http://smplayer.sourceforge.net/ SMPlayer] is a front-end which provides mplayer and libraries for different platforms.<br />
* [http://www.coreplayer.com/ CorePlayer]: A multimedia platform for mobile and desktop computer systems<br />
* [http://www.flumotion.net/cortado/ Cortado]: Java applet playing ogg/theora/vorbis<br />
* [http://www.mozilla.com Mozilla Firefox]: Open Source web browser, Theora support since version 3.5 (was 3.1 beta)<br />
* [http://www.opera.com/ Opera] Web browser (closed source freeware), Theora support in experimental builds from 2007-Nov (very buggy), 10.5x versions (official support, but still had problems), and version 10.60 (2010-Jul-01) and newer (should be mature, also supports WebM/VP8 video)<br />
* [http://www.google.com/chrome Google Chrome]: Web browser (supports Theora, WebM/VP8 and H264)<br />
* Safari 3.1 and later: if the [http://xiph.org/quicktime/ XiphQT] components are installed<br />
<br />
== Windows ==<br />
* [http://www.xiph.org/dshow/ DirectShow filter]: Adds support for Ogg Vorbis, Ogg Speex, Ogg Theora, Ogg FLAC, and native FLAC to any DirectShow-compliant player such as Windows Media Player and BSPlayer<br />
* [http://www.visonair.tv/player.php Visonair.tv Player]: Freeware player - Plays Ogg Vorbis and Theora streams<br />
* [http://www.acquiredigital.com/ Acquire Digital Signage and Kiosk Software]: Plays back all ogg media using the included DirectShow filters.<br />
<br />
== Linux/BSD ==<br />
* [http://player.helixcommunity.org Helix Player] - an open source media player for Linux, Solaris, and Symbian based on the [http://helix-client.helixcommunity.org Helix DNA Client] media engine.<br />
* [http://www.gnomefiles.org/app.php?soft_id=64 Totem] - a Free Software (GPL-licensed) media player based on [http://xinehq.de xine] or [http://gstreamer.freedesktop.org GStreamer] media engine.<br />
* [http://www.xine-project.org/home Xine]: a Free Software (GPL-licensed) media player, complete with its own media engine and a long list of supported formats.<br />
<br />
== Mac OS X ==<br />
<br />
* [http://www.xine-project.org/home Xine]: a Free Software (GPL-licensed) media player, complete with its own media engine and a long list of supported formats. Supports Darwin/MacOS X (ppc) via the fink project.<br />
* [http://mac.eltima.com/ogg-player.html Elmedia Player] – media player for Mac, which supports playback of lots of video formats (OGG Theora, WebM (???), proprietary formats), closed source freeware + PRO version<br />
<br />
== iOS ==<br />
<br />
* [https://itunes.apple.com/us/app/yxplayer/id373751560?mt=8 yxplayer]: for-pay video player, which can play Vorbis audio and Theora video. In app store, no jailbreak required.<br />
<br />
== See also == <br />
{{Template:Theora}}<br />
<br />
[[Category:Theora]]</div>Brionhttps://wiki.xiph.org/index.php?title=Vorbis_Software_Players&diff=14303Vorbis Software Players2013-11-08T01:00:37Z<p>Brion: /* iPhone */ +link iOS</p>
<hr />
<div>Here is a list of media players for various operating systems that comes with “out-of-the-box” support for Ogg [[Vorbis]].<br />
<br />
== windows ==<br />
<br />
=== free software ===<br />
<br />
* [http://www.getsongbird.com/ Songbird] : player from the great guys at Mozilla, etc. Plays all major formats (including ogg).<br />
* [http://musik.berlios.de/ wxmusik]: player with support for Ogg Vorbis, as well as MP3, WAV, AIFF and WMA. makes use of an sql based media libary for quick searching<br />
* [http://coolplayer.sourceforge.net/ coolplayer]: very small player<br />
* [http://mediaportal.sourceforge.net/ mediaportal]: home theater software<br />
* [http://mac.sourceforge.net/ mpeg audio collection]: organizer for music collection<br />
* [http://www.mediamonkey.com/ mediamonkey]: easy-to-use player/tagger/media library with built-in ripper & burner which can even encode & transcode to Ogg Vorbis<br />
* [http://jajuk.sourceforge.net/ Jajuk]: Jajuk is software that organizes and plays music. It is a full-featured application geared towards advanced users with large or scattered music collections. Using multiple perspectives, the software is designed to be intuitive and provide different ways to perform the same task.<br />
<br />
=== proprietary software ===<br />
<br />
* [http://www.winamp.com/ winamp]: very popular player supporting many formats<br />
* [http://www.foobar2000.org/ foobar2000]: freeware player with complex options and support for Ogg Vorbis, MP3, WAV and more<br />
* [http://www.quinnware.com/ quintessential player]: freeware player with support for Ogg Vorbis, MP3, WAV and audio cds which also includes cd ripping<br />
* [http://www.dbpoweramp.com/ dbpoweramp audio player]: freeware player with Ogg Vorbis and FLAC support<br />
* [http://www.dbpoweramp.com/ dbpoweramp music converter]: freeware audio conversion software with Ogg Vorbis and FLAC support and also includes cd ripping<br />
* [http://www.un4seen.com/xmplay.html xmplay]<br />
* [http://www.ashampoo.com/ ashampoo media player]: audio and video player<br />
* [http://www.deliplayer.com/ deliplayer]<br />
* [http://www.musicex.com/mediajukebox/ mediajukebox]: audio management<br />
* [http://www.muzikbrowzer.com/ muzikbrowser]: player designed for display on a tv screen<br />
* [http://music.predixis.com/ musicmagic mixer]: player with playlist management<br />
* [http://www.zinf.org/ zinf]: zinf is not freeamp, freeware player<br />
* [http://www.vuplayer.com/vuplayer.php vuplayer]: multi-format freeware audio player with very easy interface<br />
* [http://www.xiph.org/dshow/ directshow filter]: adds support for Ogg Vorbis, Ogg Speex, Ogg Theora, Ogg FLAC, and native FLAC to any directshow-compliant player such as windows media player and bsplayer<br />
* [http://www.musikcube.com/ musikcube]: freeware player<br />
* [http://ksp.kalliope-soft.eu/ ksp sound player]: freeware player with lyrics, media library, suggestion searching and automatic playlist generation<br />
* [http://www.visonair.tv/player.php visonair.tv player]: freeware player ─ plays Ogg Vorbis and Theora streams<br />
* [http://www.jetaudio.com jetaudio basic]: freeware player with Ogg Vorbis and FLAC support<br />
* [http://www.huelix.com/audiorecorder/ huelix audio recorder]: audio recording software with support for Ogg Vorbis, WMA, MP3, and WAV formats<br />
* [http://www.huelix.com/audio-converter/ huelix audio converter]: audio conversion software to convert among Ogg Vorbis, WMA, MP3, and WAV formats<br />
* [http://c6.community.virgilio.it/ c6 messenger]: italian instant messenger with audio/video call based on speex/theora (http://www.icona.net)<br />
* [http://www.coreplayer.com/ CorePlayer Pro]: By the makers of TCPMP. Costs $19.95US.<br />
* [http://www.acquiredigital.com/ Acquire Digital Signage and Kiosk Software]: Plays back all ogg media using the included DirectShow filters.<br />
<br />
== Multi-platform ==<br />
<br />
=== free software ===<br />
<br />
* [http://joggplayer.webarts.bc.ca jOggPlayer]: Open Source Java GUI Vorbis Player. It features the usual basics needed to enjoy your files and internet streams.<br />
* [http://www.videolan.org/vlc/ VLC Media Player]: Open Source media player and streaming server that support virtually every video and audio format<br />
* [http://www.mplayerhq.hu/ Mplayer]: Open Source video player that supports also many audio formats<br />
* [http://www.zinf.org/ Zinf]: Open Source player with support for Ogg Vorbis, as well as MP3, WAV and Audio CDs<br />
* [http://snackamp.sourceforge.net/ SnackAmp]: Tcl/Tk player<br />
* [https://player.helixcommunity.org/ HelixPlayer]: Open source player from RealNetworks<br />
* [http://jajuk.sourceforge.net/ Jajuk]: Jajuk is software that organizes and plays music. It is a full-featured application geared towards advanced users with large or scattered music collections. Using multiple perspectives, the software is designed to be intuitive and provide different ways to perform the same task.<br />
* [http://www.mozilla.com Firefox]: Open Source web browser versions (HTML5 audio OGG Vorbis support since version 3.5, WebM with Vorbis sound since 4.0, OGG Opus since 15)<br />
* [http://ffmp3.sourceforge.net FFMp3]: Open Source web (flash) streaming player<br />
<br />
=== proprietary software ===<br />
<br />
* [http://www.jcraft.com/jorbis/ JOrbisPlayer]: Java Player that uses the [[JOrbis]] Java decoder<br />
* [http://www.javazoom.net/jlgui/jlgui.html jlGui]: Winamp clone for Java<br />
* [http://www.real.com/ RealPlayer]: proprietary player from RealNetworks (version 10 does not play Ogg)<br />
* [http://www.windowsmedia.com/ Microsoft Windows Media Player]: Freeware player from Microsoft (version 10 needs DirectShow filter; see Windows players, above). Runs on both Windows and Macintosh platforms.<br />
<br />
== DOS ==<br />
<br />
=== free software ===<br />
<br />
* [http://mpxplay.sourceforge.net/ mpxplay.sf.net] Mpxplay: supports many formats (OGG Vorbis, OGG Opus, FLAC (raw and inside OGG), WAVPACK, MP3, ... also can play sound from video files (OGG, WebM and some other formats)<br />
<br />
== GNU/Linux & *BSD ==<br />
<br />
=== free software ===<br />
<br />
* [http://www.alsaplayer.org/ AlsaPlayer]: ALSA audio player ─ “First player worldwide that did perfect reverse Ogg playback!”<br />
* [http://amarok.kde.org/ amaroK]: Open Source player for KDE with support for Ogg Vorbis among other formats, streaming, Last.FM, lyrics and covert art download and many many more.<br />
* [http://bmpx.beep-media-player.org/site/BMPx_Homepage Beep Media Player (a.k.a. BMPx)]: XMMS fork that uses GTK+ 2.x and is compatible with both XMMS and Winamp skins<br />
* [http://bossogg.wishy.org/ BossOgg]: Jukebox system<br />
* [http://www.cajun.nu/ CAJUN]: Car audio system<br />
* [http://mask.tf.hut.fi/~flu/cplay/ cplay]: curses frontend for Ogg123, mpg123 etc<br />
* [http://www.giantdisc.org/ GiantDisc]: Jukebox system that can be controlled by a Palm<br />
* [http://gmerlin.sourceforge.net/ Gmerlin]<br />
* [http://gqmpeg.sourceforge.net/ GQmpeg]: GTK frontend for mpg123/Ogg123 etc<br />
* [http://herrie.info/ Herrie]<br />
* [http://developer.kde.org/~wheeler/juk.html JuK]: Open Source player for KDE with support for Ogg Vorbis, FLAC and MP3.<br />
* [http://freakforever.net/lamip/ LAMIP]: Modular audio player<br />
* [http://musicpd.org/ MPD]: Music Player Daemon is a sound server that supports different clients. Supports many formats, among them Ogg Vorbis and FLAC<br />
* [http://muine.gooeylinux.org/ Muine]: Open Source player for GNOME with support for Ogg Vorbis, FLAC and MP3.<br />
* [http://noatun.kde.org/ Noatun]: KDE audio player<br />
* [http://mesk.nicfit.net/ Mesk]<br />
* [http://www.mythtv.org/ MythTV]: PVR project<br />
* [http://www.luga.de/pytone/ PyTone]: Python-based jukebox player<br />
* [http://www.sacredchao.net/quodlibet Quodlibet]: Based on GStreamer 0.10 and PyGTK. Keep your music organised.<br />
* [http://www.rhythmbox.org/ Rhythmbox]<br />
* [http://sonic-rainbow.sourceforge.net/ Sonic-Rainbow]<br />
* [http://rikkus.info/squelch.html s.q.u.e.l.c.h.]: Vorbis only player<br />
* [http://musik.berlios.de/ wxMusik]: Open Source player with support for Ogg Vorbis, as well as MP3, WAV and AIFF. Makes use of an SQL based media libary for quick searching.<br />
* [http://xinehq.de/ Xine]: video player with long list of supported formats<br />
* [http://www.xmms.org/ XMMS]<br />
* [http://jajuk.sourceforge.net/ Jajuk]: Jajuk is software that organizes and plays music. It is a full-featured application geared towards advanced users with large or scattered music collections. Using multiple perspectives, the software is designed to be intuitive and provide different ways to perform the same task.<br />
<br />
== Mac OS X ==<br />
<br />
=== free software ===<br />
<br />
* [http://cogosx.sourceforge.net/ Cog] – requires Mac OS X 10.3 (Panther) and greater<br />
* [http://jajuk.sourceforge.net/ Jajuk]: Jajuk is software that organizes and plays music. It is a full-featured application geared towards advanced users with large or scattered music collections. Using multiple perspectives, the software is designed to be intuitive and provide different ways to perform the same task.<br />
<br />
=== proprietary software ===<br />
<br />
* Quicktime components for [http://qtcomponents.sourceforge.net/ Quicktime 6] and [http://www.xiph.org/quicktime/ Quicktime 7] – enables rudimentary support for iTunes 4.7 and greater<br />
* [http://www.whamb.com/ Whamb] – supports Ogg Vorbis and Ogg Vorbis streams, requires Mac OS X 10.2 (Jaguar) and greater<br />
* [http://www.kjams.com/ kJams] – Karaoke program which supports encoding (or re-encoding) of any audio type to Ogg Vorbis, enables editing of comments with the [[VorbisCommentEdit|VCEdit Framework]], requires 10.3 and the [http://www.xiph.org/quicktime/ XiphQT] package. [http://www.kjams.com/wiki/Vorbis More Info].<br />
* [http://www.coreplayer.com/ CorePlayer Pro]: By the makers of TCPMP. Costs $19.95US.<br />
<br />
== Other ==<br />
<br />
=== free software ===<br />
<br />
*[http://www.nintendo.com/channel/ds Nintendo DS]: **[http://mdxonline.dyndns.org/archives/2007/03/moonshell_ver171_top.shtml MoonShell 1.71] is a homebrew media player for the Nintendo DS. It can play Ogg Vorbis. It has two Vorbis decoders (both using Tremor), a “high accuracy” one limited to 128kbps average, and a “normal accuracy” one that can use higher bitrates, the default being the normal one.<br />
**[http://www.dragonminded.com/?loc=ndsdev/DSOrganize DSOrganize] transforms the Nintendo DS into a PDA capable of playing Ogg Vorbis audio.<br />
* [http://www.xbox.com/ Xbox]: the [http://www.xboxmediacenter.de/ Xbox Media Center] is an open source project that transforms a modded Xbox with Linux into a media center and streaming client.<br />
* [http://www.rockbox.org/ Rockbox]: A replacement firmware developed for various digital audio players such as the Ipod, various Archos players, and more. It uses the Tremor library to implement Ogg Vorbis playback.<br />
* [http://www.playstation.com/ Sony Playstation Portable]<br />
** [http://code.google.com/p/lightmp3/ lightmp3] is a GNU GPLv2 licensed player which supports Ogg Vorbis and FLAC playback on the PSP.<br />
<br />
=== proprietary software ===<br />
<br />
* [http://english.gamepark.com/ GamePark32]: the GP32, an arm9tdmi portable console with much hackability (gcc3 toolchain, expandable memory), has several [http://www.gp32x.com/ Vorbis players] available.<br />
* [http://www.sharp-usa.com/products/TypeLanding/0,1056,112,00.html Sharp&#x2019;s Zaurus]: the Zaurus, a very flexible PDA which runs Linux, can play Vorbis files with a variety of software, including a [http://www.killefiz.de/zaurus/showdetail.php?app=617 plugin] for the default media player, [http://www.killefiz.de/zaurus/showdetail.php?app=423 xmms], [http://www.killefiz.de/zaurus/showdetail.php?app=201 Ogg123], [http://www.killefiz.de/zaurus/showdetail.php?app=803 mplayer], or [http://www.thekompany.com/embedded/tkcplayer/ theKompany.com&#x2019;s tkcPlayer].<br />
* [http://www.playstation.com/ Sony Playstation]<br />
** the [http://www.trend-express.com/en/medio.html Media Digital Media Player] is a streaming client solution for the Playstation 2.<br />
** the [http://www.psp-hacks.com/2006/03/16/psplayermt-play-nearly-any-video-type-on-your-psp/ PSPlayerMT] is an “unsupported” Korean media player for the PSP. The specs claim it will play Ogg Theora and Ogg Vorbis.<br />
<br />
== PalmOS ==<br />
<br />
=== free software ===<br />
<br />
* [http://poggpl.sourceforge.net/ POGGPl]: still in alpha-stage<br />
* [http://sourceforge.net/projects/magiclantern/ The Magic Lantern]: still in alpha-stage<br />
* [http://www.hpcfactor.com/downloads/tcpmp/ The Core Pocket Media Player (TCPMP)] ([http://en.wikipedia.org/wiki/The_Core_Pocket_Media_Player Wikipedia article]): Formerly (and now once again) known as BetaPlayer. Uses [[Tremor]].<br />
* [http://betaplayer.com/ BetaPlayer] (website in development ? Dead as of 2010-Feb): Continuation (and precursor) of TCPMP.<br />
<br />
=== proprietary software ===<br />
<br />
* [http://www.pocket-tunes.com/ Pocket Tunes]: costs 14.95 US$<br />
* [http://www.aerodromesoftware.com/ AeroPlayer]: gratis for Ogg. MP3 support costs 20 US$<br />
* [http://www.coreplayer.com/ CorePlayer Mobile]: By the makers of TCPMP. Costs $29.95US.<br />
<br />
== PocketPC ==<br />
<br />
=== free software ===<br />
<br />
* [http://hp.vector.co.jp/authors/VA032810/ GSPlayer] (WM5/WM6)<br />
* [http://www.cyanwerks.com/pocketOgg/ PocketOgg] (PPC2002/PPC2003/WM*): Uses [[Tremor]].<br />
* [http://www.hpcfactor.com/downloads/tcpmp/ The Core Pocket Media Player (TCPMP)] ([http://en.wikipedia.org/wiki/The_Core_Pocket_Media_Player Wikipedia article], version 0.72 Beta seems to not be compatible with PPC2002): Formerly (and now once again) known as BetaPlayer. Uses [[Tremor]].<br />
* [http://betaplayer.com/ BetaPlayer] (website in development ? Dead as of 2010-Feb): Continuation (and precursor) of TCPMP.<br />
* [http://handheld.softpedia.com/get/Multimedia-Graphics/Audio-Players/Today-Player-36393.shtml Today Player]: a Today screen plugin.<br />
<br />
=== proprietary software ===<br />
<br />
* [http://www.conduits.com/ce/player/download.asp Conduits Pocket Player]: Costs $19.94US.<br />
* [http://www.pocketmind.com/pmfp.htm PocketMusic] (PPC2003/WM*): Costs $19.95US.<br />
* [http://www.coreplayer.com/ CorePlayer Mobile]: By the makers of TCPMP. Costs $29.95US.<br />
<br />
== Symbian ==<br />
<br />
=== free software ===<br />
<br />
* [http://symbianoggplay.sourceforge.net/ OggPlay]<br />
<br />
=== proprietary software ===<br />
<br />
* [http://developer.symbian.com/main/tools/appcode/cpp/ogg_vorbis.jsp Ogg Vorbis Controller]: plugin for Symbian's Multimedia Framework that allows decoding and playing back of Ogg Vorbis compressed audio files<br />
* [http://www.coreplayer.com/ CorePlayer Mobile]: By the makers of TCPMP. Costs $29.95US.<br />
<br />
== iPhone ==<br />
<br />
=== free software ===<br />
<br />
* See work in progress on [[iOS]] page<br />
<br />
=== proprietary software ===<br />
<br />
* [http://www.sourcemac.com/?page=fstream FStream]: A no-cost webradio listener/recorder software, which supports [[Icecast]] directory browsing and decodes [[Vorbis]] streams. No "jailbreak" required.<br />
* [https://itunes.apple.com/us/app/yxplayer/id373751560?mt=8 yxplayer]: for-pay video player, which can play Vorbis audio and Theora video. In app store, no jailbreak required.<br />
<br />
== Android ==<br />
<br />
=== proprietary software ===<br />
<br />
* [http://rockplayer.freecoder.org RockPlayer]: A NoCost FFMPEG based player that handles most of the formats including OGV/Theora stored on disk. Needs Android 1.6-2.2 with ARM processor.<br />
<br />
----<br />
<br />
''For hardware “MP3-players” that support Ogg Vorbis see [[VorbisHardware]]''<br />
<br />
[[Category:Vorbis]]</div>Brionhttps://wiki.xiph.org/index.php?title=Vorbis_Software_Players&diff=14302Vorbis Software Players2013-11-08T00:59:57Z<p>Brion: /* iPhone */ I've found at least one player that does vorbis and theora</p>
<hr />
<div>Here is a list of media players for various operating systems that comes with “out-of-the-box” support for Ogg [[Vorbis]].<br />
<br />
== windows ==<br />
<br />
=== free software ===<br />
<br />
* [http://www.getsongbird.com/ Songbird] : player from the great guys at Mozilla, etc. Plays all major formats (including ogg).<br />
* [http://musik.berlios.de/ wxmusik]: player with support for Ogg Vorbis, as well as MP3, WAV, AIFF and WMA. makes use of an sql based media libary for quick searching<br />
* [http://coolplayer.sourceforge.net/ coolplayer]: very small player<br />
* [http://mediaportal.sourceforge.net/ mediaportal]: home theater software<br />
* [http://mac.sourceforge.net/ mpeg audio collection]: organizer for music collection<br />
* [http://www.mediamonkey.com/ mediamonkey]: easy-to-use player/tagger/media library with built-in ripper & burner which can even encode & transcode to Ogg Vorbis<br />
* [http://jajuk.sourceforge.net/ Jajuk]: Jajuk is software that organizes and plays music. It is a full-featured application geared towards advanced users with large or scattered music collections. Using multiple perspectives, the software is designed to be intuitive and provide different ways to perform the same task.<br />
<br />
=== proprietary software ===<br />
<br />
* [http://www.winamp.com/ winamp]: very popular player supporting many formats<br />
* [http://www.foobar2000.org/ foobar2000]: freeware player with complex options and support for Ogg Vorbis, MP3, WAV and more<br />
* [http://www.quinnware.com/ quintessential player]: freeware player with support for Ogg Vorbis, MP3, WAV and audio cds which also includes cd ripping<br />
* [http://www.dbpoweramp.com/ dbpoweramp audio player]: freeware player with Ogg Vorbis and FLAC support<br />
* [http://www.dbpoweramp.com/ dbpoweramp music converter]: freeware audio conversion software with Ogg Vorbis and FLAC support and also includes cd ripping<br />
* [http://www.un4seen.com/xmplay.html xmplay]<br />
* [http://www.ashampoo.com/ ashampoo media player]: audio and video player<br />
* [http://www.deliplayer.com/ deliplayer]<br />
* [http://www.musicex.com/mediajukebox/ mediajukebox]: audio management<br />
* [http://www.muzikbrowzer.com/ muzikbrowser]: player designed for display on a tv screen<br />
* [http://music.predixis.com/ musicmagic mixer]: player with playlist management<br />
* [http://www.zinf.org/ zinf]: zinf is not freeamp, freeware player<br />
* [http://www.vuplayer.com/vuplayer.php vuplayer]: multi-format freeware audio player with very easy interface<br />
* [http://www.xiph.org/dshow/ directshow filter]: adds support for Ogg Vorbis, Ogg Speex, Ogg Theora, Ogg FLAC, and native FLAC to any directshow-compliant player such as windows media player and bsplayer<br />
* [http://www.musikcube.com/ musikcube]: freeware player<br />
* [http://ksp.kalliope-soft.eu/ ksp sound player]: freeware player with lyrics, media library, suggestion searching and automatic playlist generation<br />
* [http://www.visonair.tv/player.php visonair.tv player]: freeware player ─ plays Ogg Vorbis and Theora streams<br />
* [http://www.jetaudio.com jetaudio basic]: freeware player with Ogg Vorbis and FLAC support<br />
* [http://www.huelix.com/audiorecorder/ huelix audio recorder]: audio recording software with support for Ogg Vorbis, WMA, MP3, and WAV formats<br />
* [http://www.huelix.com/audio-converter/ huelix audio converter]: audio conversion software to convert among Ogg Vorbis, WMA, MP3, and WAV formats<br />
* [http://c6.community.virgilio.it/ c6 messenger]: italian instant messenger with audio/video call based on speex/theora (http://www.icona.net)<br />
* [http://www.coreplayer.com/ CorePlayer Pro]: By the makers of TCPMP. Costs $19.95US.<br />
* [http://www.acquiredigital.com/ Acquire Digital Signage and Kiosk Software]: Plays back all ogg media using the included DirectShow filters.<br />
<br />
== Multi-platform ==<br />
<br />
=== free software ===<br />
<br />
* [http://joggplayer.webarts.bc.ca jOggPlayer]: Open Source Java GUI Vorbis Player. It features the usual basics needed to enjoy your files and internet streams.<br />
* [http://www.videolan.org/vlc/ VLC Media Player]: Open Source media player and streaming server that support virtually every video and audio format<br />
* [http://www.mplayerhq.hu/ Mplayer]: Open Source video player that supports also many audio formats<br />
* [http://www.zinf.org/ Zinf]: Open Source player with support for Ogg Vorbis, as well as MP3, WAV and Audio CDs<br />
* [http://snackamp.sourceforge.net/ SnackAmp]: Tcl/Tk player<br />
* [https://player.helixcommunity.org/ HelixPlayer]: Open source player from RealNetworks<br />
* [http://jajuk.sourceforge.net/ Jajuk]: Jajuk is software that organizes and plays music. It is a full-featured application geared towards advanced users with large or scattered music collections. Using multiple perspectives, the software is designed to be intuitive and provide different ways to perform the same task.<br />
* [http://www.mozilla.com Firefox]: Open Source web browser versions (HTML5 audio OGG Vorbis support since version 3.5, WebM with Vorbis sound since 4.0, OGG Opus since 15)<br />
* [http://ffmp3.sourceforge.net FFMp3]: Open Source web (flash) streaming player<br />
<br />
=== proprietary software ===<br />
<br />
* [http://www.jcraft.com/jorbis/ JOrbisPlayer]: Java Player that uses the [[JOrbis]] Java decoder<br />
* [http://www.javazoom.net/jlgui/jlgui.html jlGui]: Winamp clone for Java<br />
* [http://www.real.com/ RealPlayer]: proprietary player from RealNetworks (version 10 does not play Ogg)<br />
* [http://www.windowsmedia.com/ Microsoft Windows Media Player]: Freeware player from Microsoft (version 10 needs DirectShow filter; see Windows players, above). Runs on both Windows and Macintosh platforms.<br />
<br />
== DOS ==<br />
<br />
=== free software ===<br />
<br />
* [http://mpxplay.sourceforge.net/ mpxplay.sf.net] Mpxplay: supports many formats (OGG Vorbis, OGG Opus, FLAC (raw and inside OGG), WAVPACK, MP3, ... also can play sound from video files (OGG, WebM and some other formats)<br />
<br />
== GNU/Linux & *BSD ==<br />
<br />
=== free software ===<br />
<br />
* [http://www.alsaplayer.org/ AlsaPlayer]: ALSA audio player ─ “First player worldwide that did perfect reverse Ogg playback!”<br />
* [http://amarok.kde.org/ amaroK]: Open Source player for KDE with support for Ogg Vorbis among other formats, streaming, Last.FM, lyrics and covert art download and many many more.<br />
* [http://bmpx.beep-media-player.org/site/BMPx_Homepage Beep Media Player (a.k.a. BMPx)]: XMMS fork that uses GTK+ 2.x and is compatible with both XMMS and Winamp skins<br />
* [http://bossogg.wishy.org/ BossOgg]: Jukebox system<br />
* [http://www.cajun.nu/ CAJUN]: Car audio system<br />
* [http://mask.tf.hut.fi/~flu/cplay/ cplay]: curses frontend for Ogg123, mpg123 etc<br />
* [http://www.giantdisc.org/ GiantDisc]: Jukebox system that can be controlled by a Palm<br />
* [http://gmerlin.sourceforge.net/ Gmerlin]<br />
* [http://gqmpeg.sourceforge.net/ GQmpeg]: GTK frontend for mpg123/Ogg123 etc<br />
* [http://herrie.info/ Herrie]<br />
* [http://developer.kde.org/~wheeler/juk.html JuK]: Open Source player for KDE with support for Ogg Vorbis, FLAC and MP3.<br />
* [http://freakforever.net/lamip/ LAMIP]: Modular audio player<br />
* [http://musicpd.org/ MPD]: Music Player Daemon is a sound server that supports different clients. Supports many formats, among them Ogg Vorbis and FLAC<br />
* [http://muine.gooeylinux.org/ Muine]: Open Source player for GNOME with support for Ogg Vorbis, FLAC and MP3.<br />
* [http://noatun.kde.org/ Noatun]: KDE audio player<br />
* [http://mesk.nicfit.net/ Mesk]<br />
* [http://www.mythtv.org/ MythTV]: PVR project<br />
* [http://www.luga.de/pytone/ PyTone]: Python-based jukebox player<br />
* [http://www.sacredchao.net/quodlibet Quodlibet]: Based on GStreamer 0.10 and PyGTK. Keep your music organised.<br />
* [http://www.rhythmbox.org/ Rhythmbox]<br />
* [http://sonic-rainbow.sourceforge.net/ Sonic-Rainbow]<br />
* [http://rikkus.info/squelch.html s.q.u.e.l.c.h.]: Vorbis only player<br />
* [http://musik.berlios.de/ wxMusik]: Open Source player with support for Ogg Vorbis, as well as MP3, WAV and AIFF. Makes use of an SQL based media libary for quick searching.<br />
* [http://xinehq.de/ Xine]: video player with long list of supported formats<br />
* [http://www.xmms.org/ XMMS]<br />
* [http://jajuk.sourceforge.net/ Jajuk]: Jajuk is software that organizes and plays music. It is a full-featured application geared towards advanced users with large or scattered music collections. Using multiple perspectives, the software is designed to be intuitive and provide different ways to perform the same task.<br />
<br />
== Mac OS X ==<br />
<br />
=== free software ===<br />
<br />
* [http://cogosx.sourceforge.net/ Cog] – requires Mac OS X 10.3 (Panther) and greater<br />
* [http://jajuk.sourceforge.net/ Jajuk]: Jajuk is software that organizes and plays music. It is a full-featured application geared towards advanced users with large or scattered music collections. Using multiple perspectives, the software is designed to be intuitive and provide different ways to perform the same task.<br />
<br />
=== proprietary software ===<br />
<br />
* Quicktime components for [http://qtcomponents.sourceforge.net/ Quicktime 6] and [http://www.xiph.org/quicktime/ Quicktime 7] – enables rudimentary support for iTunes 4.7 and greater<br />
* [http://www.whamb.com/ Whamb] – supports Ogg Vorbis and Ogg Vorbis streams, requires Mac OS X 10.2 (Jaguar) and greater<br />
* [http://www.kjams.com/ kJams] – Karaoke program which supports encoding (or re-encoding) of any audio type to Ogg Vorbis, enables editing of comments with the [[VorbisCommentEdit|VCEdit Framework]], requires 10.3 and the [http://www.xiph.org/quicktime/ XiphQT] package. [http://www.kjams.com/wiki/Vorbis More Info].<br />
* [http://www.coreplayer.com/ CorePlayer Pro]: By the makers of TCPMP. Costs $19.95US.<br />
<br />
== Other ==<br />
<br />
=== free software ===<br />
<br />
*[http://www.nintendo.com/channel/ds Nintendo DS]: **[http://mdxonline.dyndns.org/archives/2007/03/moonshell_ver171_top.shtml MoonShell 1.71] is a homebrew media player for the Nintendo DS. It can play Ogg Vorbis. It has two Vorbis decoders (both using Tremor), a “high accuracy” one limited to 128kbps average, and a “normal accuracy” one that can use higher bitrates, the default being the normal one.<br />
**[http://www.dragonminded.com/?loc=ndsdev/DSOrganize DSOrganize] transforms the Nintendo DS into a PDA capable of playing Ogg Vorbis audio.<br />
* [http://www.xbox.com/ Xbox]: the [http://www.xboxmediacenter.de/ Xbox Media Center] is an open source project that transforms a modded Xbox with Linux into a media center and streaming client.<br />
* [http://www.rockbox.org/ Rockbox]: A replacement firmware developed for various digital audio players such as the Ipod, various Archos players, and more. It uses the Tremor library to implement Ogg Vorbis playback.<br />
* [http://www.playstation.com/ Sony Playstation Portable]<br />
** [http://code.google.com/p/lightmp3/ lightmp3] is a GNU GPLv2 licensed player which supports Ogg Vorbis and FLAC playback on the PSP.<br />
<br />
=== proprietary software ===<br />
<br />
* [http://english.gamepark.com/ GamePark32]: the GP32, an arm9tdmi portable console with much hackability (gcc3 toolchain, expandable memory), has several [http://www.gp32x.com/ Vorbis players] available.<br />
* [http://www.sharp-usa.com/products/TypeLanding/0,1056,112,00.html Sharp&#x2019;s Zaurus]: the Zaurus, a very flexible PDA which runs Linux, can play Vorbis files with a variety of software, including a [http://www.killefiz.de/zaurus/showdetail.php?app=617 plugin] for the default media player, [http://www.killefiz.de/zaurus/showdetail.php?app=423 xmms], [http://www.killefiz.de/zaurus/showdetail.php?app=201 Ogg123], [http://www.killefiz.de/zaurus/showdetail.php?app=803 mplayer], or [http://www.thekompany.com/embedded/tkcplayer/ theKompany.com&#x2019;s tkcPlayer].<br />
* [http://www.playstation.com/ Sony Playstation]<br />
** the [http://www.trend-express.com/en/medio.html Media Digital Media Player] is a streaming client solution for the Playstation 2.<br />
** the [http://www.psp-hacks.com/2006/03/16/psplayermt-play-nearly-any-video-type-on-your-psp/ PSPlayerMT] is an “unsupported” Korean media player for the PSP. The specs claim it will play Ogg Theora and Ogg Vorbis.<br />
<br />
== PalmOS ==<br />
<br />
=== free software ===<br />
<br />
* [http://poggpl.sourceforge.net/ POGGPl]: still in alpha-stage<br />
* [http://sourceforge.net/projects/magiclantern/ The Magic Lantern]: still in alpha-stage<br />
* [http://www.hpcfactor.com/downloads/tcpmp/ The Core Pocket Media Player (TCPMP)] ([http://en.wikipedia.org/wiki/The_Core_Pocket_Media_Player Wikipedia article]): Formerly (and now once again) known as BetaPlayer. Uses [[Tremor]].<br />
* [http://betaplayer.com/ BetaPlayer] (website in development ? Dead as of 2010-Feb): Continuation (and precursor) of TCPMP.<br />
<br />
=== proprietary software ===<br />
<br />
* [http://www.pocket-tunes.com/ Pocket Tunes]: costs 14.95 US$<br />
* [http://www.aerodromesoftware.com/ AeroPlayer]: gratis for Ogg. MP3 support costs 20 US$<br />
* [http://www.coreplayer.com/ CorePlayer Mobile]: By the makers of TCPMP. Costs $29.95US.<br />
<br />
== PocketPC ==<br />
<br />
=== free software ===<br />
<br />
* [http://hp.vector.co.jp/authors/VA032810/ GSPlayer] (WM5/WM6)<br />
* [http://www.cyanwerks.com/pocketOgg/ PocketOgg] (PPC2002/PPC2003/WM*): Uses [[Tremor]].<br />
* [http://www.hpcfactor.com/downloads/tcpmp/ The Core Pocket Media Player (TCPMP)] ([http://en.wikipedia.org/wiki/The_Core_Pocket_Media_Player Wikipedia article], version 0.72 Beta seems to not be compatible with PPC2002): Formerly (and now once again) known as BetaPlayer. Uses [[Tremor]].<br />
* [http://betaplayer.com/ BetaPlayer] (website in development ? Dead as of 2010-Feb): Continuation (and precursor) of TCPMP.<br />
* [http://handheld.softpedia.com/get/Multimedia-Graphics/Audio-Players/Today-Player-36393.shtml Today Player]: a Today screen plugin.<br />
<br />
=== proprietary software ===<br />
<br />
* [http://www.conduits.com/ce/player/download.asp Conduits Pocket Player]: Costs $19.94US.<br />
* [http://www.pocketmind.com/pmfp.htm PocketMusic] (PPC2003/WM*): Costs $19.95US.<br />
* [http://www.coreplayer.com/ CorePlayer Mobile]: By the makers of TCPMP. Costs $29.95US.<br />
<br />
== Symbian ==<br />
<br />
=== free software ===<br />
<br />
* [http://symbianoggplay.sourceforge.net/ OggPlay]<br />
<br />
=== proprietary software ===<br />
<br />
* [http://developer.symbian.com/main/tools/appcode/cpp/ogg_vorbis.jsp Ogg Vorbis Controller]: plugin for Symbian's Multimedia Framework that allows decoding and playing back of Ogg Vorbis compressed audio files<br />
* [http://www.coreplayer.com/ CorePlayer Mobile]: By the makers of TCPMP. Costs $29.95US.<br />
<br />
== iPhone ==<br />
<br />
=== proprietary software ===<br />
<br />
* [http://www.sourcemac.com/?page=fstream FStream]: A no-cost webradio listener/recorder software, which supports [[Icecast]] directory browsing and decodes [[Vorbis]] streams. No "jailbreak" required.<br />
* [https://itunes.apple.com/us/app/yxplayer/id373751560?mt=8 yxplayer]: for-pay video player, which can play Vorbis audio and Theora video. In app store, no jailbreak required.<br />
<br />
== Android ==<br />
<br />
=== proprietary software ===<br />
<br />
* [http://rockplayer.freecoder.org RockPlayer]: A NoCost FFMPEG based player that handles most of the formats including OGV/Theora stored on disk. Needs Android 1.6-2.2 with ARM processor.<br />
<br />
----<br />
<br />
''For hardware “MP3-players” that support Ogg Vorbis see [[VorbisHardware]]''<br />
<br />
[[Category:Vorbis]]</div>Brionhttps://wiki.xiph.org/index.php?title=Ogv.js&diff=14301Ogv.js2013-11-07T23:57:41Z<p>Brion: Created page with "At least libogg, libvorbis, and libtheora can be built to JavaScript using [http://emscripten.org/ emscripten] with only slight modifications. == Building == Experimental work ..."</p>
<hr />
<div>At least libogg, libvorbis, and libtheora can be built to JavaScript using [http://emscripten.org/ emscripten] with only slight modifications.<br />
<br />
== Building ==<br />
<br />
Experimental work in progress script to build these: https://github.com/brion/ogv.js based on previous work for AudioCogs integration: https://github.com/devongovett/ogg.js<br />
<br />
The build scripts make slight changes to configure scripts which may or may not be necessary, need to dive in in more detail.<br />
<br />
There's also a slight fix needed in libtheora: https://github.com/brion/theora/commit/06a0e4acf9c35f4bd31b8788a8a573cb89262333 which is probably safe to upstream (check this!)<br />
<br />
== Demo ==<br />
<br />
Playback demo at: https://brionv.com/misc/ogv.js/demo/<br />
<br />
Video works in all current browsers, audio works if Web Audio API is there (latest Firefox, Safari, Chrome, but not IE).<br />
<br />
== Notes ==<br />
<br />
* libtheora<br />
** Must pass --disable-asm<br />
** needs a slight fix to a function signature to quiet an error from emscripten compiler<br />
* Internet Explorer<br />
** no native web audio output<br />
** Flash shim most likely audio possibility<br />
* Safari<br />
** Mac Safari 6.0 crashes when decoding vorbis audio in my testing (?!) 6.1/7.0 are fine. Is temporarily blacklisted.<br />
** iOS Safari on 64-bit device crashes when decoding vorbis audio in my testing (!?). Is temporarily blacklisted.<br />
** Audio must be triggered from a UI event to work on iOS<br />
<br />
Performance seems adequate on recentish desktops/laptops in the latest browsers, but is woefully poor on mobile phones and tablets.<br />
<br />
== HTML5 integration ==<br />
<br />
Current playback demo simply outputs to a &lt;canvas> element, doing YUV to RGB conversion in software.<br />
<br />
It's not clear to me that playback could be integrated into an actual &lt;audio> or &lt;video> element, but similar JavaScript interfaces could be wrapped around a &lt;canvas>.<br />
<br />
WebRTC also does not appear to allow easily plugging in custom JS codecs, but audio and video frames could be sent over the data channels as ArrayBuffers.<br />
<br />
Live encoding may be possible connected to getUserMedia, I have not attempted this yet.<br />
<br />
== Related projects ==<br />
<br />
* [[iOS]] codecs (todo)</div>Brionhttps://wiki.xiph.org/index.php?title=IOS&diff=14300IOS2013-11-07T23:41:49Z<p>Brion: +JavaScript see also link</p>
<hr />
<div>At least libogg, libvorbis, and libtheora build and run on iOS without modification in their current incarnations.<br />
<br />
== Building ==<br />
<br />
Experimental work in progress script to build the libraries to .framework bundles that can be easily linked to in an Xcode project: https://github.com/brion/OgvKit<br />
<br />
== Notes ==<br />
<br />
* libtheora<br />
** Must pass --disable-asm, as the asm code doesn't build for iOS (yet?) [https://gist.github.com/brion/7345164 errs]<br />
<br />
== OS integration ==<br />
<br />
iOS's native media framework is [https://developer.apple.com/av-foundation/ AVFoundation], which unfortunately is not extensible with codec or file type plugins. :(<br />
<br />
It should be possible for an Obj-C wrapper library to use the same audio and video buffer types for input/output as AVFoundation does, however, which will make it easier to hook them up together for transcoding or live encoding from the camera.<br />
<br />
== Related projects ==<br />
<br />
* [[JavaScript]] codecs<br />
<br />
{{DISPLAYTITLE:iOS}}</div>Brionhttps://wiki.xiph.org/index.php?title=IOS&diff=14299IOS2013-11-07T04:03:14Z<p>Brion: /* Notes */</p>
<hr />
<div>At least libogg, libvorbis, and libtheora build and run on iOS without modification in their current incarnations.<br />
<br />
== Building ==<br />
<br />
Experimental work in progress script to build the libraries to .framework bundles that can be easily linked to in an Xcode project: https://github.com/brion/OgvKit<br />
<br />
== Notes ==<br />
<br />
* libtheora<br />
** Must pass --disable-asm, as the asm code doesn't build for iOS (yet?) [https://gist.github.com/brion/7345164 errs]<br />
<br />
== OS integration ==<br />
<br />
iOS's native media framework is [https://developer.apple.com/av-foundation/ AVFoundation], which unfortunately is not extensible with codec or file type plugins. :(<br />
<br />
It should be possible for an Obj-C wrapper library to use the same audio and video buffer types for input/output as AVFoundation does, however, which will make it easier to hook them up together for transcoding or live encoding from the camera.<br />
<br />
{{DISPLAYTITLE:iOS}}</div>Brionhttps://wiki.xiph.org/index.php?title=IOS&diff=14298IOS2013-11-06T14:38:13Z<p>Brion: iOS notes</p>
<hr />
<div>At least libogg, libvorbis, and libtheora build and run on iOS without modification in their current incarnations.<br />
<br />
== Building ==<br />
<br />
Experimental work in progress script to build the libraries to .framework bundles that can be easily linked to in an Xcode project: https://github.com/brion/OgvKit<br />
<br />
== Notes ==<br />
<br />
* libtheora<br />
** Must pass --disable-asm, as the asm code doesn't build for iOS (yet?)<br />
<br />
== OS integration ==<br />
<br />
iOS's native media framework is [https://developer.apple.com/av-foundation/ AVFoundation], which unfortunately is not extensible with codec or file type plugins. :(<br />
<br />
It should be possible for an Obj-C wrapper library to use the same audio and video buffer types for input/output as AVFoundation does, however, which will make it easier to hook them up together for transcoding or live encoding from the camera.<br />
<br />
{{DISPLAYTITLE:iOS}}</div>Brion