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 + -
显示快捷键?