Preface

Revision Log

Last Updated: 30/12/2015

Improved readability, that is all. Courtesy of writing a new slab of text. Less monospace after all these years, more sans.

Quicknote: 04/10/2016, 06/06/2017, 19/07/2017

Looking forward to updating things in September '16 November '16 August '17? as a couple of things have changed and improved. I have a list of notes and am checking it twice. Meanwhile Opus 1.2-Alpha

Added my ToC generator as tested on my other tome.

Meanwhile Meanwhile:

"Are you using the Opus codec?" - "Yes"
Shoutout to Cleanfeed, a new project by the chap who made xwax.


Revision Entry: 15/12/2015

Opus has been updated to 1.1.1.

Meanwhile I haven't plugged Daala yet so go check out the "Opus" for Video.

TL;DR; Everything is great.

Meanwhile, don't expect working song metadata till icecast 2.5 or 2.6.

Other then that, tiny clean ups and this slab of text still appears to check out pretty decently overall since it's inception. To anyone reading this, a good winter solstice and yuletide is once again implied.


Google Bait:
Opus codec streaming to icecast with MPD as source client RFC 6716

Ye ol' Index

Getting Started

This information is by no means complete and it's very likely that way too many assumptions have been made as to the succesful conclusion of this endeavour on a case by case basis.

This is a stopgap measure until Opus has seen more widespread adoption.

TL;DR; It worked for me, maybe it will for you. HTH.

Requirements

*NIX based operating system.
Music Player Daemon a.k.a MPD.
(Any media player with STDOUT support should do in theory.)
Compilers / Linkers / etc. aka. build essentials.
A fetish for audio codecs.

Possible Outcome

The end result, if achieved, is most functional and full of hack value.

On MacOS X     : Encoding / Broadcasting / Playback - Succesful
On Fedora      : Encoding / Broadcasting / Playback - Succesful
On LinuxMint   : Encoding / Broadcasting / Playback - Succesful

VLC 2.0.4+     : Playback - Succesful

Foobar 1.2.9+  : Playback - Succesful

On Firefox 15+ : Built-in supported playback - Succesful
(Update or Disable noscript as it seems to interfere with <Audio>.)

On Opera 12.15 : Built-in supported playback - Succesful
On Chrome 26+  : Built-in supported playback - If you turn it on.
On Chrome 29+  : Build-in supported playback - On by default.
On Chromium 25+: Built-in supported playback - If you turn it on.

On Android     : A fellow scientist recommends VLC on Android
On iPhone      : Some Opus support exists, but local playback only...
On WinPhone    : No idea, likely a lost cause anyway.

Notes

SoX is readily available from package managers.
Alternatively anything that accepts STDIN and spits out sound.

For everything else it's recommended to compile from latest source.

Don't forget to enable your newly created output in MPD.

TL;DR; LET'S DOWNLOAD HALF THE INTERNET TO MAKE THIS WORK. IN THE TRIED AND TRUSTED OPEN SOURCE TRADITION!

Browsers in Brief

Browsers are an evermoving landscape and sometimes kids can't make up their minds of which features they'd actually want to adopt or activate. It is therefore a good thing there are settings panels and flags that we can tinker with for our amusement. I leave these here for reference, if progress progresses as progress does this section should become irrelevant in the near future. The information below assumes you follow the practice of regularly updating your browser.

Firefox

Has been doing Opus playback fine for quite some time unless you happen to be using JACK as your audio backend on Linux. Which you should, because being able to tie in any application output to any other application input is made of tar.xz. Shoutout to JACK Rack!

However the Mozilla kids have been busy with getting a new media backend up and running which appears to use a sample format that is not compatible with JACK at this time.

The solution is trivial and requires a single setting to be added to your about:config department. For as long as it may last.

Update: (07/12/2012)
Firefox 25+ appears to have killed the old backend so this doesn't work anymore. Yet this is kept for historical purposes.

Quoting here from this Mozilla bugreport:

--
Thanks. Setting "media.use_cubeb" to false switches back to the old audio backend. Please don't add that to the wiki, it only exists for troubleshooting purposes and will be removed in the near future. Since the old backend works and the new one doesn't, there are a couple more things worth testing.
--

Good thing this is not a wiki, also you have been warned.

Chrome / Chromium

Update: (05/07/2014)
Relevant to a niche audience, Chrome appears to have become a well mannered citizen on Linux and targets Pulseaudio natively.

Previously while running a JACK setup the Flash plugin and HTML5 audio would summon a raw ALSA output this is no longer the case and the Pulaseaudio JACK Sink happily obliges.

Update: (07/12/2012)
Now comes with Opus out of the box. Yet this is kept for historical purposes.

You have two option to get Opus to work here.

Option 1:

Go to chrome://flags and look for "Enable Opus playback in <video> elements." and hit Enable.

Then scroll down and hit the "Relaunch Now" button.

Option 2:

Adjust your start script, shortcut, whatever and append "--enable-opus-playback" flag to the executable.

For more nerdery, an extensive list of Chromium Flags

FYI, Chromium is Chrome with alot less Google Chrome.

Opera

Opera 12.15 on Linux just works out of the box, albeit using PulseAudio.
But with the PulseAudio JACK Sink in place this poses no threat.

Party on you crazy Norwegians!

Others

Safari and Internet Explorer will likely depend on how well WebRTC get's pushed and how soon they both adopt the RFC specification.

Apple will likely resist harder as there's no hardware decode on iOS devices for Opus. But given how impressive Rockbox is on media players I doubt this will really be an issue unless they don't like battery life being eaten away by a software decoder.

Android and Windows phone are in a similar boat however Can I use reports that "Firefox for Android" should have playback support. A fellow scientist has not yet confirmed this as to be true at present but recommends "VLC on Android" for the time being, see up top.

Patents are not the issue here, willingness to be awesome is.

Icecast meet Meta

Unfortunately Lady Meta does not think Lord Icecast is a worthwhile suitor.

As it stands attempts to update metadata from within Icecast's admin panel results in "Mountpoint will not accept URL updates". It turns out that at this point in time Icecast does not support updating Opus stream meta data in any form.

I'm currently using MPD's native Opus output to stream and with the exact same output config stream Vorbis at the same time. The Vorbis stream delivers meta data just fine where as the Opus stream does not.

I am not the only individual having come upon this issue see this particular icecast mailing list post shedding a little light on the matter.

There is also Xiph ticket #2017 that makes mention of "out of band Opus Metadata updates not allowed".

TL;DR; You must wait more till icecast 2.5 or even 2.6.

Let us hope the next Icecast point release may bring that which, perhaps for many, brings this long awaited support.

MPD Native Opus Output

Consider the following, if you have a fetish for being on the latest and greatest like a fellow scientist has. The more traditional method follows after this section but this should preferrably become the right way of doing things.

A fellow scientist recommends the following for your .mpdconf

audio_output {
        type            "shout"
        encoding        "opus"
        name            "Opus shout stream"
        host            "127.0.0.1"
        port            "8000"
        mount           "mpd.opus"
        password        "PasswordHere"
        bitrate         "64000"
        format          "48000:16:2"
        protocol        "icecast2"
        user            "source"
}

Icecast may complain a little and metadata is still absent but the method is confirmed to work.

The only downsides to this method:
- Requires GCC 4.7 for the MPD Opus code to compile.
- No way to control framesize and encoding modes.
- Hooking into latest Opus potentially requires effort.

We give thanks to a fellow scientist for this contribution.

Shake 'n Shortcut

Having recently moved to Fedora Linux for my day to day tasks I've come to appreciate the powers that a good package manager has to offer. While Homebrew and MacPorts are valiant efforts, most OSS material seems to just function better with less comedy where it is most at home. But I may be biased in this case.

Fedora Linux

Without futher ado, the essentials mix:

yum install libogg libogg-devel libvorbis libvorbis-devel libtheora libtheora-devel speex speex-devel libshout libshout-devel flac flac-devel

