jmvalin: (Default)

I just got back from linux.conf.au 2012 in Ballarat. The video for the talk I gave, Opus, the Swiss Army Knife of Audio Codecs, is now available on the Opus presentations page. For the Ogg-impaired, a lower-quality version is also available on YouTube.

For those who are into speech codecs, I also recommend watching David Rowe's presentation: Codec 2 - Open Source Speech Coding at 2400 bit/s and Below. His presentation was selected as one of the four best talks at LCA this year -- well worth watching.

jmvalin: (Default)

Those who have been following the Opus git repository in the past few weeks probably haven't noticed much work going on. The reason is pretty simple, most of the work has been going on elsewhere in an experimental branch (exp_wip3 names for now) of my private repository. The reason it's in an experimental branch is that its not fully converted to fixed-point and hasn't been tested on any frame size other than 20 ms. Here's an (incomplete) list of changes for now:

  • Really unconstrained VBR (not trying to keep the same average rate)
  • Tonality detection to give highly tonal audio a boost in bit-rate
  • (yet another) rewrite of the transient detection code
  • New dynamic allocation code that boosts the rate of bands that have significant spectral leakage caused by short blocks

Thanks to these changes, the quality has (as far as we can tell) gone up compared to the current master branch. I invite you to judge for yourself by comparing the audio coded with the current master branch with the audio coded with the new exp_wip3 experimental branch. This is 64 kb/s, so fairly low rate for stereo music. The original is here. Let me know what you think.

jmvalin: (Default)

(voir série rénovations)

Nous avons décidé de faire affaires avec Armoires Créabec pour nos armoires de cuisine suite à une recommandation. Créabec s'affiche comme un fabriquant d'armoires haut de gamme. Nous aimons le look général de nos armoires de cuisine. Les composantes sont de qualité et la fabrication des armoires elles-mêmes est très bien. Par contre, c'est une toute autre histoire pour ce qui est du service, du transport et de l'installation des armoires! Nous avons été conseillés par Christian. Nous avions un échéancier très serré pour faire tous nos travaux avant d'enménager dans notre nouvelle maison. Nous avons donc fait des pieds et des mains pour choisir rapidement nos armoires de cuisine, avec la promesse du vendeur que la cuisine serait prête à temps. Une fois de contrat signé, la date estimée avait déjà glissé de 1 semaine. En cours de route, d'autres délais sont apparus. Bref, notre cuisine a été installée plus de 2 semaines plus tard que la date initialement promise. S'ajoute à cela passablement de difficultés à avoir des retours à nos appels téléphoniques. D'autre part, une fois tout installé, nous avons constaté qu'un grand nombre de portes d'armoires et caissons étaient égratignés et endommagés, que les joints des o-gees et cache-néons étaient mal alignés, et que les murs étaient abimés (pas juste la peinture - nous devons refaire le plâte à certains endroits). Christian est alors venu constater par lui-même l'état de la cuisine. Il a admis que: "C'est la première fois que je vois une cuisine aussi cochée que ça". Plusieurs portes d'armoire ont donc été retouchées en usine. Il a ensuite été convenu que l'installateur reviendrait pour remettre les portes, remplacer un panneau endommagé, réparer d'autres égratignures de surface et refaire les joints de o-gees/cache-néons problématiques. L'installateur, Rodrigue, est donc revenu avec comme seul outil: un crayon de cire! Par la suite, Christian nous a assuré qu'il aller corriger ce qui restait et qu'il accompagnerait son installateur lors de sa prochaine visite.

Deux semaines plus tard, le discours était bien different. Christian annonce la position de la direction: "Il n'y aura plus rien qui va être fait sur votre cuisine". Essayant de comprendre le changement de cap, Christian me sert des insultes et des attaques sur le plan personnel: "Votre attitude n'est pas bonne"; "Vous ne dégagez pas une bonne énergie"; "De toute façon vous ne serez jamais satisfaits"; "Vous êtes pas facile comme personne". Bref, nous sommes extrêmement déçus du dénouement de cette histoire. Les propos qui ont été tenus à notre égard sont tout à fait inadmissibles, surtout considérant que nous y avons laissé une somme d'argent considérable pour un travail qui ne nous satisfait pas et qui ne rencontre pas les promesses qui nous ont été faites. Disons qu'on est loin du principe que "le client a toujours raison"!

Conclusion: Ne pas réparer une erreur est souvent pire que l'erreur elle-même et c'est exactement la position que Créabec a choisi de prendre dans notre cas. Nous ne referons certainement pas affaires avec Armoires Créabec dans le futur. Ce que nous retenons de cette expérience est de prendre plus de temps pour faire le choix de ses armoires, mais aussi du farbiquant d'armoires. Aussi, il faut mieux éviter autant que possible de payer le montant total "à la livraison" comme nous avons fait et plutôt payer "après l'installation".

jmvalin: (Default)

(voir série rénovations)

Nous avons fait affaire avec Entreprise Jeannot Paquette Inc. pour faire installer un nouveau système de chauffage au gaz, installer une nouvelle salle de bain au sous-sol, ainsi que pour l'installation de plomberie de la nouvelle cuisine. Nous sommes très satisfaits de l'installation du système de chauffage. Les travaux ont été faits proprement, dans les délais, et sans surprise. Le seul pépin est venu de Gaz Métro (d'un sous-contracteur pour être plus précis) qui a dépassé la date limite de branchement d'une semaine (pas pratique avec une cuisinière au gaz).

Côte plomberie, les travaux de "rough" (passer les drains et les tuyaux pour la salle de bain du sous-sol) se sont bien déroulés et ils ont été faits dans les délais -- souvent avec très peu de pré-avis de notre part -- ce qui a été très apprécié. Pour ce qui est de la finition, il y a eu quelques pépins avec la pose de l'évier (fuite dans le drain) de la cuisine et l'assemblage de la douche. Le problème avec le drain de l'évier a été réglé rapidement. Pour ce qui est de la douche, nous avons acheté une douche OVÉ tout en verre qui semble difficile à assembler. Même après un 2e passage du plombier pour ajuster l'assemblage (les panneaux de verre n'arrivent pas à angle droit), il y a toujours des ajustements à faire. Nous attendons un retour du plombier à ce sujet (à suivre).

Tous les plombiers qui sont venus faire des travaux (3 en tout) étaient très sympatiques, minutieux et ponctuels, ce qui est toujours agréable et rassurant. Aussi, une (petite) partie des travaux a été faite "à l'heure" et le temps a été compté de façon tout à fait honnête. Nous avons été rapidement en confiance avec l'Entreprise Jeannot Paquette.

Conclusion: Entreprise Jeannot Paquette offre un excellent service. Nous avons grandement apprécié que les quelques problèmes d'installation de la plomberie aient été réglé rapidement et sans difficulté. Nous referons affaires avec Jeannot Paquette avec plaisir si l'occasion se représente.

jmvalin: (Default)

(voir série rénovations)

Nous avons demandé à Toiture Alpine de remplacer notre vieille toiture en goudron par une membrane élastomère. Le représentant était très courtois et nous avons eu un estimé en peu de temps. L'installation s'est bien déroulée, quoique avec deux jours de retard sur l'horaire (dont une journée sans avertir du délai). L'installateur a pris le temps de nous expliquer le pour et le contre de certaines options lors de l'installation. Je n'ai pas encore pu inspecter les travaux (pas encore d'échelle), mais je peux au moins dire que le nouveau toit a déjà résisté à quelques orages.

Conclusion: Nous referons probablement affaire avec Toiture Alpine si l'occasion se represente (pas trop tôt j'espère).

jmvalin: (Default)
I just got the news today that LCA 2011 has accepted my talk proposal: "Opus, the Swiss Army Knife of Audio Codecs". I'll be presenting it in Ballarat, Australia in January. If there's any specific topic you'd like me to include in the talk, please let me know (by email or comment on this post).
jmvalin: (Default)

(voir série rénovations)

Nous avons fait faire notre sous-sol, une chambre à coucher, et une galerie par Entreprises Spécialisées Enr. d'Acton Vale. Ils ont fait un travail de bonne qualité et très solide. Par contre, nous regrettons fortement les avoir payés à l'heure. Pour dix jours de travaux, nous avons été facturés 294.5 heures, soit près de 15 heures par jour par travailleur. De plus, les heures de transport (près de 6 hres par jour) nous ont été facturés au plein tarif. Nous n'avons jamais pu avoir le détail des heures travaillées (facture très vague, pas de réponse précise au téléphone), mais notre estimé est bien en-deça.

Conclusion: Ne jamais payer à l'heure pour des gros travaux, mais s'entendre sur un coût forfaitaire. Prendre entente sur la facturation des heures de transport. Nous sommes satisfaits du travail effectué par l'équipe des Entreprises Spécialisées Enr., mais à cause de la facturation que nous avons estimée excessive, nous ne referons probablement plus affaire avec eux.

jmvalin: (Default)
Since yesterday, the IETF audio codec requirements are now published as RFC 6366. While the requirements aren't by themselves interesting (why discuss abstract requirements when you can discuss actual running code?), it's an important milestone in that it's the first document published by the Working Group. It also means one less source of pointless arguments. The guidelines document is now next in line and should go to IETF last call soon.

Now the interesting part of the Opus codec itself. That's the only document that really matters. That one should go to Working Group Last Call (WGLC) pretty soon (possibly next week or two). In the mean time, we're working on improving the clarity of the draft, cleaning up the code and fixing all the last few issues that have been reported since the first WGLC. Stay tuned.
jmvalin: (Default)

(voir série rénovations)

Tapis Nadon est une entreprise familiale qui offre toute une variété de couvre-planchers (tapis, bois et céramique). Nous sommes très satisfaits, autant du service, de la pose que du tapis lui même. Le vendeur, M. Nadon lui-même, a bien pris le temps de nous conseiller et de nous montrer tous (et je dis bien tous!) ses tapis. Du côté de la pose, l'installateur a bien pris le temps de niveler (autant que possible) le plancher qui était très croche. La pose a été faite méticuleusement selon le "pattern" des tuiles de tapis que nous avions choisi. Le prix était aussi raisonnable (similaires à d'autres).

Conclusion: Il y a encore des gens qui ont le souci du détail. Nous referons certainement affaires avec Tapis Nadon si l'occasion se represente.

jmvalin: (Default)
(première entrée de la série rénovation)

Tremex est une entreprise familiale devenue un distributeur Solaris depuis quelques années. Nous sommes très satisfaits des fenêtres et de la bay window (fabriquées par Solaris). La porte patio est bien. Il y a eu quelques pépins avec la serrure de la porte patio, mais le service après vente de Solaris a rapidement réglé le problème. Nous avons été conseillés par Éric qui nous a donné un très bon service et qui a été d'une très grande aide avec les communications avec l'installateur. L'installateur a fait un bon travail, mais il a été difficile de communiquer avec lui (ne retournait pas les appels). Il etait beaucoup plus facile communiquer via Éric. Le choix des options de la bay window a été difficile car ni Tremex, ni l'installateur ne pouvait nous fournir de modèles types - le problème a été réglé depuis puisque Tremex a bonifié sa salle de montre avec les différents modèles de Bay windows possibles. Notre Bay window n'est pas tout à fait comme nous l'avions demandée au départ, mais elle est suffisemment bien faite pour la conserver ainsi et en être satisfaits. Le prix était "dans la moyenne" des soumissions. Nous considérons que les produits Solaris ont un très bon rapport qualité prix. Les fenêtres en PVC bloquent étonnament bien le bruit et le mécanisme fonctionne très bien.

Conclusion: L'installation compte souvent autant que le produit et un bon service après vente, c'est important. Si c'était à recommencer, nous referions probablement affaires avec Tremex.

jmvalin: (Default)

Ma conjointe et moi avons fait faire d'importants travaux à la maison que nous avons acheté récemment. Les travaux terminés (aujourd'hui!), nous avons décidé de partager notre expérience dans le but qu'elle puisse profiter à d'autres. En effet une des difficultés principales que nous avons eues a été de trouver des recommendations d'entreprises pour effectuer les travaux. Nous avions choisi de ne pas faire affaires avec un entrepreneur général et de coordonner les travaux nous-mêmes. Nous avons donc appris plusieurs choses à faire et (surtout) à ne pas faire quand on gère des travaux de rénovations. Voici donc une série d'entrées sur notre expérience de rénovation et les conclusions que nous en avons tirées.

MàJ: Index de la série:

  1. Tremex Portes et fenêtres
  2. Tapis Nadon
  3. Entreprises Spécialisées Enr.
  4. Toiture Alpine
  5. Entreprise Jeannot Paquette Inc.
  6. Armoires Créabec

jmvalin: (Default)
I spent my last week in Quebec City at the 81th IETF meeting. The most important meeting there for me was the codec WG. The good news is that there's been a lot of progress in that meeting. A few issues with the Opus bit-stream (e.g. padding, frame packing) were resolved and the chairs are planning a second working group last call in four weeks. After that if all goes well, the codec can go to IETF last call and then RFC.

My week at the IETF meeting was also my first week at my new job working for Mozilla. I've been hired specifically to work on Opus and other codec/multimedia development, so I should have a lot more time for that than I used to. First thing on my list: finishing the Ogg mapping for Opus and releasing an Ogg encoder and decoder.
jmvalin: (Default)
Last year I submitted an entry to the Underhanded C contest, but unfortunately no winners were ever announced and there seems to have been no activity whatsoever on the contest page. So I've decided to at least make the code I wrote public in case it's interesting to someone. First, these are the rules of the challenge; one must write an innocent-looking program that allows an evil check-in clerk to mis-route somebody's luggage just by entering a malicious comment in the luggage database.

