fourcc.c
上传用户:kjfoods
上传日期:2020-07-06
资源大小:29949k
文件大小:44k
源码类别:

midi

开发平台:

Unix_Linux

  1. /*****************************************************************************
  2.  * fourcc.c: libavcodec <-> libvlc conversion routines
  3.  *****************************************************************************
  4.  * Copyright (C) 1999-2008 the VideoLAN team
  5.  * $Id: 263b89c4bfdf1a6b3004cbdeed8469762b4f4842 $
  6.  *
  7.  * Authors: Laurent Aimar <fenrir@via.ecp.fr>
  8.  *          Gildas Bazin <gbazin@videolan.org>
  9.  *
  10.  * This program is free software; you can redistribute it and/or modify
  11.  * it under the terms of the GNU General Public License as published by
  12.  * the Free Software Foundation; either version 2 of the License, or
  13.  * (at your option) any later version.
  14.  *
  15.  * This program is distributed in the hope that it will be useful,
  16.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  17.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  18.  * GNU General Public License for more details.
  19.  *
  20.  * You should have received a copy of the GNU General Public License
  21.  * along with this program; if not, write to the Free Software
  22.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  23.  *****************************************************************************/
  24. #ifdef HAVE_CONFIG_H
  25. # include <config.h>
  26. #endif
  27. #include <vlc_common.h>
  28. #include <vlc_codec.h>
  29. #ifdef HAVE_LIBAVCODEC_AVCODEC_H
  30. #   include <libavcodec/avcodec.h>
  31. #elif defined(HAVE_FFMPEG_AVCODEC_H)
  32. #   include <ffmpeg/avcodec.h>
  33. #else
  34. #   include <avcodec.h>
  35. #endif
  36. #include "avcodec.h"
  37. /*****************************************************************************
  38.  * Codec fourcc -> ffmpeg_id mapping
  39.  *****************************************************************************/
  40. static const struct
  41. {
  42.     vlc_fourcc_t  i_fourcc;
  43.     int  i_codec;
  44.     int  i_cat;
  45.     const char psz_name[36];
  46. } codecs_table[] =
  47. {
  48.     /*
  49.      * Video Codecs
  50.      */
  51.     /* MPEG-1 Video */
  52.     { VLC_FOURCC('m','p','1','v'), CODEC_ID_MPEG1VIDEO,
  53.       VIDEO_ES, "MPEG-1 Video" },
  54.     { VLC_FOURCC('m','p','e','g'), CODEC_ID_MPEG1VIDEO,
  55.       VIDEO_ES, "MPEG-1 Video" },
  56.     { VLC_FOURCC('m','p','g','1'), CODEC_ID_MPEG1VIDEO,
  57.       VIDEO_ES, "MPEG-1 Video" },
  58.     { VLC_FOURCC('P','I','M','1'), CODEC_ID_MPEG1VIDEO,
  59.       VIDEO_ES, "Pinnacle DC1000 (MPEG-1 Video)" },
  60.     /* MPEG-2 Video */
  61.     { VLC_FOURCC('m','p','2','v'), CODEC_ID_MPEG2VIDEO,
  62.       VIDEO_ES, "MPEG-2 Video" },
  63.     { VLC_FOURCC('M','P','E','G'), CODEC_ID_MPEG2VIDEO,
  64.       VIDEO_ES, "MPEG-2 Video" },
  65.     { VLC_FOURCC('m','p','g','v'), CODEC_ID_MPEG2VIDEO,
  66.       VIDEO_ES, "MPEG-2 Video" },
  67.     { VLC_FOURCC('m','p','g','2'), CODEC_ID_MPEG2VIDEO,
  68.       VIDEO_ES, "MPEG-2 Video" },
  69.     { VLC_FOURCC('h','d','v','1'), CODEC_ID_MPEG2VIDEO,
  70.       VIDEO_ES, "HDV 720p30 (MPEG-2 Video)" },
  71.     { VLC_FOURCC('h','d','v','2'), CODEC_ID_MPEG2VIDEO,
  72.       VIDEO_ES, "Sony HDV (MPEG-2 Video)" },
  73.     { VLC_FOURCC('h','d','v','3'), CODEC_ID_MPEG2VIDEO,
  74.       VIDEO_ES, "FCP HDV (MPEG-2 Video)" },
  75.     { VLC_FOURCC('h','d','v','5'), CODEC_ID_MPEG2VIDEO,
  76.       VIDEO_ES, "HDV 720p25 (MPEG-2 Video)" },
  77.     { VLC_FOURCC('h','d','v','6'), CODEC_ID_MPEG2VIDEO,
  78.       VIDEO_ES, "HDV 1080p24 (MPEG-2 Video)" },
  79.     { VLC_FOURCC('h','d','v','7'), CODEC_ID_MPEG2VIDEO,
  80.       VIDEO_ES, "HDV 1080p25 (MPEG-2 Video)" },
  81.     { VLC_FOURCC('h','d','v','8'), CODEC_ID_MPEG2VIDEO,
  82.       VIDEO_ES, "HDV 1080p30 (MPEG-2 Video)" },
  83.     { VLC_FOURCC('m','x','5','n'), CODEC_ID_MPEG2VIDEO,
  84.       VIDEO_ES, "MPEG2 IMX NTSC 525/60 50mb/s (FCP)" },
  85.     { VLC_FOURCC('m','x','5','p'), CODEC_ID_MPEG2VIDEO,
  86.       VIDEO_ES, "MPEG2 IMX PAL 625/60 50mb/s (FCP)" },
  87.     { VLC_FOURCC('m','x','4','n'), CODEC_ID_MPEG2VIDEO,
  88.       VIDEO_ES, "MPEG2 IMX NTSC 525/60 40mb/s (FCP)" },
  89.     { VLC_FOURCC('m','x','4','p'), CODEC_ID_MPEG2VIDEO,
  90.       VIDEO_ES, "MPEG2 IMX PAL 625/50 40mb/s (FCP)" },
  91.     { VLC_FOURCC('m','x','3','n'), CODEC_ID_MPEG2VIDEO,
  92.       VIDEO_ES, "MPEG2 IMX NTSC 525/60 30mb/s (FCP)" },
  93.     { VLC_FOURCC('m','x','3','p'), CODEC_ID_MPEG2VIDEO,
  94.       VIDEO_ES, "MPEG2 IMX NTSC 625/50 30mb/s (FCP)" },
  95.     { VLC_FOURCC('x','d','v','2'), CODEC_ID_MPEG2VIDEO,
  96.       VIDEO_ES, "XDCAM HD 1080i60" },
  97.     { VLC_FOURCC('A','V','m','p'), CODEC_ID_MPEG2VIDEO,
  98.       VIDEO_ES, "AVID IMX PAL" },
  99.     /* ATI VCR2 */
  100.     { VLC_FOURCC('V','C','R','2'), CODEC_ID_MPEG2VIDEO,
  101.       VIDEO_ES, "ATI VCR2 Video" },
  102.     { VLC_FOURCC('M','M','E','S'), CODEC_ID_MPEG2VIDEO,
  103.       VIDEO_ES, "Matrox MPEG-2" },
  104.     { VLC_FOURCC('m','m','e','s'), CODEC_ID_MPEG2VIDEO,
  105.       VIDEO_ES, "Matrox MPEG-2" },
  106.     { VLC_FOURCC('P','I','M','2'), CODEC_ID_MPEG2VIDEO,
  107.       VIDEO_ES, "Pinnacle DC1000 (MPEG-2 Video)" },
  108.     /* MPEG-4 Video */
  109.     { VLC_FOURCC('D','I','V','X'), CODEC_ID_MPEG4,
  110.       VIDEO_ES, "MPEG-4 Video" },
  111.     { VLC_FOURCC('d','i','v','x'), CODEC_ID_MPEG4,
  112.       VIDEO_ES, "MPEG-4 Video" },
  113.     { VLC_FOURCC('M','P','4','S'), CODEC_ID_MPEG4,
  114.       VIDEO_ES, "MPEG-4 Video" },
  115.     { VLC_FOURCC('m','p','4','s'), CODEC_ID_MPEG4,
  116.       VIDEO_ES, "MPEG-4 Video" },
  117.     { VLC_FOURCC('M','4','S','2'), CODEC_ID_MPEG4,
  118.       VIDEO_ES, "MPEG-4 Video" },
  119.     { VLC_FOURCC('m','4','s','2'), CODEC_ID_MPEG4,
  120.       VIDEO_ES, "MPEG-4 Video" },
  121.     /* XVID flavours */
  122.     { VLC_FOURCC('x','v','i','d'), CODEC_ID_MPEG4,
  123.       VIDEO_ES, "MPEG-4 Video" },
  124.     { VLC_FOURCC('X','V','I','D'), CODEC_ID_MPEG4,
  125.       VIDEO_ES, "MPEG-4 Video" },
  126.     { VLC_FOURCC('X','v','i','D'), CODEC_ID_MPEG4,
  127.       VIDEO_ES, "MPEG-4 Video" },
  128.     { VLC_FOURCC('X','V','I','X'), CODEC_ID_MPEG4,
  129.       VIDEO_ES, "MPEG-4 Video" },
  130.     { VLC_FOURCC('x','v','i','x'), CODEC_ID_MPEG4,
  131.       VIDEO_ES, "MPEG-4 Video" },
  132.     /* DX50 */
  133.     { VLC_FOURCC('D','X','5','0'), CODEC_ID_MPEG4,
  134.       VIDEO_ES, "MPEG-4 Video" },
  135.     { VLC_FOURCC('d','x','5','0'), CODEC_ID_MPEG4,
  136.       VIDEO_ES, "MPEG-4 Video" },
  137.     { VLC_FOURCC('B','L','Z','0'), CODEC_ID_MPEG4,
  138.       VIDEO_ES, "Blizzard MPEG-4 Video" },
  139.     { VLC_FOURCC('D','X','G','M'), CODEC_ID_MPEG4,
  140.       VIDEO_ES, "Electronic Arts Game MPEG-4 Video" },
  141.     { VLC_FOURCC('m','p','4','v'), CODEC_ID_MPEG4,
  142.       VIDEO_ES, "MPEG-4 Video" },
  143.     { VLC_FOURCC('M','P','4','V'), CODEC_ID_MPEG4,
  144.       VIDEO_ES, "MPEG-4 Video" },
  145.     { VLC_FOURCC( 4,  0,  0,  0 ), CODEC_ID_MPEG4,
  146.       VIDEO_ES, "MPEG-4 Video" },
  147.     { VLC_FOURCC('m','4','c','c'), CODEC_ID_MPEG4,
  148.       VIDEO_ES, "MPEG-4 Video" },
  149.     { VLC_FOURCC('M','4','C','C'), CODEC_ID_MPEG4,
  150.       VIDEO_ES, "MPEG-4 Video" },
  151.     { VLC_FOURCC('F','M','P','4'), CODEC_ID_MPEG4,
  152.       VIDEO_ES, "MPEG-4 Video" },
  153.     { VLC_FOURCC('f','m','p','4'), CODEC_ID_MPEG4,
  154.       VIDEO_ES, "MPEG-4 Video" },
  155.     /* 3ivx delta 3.5 Unsupported
  156.      * putting it here gives extreme distorted images
  157.     { VLC_FOURCC('3','I','V','1'), CODEC_ID_MPEG4,
  158.       VIDEO_ES, "MPEG-4 Video" },
  159.     { VLC_FOURCC('3','i','v','1'), CODEC_ID_MPEG4,
  160.       VIDEO_ES, "MPEG-4 Video" }, */
  161.     /* 3ivx delta 4 */
  162.     { VLC_FOURCC('3','I','V','2'), CODEC_ID_MPEG4,
  163.       VIDEO_ES, "MPEG-4 Video" },
  164.     { VLC_FOURCC('3','i','v','2'), CODEC_ID_MPEG4,
  165.       VIDEO_ES, "MPEG-4 Video" },
  166.     { VLC_FOURCC('U','M','P','4'), CODEC_ID_MPEG4,
  167.       VIDEO_ES, "UB MPEG-4 Video" },
  168.     { VLC_FOURCC('W','V','1','F'), CODEC_ID_MPEG4,
  169.       VIDEO_ES, "MPEG-4 Video" },
  170.     { VLC_FOURCC('S','E','D','G'), CODEC_ID_MPEG4,
  171.       VIDEO_ES, "Samsung MPEG-4 Video" },
  172.     { VLC_FOURCC('R','M','P','4'), CODEC_ID_MPEG4,
  173.       VIDEO_ES, "REALmagic MPEG-4 Video" },
  174.     { VLC_FOURCC('H','D','X','4'), CODEC_ID_MPEG4,
  175.       VIDEO_ES, "Jomigo HDX4 (MPEG-4 Video)" },
  176.     { VLC_FOURCC('h','d','x','4'), CODEC_ID_MPEG4,
  177.       VIDEO_ES, "Jomigo HDX4 (MPEG-4 Video)" },
  178.     { VLC_FOURCC('S','M','P','4'), CODEC_ID_MPEG4,
  179.       VIDEO_ES, "Samsung SMP4 (MPEG-4 Video)" },
  180.     { VLC_FOURCC('s','m','p','4'), CODEC_ID_MPEG4,
  181.       VIDEO_ES, "Samsung SMP4 (MPEG-4 Video)" },
  182.     { VLC_FOURCC('f','v','f','w'), CODEC_ID_MPEG4,
  183.       VIDEO_ES, "FFmpeg MPEG-4" },
  184.     { VLC_FOURCC('F','V','F','W'), CODEC_ID_MPEG4,
  185.       VIDEO_ES, "FFmpeg MPEG-4" },
  186.     { VLC_FOURCC('F','F','D','S'), CODEC_ID_MPEG4,
  187.       VIDEO_ES, "FFDShow MPEG-4" },
  188.     { VLC_FOURCC('V','I','D','M'), CODEC_ID_MPEG4,
  189.       VIDEO_ES, "vidm 4.01 codec" },
  190.     { VLC_FOURCC('D','C','O','D'), CODEC_ID_MPEG4,
  191.       VIDEO_ES, "MPEG-4 Video" },
  192.     { VLC_FOURCC('f','m','p','4'), CODEC_ID_MPEG4,
  193.       VIDEO_ES, "MPEG-4 Video" },
  194.     { VLC_FOURCC('M','V','X','M'), CODEC_ID_MPEG4,
  195.       VIDEO_ES, "MPEG-4 Video" },
  196.     { VLC_FOURCC('P','M','4','V'), CODEC_ID_MPEG4,
  197.       VIDEO_ES, "MPEG-4 Video" },
  198.     { VLC_FOURCC('f','m','p','4'), CODEC_ID_MPEG4,
  199.       VIDEO_ES, "MPEG-4 Video" },
  200.     { VLC_FOURCC('M','4','T','3'), CODEC_ID_MPEG4,
  201.       VIDEO_ES, "MPEG-4 Video" },
  202.     { VLC_FOURCC('G','E','O','X'), CODEC_ID_MPEG4,
  203.       VIDEO_ES, "MPEG-4 Video" },
  204.     { VLC_FOURCC('D','M','K','2'), CODEC_ID_MPEG4,
  205.       VIDEO_ES, "MPEG-4 Video" },
  206.     { VLC_FOURCC('D','I','G','I'), CODEC_ID_MPEG4,
  207.       VIDEO_ES, "MPEG-4 Video" },
  208.     { VLC_FOURCC('I','N','M','C'), CODEC_ID_MPEG4,
  209.       VIDEO_ES, "MPEG-4 Video" },
  210.     { VLC_FOURCC('S','N','4','0'), CODEC_ID_MPEG4,
  211.       VIDEO_ES, "MPEG-4 Video" },
  212.     { VLC_FOURCC('E','P','H','V'), CODEC_ID_MPEG4,
  213.       VIDEO_ES, "MPEG-4 Video" },
  214.     /* MSMPEG4 v1 */
  215.     { VLC_FOURCC('D','I','V','1'), CODEC_ID_MSMPEG4V1,
  216.       VIDEO_ES, "MS MPEG-4 Video v1" },
  217.     { VLC_FOURCC('d','i','v','1'), CODEC_ID_MSMPEG4V1,
  218.       VIDEO_ES, "MS MPEG-4 Video v1" },
  219.     { VLC_FOURCC('M','P','G','4'), CODEC_ID_MSMPEG4V1,
  220.       VIDEO_ES, "MS MPEG-4 Video v1" },
  221.     { VLC_FOURCC('m','p','g','4'), CODEC_ID_MSMPEG4V1,
  222.       VIDEO_ES, "MS MPEG-4 Video v1" },
  223.     { VLC_FOURCC('m','p','4','1'), CODEC_ID_MSMPEG4V1,
  224.       VIDEO_ES, "MS MPEG-4 Video v1" },
  225.     /* MSMPEG4 v2 */
  226.     { VLC_FOURCC('D','I','V','2'), CODEC_ID_MSMPEG4V2,
  227.       VIDEO_ES, "MS MPEG-4 Video v2" },
  228.     { VLC_FOURCC('d','i','v','2'), CODEC_ID_MSMPEG4V2,
  229.       VIDEO_ES, "MS MPEG-4 Video v2" },
  230.     { VLC_FOURCC('M','P','4','2'), CODEC_ID_MSMPEG4V2,
  231.       VIDEO_ES, "MS MPEG-4 Video v2" },
  232.     { VLC_FOURCC('m','p','4','2'), CODEC_ID_MSMPEG4V2,
  233.       VIDEO_ES, "MS MPEG-4 Video v2" },
  234.     /* MSMPEG4 v3 / M$ mpeg4 v3 */
  235.     { VLC_FOURCC('M','P','G','3'), CODEC_ID_MSMPEG4V3,
  236.       VIDEO_ES, "MS MPEG-4 Video v3" },
  237.     { VLC_FOURCC('m','p','g','3'), CODEC_ID_MSMPEG4V3,
  238.       VIDEO_ES, "MS MPEG-4 Video v3" },
  239.     { VLC_FOURCC('d','i','v','3'), CODEC_ID_MSMPEG4V3,
  240.       VIDEO_ES, "MS MPEG-4 Video v3" },
  241.     { VLC_FOURCC('M','P','4','3'), CODEC_ID_MSMPEG4V3,
  242.       VIDEO_ES, "MS MPEG-4 Video v3" },
  243.     { VLC_FOURCC('m','p','4','3'), CODEC_ID_MSMPEG4V3,
  244.       VIDEO_ES, "MS MPEG-4 Video v3" },
  245.     /* DivX 3.20 */
  246.     { VLC_FOURCC('D','I','V','3'), CODEC_ID_MSMPEG4V3,
  247.       VIDEO_ES, "MS MPEG-4 Video v3" },
  248.     { VLC_FOURCC('D','I','V','4'), CODEC_ID_MSMPEG4V3,
  249.       VIDEO_ES, "MS MPEG-4 Video v3" },
  250.     { VLC_FOURCC('d','i','v','4'), CODEC_ID_MSMPEG4V3,
  251.       VIDEO_ES, "MS MPEG-4 Video v3" },
  252.     { VLC_FOURCC('D','I','V','5'), CODEC_ID_MSMPEG4V3,
  253.       VIDEO_ES, "MS MPEG-4 Video v3" },
  254.     { VLC_FOURCC('d','i','v','5'), CODEC_ID_MSMPEG4V3,
  255.       VIDEO_ES, "MS MPEG-4 Video v3" },
  256.     { VLC_FOURCC('D','I','V','6'), CODEC_ID_MSMPEG4V3,
  257.       VIDEO_ES, "MS MPEG-4 Video v3" },
  258.     { VLC_FOURCC('d','i','v','6'), CODEC_ID_MSMPEG4V3,
  259.       VIDEO_ES, "MS MPEG-4 Video v3" },
  260.     /* Cool Codec */
  261.     { VLC_FOURCC('C','O','L','1'), CODEC_ID_MSMPEG4V3,
  262.       VIDEO_ES, "MS MPEG-4 Video v3" },
  263.     { VLC_FOURCC('c','o','l','1'), CODEC_ID_MSMPEG4V3,
  264.       VIDEO_ES, "MS MPEG-4 Video v3" },
  265.     { VLC_FOURCC('C','O','L','0'), CODEC_ID_MSMPEG4V3,
  266.       VIDEO_ES, "MS MPEG-4 Video v3" },
  267.     { VLC_FOURCC('c','o','l','0'), CODEC_ID_MSMPEG4V3,
  268.       VIDEO_ES, "MS MPEG-4 Video v3" },
  269.     /* AngelPotion stuff */
  270.     { VLC_FOURCC('A','P','4','1'), CODEC_ID_MSMPEG4V3,
  271.       VIDEO_ES, "MS MPEG-4 Video v3" },
  272.     /* 3ivx doctered divx files */
  273.     { VLC_FOURCC('3','I','V','D'), CODEC_ID_MSMPEG4V3,
  274.       VIDEO_ES, "MS MPEG-4 Video v3" },
  275.     { VLC_FOURCC('3','i','v','d'), CODEC_ID_MSMPEG4V3,
  276.       VIDEO_ES, "MS MPEG-4 Video v3" },
  277.     /* who knows? */
  278.     { VLC_FOURCC('3','V','I','D'), CODEC_ID_MSMPEG4V3,
  279.       VIDEO_ES, "MS MPEG-4 Video v3" },
  280.     { VLC_FOURCC('3','v','i','d'), CODEC_ID_MSMPEG4V3,
  281.       VIDEO_ES, "MS MPEG-4 Video v3" },
  282.     /* Sorenson v1 */
  283.     { VLC_FOURCC('S','V','Q','1'), CODEC_ID_SVQ1,
  284.       VIDEO_ES, "SVQ-1 (Sorenson Video v1)" },
  285.     { VLC_FOURCC('s','v','q','1'), CODEC_ID_SVQ1,
  286.       VIDEO_ES, "SVQ-1 (Sorenson Video v1)" },
  287.     { VLC_FOURCC('s','v','q','i'), CODEC_ID_SVQ1,
  288.       VIDEO_ES, "SVQ-1 (Sorenson Video v1)" },
  289.     /* Sorenson v3 */
  290.     { VLC_FOURCC('S','V','Q','3'), CODEC_ID_SVQ3,
  291.       VIDEO_ES, "SVQ-3 (Sorenson Video v3)" },
  292.     /* h264 */
  293.     { VLC_FOURCC('h','2','6','4'), CODEC_ID_H264,
  294.       VIDEO_ES, "H264 - MPEG-4 AVC (part 10)" },
  295.     { VLC_FOURCC('H','2','6','4'), CODEC_ID_H264,
  296.       VIDEO_ES, "H264 - MPEG-4 AVC (part 10)" },
  297.     { VLC_FOURCC('x','2','6','4'), CODEC_ID_H264,
  298.       VIDEO_ES, "H264 - MPEG-4 AVC (part 10)" },
  299.     { VLC_FOURCC('X','2','6','4'), CODEC_ID_H264,
  300.       VIDEO_ES, "H264 - MPEG-4 AVC (part 10)" },
  301.     /* avc1: special case h264 */
  302.     { VLC_FOURCC('a','v','c','1'), CODEC_ID_H264,
  303.       VIDEO_ES, "H264 - MPEG-4 AVC (part 10)" },
  304.     { VLC_FOURCC('A','V','C','1'), CODEC_ID_H264,
  305.       VIDEO_ES, "H264 - MPEG-4 AVC (part 10)" },
  306.     { VLC_FOURCC('V','S','S','H'), CODEC_ID_H264,
  307.       VIDEO_ES, "Vanguard VSS H264" },
  308.     { VLC_FOURCC('V','S','S','W'), CODEC_ID_H264,
  309.       VIDEO_ES, "Vanguard VSS H264" },
  310.     { VLC_FOURCC('v','s','s','h'), CODEC_ID_H264,
  311.       VIDEO_ES, "Vanguard VSS H264" },
  312.     { VLC_FOURCC('D','A','V','C'), CODEC_ID_H264,
  313.       VIDEO_ES, "Dicas MPEGable H.264/MPEG-4 AVC" },
  314.     { VLC_FOURCC('d','a','v','c'), CODEC_ID_H264,
  315.       VIDEO_ES, "Dicas MPEGable H.264/MPEG-4 AVC" },
  316. /* H263 and H263i */
  317. /* H263(+) is also known as Real Video 1.0 */
  318.     /* H263 */
  319.     { VLC_FOURCC('D','2','6','3'), CODEC_ID_H263,
  320.       VIDEO_ES, "DEC H263" },
  321.     { VLC_FOURCC('H','2','6','3'), CODEC_ID_H263,
  322.       VIDEO_ES, "H263" },
  323.     { VLC_FOURCC('h','2','6','3'), CODEC_ID_H263,
  324.       VIDEO_ES, "H263" },
  325.     { VLC_FOURCC('L','2','6','3'), CODEC_ID_H263,
  326.       VIDEO_ES, "LEAD H263" },
  327.     { VLC_FOURCC('s','2','6','3'), CODEC_ID_H263,
  328.       VIDEO_ES, "H263" },
  329.     { VLC_FOURCC('S','2','6','3'), CODEC_ID_H263,
  330.       VIDEO_ES, "H263" },
  331.     { VLC_FOURCC('M','2','6','3'), CODEC_ID_H263,
  332.       VIDEO_ES, "Microsoft H263" },
  333.     { VLC_FOURCC('X','2','6','3'), CODEC_ID_H263,
  334.       VIDEO_ES, "Xirlink H263" },
  335.     { VLC_FOURCC('V','X','1','K'), CODEC_ID_H263,
  336.       VIDEO_ES, "H263" },
  337.     /* Zygo (partial) */
  338.     { VLC_FOURCC('Z','y','G','o'), CODEC_ID_H263,
  339.       VIDEO_ES, "ITU H263+" },
  340.     /* H263i */
  341.     { VLC_FOURCC('I','2','6','3'), CODEC_ID_H263I,
  342.       VIDEO_ES, "I263.I" },
  343.     { VLC_FOURCC('i','2','6','3'), CODEC_ID_H263I,
  344.       VIDEO_ES, "I263.I" },
  345.     /* H263P */
  346.     { VLC_FOURCC('v','i','v','1'), CODEC_ID_H263P,
  347.       VIDEO_ES, "H263+" },
  348.     { VLC_FOURCC('v','i','v','O'), CODEC_ID_H263P,
  349.       VIDEO_ES, "H263+" },
  350.     { VLC_FOURCC('v','i','v','2'), CODEC_ID_H263P,
  351.       VIDEO_ES, "H263+" },
  352.     { VLC_FOURCC('U','2','6','3'), CODEC_ID_H263P,
  353.       VIDEO_ES, "UB H263+" },
  354.     { VLC_FOURCC('I','L','V','R'), CODEC_ID_H263P,
  355.       VIDEO_ES, "ITU H263+" },
  356.     /* Flash (H263) variant */
  357.     { VLC_FOURCC('F','L','V','1'), CODEC_ID_FLV1,
  358.       VIDEO_ES, "Flash Video" },
  359.     /* H261 */
  360.     { VLC_FOURCC('H','2','6','1'), CODEC_ID_H261,
  361.       VIDEO_ES, "H.261" },
  362.     { VLC_FOURCC('h','2','6','1'), CODEC_ID_H261,
  363.       VIDEO_ES, "H.261" },
  364.     { VLC_FOURCC('F','L','I','C'), CODEC_ID_FLIC,
  365.       VIDEO_ES, "Flic Video" },
  366.     /* MJPEG */
  367.     { VLC_FOURCC( 'M','J','P','G' ), CODEC_ID_MJPEG,
  368.       VIDEO_ES, "Motion JPEG Video" },
  369.     { VLC_FOURCC( 'm','j','p','g' ), CODEC_ID_MJPEG,
  370.       VIDEO_ES, "Motion JPEG Video" },
  371.     { VLC_FOURCC( 'm','j','p','a' ), CODEC_ID_MJPEG, /* for mov file */
  372.       VIDEO_ES, "Motion JPEG Video" },
  373.     { VLC_FOURCC( 'j','p','e','g' ), CODEC_ID_MJPEG,
  374.       VIDEO_ES, "Motion JPEG Video" },
  375.     { VLC_FOURCC( 'J','P','E','G' ), CODEC_ID_MJPEG,
  376.       VIDEO_ES, "Motion JPEG Video" },
  377.     { VLC_FOURCC( 'J','F','I','F' ), CODEC_ID_MJPEG,
  378.       VIDEO_ES, "Motion JPEG Video" },
  379.     { VLC_FOURCC( 'J','P','G','L' ), CODEC_ID_MJPEG,
  380.       VIDEO_ES, "Motion JPEG Video" },
  381.     { VLC_FOURCC( 'A','V','D','J' ), CODEC_ID_MJPEG,
  382.       VIDEO_ES, "Motion JPEG Video" },
  383.     { VLC_FOURCC( 'm','j','p','b' ), CODEC_ID_MJPEGB, /* for mov file */
  384.       VIDEO_ES, "Motion JPEG B Video" },
  385.     { VLC_FOURCC( 'L','J','P','G' ), CODEC_ID_LJPEG,
  386.       VIDEO_ES, "Lead Motion JPEG Video" },
  387.     { VLC_FOURCC( 'L','J','P','G' ), CODEC_ID_MJPEG,
  388.       VIDEO_ES, "Lead Motion JPEG Video" },
  389.     /* AVID MJPEG */
  390.     { VLC_FOURCC( 'A','V','R','n' ), CODEC_ID_MJPEG,
  391.       VIDEO_ES, "Avid Motion JPEG" },
  392.     { VLC_FOURCC( 'A','D','J','V' ), CODEC_ID_MJPEG,
  393.       VIDEO_ES, "Avid Motion JPEG" },
  394.     { VLC_FOURCC( 'd','m','b','1' ), CODEC_ID_MJPEG,
  395.       VIDEO_ES, "Motion JPEG OpenDML Video" },
  396.     { VLC_FOURCC( 'I','J','P','G' ), CODEC_ID_MJPEG,
  397.       VIDEO_ES, "Intergraph JPEG Video" },
  398.     { VLC_FOURCC( 'A','C','D','V' ), CODEC_ID_MJPEG,
  399.       VIDEO_ES, "ACD Systems Digital" },
  400.     /* SP5x */
  401.     { VLC_FOURCC( 'S','P','5','X' ), CODEC_ID_SP5X,
  402.       VIDEO_ES, "Sunplus Motion JPEG Video" },
  403.     { VLC_FOURCC( 'S','P','5','3' ), CODEC_ID_SP5X,
  404.       VIDEO_ES, "Sunplus Motion JPEG Video" },
  405.     { VLC_FOURCC( 'S','P','5','4' ), CODEC_ID_SP5X,
  406.       VIDEO_ES, "Sunplus Motion JPEG Video" },
  407.     { VLC_FOURCC( 'S','P','5','5' ), CODEC_ID_SP5X,
  408.       VIDEO_ES, "Sunplus Motion JPEG Video" },
  409.     { VLC_FOURCC( 'S','P','5','6' ), CODEC_ID_SP5X,
  410.       VIDEO_ES, "Sunplus Motion JPEG Video" },
  411.     { VLC_FOURCC( 'S','P','5','7' ), CODEC_ID_SP5X,
  412.       VIDEO_ES, "Sunplus Motion JPEG Video" },
  413.     { VLC_FOURCC( 'S','P','5','8' ), CODEC_ID_SP5X,
  414.       VIDEO_ES, "Sunplus Motion JPEG Video" },
  415.     /* DV */
  416.     { VLC_FOURCC('d','v','s','l'), CODEC_ID_DVVIDEO,
  417.       VIDEO_ES, "DV Video" },
  418.     { VLC_FOURCC('d','v','s','d'), CODEC_ID_DVVIDEO,
  419.       VIDEO_ES, "DV Video" },
  420.     { VLC_FOURCC('D','V','S','D'), CODEC_ID_DVVIDEO,
  421.       VIDEO_ES, "DV Video" },
  422.     { VLC_FOURCC('d','v','h','d'), CODEC_ID_DVVIDEO,
  423.       VIDEO_ES, "DV Video" },
  424.     { VLC_FOURCC('d','v','h','p'), CODEC_ID_DVVIDEO,
  425.       VIDEO_ES, "DV Video" },
  426.     { VLC_FOURCC('d','v','h','q'), CODEC_ID_DVVIDEO,
  427.       VIDEO_ES, "DV Video" },
  428.     { VLC_FOURCC('d','v','h','1'), CODEC_ID_DVVIDEO,
  429.       VIDEO_ES, "DV Video" },
  430.     { VLC_FOURCC('d','v','h','3'), CODEC_ID_DVVIDEO,
  431.       VIDEO_ES, "DV Video" },
  432.     { VLC_FOURCC('d','v','h','5'), CODEC_ID_DVVIDEO,
  433.       VIDEO_ES, "DV Video" },
  434.     { VLC_FOURCC('d','v','h','6'), CODEC_ID_DVVIDEO,
  435.       VIDEO_ES, "DV Video" },
  436.     { VLC_FOURCC('d','v','c',' '), CODEC_ID_DVVIDEO,
  437.       VIDEO_ES, "DV Video" },
  438.     { VLC_FOURCC('d','v','2','5'), CODEC_ID_DVVIDEO,
  439.       VIDEO_ES, "DV Video" },
  440.     { VLC_FOURCC('d','v','c','p'), CODEC_ID_DVVIDEO,
  441.       VIDEO_ES, "DV Video PAL" },
  442.     { VLC_FOURCC('d','v','p',' '), CODEC_ID_DVVIDEO,
  443.       VIDEO_ES, "DV Video Pro" },
  444.     { VLC_FOURCC('d','v','p','p'), CODEC_ID_DVVIDEO,
  445.       VIDEO_ES, "DV Video Pro PAL" },
  446.     { VLC_FOURCC('C','D','V','C'), CODEC_ID_DVVIDEO,
  447.       VIDEO_ES, "Canopus DV Video" },
  448.     { VLC_FOURCC('c','d','v','c'), CODEC_ID_DVVIDEO,
  449.       VIDEO_ES, "Canopus DV Video" },
  450.     { VLC_FOURCC('C','D','V','H'), CODEC_ID_DVVIDEO,
  451.       VIDEO_ES, "Canopus DV Video" },
  452.     { VLC_FOURCC('d','v','5','p'), CODEC_ID_DVVIDEO,
  453.       VIDEO_ES, "DV Video C Pro 50 PAL" },
  454.     { VLC_FOURCC('d','v','5','n'), CODEC_ID_DVVIDEO,
  455.       VIDEO_ES, "DV Video C Pro 50 NTSC" },
  456.     { VLC_FOURCC('A','V','d','v'), CODEC_ID_DVVIDEO,
  457.       VIDEO_ES, "AVID DV" },
  458.     { VLC_FOURCC('A','V','d','1'), CODEC_ID_DVVIDEO,
  459.       VIDEO_ES, "AVID DV" },
  460.     /* Windows Media Video */
  461.     { VLC_FOURCC('W','M','V','1'), CODEC_ID_WMV1,
  462.       VIDEO_ES, "Windows Media Video 1" },
  463.     { VLC_FOURCC('w','m','v','1'), CODEC_ID_WMV1,
  464.       VIDEO_ES, "Windows Media Video 1" },
  465.     { VLC_FOURCC('W','M','V','2'), CODEC_ID_WMV2,
  466.       VIDEO_ES, "Windows Media Video 2" },
  467.     { VLC_FOURCC('w','m','v','2'), CODEC_ID_WMV2,
  468.       VIDEO_ES, "Windows Media Video 2" },
  469. #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 10, 1 )
  470.     { VLC_FOURCC('W','M','V','3'), CODEC_ID_WMV3,
  471.       VIDEO_ES, "Windows Media Video 3" },
  472.     { VLC_FOURCC('w','m','v','3'), CODEC_ID_WMV3,
  473.       VIDEO_ES, "Windows Media Video 3" },
  474.     { VLC_FOURCC('W','V','C','1'), CODEC_ID_VC1,
  475.       VIDEO_ES, "Windows Media Video VC1" },
  476.     { VLC_FOURCC('w','v','c','1'), CODEC_ID_VC1,
  477.       VIDEO_ES, "Windows Media Video VC1" },
  478.     { VLC_FOURCC('v','c','-','1'), CODEC_ID_VC1,
  479.       VIDEO_ES, "Windows Media Video VC1" },
  480.     { VLC_FOURCC('V','C','-','1'), CODEC_ID_VC1,
  481.       VIDEO_ES, "Windows Media Video VC1" },
  482.     /* WMVA is the VC-1 codec before the standardization proces,
  483.        it is not bitstream compatible and deprecated  */
  484.     { VLC_FOURCC('W','M','V','A'), CODEC_ID_VC1,
  485.       VIDEO_ES, "Windows Media Video Advanced Profile" },
  486. #endif
  487.     /* Microsoft Video 1 */
  488.     { VLC_FOURCC('M','S','V','C'), CODEC_ID_MSVIDEO1,
  489.       VIDEO_ES, "Microsoft Video 1" },
  490.     { VLC_FOURCC('m','s','v','c'), CODEC_ID_MSVIDEO1,
  491.       VIDEO_ES, "Microsoft Video 1" },
  492.     { VLC_FOURCC('C','R','A','M'), CODEC_ID_MSVIDEO1,
  493.       VIDEO_ES, "Microsoft Video 1" },
  494.     { VLC_FOURCC('c','r','a','m'), CODEC_ID_MSVIDEO1,
  495.       VIDEO_ES, "Microsoft Video 1" },
  496.     { VLC_FOURCC('W','H','A','M'), CODEC_ID_MSVIDEO1,
  497.       VIDEO_ES, "Microsoft Video 1" },
  498.     { VLC_FOURCC('w','h','a','m'), CODEC_ID_MSVIDEO1,
  499.       VIDEO_ES, "Microsoft Video 1" },
  500.     /* Microsoft RLE */
  501.     { VLC_FOURCC('m','r','l','e'), CODEC_ID_MSRLE,
  502.       VIDEO_ES, "Microsoft RLE Video" },
  503.     { VLC_FOURCC('W','R','L','E'), CODEC_ID_MSRLE,
  504.       VIDEO_ES, "Microsoft RLE Video" },
  505.     { VLC_FOURCC(0x1,0x0,0x0,0x0), CODEC_ID_MSRLE,
  506.       VIDEO_ES, "Microsoft RLE Video" },
  507.     { VLC_FOURCC(0x2,0x0,0x0,0x0), CODEC_ID_MSRLE,
  508.       VIDEO_ES, "Microsoft RLE Video" },
  509.     /* Indeo Video Codecs (Quality of this decoder on ppc is not good) */
  510.     { VLC_FOURCC('I','V','3','1'), CODEC_ID_INDEO3,
  511.       VIDEO_ES, "Indeo Video v3" },
  512.     { VLC_FOURCC('i','v','3','1'), CODEC_ID_INDEO3,
  513.       VIDEO_ES, "Indeo Video v3" },
  514.     { VLC_FOURCC('I','V','3','2'), CODEC_ID_INDEO3,
  515.       VIDEO_ES, "Indeo Video v3" },
  516.     { VLC_FOURCC('i','v','3','2'), CODEC_ID_INDEO3,
  517.       VIDEO_ES, "Indeo Video v3" },
  518.     /* Huff YUV */
  519.     { VLC_FOURCC('H','F','Y','U'), CODEC_ID_HUFFYUV,
  520.       VIDEO_ES, "Huff YUV Video" },
  521.     { VLC_FOURCC('F','F','V','H'), CODEC_ID_FFVHUFF,
  522.       VIDEO_ES, "Huff YUV Video" },
  523.     /* Creative YUV */
  524.     { VLC_FOURCC('C','Y','U','V'), CODEC_ID_CYUV,
  525.       VIDEO_ES, "Creative YUV Video" },
  526.     { VLC_FOURCC('c','y','u','v'), CODEC_ID_CYUV,
  527.       VIDEO_ES, "Creative YUV Video" },
  528.     /* On2 VP3 Video Codecs */
  529.     { VLC_FOURCC('V','P','3',' '), CODEC_ID_VP3,
  530.       VIDEO_ES, "On2's VP3 Video" },
  531.     { VLC_FOURCC('V','P','3','0'), CODEC_ID_VP3,
  532.       VIDEO_ES, "On2's VP3 Video" },
  533.     { VLC_FOURCC('V','P','3','1'), CODEC_ID_VP3,
  534.       VIDEO_ES, "On2's VP3 Video" },
  535.     { VLC_FOURCC('v','p','3','1'), CODEC_ID_VP3,
  536.       VIDEO_ES, "On2's VP3 Video" },
  537.     /* On2  VP5, VP6 codecs */
  538. #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 14, 0 )
  539.     { VLC_FOURCC('V','P','5',' '), CODEC_ID_VP5,
  540.       VIDEO_ES, "On2's VP5 Video" },
  541.     { VLC_FOURCC('V','P','5','0'), CODEC_ID_VP5,
  542.       VIDEO_ES, "On2's VP5 Video" },
  543.     { VLC_FOURCC('V','P','6','2'), CODEC_ID_VP6,
  544.       VIDEO_ES, "On2's VP6.2 Video" },
  545.     { VLC_FOURCC('v','p','6','2'), CODEC_ID_VP6,
  546.       VIDEO_ES, "On2's VP6.2 Video" },
  547.     { VLC_FOURCC('V','P','6','F'), CODEC_ID_VP6F,
  548.       VIDEO_ES, "On2's VP6.2 Video (Flash)" },
  549. #endif
  550. #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 27, 0 )
  551.     { VLC_FOURCC('V','P','6','0'), CODEC_ID_VP6,
  552.       VIDEO_ES, "On2's VP6.0 Video" },
  553.     { VLC_FOURCC('V','P','6','1'), CODEC_ID_VP6,
  554.       VIDEO_ES, "On2's VP6.1 Video" },
  555. #endif
  556. #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 47, 0 )
  557.     { VLC_FOURCC('V','P','6','A'), CODEC_ID_VP6A,
  558.       VIDEO_ES, "On2's VP6 A Video" },
  559. #endif
  560.     /* Xiph.org theora */
  561.     { VLC_FOURCC('t','h','e','o'), CODEC_ID_THEORA,
  562.       VIDEO_ES, "Xiph.org's Theora Video" },
  563.     { VLC_FOURCC('T','h','r','a'), CODEC_ID_THEORA,
  564.       VIDEO_ES, "Xiph.org's Theora Video" },
  565. #if ( !defined( WORDS_BIGENDIAN ) )
  566.     /* Asus Video (Another thing that doesn't work on PPC) */
  567.     { VLC_FOURCC('A','S','V','1'), CODEC_ID_ASV1,
  568.       VIDEO_ES, "Asus V1 Video" },
  569.     { VLC_FOURCC('A','S','V','2'), CODEC_ID_ASV2,
  570.       VIDEO_ES, "Asus V2 Video" },
  571. #endif
  572.     /* FFMPEG Video 1 (lossless codec) */
  573.     { VLC_FOURCC('F','F','V','1'), CODEC_ID_FFV1,
  574.       VIDEO_ES, "FFMpeg Video 1" },
  575.     /* ATI VCR1 */
  576.     { VLC_FOURCC('V','C','R','1'), CODEC_ID_VCR1,
  577.       VIDEO_ES, "ATI VCR1 Video" },
  578.     /* Cirrus Logic AccuPak */
  579.     { VLC_FOURCC('C','L','J','R'), CODEC_ID_CLJR,
  580.       VIDEO_ES, "Creative Logic AccuPak" },
  581.     /* Real Video */
  582.     { VLC_FOURCC('R','V','1','0'), CODEC_ID_RV10,
  583.       VIDEO_ES, "Real Video 1.0" },
  584.     { VLC_FOURCC('r','v','1','0'), CODEC_ID_RV10,
  585.       VIDEO_ES, "Real Video 1.0" },
  586.     { VLC_FOURCC('R','V','1','3'), CODEC_ID_RV10,
  587.       VIDEO_ES, "Real Video 1.3" },
  588.     { VLC_FOURCC('r','v','1','3'), CODEC_ID_RV10,
  589.       VIDEO_ES, "Real Video 1.3" },
  590. #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 15, 1 )
  591.     { VLC_FOURCC('R','V','2','0'), CODEC_ID_RV20,
  592.       VIDEO_ES, "Real Video 2.0" },
  593.     { VLC_FOURCC('r','v','2','0'), CODEC_ID_RV20,
  594.       VIDEO_ES, "Real Video 2.0" },
  595. #endif
  596. #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 52, 8, 0 )
  597.     { VLC_FOURCC('R','V','3','0'), CODEC_ID_RV30,
  598.       VIDEO_ES, "Real Video 3.0" },
  599.     { VLC_FOURCC('r','v','3','0'), CODEC_ID_RV30,
  600.       VIDEO_ES, "Real Video 3.0" },
  601. #endif
  602. #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 52, 5, 0 )
  603.     { VLC_FOURCC('R','V','4','0'), CODEC_ID_RV40,
  604.       VIDEO_ES, "Real Video 4.0" },
  605.     { VLC_FOURCC('r','v','4','0'), CODEC_ID_RV40,
  606.       VIDEO_ES, "Real Video 4.0" },
  607. #endif
  608.     /* Apple Video */
  609.     { VLC_FOURCC('r','p','z','a'), CODEC_ID_RPZA,
  610.       VIDEO_ES, "Apple Video" },
  611.     { VLC_FOURCC('a','z','p','r'), CODEC_ID_RPZA,
  612.       VIDEO_ES, "Apple Video" },
  613.     { VLC_FOURCC('s','m','c',' '), CODEC_ID_SMC,
  614.       VIDEO_ES, "Apple graphics" },
  615.  /* CINEPAK. We have our own decoder with an higher priority,
  616.        but this can't harm */
  617.     { VLC_FOURCC('C','V','I','D'), CODEC_ID_CINEPAK,
  618.       VIDEO_ES, "Cinepak Video" },
  619.     { VLC_FOURCC('c','v','i','d'), CODEC_ID_CINEPAK,
  620.       VIDEO_ES, "Cinepak Video" },
  621.     /* Screen Capture Video Codecs */
  622.     { VLC_FOURCC('t','s','c','c'), CODEC_ID_TSCC,
  623.       VIDEO_ES, "TechSmith Camtasia Screen Capture" },
  624.     { VLC_FOURCC('T','S','C','C'), CODEC_ID_TSCC,
  625.       VIDEO_ES, "TechSmith Camtasia Screen Capture" },
  626.     { VLC_FOURCC('C','S','C','D'), CODEC_ID_CSCD,
  627.       VIDEO_ES, "CamStudio Screen Codec" },
  628.     { VLC_FOURCC('c','s','c','d'), CODEC_ID_CSCD,
  629.       VIDEO_ES, "CamStudio Screen Codec" },
  630.     { VLC_FOURCC('Z','M','B','V'), CODEC_ID_ZMBV,
  631.       VIDEO_ES, "DosBox Capture Codec" },
  632. #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 13, 0 )
  633.     { VLC_FOURCC('V','M','n','c'), CODEC_ID_VMNC,
  634.       VIDEO_ES, "VMware Video" },
  635. #endif
  636.     { VLC_FOURCC('F','P','S','1'), CODEC_ID_FRAPS,
  637.       VIDEO_ES, "FRAPS: Realtime Video Capture" },
  638.     { VLC_FOURCC('f','p','s','1'), CODEC_ID_FRAPS,
  639.       VIDEO_ES, "FRAPS: Realtime Video Capture" },
  640.     /* Duck TrueMotion */
  641.     { VLC_FOURCC('D','U','C','K'), CODEC_ID_TRUEMOTION1,
  642.       VIDEO_ES, "Duck TrueMotion v1 Video" },
  643.     { VLC_FOURCC('T','M','2','0'), CODEC_ID_TRUEMOTION2,
  644.       VIDEO_ES, "Duck TrueMotion v2.0 Video" },
  645.     /* FFMPEG's SNOW wavelet codec */
  646.     { VLC_FOURCC('S','N','O','W'), CODEC_ID_SNOW,
  647.       VIDEO_ES, "FFMpeg SNOW wavelet Video" },
  648.     { VLC_FOURCC('s','n','o','w'), CODEC_ID_SNOW,
  649.       VIDEO_ES, "FFMpeg SNOW wavelet Video" },
  650.     { VLC_FOURCC('r','l','e',' '), CODEC_ID_QTRLE,
  651.       VIDEO_ES, "Apple QuickTime RLE Video" },
  652.     { VLC_FOURCC('q','d','r','w'), CODEC_ID_QDRAW,
  653.       VIDEO_ES, "Apple QuickDraw Video" },
  654.     { VLC_FOURCC('Q','P','E','G'), CODEC_ID_QPEG,
  655.       VIDEO_ES, "QPEG Video" },
  656.     { VLC_FOURCC('Q','1','.','0'), CODEC_ID_QPEG,
  657.       VIDEO_ES, "QPEG Video" },
  658.     { VLC_FOURCC('Q','1','.','1'), CODEC_ID_QPEG,
  659.       VIDEO_ES, "QPEG Video" },
  660.     { VLC_FOURCC('U','L','T','I'), CODEC_ID_ULTI,
  661.       VIDEO_ES, "IBM Ultimotion Video" },
  662.     { VLC_FOURCC('V','I','X','L'), CODEC_ID_VIXL,
  663.       VIDEO_ES, "Miro/Pinnacle VideoXL Video" },
  664.     { VLC_FOURCC('P','I','X','L'), CODEC_ID_VIXL,
  665.       VIDEO_ES, "Pinnacle VideoXL Video" },
  666.     { VLC_FOURCC('L','O','C','O'), CODEC_ID_LOCO,
  667.       VIDEO_ES, "LOCO Video" },
  668.     { VLC_FOURCC('W','N','V','1'), CODEC_ID_WNV1,
  669.       VIDEO_ES, "Winnov WNV1 Video" },
  670.     { VLC_FOURCC('A','A','S','C'), CODEC_ID_AASC,
  671.       VIDEO_ES, "Autodesc RLE Video" },
  672.     { VLC_FOURCC('I','V','2','0'), CODEC_ID_INDEO2,
  673.       VIDEO_ES, "Indeo Video v2" },
  674.     { VLC_FOURCC('R','T','2','1'), CODEC_ID_INDEO2,
  675.       VIDEO_ES, "Indeo Video v2" },
  676.         /* Flash Screen Video */
  677. #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 11, 0 )
  678.     { VLC_FOURCC('F','S','V','1'), CODEC_ID_FLASHSV,
  679.               VIDEO_ES, "Flash Screen Video" },
  680. #endif
  681.    { VLC_FOURCC('K','M','V','C'), CODEC_ID_KMVC,
  682.       VIDEO_ES, "Karl Morton's Video Codec (Worms)" },
  683. #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 13, 0 )
  684.     { VLC_FOURCC('N','U','V','1'), CODEC_ID_NUV,
  685.       VIDEO_ES, "Nuppel Video" },
  686.     { VLC_FOURCC('R','J','P','G'), CODEC_ID_NUV,
  687.       VIDEO_ES, "Nuppel Video" },
  688. #endif
  689. #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 8, 0 )
  690.     /* CODEC_ID_SMACKVIDEO */
  691.     { VLC_FOURCC('S','M','K','2'), CODEC_ID_SMACKVIDEO,
  692.       VIDEO_ES, "Smacker Video" },
  693.     { VLC_FOURCC('S','M','K','4'), CODEC_ID_SMACKVIDEO,
  694.       VIDEO_ES, "Smacker Video" },
  695. #endif
  696.     /* Chinese AVS - Untested */
  697. #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 8, 0 )
  698.     { VLC_FOURCC('C','A','V','S'), CODEC_ID_CAVS,
  699.       VIDEO_ES, "Chinese AVS" },
  700.     { VLC_FOURCC('A','V','s','2'), CODEC_ID_CAVS,
  701.       VIDEO_ES, "Chinese AVS" },
  702. #endif
  703. #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 40, 0 )
  704.     /* Untested yet */
  705.     { VLC_FOURCC('A','V','d','n'), CODEC_ID_DNXHD,
  706.       VIDEO_ES, "DNxHD" },
  707. #endif
  708.     { VLC_FOURCC('8','B','P','S'), CODEC_ID_8BPS,
  709.       VIDEO_ES, "8BPS" },
  710. #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 52, 0 )
  711.     { VLC_FOURCC('M','L','2','O'), CODEC_ID_MIMIC,
  712.       VIDEO_ES, "Mimic" },
  713. #endif
  714.     /* Videogames Codecs */
  715.     /* Interplay MVE */
  716.     { VLC_FOURCC('i','m','v','e'), CODEC_ID_INTERPLAY_VIDEO,
  717.       VIDEO_ES, "Interplay MVE Video" },
  718.     { VLC_FOURCC('I','N','P','V'), CODEC_ID_INTERPLAY_VIDEO,
  719.       VIDEO_ES, "Interplay MVE Video" },
  720.     /* Id Quake II CIN */
  721.     { VLC_FOURCC('I','D','C','I'), CODEC_ID_IDCIN,
  722.       VIDEO_ES, "Id Quake II CIN Video" },
  723.     /* 4X Technologies */
  724.     { VLC_FOURCC('4','x','m','v'), CODEC_ID_4XM,
  725.       VIDEO_ES, "4X Technologies Video" },
  726.     { VLC_FOURCC('4','X','M','V'), CODEC_ID_4XM,
  727.       VIDEO_ES, "4X Technologies Video" },
  728.     /* Id RoQ */
  729.     { VLC_FOURCC('R','o','Q','v'), CODEC_ID_ROQ,
  730.       VIDEO_ES, "Id RoQ Video" },
  731.     /* Sony Playstation MDEC */
  732.     { VLC_FOURCC('M','D','E','C'), CODEC_ID_MDEC,
  733.       VIDEO_ES, "PSX MDEC Video" },
  734.     /* Sierra VMD */
  735.     { VLC_FOURCC('v','m','d','v'), CODEC_ID_VMDVIDEO,
  736.       VIDEO_ES, "Sierra VMD Video" },
  737.     { VLC_FOURCC('V','M','D','V'), CODEC_ID_VMDVIDEO,
  738.       VIDEO_ES, "Sierra VMD Video" },
  739. #if 0
  740. /*    UNTESTED VideoGames*/
  741.     { VLC_FOURCC('W','C','3','V'), CODEC_ID_XAN_WC3,
  742.       VIDEO_ES, "XAN wc3 Video" },
  743.     { VLC_FOURCC('W','C','4','V'), CODEC_ID_XAN_WC4,
  744.       VIDEO_ES, "XAN wc4 Video" },
  745.     { VLC_FOURCC('S','T','3','C'), CODEC_ID_TXD,
  746.       VIDEO_ES, "Renderware TeXture Dictionary" },
  747.     { VLC_FOURCC('V','Q','A','V'), CODEC_ID_WS_VQA,
  748.       VIDEO_ES, "WestWood Vector Quantized Animation" },
  749.     { VLC_FOURCC('T','S','E','Q'), CODEC_ID_TIERTEXSEQVIDEO,
  750.       VIDEO_ES, "Tiertex SEQ Video" },
  751.     { VLC_FOURCC('D','X','A','1'), CODEC_ID_DXA,
  752.       VIDEO_ES, "Feeble DXA Video" },
  753.     { VLC_FOURCC('D','C','I','V'), CODEC_ID_DSICINVIDEO,
  754.       VIDEO_ES, "Delphine CIN Video" },
  755.     { VLC_FOURCC('T','H','P','V'), CODEC_ID_THP,
  756.       VIDEO_ES, "THP Video" },
  757.     { VLC_FOURCC('B','E','T','H'), CODEC_ID_BETHSOFTVID,
  758.       VIDEO_ES, "THP Video" },
  759.     { VLC_FOURCC('C','9','3','V'), CODEC_ID_C93,
  760.       VIDEO_ES, "THP Video" },
  761. #endif
  762.     /*
  763.      *  Image codecs
  764.      */
  765.     { VLC_FOURCC('p','n','g',' '), CODEC_ID_PNG,
  766.       VIDEO_ES, "PNG Image" },
  767.     { VLC_FOURCC('p','p','m',' '), CODEC_ID_PPM,
  768.       VIDEO_ES, "PPM Image" },
  769.     { VLC_FOURCC('p','g','m',' '), CODEC_ID_PGM,
  770.       VIDEO_ES, "PGM Image" },
  771.     { VLC_FOURCC('p','g','m','y'), CODEC_ID_PGMYUV,
  772.       VIDEO_ES, "PGM YUV Image" },
  773.     { VLC_FOURCC('p','a','m',' '), CODEC_ID_PAM,
  774.       VIDEO_ES, "PAM Image" },
  775.     { VLC_FOURCC('M','J','L','S'), CODEC_ID_JPEGLS,
  776.       VIDEO_ES, "PAM Image" },
  777. #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 0, 0 )
  778.     { VLC_FOURCC('b','m','p',' '), CODEC_ID_BMP,
  779.       VIDEO_ES, "BMP Image" },
  780. #endif
  781. #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 40, 1 )
  782.     { VLC_FOURCC('t','i','f','f'), CODEC_ID_TIFF,
  783.       VIDEO_ES, "TIFF Image" },
  784.     { VLC_FOURCC('g','i','f',' '), CODEC_ID_GIF,
  785.       VIDEO_ES, "GIF Image" },
  786.     { VLC_FOURCC('t','g','a',' '), CODEC_ID_TARGA,
  787.       VIDEO_ES, "Truevision Targa Image" },
  788.     { VLC_FOURCC('m','t','g','a'), CODEC_ID_TARGA,
  789.       VIDEO_ES, "Truevision Targa Image" },
  790.     { VLC_FOURCC('M','T','G','A'), CODEC_ID_TARGA,
  791.       VIDEO_ES, "Truevision Targa Image" },
  792. #endif
  793. #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 40, 3 )
  794.     { VLC_FOURCC('s','g','i',' '), CODEC_ID_SGI,
  795.       VIDEO_ES, "SGI Image" },
  796. #endif
  797. #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 55, 0 )
  798.     { VLC_FOURCC('d','r','a','c'), CODEC_ID_DIRAC,
  799.       VIDEO_ES, "Dirac" },
  800. #endif
  801.     /*
  802.      *  Audio Codecs
  803.      */
  804.     /* Windows Media Audio 1 */
  805.     { VLC_FOURCC('W','M','A','1'), CODEC_ID_WMAV1,
  806.       AUDIO_ES, "Windows Media Audio 1" },
  807.     { VLC_FOURCC('w','m','a','1'), CODEC_ID_WMAV1,
  808.       AUDIO_ES, "Windows Media Audio 1" },
  809.     /* Windows Media Audio 2 */
  810.     { VLC_FOURCC('W','M','A','2'), CODEC_ID_WMAV2,
  811.       AUDIO_ES, "Windows Media Audio 2" },
  812.     { VLC_FOURCC('w','m','a','2'), CODEC_ID_WMAV2,
  813.       AUDIO_ES, "Windows Media Audio 2" },
  814. #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 52, 35, 0 )
  815.     { VLC_FOURCC('W','M','A','P'), CODEC_ID_WMAPRO,
  816.       AUDIO_ES, "Windows Media Audio Professional" },
  817.     { VLC_FOURCC('w','m','a','p'), CODEC_ID_WMAPRO,
  818.       AUDIO_ES, "Windows Media Audio Professional" },
  819. #endif
  820.     /* DV Audio */
  821.     { VLC_FOURCC('d','v','a','u'), CODEC_ID_DVAUDIO,
  822.       AUDIO_ES, "DV Audio" },
  823.     { VLC_FOURCC('v','d','v','a'), CODEC_ID_DVAUDIO,
  824.       AUDIO_ES, "DV Audio" },
  825.     { VLC_FOURCC('d','v','c','a'), CODEC_ID_DVAUDIO,
  826.       AUDIO_ES, "DV Audio" },
  827.     { VLC_FOURCC('R','A','D','V'), CODEC_ID_DVAUDIO,
  828.       AUDIO_ES, "DV Audio" },
  829.     /* MACE-3 Audio */
  830.     { VLC_FOURCC('M','A','C','3'), CODEC_ID_MACE3,
  831.       AUDIO_ES, "MACE-3 Audio" },
  832.     /* MACE-6 Audio */
  833.     { VLC_FOURCC('M','A','C','6'), CODEC_ID_MACE6,
  834.       AUDIO_ES, "MACE-6 Audio" },
  835. #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 41, 1 )
  836.     /* MUSEPACK7 Audio */
  837.     { VLC_FOURCC('M','P','C',' '), CODEC_ID_MUSEPACK7,
  838.       AUDIO_ES, "MUSEPACK7 Audio" },
  839. #endif
  840. #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 48, 0 )
  841.     /* MUSEPACK8 Audio */
  842.     { VLC_FOURCC('M','P','C','K'), CODEC_ID_MUSEPACK8,
  843.       AUDIO_ES, "MUSEPACK8 Audio" },
  844.     { VLC_FOURCC('M','P','C','8'), CODEC_ID_MUSEPACK8,
  845.       AUDIO_ES, "MUSEPACK8 Audio" },
  846. #endif
  847.     /* RealAudio 1.0 */
  848.     { VLC_FOURCC('1','4','_','4'), CODEC_ID_RA_144,
  849.       AUDIO_ES, "RealAudio 1.0" },
  850.     { VLC_FOURCC('l','p','c','J'), CODEC_ID_RA_144,
  851.       AUDIO_ES, "RealAudio 1.0" },
  852.     /* RealAudio 2.0 */
  853.     { VLC_FOURCC('2','8','_','8'), CODEC_ID_RA_288,
  854.       AUDIO_ES, "RealAudio 2.0" },
  855.     /* MPEG Audio layer 1/2/3 */
  856.     { VLC_FOURCC('m','p','g','a'), CODEC_ID_MP2,
  857.       AUDIO_ES, "MPEG Audio layer 1/2" },
  858.     { VLC_FOURCC('m','p','3',' '), CODEC_ID_MP3,
  859.       AUDIO_ES, "MPEG Audio layer 1/2/3" },
  860.     { VLC_FOURCC('.','m','p','3'), CODEC_ID_MP3,
  861.       AUDIO_ES, "MPEG Audio layer 1/2/3" },
  862.     { VLC_FOURCC('M','P','3',' '), CODEC_ID_MP3,
  863.       AUDIO_ES, "MPEG Audio layer 1/2/3" },
  864.     { VLC_FOURCC('L','A','M','E'), CODEC_ID_MP3,
  865.       AUDIO_ES, "MPEG Audio layer 1/2/3" },
  866.     /* A52 Audio (aka AC3) */
  867.     { VLC_FOURCC('a','5','2',' '), CODEC_ID_AC3,
  868.       AUDIO_ES, "A52 Audio (aka AC3)" },
  869.     { VLC_FOURCC('a','5','2','b'), CODEC_ID_AC3, /* VLC specific hack */
  870.       AUDIO_ES, "A52 Audio (aka AC3)" },
  871. #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 52, 0, 0 )
  872.     { VLC_FOURCC('e','a','c','3'), CODEC_ID_EAC3,
  873.       AUDIO_ES, "A/52 B Audio (aka E-AC3)" },
  874. #endif
  875.     /* DTS Audio */
  876.     { VLC_FOURCC('d','t','s',' '), CODEC_ID_DTS,
  877.       AUDIO_ES, "DTS Audio" },
  878.     /* AAC audio */
  879.     { VLC_FOURCC('m','p','4','a'), CODEC_ID_AAC,
  880.       AUDIO_ES, "MPEG AAC Audio" },
  881.     { VLC_FOURCC('a','a','c',' '), CODEC_ID_AAC,
  882.       AUDIO_ES, "MPEG AAC Audio" },
  883.     /* AC-3 Audio (Dolby Digital) */
  884.     { VLC_FOURCC('a','c','-','3'), CODEC_ID_AC3,
  885.       AUDIO_ES, "AC-3 Audio (Dolby Digital)" },
  886.     /* 4X Technologies */
  887.     { VLC_FOURCC('4','x','m','a'), CODEC_ID_ADPCM_4XM,
  888.       AUDIO_ES, "4X Technologies Audio" },
  889.     /* EA ADPCM */
  890.     { VLC_FOURCC('A','D','E','A'), CODEC_ID_ADPCM_EA,
  891.       AUDIO_ES, "EA ADPCM Audio" },
  892.     /* Interplay DPCM */
  893.     { VLC_FOURCC('i','d','p','c'), CODEC_ID_INTERPLAY_DPCM,
  894.       AUDIO_ES, "Interplay DPCM Audio" },
  895.     /* Id RoQ */
  896.     { VLC_FOURCC('R','o','Q','a'), CODEC_ID_ROQ_DPCM,
  897.       AUDIO_ES, "Id RoQ DPCM Audio" },
  898. #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 27, 0 )
  899.     /* DCIN Audio */
  900.     { VLC_FOURCC('D','C','I','A'), CODEC_ID_DSICINAUDIO,
  901.       AUDIO_ES, "Delphine CIN Audio" },
  902. #endif
  903.     /* Sony Playstation XA ADPCM */
  904.     { VLC_FOURCC('x','a',' ',' '), CODEC_ID_ADPCM_XA,
  905.       AUDIO_ES, "PSX XA ADPCM Audio" },
  906.     /* ADX ADPCM */
  907.     { VLC_FOURCC('a','d','x',' '), CODEC_ID_ADPCM_ADX,
  908.       AUDIO_ES, "ADX ADPCM Audio" },
  909.     /* Westwood ADPCM */
  910.     { VLC_FOURCC('A','I','W','S'), CODEC_ID_ADPCM_IMA_WS,
  911.       AUDIO_ES, "Westwood IMA ADPCM audio" },
  912.     /* Sierra VMD */
  913.     { VLC_FOURCC('v','m','d','a'), CODEC_ID_VMDAUDIO,
  914.       AUDIO_ES, "Sierra VMD Audio" },
  915.     /* G.726 ADPCM */
  916.     { VLC_FOURCC('g','7','2','6'), CODEC_ID_ADPCM_G726,
  917.       AUDIO_ES, "G.726 ADPCM Audio" },
  918.     /* AMR */
  919.     { VLC_FOURCC('s','a','m','r'), CODEC_ID_AMR_NB,
  920.       AUDIO_ES, "AMR narrow band" },
  921.     { VLC_FOURCC('s','a','w','b'), CODEC_ID_AMR_WB,
  922.       AUDIO_ES, "AMR wide band" },
  923.     /* FLAC */
  924.     { VLC_FOURCC('f','l','a','c'), CODEC_ID_FLAC,
  925.       AUDIO_ES, "FLAC (Free Lossless Audio Codec)" },
  926.     /* ALAC */
  927.     { VLC_FOURCC('a','l','a','c'), CODEC_ID_ALAC,
  928.       AUDIO_ES, "Apple Lossless Audio Codec" },
  929. #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 50, 0, 1 )
  930.     /* QDM2 */
  931.     { VLC_FOURCC('Q','D','M','2'), CODEC_ID_QDM2,
  932.       AUDIO_ES, "QDM2 Audio" },
  933. #endif
  934. #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 0, 0 )
  935.     /* COOK */
  936.     { VLC_FOURCC('c','o','o','k'), CODEC_ID_COOK,
  937.       AUDIO_ES, "Cook Audio" },
  938. #endif
  939. #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 4, 0 )
  940.     /* TTA: The Lossless True Audio */
  941.     { VLC_FOURCC('T','T','A','1'), CODEC_ID_TTA,
  942.       AUDIO_ES, "The Lossless True Audio" },
  943. #endif
  944. #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 8, 0 )
  945.     /* Shorten */
  946.     { VLC_FOURCC('s','h','n',' '), CODEC_ID_SHORTEN,
  947.       AUDIO_ES, "Shorten Lossless Audio" },
  948.     { VLC_FOURCC('s','h','r','n'), CODEC_ID_SHORTEN,
  949.       AUDIO_ES, "Shorten Lossless Audio" },
  950. #endif
  951. #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 16, 0 )
  952.     { VLC_FOURCC('w','v','p','k'), CODEC_ID_WAVPACK,
  953.       AUDIO_ES, "WavPack" },
  954.     { VLC_FOURCC('W','V','P','K'), CODEC_ID_WAVPACK,
  955.       AUDIO_ES, "WavPack" },
  956. #endif
  957. #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 34, 0 )
  958.     { VLC_FOURCC('g','s','m',' '), CODEC_ID_GSM,
  959.       AUDIO_ES, "GSM Audio" },
  960.     { VLC_FOURCC('a','g','s','m'), CODEC_ID_GSM_MS, /* According to http://wiki.multimedia.cx/index.php?title=GSM */
  961.       AUDIO_ES, "Microsoft GSM Audio" },
  962. #endif
  963. #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 40, 4 )
  964.     { VLC_FOURCC('a','t','r','c'), CODEC_ID_ATRAC3,
  965.       AUDIO_ES, "atrac 3" },
  966.     { VLC_FOURCC(0x70,0x2,0x0,0x0), CODEC_ID_ATRAC3,
  967.       AUDIO_ES, "atrac 3" },
  968. #endif
  969.     { VLC_FOURCC('S','O','N','C'), CODEC_ID_SONIC,
  970.       AUDIO_ES, "Sonic" },
  971. #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 34, 0 )
  972.     { VLC_FOURCC(0x1,0x4,0x0,0x0), CODEC_ID_IMC,
  973.       AUDIO_ES, "IMC" },
  974. #endif
  975.     { VLC_FOURCC(0x22,0x0,0x0,0x0), CODEC_ID_TRUESPEECH,
  976.       AUDIO_ES, "TrueSpeech" },
  977. #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 46, 0 )
  978.     { VLC_FOURCC('N','E','L','L'), CODEC_ID_NELLYMOSER,
  979.       AUDIO_ES, "NellyMoser ASAO" },
  980. #endif
  981. #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 44, 0 )
  982.     { VLC_FOURCC('A','P','E',' '), CODEC_ID_APE,
  983.       AUDIO_ES, "Monkey's Audio" },
  984. #endif
  985. #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 58, 0 )
  986.     { VLC_FOURCC('m','l','p',' '), CODEC_ID_MLP,
  987.       AUDIO_ES, "MLP/TrueHD Audio" },
  988. #endif
  989. #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 52, 22, 0 )
  990.     { VLC_FOURCC('t','r','h','d'), CODEC_ID_TRUEHD,
  991.       AUDIO_ES, "TrueHD Audio" },
  992. #endif
  993. #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 52, 6, 0 )
  994.     { VLC_FOURCC('Q','c','l','p'), CODEC_ID_QCELP,
  995.       AUDIO_ES, "QCELP Audio" },
  996. #endif
  997.     /* PCM */
  998.     { VLC_FOURCC('s','8',' ',' '), CODEC_ID_PCM_S8,
  999.       AUDIO_ES, "PCM S8" },
  1000.     { VLC_FOURCC('u','8',' ',' '), CODEC_ID_PCM_U8,
  1001.       AUDIO_ES, "PCM U8" },
  1002.     { VLC_FOURCC('s','1','6','l'), CODEC_ID_PCM_S16LE,
  1003.       AUDIO_ES, "PCM S16 LE" },
  1004.     { VLC_FOURCC('s','1','6','b'), CODEC_ID_PCM_S16BE,
  1005.       AUDIO_ES, "PCM S16 BE" },
  1006.     { VLC_FOURCC('u','1','6','l'), CODEC_ID_PCM_U16LE,
  1007.       AUDIO_ES, "PCM U16 LE" },
  1008.     { VLC_FOURCC('u','1','6','b'), CODEC_ID_PCM_U16BE,
  1009.       AUDIO_ES, "PCM U16 BE" },
  1010.     { VLC_FOURCC('s','2','4','l'), CODEC_ID_PCM_S24LE,
  1011.       AUDIO_ES, "PCM S24 LE" },
  1012.     { VLC_FOURCC('s','2','4','b'), CODEC_ID_PCM_S24BE,
  1013.       AUDIO_ES, "PCM S24 BE" },
  1014.     { VLC_FOURCC('u','2','4','l'), CODEC_ID_PCM_U24LE,
  1015.       AUDIO_ES, "PCM U24 LE" },
  1016.     { VLC_FOURCC('u','2','4','b'), CODEC_ID_PCM_U24BE,
  1017.       AUDIO_ES, "PCM U24 BE" },
  1018.     { VLC_FOURCC('s','3','2','l'), CODEC_ID_PCM_S32LE,
  1019.       AUDIO_ES, "PCM S32 LE" },
  1020.     { VLC_FOURCC('s','3','2','b'), CODEC_ID_PCM_S32BE,
  1021.       AUDIO_ES, "PCM S32 BE" },
  1022.     { VLC_FOURCC('u','3','2','l'), CODEC_ID_PCM_U32LE,
  1023.       AUDIO_ES, "PCM U32 LE" },
  1024.     { VLC_FOURCC('u','3','2','b'), CODEC_ID_PCM_U32BE,
  1025.       AUDIO_ES, "PCM U32 BE" },
  1026.     { VLC_FOURCC('a','l','a','w'), CODEC_ID_PCM_ALAW,
  1027.       AUDIO_ES, "PCM ALAW" },
  1028.     { VLC_FOURCC('u','l','a','w'), CODEC_ID_PCM_MULAW,
  1029.       AUDIO_ES, "PCM ULAW" },
  1030.     { VLC_FOURCC('d','a','u','d'), CODEC_ID_PCM_S24DAUD,
  1031.       AUDIO_ES, "PCM ULAW" },
  1032.     /* Subtitle streams */
  1033. #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 41, 0 )
  1034.     /* Before this version, subs were too experimental */
  1035.     { VLC_FOURCC('s','p','u',' '), CODEC_ID_DVD_SUBTITLE,
  1036.       SPU_ES, "DVD Subtitles" },
  1037.     { VLC_FOURCC('d','v','b','s'), CODEC_ID_DVB_SUBTITLE,
  1038.       SPU_ES, "DVB Subtitles" },
  1039.     { VLC_FOURCC('s','u','b','t'), CODEC_ID_TEXT,
  1040.       SPU_ES, "Plain text subtitles" },
  1041.     { VLC_FOURCC('D','X','S','B'), CODEC_ID_XSUB,
  1042.       SPU_ES, "DivX XSUB subtitles" },
  1043. #endif
  1044. #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 50, 0 )
  1045.     { VLC_FOURCC('s','s','a',' '), CODEC_ID_SSA,
  1046.       SPU_ES, "SubStation Alpha subtitles" },
  1047. #endif
  1048.     { 0, 0, 0, "" }
  1049. };
  1050. int GetFfmpegCodec( vlc_fourcc_t i_fourcc, int *pi_cat,
  1051.                     int *pi_ffmpeg_codec, const char **ppsz_name )
  1052. {
  1053.     for( unsigned i = 0; codecs_table[i].i_fourcc != 0; i++ )
  1054.     {
  1055.         if( codecs_table[i].i_fourcc == i_fourcc )
  1056.         {
  1057.             if( pi_cat ) *pi_cat = codecs_table[i].i_cat;
  1058.             if( pi_ffmpeg_codec ) *pi_ffmpeg_codec = codecs_table[i].i_codec;
  1059.             if( ppsz_name ) *ppsz_name = (char *)codecs_table[i].psz_name;
  1060.             return true;
  1061.         }
  1062.     }
  1063.     return false;
  1064. }
  1065. int GetVlcFourcc( int i_ffmpeg_codec, int *pi_cat,
  1066.                   vlc_fourcc_t *pi_fourcc, const char **ppsz_name )
  1067. {
  1068.     for( unsigned i = 0; codecs_table[i].i_codec != 0; i++ )
  1069.     {
  1070.         if( codecs_table[i].i_codec == i_ffmpeg_codec )
  1071.         {
  1072.             if( pi_cat ) *pi_cat = codecs_table[i].i_cat;
  1073.             if( pi_fourcc ) *pi_fourcc = codecs_table[i].i_fourcc;
  1074.             if( ppsz_name ) *ppsz_name = codecs_table[i].psz_name;
  1075.             return true;
  1076.         }
  1077.     }
  1078.     return false;
  1079. }