# Contributors to x264
# 
# The format of this file was inspired by the Linux kernel CREDITS file.
# Authors are listed alphabetically.
# 
# The fields are: name (N), email (E), web-address (W), CVS account login (C),
# PGP key ID and fingerprint (P), description (D), and snail-mail address (S).

N: Alex Izvorski
E: aizvorski AT gmail DOT com
D: x86 asm (sse2)

N: Alex Wright
E: alexw0885 AT hotmail DOT com
D: Motion estimation (subpel and mixed refs)
D: B-RDO

N: bobololo
D: Avisynth input
D: MP4 muxing

N: Christian Heine
E: sennindemokrit AT gmx DOT net
D: x86 asm

N: David Wolstencroft
D: Altivec optimizations

N: Eric Petit
E: eric.petit AT lapsus DOT org
C: titer
D: Altivec asm
D: BeOS and MacOS X ports.
S: France

N: Gabriel Bouvigne
E: gabriel.bouvigne AT joost DOT com
D: 2pass VBV

N: Guillaume Poirier
E: gpoirier CHEZ mplayerhq POINT hu
D: Altivec optimizations
S: Brittany, France

N: Jason Garrett-Glaser
E: darkshikari AT gmail DOT com
D: x86 asm, 1pass VBV, adaptive quantization, inline asm
D: various speed optimizations, bugfixes
S: USA

N: Laurent Aimar
E: fenrir AT via.ecp DOT fr
C: fenrir
D: Intial import, former maintainer
D: x86 asm (mmx/mmx2)
S: France

N: Loren Merritt
E: lorenm AT u.washington DOT edu
C: pengvado
D: maintainer
D: All areas of encoder analysis and algorithms
D: Motion estimation, rate control, macroblock & frame decisions, RDO, etc.
D: Multithreading
D: x86 and x86_64 asm (mmx/mmx2/sse2)
S: USA

N: Mans Rullgard
E: mru AT inprovide DOT com
C: mru
D: Rate control
S: Southampton, UK

N: Michael Niedermayer
E: michaelni AT gmx DOT at
D: Rate control

N: Mike Matsnev
E: mike AT po DOT cs DOT msu DOT su
D: Matroska muxing

N: Min Chen
E: chenm001 AT 163 DOT com
C: chenm001
D: Win32/VC 6.0 port
D: gcc asm to nasm conversion
S: China

N: Phil Jensen
E: philj AT csufresno DOT edu
D: SPARC asm

N: Radek Czyz
E: radoslaw AT syskin DOT cjb DOT net
D: Cached motion compensation

N: Tuukka Toivonen
E: tuukkat AT ee DOT oulu DOT fi
D: Visualization