First, here's the evil C source code for my entry in the Fifth Underhanded C Contest. My C program should run fine with most platforms and compilers. I tested it with Linux/gcc.

The program can be tested by doing:

% gcc -W -g -O2 -o lug luggage.c

For most inputs, this code behaves just as expected and does not produce any error or evil behaviour. However, this luggage_input.dat input database contains some malicious comments on some of the bookings.

% cat luggage_input.dat | ./lug - - - -

I attached the output (luggage_output.dat) obtained with the command above. The luggage_input.dat file demonstrates three different mechanisms a clerk can use to mis-route luggage, each with a different level of flexibility and innocence. The three "evil" lines in the input are:

1)
1261959531 UA129080 UA530 WAS YUL Original flight for this passenger who was a bit upset because: "UA210 WAS PUT ON HOLD" he said

This line overrides the original entry for a Washington->Montreal flight and replaces it with a flight going to Puttaparthi, India. It is relatively innocent and with a bit of creativity, the clerk can achieve plausible deniability for the evil comment.


2)
1262029822 UA129086 LH1450 FRA LHR Passenger A says screw it, send me to London. X 1261959531 UA129080 UA220 PUT NRT This is not so subtle but I can put whatever I want here

This line allows the clerk to add any entry to the database with complete flexibility. Obviously, it's hard to deny that the clerk's comment was malicious. This hole can be used recursively to add multiple entries from a single comment.


3)
1262030463 UA129086 LH1280 FRA DUB Direct flight canceled because of fog,routed through Ireland

This line causes the parser to skip the following line, which means that the Dublin->London flight is never parsed. This behaviour is the least flexible, but it offers the most innocent of all evil comments.


Note that the three methods listed above are totally independent and a clerk does not have to make use of all of them to mis-direct luggage (each is sufficient by itself). From the input file, the second line demonstrates that a non-evil comment that goes over the length limit does *not* trigger any mis-routing.
jmvalin: (Default)
Monty has just finished a very interesting CELT demo that covers most of the techniques used in CELT and their history. It also includes a large number of audio samples, including comparisons with Vorbis and various flavours of AAC. CELT has come a long long way in the past three years and even in the past three months, quality has gone up significantly, to the point where it sounds better than Vorbis on many (most?) samples and even comparable to HE-AAC at 64 kb/s. The target is to freeze the bit-stream early January for integration within the Opus codec, but there may still be a few quality improvements we can make before that -- not to mention all the encoder-side improvements we can make even after the bit-stream is frozen.
jmvalin: (Default)
For those who haven't watched it yet, Monty has recently released a A Digital Media Primer for Geeks, an introductory video on (surprise!) digital media. While this is just an introduction, there are plans to produce follow-ups. Enjoy!
jmvalin: (Default)
Recently, I was curious about how CELT and Vorbis differ in the way the allocate bits. Now, CELT's bit allocation is really explicit with a fixed number of bits per band. This is not quite the case of Vorbis, so a comparison isn't straightforward. What I've done is I've ran some audio (mono version of the audio I used in my previous post) through Vorbis and measured the SNR as a function of frequency. By dividing the SNR by 6 db/bit, I can get the (approximate) bit allocation. The result (smoothed a bit) is shown below for encoding quality -1 to 10.



Now, these are the curves currently used by CELT for its bit allocation:




Among the differences are:
1) The Vorbis allocation lines for different rates are nearly parallel, meaning that starting from a certain allocation, bits are added/removed nearly uniformly when changing the bit-rate
2) Vorbis allocates a lot of bits to very low frequencies, and then there is a sharp drop-off around 400 Hz.
3) In the mid-high range, the Vorbis allocation is much flatter than CELT

Now I tend to trust that the Vorbis allocation has been decently tuned, so the question is whether the differences in allocation are due to fundamental differences between Vorbis and CELT or just to bad tuning of CELT so far. I suspect there's a bit of both. I've actually created an exp_vorbis_tuning branch to find out. I just took the Vorbis data and turned that into CELT bit allocation data just to see what it would do. I expected something terrible, but it actually sounds quite decent. In some circumstances, it sounds a bit worse than the original CELT tuning, but I think in other cases it actually sounds better. More investigation needed...
jmvalin: (Default)
I've been doing some tuning of CELT over the past few days and thought it would be a interesting to compare how the quality of CELT has evolved over the coarse of its development. It's easy to lose track when each change you made provides only a tiny improvement. Using this stereo reference file, I've tried encoding with a few different versions. Even though I don't normally recommend using that bit-rate for stereo, I've used 40 kb/s for the comparison because it makes the artefacts (and thus the differences) more obvious. A bit more than two years ago, this is what CELT 0.3.2 sounded like at 40 kb/s. Then there was version 0.5.2 that improved, with the latest version, 0.8.1. And now, here's what in the current git to be released as 0.9.

