⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ffcodecs.cpp

📁 从FFMPEG转换而来的H264解码程序,VC下编译..
💻 CPP
字号:
/*
 * Copyright (c) 2004-2006 Milan Cutka
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.

 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.

 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 */

#include "stdafx.h"
#include "ffcodecs.h"
#include "ffdshow_mediaguids.h"

const FOURCC* getCodecFOURCCs(CodecID codecId)
{
 switch (codecId)
  {
   case CODEC_ID_MPEG4:
   case CODEC_ID_SKAL:
   case CODEC_ID_XVID4:
    {
     static const FOURCC fccs[]={FOURCC_XVID,FOURCC_FFDS,FOURCC_FVFW,FOURCC_DX50,FOURCC_DIVX,FOURCC_MP4V,0};
     return fccs;
    }
   case CODEC_ID_MSMPEG4V3:
    {
     static const FOURCC fccs[]={FOURCC_MP43,FOURCC_DIV3,0};
     return fccs;
    }
   case CODEC_ID_MSMPEG4V2:
    {
     static const FOURCC fccs[]={FOURCC_MP42,FOURCC_DIV2,0};
     return fccs;
    }
   case CODEC_ID_MSMPEG4V1:
    {
     static const FOURCC fccs[]={FOURCC_MP41,FOURCC_DIV1,0};
     return fccs;
    }
   case CODEC_ID_MPEG1VIDEO:
    {
     static const FOURCC fccs[]={FOURCC_MPEG,FOURCC_MPG1,0};
     return fccs;
    }
   case CODEC_ID_MPEG2VIDEO:
    {
     static const FOURCC fccs[]={FOURCC_MPEG,FOURCC_MPG2,0};
     return fccs;
    }
   case CODEC_ID_H263:
   case CODEC_ID_H263P:
   case CODEC_ID_H263I:
    {
     static const FOURCC fccs[]={FOURCC_H263,FOURCC_S263,0};
     return fccs;
    }
   case CODEC_ID_H261:
    {
     static const FOURCC fccs[]={FOURCC_H261,0};
     return fccs;
    }
   case CODEC_ID_WMV1:
    {
     static const FOURCC fccs[]={FOURCC_WMV1,0};
     return fccs;
    }
   case CODEC_ID_WMV2:
    {
     static const FOURCC fccs[]={FOURCC_WMV2,0};
     return fccs;
    }
   case CODEC_ID_WMV9_LIB:
    {
     static const FOURCC fccs[]={FOURCC_WVC1,FOURCC_WMV3,FOURCC_WMV2,FOURCC_WMV1,FOURCC_MSS1,FOURCC_MSS2,FOURCC_WMVP,FOURCC_WVP2,0};
     return fccs;
    }
   case CODEC_ID_MJPEG:
    {
     static const FOURCC fccs[]={FOURCC_MJPG,0};
     return fccs;
    }
   case CODEC_ID_LJPEG:
    {
     static const FOURCC fccs[]={FOURCC_LJPG,0};
     return fccs;
    }
   case CODEC_ID_HUFFYUV:
    {
     static const FOURCC fccs[]={FOURCC_HFYU,FOURCC_FFVH,0};
     return fccs;
    }
   case CODEC_ID_FFV1:
    {
     static const FOURCC fccs[]={FOURCC_FFV1,0};
     return fccs;
    }
   case CODEC_ID_DVVIDEO:
    {
     /* lowercase FourCC 'dvsd' for compatibility with MS DV decoder */
     static const FOURCC fccs[]={mmioFOURCC('d','v','s','d'),FOURCC_DVSD,mmioFOURCC('d','v','2','5'),FOURCC_DV25,mmioFOURCC('d','v','5','0'),FOURCC_DV50,0};
     return fccs;
    }
   case CODEC_ID_THEORA:
   case CODEC_ID_THEORA_LIB:
    {
     static const FOURCC fccs[]={FOURCC_THEO,0};
     return fccs;
    }
   case CODEC_ID_H264:
   case CODEC_ID_X264:
   case CODEC_ID_X264_LOSSLESS:
    {
     static const FOURCC fccs[]={FOURCC_H264,FOURCC_X264,FOURCC_AVC1,0};
     return fccs;
    }
   case CODEC_ID_SNOW:
    {
     static const FOURCC fccs[]={FOURCC_SNOW,0};
     return fccs;
    }
   case CODEC_ID_FLV1:
    {
     static const FOURCC fccs[]={FOURCC_FLV1,0};
     return fccs;
    }
   case CODEC_ID_CYUV:
    {
     static const FOURCC fccs[]={FOURCC_CYUV,0};
     return fccs;
    }
   case CODEC_ID_CLJR:
    {
     static const FOURCC fccs[]={FOURCC_CLJR,0};
     return fccs;
    }
   case CODEC_ID_Y800:
    {
     static const FOURCC fccs[]={FOURCC_Y800,0};
     return fccs;
    }
   case CODEC_ID_444P:
    {
     static const FOURCC fccs[]={FOURCC_444P,FOURCC_YV24,0};
     return fccs;
    }
   case CODEC_ID_422P:
    {
     static const FOURCC fccs[]={FOURCC_422P,FOURCC_YV16,0};
     return fccs;
    }
   case CODEC_ID_411P:
    {
     static const FOURCC fccs[]={FOURCC_411P,FOURCC_Y41B,0};
     return fccs;
    }
   case CODEC_ID_410P:
    {
     static const FOURCC fccs[]={FOURCC_410P,0};
     return fccs;
    }
   default:
    {
     static const FOURCC fccs[]={0,0};
     return fccs;
    }
  }
}

const char_t *getCodecName(CodecID codecId)
{
 switch (codecId)
  {
   #define CODEC_OP(codecEnum,codecId,codecName) case codecEnum:return _l(codecName);
   FFDSHOW_CODECS
   #undef CODEC_OP
   default:return _l("unknown");
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -