You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

558 lines
26KB

  1. FFmpeg maintainers
  2. ==================
  3. Below is a list of the people maintaining different parts of the
  4. FFmpeg code.
  5. Please try to keep entries where you are the maintainer up to date!
  6. Names in () mean that the maintainer currently has no time to maintain the code.
  7. A (CC <address>) after the name means that the maintainer prefers to be CC-ed on
  8. patches and related discussions.
  9. Project Leader
  10. ==============
  11. Michael Niedermayer
  12. final design decisions
  13. Applications
  14. ============
  15. ffmpeg:
  16. ffmpeg.c Michael Niedermayer
  17. ffplay:
  18. ffplay.c Marton Balint
  19. ffprobe:
  20. ffprobe.c Stefano Sabatini
  21. ffserver:
  22. ffserver.c Reynaldo H. Verdejo Pinochet
  23. Commandline utility code:
  24. cmdutils.c, cmdutils.h Michael Niedermayer
  25. QuickTime faststart:
  26. tools/qt-faststart.c Baptiste Coudurier
  27. Miscellaneous Areas
  28. ===================
  29. documentation Stefano Sabatini, Mike Melanson, Timothy Gu
  30. build system (configure,Makefiles) Diego Biurrun, Mans Rullgard
  31. project server Árpád Gereöffy, Michael Niedermayer, Reimar Döffinger, Alexander Strasser
  32. presets Robert Swain
  33. metadata subsystem Aurelien Jacobs
  34. release management Michael Niedermayer
  35. Communication
  36. =============
  37. website Robert Swain, Lou Logan
  38. mailinglists Michael Niedermayer, Baptiste Coudurier, Lou Logan
  39. Google+ Paul B Mahol, Michael Niedermayer, Alexander Strasser
  40. Twitter Lou Logan
  41. Launchpad Timothy Gu
  42. libavutil
  43. =========
  44. External Interfaces:
  45. libavutil/avutil.h Michael Niedermayer
  46. Internal Interfaces:
  47. libavutil/common.h Michael Niedermayer
  48. Other:
  49. bprint Nicolas George
  50. bswap.h
  51. des Reimar Doeffinger
  52. dynarray.h Nicolas George
  53. eval.c, eval.h Michael Niedermayer
  54. float_dsp Loren Merritt
  55. hash Reimar Doeffinger
  56. intfloat* Michael Niedermayer
  57. integer.c, integer.h Michael Niedermayer
  58. lzo Reimar Doeffinger
  59. mathematics.c, mathematics.h Michael Niedermayer
  60. mem.c, mem.h Michael Niedermayer
  61. opencl.c, opencl.h Wei Gao
  62. opt.c, opt.h Michael Niedermayer
  63. rational.c, rational.h Michael Niedermayer
  64. rc4 Reimar Doeffinger
  65. ripemd.c, ripemd.h James Almer
  66. timecode Clément Bœsch
  67. libavcodec
  68. ==========
  69. Generic Parts:
  70. External Interfaces:
  71. avcodec.h Michael Niedermayer
  72. utility code:
  73. utils.c Michael Niedermayer
  74. audio and video frame extraction:
  75. parser.c Michael Niedermayer
  76. bitstream reading:
  77. bitstream.c, bitstream.h Michael Niedermayer
  78. CABAC:
  79. cabac.h, cabac.c Michael Niedermayer
  80. codec names:
  81. codec_names.sh Nicolas George
  82. DSP utilities:
  83. dsputils.c, dsputils.h Michael Niedermayer
  84. entropy coding:
  85. rangecoder.c, rangecoder.h Michael Niedermayer
  86. lzw.* Michael Niedermayer
  87. floating point AAN DCT:
  88. faandct.c, faandct.h Michael Niedermayer
  89. Golomb coding:
  90. golomb.c, golomb.h Michael Niedermayer
  91. LPC:
  92. lpc.c, lpc.h Justin Ruggles
  93. motion estimation:
  94. motion* Michael Niedermayer
  95. rate control:
  96. ratecontrol.c Michael Niedermayer
  97. libxvid_rc.c Michael Niedermayer
  98. simple IDCT:
  99. simple_idct.c, simple_idct.h Michael Niedermayer
  100. postprocessing:
  101. libpostproc/* Michael Niedermayer
  102. table generation:
  103. tableprint.c, tableprint.h Reimar Doeffinger
  104. fixed point FFT:
  105. fft* Zeljko Lukac
  106. Codecs:
  107. 4xm.c Michael Niedermayer
  108. 8bps.c Roberto Togni
  109. 8svx.c Jaikrishnan Menon
  110. aasc.c Kostya Shishkov
  111. ac3* Justin Ruggles
  112. alacenc.c Jaikrishnan Menon
  113. alsdec.c Thilo Borgmann
  114. apedec.c Kostya Shishkov
  115. ass* Aurelien Jacobs
  116. asv* Michael Niedermayer
  117. atrac3* Benjamin Larsson
  118. atrac3plus* Maxim Poliakovski
  119. bgmc.c, bgmc.h Thilo Borgmann
  120. bink.c Kostya Shishkov
  121. binkaudio.c Peter Ross
  122. bmp.c Mans Rullgard, Kostya Shishkov
  123. cavs* Stefan Gehrer
  124. cdxl.c Paul B Mahol
  125. celp_filters.* Vitor Sessak
  126. cinepak.c Roberto Togni
  127. cinepakenc.c Rl / Aetey G.T. AB
  128. cljr Alex Beregszaszi
  129. cllc.c Derek Buitenhuis
  130. cook.c, cookdata.h Benjamin Larsson
  131. cpia.c Stephan Hilb
  132. crystalhd.c Philip Langdale
  133. cscd.c Reimar Doeffinger
  134. dca.c Kostya Shishkov, Benjamin Larsson
  135. dnxhd* Baptiste Coudurier
  136. dpcm.c Mike Melanson
  137. dv.c Roman Shaposhnik
  138. dxa.c Kostya Shishkov
  139. eacmv*, eaidct*, eat* Peter Ross
  140. exif.c, exif.h Thilo Borgmann
  141. ffv1.c Michael Niedermayer
  142. ffwavesynth.c Nicolas George
  143. flac* Justin Ruggles
  144. flashsv* Benjamin Larsson
  145. flicvideo.c Mike Melanson
  146. g722.c Martin Storsjo
  147. g726.c Roman Shaposhnik
  148. gifdec.c Baptiste Coudurier
  149. h261* Michael Niedermayer
  150. h263* Michael Niedermayer
  151. h264* Loren Merritt, Michael Niedermayer
  152. huffyuv.c Michael Niedermayer
  153. idcinvideo.c Mike Melanson
  154. imc* Benjamin Larsson
  155. indeo2* Kostya Shishkov
  156. indeo5* Kostya Shishkov
  157. interplayvideo.c Mike Melanson
  158. ivi* Kostya Shishkov
  159. jacosub* Clément Bœsch
  160. jpeg2000* Nicolas Bertrand
  161. jpeg_ls.c Kostya Shishkov
  162. jvdec.c Peter Ross
  163. kmvc.c Kostya Shishkov
  164. lcl*.c Roberto Togni, Reimar Doeffinger
  165. libcelt_dec.c Nicolas George
  166. libdirac* David Conrad
  167. libgsm.c Michel Bardiaux
  168. libopenjpeg.c Jaikrishnan Menon
  169. libopenjpegenc.c Michael Bradshaw
  170. libschroedinger* David Conrad
  171. libspeexdec.c Justin Ruggles
  172. libtheoraenc.c David Conrad
  173. libutvideo* Derek Buitenhuis
  174. libvorbis.c David Conrad
  175. libvpx* James Zern
  176. libx264.c Mans Rullgard, Jason Garrett-Glaser
  177. libx265.c Derek Buitenhuis
  178. libxavs.c Stefan Gehrer
  179. libzvbi-teletextdec.c Marton Balint
  180. loco.c Kostya Shishkov
  181. lzo.h, lzo.c Reimar Doeffinger
  182. mdec.c Michael Niedermayer
  183. mimic.c Ramiro Polla
  184. mjpeg*.c Michael Niedermayer
  185. mlp* Ramiro Polla
  186. mmvideo.c Peter Ross
  187. mpc* Kostya Shishkov
  188. mpeg12.c, mpeg12data.h Michael Niedermayer
  189. mpegvideo.c, mpegvideo.h Michael Niedermayer
  190. mqc* Nicolas Bertrand
  191. msmpeg4.c, msmpeg4data.h Michael Niedermayer
  192. msrle.c Mike Melanson
  193. msvideo1.c Mike Melanson
  194. nellymoserdec.c Benjamin Larsson
  195. nuv.c Reimar Doeffinger
  196. paf.* Paul B Mahol
  197. pcx.c Ivo van Poorten
  198. pgssubdec.c Reimar Doeffinger
  199. ptx.c Ivo van Poorten
  200. qcelp* Reynaldo H. Verdejo Pinochet
  201. qdm2.c, qdm2data.h Roberto Togni, Benjamin Larsson
  202. qdrw.c Kostya Shishkov
  203. qpeg.c Kostya Shishkov
  204. qtrle.c Mike Melanson
  205. ra144.c, ra144.h, ra288.c, ra288.h Roberto Togni
  206. resample2.c Michael Niedermayer
  207. rl2.c Sascha Sommer
  208. rpza.c Roberto Togni
  209. rtjpeg.c, rtjpeg.h Reimar Doeffinger
  210. rv10.c Michael Niedermayer
  211. rv3* Kostya Shishkov
  212. rv4* Kostya Shishkov
  213. s3tc* Ivo van Poorten
  214. smacker.c Kostya Shishkov
  215. smc.c Mike Melanson
  216. smvjpegdec.c Ash Hughes
  217. snow.c Michael Niedermayer, Loren Merritt
  218. sonic.c Alex Beregszaszi
  219. srt* Aurelien Jacobs
  220. sunrast.c Ivo van Poorten
  221. svq3.c Michael Niedermayer
  222. tak* Paul B Mahol
  223. targa.c Kostya Shishkov
  224. tiff.c Kostya Shishkov
  225. truemotion1* Mike Melanson
  226. truemotion2* Kostya Shishkov
  227. truespeech.c Kostya Shishkov
  228. tscc.c Kostya Shishkov
  229. tta.c Alex Beregszaszi, Jaikrishnan Menon
  230. ttaenc.c Paul B Mahol
  231. txd.c Ivo van Poorten
  232. ulti* Kostya Shishkov
  233. v410*.c Derek Buitenhuis
  234. vb.c Kostya Shishkov
  235. vble.c Derek Buitenhuis
  236. vc1* Kostya Shishkov
  237. vcr1.c Michael Niedermayer
  238. vda_h264_dec.c Xidorn Quan
  239. vima.c Paul B Mahol
  240. vmnc.c Kostya Shishkov
  241. vorbis_dec.c Denes Balatoni, David Conrad
  242. vorbis_enc.c Oded Shimon
  243. vp3* Mike Melanson
  244. vp5 Aurelien Jacobs
  245. vp6 Aurelien Jacobs
  246. vp8 David Conrad, Jason Garrett-Glaser, Ronald Bultje
  247. vp9 Ronald Bultje, Clément Bœsch
  248. vqavideo.c Mike Melanson
  249. wavpack.c Kostya Shishkov
  250. wmaprodec.c Sascha Sommer
  251. wmavoice.c Ronald S. Bultje
  252. wmv2.c Michael Niedermayer
  253. wnv1.c Kostya Shishkov
  254. xan.c Mike Melanson
  255. xbm* Paul B Mahol
  256. xface Stefano Sabatini
  257. xl.c Kostya Shishkov
  258. xvmc.c Ivan Kalvachev
  259. xwd* Paul B Mahol
  260. zerocodec.c Derek Buitenhuis
  261. zmbv* Kostya Shishkov
  262. Hardware acceleration:
  263. crystalhd.c Philip Langdale
  264. dxva2* Laurent Aimar
  265. libstagefright.cpp Mohamed Naufal
  266. vaapi* Gwenole Beauchesne
  267. vda* Sebastien Zwickert
  268. vdpau* Carl Eugen Hoyos
  269. libavdevice
  270. ===========
  271. External Interface:
  272. libavdevice/avdevice.h
  273. dshow.c Roger Pack
  274. fbdev_enc.c Lukasz Marek
  275. iec61883.c Georg Lippitsch
  276. lavfi Stefano Sabatini
  277. libdc1394.c Roman Shaposhnik
  278. opengl_enc.c Lukasz Marek
  279. pulse_audio_enc.c Lukasz Marek
  280. sdl Stefano Sabatini
  281. v4l2.c Luca Abeni
  282. vfwcap.c Ramiro Polla
  283. libavfilter
  284. ===========
  285. Generic parts:
  286. graphdump.c Nicolas George
  287. Filters:
  288. af_adelay.c Paul B Mahol
  289. af_aecho.c Paul B Mahol
  290. af_afade.c Paul B Mahol
  291. af_amerge.c Nicolas George
  292. af_aphaser.c Paul B Mahol
  293. af_aresample.c Michael Niedermayer
  294. af_astats.c Paul B Mahol
  295. af_astreamsync.c Nicolas George
  296. af_atempo.c Pavel Koshevoy
  297. af_biquads.c Paul B Mahol
  298. af_compand.c Paul B Mahol
  299. af_ladspa.c Paul B Mahol
  300. af_pan.c Nicolas George
  301. avf_avectorscope.c Paul B Mahol
  302. vf_blend.c Paul B Mahol
  303. vf_colorbalance.c Paul B Mahol
  304. vf_dejudder.c Nicholas Robbins
  305. vf_delogo.c Jean Delvare (CC <khali@linux-fr.org>)
  306. vf_drawbox.c/drawgrid Andrey Utkin
  307. vf_extractplanes.c Paul B Mahol
  308. vf_histogram.c Paul B Mahol
  309. vf_il.c Paul B Mahol
  310. vf_mergeplanes.c Paul B Mahol
  311. vf_psnr.c Paul B Mahol
  312. vf_scale.c Michael Niedermayer
  313. vf_separatefields.c Paul B Mahol
  314. vf_stereo3d.c Paul B Mahol
  315. vf_telecine.c Paul B Mahol
  316. vf_yadif.c Michael Niedermayer
  317. Sources:
  318. vsrc_mandelbrot.c Michael Niedermayer
  319. libavformat
  320. ===========
  321. Generic parts:
  322. External Interface:
  323. libavformat/avformat.h Michael Niedermayer
  324. Utility Code:
  325. libavformat/utils.c Michael Niedermayer
  326. Muxers/Demuxers:
  327. 4xm.c Mike Melanson
  328. adtsenc.c Robert Swain
  329. afc.c Paul B Mahol
  330. aiffdec.c Baptiste Coudurier, Matthieu Bouron
  331. aiffenc.c Baptiste Coudurier, Matthieu Bouron
  332. ape.c Kostya Shishkov
  333. ass* Aurelien Jacobs
  334. astdec.c Paul B Mahol
  335. astenc.c James Almer
  336. avi* Michael Niedermayer
  337. avisynth.c AvxSynth Team (avxsynth.testing at gmail dot com)
  338. avr.c Paul B Mahol
  339. bink.c Peter Ross
  340. brstm.c Paul B Mahol
  341. caf* Peter Ross
  342. cdxl.c Paul B Mahol
  343. crc.c Michael Niedermayer
  344. daud.c Reimar Doeffinger
  345. dtshddec.c Paul B Mahol
  346. dv.c Roman Shaposhnik
  347. dxa.c Kostya Shishkov
  348. electronicarts.c Peter Ross
  349. epafdec.c Paul B Mahol
  350. ffm* Baptiste Coudurier
  351. flac* Justin Ruggles
  352. flic.c Mike Melanson
  353. flvdec.c, flvenc.c Michael Niedermayer
  354. gxf.c Reimar Doeffinger
  355. gxfenc.c Baptiste Coudurier
  356. hls.c Anssi Hannula
  357. idcin.c Mike Melanson
  358. idroqdec.c Mike Melanson
  359. iff.c Jaikrishnan Menon
  360. img2*.c Michael Niedermayer
  361. ipmovie.c Mike Melanson
  362. ircam* Paul B Mahol
  363. iss.c Stefan Gehrer
  364. jacosub* Clément Bœsch
  365. jvdec.c Peter Ross
  366. libmodplug.c Clément Bœsch
  367. libnut.c Oded Shimon
  368. lmlm4.c Ivo van Poorten
  369. lvfdec.c Paul B Mahol
  370. lxfdec.c Tomas Härdin
  371. matroska.c Aurelien Jacobs
  372. matroskadec.c Aurelien Jacobs
  373. matroskaenc.c David Conrad
  374. metadata* Aurelien Jacobs
  375. mgsts.c Paul B Mahol
  376. microdvd* Aurelien Jacobs
  377. mm.c Peter Ross
  378. mov.c Michael Niedermayer, Baptiste Coudurier
  379. movenc.c Baptiste Coudurier, Matthieu Bouron
  380. mpc.c Kostya Shishkov
  381. mpeg.c Michael Niedermayer
  382. mpegenc.c Michael Niedermayer
  383. mpegts.c Marton Balint
  384. mpegtsenc.c Baptiste Coudurier
  385. msnwc_tcp.c Ramiro Polla
  386. mtv.c Reynaldo H. Verdejo Pinochet
  387. mxf* Baptiste Coudurier
  388. mxfdec.c Tomas Härdin
  389. nistspheredec.c Paul B Mahol
  390. nsvdec.c Francois Revol
  391. nut.c Michael Niedermayer
  392. nuv.c Reimar Doeffinger
  393. oggdec.c, oggdec.h David Conrad
  394. oggenc.c Baptiste Coudurier
  395. oggparse*.c David Conrad
  396. oma.c Maxim Poliakovski
  397. paf.c Paul B Mahol
  398. psxstr.c Mike Melanson
  399. pva.c Ivo van Poorten
  400. pvfdec.c Paul B Mahol
  401. r3d.c Baptiste Coudurier
  402. raw.c Michael Niedermayer
  403. rdt.c Ronald S. Bultje
  404. rl2.c Sascha Sommer
  405. rmdec.c, rmenc.c Ronald S. Bultje, Kostya Shishkov
  406. rtmp* Kostya Shishkov
  407. rtp.c, rtpenc.c Martin Storsjo
  408. rtpdec_asf.* Ronald S. Bultje
  409. rtpenc_mpv.*, rtpenc_aac.* Martin Storsjo
  410. rtsp.c Luca Barbato
  411. sbgdec.c Nicolas George
  412. sdp.c Martin Storsjo
  413. segafilm.c Mike Melanson
  414. siff.c Kostya Shishkov
  415. smacker.c Kostya Shishkov
  416. smjpeg* Paul B Mahol
  417. spdif* Anssi Hannula
  418. srtdec.c Aurelien Jacobs
  419. swf.c Baptiste Coudurier
  420. takdec.c Paul B Mahol
  421. tta.c Alex Beregszaszi
  422. txd.c Ivo van Poorten
  423. voc.c Aurelien Jacobs
  424. wav.c Michael Niedermayer
  425. wc3movie.c Mike Melanson
  426. webvtt* Matthew J Heaney
  427. westwood.c Mike Melanson
  428. wtv.c Peter Ross
  429. wv.c Kostya Shishkov
  430. wvenc.c Paul B Mahol
  431. Protocols:
  432. bluray.c Petri Hintukainen
  433. ftp.c Lukasz Marek
  434. http.c Ronald S. Bultje
  435. libssh.c Lukasz Marek
  436. mms*.c Ronald S. Bultje
  437. udp.c Luca Abeni
  438. libswresample
  439. =============
  440. Generic parts:
  441. audioconvert.c Michael Niedermayer
  442. dither.c Michael Niedermayer
  443. rematrix*.c Michael Niedermayer
  444. swresample*.c Michael Niedermayer
  445. Resamplers:
  446. resample*.c Michael Niedermayer
  447. soxr_resample.c Rob Sykes
  448. Operating systems / CPU architectures
  449. =====================================
  450. Alpha Mans Rullgard, Falk Hueffner
  451. ARM Mans Rullgard
  452. AVR32 Mans Rullgard
  453. MIPS Mans Rullgard, Nedeljko Babic
  454. Mac OS X / PowerPC Romain Dolbeau, Guillaume Poirier
  455. Amiga / PowerPC Colin Ward
  456. Linux / PowerPC Luca Barbato
  457. Windows MinGW Alex Beregszaszi, Ramiro Polla
  458. Windows Cygwin Victor Paesa
  459. ADI/Blackfin DSP Marc Hoffman
  460. Sparc Roman Shaposhnik
  461. x86 Michael Niedermayer
  462. Releases
  463. ========
  464. 2.2 Michael Niedermayer
  465. 2.1 Michael Niedermayer
  466. 1.2 Michael Niedermayer
  467. If you want to maintain an older release, please contact us
  468. GnuPG Fingerprints of maintainers and contributors
  469. ==================================================
  470. Alexander Strasser 1C96 78B7 83CB 8AA7 9AF5 D1EB A7D8 A57B A876 E58F
  471. Anssi Hannula 1A92 FF42 2DD9 8D2E 8AF7 65A9 4278 C520 513D F3CB
  472. Anton Khirnov 6D0C 6625 56F8 65D1 E5F5 814B B50A 1241 C067 07AB
  473. Ash Hughes 694D 43D2 D180 C7C7 6421 ABD3 A641 D0B7 623D 6029
  474. Attila Kinali 11F0 F9A6 A1D2 11F6 C745 D10C 6520 BCDD F2DF E765
  475. Baptiste Coudurier 8D77 134D 20CC 9220 201F C5DB 0AC9 325C 5C1A BAAA
  476. Ben Littler 3EE3 3723 E560 3214 A8CD 4DEB 2CDB FCE7 768C 8D2C
  477. Benoit Fouet B22A 4F4F 43EF 636B BB66 FCDC 0023 AE1E 2985 49C8
  478. Bœsch Clément 52D0 3A82 D445 F194 DB8B 2B16 87EE 2CB8 F4B8 FCF9
  479. Daniel Verkamp 78A6 07ED 782C 653E C628 B8B9 F0EB 8DD8 2F0E 21C7
  480. Diego Biurrun 8227 1E31 B6D9 4994 7427 E220 9CAE D6CC 4757 FCC5
  481. FFmpeg release signing key FCF9 86EA 15E6 E293 A564 4F10 B432 2F04 D676 58D8
  482. Gwenole Beauchesne 2E63 B3A6 3E44 37E2 017D 2704 53C7 6266 B153 99C4
  483. Jaikrishnan Menon 61A1 F09F 01C9 2D45 78E1 C862 25DC 8831 AF70 D368
  484. Jean Delvare 7CA6 9F44 60F1 BDC4 1FD2 C858 A552 6B9B B3CD 4E6A
  485. Justin Ruggles 3136 ECC0 C10D 6C04 5F43 CA29 FCBE CD2A 3787 1EBF
  486. Loren Merritt ABD9 08F4 C920 3F65 D8BE 35D7 1540 DAA7 060F 56DE
  487. Lou Logan 7D68 DC73 CBEF EABB 671A B6CF 621C 2E28 82F8 DC3A
  488. Luca Barbato 6677 4209 213C 8843 5B67 29E7 E84C 78C2 84E9 0E34
  489. Michael Niedermayer 9FF2 128B 147E F673 0BAD F133 611E C787 040B 0FAB
  490. Nicolas George 24CE 01CE 9ACC 5CEB 74D8 8D9D B063 D997 36E5 4C93
  491. Panagiotis Issaris 6571 13A3 33D9 3726 F728 AA98 F643 B12E ECF3 E029
  492. Peter Ross A907 E02F A6E5 0CD2 34CD 20D2 6760 79C5 AC40 DD6B
  493. Reimar Döffinger C61D 16E5 9E2C D10C 8958 38A4 0899 A2B9 06D4 D9C7
  494. Reinhard Tartler 9300 5DC2 7E87 6C37 ED7B CA9A 9808 3544 9453 48A4
  495. Reynaldo H. Verdejo Pinochet 6E27 CD34 170C C78E 4D4F 5F40 C18E 077F 3114 452A
  496. Robert Swain EE7A 56EA 4A81 A7B5 2001 A521 67FA 362D A2FC 3E71
  497. Sascha Sommer 38A0 F88B 868E 9D3A 97D4 D6A0 E823 706F 1E07 0D3C
  498. Stefano Sabatini 0D0B AD6B 5330 BBAD D3D6 6A0C 719C 2839 FC43 2D5F
  499. Stephan Hilb 4F38 0B3A 5F39 B99B F505 E562 8D5C 5554 4E17 8863
  500. Tomas Härdin A79D 4E3D F38F 763F 91F5 8B33 A01E 8AE0 41BB 2551
  501. Wei Gao 4269 7741 857A 0E60 9EC5 08D2 4744 4EFA 62C1 87B9