tffdecoder_reg.cpp.svn-base
来自「ffshow源码」· SVN-BASE 代码 · 共 626 行 · 第 1/2 页
SVN-BASE
626 行
/* * Copyright (c) 2002-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 <shlwapi.h>#include <initguid.h>#include "TffDecoderVideo.h"#include "TffdshowDecAudio.h"#include "TffdshowPageDecVideo.h"#include "TffdshowPageDecAudio.h"#include "TffdshowPageEnc.h"#include "TffdshowEnc.h"#include "TffProc.h"#include "TffProcAudio.h"#include "Tffvfw.h"#include "Tacm.h"#include "ffdshow_mediaguids.h"#include "reg.h"#include "dsutil.h"#include "IffdshowParamsEnum.h"#include "matroskaSubs.h"#include "IPropertyPageFF.h"#include "Tconvert.h"DEFINE_GUID(IID_IAMExtendedSeeking,0xFA2AA8F9L,0x8B62,0x11D0,0xA5,0x20,0x00,0x00,0x00,0x00,0x00,0x00);// {8E9922F0-B775-45b8-B650-941BEA790EEB}DEFINE_GUID(CLSID_DWSTRINGA, 0x8e9922f0, 0xb775, 0x45b8, 0xb6, 0x50, 0x94, 0x1b, 0xea, 0x79, 0x0e, 0xeb);// {A0606860-51BE-4cf6-99C0-7CE5F78AC2D8}DEFINE_GUID(CLSID_DWSTRINGW, 0xa0606860, 0x51be, 0x4cf6, 0x99, 0xc0, 0x7c, 0xe5, 0xf7, 0x8a, 0xc2, 0xd8);#define FOURCC_xvid mmioFOURCC('x','v','i','d')#define FOURCC_dx50 mmioFOURCC('d','x','5','0')#define FOURCC_divx mmioFOURCC('d','i','v','x')#define FOURCC_div3 mmioFOURCC('d','i','v','3')#define FOURCC_mp43 mmioFOURCC('m','p','4','3')#define FOURCC_mp42 mmioFOURCC('m','p','4','2')#define FOURCC_mp41 mmioFOURCC('m','p','4','1')#define FOURCC_mp4v mmioFOURCC('m','p','4','v')#define FOURCC_mp4s mmioFOURCC('m','p','4','s')#define FOURCC_wmv1 mmioFOURCC('w','m','v','1')#define FOURCC_wmv2 mmioFOURCC('w','m','v','2')#define FOURCC_hfyu mmioFOURCC('h','f','y','u')#define FOURCC_3iv2 mmioFOURCC('3','i','v','2')#define FOURCC_3ivx mmioFOURCC('3','i','v','x')#define FOURCC_h264 mmioFOURCC('h','2','6','4')#define FOURCC_h263 mmioFOURCC('h','2','6','3')DEFINE_GUID_FOURCC(XVID)DEFINE_GUID_FOURCC(xvid)DEFINE_GUID_FOURCC(DX50)DEFINE_GUID_FOURCC(dx50)DEFINE_GUID_FOURCC(DIVX)DEFINE_GUID_FOURCC(divx)DEFINE_GUID_FOURCC(DIV3)DEFINE_GUID_FOURCC(div3)DEFINE_GUID_FOURCC(MP43)DEFINE_GUID_FOURCC(mp43)DEFINE_GUID_FOURCC(MP42)DEFINE_GUID_FOURCC(mp42)DEFINE_GUID_FOURCC(MP41)DEFINE_GUID_FOURCC(mp41)DEFINE_GUID_FOURCC(MP4V)DEFINE_GUID_FOURCC(mp4v)DEFINE_GUID_FOURCC(MP4S)DEFINE_GUID_FOURCC(mp4s)DEFINE_GUID_FOURCC(WMV1)DEFINE_GUID_FOURCC(wmv1)DEFINE_GUID_FOURCC(WMV2)DEFINE_GUID_FOURCC(wmv2)DEFINE_GUID_FOURCC(HFYU)DEFINE_GUID_FOURCC(hfyu)DEFINE_GUID_FOURCC(3IV2)DEFINE_GUID_FOURCC(3iv2)DEFINE_GUID_FOURCC(3IVX)DEFINE_GUID_FOURCC(3ivx)DEFINE_GUID_FOURCC(H264)DEFINE_GUID_FOURCC(h264)DEFINE_GUID_FOURCC(H263)DEFINE_GUID_FOURCC(h263)DEFINE_GUID_FOURCC(DVSD)const AMOVIESETUP_MEDIATYPE TffdshowDecVideo::inputMediaTypes[]={ { &MEDIATYPE_Video, &MEDIASUBTYPE_NULL }, { &MEDIATYPE_DVD_ENCRYPTED_PACK, &MEDIASUBTYPE_NULL }, //few most used FOURCCs { &MEDIATYPE_Video, &MEDIASUBTYPE_XVID }, { &MEDIATYPE_Video, &MEDIASUBTYPE_xvid }, { &MEDIATYPE_Video, &MEDIASUBTYPE_DX50 }, { &MEDIATYPE_Video, &MEDIASUBTYPE_dx50 }, { &MEDIATYPE_Video, &MEDIASUBTYPE_DIVX }, { &MEDIATYPE_Video, &MEDIASUBTYPE_divx }, { &MEDIATYPE_Video, &MEDIASUBTYPE_DIV3 }, { &MEDIATYPE_Video, &MEDIASUBTYPE_div3 }, { &MEDIATYPE_Video, &MEDIASUBTYPE_MP43 }, { &MEDIATYPE_Video, &MEDIASUBTYPE_mp43 }, { &MEDIATYPE_Video, &MEDIASUBTYPE_MP42 }, { &MEDIATYPE_Video, &MEDIASUBTYPE_mp42 }, { &MEDIATYPE_Video, &MEDIASUBTYPE_MP41 }, { &MEDIATYPE_Video, &MEDIASUBTYPE_mp41 }, { &MEDIATYPE_Video, &MEDIASUBTYPE_MP4V }, { &MEDIATYPE_Video, &MEDIASUBTYPE_mp4v }, { &MEDIATYPE_Video, &MEDIASUBTYPE_MP4S }, { &MEDIATYPE_Video, &MEDIASUBTYPE_mp4s }, { &MEDIATYPE_Video, &MEDIASUBTYPE_WMV1 }, { &MEDIATYPE_Video, &MEDIASUBTYPE_wmv1 }, { &MEDIATYPE_Video, &MEDIASUBTYPE_WMV2 }, { &MEDIATYPE_Video, &MEDIASUBTYPE_wmv2 }, { &MEDIATYPE_Video, &MEDIASUBTYPE_HFYU }, { &MEDIATYPE_Video, &MEDIASUBTYPE_hfyu }, { &MEDIATYPE_Video, &MEDIASUBTYPE_3IV2 }, { &MEDIATYPE_Video, &MEDIASUBTYPE_3iv2 }, { &MEDIATYPE_Video, &MEDIASUBTYPE_3IVX }, { &MEDIATYPE_Video, &MEDIASUBTYPE_3ivx }, { &MEDIATYPE_Video, &MEDIASUBTYPE_H264 }, { &MEDIATYPE_Video, &MEDIASUBTYPE_h264 }, { &MEDIATYPE_Video, &MEDIASUBTYPE_H263 }, { &MEDIATYPE_Video, &MEDIASUBTYPE_h263 }, //explicitly register for raw video types for easier enumeration { &MEDIATYPE_Video, &MEDIASUBTYPE_YV12 }, { &MEDIATYPE_Video, &MEDIASUBTYPE_IYUV }, { &MEDIATYPE_Video, &MEDIASUBTYPE_YUY2 }, { &MEDIATYPE_Video, &MEDIASUBTYPE_YUYV }, { &MEDIATYPE_Video, &MEDIASUBTYPE_UYVY }, { &MEDIATYPE_Video, &MEDIASUBTYPE_VYUY }, { &MEDIATYPE_Video, &MEDIASUBTYPE_RGB32 }, { &MEDIATYPE_Video, &MEDIASUBTYPE_RGB24 }, { &MEDIATYPE_Video, &MEDIASUBTYPE_RGB555 }, { &MEDIATYPE_Video, &MEDIASUBTYPE_RGB565 }};const AMOVIESETUP_MEDIATYPE TffdshowDecVideo::outputMediaTypes[]={ { &MEDIATYPE_Video, &MEDIASUBTYPE_NULL }};const AMOVIESETUP_MEDIATYPE TffdshowDecAudio::inputMediaTypes[]={ { &MEDIATYPE_Audio , &MEDIASUBTYPE_MP3 }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_MPEG1AudioPayload }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_MPEG1Payload }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_MPEG1Packet }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_MPEG2_AUDIO }, { &MEDIATYPE_MPEG2_PACK , &MEDIASUBTYPE_MPEG2_AUDIO }, { &MEDIATYPE_MPEG2_PES , &MEDIASUBTYPE_MPEG2_AUDIO }, { &MEDIATYPE_DVD_ENCRYPTED_PACK , &MEDIASUBTYPE_MPEG2_AUDIO }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_AC3_W }, { &MEDIATYPE_MPEG2_PES , &MEDIASUBTYPE_DOLBY_AC3 }, { &MEDIATYPE_MPEG2_PACK , &MEDIASUBTYPE_DOLBY_AC3 }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_DOLBY_AC3 }, { &MEDIATYPE_DVD_ENCRYPTED_PACK , &MEDIASUBTYPE_DOLBY_AC3 }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_DTS_W }, { &MEDIATYPE_MPEG2_PES , &MEDIASUBTYPE_DTS }, { &MEDIATYPE_MPEG2_PACK , &MEDIASUBTYPE_DTS }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_DTS }, { &MEDIATYPE_DVD_ENCRYPTED_PACK , &MEDIASUBTYPE_DTS }, { &MEDIATYPE_MPEG2_PACK , &MEDIASUBTYPE_DVD_LPCM_AUDIO }, { &MEDIATYPE_MPEG2_PES , &MEDIASUBTYPE_DVD_LPCM_AUDIO }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_DVD_LPCM_AUDIO }, { &MEDIATYPE_DVD_ENCRYPTED_PACK , &MEDIASUBTYPE_DVD_LPCM_AUDIO }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_AAC1 }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_AAC2 }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_AAC3 }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_AAC4 }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_WMA7 }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_WMA8 }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_AMR }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_SAMR }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_IMA_DK3 }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_IMA_WAV }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_IMA_DK4 }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_IMA4 }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_MSADPCM }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_CREATIVE_ADPCM }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_YAMAHA_ADPCM }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_G726 }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_FLAC }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_FLAC2 }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_TTA }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_FFVORBIS }, //{ &MEDIATYPE_Audio , &MEDIASUBTYPE_VORBIS1 }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_AVIS }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_alaw }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_ALAW }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_MULAW }, /*{ &MEDIATYPE_Audio , &MEDIASUBTYPE_QT_ULAW },*/ { &MEDIATYPE_Audio , &MEDIASUBTYPE_ulaw }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_ULAW }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_GSM610 }, /*{ &MEDIATYPE_Audio , &MEDIASUBTYPE_QT_GSM },*/ { &MEDIATYPE_Audio , &MEDIASUBTYPE_MAC3 }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_MAC6 }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_qdm2 }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_QDM2 }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_sowt }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_SOWT }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_twos }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_TWOS }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_in32 }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_IN32 }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_in24 }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_IN24 }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_fl32 }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_FL32 }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_fl64 }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_FL64 }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_DSPGROUP_TRUESPEECH }, { &MEDIATYPE_Audio, &MEDIASUBTYPE_Vorbis }, { &MEDIATYPE_Audio, &MEDIASUBTYPE_Vorbis2 }, { &MEDIATYPE_Audio, &MEDIASUBTYPE_VorbisIll }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_PCM }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_RAW }, { &MEDIATYPE_Audio , &MEDIASUBTYPE_IEEE_FLOAT }};const AMOVIESETUP_MEDIATYPE TffdshowDecAudio::outputMediaTypes[]={ { &MEDIATYPE_Audio, &MEDIASUBTYPE_PCM }};const AMOVIESETUP_MEDIATYPE TffdshowDecAudioRaw::inputMediaTypes[]={ { &MEDIATYPE_Audio, &MEDIASUBTYPE_NULL }};const AMOVIESETUP_MEDIATYPE TffdshowDecAudioRaw::outputMediaTypes[]={ { &MEDIATYPE_Audio, &MEDIASUBTYPE_NULL }};const AMOVIESETUP_MEDIATYPE inputTextMediaTypes[]={ { &MEDIATYPE_Text , &MEDIASUBTYPE_NULL }, { &MEDIATYPE_Subtitle, &MEDIASUBTYPE_NULL }, { &MEDIATYPE_Video , &MEDIASUBTYPE_DVD_SUBPICTURE }};const AMOVIESETUP_MEDIATYPE TffdshowEnc::inputMediaTypes[]={ { &MEDIATYPE_Video, &MEDIASUBTYPE_YV12 }, { &MEDIATYPE_Video, &MEDIASUBTYPE_YUY2 }, { &MEDIATYPE_Video, &MEDIASUBTYPE_RGB32 }, { &MEDIATYPE_Video, &MEDIASUBTYPE_RGB24 }, { &MEDIATYPE_Video, &MEDIASUBTYPE_RGB555 }, { &MEDIATYPE_Video, &MEDIASUBTYPE_RGB565 },};const AMOVIESETUP_MEDIATYPE TffdshowEnc::outputMediaTypes[]={ { &MEDIATYPE_Video, &MEDIASUBTYPE_NULL }, { &MEDIATYPE_Stream,&MEDIASUBTYPE_NULL }};AMOVIESETUP_PIN TffdshowDecVideo::pins[]={ { L"Input", // String pin name FALSE, // Is it rendered FALSE, // Is it an output FALSE, // Allowed none FALSE, // Allowed many &CLSID_NULL, // Connects to filter L"Output", // Connects to pin sizeof(inputMediaTypes) / sizeof(AMOVIESETUP_MEDIATYPE), // Number of types inputMediaTypes // The pin details }, { L"Output", // String pin name FALSE, // Is it rendered TRUE, // Is it an output FALSE, // Allowed none FALSE, // Allowed many &CLSID_NULL, // Connects to filter L"Input", // Connects to pin sizeof(outputMediaTypes) / sizeof(AMOVIESETUP_MEDIATYPE), // Number of types outputMediaTypes // The pin details }, { L"In Text", // String pin name FALSE, // Is it rendered FALSE, // Is it an output FALSE, // Allowed none FALSE, // Allowed many &CLSID_NULL, // Connects to filter NULL, // Connects to pin sizeof(inputTextMediaTypes) / sizeof(AMOVIESETUP_MEDIATYPE), // Number of types inputTextMediaTypes // The pin details }};const AMOVIESETUP_PIN TffdshowDecAudio::pins[]=
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?