OK, I know the quality isn't that good at such a low rate, so here's a slightly higher bit-rate. This is current git at 64 kb/s, compared to G.719 at the same rate. I'm curious to hear comments about how CELT does compared to G.719 because we haven't done any formal comparison yet on music.

Even at 64 kb/s, the artefacts are generally audible, even though they're usually no longer annoying. They start being less audible at 80 kb/s, as you can see, and then the quality continues going up all the way to 256 kb/s or even higher.
jmvalin: (Default)
I mentioned in my previous post that much technical work was done while at the IETF meeting. First, it's always good to have other people looking at your code, and meeting face to face is the best way to actually explain your code to others. The first thing that happened while Tim was looking at my code was he found much simpler ways (closed-form) to compute probability distributions I was computing in an iterative manner. The next thing that happened was that while I was trying to explain to him some bit allocation detail, I just couldn't figure out why there was a division by two in the bit allocation of the band split. The explanation was simple: we just shouldn't be dividing by two. That resulted in an easy (though small) increase in quality.

Another CELT related topic that we were finally able to investigate more is allocation of the bits between the fine energy (gain) and the PVQ codebook (shape). There was a mismatch between the code and the theoretical analysis we had. After actual calculations based on (Laplacian) random data, Tim found that it matched the theory almost perfectly. The only problem is that PQevalAudio (objective quality measurement) disagrees with the theory as to what the optimal allocation is. The problem is that it's very hard to tell which one is really optimal just by listening, so this is still not fully resolved.

The last thing we've worked on (with Tim) that's still ongoing is optimising the pdfs used by the range coder for coarse energy encoding. There may be a few
bits there we can save so, it's worth trying.
jmvalin: (Default)
Here's good news from the codec Working group meeting that was held on Monday. Koen Vos and I presented the prototype codec draft, including the results of an informal MUSHRA test (see slide 8). The bottom line is that the hybrid codec running with full audio bandwidth (48 kHz) at 32 kb/s significantly out-performed all other codecs under test, including BV32, SILK-WB, CELT alone and G.719. For the first three, this is hardly surprising: BV32 and SILK were using "wideband" (i.e. bandlimited at 7 kHz) audio, which just cannot match the bandwidth of the hybrid codec, and CELT was just never designed for 32 kb/s and has annoying artifacts at that rate. As for G.719, it was the closet contender in that test, but still had annoying coding noise that was easily noticeable and relatively annoying. On the other hand, several of the listeners had a very hard time telling the hybrid codec from the original.

Following the presentation, the chairs decided to take a hum and there was "rough consensus" in the room for adopting the proposed codec as the baseline codec and thus adopting the draft as a working group document. This still has to be confirmed on the mailing list, but at least things are looking good. This doesn't mean the codec will be accepted as is, but it's a good starting point from which we can keep improving. The rest of the meeting was a lot of discussions on the requirements and the testing, which I'm sure will be better summarized in the minutes.

Other than that, the most useful part of this IETF meeting was having Koen Vos, Timothy Terriberry and I in the same place. We managed to get a lot of technical stuff done -- both conceptual and actual code. More on that later.
jmvalin: (Default)
OK, it was nearly funny at first, but this is now getting annoying. Not content with spamming me twice about this "pay to publish" scheme and then following up -- twice again -- the week after, I'm now getting a second pair of followups still from Ms. Ivana Lorkovic. Looking a bit more closely at the book description, I see that the text is copied verbatim from the Wikipedia page on Sound Localization, of which the first sentence goes "Sound localization refers to a listener's ability to identify the location or origin of a detected sound in direction and distance". Of course, there is no attribution or mention of the Wikipedia CC license. Looking again at other books, i see that description of the books on Photodiodes is also copied verbatim from wikipedia. Same for "Aluminium Alloys". On the other hand, the description of the book on self-organizing maps (SOM) was not copied from wikipedia, it was copied from some slides at a German university. All in all, it doesn't look very good and unless Ms. Lorkovic got approval first, it looks like it could be a case of copyright violation. OK, done ranting. I don't think I'll be publishing anything with intechweb.

Profile

jmvalin: (Default)
jmvalin

September 2017

S M T W T F S
     12
3456789
10111213141516
17181920212223
2425 2627282930

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Oct. 19th, 2017 11:27 pm
Powered by Dreamwidth Studios