If you prefer the latest stable opus:

yum install opus opus-devel opus-tools

Else do some Shake 'n Bake.
To be able to grab the source for oggfwd:

yum install bzr
bzr branch http://v2v.cc/~j/oggfwd
cd oggfwd
make; make install

Optionally, if console playback is important to you:

yum install sox

Alternatively, combine RPMfusion with VLC

yum install vlc vlc-plugin-jack

Build essentials:

yum install tar make gcc

Linux Mint

A handsome scientist asked for Opus on his Linux Mint box, the following package names were translated to get going.

apt-get install oggfwd libogg0 libogg-dev libvorbis0a libvorbis-dev libtheora0 libtheora-dev speex libspeex1 libspeex-dev libshout3 libshout3-dev

apt-get flac flac-dev (Assumptions are made here, do your homework.)

apt-get install tar make gcc 

apt-get install libopus0 opus-tools

apt-get install sox

Dependencies for compiling Icecast 2.4 Beta

apt-get install curl libcurl4-openssl-dev libxslt1.1 libxslt1-dev

Seriously, what is up with Ubuntu's weird package numbers and multiple flavours of everything. On the upside, oggfwd is already in the tree.

Doing a Shake 'n Bake for Opus is highly recommended as Ubuntu / Mint currently (08/08/2013) ships (old) libopus 1.0.1 and opus-tools 1.2-1.

Where as Fedora ships (latest stable) libopus 1.0.3 and opus-tools 0.1.7.

We give thanks to a handsome scientist for providing a shell to tinker on.

Ready ?

With that done grab a copy of Icecast 2.4 from the front page, do a Shake 'n Bake, then skip to Setup 'n Use.

Shake 'n Bake

./configure
make
make install

beverage > /dev/mouth

Ingredients

It's highly recommended to follow this order to avoid dependency hell.
None of this appears to rely on anything exotic anyway...
But hell is still unpleasant, or at-least so the legend has it.

From http://xiph.org/downloads/

libogg
libvorbis
libflac     #if you want FLAC transcoding support for opus-tools
libtheora   #icecast likes this
libspeex    #icecast likes this

From http://www.opus-codec.org/downloads/

libopus
opus-tools

If opus-tools fails to find Opus headers and libs:

./configure \
--with-opus-includes=/usr/local/include/opus/ \
--with-opus-libraries=/usr/local/lib/

If opus-tools complains about pkgconfig:

32-Bit Host:
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/:/lib/pkgconfig/
64-Bit Host:
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/:/lib64/pkgconfig/

If opus-tools complains about missing FLAC libraries and you don't require FLAC transcoding support.

./configure --without-flac

Don't forget to add other flags where appropriate.

From http://www.icecast.org/download.php

libshout    #oggfwd wants this
icecast 2.4.0

From http://v2v.cc/~j/oggfwd/

bzr branch http://v2v.cc/~j/oggfwd
cd oggfwd
make; make install

From http://sox.sourceforge.net/

SoX

Setup 'n Use

.mpdconf

audio_output {
	type            "fifo"
	name            "fifo"
	path            "/tmp/mpd.fifo"
	format          "44100:16:2"
}

PROTIP: Enable it after restarting MPD.

icecast.xml

As Lord Monty and friends decree we must honour the
correct MIME type as per RFC 5334.

<mount>
        <mount-name>/mpd.opus</mount-name>
        <type>audio/ogg</type>
        <password>password</password>
        <max-listeners>5</max-listeners>
        <no-yp>1</no-yp>
</mount>

--

Alternatively: "audio/ogg; codecs=opus"
Future Likely: "audio/opus"

Self compiled vs Repo supplied Opus

If you've done a shake 'n bake and your package manager installed Opus on your behalf you may want to force the use of your own Opus libs before running any of the Opus related executables.

It's likely best to put this at the start of a shell script vs setting it as a session global but this is all up to you.

export LD_LIBRARY_PATH=/usr/local/lib/

Expected result examples:

[user@host ~]$ opusenc --version
opusenc opus-tools 0.1.8 (using libopus 1.1) <<< THIS!
Copyright (C) 2008-2013 Xiph.Org Foundation

Not the expected result:

[user@host ~]$ opusenc --version
opusenc opus-tools 0.1.8 (using libopus 1.0.3) <<< DO NOT WANT!
Copyright (C) 2008-2013 Xiph.Org Foundation

Broadcast

opusenc /tmp/mpd.fifo --raw --raw-rate 44100 --bitrate 64 - | \
oggfwd localhost 8000 password /mpd.opus
TTY :: [-] 00:30:10.26 0.999x realtime, 63.03kbit/s

opusenc reads the fifo output from MPD and feeds
Opus encoded audio to STDOUT.
oggfwd takes the output via STDIN and feeds it to Icecast.

By default opusenc assumes 2 channels use "--raw-chan 1" for mono.
Make sure to adjust MPD to mono before flipping this switch.

PROTIP: man opusenc << #Seriously #LateNightReading #OPTIONS

Playback

Open the stream url in a browser / VLC / an awesome media player.

Or if you prefer the CLI approach:

curl http://localhost:8000/mpd.opus -s | \
opusdec --quiet - - | \
sox -t raw -r 44.1k -c 2 -e signed -b 16 - -d
TTY :: In:0.00% 00:01:39.47 [00:00:00.00] Out:4.39M [ -====|=====-]

curl 'streams' the audio data in from icecast.
opusdec decodes STDIN to STDOUT.
sox takes raw STDIN and provides PCM outputs to audio device.

Parley

"And thirdly, the code is more what you'd call 'guidelines' than actual rules." - Captain Barbossa

TL;DR;

I don't have alot of bandwith:

opusenc --bitrate 48 --cvbr --framesize 60

Shut up I have Opus 1.1 and plenty upstream:

opusenc --vbr

A Guideline

The man page stipulates:

"Default is 64kbps per mono stream, 96kbps per coupled pair."

Which is a very conservative but solid guideline.

If you provide an input of 44.1khz / 16-bit / Stereo for most genres of music 48kbit combined with a framesize of 60 will give an adequate output that would be very friendly to streaming to EDGE / 2.5G connections.

Ideally a bitrate of 64kbit provides the most 'transparent' output and will also be minimally destructive on genres that involves traditional instruments. ie. Orchestral Music, Choirs, Guitar, etc.

As streaming music is not a 'real-time' affair upping the framesize to 60ms gives the best quality return. In un-scientific testing the lower the framesize the more artefacting and flutter came into play.

CBR vs VBR vs CVBR

In totally un-scientific testing CVBR just appears to sound best. But as always feel free to experiment.

Fellow scientist adds: (17/09/2012)
There is a regression present in the release code which affects their relative performances which one is best does wind up subjective to what bitrate you are doing it at. Via #opus

A sonata for VBR in Opus 1.1: (07/12/2012)
I've been running opusenc near exclusively in VBR mode since the 1.1-beta improvements and in general the bitrate tends to hover between 90 - 115Kbit.

If your music library is mostly FLAC it's gorgeous. If your music library is mix mash of potato quality you get "exactly" the same potatoes delivered where you listen to your Opus stream.

Quality vs Bandwidth

Based on un-scientific testing consider it very much an un-official guideline that works out pretty well. This table reflects the initial release of the Opus codec. It is assumed Opus 1.1 improves on it till further time for testing has been found.

Testing was done with both lossy and lossless material with the main goal of being as "compression transparent" as possible. As such the bitrates labelled as "Ideal" work best when streaming lossless material. "Perfect" should be interpreted as close to perfect as you can get in this type of situation regardless of source.

96 kbit - 44.1 khz / 16-bit / Stereo - Perfect
64 kbit - 44.1 khz / 16-bit / Stereo - Ideal
48 kbit - 44.1 khz / 16-bit / Stereo - Adequate for most genres
32 kbit - 44.1 khz / 16-bit / Mono   - Mono, but Ideal

