FFmpeg maintainers
==================

Below is a list of the people maintaining different parts of the
FFmpeg code.

Please try to keep entries where you are the maintainer up to date!

Names in () mean that the maintainer currently has no time to maintain the code.
A CC after the name means that the maintainer prefers to be CC-ed on patches
and related discussions.


Project Leader
==============

Michael Niedermayer
  final design decisions


Applications
============

ffmpeg:
  ffmpeg.c                              Michael Niedermayer

ffplay:
  ffplay.c                              Marton Balint

ffprobe:
  ffprobe.c                             Stefano Sabatini

ffserver:
  ffserver.c, ffserver.h                Baptiste Coudurier

Commandline utility code:
  cmdutils.c, cmdutils.h                Michael Niedermayer

QuickTime faststart:
  tools/qt-faststart.c                  Baptiste Coudurier


Miscellaneous Areas
===================

documentation                           Mike Melanson
website                                 Robert Swain, Lou Logan
build system (configure,Makefiles)      Diego Biurrun, Mans Rullgard
project server                          Árpád Gereöffy, Michael Niedermayer, Reimar Döffinger
mailinglists                            Michael Niedermayer, Baptiste Coudurier, Lou Logan
presets                                 Robert Swain
metadata subsystem                      Aurelien Jacobs
release management                      Michael Niedermayer


libavutil
=========

External Interfaces:
  libavutil/avutil.h                    Michael Niedermayer
Internal Interfaces:
  libavutil/common.h                    Michael Niedermayer

Other:
  intfloat*                             Michael Niedermayer
  rational.c, rational.h                Michael Niedermayer
  mathematics.c, mathematics.h          Michael Niedermayer
  integer.c, integer.h                  Michael Niedermayer
  bswap.h


libavcodec
==========