56 kbit - 32.0 khz / 16-bit / Stereo - Perfect
48 kbit - 32.0 khz / 16-bit / Stereo - Ideal
32 kbit - 32.0 khz / 16-bit / Stereo - Adequate for most genres

28 kbit - 32.0 khz / 16-bit / Mono, but Perfect
24 kbit - 32.0 khz / 16-bit / Mono, but Ideal

24 vs 28 kbit mono does makes a very audible difference.

32 kbit - 22.05khz / 16-bit / Stereo - Ideal
24 kbit - 22.05khz / 16-bit / Stereo - Adequate for most genres
20 kbit - 22.05khz / 16-bit / Mono   - Mono, but Ideal
16 kbit - 22.05khz / 16-bit / Mono   - Mono, acceptable if you want to.

Etcetera

A note on switches

To see if curl is connecting remove -s.
To see opusdec output remove --quiet.

sox       #SoX
-r 44.1k  #Samplerate, change to 11k, 22.05k, 32k or 96k for amusement.
-c 2      #Channels, change to 1, 3 or 4 for amusement.
-e signed #Don't change this. Seriously Bro. If you do, mind your volume.
-b 16     #Change to 8 for half an ocean. 32 for double time.
-         #STDIN.
-d        #Default audio device.

Discover for yourself what all these numbers and things mean.

CPU / Memory Usage

SoX + OpusDec averages 0.7% + 2.0% CPU time | 2.9MB + 728KB mem.
OpusEnc averages 2.9% CPU time | 784KB mem.
Chrome built-in Opus playback 2-3% CPU time.
Firefox built-in Opus playback 23% CPU time...

Vocoderised Decepticons

audio_output {
	type            "fifo"
	name            "fifo"
	path            "/tmp/mpd.fifo"
	format          "8000:16:1"
}
opusenc /tmp/mpd.fifo --raw --raw-rate 8000 --raw-bits 16 --raw-chan 1 \
--cvbr --framesize 2.5 --bitrate 12 - | \
oggfwd localhost 8000 password /mpd.opus

With this the encoded output will turn into a vocoderized like mess sounding like a monotone decepticon.

The assumption is that something happens to the stdin buffer that causes opusenc to throw a wobbly. Since framesizes of 5 and 10 do not function either with anything below 22.05Khz.

Feeding a normal pcm file into the encoder delivers as expected.

UADE123

When uade123 is set to output on STDOUT it wants to go as fast as the system can write which causes serious CPU spiking. The solution is hacky but effective.

PipeViewer a.k.a pv has an option that allows one to rate limit and adjust buffer sizes.

Invoking:

uade123 --frequency=44100 -r -z ./* -c | pv -L 180634 -q

Will rate limit uade123 to writing 1 second of 44.1khz / 16-bit / Stereo into the pipe buffer per 'cycle'. The frequency flag is provided as uade123 seems to output 96khz if this is left out despite the man page saying 44.1khz is the default.

Line-in / Live Audio Feed

This one is straight out of the opusenc man page with a tiny change.

Assuming you are on Linux and like to use raw ALSA this will encode and stream whatever is connected to line-in on your audio device.

arecord -f S16_LE -c2 -r48000 -twav - | opusenc --bitrate 64 - - | \
oggfwd localhost 8000 password /mpd.opus

Captain Planet

"POSIX, STDIO, PIPES, JACK, FIFO.
By your powers combined, I am Captain Planet."

Having an stdin / stdout interface for JACK, is such a thing even possible ?

Yes it is.

Could we use Netcat to pipe audio over a LAN, is such a thing even possible ?

Yes it is.

If you like adventure and your power level is over 9000 this may just be the sub-section for you ?

Yes it is.

JACK stdout to Opus

So, you have JACK running and would like to feed whatever is playing into an Opus stream but the application in question does not know what Icecast is nor does it know what Opus is.

A dapper chap by the name of Robin Gareus has created a tool that exposes an STDIN and STDOUT interface to JACK. Aptly called jack-stdio.

I trust you are familiar with doing a git clone and a make; make install, as well as the naming conventions of JACK clients.

jack-stdout \
audacious-jack_15247_000:out_0 \
audacious-jack_15247_000:out_1 | \
opusenc --raw --raw-rate 44100 --vbr --bitrate 64 --framesize 60 - - | \
oggfwd localhost 8000 password /mpd.opus

In this instance we are connecting the output from Audcious to jack-stdio and piping it through the now familiar process. As a bonus the stdio pipe keeps running even without Audacious being connected or running which then allows one to feed anything else back in via qjackctl if so desired.

Alternatively, launching as:

jack-stdout out_0 out_1

Will give an error message, but does expose a connectable port.

JACK stdin to Darkice

To be expanded on in the next revision, but effectively this will permit the creation of an HE-AAC stream feed via Darkice from an MPD source.

Deliciously hacky and most functional for iOS devices.

You want a separate fifo output for this as MPD does not appreciate it when multiple cat attempts happen on the same fifo.

It is assumed you've succesfully compiled Darkice in combination with the aacplus library and the other dependencies.

/etc/darkice.cfg
----------------
[general]
duration        = 0          # duration of encoding, in seconds. 0 means forever
bufferSecs      = 2          # size of internal slip buffer, in seconds
reconnect       = yes        # reconnect to the server(s) if disconnected

[input]
device          = jack_auto  # OSS DSP soundcard device for the audio input
sampleRate      = 44100      # sample rate in Hz. try 11025, 22050 or 44100
bitsPerSample   = 16         # bits per sample. try 16
channel         = 2          # channels. 1 = mono, 2 = stereo

[icecast2-0]
bitrateMode     = cbr        # average bit rate
format          = aacp       # format of the stream: ogg vorbis
bitrate         = 48         # bitrate of the stream sent to the server
server          = 127.0.0.1  # host name of the server
port            = 8000       # port of the IceCast2 server, usually 8000
password        = trololol   # source password to the server
mountPoint      = mpd.aac    # mount point of this stream on the server
name            = MPD        # name of the stream
description     = MPD        # description of the stream
url             = http://n.n # URL related to the stream
genre           = Everything # genre of the stream
public          = no         # advertise this stream?
----------------
Option 1:

Step 1 - Open a terminal, start darkice.
Step 2 - Fire up qjackctl.
Step 3 - Connect MPD output to Darkice input.
Step 4 - ???
Step 5 - Done.
Option 2:

audio_output {
        type            "fifo"
        name            "fifo-darkice"
        path            "/tmp/mpd-di.fifo"
        format          "44100:16:2"
        always_on       "yes"
}
cat /tmp/mpd-di.fifo | \
sox -t raw -r 44.1k -c 2 -e signed -b 16 - -t raw -r 44.1k -c 2 -e signed -b 16 - | \
jack-stdin darkice-20478:left darkice-20478:right

20478 is the PID for Darkice, replace with appropriate PID.

Fun with NetJack

The things you learn from running Linux as your primary desktop.

On your NAS, assuming it has no sound card and has IP 192.168.88.88:

jackd -R -d netone &

On your playback machine:

jack_netsource -H 192.168.88.88 -N NAS-MPD &

Option 1:

Start qjackctl, connect NAS-MPD to system.

Option 2:

jack_connect NAS-MPD:capture_1 system:playback_1 &
jack_connect NAS-MPD:capture_2 system:playback_2 &

You may not hear MPD yet if you don't have a Jack output in MPD.

Add this to your .mpdconf:

audio_output {
       type    "jack"
       name    "MPD Jack"
}

Restart MPD and toggle your Jack output.

Enjoy your sample timing exact latency free audio pipe.

Note: This does push 550-600KB/sec of network traffic both ways as long as jack_netsource is active.

But surely you are connected on ethernet right ?

Fun with Netcat

These notes have been preceded by the above.
But this is still good fun! (07/12/2012)

You may ask yourself, Why ?

Because I can and because I run MPD on a NAS and whenever I switch tracks with ncmpcpp I can't stand the latency that occurs when listening through a streaming socket on my local LAN.

RAW! | 200K/sec | Latency 0.200ms | no encode cpu time.
MPD Host:
--
cat /tmp/mpd.fifo | nc -k -l 3333
Playback Host:
--
nc 192.168.88.88 3333 | sox -t raw -r 44.1k -c 2 -e signed -b 16 - -d

or

nc 192.168.88.88 3333 | aplay -i -f cd

Should you feel that 200KB/sec is too much, at the sacrifice of a little latency you can have FLAC pipes.

FLAC | Default (5) 100 - 120K/sec, Level 8 35 - 120K/sec |
Latency about 0.75 sec. | CPU: Default - 1%, Level 8 - 3%
MPD Host:
--
cat /tmp/mpd.fifo | \
flac --endian=little --channels=2 --sample-rate=44100 --bps=16 --sign=signed - | \
nc -k -l 3333
Playback Host:
--
nc 192.168.88.88 3333 | \
pv -b | flac -d -F - | \
sox -t raw -r 44.1k -c 2 -e signed -b 16 - -d

We force the -F flag to avoid drama, and gaining the ability to resume the playback stream vs having to restart netcat on both ends.

Without -F the FLAC decoder on the playback host will complain about a corrupted stream.

*** Got error code 0:FLAC__STREAM_DECODER_ERROR_STATUS_LOST_SYNC

You might argue, one could add a FLAC output that's internal to MPD to bypass alot of comedy. This, because I can in the spirit of science.

"Captain Monty, he's a hero, gonna take those patents down to zero!"

Fun with RockBox and Opus

Tested an iPod Nano and iPod Video with the latest RockBox firmware, it works but playback performance is hit and miss in my case. Audio plays fine but controls take a long time to become responsive.

Mudkips

They don't wear coats.

Now that you've reached the end of this you shouldn't: Follow me, Like me, Flattr me, Web 3.0 me.

Don't worry about me. Walk your own path with your head held high.

I only claim credit for reading man pages and adding some ketchup. Nothing else.

Ergo, this document is licensed under the WTFPLv2.

Revision Log

Revision: 05/07/2014

Spend some google/duckduck-fu on the meta data issue.
Hence a section on meta data with relevant links has been written.

MPD has been updated to 0.18.11
Improved Opus file support and fixes.

Icecast has been updated to 2.4.0
Which prompted testing and tinkering, as Ogg Opus support is official now.

Opus has remained at 1.1 stable.
Lord Monty and friends quiety continue to tinker in the Opus git repo.

Trivia:
By today's count 1971 people have perused this wall of text since
it's original inception or there abouts.

Revision: 07/12/2013

Lord Monty and friends have released Opus 1.1 stable!
With this also opus-tools 0.1.8. Relevant releases on the Opus HomePage.
Sections have been updated to account for changes in opus-tools.
Sections have been updated to reflect upon changes in Opus 1.1.
Darkice notes have been expanded slightly.
Network audio notes have been expanded slightly.
Other corrections where appropriate.
To anyone reading this, a good winter solstice and yuletide is implied.

Revision: 01/08/2013

Lord Monty and friends have released Opus 1.1 beta!
Moved revision log to bottom of article.
Added package info for Fedora.
Added an index.
Added "Captain Planet".

Revision: 21/06/2013

Added Browser information.
Updated Firefox vs Jack information.
MPD native Opus output option.

Revision: 21/01/2013

Added live audio input section.
Minor fixes.

Revision: 29/10/2012 & 31/10/2012

Updated bitrate table, minor other fixes.
Updated title and cleaned up.

Revision: 21/10/2012

VLC 2.0.4 has been released with Opus support.
Average CPU time hovers around 3.8%, 46.8MB memory use.

Achievement Unlocked:
Opus stream playback in a more user-friendly and cross-platform way.

Initial Write up: 13/09/2012

//- Rev -// v2.0 // 1451626851