Generic Parts:
  External Interfaces:
    avcodec.h                           Michael Niedermayer
  utility code:
    utils.c                             Michael Niedermayer
    mem.c                               Michael Niedermayer
    opt.c, opt.h                        Michael Niedermayer
  arithmetic expression evaluator:
    eval.c                              Michael Niedermayer
  audio and video frame extraction:
    parser.c                            Michael Niedermayer
  bitstream reading:
    bitstream.c, bitstream.h            Michael Niedermayer
  CABAC:
    cabac.h, cabac.c                    Michael Niedermayer
  codec names:
    codec_names.sh                      Nicolas George
  DSP utilities:
    dsputils.c, dsputils.h              Michael Niedermayer
  entropy coding:
    rangecoder.c, rangecoder.h          Michael Niedermayer
    lzw.*                               Michael Niedermayer
  floating point AAN DCT:
    faandct.c, faandct.h                Michael Niedermayer
  Golomb coding:
    golomb.c, golomb.h                  Michael Niedermayer
  LPC:
    lpc.c, lpc.h                        Justin Ruggles
  motion estimation:
    motion*                             Michael Niedermayer
  rate control:
    ratecontrol.c                       Michael Niedermayer
    libxvid_rc.c                        Michael Niedermayer
  simple IDCT:
    simple_idct.c, simple_idct.h        Michael Niedermayer
  postprocessing:
    libpostproc/*                       Michael Niedermayer
  table generation:
    tableprint.c, tableprint.h          Reimar Doeffinger

Codecs:
  4xm.c                                 Michael Niedermayer
  8bps.c                                Roberto Togni
  8svx.c                                Jaikrishnan Menon
  aasc.c                                Kostya Shishkov
  ac3*                                  Justin Ruggles
  alacenc.c                             Jaikrishnan Menon
  alsdec.c                              Thilo Borgmann
  apedec.c                              Kostya Shishkov
  ass*                                  Aurelien Jacobs
  asv*                                  Michael Niedermayer
  atrac3*                               Benjamin Larsson
  bgmc.c, bgmc.h                        Thilo Borgmann
  bink.c                                Kostya Shishkov
  binkaudio.c                           Peter Ross
  bmp.c                                 Mans Rullgard, Kostya Shishkov
  cavs*                                 Stefan Gehrer
  celp_filters.*                        Vitor Sessak
  cdxl.c                                Paul B Mahol
  cinepak.c                             Roberto Togni
  cljr                                  Alex Beregszaszi
  cllc.c                                Derek Buitenhuis
  cook.c, cookdata.h                    Benjamin Larsson
  cpia.c                                Stephan Hilb
  crystalhd.c                           Philip Langdale
  cscd.c                                Reimar Doeffinger
  dca.c                                 Kostya Shishkov, Benjamin Larsson
  dnxhd*                                Baptiste Coudurier
  dpcm.c                                Mike Melanson
  dxa.c                                 Kostya Shishkov
  dv.c                                  Roman Shaposhnik
  eacmv*, eaidct*, eat*                 Peter Ross
  ffv1.c                                Michael Niedermayer
  ffwavesynth.c                         Nicolas George
  flac*                                 Justin Ruggles
  flashsv*                              Benjamin Larsson
  flicvideo.c                           Mike Melanson
  g722.c                                Martin Storsjo
  g726.c                                Roman Shaposhnik
  gifdec.c                              Baptiste Coudurier
  h264*                                 Loren Merritt, Michael Niedermayer
  h261*                                 Michael Niedermayer
  h263*                                 Michael Niedermayer
  huffyuv.c                             Michael Niedermayer
  idcinvideo.c                          Mike Melanson
  imc*                                  Benjamin Larsson
  indeo2*                               Kostya Shishkov
  indeo5*                               Kostya Shishkov
  interplayvideo.c                      Mike Melanson
  ivi*                                  Kostya Shishkov
  jacosub*                              Clément Bœsch
  jpeg_ls.c                             Kostya Shishkov
  jvdec.c                               Peter Ross
  kmvc.c                                Kostya Shishkov
  lcl*.c                                Roberto Togni, Reimar Doeffinger
  libcelt_dec.c                         Nicolas George
  libgsm.c                              Michel Bardiaux
  libdirac*                             David Conrad
  libopenjpeg.c                         Jaikrishnan Menon
  libopenjpegenc.c                      Michael Bradshaw
  libschroedinger*                      David Conrad
  libspeexdec.c                         Justin Ruggles
  libtheoraenc.c                        David Conrad
  libutvideo*                           Derek Buitenhuis
  libvorbis.c                           David Conrad
  libxavs.c                             Stefan Gehrer
  libx264.c                             Mans Rullgard, Jason Garrett-Glaser
  loco.c                                Kostya Shishkov
  lzo.h, lzo.c                          Reimar Doeffinger
  mdec.c                                Michael Niedermayer
  mimic.c                               Ramiro Polla
  mjpeg*.c                              Michael Niedermayer
  mlp*                                  Ramiro Polla
  mmvideo.c                             Peter Ross
  mpc*                                  Kostya Shishkov
  mpeg12.c, mpeg12data.h                Michael Niedermayer
  mpegvideo.c, mpegvideo.h              Michael Niedermayer
  msmpeg4.c, msmpeg4data.h              Michael Niedermayer
  msrle.c                               Mike Melanson
  msvideo1.c                            Mike Melanson
  nellymoserdec.c                       Benjamin Larsson
  nuv.c                                 Reimar Doeffinger
  paf.*                                 Paul B Mahol
  pcx.c                                 Ivo van Poorten
  pgssubdec.c                           Reimar Doeffinger
  ptx.c                                 Ivo van Poorten
  qcelp*                                Reynaldo H. Verdejo Pinochet
  qdm2.c, qdm2data.h                    Roberto Togni, Benjamin Larsson
  qdrw.c                                Kostya Shishkov
  qpeg.c                                Kostya Shishkov
  qtrle.c                               Mike Melanson
  ra144.c, ra144.h, ra288.c, ra288.h    Roberto Togni
  resample2.c                           Michael Niedermayer
  rl2.c                                 Sascha Sommer
  rpza.c                                Roberto Togni
  rtjpeg.c, rtjpeg.h                    Reimar Doeffinger
  rv10.c                                Michael Niedermayer
  rv3*                                  Kostya Shishkov
  rv4*                                  Kostya Shishkov
  s3tc*                                 Ivo van Poorten
  smacker.c                             Kostya Shishkov
  smc.c                                 Mike Melanson
  snow.c                                Michael Niedermayer, Loren Merritt
  sonic.c                               Alex Beregszaszi
  srt*                                  Aurelien Jacobs
  sunrast.c                             Ivo van Poorten
  svq3.c                                Michael Niedermayer
  tak*                                  Paul B Mahol
  targa.c                               Kostya Shishkov
  tiff.c                                Kostya Shishkov
  truemotion1*                          Mike Melanson
  truemotion2*                          Kostya Shishkov
  truespeech.c                          Kostya Shishkov
  tscc.c                                Kostya Shishkov
  tta.c                                 Alex Beregszaszi, Jaikrishnan Menon
  txd.c                                 Ivo van Poorten
  ulti*                                 Kostya Shishkov
  v410*.c                               Derek Buitenhuis
  vb.c                                  Kostya Shishkov
  vble.c                                Derek Buitenhuis
  vc1*                                  Kostya Shishkov
  vcr1.c                                Michael Niedermayer
  vda_h264_dec.c                        Xidorn Quan
  vima.c                                Paul B Mahol
  vmnc.c                                Kostya Shishkov
  vorbis_enc.c                          Oded Shimon
  vorbis_dec.c                          Denes Balatoni, David Conrad
  vp3*                                  Mike Melanson
  vp5                                   Aurelien Jacobs
  vp6                                   Aurelien Jacobs
  vp8                                   David Conrad, Jason Garrett-Glaser, Ronald Bultje
  vqavideo.c                            Mike Melanson
  wavpack.c                             Kostya Shishkov
  wmaprodec.c                           Sascha Sommer
  wmavoice.c                            Ronald S. Bultje
  wmv2.c                                Michael Niedermayer
  wnv1.c                                Kostya Shishkov
  xan.c                                 Mike Melanson
  xbm*                                  Paul B Mahol
  xl.c                                  Kostya Shishkov
  xvmc.c                                Ivan Kalvachev
  xwd*                                  Paul B Mahol
  zerocodec.c                           Derek Buitenhuis
  zmbv*                                 Kostya Shishkov

Hardware acceleration:
  crystalhd.c                           Philip Langdale
  dxva2*                                Laurent Aimar
  libstagefright.cpp                    Mohamed Naufal
  vaapi*                                Gwenole Beauchesne
  vda*                                  Sebastien Zwickert
  vdpau*                                Carl Eugen Hoyos


libavdevice
===========
  External Interface:
    libavdevice/avdevice.h


  iec61883.c                            Georg Lippitsch
  libdc1394.c                           Roman Shaposhnik
  v4l2.c                                Luca Abeni
  vfwcap.c                              Ramiro Polla
  dshow.c                               Roger Pack

libavfilter
===========

Generic parts:
  graphdump.c                           Nicolas George

Filters:
  af_amerge.c                           Nicolas George
  af_astreamsync.c                      Nicolas George
  af_atempo.c                           Pavel Koshevoy
  af_pan.c                              Nicolas George
  vf_yadif.c                            Michael Niedermayer

Sources:
  vsrc_mandelbrot.c                     Michael Niedermayer

libavformat
===========

Generic parts:
  External Interface:
    libavformat/avformat.h              Michael Niedermayer
  Utility Code:
    libavformat/utils.c                 Michael Niedermayer


Muxers/Demuxers:
  4xm.c                                 Mike Melanson
  adtsenc.c                             Robert Swain
  afc.c                                 Paul B Mahol
  aiff.c                                Baptiste Coudurier
  ape.c                                 Kostya Shishkov
  ass*                                  Aurelien Jacobs
  astdec.c                              Paul B Mahol
  astenc.c                              James Almer
  avi*                                  Michael Niedermayer
  avr.c                                 Paul B Mahol
  bink.c                                Peter Ross
  brstm.c                               Paul B Mahol
  caf*                                  Peter Ross
  cdxl.c                                Paul B Mahol
  crc.c                                 Michael Niedermayer
  daud.c                                Reimar Doeffinger
  dtshddec.c                            Paul B Mahol
  dv.c                                  Roman Shaposhnik
  dxa.c                                 Kostya Shishkov
  electronicarts.c                      Peter Ross
  epafdec.c                             Paul B Mahol
  ffm*                                  Baptiste Coudurier
  flac*                                 Justin Ruggles
  flic.c                                Mike Melanson
  flvdec.c, flvenc.c                    Michael Niedermayer
  gxf.c                                 Reimar Doeffinger
  gxfenc.c                              Baptiste Coudurier
  idcin.c                               Mike Melanson
  idroqdec.c                            Mike Melanson
  iff.c                                 Jaikrishnan Menon
  ipmovie.c                             Mike Melanson
  img2*.c                               Michael Niedermayer
  ircam*                                Paul B Mahol
  iss.c                                 Stefan Gehrer
  jacosub*                              Clément Bœsch
  jvdec.c                               Peter Ross
  libmodplug.c                          Clément Bœsch
  libnut.c                              Oded Shimon
  lmlm4.c                               Ivo van Poorten
  lvfdec.c                              Paul B Mahol
  lxfdec.c                              Tomas Härdin
  matroska.c                            Aurelien Jacobs
  matroskadec.c                         Aurelien Jacobs
  matroskaenc.c                         David Conrad
  metadata*                             Aurelien Jacobs
  microdvd*                             Aurelien Jacobs
  mgsts.c                               Paul B Mahol
  mm.c                                  Peter Ross
  mov.c                                 Michael Niedermayer, Baptiste Coudurier
  movenc.c                              Michael Niedermayer, Baptiste Coudurier
  mpc.c                                 Kostya Shishkov
  mpeg.c                                Michael Niedermayer
  mpegenc.c                             Michael Niedermayer
  mpegts*                               Baptiste Coudurier
  msnwc_tcp.c                           Ramiro Polla
  mtv.c                                 Reynaldo H. Verdejo Pinochet
  mxf*                                  Baptiste Coudurier
  mxfdec.c                              Tomas Härdin
  nistspheredec.c                       Paul B Mahol
  nsvdec.c                              Francois Revol
  nut.c                                 Michael Niedermayer
  nuv.c                                 Reimar Doeffinger
  oggdec.c, oggdec.h                    David Conrad
  oggenc.c                              Baptiste Coudurier
  oggparse*.c                           David Conrad
  oma.c                                 Maxim Poliakovski
  paf.c                                 Paul B Mahol
  psxstr.c                              Mike Melanson
  pva.c                                 Ivo van Poorten
  pvfdec.c                              Paul B Mahol
  r3d.c                                 Baptiste Coudurier
  raw.c                                 Michael Niedermayer
  rdt.c                                 Ronald S. Bultje
  rl2.c                                 Sascha Sommer
  rmdec.c, rmenc.c                      Ronald S. Bultje, Kostya Shishkov
  rtmp*                                 Kostya Shishkov
  rtp.c, rtpenc.c                       Martin Storsjo
  rtpdec_asf.*                          Ronald S. Bultje
  rtpenc_mpv.*, rtpenc_aac.*            Martin Storsjo
  rtsp.c                                Luca Barbato
  sbgdec.c                              Nicolas George
  sdp.c                                 Martin Storsjo
  segafilm.c                            Mike Melanson
  siff.c                                Kostya Shishkov
  smacker.c                             Kostya Shishkov
  smjpeg*                               Paul B Mahol
  srtdec.c                              Aurelien Jacobs
  swf.c                                 Baptiste Coudurier
  takdec.c                              Paul B Mahol
  tta.c                                 Alex Beregszaszi
  txd.c                                 Ivo van Poorten
  voc.c                                 Aurelien Jacobs
  wav.c                                 Michael Niedermayer
  wc3movie.c                            Mike Melanson
  westwood.c                            Mike Melanson
  wtv.c                                 Peter Ross
  wv.c                                  Kostya Shishkov
  wvenc.c                               Paul B Mahol

Protocols:
  bluray.c                              Petri Hintukainen
  http.c                                Ronald S. Bultje
  mms*.c                                Ronald S. Bultje
  udp.c                                 Luca Abeni


libswresample
=============

Generic parts:
  audioconvert.c                        Michael Niedermayer
  dither.c                              Michael Niedermayer
  rematrix*.c                           Michael Niedermayer
  swresample*.c                         Michael Niedermayer

Resamplers:
  resample*.c                           Michael Niedermayer
  soxr_resample.c                       Rob Sykes


Operating systems / CPU architectures
=====================================

Alpha                                   Mans Rullgard, Falk Hueffner
ARM                                     Mans Rullgard
AVR32                                   Mans Rullgard
MIPS                                    Mans Rullgard
Mac OS X / PowerPC                      Romain Dolbeau, Guillaume Poirier
Amiga / PowerPC                         Colin Ward
Linux / PowerPC                         Luca Barbato
Windows MinGW                           Alex Beregszaszi, Ramiro Polla
Windows Cygwin                          Victor Paesa
ADI/Blackfin DSP                        Marc Hoffman
Sparc                                   Roman Shaposhnik
x86                                     Michael Niedermayer


Releases
========

1.1                                     Michael Niedermayer
1.0                                     Michael Niedermayer
0.11                                    Michael Niedermayer



GnuPG Fingerprints of maintainers and contributors
==================================================

Anssi Hannula                 1A92 FF42 2DD9 8D2E 8AF7 65A9 4278 C520 513D F3CB
Anton Khirnov                 6D0C 6625 56F8 65D1 E5F5 814B B50A 1241 C067 07AB
Attila Kinali                 11F0 F9A6 A1D2 11F6 C745 D10C 6520 BCDD F2DF E765
Baptiste Coudurier            8D77 134D 20CC 9220 201F C5DB 0AC9 325C 5C1A BAAA
Ben Littler                   3EE3 3723 E560 3214 A8CD 4DEB 2CDB FCE7 768C 8D2C
Benoit Fouet                  B22A 4F4F 43EF 636B BB66 FCDC 0023 AE1E 2985 49C8
Bœsch Clément                 52D0 3A82 D445 F194 DB8B 2B16 87EE 2CB8 F4B8 FCF9
Daniel Verkamp                78A6 07ED 782C 653E C628 B8B9 F0EB 8DD8 2F0E 21C7
Diego Biurrun                 8227 1E31 B6D9 4994 7427 E220 9CAE D6CC 4757 FCC5
Gwenole Beauchesne            2E63 B3A6 3E44 37E2 017D 2704 53C7 6266 B153 99C4
Jaikrishnan Menon             61A1 F09F 01C9 2D45 78E1 C862 25DC 8831 AF70 D368
Justin Ruggles                3136 ECC0 C10D 6C04 5F43 CA29 FCBE CD2A 3787 1EBF
Loren Merritt                 ABD9 08F4 C920 3F65 D8BE 35D7 1540 DAA7 060F 56DE
Lou Logan                     7D68 DC73 CBEF EABB 671A B6CF 621C 2E28 82F8 DC3A
Luca Barbato                  6677 4209 213C 8843 5B67 29E7 E84C 78C2 84E9 0E34
Michael Niedermayer           9FF2 128B 147E F673 0BAD F133 611E C787 040B 0FAB
Nicolas George                24CE 01CE 9ACC 5CEB 74D8 8D9D B063 D997 36E5 4C93
Panagiotis Issaris            6571 13A3 33D9 3726 F728 AA98 F643 B12E ECF3 E029
Peter Ross                    A907 E02F A6E5 0CD2 34CD 20D2 6760 79C5 AC40 DD6B
Reimar Döffinger              C61D 16E5 9E2C D10C 8958 38A4 0899 A2B9 06D4 D9C7
Reinhard Tartler              9300 5DC2 7E87 6C37 ED7B CA9A 9808 3544 9453 48A4
Reynaldo H. Verdejo Pinochet  6E27 CD34 170C C78E 4D4F 5F40 C18E 077F 3114 452A
Robert Swain                  EE7A 56EA 4A81 A7B5 2001 A521 67FA 362D A2FC 3E71
Sascha Sommer                 38A0 F88B 868E 9D3A 97D4 D6A0 E823 706F 1E07 0D3C
Stefano Sabatini              0D0B AD6B 5330 BBAD D3D6 6A0C 719C 2839 FC43 2D5F
Stephan Hilb                  4F38 0B3A 5F39 B99B F505 E562 8D5C 5554 4E17 8863
Tomas Härdin                  A79D 4E3D F38F 763F 91F5 8B33 A01E 8AE0 41BB 2551
