Full Code of Nevcairiel/LAVFilters for AI

master 8c4ee4e52c78 cached
695 files
6.2 MB
1.7M tokens
6121 symbols
1 requests
Download .txt
Showing preview only (6,661K chars total). Download the full file or copy to clipboard to get everything.
Repository: Nevcairiel/LAVFilters
Branch: master
Commit: 8c4ee4e52c78
Files: 695
Total size: 6.2 MB

Directory structure:
gitextract_htgb5fag/

├── .clang-format
├── .editorconfig
├── .github/
│   └── FUNDING.yml
├── .gitignore
├── .gitmodules
├── CHANGELOG.txt
├── COPYING
├── LAVFilters.iss
├── LAVFilters.sln
├── README.md
├── build.bat
├── build_ffmpeg.sh
├── build_ffmpeg_msvc.sh
├── common/
│   ├── DSUtilLite/
│   │   ├── BaseDSPropPage.cpp
│   │   ├── BaseDSPropPage.h
│   │   ├── BaseTrayIcon.cpp
│   │   ├── BaseTrayIcon.h
│   │   ├── ByteParser.cpp
│   │   ├── ByteParser.h
│   │   ├── CueSheet.cpp
│   │   ├── CueSheet.h
│   │   ├── DSMResourceBag.cpp
│   │   ├── DSMResourceBag.h
│   │   ├── DSUtilLite.vcxproj
│   │   ├── DSUtilLite.vcxproj.filters
│   │   ├── DShowUtil.cpp
│   │   ├── DShowUtil.h
│   │   ├── DeCSS/
│   │   │   ├── CSSauth.cpp
│   │   │   ├── CSSauth.h
│   │   │   ├── CSSscramble.cpp
│   │   │   ├── CSSscramble.h
│   │   │   ├── DeCSSInputPin.cpp
│   │   │   └── DeCSSInputPin.h
│   │   ├── FloatingAverage.h
│   │   ├── FontInstaller.cpp
│   │   ├── FontInstaller.h
│   │   ├── H264Nalu.cpp
│   │   ├── H264Nalu.h
│   │   ├── MediaSampleSideData.cpp
│   │   ├── MediaSampleSideData.h
│   │   ├── PopupMenu.cpp
│   │   ├── PopupMenu.h
│   │   ├── SynchronizedQueue.h
│   │   ├── filterreg.cpp
│   │   ├── gpu_memcpy_sse4.h
│   │   ├── growarray.h
│   │   ├── lavf_log.h
│   │   ├── locale.cpp
│   │   ├── rand_sse.h
│   │   ├── registry.cpp
│   │   ├── registry.h
│   │   ├── stdafx.cpp
│   │   ├── stdafx.h
│   │   └── timer.h
│   ├── baseclasses/
│   │   ├── amextra.cpp
│   │   ├── amextra.h
│   │   ├── amfilter.cpp
│   │   ├── amfilter.h
│   │   ├── amvideo.cpp
│   │   ├── arithutil.cpp
│   │   ├── baseclasses.vcxproj
│   │   ├── baseclasses.vcxproj.filters
│   │   ├── cache.h
│   │   ├── checkbmi.h
│   │   ├── combase.cpp
│   │   ├── combase.h
│   │   ├── cprop.cpp
│   │   ├── cprop.h
│   │   ├── ctlutil.cpp
│   │   ├── ctlutil.h
│   │   ├── ddmm.cpp
│   │   ├── ddmm.h
│   │   ├── dllentry.cpp
│   │   ├── dllsetup.cpp
│   │   ├── dllsetup.h
│   │   ├── dxmperf.h
│   │   ├── fourcc.h
│   │   ├── measure.h
│   │   ├── msgthrd.h
│   │   ├── mtype.cpp
│   │   ├── mtype.h
│   │   ├── outputq.cpp
│   │   ├── outputq.h
│   │   ├── perflog.cpp
│   │   ├── perflog.h
│   │   ├── perfstruct.h
│   │   ├── pstream.cpp
│   │   ├── pstream.h
│   │   ├── pullpin.cpp
│   │   ├── pullpin.h
│   │   ├── refclock.cpp
│   │   ├── refclock.h
│   │   ├── reftime.h
│   │   ├── renbase.cpp
│   │   ├── renbase.h
│   │   ├── schedule.cpp
│   │   ├── schedule.h
│   │   ├── seekpt.cpp
│   │   ├── seekpt.h
│   │   ├── source.cpp
│   │   ├── source.h
│   │   ├── streams.h
│   │   ├── strmctl.cpp
│   │   ├── strmctl.h
│   │   ├── sysclock.cpp
│   │   ├── sysclock.h
│   │   ├── transfrm.cpp
│   │   ├── transfrm.h
│   │   ├── transip.cpp
│   │   ├── transip.h
│   │   ├── videoctl.cpp
│   │   ├── videoctl.h
│   │   ├── vtrans.cpp
│   │   ├── vtrans.h
│   │   ├── winctrl.cpp
│   │   ├── winctrl.h
│   │   ├── winutil.cpp
│   │   ├── winutil.h
│   │   ├── wxdebug.cpp
│   │   ├── wxdebug.h
│   │   ├── wxlist.cpp
│   │   ├── wxlist.h
│   │   ├── wxutil.cpp
│   │   └── wxutil.h
│   ├── common.props
│   ├── genversion.bat
│   ├── includes/
│   │   ├── ILAVPinInfo.h
│   │   ├── IMediaSideDataFFmpeg.h
│   │   ├── LAVSplitterSettingsInternal.h
│   │   ├── SubRenderIntf.h
│   │   ├── common_defines.h
│   │   ├── moreuuids.h
│   │   └── version.h
│   └── platform.props
├── decoder/
│   ├── LAVAudio/
│   │   ├── AudioSettingsProp.cpp
│   │   ├── AudioSettingsProp.h
│   │   ├── Bitstream.cpp
│   │   ├── BitstreamMAT.cpp
│   │   ├── BitstreamParser.cpp
│   │   ├── BitstreamParser.h
│   │   ├── LAVAudio.cpp
│   │   ├── LAVAudio.def
│   │   ├── LAVAudio.h
│   │   ├── LAVAudio.manifest
│   │   ├── LAVAudio.rc
│   │   ├── LAVAudio.rc2
│   │   ├── LAVAudio.vcxproj
│   │   ├── LAVAudio.vcxproj.filters
│   │   ├── Media.cpp
│   │   ├── Media.h
│   │   ├── PostProcessor.cpp
│   │   ├── PostProcessor.h
│   │   ├── dllmain.cpp
│   │   ├── parser/
│   │   │   ├── dts.cpp
│   │   │   ├── dts.h
│   │   │   └── parser.h
│   │   ├── resource.h
│   │   ├── stdafx.cpp
│   │   └── stdafx.h
│   └── LAVVideo/
│       ├── CCOutputPin.cpp
│       ├── CCOutputPin.h
│       ├── DecodeManager.cpp
│       ├── DecodeManager.h
│       ├── Filtering.cpp
│       ├── LAVPixFmtConverter.cpp
│       ├── LAVPixFmtConverter.h
│       ├── LAVVideo.cpp
│       ├── LAVVideo.def
│       ├── LAVVideo.h
│       ├── LAVVideo.manifest
│       ├── LAVVideo.rc
│       ├── LAVVideo.rc2
│       ├── LAVVideo.vcxproj
│       ├── LAVVideo.vcxproj.filters
│       ├── Media.cpp
│       ├── Media.h
│       ├── VideoInputPin.cpp
│       ├── VideoInputPin.h
│       ├── VideoOutputPin.cpp
│       ├── VideoOutputPin.h
│       ├── VideoSettingsProp.cpp
│       ├── VideoSettingsProp.h
│       ├── decoders/
│       │   ├── DecBase.h
│       │   ├── ILAVDecoder.h
│       │   ├── avcodec.cpp
│       │   ├── avcodec.h
│       │   ├── cuvid/
│       │   │   ├── dynlink_cuda.h
│       │   │   ├── dynlink_cuda_cuda.h
│       │   │   ├── dynlink_cuda_d3d.h
│       │   │   ├── dynlink_cuviddec.h
│       │   │   └── dynlink_nvcuvid.h
│       │   ├── cuvid.cpp
│       │   ├── cuvid.h
│       │   ├── d3d11/
│       │   │   ├── D3D11SurfaceAllocator.cpp
│       │   │   └── D3D11SurfaceAllocator.h
│       │   ├── d3d11va.cpp
│       │   ├── d3d11va.h
│       │   ├── dxva2/
│       │   │   ├── DXVA2SurfaceAllocator.cpp
│       │   │   ├── DXVA2SurfaceAllocator.h
│       │   │   ├── dxva_common.cpp
│       │   │   └── dxva_common.h
│       │   ├── dxva2dec.cpp
│       │   ├── dxva2dec.h
│       │   ├── msdk_mvc.cpp
│       │   ├── msdk_mvc.h
│       │   ├── mvc/
│       │   │   ├── include/
│       │   │   │   ├── mfxcommon.h
│       │   │   │   ├── mfxdefs.h
│       │   │   │   ├── mfxmvc.h
│       │   │   │   ├── mfxsession.h
│       │   │   │   ├── mfxstructures.h
│       │   │   │   ├── mfxvideo.h
│       │   │   │   └── mfxvstructures.h
│       │   │   ├── lib32/
│       │   │   │   └── libmfx.lib
│       │   │   └── lib64/
│       │   │       └── libmfx.lib
│       │   ├── pixfmt.cpp
│       │   ├── quicksync.cpp
│       │   ├── quicksync.h
│       │   ├── wmv9mft.cpp
│       │   └── wmv9mft.h
│       ├── dllmain.cpp
│       ├── parsers/
│       │   ├── AnnexBConverter.cpp
│       │   ├── AnnexBConverter.h
│       │   ├── H264SequenceParser.cpp
│       │   ├── H264SequenceParser.h
│       │   ├── HEVCSequenceParser.cpp
│       │   ├── HEVCSequenceParser.h
│       │   ├── MPEG2HeaderParser.cpp
│       │   ├── MPEG2HeaderParser.h
│       │   ├── VC1HeaderParser.cpp
│       │   └── VC1HeaderParser.h
│       ├── pixconv/
│       │   ├── convert_direct.cpp
│       │   ├── convert_generic.cpp
│       │   ├── interleave.cpp
│       │   ├── pixconv.cpp
│       │   ├── pixconv_internal.h
│       │   ├── pixconv_sse2_templates.h
│       │   ├── rgb2rgb_unscaled.cpp
│       │   ├── yuv2rgb.cpp
│       │   ├── yuv2yuv_unscaled.cpp
│       │   ├── yuv420_yuy2.cpp
│       │   └── yuv444_ayuv.cpp
│       ├── resource.h
│       ├── stdafx.cpp
│       ├── stdafx.h
│       └── subtitles/
│           ├── LAVSubtitleConsumer.cpp
│           ├── LAVSubtitleConsumer.h
│           ├── LAVSubtitleFrame.cpp
│           ├── LAVSubtitleFrame.h
│           ├── LAVSubtitleProvider.cpp
│           ├── LAVSubtitleProvider.h
│           ├── LAVVideoSubtitleInputPin.cpp
│           ├── LAVVideoSubtitleInputPin.h
│           ├── SubRenderOptionsImpl.cpp
│           ├── SubRenderOptionsImpl.h
│           └── blend/
│               └── blend_generic.cpp
├── demuxer/
│   ├── Demuxers/
│   │   ├── BDDemuxer.cpp
│   │   ├── BDDemuxer.h
│   │   ├── BaseDemuxer.cpp
│   │   ├── BaseDemuxer.h
│   │   ├── Demuxers.vcxproj
│   │   ├── Demuxers.vcxproj.filters
│   │   ├── ExtradataParser.cpp
│   │   ├── ExtradataParser.h
│   │   ├── LAVFAudioHelper.cpp
│   │   ├── LAVFAudioHelper.h
│   │   ├── LAVFDemuxer.cpp
│   │   ├── LAVFDemuxer.h
│   │   ├── LAVFInputFormats.cpp
│   │   ├── LAVFStreamInfo.cpp
│   │   ├── LAVFStreamInfo.h
│   │   ├── LAVFUtils.cpp
│   │   ├── LAVFUtils.h
│   │   ├── LAVFVideoHelper.cpp
│   │   ├── LAVFVideoHelper.h
│   │   ├── Packet.cpp
│   │   ├── Packet.h
│   │   ├── StreamInfo.cpp
│   │   ├── StreamInfo.h
│   │   ├── stdafx.cpp
│   │   └── stdafx.h
│   └── LAVSplitter/
│       ├── InputPin.cpp
│       ├── InputPin.h
│       ├── LAVSplitter.cpp
│       ├── LAVSplitter.def
│       ├── LAVSplitter.h
│       ├── LAVSplitter.manifest
│       ├── LAVSplitter.rc
│       ├── LAVSplitter.rc2
│       ├── LAVSplitter.vcxproj
│       ├── LAVSplitter.vcxproj.filters
│       ├── LAVSplitterTrayIcon.cpp
│       ├── LAVSplitterTrayIcon.h
│       ├── OutputPin.cpp
│       ├── OutputPin.h
│       ├── PacketAllocator.cpp
│       ├── PacketAllocator.h
│       ├── PacketQueue.cpp
│       ├── PacketQueue.h
│       ├── SettingsProp.cpp
│       ├── SettingsProp.h
│       ├── StreamParser.cpp
│       ├── StreamParser.h
│       ├── dllmain.cpp
│       ├── resource.h
│       ├── stdafx.cpp
│       └── stdafx.h
├── include/
│   ├── IBitRateInfo.h
│   ├── IBufferInfo.h
│   ├── ID3DVideoMemoryConfiguration.h
│   ├── IDSMResourceBag.h
│   ├── IGraphRebuildDelegate.h
│   ├── IKeyFrameInfo.h
│   ├── ILAVDynamicAllocator.h
│   ├── IMediaSample3D.h
│   ├── IMediaSideData.h
│   ├── IPinSegmentEx.h
│   ├── ISpecifyPropertyPages2.h
│   ├── IStreamSourceControl.h
│   ├── ITrackInfo.h
│   ├── IURLSourceFilterLAV.h
│   ├── LAVAudioSettings.h
│   ├── LAVSplitterSettings.h
│   ├── LAVVideoSettings.h
│   └── README.txt
├── resources/
│   └── LAVFilters.Dependencies.manifest
└── thirdparty/
    ├── 32/
    │   ├── include/
    │   │   ├── avisynth/
    │   │   │   ├── avisynth.h
    │   │   │   ├── avisynth_c.h
    │   │   │   └── avs/
    │   │   │       ├── alignment.h
    │   │   │       ├── arch.h
    │   │   │       ├── capi.h
    │   │   │       ├── config.h
    │   │   │       ├── cpuid.h
    │   │   │       ├── filesystem.h
    │   │   │       ├── minmax.h
    │   │   │       ├── posix.h
    │   │   │       ├── types.h
    │   │   │       ├── version.h
    │   │   │       └── win.h
    │   │   ├── dav1d/
    │   │   │   ├── common.h
    │   │   │   ├── data.h
    │   │   │   ├── dav1d.h
    │   │   │   ├── headers.h
    │   │   │   ├── picture.h
    │   │   │   └── version.h
    │   │   ├── gmp.h
    │   │   ├── gnutls/
    │   │   │   ├── abstract.h
    │   │   │   ├── compat.h
    │   │   │   ├── crypto.h
    │   │   │   ├── dtls.h
    │   │   │   ├── gnutls.h
    │   │   │   ├── ocsp.h
    │   │   │   ├── openpgp.h
    │   │   │   ├── pkcs11.h
    │   │   │   ├── pkcs12.h
    │   │   │   ├── pkcs7.h
    │   │   │   ├── self-test.h
    │   │   │   ├── socket.h
    │   │   │   ├── system-keys.h
    │   │   │   ├── tpm.h
    │   │   │   ├── urls.h
    │   │   │   ├── x509-ext.h
    │   │   │   └── x509.h
    │   │   ├── libxml2/
    │   │   │   └── libxml/
    │   │   │       ├── HTMLparser.h
    │   │   │       ├── HTMLtree.h
    │   │   │       ├── SAX.h
    │   │   │       ├── SAX2.h
    │   │   │       ├── c14n.h
    │   │   │       ├── catalog.h
    │   │   │       ├── chvalid.h
    │   │   │       ├── debugXML.h
    │   │   │       ├── dict.h
    │   │   │       ├── encoding.h
    │   │   │       ├── entities.h
    │   │   │       ├── globals.h
    │   │   │       ├── hash.h
    │   │   │       ├── list.h
    │   │   │       ├── nanoftp.h
    │   │   │       ├── nanohttp.h
    │   │   │       ├── parser.h
    │   │   │       ├── parserInternals.h
    │   │   │       ├── pattern.h
    │   │   │       ├── relaxng.h
    │   │   │       ├── schemasInternals.h
    │   │   │       ├── schematron.h
    │   │   │       ├── threads.h
    │   │   │       ├── tree.h
    │   │   │       ├── uri.h
    │   │   │       ├── valid.h
    │   │   │       ├── xinclude.h
    │   │   │       ├── xlink.h
    │   │   │       ├── xmlIO.h
    │   │   │       ├── xmlautomata.h
    │   │   │       ├── xmlerror.h
    │   │   │       ├── xmlexports.h
    │   │   │       ├── xmlmemory.h
    │   │   │       ├── xmlmodule.h
    │   │   │       ├── xmlreader.h
    │   │   │       ├── xmlregexp.h
    │   │   │       ├── xmlsave.h
    │   │   │       ├── xmlschemas.h
    │   │   │       ├── xmlschemastypes.h
    │   │   │       ├── xmlstring.h
    │   │   │       ├── xmlunicode.h
    │   │   │       ├── xmlversion.h
    │   │   │       ├── xmlwriter.h
    │   │   │       ├── xpath.h
    │   │   │       ├── xpathInternals.h
    │   │   │       └── xpointer.h
    │   │   ├── nettle/
    │   │   │   ├── aes.h
    │   │   │   ├── arcfour.h
    │   │   │   ├── arctwo.h
    │   │   │   ├── asn1.h
    │   │   │   ├── balloon.h
    │   │   │   ├── base16.h
    │   │   │   ├── base64.h
    │   │   │   ├── bignum.h
    │   │   │   ├── blowfish.h
    │   │   │   ├── buffer.h
    │   │   │   ├── camellia.h
    │   │   │   ├── cast128.h
    │   │   │   ├── cbc.h
    │   │   │   ├── ccm.h
    │   │   │   ├── cfb.h
    │   │   │   ├── chacha-poly1305.h
    │   │   │   ├── chacha.h
    │   │   │   ├── cmac.h
    │   │   │   ├── ctr.h
    │   │   │   ├── curve25519.h
    │   │   │   ├── curve448.h
    │   │   │   ├── des.h
    │   │   │   ├── dsa-compat.h
    │   │   │   ├── dsa.h
    │   │   │   ├── eax.h
    │   │   │   ├── ecc-curve.h
    │   │   │   ├── ecc.h
    │   │   │   ├── ecdsa.h
    │   │   │   ├── eddsa.h
    │   │   │   ├── gcm.h
    │   │   │   ├── gostdsa.h
    │   │   │   ├── gosthash94.h
    │   │   │   ├── hkdf.h
    │   │   │   ├── hmac.h
    │   │   │   ├── knuth-lfib.h
    │   │   │   ├── macros.h
    │   │   │   ├── md2.h
    │   │   │   ├── md4.h
    │   │   │   ├── md5-compat.h
    │   │   │   ├── md5.h
    │   │   │   ├── memops.h
    │   │   │   ├── memxor.h
    │   │   │   ├── nettle-meta.h
    │   │   │   ├── nettle-types.h
    │   │   │   ├── nist-keywrap.h
    │   │   │   ├── ocb.h
    │   │   │   ├── pbkdf2.h
    │   │   │   ├── pgp.h
    │   │   │   ├── pkcs1.h
    │   │   │   ├── poly1305.h
    │   │   │   ├── pss-mgf1.h
    │   │   │   ├── pss.h
    │   │   │   ├── realloc.h
    │   │   │   ├── ripemd160.h
    │   │   │   ├── rsa.h
    │   │   │   ├── salsa20.h
    │   │   │   ├── serpent.h
    │   │   │   ├── sexp.h
    │   │   │   ├── sha.h
    │   │   │   ├── sha1.h
    │   │   │   ├── sha2.h
    │   │   │   ├── sha3.h
    │   │   │   ├── siv-cmac.h
    │   │   │   ├── siv-gcm.h
    │   │   │   ├── sm3.h
    │   │   │   ├── sm4.h
    │   │   │   ├── streebog.h
    │   │   │   ├── twofish.h
    │   │   │   ├── umac.h
    │   │   │   ├── version.h
    │   │   │   ├── xts.h
    │   │   │   └── yarrow.h
    │   │   ├── opencore-amrnb/
    │   │   │   ├── interf_dec.h
    │   │   │   └── interf_enc.h
    │   │   ├── opencore-amrwb/
    │   │   │   ├── dec_if.h
    │   │   │   └── if_rom.h
    │   │   └── speex/
    │   │       ├── speex.h
    │   │       ├── speex_bits.h
    │   │       ├── speex_callbacks.h
    │   │       ├── speex_config_types.h
    │   │       ├── speex_header.h
    │   │       ├── speex_stereo.h
    │   │       └── speex_types.h
    │   └── lib/
    │       ├── libdav1d.a
    │       ├── libgmp.a
    │       ├── libgnutls.a
    │       ├── libhogweed.a
    │       ├── libnettle.a
    │       ├── libopencore-amrnb.a
    │       ├── libopencore-amrwb.a
    │       ├── libspeex.a
    │       ├── libxml2.a
    │       └── pkgconfig/
    │           ├── dav1d.pc
    │           ├── gmp.pc
    │           ├── gnutls.pc
    │           ├── hogweed.pc
    │           ├── libxml-2.0.pc
    │           ├── nettle.pc
    │           ├── opencore-amrnb.pc
    │           ├── opencore-amrwb.pc
    │           └── speex.pc
    ├── 64/
    │   ├── include/
    │   │   ├── avisynth/
    │   │   │   ├── avisynth.h
    │   │   │   ├── avisynth_c.h
    │   │   │   └── avs/
    │   │   │       ├── alignment.h
    │   │   │       ├── arch.h
    │   │   │       ├── capi.h
    │   │   │       ├── config.h
    │   │   │       ├── cpuid.h
    │   │   │       ├── filesystem.h
    │   │   │       ├── minmax.h
    │   │   │       ├── posix.h
    │   │   │       ├── types.h
    │   │   │       ├── version.h
    │   │   │       └── win.h
    │   │   ├── dav1d/
    │   │   │   ├── common.h
    │   │   │   ├── data.h
    │   │   │   ├── dav1d.h
    │   │   │   ├── headers.h
    │   │   │   ├── picture.h
    │   │   │   └── version.h
    │   │   ├── gmp.h
    │   │   ├── gnutls/
    │   │   │   ├── abstract.h
    │   │   │   ├── compat.h
    │   │   │   ├── crypto.h
    │   │   │   ├── dtls.h
    │   │   │   ├── gnutls.h
    │   │   │   ├── ocsp.h
    │   │   │   ├── openpgp.h
    │   │   │   ├── pkcs11.h
    │   │   │   ├── pkcs12.h
    │   │   │   ├── pkcs7.h
    │   │   │   ├── self-test.h
    │   │   │   ├── socket.h
    │   │   │   ├── system-keys.h
    │   │   │   ├── tpm.h
    │   │   │   ├── urls.h
    │   │   │   ├── x509-ext.h
    │   │   │   └── x509.h
    │   │   ├── libxml2/
    │   │   │   └── libxml/
    │   │   │       ├── HTMLparser.h
    │   │   │       ├── HTMLtree.h
    │   │   │       ├── SAX.h
    │   │   │       ├── SAX2.h
    │   │   │       ├── c14n.h
    │   │   │       ├── catalog.h
    │   │   │       ├── chvalid.h
    │   │   │       ├── debugXML.h
    │   │   │       ├── dict.h
    │   │   │       ├── encoding.h
    │   │   │       ├── entities.h
    │   │   │       ├── globals.h
    │   │   │       ├── hash.h
    │   │   │       ├── list.h
    │   │   │       ├── nanoftp.h
    │   │   │       ├── nanohttp.h
    │   │   │       ├── parser.h
    │   │   │       ├── parserInternals.h
    │   │   │       ├── pattern.h
    │   │   │       ├── relaxng.h
    │   │   │       ├── schemasInternals.h
    │   │   │       ├── schematron.h
    │   │   │       ├── threads.h
    │   │   │       ├── tree.h
    │   │   │       ├── uri.h
    │   │   │       ├── valid.h
    │   │   │       ├── xinclude.h
    │   │   │       ├── xlink.h
    │   │   │       ├── xmlIO.h
    │   │   │       ├── xmlautomata.h
    │   │   │       ├── xmlerror.h
    │   │   │       ├── xmlexports.h
    │   │   │       ├── xmlmemory.h
    │   │   │       ├── xmlmodule.h
    │   │   │       ├── xmlreader.h
    │   │   │       ├── xmlregexp.h
    │   │   │       ├── xmlsave.h
    │   │   │       ├── xmlschemas.h
    │   │   │       ├── xmlschemastypes.h
    │   │   │       ├── xmlstring.h
    │   │   │       ├── xmlunicode.h
    │   │   │       ├── xmlversion.h
    │   │   │       ├── xmlwriter.h
    │   │   │       ├── xpath.h
    │   │   │       ├── xpathInternals.h
    │   │   │       └── xpointer.h
    │   │   ├── nettle/
    │   │   │   ├── aes.h
    │   │   │   ├── arcfour.h
    │   │   │   ├── arctwo.h
    │   │   │   ├── asn1.h
    │   │   │   ├── balloon.h
    │   │   │   ├── base16.h
    │   │   │   ├── base64.h
    │   │   │   ├── bignum.h
    │   │   │   ├── blowfish.h
    │   │   │   ├── buffer.h
    │   │   │   ├── camellia.h
    │   │   │   ├── cast128.h
    │   │   │   ├── cbc.h
    │   │   │   ├── ccm.h
    │   │   │   ├── cfb.h
    │   │   │   ├── chacha-poly1305.h
    │   │   │   ├── chacha.h
    │   │   │   ├── cmac.h
    │   │   │   ├── ctr.h
    │   │   │   ├── curve25519.h
    │   │   │   ├── curve448.h
    │   │   │   ├── des.h
    │   │   │   ├── dsa-compat.h
    │   │   │   ├── dsa.h
    │   │   │   ├── eax.h
    │   │   │   ├── ecc-curve.h
    │   │   │   ├── ecc.h
    │   │   │   ├── ecdsa.h
    │   │   │   ├── eddsa.h
    │   │   │   ├── gcm.h
    │   │   │   ├── gostdsa.h
    │   │   │   ├── gosthash94.h
    │   │   │   ├── hkdf.h
    │   │   │   ├── hmac.h
    │   │   │   ├── knuth-lfib.h
    │   │   │   ├── macros.h
    │   │   │   ├── md2.h
    │   │   │   ├── md4.h
    │   │   │   ├── md5-compat.h
    │   │   │   ├── md5.h
    │   │   │   ├── memops.h
    │   │   │   ├── memxor.h
    │   │   │   ├── nettle-meta.h
    │   │   │   ├── nettle-types.h
    │   │   │   ├── nist-keywrap.h
    │   │   │   ├── ocb.h
    │   │   │   ├── pbkdf2.h
    │   │   │   ├── pgp.h
    │   │   │   ├── pkcs1.h
    │   │   │   ├── poly1305.h
    │   │   │   ├── pss-mgf1.h
    │   │   │   ├── pss.h
    │   │   │   ├── realloc.h
    │   │   │   ├── ripemd160.h
    │   │   │   ├── rsa.h
    │   │   │   ├── salsa20.h
    │   │   │   ├── serpent.h
    │   │   │   ├── sexp.h
    │   │   │   ├── sha.h
    │   │   │   ├── sha1.h
    │   │   │   ├── sha2.h
    │   │   │   ├── sha3.h
    │   │   │   ├── siv-cmac.h
    │   │   │   ├── siv-gcm.h
    │   │   │   ├── sm3.h
    │   │   │   ├── sm4.h
    │   │   │   ├── streebog.h
    │   │   │   ├── twofish.h
    │   │   │   ├── umac.h
    │   │   │   ├── version.h
    │   │   │   ├── xts.h
    │   │   │   └── yarrow.h
    │   │   ├── opencore-amrnb/
    │   │   │   ├── interf_dec.h
    │   │   │   └── interf_enc.h
    │   │   ├── opencore-amrwb/
    │   │   │   ├── dec_if.h
    │   │   │   └── if_rom.h
    │   │   └── speex/
    │   │       ├── speex.h
    │   │       ├── speex_bits.h
    │   │       ├── speex_callbacks.h
    │   │       ├── speex_config_types.h
    │   │       ├── speex_header.h
    │   │       ├── speex_stereo.h
    │   │       └── speex_types.h
    │   └── lib/
    │       ├── libdav1d.a
    │       ├── libgmp.a
    │       ├── libgnutls.a
    │       ├── libhogweed.a
    │       ├── libnettle.a
    │       ├── libopencore-amrnb.a
    │       ├── libopencore-amrwb.a
    │       ├── libspeex.a
    │       ├── libxml2.a
    │       └── pkgconfig/
    │           ├── dav1d.pc
    │           ├── gmp.pc
    │           ├── gnutls.pc
    │           ├── hogweed.pc
    │           ├── libxml-2.0.pc
    │           ├── nettle.pc
    │           ├── opencore-amrnb.pc
    │           ├── opencore-amrwb.pc
    │           └── speex.pc
    ├── build instructions.txt
    └── versions.txt

================================================
FILE CONTENTS
================================================

================================================
FILE: .clang-format
================================================
BasedOnStyle: Microsoft
IndentWidth: 4
UseTab: Never

Language: Cpp
Standard: Cpp11
SortIncludes: false
AlignAfterOpenBracket: Align
AlignEscapedNewlines: Left
AlignOperands: true
AlignTrailingComments: true
# AllowShortBlocksOnASingleLine: Empty
AllowShortCaseLabelsOnASingleLine: true
AllowShortFunctionsOnASingleLine: InlineOnly
AllowShortIfStatementsOnASingleLine: Never
AllowShortLambdasOnASingleLine: All
AlwaysBreakAfterReturnType: None
BreakConstructorInitializers: BeforeComma
BreakInheritanceList: BeforeComma
Cpp11BracedListStyle: true
PointerAlignment: Right
SpaceBeforeAssignmentOperators: true
SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
SpaceBeforeParens: ControlStatements
SpaceBeforeRangeBasedForLoopColon: true
# SpaceBeforeSquareBrackets: false
# SpaceInEmptyBlock: false
SpaceInEmptyParentheses: false
SpacesInAngles: false
SpacesInCStyleCastParentheses: false
# SpacesInConditionalStatement: false
SpacesInParentheses: false
SpacesInSquareBrackets: false


================================================
FILE: .editorconfig
================================================
root = true

[*]
end_of_line = CRLF
indent_style = space
indent_size = 4
insert_final_newline = true
trim_trailing_whitespace = true

[ffmpeg/**]
end_of_line = LF
indent_style = space
indent_size = 4

[libbluray/**]
end_of_line = LF
indent_style = space
indent_size = 4


================================================
FILE: .github/FUNDING.yml
================================================
# These are supported funding model platforms

github: Nevcairiel # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']


================================================
FILE: .gitignore
================================================

*.user
*.suo
*.sdf
*.opensdf
*.aps
*.db
*.opendb

/ipch
/bin_*
/common/includes/version_rev.h
/.vs


================================================
FILE: .gitmodules
================================================
[submodule "ffmpeg"]
	path = ffmpeg
	url = https://gitea.1f0.de/LAV/FFmpeg.git
[submodule "libbluray"]
	path = libbluray
	url = https://gitea.1f0.de/LAV/libbluray.git
[submodule "qsdecoder"]
	path = qsdecoder
	url = https://gitea.1f0.de/LAV/qsdecoder.git


================================================
FILE: CHANGELOG.txt
================================================
LAV DirectShow Filters Changelog
===================================
0.81.0 - 2026/01/12
LAV Splitter
- NEW: Support for APV (Advanced Professional Video) video streams
- Fixed: VVC in MP4 without CTTS did not play properly
- Fixed: AV1 streams with invalid metadata did not get handled correctly

LAV Video
- NEW: Support for decoding APV (Advanced Professional Video)
- Changed: Re-designed pixel format mapping to be based on a heuristic rather then hard-coded, improving support for rarely-used formats
- Fixed: Deinterlacing of 4:2:2 videos was broken in 0.80

LAV Audio
- Fixed: Bitstreaming TrueHD from Blu-rays with seamless branching could result in out-of-sync audio, or a noticeable gap

0.80.0 - 2025/06/20
LAV Splitter
- NEW: Introduced the IURLSourceFilterLAV interface to allow opening URLs with custom user agent and referrer
- NEW: Added support for WebP images
- Changed: Increased the length of the advanced subtitle selection field, so its no longer cut off after 255 characters
- Changed: Improved buffering behavior on badly interleaved video files
- Fixed: Audio streams with an unknown/unsupported codec are no longer selected for playback, as long as others are present
- Fixed: Improved accuracy of reported FPS from AviSynth scripts

LAV Video
- NEW: D3D11 support for HEVC 4:2:2 and 4:4:4 hardware decoding
- NEW: Dolby Vision extension metadata is exported for renderers to use
- Changed: Added additional media types to support more video streams
- Changed: Updated dav1d for significant AV1 decoding improvements
- Fixed: Improved handling of H.264 4:4:4 files encoded by certain versions of x264
- Fixed: VP9 DXVA2/D3D11 decoding could result in artifacts on some clips
- Fixed: Decoding ProRes reports more accurate color details

LAV Audio
- Changed: Added support for additional ADPCM audio codecs

0.79.2 - 2024/04/08
LAV Splitter
- Fixed: Buffering media from a high latency source was slower then expected (since 0.79)

LAV Audio
- Fixed: Bitstream AC3 audio could fallback to PCM on streams that start with a corrupt audio frame (since 0.78)
- Fixed: Resolved a memory leak when bitstreaming AC3

0.79.1 - 2024/03/28
LAV Video
- Fixed: Resolved a glitch when playing HEVC video

0.79.0 - 2024/03/25
LAV Splitter
- NEW: Support for demuxing VVC video
- Changed: Updated language lists to support all relevant language codes
- Changed: Improved resilience of streaming HLS
- Changed: Tweaked frame rate detection logic

LAV Video:
- NEW: Support for decoding VVC video

0.78.0 - 2023/10/25
LAV Splitter
- NEW: Added identification of DTS:X in DTS HD-HRA streams
- NEW: Support for various stream flags in Matroska containers (Hearing Impaired, and more)
- Changed: Text-based subtitle selection now uses case-insensitive matches (ASCII characters only)
- Fixed: Many stream titles in MP4 files weren't being read properly

LAV Video
- NEW: Support for decoding SMC video
- Fixed: HLG video streams could have their HLG flag overriden in some circumstances

LAV Audio
- Fixed: TrueHD bitstreaming of Atmos tracks could cause output timestamps to be off, confusing some audio renderers

0.77.2 - 2023/03/08
LAV Splitter
- NEW: Added identification for spatial/immersive audio extensions (Atmos, DTS:X)
- Changed: More reasonable rounding for odd aspect ratios, avoiding issues with some video pipelines
- Fixed: Improved compatibility with some FTP servers

LAV Audio
- Fixed: Restored the default channel layouts for 5.1 and 7.1 to the correct layout (accidentally changed in 0.77, causing some playback issues)
- Fixed: Some TrueHD files would not decode correctly
- Fixed: Clipping protection did not engage when using Integer output

0.77.1 - 2022/11/15
LAV Splitter
- Fixed: More MP4 keyframe information fixes

0.77.0 - 2022/11/10
LAV Splitter
- Fixed: Improved handling of multichannel PCM channel assignments
- Fixed: MP4 Keyframe information could be wrong

LAV Audio
- NEW: Support for audio with more then 8 channel, including automatic downmixing if required

0.76.1 - 2022/02/28
LAV Splitter
- Changed: When requesting a HTTP URL, the URL itself is send as a referrer to increase compatibility
- Fixed: The priority of "Default" subtitle tracks in MKV files was wrong when a forced track was present

LAV Video
- Changed: Improved color reporting for DVD menus/subtitles
- Fixed: D3D11 surface clearing did not work properly on Intel GPUs

0.76.0 - 2022/01/22
LAV Splitter
- NEW: Added an option to re-evaluate subtitle stream selection when the audio language changes
- NEW: Improved advanced subtitle selection syntax with negated flags (positive and negative flags can now be combined for more flexible selection)
- Changed: Improved variant/stream selection in DASH and HLS streams
- Changed: Video streams with the highest bitrate are preferred (if equal resolution)

LAV Video
- NEW: Support for passing DoVi metadata to video renderers
- NEW: BobWeaver (BWDIF) software deinterlacer (a blend of YADIF and Weston, focusing on their individual strengths)
- NEW: Support for FIC screen capture video
- Changed: D3D11 video surfaces are flushed to black before decoding, avoiding green artifacts
- Changed: D3D11 devices are created up to feature level 12.1

LAV Audio
- Fixed: TrueHD bitstreaming could result in A/V sync issues or drop-outs
- Removed: Support for the external DTS decoder (dtsdecoderdll.dll) has been removed

0.75.1 - 2021/06/21
LAV Splitter
- Changed: AV1 files with no extradata will now generate a format header with stream information for decoders to use
- Fixed: Improved stream selection when multiple "default" video tracks are present

LAV Video
- Changed: Updated dav1d for significant improvements in AV1 10-bit decoding performance
- Changed: AV1 hardware decoding will more reliably engage when provided with additional stream information from the demuxer

LAV Audio
- Fixed: Opus decoding had audible artifacts in some files in 0.75

0.75.0 - 2021/03/30
LAV Splitter
- NEW: Support for DASH streaming
- NEW: WebVTT support in Matroska/WebM
- Changed: Improved Font support from Matroska files
- Fixed: Large queue size limits could result in the wrong limit being applied
- Fixed: Resolved a memory leak in Matroska demuxing
- Fixed: Avoid selecting a stream with only a single video frame in MP4 files, which is often a cover art
- Fixed: Seeking in Matroska files with only audio cue points did not function
- Fixed: Seeking to the beginning of certain HLS streams did not work properly
- Fixed: Duration information in Matroska files is more reliable

LAV Video
- NEW: AV1 DXVA2/D3D11 hardware decoding support
- NEW: ProRes 4444 XQ support
- Faster: Updated dav1d decoder and improved thread configuration for significantly improved AV1 decoding speed
- Fixed: Added a workaround for VP9 hardware decoding on AMD video cards
- Fixed: H.264 streams exceeding the Level 5.1 DPB limit will no longer be hardware decoded
- Fixed: Improved handling of missing reference frames in H.264 streams with hardware decoding
- Fixed: HEVC streams encoding 8-bit video in a Main10 profile can be properly hardware decoded
- Deprecated: NVIDIA CUVID and Intel QuickSync have been deprecated for future removal/replacement

LAV Audio
- Fixed: Resolved an issue with glitching TrueHD bitstreaming on seamless-branching titles
- Fixed: Resolved a compatibility issue with some playback applications
- Deprecated: Support for the binary DTS decoder (dtsdecoderdll.dll) has been deprecated for future removal

0.74.1 - 2019/03/19
LAV Video
- Fixed: VP9 video could produce wrong timestamps, resulting in a black screen or other playback disruptions
- Fixed: Decoding VP9 from a non-keyframe (ie. after a seek, or badly cut file) would not always recover properly once a keyframe was encountered

0.74.0 - 2019/03/16
LAV Splitter
- Changed: Using GnuTLS for HTTPS and other TLS protocols, improving performance and compatibility with a lot of web streaming services (ie. YouTube Live Streams through youtube-dl, and more)
- Fixed: Keyframes in MP4 files were being reported with a slightly offset timestamp, resulting in slow keyframe seeking
- Fixed: Subtitles that stretch over chapter boundaries could be lost in Ordered Chapter MKV files
- Fixed: Fonts embedded in MKVs without a proper mimetype were not being imported (now it checks the file extensions for .ttf/.otf as well)

LAV Video
- NEW: Initial support for parsing HDR10+ (SMPTE ST 2094-40) metadata, and passing it to the video renderer
- NEW: Using the dav1d AV1 decoder for significantly improved AV1 decoding performance
- Changed: Re-enabled experimental hardware acceleration for H.264 MVC 3D decoding on Intel GPUs, disabled by default
- Changed: Updated Intel MediaSDK dispatchers to the latest Media SDK, fixing compatibility with newer runtimes in the Intel DCH drivers
- Changed: Improved support for additional UtVideo subtypes

LAV Audio
- Changed: Added an option to disable the PCM fallback when bitstreaming is requested
- Fixed: Further improvements to TrueHD Bitstreaming, resolving glitching on more new titles (particularly seamless branching titles)
- Fixed: Automatic fallback from bitstreaming to PCM could crash in some situations

0.73.1 - 2018/10/11
LAV Video
- Fixed: Container-provided color information will only overwrite video bitstream color information if its set and valid

LAV Audio
- Fixed: Certain multi-channel AAC streams did not decode in 0.73

0.73.0 - 2018/10/05
LAV Splitter
- Changed: Export the description of cover art and attachments for use by players
- Fixed: Properly marked the packet allocator as providing read-only packets, to avoid crashes with in-place transform filters

LAV Video
- NEW: Support for AV1 decoding using libaom
- Changed: Enabled VP9 hardware acceleration by default
- Fixed: The aspect ratio of certain WMV/VC-1 files was not being properly respected in the WMV9 MFT decoder

0.72.0 - 2018/06/19
LAV Video
- Changed: Enabled CineformHD decoding by default, since the decoder has much improved
- Fixed: Decoding Matroska files with Linked Segments which used old x264 4:4:4 encodes could result in corruption

LAV Audio
- NEW: Blu-ray Dolby Digital Plus 7.1 decoding and bitstreaming support
- NEW: LAV Audio will fallback to audio decoding if bitstreaming is not supported by the audio renderer/hardware
- Fixed: DTS-HD HRA bitstreaming did not work properly with many A/V receivers
- Fixed: TrueHD bitstreaming could result in drop-outs on high bitrate TrueHD+Atmos streams

0.71.0 - 2018/02/15
General
- LAV Filters now requires Windows Vista or newer, Windows XP is no longer supported

LAV Splitter
- NEW: Preliminary support for UHD Blu-ray parsing

LAV Video
- NEW: D3D11 hardware accelerated decoding (native mode with madVR, Copy-Back otherwise)
- Fixed: HDR metadata was not properly communicated to madVR in DXVA2-Native mode
- Fixed: Anamorphic WMV9/VC-1 videos were not being played back with the correct aspect ratio in all cases
- Fixed: Changing certain settings while playback was paused could result in a deadlock
- Fixed: Playing severely corrupted HEVC streams with hardware decoding could result in playback failing entirely, instead of skipping over the corruption

LAV Audio
- NEW: Basic support for AAC 960 streams (common in DVB radio streams)

0.70.2 - 2017/07/06
LAV Video
- Fixed: DXVA2 decoding could fail in 0.70 after a dynamic media type change

0.70.1 - 2017/07/01
LAV Video
- NEW: DXVA2-CopyBack uses D3D9Ex to allow headless operation
- Changed: Increased the maximum number of decode threads to 32
- Changed: Rebalanced the "Auto" thread strategy to use the exact number of available CPU cores, instead of 1.5x the cores
- Fixed: Certain H264 streams could crash in 0.70 due to lack of buffer padding

0.70.0 - 2017/06/15
General
- Official LAV Filters builds require a SSE2 capable CPU

LAV Splitter
- Fixed: Certain MP4/MOV files didn't play or seek correctly in recent versions of LAV Splitter
- Fixed: HEVC in MP4 without PTS timestamp is being signaled appropriately
- Fixed: Closing RTSP streams did not properly call the TEARDOWN function

LAV Video
- NEW: CUVID support for VP9 8/10-bit and HEVC 10/12-bit decoding
- NEW: DXVA2 support for VP9 10-bit decoding
- Changed: Simplified the internal dataflow to reduce overhead and improve performance
- Changed: Enabled P010 output to EVR on Windows 10 Creators Update
- Fixed: Y416 output was incorrect (required by madVR 0.91.8 and newer)
- Fixed: Parsing H.264 MVC SEI NALs could fail in some cases
- Fixed: CUVID decoding could deinterlace progressive streams under certain circumstances, degrading the quality

LAV Audio
- Fixed: LATM AAC streams with Program Config Elements (PCE) (common in DVB-T2 broadcast) played with audible distortions
- Fixed: Very short PCM audio streams didn't play properly

0.69.0 - 2016/12/11
LAV Splitter
- NEW: Support for extracting HDR metadata from YouTube HDR VP9 streams
- Fixed: Reading MKV files could crash when encountering tags for unknown or disabled streams

LAV Video
- NEW: Support for 10-bit UtVideo
- NEW: MagicYUV decoding support
- NEW: Experimental support for CineformHD decoding
- Fixed: Converting 12-bit 4:4:4 YCbCr to RGB32 would result in a garbled image
- Fixed: Decoding certain H.264 streams could drop a few frames at the start of playback

LAV Audio
- NEW: DTS Express (LBR) decoding support

0.68.1 - 2016/05/05
LAV Splitter
- NEW: Support for reading metadata tags from MKV files (including the "3d-plane" MVC 3D tag from MakeMKV 1.9.10 and newer)
- Fixed: Improved handling of QuickTime codecs in MKV files
- Fixed: S302M audio streams with non-pcm content did not work anymore (requires an external decoder)

LAV Video
- Changed: Flags for BT.2020 are exported in DXVA2_ExtendedFormat (previously only reported to madVR, since the Windows SDK did not specify them)
- Changed: Prevent connections to the "AVI Decompressor" filter which could result in a broken image or crashes otherwise
- Fixed: Some progressive files could report the wrong FPS when software deinterlacing was turned on
- Fixed: MPEG-2 streams using "intra refresh" did not decode properly

LAV Audio
- Fixed: Decoding MPEG Audio streams from the Microsoft MPEG-1 Splitter could result in playback starting with an audible glitch

0.68.0 - 2016/03/08
LAV Splitter
- NEW: H.264 MVC 3D demuxing from MKV 3D, Blu-ray discs and Blu-ray SSIF files
- Fixed: The bitdepth of DTS-HD MA streams is reported properly in the stream information

LAV Video
- NEW: H.264 MVC 3D decoding (requires madVR 0.90 or newer)
- NEW: HEVC HDR streams export the HDR metadata to the video renderer (requires madVR 0.89.18 or newer)
- NEW: VP9 DXVA2 Hardware Acceleration
- NEW: Weston Three Field Deinterlacing filter (w3fdif)
- NEW: Ability to choose which GPU is used for DXVA2-CopyBack decoding
- Changed: Removed the CUVID HQ processing option, it is now automatically used when appropriate
- Fixed: CUVID would crash when playing certain HEVC files
- Fixed: Some pixel format conversions were much slower than expected
- Fixed: Pixel Format changes mid-stream were not re-negotiated with the renderer in all cases
- Fixed: Changes in the framerate due to software deinterlacing are properly reflected in the media type

LAV Audio
- Fixed: Increased PCM buffering to avoid stuttering with TrueHD on some audio devices

0.67.0 - 2015/11/15
LAV Splitter
- NEW: Support for HTTPS URLs
- NEW: Automatic selection of the highest quality variant in HLS streams
- Changed: Reverted back to the old ASF demuxer
- Changed: Backported ASF seeking improvements to the old ASF demuxer
- Fixed: ASS in AVI did not work in recent versions
- Fixed: RTP/RTSP did not work properly in 0.66

LAV Video
- NEW: Improved DVD subtitle and menu drawing with madVR (support for madVRs subtitle repositioning and lower latency)
- Changed: HEVC and 4K HWAccel is enabled by default
- Changed: Enabled DXVA2-CB Direct Mode with YV12 output on 8-bit sources
- Fixed: DVD menus could show a black screen instead of the menu in some situations

LAV Audio
- Fixed: Improved clipping behavior in badly mastered DTS-HD tracks

0.66.0 - 2015/09/22
LAV Splitter
- NEW: Added options to increase the queue size for increased buffering
- Changed: Switched ASF/WMV demuxing to a new demuxer from Libav
- Fixed: Improved seeking with MPEG-TS files which contain teletext streams

LAV Video
- NEW: Support for DXVA2-Native decoding of HEVC 10-bit with EVR on supported GPUs
- Changed: 4K Video Decoding on AMD graphics card is now enabled (needs recent drivers to work properly)
- Changed: DXVA2-CB decoding uses less memory on NVIDIA graphics cards
- Fixed: H264 DXVA2 decoding failed when no SPS/PPS was available in the media type
- Fixed: Conversion of RGB48 to RGB32/24 did not properly use dithering
- Fixed: Improved handling of a few DVD menu quirks
- Fixed: Decoding 10-bit video with EVR could result in a black screen

LAV Audio
- Changed: 5.1 audio favors the "Side" 5.1 layout, which conforms to modern surround standards

0.65.0 - 2015/04/21
LAV Splitter
- NEW: Support for MKV subtitle Cues to show subtitles immediately after a seek
- NEW: Attachments and embedded cover art images are exported through the IDSMResourceBag interface
- Fixed: Improved demuxing of HEVC in MPEG-TS and increased the reliability of the SPS/PPS/VPS extraction
- Fixed: Demuxing Blu-rays/MPEG-TS where the first stream was not a video stream could result in broken timestamps
- Fixed: Seeking in MKVs which are currently being written is more reliable

LAV Video
- Fixed: Improved HEVC DXVA2 decoding on a few samples
- Fixed: Playback of VFR MPEG-4 in AVI had wrong timestamps in 0.64
- Fixed: Improved handling of DVD subtitles without timestamps

LAV Audio:
- NEW: Native DTS-HD decoding using libdcadec
- Changed: 5.1 audio prefers the speaker mask with side channels, to match recent specifications

0.64.0 - 2015/02/13
General
- NEW: Individual LAV Filters can now be blacklisted through the registry by creating a key with the executable name in HKCU\Software\LAV\<Filter>\Blacklist

LAV Splitter
- NEW: Support for RTMP using rtmpdump-style parameter syntax
- NEW: Support for Opus-in-TS
- Fixed: The language reported for audio/subtitle streams on some Blu-rays could be wrong

LAV Video
- NEW: HEVC Main10 decoding in DXVA2 Copy-Back mode
- Faster: DXVA2 Copy-Back in direct output mode uses up to 50% less CPU and performance is improved accordingly
- Fixed: H.264 streams with only DTS timestamps would play out of sync with DXVA2
- Fixed: DXVA2 could crash on some MPEG-2 streams
- Fixed: Improved compatibility with a few HEVC streams when using DXVA2

0.63.0 - 2014/10/03
LAV Splitter
- NEW: Support for playing AES encrypted HLS streams
- NEW: Advanced Subtitle selection allows selecting subtitles by a string match on the stream title
- NEW: Support for rtspu, rtspm, rtspt and rtsph URLs to force the RTSP transport protocol
- NEW: Animated GIF image support
- Fixed: Improved timestamp handling of badly muxed/corrupted H.264 streams
- Fixed: 4K ProRes streams in MKV didn't play reliably
- Fixed: Some HEVC streams in MKV/MP4 didn't play properly
- Fixed: VobSubs in MP4 didn't properly export their color palette
- Fixed: Streaming MP3s through the Microsoft URL filter could result in the last audio frame to be partially repeated
- Fixed: The duration of MP3 files would be wrong if it contained long IDv3 tags
- Fixed: TrueHD streams with an Dolby Atmos sub-stream were not demuxed properly

LAV Video
- NEW: Experimental support for CUVID and DXVA2 HEVC acceleration
- Faster: HEVC decoding is up to 100% faster
- Fixed: DVD subtitle rendering could crash in 64-bit builds

LAV Audio
- Fixed: TrueHD streams with an Dolby Atmos sub-stream did not decode

0.62.0 - 2014/06/12
LAV Splitter
- Fixed: The filtered Forced Subtitles stream did not properly send all related subtitle data in some cases

LAV Video
- NEW: Implemented a WMV9 MFT decoder to replace the old DMO decoder for VC-1/WMV3 on Windows 7 and above
- NEW: Support for VP7 video
- Fixed: Multi-threaded video decoding could result in a handle leak on some systems
- Fixed: Video processing was slow on Windows XP due to inefficient memcpy use
- Fixed: DVD subtitles could overlap on some discs

LAV Audio
- Fixed: Dynamic format switching to an audio stream with a different sample rate did not work in some cases

0.61.2 - 2014/04/08
General
- Installer: The installer does now backup DirectShow registry settings before overwriting them, allowing uninstall to restore them

LAV Splitter
- NEW: Support for ProRes in MKV
- Fixed: Opening AviSynth scripts with LAV Splitter which used DirectShowSource to load LAV Splitter again caused a deadlock
- Fixed: Audio-only AviSynth scripts did not show a duration.
- Fixed: Cue Sheets with directives with empty parameters could cause a crash

LAV Video
- Fixed: AVC1 video streams without SPS/PPS in the configuration record did not decode properly
- Fixed: Decoding H.264 streams with a resolution change using the DXVA2 Copy-Back decoder could crash
- Fixed: YUV->RGB conversion produced the wrong output for the last line of odd-height 4:2:2 or 4:4:4 files

LAV Audio
- Changed: LAV Audio offers more alternate output configurations to the audio renderer if the audio renderer refuses our preferred format.
- Fixed: Decoding AC3 audio with corrupted audio frames could cause unnecessary format changes to occur and disrupt playback
- Fixed: Decoding DTS audio on a CPU without SSE2 support could crash on some streams

0.61.1 - 2014/03/07
LAV Splitter
- NEW: Support for opening "icyx://" stream URLs
- Fixed: Opening of some Blu-ray discs would take several minutes and could hang the player.

LAV Video
- Fixed: Aggressive Deinterlacing is no longer applied to soft-telecined content, which caused severe playback issues.

0.61.0 - 2014/03/04
LAV Splitter
- NEW: Support for "demuxing" AviSynth scripts (requires AviSynth, 2.6 recommended)
- NEW: Support for reading ICY stream metadata from ShoutCast streams
- Fixed: The duration of DVB MPEG-TS files is being detected more reliably
- Fixed: The ITrackInfo interface was not available in the last few versions
- Fixed: The duration of certain Ogg Vorbis streams was wrong
- Changed: DTS-HD audio tracks are now exposed using the official DTS-HD media type, in addition to the old DTS type
- Workaround: Block WMP/WMC from always overwriting the initial track selection

LAV Video
- NEW: Support for Duck TrueMotion 1/2
- NEW: Support for BT.2020 in YCbCr -> RGB conversions
- Fixed: Format conversion could cause out of memory errors when converting high-resolution videos
- Fixed: The decoder could crash if DXVA2 decoding failed and the software decoder is unavailable
- Fixed: Reduced binary bloat caused by the YCbCr -> RGB converter, reducing binary size to nearly half
- Fixed: Playback of RV30/RV40 was not smooth in 0.60
- Fixed: Video corruption when using DXVA2 on Intel GPUs when decoding certain VC-1 or MPEG-2 clips
- Fixed: Decoding WMV3 Complex profile automatically falls back to software, since hardware decoding is unsupported.
- Faster: DXVA2 Copy-Back decoding on Intel GPUs is significantly faster
- Changed: If the wmv9dmo decoder is unavailable, the FFmpeg decoder is automatically used instead
- Changed: Updated QuickSync decoder to the latest version, fixes a few timestamp issues.
- Changed: Relaxed the resolution checks for H.264 decoding on AMD GPUs, allowing files with 2K resolutions to be decoded (ie. 2048x1280, etc.)

LAV Audio
- NEW: Support for ATRAC3+
- Fixed: Decoding AC3 audio could produce glitches in playback due to too aggressive error checking.

0.60.1 - 2014/01/14
LAV Splitter
- Fixed a crash when opening MPEG-2 files with Stereo3D Metadata
- Improved the format of the chapter names created from embedded cue sheets
- Fixed an incompatibility in the IPropertyBag metadata interface with a few players

0.60.0 - 2014/01/12
LAV Splitter
- Improved playback of a few Blu-ray discs, avoids a hiccup at clip change
- Support for reading embedded Cue Sheets from audio files as chapters
- Added support for reporting the stream bitrate through IBitrateInfo (for MPC-HC et al.)
- Additional metadata from the source file is exported through IPropertyBag (including "ROTATION" for video orientation information)
- Fixed demuxing of MKV files with huge SSA/ASS format blocks (> 1MB)
- Fixed playback of certain MPEG4 ASP streams in MKV to be smooth

LAV Video
- Added support for VC-1/WMV3 DXVA2 decoding on recent Intel GPUs (Ivy Bridge/Haswell, needs recent drivers)
- Fixed a crash when stopping playback or seeking on AMD when using DXVA2 Native
- Fixed playback of WMVA videos in software mode
- Fixed a few issues with output of odd-height videos when converting to various pixel formats
- Fixed a few corner cases when reporting the video range to madVR
- Fixed a crash when playing raw video files with unaligned width (non mod16)

LAV Audio
- The version of the DTS DLL decoder is now checked, and versions before 1.1.0.0 are blocked (since they do not work)
- Fixed an issue with DTS parsing which could result in occasional audio stutter
- Improved support for Opus audio pre-skip

0.59.1 - 2013/11/04
LAV Splitter
- Fixed a regression when demuxing AAC audio from MP4/MOV files

0.59.0 - 2013/11/03
LAV Splitter
- Support for demuxing H.265/HEVC and VP9
- Improvements for H.264 in AVI or as raw video streams
- Improved stream detection in files which start with a few seconds audio before the video
- Improved timestamp handling when demuxing seamless branching Blu-rays, fixes a few hicups/freezes mid-stream

LAV Video
- Support for decoding H.265/HEVC and VP9
- Accept H.264 from the MainConcept demuxer
- Added support for DV Video from Canopus cameras

LAV Audio
- Fixed playback issues on a few DTS and DTS-HD tracks

0.58.2 - 2013/07/26
LAV Splitter
- Fixed demuxing of WavPack from MKV

LAV Video
- Fixed a crash when YADIF was being used on a single- or dual-core CPU

LAV Audio
- Fixed decoding of DTS streams with a frame size change mid-stream

0.58.1 - 2013/07/09
LAV Splitter
- Improved UDP network streaming
- Added a new option to configure the stream analysis duration of network streams
- Reduced subtitle delay on certain Blu-ray titles
- Improved detection of DTS-in-WAV
- Improved I/O behaviour for sequential reading from optical media

LAV Video
- Fixed dynamic reconnection on parameter changes (Aspect Ratio, etc) with VMR-9
- Support for Apple Intermediate Codec (ICOD)
- dxva2: added a check for AMD UVD/UVD+ GPUs to ensure the H.264 Level 4.1 DPB restrictions are met

LAV Audio
- Fixed a regression decoding certain Ogg Vorbis streams

0.58.0 - 2013/06/23
General
- LAV Filters now includes a manifest file to control DLL loading
- Fixed the shortcuts to the configuration dialogs created by the installer in the start menu

LAV Splitter
- Handle the "Default" flag in MKV files with multiple video streams
- Fixed a regression in VC-1 demuxing which caused some streams to fail decoding with the WMV9 DMO decoder
- Improved transition between ordered chapters in certain (badly formed) MKV files
- Improved handling of AVC1 in AVI files
- Improved accuracy of IAMStreamSelect::get_CurrentMarker
- Several potential crash fixes and stability improvements

LAV Video
- YADIF deinterlacing is now multi-threaded, significant performance improvement on multi-core CPUs
- Improved detection of progressive streams to ensure deinterlacing is disabled, especially when "Aggressive Deinterlacing" is used
- Restored Fraps constant frame rate output by proper handling of repeated frames
- Support for the new UtVideo sub-types, and fixed a regression in UtVideo decoding
- cuvid: fix double-rate deinterlacing on certain streams without timing information
- Updated the Intel QuickSync Decoder to 0.44

0.57.0 - 2013/05/20
LAV Splitter
- Added a Popup Menu to the Tray Icon which allows Stream, Edition and Chapter switching
- Improved stream selection in files with multiple video streams
- Improved performance when opening MKVs with linked segments
- Fixed playback of MKVs with Segment Linking and Vorbis Audio

LAV Video
- Enabled Hardware/GPU Deinterlacing when using the QuickSync decoder
- Support for JPEG2000 DCinema streams
- Support for RGB48 output, and high-quality dithering of RGB48 to RGB32
- Fixed a crash with DXVA2 Native on AMD GPUs in certain situations
- Improved detection of H.264 RGB streams, improves support with EVR
- Adjusted performance tuning for consistent performance in both playback and transcoding (in 0.56, transcoding could be slow)

LAV Audio
- Use the FLAC channel mask from metadata, fixes playback of FLAC files with non-standard channel layouts

0.56.2 - 2013/04/19
LAV Splitter
- Emit the EC_LENGTH_CHANGED event when the edition is changed, to help players update their playback duration

LAV Video
- dxva2: fixed corruption/dropped frames after seeking in interlaced MPEG-2/VC-1 streams
- dxva2: fixed corruption after seeking in interlaced H.264 on AMD GPUs
- dxva2: fixed decoding of H.264 on AMD UVD/UVD+ GPUs (HD 2xxx/3xxx Series)
- dxva2: disabled wmv3 decoding on AMD UVD/UVD+ GPUs (until it can be fixed)
- Fixed colorspace used for YUV Fraps to always be BT.709
- Added support for MPEG-4 Video with the BLZ0 FourCC (used in older Blizzard games)

0.56.1 - 2013/04/13
LAV Splitter
- Fixed various crashes with ordered chapter MKVs
- Fixed a crash when playing an MKV with a disabled subtitle track
- Fixed switching between video streams with different codecs (ie. H264 -> MPEG2)

LAV Video
- Fixed a crash on close with DXVA2 Native
- Re-tuned YADIF for smooth playback instead of benchmarking

0.56.0 - 2013/04/10
General
- Major ffmpeg update, the DLLs have had their version number increased

LAV Splitter
- Support for Matroska Ordered Chaptes / Segment Linking
- Improved support for parsing language tags from OGM files
- Small performance improvements by avoiding copying the stream data in memory needlessly
- Improved duration calculation for MP3 files

LAV Video
- Performance improvements for single-threaded decoders and YADIF (up to 20% in some situations)

0.55.3 - 2013/02/10
LAV Splitter
- Improved handling of Annex B H.264 in many containers
- Improved support for external source filters without seeking ability (live sources)
- Fixed duration in some MP4/MOV files
- Fixed stream program assignment for some MPEG-TS files (resulted in some streams not visible)

LAV Video
- Added support for TSCC2
- Fixed a crash when playing certain H.264 files with QuickSync or CUVID

0.55.2 - 2013/01/25
LAV Splitter
- Improved support for MP4-style H.264 in AVI
- Further improvements for AAC in MPEG-TS
- Small improvements to handling Blu-rays with odd stream configurations
- Improved handling of Ogg Vorbis streams

LAV Video
- Basic support for playing DVDs in different playback rates
- Fixed DXVA2 resource cleanup which may have caused a crash in some situations with DXVA2-Native
- Fixed A/V Sync when using the WMV9 DMO decoder (especially noticeable after seeking)

LAV Audio
- Improved AC3 decoding quality (thanks to madshi for the patch in ffmpeg)

0.55.1 - 2013/01/11
General
- Clicking the Tray Icon with a Property Page already active brings it back to the front

LAV Splitter
- Added an option to disable quality-based audio stream selection (selects the first stream matching the language preferences)
- Removed Bitrate from audio quality criteria, because its too unreliable at this point.

LAV Video
- Fixed YADIF deinterlacing (broken after a ffmpeg update on 0.55)

LAV Audio
- Switched to Triangular Dithering for 16-bit Integer conversions

0.55.0 - 2013/01/09
General
- All Filters now have an optional tray icon which can open the property sheet when clicked (disabled by default)

LAV Splitter
- Improved FPS detection for interlaced H.264 streams in Matroska
- Fixed H.264 in Ogg and PMP
- Fixed seeking in RMVB files with AAC audio
- Improved support for AAC in MPEG-TS (especially in ISDB-T)
- Fixed Key-Frame seeking for AVI and added support for MP4

LAV Video
- Improved handling of raw RGB video with LAV Splitter (Video was upside-down in some cases)
- Improved support for the Overlay Mixer renderer
- Fixed decoding of non-mod16 video with CUVID
- Fixed DXVA2 decoding of H.264 MBAFF content with >= 16px cropping
- Support for fade in/out animations in DVD subtitles
- Fixed DVD menu overlays showing too early on some discs
- Fixed forced DVD subtitles being stuck on the screen until the next subtitle line
- Improved playback of MPEG-1 in MKV with Haali Splitter

LAV Audio
- Fixed 6.1 to 7.1 upmixing when the standard channel layout option is turned off
- Dithering when converting audio to 16-bit Integer
- Fallback to DTS "Core" bitstreaming if DTS-HD fails

0.54.1 - 2012/11/27
LAV Splitter
- Improved seeking in MP4 files created by Windows Live Movie Maker

LAV Video
- Improved H.264 DXVA on recent Intel GPUs (Sandy/Ivy Bridge and newer Atoms)
  - Fixed corruption with high number of reference frames ( > 11 )
  - Fixed corruption in MBAFF interlaced content
- Fixed an issue that caused DVD menus/subtitles to stop working in DXVA2 Native mode in some situations

0.54.0 - 2012/11/24
LAV Splitter
- Subtitle selection in "Default" mode now properly takes the "Default Track" flag into account
- Fixed an issue that could cause graph flush events to be send out of sync

LAV Video
- The DXVA2 Native decoder can now properly detect hardware support for video resolutions
  - Allows 4K DXVA2 decoding on NVIDIA
- New options to control which resolutions are being handled by the hardware decoder (SD, HD and 4K/UHD)
- Added support for DVD menu overlays and DVD subtitles with DXVA2 Native
- Improved DXVA2 Native support with madVR
- Fixed a freeze when playing corrupted H.264 streams in DXVA2 Native
- Fixed a few rare DVD menu issues when using the QuickSync decoder

0.53.2 - 2012/11/11
LAV Video
- Fixed DVD menu still frames with DXVA2 Copy Back
- Fixed Live TV playback with QuickSync

0.53.1 - 2012/11/10
LAV Video
- Fixed initial media type when YADIF is active
- Fixed an image corruption issue with DVD playback
- Improved handling of DVD menus on some discs
- Reduced decode latency with CUVID/DXVA2-CB on DVDs for smoother playback in some situations
- Added an option to toggle HW decoding for DVDs

0.53.0 - 2012/11/05
LAV Splitter
- Added support for reading image files (tiff, png, jpeg, tga, bmp)
- Support for MPEG-4 ASP in MPEG-TS
- Support for reading metadata using the IAMMediaContent interface
- Fixed Aspect Ratio on some wmv/asf files

LAV Video
- Fixed a crash in the WMV9 DMO decoder on Windows 8
- DVD improvements
  - Subtitles are properly cleared from the screen, and won't be shown forever on some discs
  - Improved subtitle/menu positioning on some PAL discs
  - Improved handling of still frame DVD menus
  - Fixed a deadlock that caused the player to freeze in some DVD menus
  - Improved quality of blending subtitles/menus
- QuickSync improvements
  - Support using QuickSync in Fullscreen Exclusive mode (ie. in WMC)
  - Improved fallback to software decoding if QuickSync is not available
  - Support for DVD decoding
- Added support for Avid DV
- Properly indicate progressive video when YADIF deinterlacing is activated

LAV Audio
- Added proper DirectShow types and config options for AMR-NB, Nellymoser and various (AD)PCM variants

0.52.0 - 2012/10/20
LAV Splitter
- Improved IO performance on network sources
- Added an option to configure the maximum memory usage of the frame queues
- Support ALAC in MKV
- Support SRT subtitles in AVI
- Improved raw video support in combination with LAV Video

LAV Video
- Support for DVD Video decoding
- Slight GPU memory usage reduction with DXVA2 Native
- Fixed video corruption after seeks with VP3/Theora
- Fixed decoding of "old" H.264 4:4:4 lossless files
- More strict handling of output pixel formats, only enabled formats are allowed for output
- QuickSync: Improved compatibility with new driver series
- Improved support for VC-1 with the SageTV MpegDemux

LAV Audio
- Fixed a few issues with audio mixing
  - Some channels would occasionally be mixed twice, causing incorrect audio levels
  - Downmixing 8ch to stereo could crash on some systems
  - Increased maximum LFE coefficient to 3.0 and fixed scale to be consistent with surround/center coefficients
  - Added downmixing to Mono
  - Clipping protection is no longer reset on seeks
- Added support for Opus
- Fixed excessive memory allocations when decoding MPEG4-ALS

0.51.3 - 2012/07/19
LAV Splitter
- Further improved H264 media type creation

LAV Audio
- Fixed an issue with the initial media types causing graph building failures in some situations
- Fixed a bug with DVBViewer which caused a delay on channel changes

0.51.2 - 2012/07/15
LAV Splitter
- Improved H264 media type creation with some files
- Fixed reading of QuickTime/AppleText chapters in MOV/MP4

LAV Video
- Reduced latency of H264 software decoding (improves Live TV playback)
- Fixed chroma handling of the YCgCo to RGB conversion
- Fixed timestamp handling of MPEG2 (regression introduced in 0.51)

LAV Audio
- Re-Mix audio as a fallback when the audio chain refuses a new channel configuration
- Fixed an error that caused 16-bit FLAC to show as 24-bit on the status panel

0.51.1 - 2012/07/10
LAV Video
- Improved compatibility between DXVA and certain DVB players

0.51.0 - 2012/07/09
LAV Splitter
- Increased IO responsiveness on high-latency network connections
- Improved timestamp handling for MPEG-PS (.mpg/.vob/.evo)
- Improved support for H264 streams in SSIF MPEG-TS files
- Added an option to control the priority of audio streams for the hearing/visually impaired
- Added new flags to the advanced subtitle selection
  - "h" for hearing impaired
  - "n" for normal streams (no flags)
  - "!" NOT operator for inverting the meaning of the flags

LAV Video
- Improved DXVA2 Native to software fallback in some situations
- Support for YCgCo to RGB conversion
- Added a new smart Stream Aspect Ratio mode
  - Will only use Stream AR when the container does not provide a realiable AR

LAV Audio
- Improved decoding performance of MP4 ALS and a few other formats
- Fixed playback of COOK with the MPC-HC RM Splitter
- Auto A/V Sync is now automatically disabled on pure-audio files to avoid potential conflicts
- Audio Down-Mixing support

0.50.5 - 2012/05/12
LAV Video
- Fixed a crash in DXVA2-Native decoding (introduced in 0.50.4)

0.50.4 - 2012/05/12
LAV Video
- Fixed seeking with QuickSync running in madVR Exclusive Mode

0.50.3 - 2012/05/11
LAV Splitter
- Fixed playback of raw PCM in AVI streams
- Fixed a rare misdetection of MPEG-2 as VC-1

LAV Video
- QuickSync: Fixed playback of some H.264 streams that would run out of sync on newer drivers
- Fixed a memory leak when playing H.264 RGB (and some other formats)
- Improved behaviour for H.264 and MPEG-2 on Live TV channel changes

LAV Audio
- Added support for Speex (via libspeex)
- Improved support for AMR-NB/WB (using OpenCore decoder)

0.50.2 - 2012/04/26
LAV Splitter
- Improved support for Playback Rates other then 1.0x
- Improved demuxing performance by implementing a custom Sample Allocator to avoid one extra memory copy

LAV Video
- Fixed a rare crash when using YV12 output on non-mod16 video
- Fixed excessive memory consumption with Haali Splitter and DXVA2-CB
- Fixed a deadlock on dynamic format changes with DXVA2 Native
- Added support for YV24 output

LAV Audio
- Improved support for Playback Rates other then 1.0x
- Support for ALAC and ALS with the MPC-HC MP4 splitter
- Improved A/V Sync on dynamic format changes
- Improved Auto A/V Sync Correction algorithm (lower threshold, faster reaction)
- Fixed audio pitch when bitstreaming 44.1KHz AC3/DTS

0.50.1 - 2012/03/29
LAV Splitter
- Fixed Stream Detection on some Blu-rays with short Logo clips before the main movie
- Fixed a crash when processing invalid/broken PGS subtitles

LAV Video
- Fixed a crash on dynamic format changes (stream change, Blu-ray clip change)

0.50 - 2012/03/27
LAV Splitter
- Improved support for H264 Elementary Streams
- Fixed a regression with seeking in MPEG-TS files recorded by some HD-PVR devices

LAV Video
- New Worker Thread design for Decoding/Deinterlacing
  - WMV9+YADIF is up to 40% faster
- Improved DXVA2 for MPEG-2 interlaced
- Improved H264 DXVA2 on AMD with certain streams
- Improved CUVID support for 4K streams on supported hardware (GT520, GTX680, other VP5 hardware)

LAV Audio
- Added support for RealAudio Lossless (RALF)

0.49 - 2012/03/10
LAV Splitter
- Improved MKV demuxing performance from slow sources (network streaming, etc)
- Improved stream detection on Blu-rays
- Improved support for RealAudio (COOK, SIPR, etc) in MKV
- Support for streaming from HTTP URLs

LAV Audio
- Improved support for DTS files with Little-Endian or 14B encodings

LAV Video
- New VC1/WMV3 decoder based on the Microsoft DMO Decoder (new default)
- Updated Intel QuickSync decoder (0.29, r44)
- Fixed decoding of some MBAFF H264 streams with DXVA2
- Improved Stream Aspect Ratio logic in the CUVID decoder for H264 streams
- Fixed Deinterlacing when DXVA2 Native is active in certain situations

0.48 - 2012/02/24
LAV Splitter
- Improved Video/Audio stream detection in some MPEG-TS files

LAV Video
- Fixed a potential crash with native DXVA2 when the software fallback was used

0.47 - 2012/02/20
LAV Audio
- Fixed seeking in COOK audio with the MPC-HC RealMedia splitter

LAV Video
- New DXVA2 "native" decoder (see release notes)
- Updated Intel QuickSync decoder and tweaked configuration (0.28, r41)
- Overall performance improvements
- Multi-threaded decoding for Fraps
- Fixed a regression that resulted in only single-threaded playback on certain H264 files
- Fixed a crash in the CUVID decoder introduced in 0.46 under certain circumstances

0.46 - 2012/02/12
LAV Splitter
- Experimental support for streaming protocols (RTSP, RTP, MMS)
- Support for IBufferInfo (Buffer Status in MPC-HC "Statistics" pane)
- Added a memory limit to avoid too high memory use from the frame queues
- Fixed playback of files with Subtitles in WMP/WMC in some cases

LAV Audio
- Improved playback of files with bad audio frame interleaving
- Improved support of COOK, ATRAC and SIPR (RealAudio codecs)

LAV Video
- Updated and improved Intel QuickSync decoder (0.26, r38)
- Fixed DXVA2 software fallback on some lossless H264 clips
- Improved Fraps decoding with EVR
- Improved playback of MPEG4 in MP4
- Multi-threaded decoding for Lagarith
- Fixed playback of Theora with the MPC-HC Ogg Splitter
- Dithering Enhancements:
  - New "Random Dithering" option (new default)
  - Improved "Ordered Dithering" in the RGB converter
- Support for decoding v210/v410 raw formats
- Support for Snow and FFV1

0.45 - 2012/01/28
LAV Splitter
- Improved playback of concatenated H.264 MOV/MP4 files
- Adjusted FLAC MediaType to avoid ReClock stealing the connection
- Improved playback of MPEG-TS with timestamp discontinuities

LAV Audio
- Fixed playback of very short PCM samples
- Improved COOK decoding without LAV Splitter

LAV Video
- New DXVA2 "copy back" decoder (see release notes)
- Updated Intel QuickSync decoder (r29)
- Multi-threaded decoding for RV30/40, UtVideo and DNxHD
- Support for the "FCC" color matrix
- Improved Dirac support
- CUVID support for MPEG-4 ASP (experimental)
- Support for Intel Indeo 4, MS Video 1, 8BPS, LOCO, ZMBV, VCR1, AASC

0.44 - 2012/01/07
LAV Splitter
- Fixed a seeking regression in the mkv demuxer introduced in 0.43
- Fixed a bug that caused stream descriptions to vanish after the file finished playing
- Improved playback of WMVA video with commercial decoders
- Added support for the new OpenType MIME type produced by mkvtoolnix > 5.2.0

LAV Audio
- Fixed LATM AAC playback with some source filters

LAV Video
- Added Intel QuickSync hardware decoder
- Added support for YADIF with hardware decoding
- Added support for Dirac decoding
- Added support for DNxHD decoding
- Added support for v210/v410 output
- Improved dynamic reconnection with post-processing filters
- Fixed a seeking related corruption issue with MPEG4-ASP

0.43 - 2011/12/21
LAV Splitter
- Improved MKV seeking and demuxing performance
- Improved buffering for smoother playback (especially at start/after seeks)
- Fixed a few audio media type issues
- Fixed a minor resource handle leak

LAV Audio
- Updated to new ffmpeg audio decoding API
- Disabled Float Audio output on Windows XP by default

LAV Video
- Fixed handling of soft-telecined MPEG2/H264 broadcasts in CUVID mode
- Improved support for 4:2:2 10-bit streams
- Fixed a crash related to unaligned memory buffers on Windows  XP
- Added support for decoding AMV streams

0.42 - 2011/11/30
LAV Splitter
- Fixed a timestamping bug in the new MKV demuxer
- Further enhancements to explorer thumbnail generation

0.41 - 2011/11/29
LAV Splitter
- New MKV Demuxer (see release notes for details)
- Fixed a bug with the Vorbis Media Type
- Disabled Subtitles when generating Thumbnails in Explorer

LAV Video
- Fixed a overflow in 10 -> 8 bit dithering and NV12 output

0.40 - 2011/11/21
LAV Splitter
- Improved demuxing of raw PCM streams
- Fixed VC-1 in MP4 with the MS WMVideo Decoder
- Improved playback of files with TrueHD audio streams
- Added support for a requested stop time from the player
- Improved playback of Blu-ray rips created by EasyBD
- Added support for RGB24 raw video in AVI

LAV Audio
- Improved decoding of formats with extremely large audio frames

LAV Video
- Added YADIF software deinterlacing
- Rewritten Interlaced options
  - Added new "Aggressive" deinterlacing mode
  - Moved many interlaced related options to global level
- Fixed an issue with stream compatibility detection in the CUVID decoder, causing a software fallback when not required

0.39 - 2011/11/07
LAV Splitter
- Fixed a bug that caused MPEG-2 and VC-1 parsers to produce wrong timestamps after a seek
- Fixed playback of raw .h264 files

LAV Video
- NV12 is now the preferred YUV 4:2:0 output format
- Fixed handling of the "As Input" RGB output setting
- Improved VP6 cropping
- Don't report completely progressive movies as interlaced to the renderer
- Fixed playback of some broken MPEG-2 MKV muxes
- RGB will now by default be offered as Bottom-Up instead of Top-Down for improved compatibility

0.38 - 2011/11/01
LAV Splitter
- New subtitle selection options (see release notes or readme)
- Improved handling of languages with more then one ISO 639-2 code (f.ex. German, French, etc)
- Improved seeking to the start of the file
- Added support for VobSubs in MP4
- Added support for MKV nested chapters
- Improved playback of RV40 in MKV
- Improved support of H264 in WTV

LAV Audio
- Fixed a crash with raw audio and SPDIF processing
- Improved support for COOK
- Improved DTS-in-WAV detection

LAV Video
- Fixed a issue that caused MPC-HCs EVR-CP to produce wrong colors when using CUVID decoding
- Support Multi-Threading and CUVID decoding for MPEG-1
- Improve decoder flushing
- Fixed a potential freeze on load and dynamic type changes
- Fixed a freeze on seeking with certain VP8 files
- Added support for UtVideo
- Added support for H264 4:2:2

0.37 - 2011/10/06
LAV Splitter
- Improved handling of failures on the output pins
- Improved VC-1 in EVO timestamps

LAV Audio
- Added support for dynamic channel count changes in AAC
- Implemented support for sample format conversions
- Implemented Audio Delay options
- Disabled the WMA codecs by default
- Improved Bitstreaming data flow

LAV Video
- Fixed cropping of VP6 video
- New SSE2 YUV420 -> YUV422 converter
- Performance enhancements in the CUVID decoder on some systems
- Fixed playback with the XP Overlay Mixer
- Fixed a crash when decoding RGB video (Fraps, etc)

0.36 - 2011/09/29
LAV Splitter
- Improved support for ADTS AAC
- Fixed MPEG-2 timestamps in VOB
- Fixed MPEG-2 frame rate reporting for telecined/interlaced

LAV Video
- Integrated NVIDIA CUVID Hardware decoder
- Performance enhancements in 10bit decoding
- Support for Flash Screen Video (FSV1)
- Support for Apple ProRes
- Improved MPEG-2 playback
- Improved A/V sync with VC-1 and MPEG4-ASP

0.35 - 2011/09/07
LAV Splitter
- Fixed a crash in IAMStreamSelect::Info handling with certain applications
- Improve duration calculation for MPEG files

LAV Audio
- Fix playback of DTS streams which change the channel mid-playback

LAV Video
- Fixed a crash with 10-bit decoding and benchmarking tools
- Fixed a H264 NALU parsing issue with certain streams

0.34 - 2011/09/04
LAV Splitter
- Improve playback of VC-1 in EVO
- Support for SSA subtitles in AVI
- Support for H264 in VFW mode in MKV

LAV Video
- New optimized pixel format converters (faster and more accurate)
- New YUV->RGB converter
- Support for PNG video

0.33 - 2011/08/22
LAV Splitter
- Improved compatibility with the MS WMVideo decoder
- Fixed the mediatype for raw PCM streams

LAV Audio
- Added support for Vorbis streams demuxed by Haali and MPC-HC Splitters

LAV Video
- VC-1 decoding is now disabled by default
- Fixed behaviour of the Stream AR option
- The maximum number of decoding threads is now 16
- Free decoding buffers when the input pin disconnects to avoid big memory leaks

0.32 - 2011/08/19
General
- The installer will now add shortcuts to the start menu to open the filter configurations
- The ffmpeg DLLs have been renamed to carry a "lav" suffix to avoid collisions with other components

LAV Splitter
- Improved detection of AAC LATM tracks (previously mis-detected as mp1/mp2)
- Fixed playback of badly interleaved AVI files
- Smarter default stream selection for RealMedia files
- Improved stream language handling for Blu-rays
- Fixed a crash issue with the Forced Subtitle pin on Blu-rays

LAV Audio
- DTS decoding failures are now handled more gracefully
- Fixed Media Types for Stereo 44.1kHz Audio

LAV Video
- First official version - refer to release notes for details

0.31 - 2011/07/28
LAV Splitter
- Improved audio codec selection priorities
- Improved VC-1 playback when using the madVR internal decoder
- Improved playback of MPEG-TS files with a timestamp wrap right at the beginning of a file
- Reduced amount of data required for file probing, resulting in faster startup time
- Fixed demuxing/timestamping of RealMedia files

LAV Audio
- Fixed a bug in the DTS parser which caused occasional hiccups on DTS-HD content
- Added the ability to detect DTS-in-WAV

0.30 - 2011/07/15
LAV Splitter
- Improved VC-1 playback with ffdshow DXVA
- Added support for outputting MPEG-4 Timed Text subtitles (only pure text supported)
- Better support for MLP audio
- I/O performance enhancements
- Added an option to toggle how LAV Splitter handles audio stream switching
- Added a hard-limit on queue sizes to avoid excessive memory usage when transcoding
- Added an experimental interface for the Player to control graph rebuilding

LAV Audio
- Further improvements to the DTS-HD parsing
- Better support for MLP audio
- Added more E-AC3 subtypes

0.29 - 2011/06/09
LAV Splitter
- The language code is now always shown in the stream changer (as a hint to easily know what to put into the preferred languages fields)
- Enabled ITrackInfo
- Improved H264 in MPEG-TS playback (including an option to try to fix broken HD-PVR recordings)
- Added a programmatic configuration interface for players to configure LAV Splitter

LAV Audio
- Added support for decoding encrypted DVD audio
- Fix decoding of some DTS-HD streams with the ArcSoft decoder
- Added a programmatic configuration interface for players to configure LAV Audio

0.28 - 2011/05/27
LAV Splitter
- Improved PGS filtering, forced subtitles should be cleared off the screen properly more often.
- Improved playback of H264 in MPEG-TS with certain files (mostly from camcorders, but some Blu-rays as well)
- Fixed 16-bit LPCM on DVDs
- Fixed the Media Types for uncompressed video

LAV Audio
- Added the ability to decode DTS Express when using the ArcSoft DTS Decoder
- Fixed missing audio after seeks with Ogg Vorbis

0.27 - 2011/05/24
General
- Added debug versions which generate log files on your desktop

LAV Splitter
- Fixed a memory leak when switching streams
- Increased probe buffer size (which results in files to be properly detected in more cases)
- Fixed playback of MPEG-TS files with a odd program configuration

LAV Audio
- Improvements to the DTS decoder interface
  - Support for 1.1.0.0
  - Try to reverse any channel upmixing done by the decoder, outputting the audio as close to the original source as possible.
- New Channel Mapping functionality
  - Output only "standard" channel layouts (Mono, Stereo, 5.1, 6.1, 7.1), filling non-existent channels with silence. Required by some HDMI receivers with "odd" source layouts. (default)
  - Convert Mono to Stereo (simply double the audio channel)
  - Convert 6.1 to 7.1 (Back Center gets doubled into both back channels)

0.26 - 2011/05/15
General
- The VC2010 runtime is no longer required to be installed

LAV Splitter
- Further VC-1 in MKV improvements
- Added a separate "mpegvideo" (m2v files) option to the Format section
- Added a flag for secondary audio streams
- Changed the default DTS media type (better compatibility)

LAV Audio
- Added the ability to use the ArcSoft DTS decoder directly through LAV Audio
- Added an automatic algorithm to keep A/V sync stable
- Improved Bitstreaming with splitters other then LAV Splitter
- Improved timestamp generation when bitstreaming
- Fixed LPCM 24-bit Media Types

0.25 - 2011/05/06
LAV Splitter
- Added the ability to filter Blu-ray PGS subtitles, so only frames flagged as "forced" are delivered
  - Either through a new "Forced Subtitles" stream (default)
  - Or, filtering for every PGS stream (configurable)
- Improved support for H264 in AVI
- Improved timings for TrueHD in MKV
- m2ts files directly openend inside a Blu-ray structure should now properly display stream languages
- Alot of fixes and enhancements for format compatibility (especially MPEG-TS)
- Support using the ArcSoft HD Audio Decoder for E-AC3

LAV Audio
- Audio bitstreaming (pass-through) for HDMI and S/PDIF
  - Support for AC3, E-AC3, TrueHD, DTS and DTS-HD
- Use the float decoders for mp1/mp2
- Added official support for WMAv1, WMAv2 and WMA Pro
- Fixed an issue that caused sync issues with FLAC audio, and FLAC is once again enabled by default

0.24 - 2011/04/25
General
- Big ffmpeg update! Libraries have been renamed (version increase)

LAV Splitter
- Obviously wrong frame rates will no longer be reported to the decoder
- Improved mpeg2 playback
- Improved dynamic media type changes
- Fix the first few frames of ASS/SSA subtitles in Matroska
- Fix an issue with the display of some codec names
- Add proper subtypes for little-endian PCM
- Fix subtypes for QT PCM

LAV Audio
- Support processing of 64-bit double output from the decoders
- PCM data will be buffered before its send to the renderer/post processor

0.23 - 2011/04/21
General
- There is now an installer available in addition to the trusted old .zip files!

LAV Splitter
- Added support for using the "File Source (Async)" (and others) together with LAV Splitter
  - This is the new default mode for improved compatibility!
  - Check release notes for additional informations.
- Added configuration which input formats will be demuxed
- Improved VC-1 in MKV playback

LAV Audio
- Fixed playback of lossless formats with huge sample sizes
- Improved A/V sync with TrueHD (and possibly others)
- FLAC decoding is now disabled by default, because the decoder is not 100% working

0.22 - 2011/04/11
LAV Splitter
- Added support for MKV embedded fonts
- Improved VC-1 and H264 parsing
- Fixed choppy XVID playback in MKV
- Fixed a seeking issues that caused incompatibilitys with certain decoders (eg. a crash in ffdshow libmpeg2)
- No longer report incomplete lists of keyframes via IKeyFrameInfo, as it would break seeking in certain players.
- Allow opening all .mpls files if the user directly specifys to open one, even if it contains loops or duplicate titles.
- Improved playback of MPEG-TS with multiple programs
- Added new debugging option (Generate missing timestamps)

0.21 - 2011/04/07
LAV Splitter
- Improve MPEG-TS program handling in some special circumstances
- Filter out misdetected audio streams (unsupported DTS Express on BluRays)
- Increase the priority of DTS-HD over normal DTS
- Use the official AVI MEDIASUBTYPE instead of a custom one
- Added options to completly disable stream parsing
- Added a new VC-1 parser which will take over when VC-1 timestamp adjustments are turned off

0.20 - 2011/04/05
LAV Splitter
- Added first BluRay support (see Release Notes or README for more details)

LAV Audio
- Removed static jitter check which caused corruptions in some audio streams
- Improved error resilience - broken streams should now play in many more cases

0.19 - 2011/03/19
General
- Version Information has been added to the filter .ax files, as well as shown on the property pages.

LAV Splitter
- Redesigned stream name generations
  - Codec profiles are now shown (if known - supported are H264, VC1, MPEG2 and DTS)
  - Audio bit-depth is no longer shown for lossy codecs, as it doesn't apply there
  - Improved logic that parses the stream flags
  - Names for the subtitle codecs have been added
  - If the language is "Undetermined", it'll no longer be shown
- Size of the packet queue has been increased (solves subtitle issues, as well as improves playback stability)
- Redesigned the way the splitter registers for formats in the registry for better compatibility
- Changed the stream change handling for better compatibility with certain players (Media Portal, and others)
- Improved handling of unknown streams (no codec information present)
- Added a new option that controls if substreams should be exposed in the stream selector (Only AC3 in TrueHD supported)

LAV Audio
- Added a new configuration panel which allows to configure which formats the decoder should handle

0.18 - 2011/03/09
LAV Splitter
- Improved compatibility when decoding VC-1 with the ArcSoft and Cyberlink Decoders
- Increased the splitters merit
- Fixed an issue that caused the splitter to deadlock when changing streams with madVR

LAV Audio Decoder
- Fixed a bug that caused sample durations to be calculated wrong, causing playback glitches

0.17 - 2011/02/27
LAV Splitter
- Fixed seeking before starting playback

0.16 - 2011/02/27
LAV Audio Decoder
- Fixed missing audio after seeks

0.15 - 2011/02/27
LAV Splitter
- Fixed automatic selection of forced subtitle stream if the "Only Forced Subs" mode is active.
- Fixed a bug in file handling that caused file sizes above 4GB to overflow, causing invalid durations to be reported in some files.
- Improved performance on file opening

LAV Audio Decoder
- Enabled the ffmpeg codec parsers, which should improve compatibility with other DirectShow splitters.
- Added a audio channel activity display to the status property page (for debugging channel assignments)

0.14 - 2011/02/10
General
- The project and filters have been renamed slightly for consistency

LAV Splitter
- The settings have been moved to a different place in the Registry. You will need to re-apply them.
- Improved MPEG-TS duration calculations.
- The settings will now always be properly saved and loaded.
- Disabled the limit of 20 Streams per file.
- Fixed two separate issues that caused files to not start playing.

LAV Audio Decoder
- Property Page for Configuration and Status has been added
- Dynamic Range Compression is now off by default, but configurable.
- Media Type creation has been improved, fixes filter connection issues.
- Processing of UINT8 Samples has been fixed.
- Fixed a crash with some Audio codecs.
- Fixed Channel Order for 7.1 Streams
- Increased the decoders Merit
- Added support for decoding QT PCM

0.13 - 2011/01/29
LAVFSplitter
- Added support for demuxing BluRay LPCM tracks into the MPC-HC format
- Added a new LAVFSplitter specific media type to all audio streams
LAVCAudio
- First version of LAVCAudio implemented

0.12 - 2011/01/21
- Fixed a crash issue with certain configurations and files with subtitles
- Revisited file duration logic, now tries to prefer the duration of the video stream. This fixes MPEG-TS duration issues.
- Updated ffmpeg (a lot of issues resolved)

0.11 - 2010/11/06
- Smart stream pre-selection based on language, flags and quality
- Properties page for configuration (languages, stream selection logic)
- Added support for AAC LATM (single stream)
- Changed the "No Subtitles" pin to a more "friendly" Media Type
- Fixed a crash with certain AAC tracks

0.10 - 2010/10/26
- Added more MOV/MP4 byte markers
- Added support for multichannel PCM tracks
- Added support for DVD LPCM tracks
- Added support for usign the ArcSoft HD decoder for DTS and TrueHD tracks
- Send the proper media type for TrueHD instead of trying to connect with AC-3
- Improved H264 frame rate detection
- Improved FLAC support
- Fix loading of files with unicode characters in their names
- Fixed timestamping issues that caused certain videos to play too fast
- Fixed M-JPEG media type
- Fixed corruption with MPEG-4 ASP (DivX/Xvid) when using the Xvid decoder

0.9 - 2010/09/12
- Added support for distinguishing hearing impaired subtitles in mpeg-ts streams
- Added BluRay LPCM support
- MP1/MP2 audio media type fixes
- Honor the original FourCC of the file in media type generation
- Added support for using the Cyberlink VC-1 decoder
- Fixed an issue with some H264/AVC1 files that caused video to not play at all
- Fixed unicode in chapter names
- Fixed getting the current chapter

0.8 - 2010/08/30
- Alot of internal changes to enhance performance and maintainability
- Fixed a potential deadlock on seeking
- Fixed playing files without a video stream
- Fixed an issue that caused some players to hang on playback start
- Improved language detection

0.7 - 2010/08/23
- Further improvements to aspect ratio detection
- Restore old FPS detection
- Adjusted flushing to fix subtitle delays
- Reverted a timing change that broke TrueHD

0.6 - 2010/08/22
- Added support for E-AC3
- Fixed MPEG2 Media Types
- Added support for RealVideo in MKV
- Set proper aspect ratio in media type
- Fixed memory leaks in packet handling code
- Unicode support for stream names
- Threading changes for more fluid playback at startup
- Changed Flushing behaviour that solves a conflict with the MS DTV-DVD Decoder
- Better support for Vorbis audio
- Registers for the OGG Container Format

0.5 - 2010/08/18
- Fixed duration of MPEG-TS files
- Added support for DVB subtitles
- Fixed switching of Audio and Subtitle Streams
- Added a "No Subtitles" Stream

0.4 - 2010/08/16
- Improved SSA Subtitle support
- Fixed freeze-on-stop issue

0.3 - 2010/08/15
- Added Chapter support
- Improved stream descriptions
- 64-bit support

0.2 - 2010/08/14
- Fixed overflow in timestamp calculation causing AVIs to play too fast

0.1 - 2010/08/14
- Initial Release


================================================
FILE: COPYING
================================================
                    GNU GENERAL PUBLIC LICENSE
                       Version 2, June 1991

 Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

                            Preamble

  The licenses for most software are designed to take away your
freedom to share and change it.  By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users.  This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it.  (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.)  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.

  To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have.  You must make sure that they, too, receive or can get the
source code.  And you must show them these terms so they know their
rights.

  We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.

  Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software.  If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.

  Finally, any free program is threatened constantly by software
patents.  We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary.  To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.

  The precise terms and conditions for copying, distribution and
modification follow.

                    GNU GENERAL PUBLIC LICENSE
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License.  The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language.  (Hereinafter, translation is included without limitation in
the term "modification".)  Each licensee is addressed as "you".

Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope.  The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.

  1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.

You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.

  2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:

    a) You must cause the modified files to carry prominent notices
    stating that you changed the files and the date of any change.

    b) You must cause any work that you distribute or publish, that in
    whole or in part contains or is derived from the Program or any
    part thereof, to be licensed as a whole at no charge to all third
    parties under the terms of this License.

    c) If the modified program normally reads commands interactively
    when run, you must cause it, when started running for such
    interactive use in the most ordinary way, to print or display an
    announcement including an appropriate copyright notice and a
    notice that there is no warranty (or else, saying that you provide
    a warranty) and that users may redistribute the program under
    these conditions, and telling the user how to view a copy of this
    License.  (Exception: if the Program itself is interactive but
    does not normally print such an announcement, your work based on
    the Program is not required to print an announcement.)

These requirements apply to the modified work as a whole.  If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works.  But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.

In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.

  3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:

    a) Accompany it with the complete corresponding machine-readable
    source code, which must be distributed under the terms of Sections
    1 and 2 above on a medium customarily used for software interchange; or,

    b) Accompany it with a written offer, valid for at least three
    years, to give any third party, for a charge no more than your
    cost of physically performing source distribution, a complete
    machine-readable copy of the corresponding source code, to be
    distributed under the terms of Sections 1 and 2 above on a medium
    customarily used for software interchange; or,

    c) Accompany it with the information you received as to the offer
    to distribute corresponding source code.  (This alternative is
    allowed only for noncommercial distribution and only if you
    received the program in object code or executable form with such
    an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for
making modifications to it.  For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable.  However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.

If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.

  4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License.  Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.

  5. You are not required to accept this License, since you have not
signed it.  However, nothing else grants you permission to modify or
distribute the Program or its derivative works.  These actions are
prohibited by law if you do not accept this License.  Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.

  6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions.  You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.

  7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all.  For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.

If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.

It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices.  Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.

This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.

  8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded.  In such case, this License incorporates
the limitation as if written in the body of this License.

  9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

Each version is given a distinguishing version number.  If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation.  If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.

  10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission.  For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this.  Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.

                            NO WARRANTY

  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.

  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.

                     END OF TERMS AND CONDITIONS

            How to Apply These Terms to Your New Programs

  If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.

  To do so, attach the following notices to the program.  It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

    <one line to give the program's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    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 Street, Fifth Floor, Boston, MA 02110-1301 USA.

Also add information on how to contact you by electronic and paper mail.

If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:

    Gnomovision version 69, Copyright (C) year name of author
    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show c' for details.

The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License.  Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.

You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary.  Here is a sample; alter the names:

  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
  `Gnomovision' (which makes passes at compilers) written by James Hacker.

  <signature of Ty Coon>, 1 April 1989
  Ty Coon, President of Vice

This General Public License does not permit incorporating your program into
proprietary programs.  If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library.  If this is what you want to do, use the GNU Lesser General
Public License instead of this License.


================================================
FILE: LAVFilters.iss
================================================
; LAV Filters Inno Setup script

#include <idp.iss>

; Include version info
#define ISPP_INCLUDED
#include "common\includes\version.h"

#if LAV_VERSION_BUILD > 0
    #define LAV_VERSION_STRING str(LAV_VERSION_MAJOR) + "." + str(LAV_VERSION_MINOR) + "." + str(LAV_VERSION_REVISION) + "-" + str(LAV_VERSION_BUILD)
#else
    #if LAV_VERSION_REVISION > 0
        #define LAV_VERSION_STRING str(LAV_VERSION_MAJOR) + "." + str(LAV_VERSION_MINOR) + "." + str(LAV_VERSION_REVISION)
    #else
        #define LAV_VERSION_STRING str(LAV_VERSION_MAJOR) + "." + str(LAV_VERSION_MINOR)
    #endif
#endif

[Setup]
AllowCancelDuringInstall  = no
AllowNoIcons              = yes
AllowUNCPath              = no
AppId                     = lavfilters
AppName                   = LAV Filters
AppPublisher              = Hendrik Leppkes
AppPublisherURL           = https://1f0.de/
AppVerName                = LAV Filters {#=LAV_VERSION_STRING}
AppVersion                = {#=LAV_VERSION_STRING}
VersionInfoVersion        = {#=LAV_VERSION_MAJOR}.{#=LAV_VERSION_MINOR}.{#=LAV_VERSION_REVISION}.{#=LAV_VERSION_BUILD}
VersionInfoCompany        = 1f0.de
VersionInfoCopyright      = GPLv2
OutputBaseFilename        = LAVFilters-{#=LAV_VERSION_STRING}
OutputDir                 = .
Compression               = lzma2/ultra64
SolidCompression          = yes
MinVersion                = 0,6.0
PrivilegesRequired        = admin
CreateAppDir              = yes
DefaultDirName            = {pf}\LAV Filters
DefaultGroupName          = LAV Filters
DisableStartupPrompt      = yes
Uninstallable             = yes
DisableDirPage            = auto
DisableProgramGroupPage   = auto
UsePreviousTasks          = yes
#ifexist "..\LAVSignInfo.txt"
SignTool                  = LAVSignTool
SignedUninstaller         = yes
#endif

[Messages]
WelcomeLabel1=[name/ver]
WelcomeLabel2=This will install [name] on your computer.%n%nIt is recommended that you close all other applications before continuing.
WinVersionTooLowError=This software only works on Windows XP SP3 and newer.

[Types]
Name: default; Description: Default
Name: full;    Description: Full
Name: custom;  Description: Custom; Flags: iscustom

[Components]
Name: lavsplitter32; Description: LAV Splitter (x86); Types: default full custom;
Name: lavsplitter64; Description: LAV Splitter (x64); Types: default full custom; Check: IsWin64;
Name: lavaudio32;    Description: LAV Audio (x86);    Types: default full custom;
Name: lavaudio64;    Description: LAV Audio (x64);    Types: default full custom; Check: IsWin64;
Name: lavvideo32;    Description: LAV Video (x86);    Types: default full custom;
Name: lavvideo64;    Description: LAV Video (x64);    Types: default full custom; Check: IsWin64;
Name: mvc3d;         Description: H.264 MVC 3D Decoder (extra download); Types: full; ExtraDiskSpaceRequired: 41242624;

[Tasks]
Name: icons;          Description: "Create Start Menu Shortcuts";
Name: reset_settings; Description: "Reset Settings"; Flags: checkedonce unchecked; Check: SettingsExistCheck()

[Files]
Source: bin_Win32\avcodec-lav-62.dll;  DestDir: {app}\x86; Flags: 32bit ignoreversion restartreplace uninsrestartdelete; Components: lavsplitter32 lavaudio32 lavvideo32
Source: bin_Win32\avfilter-lav-11.dll;  DestDir: {app}\x86; Flags: 32bit ignoreversion restartreplace uninsrestartdelete; Components: lavvideo32
Source: bin_Win32\avformat-lav-62.dll; DestDir: {app}\x86; Flags: 32bit ignoreversion restartreplace uninsrestartdelete; Components: lavsplitter32 lavaudio32
Source: bin_Win32\avutil-lav-60.dll;   DestDir: {app}\x86; Flags: 32bit ignoreversion restartreplace uninsrestartdelete; Components: lavsplitter32 lavaudio32 lavvideo32
Source: bin_Win32\swresample-lav-6.dll;DestDir: {app}\x86; Flags: 32bit ignoreversion restartreplace uninsrestartdelete; Components: lavsplitter32 lavaudio32 lavvideo32
Source: bin_Win32\swscale-lav-9.dll;   DestDir: {app}\x86; Flags: 32bit ignoreversion restartreplace uninsrestartdelete; Components: lavvideo32
Source: bin_Win32\libbluray.dll;       DestDir: {app}\x86; Flags: 32bit ignoreversion restartreplace uninsrestartdelete; Components: lavsplitter32
Source: bin_Win32\LAVAudio.ax;         DestDir: {app}\x86; Flags: 32bit regserver ignoreversion restartreplace uninsrestartdelete; Components: lavaudio32
Source: bin_Win32\LAVSplitter.ax;      DestDir: {app}\x86; Flags: 32bit regserver ignoreversion restartreplace uninsrestartdelete; Components: lavsplitter32
Source: bin_Win32\LAVVideo.ax;         DestDir: {app}\x86; Flags: 32bit regserver ignoreversion restartreplace uninsrestartdelete; Components: lavvideo32
Source: bin_Win32\LAVFilters.Dependencies.manifest; DestDir: {app}\x86; Flags: 32bit ignoreversion restartreplace uninsrestartdelete; Components: lavsplitter32 lavaudio32 lavvideo32
Source: bin_Win32\IntelQuickSyncDecoder.dll; DestDir: {app}\x86; Flags: 32bit ignoreversion restartreplace uninsrestartdelete; Components: lavvideo32

Source: bin_x64\avcodec-lav-62.dll;    DestDir: {app}\x64; Flags: 64bit ignoreversion restartreplace uninsrestartdelete; Components: lavsplitter64 lavaudio64 lavvideo64
Source: bin_x64\avfilter-lav-11.dll;    DestDir: {app}\x64; Flags: 64bit ignoreversion restartreplace uninsrestartdelete; Components: lavvideo64
Source: bin_x64\avformat-lav-62.dll;   DestDir: {app}\x64; Flags: 64bit ignoreversion restartreplace uninsrestartdelete; Components: lavsplitter64 lavaudio64
Source: bin_x64\avutil-lav-60.dll;     DestDir: {app}\x64; Flags: 64bit ignoreversion restartreplace uninsrestartdelete; Components: lavsplitter64 lavaudio64 lavvideo64
Source: bin_x64\swresample-lav-6.dll;  DestDir: {app}\x64; Flags: 64bit ignoreversion restartreplace uninsrestartdelete; Components: lavsplitter64 lavaudio64 lavvideo64
Source: bin_x64\swscale-lav-9.dll;     DestDir: {app}\x64; Flags: 64bit ignoreversion restartreplace uninsrestartdelete; Components: lavvideo64
Source: bin_x64\libbluray.dll;         DestDir: {app}\x64; Flags: 64bit ignoreversion restartreplace uninsrestartdelete; Components: lavsplitter64
Source: bin_x64\LAVAudio.ax;           DestDir: {app}\x64; Flags: 64bit regserver ignoreversion restartreplace uninsrestartdelete; Components: lavaudio64
Source: bin_x64\LAVSplitter.ax;        DestDir: {app}\x64; Flags: 64bit regserver ignoreversion restartreplace uninsrestartdelete; Components: lavsplitter64
Source: bin_x64\LAVVideo.ax;           DestDir: {app}\x64; Flags: 64bit regserver ignoreversion restartreplace uninsrestartdelete; Components: lavvideo64
Source: bin_x64\LAVFilters.Dependencies.manifest; DestDir: {app}\x64; Flags: 64bit ignoreversion restartreplace uninsrestartdelete; Components: lavsplitter64 lavaudio64 lavvideo64
Source: bin_x64\IntelQuickSyncDecoder.dll; DestDir: {app}\x64; Flags: 64bit ignoreversion restartreplace uninsrestartdelete; Components: lavvideo64

Source: COPYING;                       DestDir: {app};     Flags: ignoreversion restartreplace uninsrestartdelete
Source: README.md;                     DestDir: {app};     Flags: ignoreversion restartreplace uninsrestartdelete
Source: CHANGELOG.txt;                 DestDir: {app};     Flags: ignoreversion restartreplace uninsrestartdelete

Source: thirdparty\contrib\7za.exe;    DestDir: {tmp};     Flags: dontcopy

[UninstallDelete]
Type: files; Name: {app}\x86\libmfxsw32.dll
Type: files; Name: {app}\x64\libmfxsw64.dll

[Icons]
Name: {group}\LAV Splitter Configuration;        Filename: rundll32.exe; Parameters: """{app}\x86\LAVSplitter.ax"",OpenConfiguration"; WorkingDir: {app}\x86; IconFilename: {app}\x86\LAVSplitter.ax; IconIndex: 0; Tasks: icons; Components: lavsplitter32
Name: {group}\LAV Splitter Configuration;        Filename: rundll32.exe; Parameters: """{app}\x64\LAVSplitter.ax"",OpenConfiguration"; WorkingDir: {app}\x64; IconFilename: {app}\x64\LAVSplitter.ax; IconIndex: 0; Tasks: icons; Components: lavsplitter64 AND NOT lavsplitter32
Name: {group}\LAV Audio Configuration;           Filename: rundll32.exe; Parameters: """{app}\x86\LAVAudio.ax"",OpenConfiguration"; WorkingDir: {app}\x86; IconFilename: {app}\x86\LAVAudio.ax; IconIndex: 0; Tasks: icons; Components: lavaudio32
Name: {group}\LAV Audio Configuration;           Filename: rundll32.exe; Parameters: """{app}\x64\LAVAudio.ax"",OpenConfiguration"; WorkingDir: {app}\x64; IconFilename: {app}\x64\LAVAudio.ax; IconIndex: 0; Tasks: icons; Components: lavaudio64 AND NOT lavaudio32
Name: {group}\LAV Video Configuration;           Filename: rundll32.exe; Parameters: """{app}\x86\LAVVideo.ax"",OpenConfiguration"; WorkingDir: {app}\x86; IconFilename: {app}\x86\LAVVideo.ax; IconIndex: 0; Tasks: icons; Components: lavvideo32
Name: {group}\LAV Video Configuration;           Filename: rundll32.exe; Parameters: """{app}\x64\LAVVideo.ax"",OpenConfiguration"; WorkingDir: {app}\x64; IconFilename: {app}\x64\LAVVideo.ax; IconIndex: 0; Tasks: icons; Components: lavvideo64 AND NOT lavvideo32
Name: {group}\Visit LAV Filters Home Page;       Filename: "https://1f0.de/"; Tasks: icons
Name: {group}\Visit LAV Filters on Doom9;        Filename: "https://forum.doom9.org/showthread.php?t=156191"; Tasks: icons
Name: {group}\Uninstall LAV Filters;             Filename: {uninstallexe}; Tasks: icons

[Registry]
Root: HKCU; Subkey: Software\LAV;                  Flags: uninsdeletekeyifempty
Root: HKCU; Subkey: Software\LAV\Audio;            Flags: uninsdeletekey; Components: lavaudio32 lavaudio64
Root: HKCU; Subkey: Software\LAV\Splitter;         Flags: uninsdeletekey; Components: lavsplitter32 lavsplitter64
Root: HKCU; Subkey: Software\LAV\Splitter\Formats; Flags: uninsdeletekey; Components: lavsplitter32 lavsplitter64
Root: HKCU; Subkey: Software\LAV\Video;            Flags: uninsdeletekey; Components: lavvideo32 lavvideo64
Root: HKCU; Subkey: Software\LAV\Video\Formats;    Flags: uninsdeletekey; Components: lavvideo32 lavvideo64
Root: HKCU; Subkey: Software\LAV\Video\Output;     Flags: uninsdeletekey; Components: lavvideo32 lavvideo64

[Run]
Description: "Open LAV Splitter Configuration"; Filename: rundll32.exe; Parameters: """{app}\x86\LAVSplitter.ax"",OpenConfiguration"; WorkingDir: {app}\x86; Components: lavsplitter32; Flags: postinstall nowait unchecked
Description: "Open LAV Splitter Configuration"; Filename: rundll32.exe; Parameters: """{app}\x64\LAVSplitter.ax"",OpenConfiguration"; WorkingDir: {app}\x64; Components: lavsplitter64 AND NOT lavsplitter32; Flags: postinstall nowait unchecked
Description: "Open LAV Audio Configuration";    Filename: rundll32.exe; Parameters: """{app}\x86\LAVAudio.ax"",OpenConfiguration"; WorkingDir: {app}\x86; Components: lavaudio32; Flags: postinstall nowait unchecked
Description: "Open LAV Audio Configuration";    Filename: rundll32.exe; Parameters: """{app}\x64\LAVAudio.ax"",OpenConfiguration"; WorkingDir: {app}\x64; Components: lavaudio64 AND NOT lavaudio32; Flags: postinstall nowait unchecked
Description: "Open LAV Video Configuration";    Filename: rundll32.exe; Parameters: """{app}\x86\LAVVideo.ax"",OpenConfiguration"; WorkingDir: {app}\x86; Components: lavvideo32; Flags: postinstall nowait unchecked
Description: "Open LAV Video Configuration";    Filename: rundll32.exe; Parameters: """{app}\x64\LAVVideo.ax"",OpenConfiguration"; WorkingDir: {app}\x64; Components: lavvideo64 AND NOT lavvideo32; Flags: postinstall nowait unchecked

[Code]
type
  Format = record
             id: String;
             name: String;
             default: Boolean;
             subtype: String;
             asyncSource: Boolean;
             protocol: Boolean;
             extensions: Array of String;
             chkbytes: Array of String;
           end;

const
  NumFormatsMinusOne = 22;
  LavGUID = '{B98D13E7-55DB-4385-A33D-09FD1BA26338}';
  StreamGUID = '{E436EB83-524F-11CE-9F53-0020AF0BA770}';
  LavSplitterFormatsReg = 'Software\LAV\Splitter\Formats';

var
  SplitterPage: TInputOptionWizardPage;
  SplitterFormats: Array [0..NumFormatsMinusOne] of Format;

function IsProcessorFeaturePresent(Feature: Integer): Boolean;
external 'IsProcessorFeaturePresent@kernel32.dll stdcall';

function Is_SSE2_Supported(): Boolean;
begin
  // PF_XMMI64_INSTRUCTIONS_AVAILABLE
  Result := IsProcessorFeaturePresent(10);
end;

function SettingsExistCheck(): Boolean;
begin
  if RegKeyExists(HKCU, 'Software\LAV') then
    Result := True
  else
    Result := False;
end;

function IsUpdate(): Boolean;
var
  sPrevPath: String;
begin
  sPrevPath := WizardForm.PrevAppDir;
  Result := (sPrevPath <> '');
end;

procedure FR(var f: Format; const id, desc: String; const default: Boolean; const extensions: Array of String);
begin
  f.id         := id;
  f.name       := desc;
  f.default    := default;
  f.extensions := extensions;
  f.subtype    := '';
  f.chkbytes   := [''];
  f.protocol   := False;
end;

procedure FP(var f: Format; const id, desc: String; const default: Boolean; const extensions: Array of String);
begin
  FR(f, id, desc, default, extensions);
  f.protocol := True;
end;

procedure FS(var f: Format; const subtype: String; const chkbytes : Array of String; UseAsync: Boolean);
begin
  f.subtype     := subtype;
  f.chkbytes    := chkbytes;
  f.asyncSource := UseAsync;
end;

procedure InitFormats();
begin
  FR(SplitterFormats[0], 'matroska', 'Matroska/WebM', True, ['mkv','mka', 'mks', 'mk3d', 'webm', '']);
  FS(SplitterFormats[0], '{1AC0BEBD-4D2B-45ad-BCEB-F2C41C5E3788}', ['0,4,,1A45DFA3', ''], True);
  FR(SplitterFormats[1], 'avi', 'AVI', True, ['avi','divx', 'vp6', 'amv', '']);
  FS(SplitterFormats[1], '{e436eb88-524f-11ce-9f53-0020af0ba770}', ['0,4,,52494646,8,4,,41564920', '0,4,,52494646,8,4,,41564958', '0,4,,52494646,8,4,,414D5620', ''], True);
  FR(SplitterFormats[2], 'mp4', 'MP4/MOV', True, ['mp4', 'mov', '3gp', '3ga', 'm4v', 'qt', '']);
  FS(SplitterFormats[2], '{08E22ADA-B715-45ed-9D20-7B87750301D4}', ['4,4,,66747970', '4,4,,6d6f6f76', '4,4,,6d646174', '4,4,,736b6970', '4,4,,75647461',
                                                                    '4,12,ffffffff00000000ffffffff,77696465000000006d646174', '4,12,ffffffff00000000ffffffff,776964650000000066726565',
                                                                    '4,12,ffffffff00000000ffffffff,6672656500000000636D6F76', '4,12,ffffffff00000000ffffffff,66726565000000006D766864',
                                                                    '4,14,ffffffff000000000000ffffffff,706E6F7400000000000050494354', ''], True);
  FR(SplitterFormats[3], 'mpegts', 'MPEG-TS', True, ['ts', 'm2ts', 'mts', 'tp', 'ssif', '']);
  FS(SplitterFormats[3], '{e06d8023-db46-11cf-b4d1-00805f6cbbea}', ['0,1,,47,188,1,,47,376,1,,47', '4,1,,47,196,1,,47,388,1,,47', '0,4,,54467263,1660,1,,47', ''], True);
  FR(SplitterFormats[4], 'mpeg', 'MPEG-PS/VOB/EVO', True, ['mpg', 'mpeg', 'vob', 'evo', '']);
  FS(SplitterFormats[4], '{e06d8022-db46-11cf-b4d1-00805f6cbbea}', ['0,5,FFFFFFFFC0,000001BA40', ''], True);
  FR(SplitterFormats[5], 'bluray', 'Blu-ray', True, ['bdmv', 'mpls', '']);
  FS(SplitterFormats[5], '{20884BC2-629F-45EA-B1C5-FA4FFA438250}', ['0,4,,494E4458', '0,4,,4D4F424A', '0,4,,4D504C53', ''], False);
  FR(SplitterFormats[6], 'flv', 'FLV', True, ['flv', '']);
  FS(SplitterFormats[6], '{F2FAC0F1-3852-4670-AAC0-9051D400AC54}', ['0,4,,464C5601', ''], True);
  FR(SplitterFormats[7], 'ogg', 'Ogg/OGM', True, ['ogg', 'ogv', 'ogm', '']);
  FS(SplitterFormats[7], '{D2855FA9-61A7-4db0-B979-71F297C17A04}', ['0,4,,4F676753', ''], True);
  FR(SplitterFormats[8], 'rm', 'RealMedia (rm/rmvb)', True, ['rm', 'rmvb', '']);
  FR(SplitterFormats[9], 'wtv', 'Windows Television (wtv)', False, ['wtv', '']);
  FR(SplitterFormats[10], 'asf', 'WMV / ASF / DVR-MS', True, ['wmv', 'asf', 'dvr-ms', '']);
  FR(SplitterFormats[11], 'mxf', 'MXF (Material Exchange Format)', True, ['mxf', '']);
  FR(SplitterFormats[12], 'bink', 'Bink', True, ['bik', '']);

  FR(SplitterFormats[13], 'avisynth', 'AviSynth scripts', True, ['avs', '']);

  FP(SplitterFormats[14], 'rtmp', 'RTMP Streaming Protocol', False, ['rtmp', 'rtmpt', '']);
  FP(SplitterFormats[15], 'rtsp', 'RTSP Streaming Protocol', True, ['rtsp', 'rtspu', 'rtspm', 'rtspt', 'rtsph', '']);
  FP(SplitterFormats[16], 'rtp', 'RTP Streaming Protocol', True, ['rtp', '']);
  FP(SplitterFormats[17], 'mms', 'MMS Streaming Protocol', True, ['mms', 'mmsh', 'mmst', '']);

  FR(SplitterFormats[18], 'dts', 'DTS Audio', True, ['dts', 'dtshd', '']);
  FR(SplitterFormats[19], 'ac3', 'AC3 Audio', True, ['ac3', 'eac3', '']);
  FR(SplitterFormats[20], 'aac', 'AAC Audio', True, ['aac', '']);
  FR(SplitterFormats[21], 'mp3', 'MP3 Audio', True, ['mp3', '']);
  FR(SplitterFormats[22], 'flac', 'FLAC Audio', True, ['flac', '']);
end;

procedure RegWriteStringWithBackup(const RootKey: Integer; const SubKeyName, ValueName, Data: String);
var
  OldValue: String;
begin
  if RegQueryStringValue(RootKey, SubKeyName, ValueName, OldValue) then begin
    if CompareText(OldValue, Data) <> 0 then begin
      RegWriteStringValue(RootKey, SubKeyName, ValueName + '.LAV', OldValue);
    end
  end;
  RegWriteStringValue(RootKey, SubKeyName, ValueName, Data);
end;

function RegRestoreBackup(const RootKey: Integer; const SubKeyName, ValueName, CheckValue: String; const DeleteMode: Integer) : Boolean;
var
  CurrentValue: String;
  BackupValue: String;
begin
  Result := False;
  if RegQueryStringValue(RootKey, SubKeyName, ValueName, CurrentValue) then begin
    if CompareText(CurrentValue, CheckValue) = 0 then begin
      if RegQueryStringValue(RootKey, SubKeyName, ValueName + '.LAV', BackupValue) then begin
        RegWriteStringValue(RootKey, SubKeyName, ValueName, BackupValue);
        Result := True;
      end else begin
        if DeleteMode = 1 then begin
          RegDeleteValue(RootKey, SubKeyName, ValueName);
          RegDeleteKeyIfEmpty(RootKey, SubKeyName);
        end else if DeleteMode = 2 then
          RegDeleteKeyIncludingSubkeys(RootKey, SubKeyName);
      end
    end
  end;
  RegDeleteValue(RootKey, SubKeyName, ValueName + '.LAV');
end;

procedure RegisterSourceFormatGUIDs(f: Format);
var
  i: Integer;
  source: String;
begin
  i := 0;
  if Length(f.subtype) > 0 then
    begin
      if f.asyncSource then
        source := '{e436ebb5-524f-11ce-9f53-0020af0ba770}'
      else
        source := LavGUID;
      if IsComponentSelected('lavsplitter32') then
        RegWriteStringWithBackup(HKCR32, 'Media Type\' + StreamGUID + '\' + f.subtype, 'Source Filter', source);
      if IsComponentSelected('lavsplitter64') then
        RegWriteStringWithBackup(HKCR64, 'Media Type\' + StreamGUID + '\' + f.subtype, 'Source Filter', source);
    end;

  while Length(f.chkbytes[i]) > 0 do
    begin
      if IsComponentSelected('lavsplitter32') then
        RegWriteStringValue(HKCR32, 'Media Type\' + StreamGUID + '\' + f.subtype, IntToStr(i), f.chkbytes[i]);
      if IsComponentSelected('lavsplitter64') then
        RegWriteStringValue(HKCR64, 'Media Type\' + StreamGUID + '\' + f.subtype, IntToStr(i), f.chkbytes[i]);

      i := i+1;
    end;
end;

procedure UnregisterSourceFormatGUIDs(f: Format);
var
  SourceGuid: String;
  DelMode: Integer;
begin
  if Length(f.subtype) > 0 then
  begin
    if f.asyncSource then begin
      SourceGuid := '{e436ebb5-524f-11ce-9f53-0020af0ba770}';
      DelMode := 0;
    end else begin
      SourceGuid := LavGUID;
      DelMode := 2;
    end;
    RegRestoreBackup(HKCR32, 'Media Type\' + StreamGUID + '\' + f.subtype, 'Source Filter', SourceGuid, DelMode);
    if IsWin64 then
      RegRestoreBackup(HKCR64, 'Media Type\' + StreamGUID + '\' + f.subtype, 'Source Filter', SourceGuid, DelMode);
  end;
end;

procedure RegisterSourceFormatExtensions(f: Format);
var
  i: Integer;
begin
  i := 0;
  while Length(f.extensions[i]) > 0 do
    begin
      if f.protocol then begin
        RegWriteStringWithBackup(HKCR, f.extensions[i], 'Source Filter', LavGUID);
      end else begin
        if IsComponentSelected('lavsplitter32') then begin
          RegWriteStringWithBackup(HKCR32, 'Media Type\Extensions\.' + f.extensions[i], 'Source Filter', LavGUID);
          RegWriteStringWithBackup(HKCR32, 'Media Type\Extensions\.' + f.extensions[i], 'Media Type', StreamGUID);
          if Length(f.subtype) > 0 then
            RegWriteStringWithBackup(HKCR32, 'Media Type\Extensions\.' + f.extensions[i], 'SubType', f.subtype);
        end;
        if IsComponentSelected('lavsplitter64') then begin
          RegWriteStringWithBackup(HKCR64, 'Media Type\Extensions\.' + f.extensions[i], 'Source Filter', LavGUID);
          RegWriteStringWithBackup(HKCR64, 'Media Type\Extensions\.' + f.extensions[i], 'Media Type', StreamGUID);
          if Length(f.subtype) > 0 then
            RegWriteStringWithBackup(HKCR64, 'Media Type\Extensions\.' + f.extensions[i], 'SubType', f.subtype);
        end
      end;

      i := i+1;
    end;
end;

procedure UnregisterSourceFormatExtensions(f: Format);
var
  source: String;
  i: Integer;
begin
  i := 0;
  while Length(f.extensions[i]) > 0 do
    begin
      if f.protocol then
        RegRestoreBackup(HKCR, f.extensions[i], 'Source Filter', LavGUID, 1)
      else begin
        RegRestoreBackup(HKCR32, 'Media Type\Extensions\.' + f.extensions[i], 'Source Filter', LavGUID, 2);
        RegRestoreBackup(HKCR32, 'Media Type\Extensions\.' + f.extensions[i], 'Media Type', StreamGUID, 0);
        if Length(f.subtype) > 0 then
          RegRestoreBackup(HKCR32, 'Media Type\Extensions\.' + f.extensions[i], 'SubType', f.subtype, 0);
        if IsWin64 then begin
          RegRestoreBackup(HKCR64, 'Media Type\Extensions\.' + f.extensions[i], 'Source Filter', LavGUID, 2);
          RegRestoreBackup(HKCR64, 'Media Type\Extensions\.' + f.extensions[i], 'Media Type', StreamGUID, 0);
          if Length(f.subtype) > 0 then
            RegRestoreBackup(HKCR64, 'Media Type\Extensions\.' + f.extensions[i], 'SubType', f.subtype, 0)
        end
      end;

      i := i+1;
    end;
end;

function GetDefaultFormatSetting(f: Format): Boolean;
var
  value: Cardinal;
begin
  if RegQueryDWordValue(HKCU, LavSplitterFormatsReg, f.id, value) then begin
    Result := value > 0;
  end else begin
    Result := f.default;
  end
end;

procedure ResetSettings();
begin
  RegDeleteKeyIncludingSubkeys(HKCU, 'Software\LAV');
end;

procedure DoUnzip(source: String; targetdir: String);
var
    unzipTool: String;
    ReturnCode: Integer;
begin
    // source contains tmp constant, so resolve it to path name
    source := ExpandConstant(source);

    unzipTool := ExpandConstant('{tmp}\7za.exe');

    if not FileExists(unzipTool)
    then MsgBox('UnzipTool not found: ' + unzipTool, mbError, MB_OK)
    else if not FileExists(source)
    then MsgBox('File was not found while trying to unzip: ' + source, mbError, MB_OK)
    else begin
         if Exec(unzipTool, ' x "' + source + '" -o"' + targetdir + '" -y',
                 '', SW_HIDE, ewWaitUntilTerminated, ReturnCode) = false
         then begin
             MsgBox('Unzip failed:' + source, mbError, MB_OK)
         end;
    end;
end;

procedure CurStepChanged(CurStep: TSetupStep);
var
  i: Integer;
  targetPath : String;
begin
  if (CurStep = ssPostInstall) then begin
    if IsTaskSelected('reset_settings') then
      ResetSettings();

    if IsComponentSelected('lavsplitter32') or IsComponentSelected('lavsplitter64') then
      begin
        for i := 0 to NumFormatsMinusOne do
          begin
            if SplitterPage.Values[i] then begin
              RegisterSourceFormatGUIDs(SplitterFormats[i]);
              RegisterSourceFormatExtensions(SplitterFormats[i]);
            end else begin
              UnregisterSourceFormatGUIDs(SplitterFormats[i]);
              UnregisterSourceFormatExtensions(SplitterFormats[i]);
            end;
            RegWriteDWordValue(HKCU, LavSplitterFormatsReg, SplitterFormats[i].id, Ord(SplitterPage.Values[i]));
          end;
      end;

      if IsComponentSelected('mvc3d') then
      begin
        ExtractTemporaryFile('7za.exe');
        targetPath := ExpandConstant('{tmp}\');
        if IsComponentSelected('lavvideo32') then
          DoUnzip(targetPath + 'libmfxsw32-v3.7z', ExpandConstant('{app}\x86'));
        if IsComponentSelected('lavvideo64') then
          DoUnzip(targetPath + 'libmfxsw64-v3.7z', ExpandConstant('{app}\x64'));
      end;
  end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
    if CurPageID = wpReady then
    begin
      // User can navigate to 'Ready to install' page several times, so we
      // need to clear file list to ensure that only needed files are added.
      idpClearFiles;

      if IsComponentSelected('mvc3d') then
      begin
        if IsComponentSelected('lavvideo32') then
          idpAddFile('https://files.1f0.de/lavf/plugins/libmfxsw32-v3.7z', ExpandConstant('{tmp}\libmfxsw32-v3.7z'));
        if IsComponentSelected('lavvideo64') then
          idpAddFile('https://files.1f0.de/lavf/plugins/libmfxsw64-v3.7z', ExpandConstant('{tmp}\libmfxsw64-v3.7z'));
      end;
  end;
end;

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var
  i: Integer;
begin
  if (CurUninstallStep = usUninstall) then begin
    for i := 0 to NumFormatsMinusOne do
      begin
        UnregisterSourceFormatGUIDs(SplitterFormats[i]);
        UnregisterSourceFormatExtensions(SplitterFormats[i]);
      end;
  end;
end;

function ShouldSkipPage(PageID: Integer): Boolean;
begin
  Result := False;
  if PageID = SplitterPage.ID then begin
    if not (IsComponentSelected('lavsplitter32') or IsComponentSelected('lavsplitter64')) then
      Result := True;
  end;
end;

function InitializeSetup(): Boolean;
begin
  InitFormats;
  Result := True;

  if not Is_SSE2_Supported() then begin
    SuppressibleMsgBox('LAV Filters requires a CPU with SSE2 instruction support.'#10'Your CPU does not have these capabilities.', mbCriticalError, MB_OK, MB_OK);
    Result := False;
  end;
end;

function InitializeUninstall(): Boolean;
begin
  InitFormats;
  Result := True;
end;

procedure InitializeWizard();
var
  i: Integer;
begin
  SplitterPage := CreateInputOptionPage(wpSelectTasks,
    'LAV Splitter Formats',
    'Select which formats LAV Splitter should be setup to handle',
    'Select for which formats LAV Splitter should be setup to be the Source Filter.'#10'Note: These are only the file formats for LAV Splitter, audio and video codecs are configured separately.',
    False, False);

  for i := 0 to NumFormatsMinusOne do
    begin
      SplitterPage.Add(SplitterFormats[i].name);
      SplitterPage.Values[i] := GetDefaultFormatSetting(SplitterFormats[i]);
    end;

  // Adjust tasks page
  WizardForm.SelectTasksLabel.Hide;
  WizardForm.TasksList.Top    := 0;
  WizardForm.TasksList.Height := PageFromID(wpSelectTasks).SurfaceHeight;

  idpDownloadAfter(wpReady);
end;


================================================
FILE: LAVFilters.sln
================================================

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.2.32630.192
MinimumVisualStudioVersion = 16.0.30011.22
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LAVSplitter", "demuxer\LAVSplitter\LAVSplitter.vcxproj", "{F475F86F-3F7F-4B1D-82A6-078339F599FD}"
	ProjectSection(ProjectDependencies) = postProject
		{0A058024-41F4-4509-97D2-803A1806CE86} = {0A058024-41F4-4509-97D2-803A1806CE86}
		{E2012DB5-33CB-44A7-B521-04287F6D0D80} = {E2012DB5-33CB-44A7-B521-04287F6D0D80}
		{E8A3F6FA-AE1C-4C8E-A0B6-9C8480324EAA} = {E8A3F6FA-AE1C-4C8E-A0B6-9C8480324EAA}
	EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "baseclasses", "common\baseclasses\baseclasses.vcxproj", "{E8A3F6FA-AE1C-4C8E-A0B6-9C8480324EAA}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DSUtilLite", "common\DSUtilLite\DSUtilLite.vcxproj", "{0A058024-41F4-4509-97D2-803A1806CE86}"
	ProjectSection(ProjectDependencies) = postProject
		{E8A3F6FA-AE1C-4C8E-A0B6-9C8480324EAA} = {E8A3F6FA-AE1C-4C8E-A0B6-9C8480324EAA}
	EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Demuxers", "demuxer\Demuxers\Demuxers.vcxproj", "{E2012DB5-33CB-44A7-B521-04287F6D0D80}"
	ProjectSection(ProjectDependencies) = postProject
		{0A058024-41F4-4509-97D2-803A1806CE86} = {0A058024-41F4-4509-97D2-803A1806CE86}
		{E1DA1B95-71F1-4C21-A271-121176925062} = {E1DA1B95-71F1-4C21-A271-121176925062}
		{E8A3F6FA-AE1C-4C8E-A0B6-9C8480324EAA} = {E8A3F6FA-AE1C-4C8E-A0B6-9C8480324EAA}
	EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LAVAudio", "decoder\LAVAudio\LAVAudio.vcxproj", "{12154C64-9136-4C21-92FA-665008C6FD27}"
	ProjectSection(ProjectDependencies) = postProject
		{0A058024-41F4-4509-97D2-803A1806CE86} = {0A058024-41F4-4509-97D2-803A1806CE86}
		{E8A3F6FA-AE1C-4C8E-A0B6-9C8480324EAA} = {E8A3F6FA-AE1C-4C8E-A0B6-9C8480324EAA}
	EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libbluray", "libbluray\libbluray.vcxproj", "{E1DA1B95-71F1-4C21-A271-121176925062}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LAVVideo", "decoder\LAVVideo\LAVVideo.vcxproj", "{D29ADED3-086B-46A8-9455-97EFF6B14775}"
	ProjectSection(ProjectDependencies) = postProject
		{0A058024-41F4-4509-97D2-803A1806CE86} = {0A058024-41F4-4509-97D2-803A1806CE86}
		{E8A3F6FA-AE1C-4C8E-A0B6-9C8480324EAA} = {E8A3F6FA-AE1C-4C8E-A0B6-9C8480324EAA}
	EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "IntelQuickSyncDecoder", "qsdecoder\IntelQuickSyncDecoder.vcxproj", "{83F0170E-6AB3-467B-98D5-E061BD2BF00D}"
EndProject
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
		Debug|Win32 = Debug|Win32
		Debug|x64 = Debug|x64
		Release|Win32 = Release|Win32
		Release|x64 = Release|x64
	EndGlobalSection
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
		{F475F86F-3F7F-4B1D-82A6-078339F599FD}.Debug|Win32.ActiveCfg = Debug|Win32
		{F475F86F-3F7F-4B1D-82A6-078339F599FD}.Debug|Win32.Build.0 = Debug|Win32
		{F475F86F-3F7F-4B1D-82A6-078339F599FD}.Debug|x64.ActiveCfg = Debug|x64
		{F475F86F-3F7F-4B1D-82A6-078339F599FD}.Debug|x64.Build.0 = Debug|x64
		{F475F86F-3F7F-4B1D-82A6-078339F599FD}.Release|Win32.ActiveCfg = Release|Win32
		{F475F86F-3F7F-4B1D-82A6-078339F599FD}.Release|Win32.Build.0 = Release|Win32
		{F475F86F-3F7F-4B1D-82A6-078339F599FD}.Release|x64.ActiveCfg = Release|x64
		{F475F86F-3F7F-4B1D-82A6-078339F599FD}.Release|x64.Build.0 = Release|x64
		{E8A3F6FA-AE1C-4C8E-A0B6-9C8480324EAA}.Debug|Win32.ActiveCfg = Debug|Win32
		{E8A3F6FA-AE1C-4C8E-A0B6-9C8480324EAA}.Debug|Win32.Build.0 = Debug|Win32
		{E8A3F6FA-AE1C-4C8E-A0B6-9C8480324EAA}.Debug|x64.ActiveCfg = Debug|x64
		{E8A3F6FA-AE1C-4C8E-A0B6-9C8480324EAA}.Debug|x64.Build.0 = Debug|x64
		{E8A3F6FA-AE1C-4C8E-A0B6-9C8480324EAA}.Release|Win32.ActiveCfg = Release|Win32
		{E8A3F6FA-AE1C-4C8E-A0B6-9C8480324EAA}.Release|Win32.Build.0 = Release|Win32
		{E8A3F6FA-AE1C-4C8E-A0B6-9C8480324EAA}.Release|x64.ActiveCfg = Release|x64
		{E8A3F6FA-AE1C-4C8E-A0B6-9C8480324EAA}.Release|x64.Build.0 = Release|x64
		{0A058024-41F4-4509-97D2-803A1806CE86}.Debug|Win32.ActiveCfg = Debug|Win32
		{0A058024-41F4-4509-97D2-803A1806CE86}.Debug|Win32.Build.0 = Debug|Win32
		{0A058024-41F4-4509-97D2-803A1806CE86}.Debug|x64.ActiveCfg = Debug|x64
		{0A058024-41F4-4509-97D2-803A1806CE86}.Debug|x64.Build.0 = Debug|x64
		{0A058024-41F4-4509-97D2-803A1806CE86}.Release|Win32.ActiveCfg = Release|Win32
		{0A058024-41F4-4509-97D2-803A1806CE86}.Release|Win32.Build.0 = Release|Win32
		{0A058024-41F4-4509-97D2-803A1806CE86}.Release|x64.ActiveCfg = Release|x64
		{0A058024-41F4-4509-97D2-803A1806CE86}.Release|x64.Build.0 = Release|x64
		{E2012DB5-33CB-44A7-B521-04287F6D0D80}.Debug|Win32.ActiveCfg = Debug|Win32
		{E2012DB5-33CB-44A7-B521-04287F6D0D80}.Debug|Win32.Build.0 = Debug|Win32
		{E2012DB5-33CB-44A7-B521-04287F6D0D80}.Debug|x64.ActiveCfg = Debug|x64
		{E2012DB5-33CB-44A7-B521-04287F6D0D80}.Debug|x64.Build.0 = Debug|x64
		{E2012DB5-33CB-44A7-B521-04287F6D0D80}.Release|Win32.ActiveCfg = Release|Win32
		{E2012DB5-33CB-44A7-B521-04287F6D0D80}.Release|Win32.Build.0 = Release|Win32
		{E2012DB5-33CB-44A7-B521-04287F6D0D80}.Release|x64.ActiveCfg = Release|x64
		{E2012DB5-33CB-44A7-B521-04287F6D0D80}.Release|x64.Build.0 = Release|x64
		{12154C64-9136-4C21-92FA-665008C6FD27}.Debug|Win32.ActiveCfg = Debug|Win32
		{12154C64-9136-4C21-92FA-665008C6FD27}.Debug|Win32.Build.0 = Debug|Win32
		{12154C64-9136-4C21-92FA-665008C6FD27}.Debug|x64.ActiveCfg = Debug|x64
		{12154C64-9136-4C21-92FA-665008C6FD27}.Debug|x64.Build.0 = Debug|x64
		{12154C64-9136-4C21-92FA-665008C6FD27}.Release|Win32.ActiveCfg = Release|Win32
		{12154C64-9136-4C21-92FA-665008C6FD27}.Release|Win32.Build.0 = Release|Win32
		{12154C64-9136-4C21-92FA-665008C6FD27}.Release|x64.ActiveCfg = Release|x64
		{12154C64-9136-4C21-92FA-665008C6FD27}.Release|x64.Build.0 = Release|x64
		{E1DA1B95-71F1-4C21-A271-121176925062}.Debug|Win32.ActiveCfg = Debug|Win32
		{E1DA1B95-71F1-4C21-A271-121176925062}.Debug|Win32.Build.0 = Debug|Win32
		{E1DA1B95-71F1-4C21-A271-121176925062}.Debug|x64.ActiveCfg = Debug|x64
		{E1DA1B95-71F1-4C21-A271-121176925062}.Debug|x64.Build.0 = Debug|x64
		{E1DA1B95-71F1-4C21-A271-121176925062}.Release|Win32.ActiveCfg = Release|Win32
		{E1DA1B95-71F1-4C21-A271-121176925062}.Release|Win32.Build.0 = Release|Win32
		{E1DA1B95-71F1-4C21-A271-121176925062}.Release|x64.ActiveCfg = Release|x64
		{E1DA1B95-71F1-4C21-A271-121176925062}.Release|x64.Build.0 = Release|x64
		{D29ADED3-086B-46A8-9455-97EFF6B14775}.Debug|Win32.ActiveCfg = Debug|Win32
		{D29ADED3-086B-46A8-9455-97EFF6B14775}.Debug|Win32.Build.0 = Debug|Win32
		{D29ADED3-086B-46A8-9455-97EFF6B14775}.Debug|x64.ActiveCfg = Debug|x64
		{D29ADED3-086B-46A8-9455-97EFF6B14775}.Debug|x64.Build.0 = Debug|x64
		{D29ADED3-086B-46A8-9455-97EFF6B14775}.Release|Win32.ActiveCfg = Release|Win32
		{D29ADED3-086B-46A8-9455-97EFF6B14775}.Release|Win32.Build.0 = Release|Win32
		{D29ADED3-086B-46A8-9455-97EFF6B14775}.Release|x64.ActiveCfg = Release|x64
		{D29ADED3-086B-46A8-9455-97EFF6B14775}.Release|x64.Build.0 = Release|x64
		{83F0170E-6AB3-467B-98D5-E061BD2BF00D}.Debug|Win32.ActiveCfg = Debug|Win32
		{83F0170E-6AB3-467B-98D5-E061BD2BF00D}.Debug|Win32.Build.0 = Debug|Win32
		{83F0170E-6AB3-467B-98D5-E061BD2BF00D}.Debug|x64.ActiveCfg = Debug|x64
		{83F0170E-6AB3-467B-98D5-E061BD2BF00D}.Debug|x64.Build.0 = Debug|x64
		{83F0170E-6AB3-467B-98D5-E061BD2BF00D}.Release|Win32.ActiveCfg = Release|Win32
		{83F0170E-6AB3-467B-98D5-E061BD2BF00D}.Release|Win32.Build.0 = Release|Win32
		{83F0170E-6AB3-467B-98D5-E061BD2BF00D}.Release|x64.ActiveCfg = Release|x64
		{83F0170E-6AB3-467B-98D5-E061BD2BF00D}.Release|x64.Build.0 = Release|x64
	EndGlobalSection
	GlobalSection(SolutionProperties) = preSolution
		HideSolutionNode = FALSE
	EndGlobalSection
	GlobalSection(ExtensibilityGlobals) = postSolution
		SolutionGuid = {F5B92918-449E-4214-B227-464B757DB420}
	EndGlobalSection
EndGlobal


================================================
FILE: README.md
================================================
LAV Filters - ffmpeg based DirectShow Splitter and Decoders
=============================

LAV Filters are a set of DirectShow filters based on the libavformat and libavcodec libraries
from the ffmpeg project, which will allow you to play virtually any format in a DirectShow player.

The filters are still under development, so not every feature is finished, or every format supported.

Install
-----------------------------
- Unpack
- Register (install_*.bat files)
	Registering requires administrative rights, and an elevated shell ("Run as Administrator")

Using it
-----------------------------
By default, the splitter will register for all media formats that have been
tested and found working at least partially.
This currently includes (but is not limited to)
	MKV/WebM, AVI, MP4/MOV, TS/M2TS/MPG, FLV, OGG, BluRay (.bdmv and .mpls)

However, some other splitters register in a "bad" way and force all players
to use them. The Haali Media Splitter is one of those, and to give priority
to the LAVFSplitter you have to either uninstall Haali or rename its .ax file
at least temporarily.

The Audio and Video Decoder will register with relatively high merit, which should make
it the preferred decoder by default. Most players offer a way to choose the preferred
decoder however.

Automatic Stream Selection
-----------------------------
LAV Splitter offers different ways to pre-select streams when opening a file.
The selection of video streams is not configurable, and LAV Splitter will quite simply
pick the one with the best quality.

Audio stream selection offers some flexibility, specifically you can configure your preferred languages.
The language configuration is straightforward. Just enter a list of 3-letter language codes (ISO 639-2),
separated by comma or space.

For example: `eng ger fre`. This would try to select a stream matching one of these languages,
in the order you specified them. First, check if an English track is present, and only if not,
go to German, and after that, go to French.

If multiple audio tracks match one language, the choice is based on the quality. The primary attribute here
is the number of channels, and after that is the codec used. PCM and lossless codecs have a higher priority
than lossy codecs.

Subtitle selection offers the most flexibility.
There are 4 distinct modes of subtitle selection.

#### No Subtitles
This mode is simple, by default subtitles will be off.

#### Only Forced Subtitles
This mode will only pre-select subtitles flagged with the "forced" flag. It'll also obey the language preferences, of course.

#### Default
The default mode will select subtitles matching your language preference. If there is no match, or you didn't configure
languages, no subtitles will be activated. In addition, subtitles flagged "default" or "forced" will always be used.

#### Advanced
The advanced mode lets you write your own combinations of rules with a special syntax. It also allows selecting subtitles
based on the audio language of the file.

The base syntax is simple, it always requires a pair of audio and subtitle language, separated by a colon, for example: `eng:ger`
In this example, LAV Splitter would select German subtitles if English audio was found.

Instead of language codes, the advanced mode supports two special cases: `*` and `off`.
When you specify `*` for a language code, it'll match everything. For example `*:eng`  will activate English subtitles, independent
of the audio language. The reverse is also possible: `eng:*` will activate any subtitles when the audio is English.

The "off" flag is only valid for the subtitle language, and it instructs LAV Splitter to turn the subtitles off.
So "eng:off" means that when the audio is English, the subtitles will be deactivated.

Additionally to the syntax above, the following flags can be appended to the subtitle token separated by a pipe symbol (`|`):
 - `d` for default subtitles
 - `f` for forced subtitles
 - `h` for hearing impaired
 - `n` for normal streams (not default, forced, or impaired).

In addition, you can also check for the absence of flags by preceding the flags with a `!`.
The advanced rules can be combined into a complete logic for subtitle selection by just appending them, separated with a comma or a space.
The rules will always be parsed from left to right, the first match taking precedence.

Finally, the rules can match the name of a stream, with some limitations. Only single words can be matched, as spaces are a separator for the next token.
A text match can be added to the end of the token with a `@` sign.

Example: (basic flag usage)
- `*:*|f`
  - On any audio language, load any subtitles that are flagged forced.

Example: (basic ruleset)
- `eng:eng|f eng:ger|f eng:off *:eng *:ger`
  - If the audio is English, load an English or a German forced subtitle track, otherwise, turn subtitles off.
  - If the audio is not English, load English or German subtitles.

Example: (flag usage with negation)
- `jpn:ger|d!f`
  - In the Japanese language, load German subtitles that have the default-flag but not together with forced-flag.
  - This is useful when you have files where the default and forced flags are set together.

Example: (advanced ruleset for files with multiple audio and subtitle-tracks)
- `jpn:ger|d!f  jpn:ger|!f  jpn:ger  ger:ger|f  ger:eng|f  ger:*|f`
  - On Japanese audio, try to load German full subs (default but not forced), then unforced, and at last any german subs if there are no unforced subs.
  - On German audio load only forced subs in the following order: German, English, any.

Example: (text match)
- `*:eng@Forced`
  - On any audio, select english subtitle streams with "Forced" in the stream title.

Blu-ray Support
-----------------------------
To play a BluRay, simply open the index.bdmv file in the BDMV folder on the BluRay disc.
LAV Splitter will then automatically detect the longest track on the disc (usually the main movie),
and start playing.
Alternatively, you can also open a playlist file (*.mpls, located in BDMV/PLAYLIST), and LAV Splitter
will then play that specific title.

In future versions, you'll be able to choose the title from within the player, as well.

Compiling
-----------------------------
Compiling is pretty straightforward using VS2022 (included project files).
Older versions of Visual Studio are not officially supported, but may still work.

It does, however, require that you build your own FFmpeg.
FFmpeg is included as part of the repository in a submodule, pointing to a custom
fork of FFmpeg with various patches for improved compatibility with LAV and DirectShow.

A script is provided to compile FFmpeg using MSYS2 with MINGW/GCC or MSVC.

The custom fork of FFmpeg can be found here:
https://gitea.1f0.de/LAV/FFmpeg

libbluray is compiled with the MSVC project files, however, as with FFmpeg a custom
version is used, which is also linked as a Git submodule.

You can get find the custom version of libbluray here:
https://gitea.1f0.de/LAV/libbluray

Feedback
-----------------------------
GitHub Project: https://github.com/Nevcairiel/LAVFilters
Doom9: https://forum.doom9.org/showthread.php?t=156191


================================================
FILE: build.bat
================================================
@ECHO OFF

for /f "usebackq tokens=*" %%i in (`call "%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -version "[16.0,18.0)" -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath`) do (
  set VSInstallDir=%%i
)

set "VSCMD_START_DIR=%CD%"
call "%VSInstallDir%\Common7\Tools\VsDevCmd.bat" -no_logo -arch=x86 > NUL

sh build_ffmpeg.sh x86 || EXIT /B 1
MSBuild.exe LAVFilters.sln /nologo /m /t:Rebuild /property:Configuration=Release;Platform=Win32
IF ERRORLEVEL 1 EXIT /B 1

sh build_ffmpeg.sh x64 || EXIT /B 1
MSBuild.exe LAVFilters.sln /nologo /m /t:Rebuild /property:Configuration=Release;Platform=x64
IF ERRORLEVEL 1 EXIT /B 1

PAUSE


================================================
FILE: build_ffmpeg.sh
================================================
#!/bin/sh

arch=x86
archdir=Win32
clean_build=true
cross_prefix=

CV2PDB=../thirdparty/contrib/cv2pdb.exe

for opt in "$@"
do
    case "$opt" in
    x86)
            ;;
    x64 | amd64)
            arch=x86_64
            archdir=x64
            cross_prefix=x86_64-w64-mingw32-
            ;;
    quick)
            clean_build=false
            ;;
    *)
            echo "Unknown Option $opt"
            exit 1
    esac
done

make_dirs() (
  mkdir -p bin_${archdir}/lib
  mkdir -p bin_${archdir}d/lib
)

copy_libs() (
  # copy and process .dll/.pdb
  for file in lib*/*-lav-*.dll; do
    file_basename=$(basename $file)
    file_pdb=$(basename $file .dll).pdb
    ${CV2PDB} -p${file_pdb} ${file} ../bin_${archdir}d/${file_basename}
    cp ../bin_${archdir}d/${file_basename} ../bin_${archdir}/
    cp ../bin_${archdir}d/${file_pdb} ../bin_${archdir}/
  done

  # copy lib files
  cp -u lib*/*.lib ../bin_${archdir}/lib
  cp -u lib*/*.lib ../bin_${archdir}d/lib
)

clean() (
  make distclean > /dev/null 2>&1
)

configure() (
  OPTIONS="
    --enable-shared                 \
    --disable-static                \
    --enable-gpl                    \
    --enable-version3               \
    --disable-autodetect            \
    --enable-w32threads             \
    --disable-demuxer=matroska      \
    --disable-filters               \
    --enable-filter=scale,yadif,w3fdif,bwdif \
    --disable-protocol=async,cache,concat,httpproxy,icecast,md5,subfile \
    --disable-muxers                \
    --enable-muxer=spdif            \
    --disable-bsfs                  \
    --enable-bsf=extract_extradata  \
    --disable-avdevice              \
    --disable-encoders              \
    --disable-devices               \
    --disable-programs              \
    --disable-debug                 \
    --disable-doc                   \
    --enable-avisynth               \
    --enable-bzlib                  \
    --enable-d3d11va                \
    --enable-dxva2                  \
    --enable-gnutls                 \
    --enable-gmp                    \
    --enable-libdav1d               \
    --enable-libspeex               \
    --enable-libopencore-amrnb      \
    --enable-libopencore-amrwb      \
    --enable-libxml2                \
    --enable-zlib                   \
    --build-suffix=-lav             \
    --disable-stripping             \
    --arch=${arch}"

  EXTRA_CFLAGS="-fno-tree-vectorize -D_WIN32_WINNT=0x0600 -DWINVER=0x0600 -gdwarf-5"
  EXTRA_LDFLAGS=""
  PKG_CONFIG_PREFIX_DIR=""
  if [ "${arch}" == "x86_64" ]; then
    export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:../thirdparty/64/lib/pkgconfig/"
    OPTIONS="${OPTIONS} --enable-cross-compile --cross-prefix=${cross_prefix} --target-os=mingw32 --pkg-config=pkg-config"
    EXTRA_CFLAGS="${EXTRA_CFLAGS} -I../thirdparty/64/include -fno-omit-frame-pointer"
    EXTRA_LDFLAGS="${EXTRA_LDFLAGS} -L../thirdparty/64/lib"
    PKG_CONFIG_PREFIX_DIR="--define-variable=prefix=../thirdparty/64"
  else
    export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:../thirdparty/32/lib/pkgconfig/"
    OPTIONS="${OPTIONS} --cpu=i686"
    EXTRA_CFLAGS="${EXTRA_CFLAGS} -I../thirdparty/32/include -mmmx -msse -msse2 -mfpmath=sse -mstackrealign"
    EXTRA_LDFLAGS="${EXTRA_LDFLAGS} -L../thirdparty/32/lib"
    PKG_CONFIG_PREFIX_DIR="--define-variable=prefix=../thirdparty/32"
  fi

  sh configure --extra-ldflags="${EXTRA_LDFLAGS}" --extra-cflags="${EXTRA_CFLAGS}" --pkg-config-flags="--static ${PKG_CONFIG_PREFIX_DIR}" ${OPTIONS}
)

build() (
  make -j$NUMBER_OF_PROCESSORS
)

make_dirs

echo
echo Building ffmpeg in GCC ${arch} Release config...
echo

cd ffmpeg

if $clean_build ; then
    clean

    ## run configure, redirect to file because of a msys bug
    configure > ffbuild/config.out 2>&1
    CONFIGRETVAL=$?

    ## show configure output
    cat ffbuild/config.out
fi

## Only if configure succeeded, actually build
if ! $clean_build || [ ${CONFIGRETVAL} -eq 0 ]; then
  build &&
  copy_libs || exit 1
fi

cd ..


================================================
FILE: build_ffmpeg_msvc.sh
================================================
#!/bin/sh

arch=x86
archdir=Win32
archincdir=32
clean_build=true
debug=true

for opt in "$@"
do
    case "$opt" in
    x86)
            ;;
    x64 | amd64)
            arch=x86_64
            archdir=x64
            archincdir=64
            ;;
    quick)
            clean_build=false
            ;;
    release)
            debug=false
            ;;
    *)
            echo "Unknown Option $opt"
            exit 1
    esac
done

make_dirs() (
  mkdir -p bin_${archdir}d/lib
  mkdir -p bin_${archdir}/lib
)

copy_libs() (
  if $debug ; then
      cp -u lib*/*-lav-*.dll ../bin_${archdir}d
      cp -u lib*/*-lav-*.pdb ../bin_${archdir}d
      cp -u lib*/*.lib ../bin_${archdir}d/lib
  else
      cp -u lib*/*-lav-*.dll ../bin_${archdir}
      cp -u lib*/*-lav-*.pdb ../bin_${archdir}
      cp -u lib*/*.lib ../bin_${archdir}/lib
  fi
)

clean() (
  make distclean > /dev/null 2>&1
)

configure() (
  OPTIONS="
    --enable-shared                 \
    --disable-static                \
    --enable-gpl                    \
    --enable-version3               \
    --disable-autodetect            \
    --enable-w32threads             \
    --disable-demuxer=matroska      \
    --disable-filters               \
    --enable-filter=scale,yadif,w3fdif,bwdif \
    --disable-protocol=async,cache,concat,httpproxy,icecast,md5,subfile \
    --disable-muxers                \
    --enable-muxer=spdif            \
    --disable-bsfs                  \
    --enable-bsf=extract_extradata  \
    --disable-avdevice              \
    --disable-encoders              \
    --disable-devices               \
    --disable-programs              \
    --disable-doc                   \
    --enable-avisynth               \
    --enable-d3d11va                \
    --enable-dxva2                  \
    --enable-schannel               \
    --enable-zlib                   \
    --build-suffix=-lav             \
    --arch=${arch}"

  EXTRA_CFLAGS="-D_WIN32_WINNT=0x0600 -DWINVER=0x0600 -Zo -GS- -I../thirdparty/$archincdir/include/"
  EXTRA_LDFLAGS=""

  if $debug ; then
    OPTIONS="${OPTIONS} --enable-debug"
    EXTRA_CFLAGS="${EXTRA_CFLAGS} -MDd"
    EXTRA_LDFLAGS="${EXTRA_LDFLAGS} -NODEFAULTLIB:libcmt"
  else
    OPTIONS="${OPTIONS} --disable-debug"
    EXTRA_CFLAGS="${EXTRA_CFLAGS} -MD"
    EXTRA_LDFLAGS="${EXTRA_LDFLAGS} -NODEFAULTLIB:libcmt"
  fi

  sh configure --toolchain=msvc --extra-cflags="${EXTRA_CFLAGS}" --extra-ldflags="${EXTRA_LDFLAGS}" ${OPTIONS}
)

build() (
  make -j$NUMBER_OF_PROCESSORS
)

echo Building ffmpeg in MSVC Debug config...

make_dirs

cd ffmpeg

if $clean_build ; then
    clean

    ## run configure, redirect to file because of a msys bug
    configure > ffbuild/config.out 2>&1
    CONFIGRETVAL=$?

    ## show configure output
    cat ffbuild/config.out
fi

## Only if configure succeeded, actually build
if ! $clean_build || [ ${CONFIGRETVAL} -eq 0 ]; then
  build &&
  copy_libs
fi

cd ..


================================================
FILE: common/DSUtilLite/BaseDSPropPage.cpp
================================================
/*
 *      Copyright (C) 2010-2021 Hendrik Leppkes
 *      http://www.1f0.de
 *
 *  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 Street, Fifth Floor, Boston, MA 02110-1301 USA.
 */

#include "stdafx.h"
#include "BaseDSPropPage.h"

CBaseDSPropPage::CBaseDSPropPage(LPCTSTR pName, __inout_opt LPUNKNOWN pUnk, int DialogId, int TitleId)
    : CBasePropertyPage(pName, pUnk, DialogId, TitleId)
{
}

HWND CBaseDSPropPage::createHintWindow(HWND parent, int timePop, int timeInit, int timeReshow)
{
    HWND hhint =
        CreateWindowEx(WS_EX_TOPMOST, TOOLTIPS_CLASS, nullptr, WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP, CW_USEDEFAULT,
                       CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, parent, nullptr, nullptr, nullptr);
    SetWindowPos(hhint, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
    SendMessage(hhint, TTM_SETDELAYTIME, TTDT_AUTOPOP, MAKELONG(timePop, 0));
    SendMessage(hhint, TTM_SETDELAYTIME, TTDT_INITIAL, MAKELONG(timeInit, 0));
    SendMessage(hhint, TTM_SETDELAYTIME, TTDT_RESHOW, MAKELONG(timeReshow, 0));
    SendMessage(hhint, TTM_SETMAXTIPWIDTH, 0, 470);
    return hhint;
}

TOOLINFO CBaseDSPropPage::addHint(int id, const LPWSTR text)
{
    if (!m_hHint)
        m_hHint = createHintWindow(m_Dlg, 15000);
    TOOLINFO ti;
    ti.cbSize = sizeof(TOOLINFO);
    ti.uFlags = TTF_SUBCLASS | TTF_IDISHWND;
    ti.hwnd = m_Dlg;
    ti.uId = (LPARAM)GetDlgItem(m_Dlg, id);
    ti.lpszText = text;
    SendMessage(m_hHint, TTM_ADDTOOL, 0, (LPARAM)&ti);
    return ti;
}

void CBaseDSPropPage::ListView_AddCol(HWND hlv, int &ncol, int w, const wchar_t *txt, bool right)
{
    LVCOLUMN lvc;
    lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
    lvc.iSubItem = ncol;
    lvc.pszText = (LPWSTR)txt;
    lvc.cx = w;
    lvc.fmt = right ? LVCFMT_RIGHT : LVCFMT_LEFT;
    ListView_InsertColumn(hlv, ncol, &lvc);
    ncol++;
}

HRESULT CBaseDSPropPage::ShowPropPageDialog(IBaseFilter *pFilter, HWND hwndOwner)
{
    CheckPointer(pFilter, E_INVALIDARG);
    CoInitialize(nullptr);

    // Get PropertyPages interface
    ISpecifyPropertyPages *pProp = nullptr;
    HRESULT hr = pFilter->QueryInterface<ISpecifyPropertyPages>(&pProp);
    if (SUCCEEDED(hr) && pProp)
    {
        // Get the filter's name and IUnknown pointer.
        FILTER_INFO FilterInfo;
        hr = pFilter->QueryFilterInfo(&FilterInfo);
        // We don't need the graph, so don't sit on a ref to it
        if (FilterInfo.pGraph)
            FilterInfo.pGraph->Release();

        IUnknown *pFilterUnk = nullptr;
        pFilter->QueryInterface<IUnknown>(&pFilterUnk);

        // Show the page.
        CAUUID caGUID;
        pProp->GetPages(&caGUID);
        pProp->Release();
        hr = OleCreatePropertyFrame(hwndOwner,          // Parent window
                                    0, 0,               // Reserved
                                    FilterInfo.achName, // Caption for the dialog box
                                    1,                  // Number of objects (just the filter)
                                    &pFilterUnk,        // Array of object pointers.
                                    caGUID.cElems,      // Number of property pages
                                    caGUID.pElems,      // Array of property page CLSIDs
                                    0,                  // Locale identifier
                                    0, nullptr          // Reserved
        );

        // Clean up.
        pFilterUnk->Release();
        CoTaskMemFree(caGUID.pElems);

        hr = S_OK;
    }
    CoUninitialize();
    return hr;
}


================================================
FILE: common/DSUtilLite/BaseDSPropPage.h
================================================
/*
 *      Copyright (C) 2010-2021 Hendrik Leppkes
 *      http://www.1f0.de
 *
 *  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 Street, Fifth Floor, Boston, MA 02110-1301 USA.
 */

#pragma once

class CBaseDSPropPage : public CBasePropertyPage
{
  public:
    CBaseDSPropPage(LPCTSTR pName, __inout_opt LPUNKNOWN pUnk, int DialogId, int TitleId);

  public:
    static HRESULT ShowPropPageDialog(IBaseFilter *pFilter, HWND hwndOwner = nullptr);

  protected:
    // Convenience function to add a new column to a list view control
    static void ListView_AddCol(HWND hlv, int &ncol, int w, const wchar_t *txt, bool right);

    TOOLINFO addHint(int id, const LPWSTR text);

  private:
    HWND createHintWindow(HWND parent, int timePop = 1700, int timeInit = 70, int timeReshow = 7);

  private:
    HWND m_hHint = 0;
};


================================================
FILE: common/DSUtilLite/BaseTrayIcon.cpp
================================================
/*
 *      Copyright (C) 2010-2021 Hendrik Leppkes
 *      http://www.1f0.de
 *
 *  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 Street, Fifth Floor, Boston, MA 02110-1301 USA.
 */

#include "stdafx.h"
#include "DShowUtil.h"
#include "BaseTrayIcon.h"
#include "BaseDSPropPage.h"

#include <time.h>
#include <process.h>
#include <Shlwapi.h>

#define TRAYICON 0x1f0
#define MSG_TRAYICON WM_USER + 1
#define MSG_QUIT WM_USER + 2

// The assumed size of the propery page
#define PROP_WIDTH_OFFSET 400
#define PROP_HEIGHT_OFFSET 250

static const WCHAR *noTrayProcesses[] = {L"dllhost.exe", L"explorer.exe", L"ReClockHelper.dll"};

BOOL CBaseTrayIcon::ProcessBlackList()
{
    WCHAR fileName[1024];
    GetModuleFileName(nullptr, fileName, 1024);
    WCHAR *processName = PathFindFileName(fileName);

    for (int i = 0; i < countof(noTrayProcesses); i++)
    {
        if (_wcsicmp(processName, noTrayProcesses[i]) == 0)
            return TRUE;
    }
    return FALSE;
}

CBaseTrayIcon::CBaseTrayIcon(IBaseFilter *pFilter, const WCHAR *wszName, int resIcon)
    : m_pFilter(pFilter)
    , m_wszName(wszName)
    , m_resIcon(resIcon)
{
    memset(&m_NotifyIconData, 0, sizeof(m_NotifyIconData));
    m_evSetupFinished.Reset();
    StartMessageThread();
}

CBaseTrayIcon::~CBaseTrayIcon(void)
{
    m_pFilter = nullptr;
    if (m_hWnd)
    {
        SendMessage(m_hWnd, MSG_QUIT, 0, 0);
        WaitForSingleObject(m_hThread, INFINITE);
    }
    CloseHandle(m_hThread);
}

HRESULT CBaseTrayIcon::StartMessageThread()
{
    m_hThread = (HANDLE)_beginthreadex(nullptr,           /* Security */
                                       0,                 /* Stack Size */
                                       InitialThreadProc, /* Thread process */
                                       (LPVOID)this,      /* Arguments */
                                       0,                 /* 0 = Start Immediately */
                                       nullptr            /* Thread Address */
    );
    m_evSetupFinished.Wait();
    return S_OK;
}

unsigned int WINAPI CBaseTrayIcon::InitialThreadProc(LPVOID pv)
{
    HRESULT hrCo = CoInitialize(nullptr);

    CBaseTrayIcon *pTrayIcon = (CBaseTrayIcon *)pv;
    unsigned int ret = pTrayIcon->TrayMessageThread();

    if (SUCCEEDED(hrCo))
        CoUninitialize();

    return ret;
}

DWORD CBaseTrayIcon::TrayMessageThread()
{
    HRESULT hr;
    MSG msg;

    // Create the Window Class if it doesn't exist yet
    hr = RegisterWindowClass();
    if (FAILED(hr))
    {
        DbgLog((LOG_TRACE, 10, L"CBaseTrayIcon::ThreadProc(): Failed to register window class"));
    }

    // And the Window we use for messages
    hr = CreateMessageWindow();
    if (FAILED(hr))
    {
        DbgLog((LOG_TRACE, 10, L"CBaseTrayIcon::ThreadProc(): Failed to create message window"));
        m_evSetupFinished.Set();
        UnregisterClass(m_wszClassName, g_hInst);
        return 1;
    }
    ASSERT(m_hWnd);

    CreateTrayIconData();
    Shell_NotifyIcon(NIM_ADD, &m_NotifyIconData);
    Shell_NotifyIcon(NIM_SETVERSION, &m_NotifyIconData);

    m_evSetupFinished.Set();

    // Message loop
    while (GetMessage(&msg, nullptr, 0, 0) > 0)
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    Shell_NotifyIcon(NIM_DELETE, &m_NotifyIconData);
    // Free icon resources
    if (m_NotifyIconData.hIcon)
    {
        DestroyIcon(m_NotifyIconData.hIcon);
        m_NotifyIconData.hIcon = nullptr;
    }

    // Unregister the window class we used
    UnregisterClass(m_wszClassName, g_hInst);

    return 0;
}

HRESULT CBaseTrayIcon::RegisterWindowClass()
{
    swprintf_s(m_wszClassName, countof(m_wszClassName), L"LAVTrayIconClass%d", GetCurrentThreadId());

    WNDCLASSEX wx = {};
    wx.cbSize = sizeof(WNDCLASSEX);
    wx.lpfnWndProc = WindowProc;
    wx.hInstance = g_hInst;
    wx.lpszClassName = m_wszClassName;
    ATOM wndClass = RegisterClassEx(&wx);

    return !wndClass ? E_FAIL : S_OK;
}

HRESULT CBaseTrayIcon::CreateMessageWindow()
{
    m_hWnd = CreateWindowEx(0, m_wszClassName, L"LAV Tray Message Window", 0, 0, 0, 0, 0, HWND_MESSAGE, nullptr,
                            nullptr, nullptr);
    SetWindowLongPtr(m_hWnd, GWLP_USERDATA, LONG_PTR(this));
    return m_hWnd == nullptr ? E_FAIL : S_OK;
}

HRESULT CBaseTrayIcon::CreateTrayIconData()
{
    memset(&m_NotifyIconData, 0, sizeof(m_NotifyIconData));
    m_NotifyIconData.cbSize = sizeof(m_NotifyIconData);
    m_NotifyIconData.hWnd = m_hWnd;
    m_NotifyIconData.uID = TRAYICON;
    m_NotifyIconData.uFlags = NIF_ICON | NIF_TIP | NIF_MESSAGE;
    m_NotifyIconData.hIcon = (HICON)LoadImage(g_hInst, MAKEINTRESOURCE(m_resIcon), IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR);
    m_NotifyIconData.uCallbackMessage = MSG_TRAYICON;
    m_NotifyIconData.uVersion = NOTIFYICON_VERSION;
    wcscpy_s(m_NotifyIconData.szTip, m_wszName);

    return S_OK;
}

HRESULT CBaseTrayIcon::OpenPropPage()
{
    CheckPointer(m_pFilter, E_UNEXPECTED);
    m_bPropPageOpen = TRUE;
    RECT desktopRect;
    GetWindowRect(GetDesktopWindow(), &desktopRect);
    SetWindowPos(m_hWnd, 0, (desktopRect.right / 2) - PROP_WIDTH_OFFSET, (desktopRect.bottom / 2) - PROP_HEIGHT_OFFSET,
                 0, 0, SWP_NOZORDER | SWP_NOSIZE);
    CBaseDSPropPage::ShowPropPageDialog(m_pFilter, m_hWnd);
    m_bPropPageOpen = FALSE;
    return S_OK;
}

static BOOL CALLBACK enumWindowCallback(HWND hwnd, LPARAM lparam)
{
    HWND owner = (HWND)lparam;
    if (owner == GetWindow(hwnd, GW_OWNER))
    {
        SetForegroundWindow(hwnd);
        return FALSE;
    }
    return TRUE;
}

LRESULT CALLBACK CBaseTrayIcon::WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    CBaseTrayIcon *icon = (CBaseTrayIcon *)GetWindowLongPtr(hwnd, GWLP_USERDATA);
    switch (uMsg)
    {
    case WM_DESTROY:
        Shell_NotifyIcon(NIM_DELETE, &icon->m_NotifyIconData);
        PostQuitMessage(0);
        break;
    case MSG_QUIT: DestroyWindow(hwnd); break;
    case MSG_TRAYICON: {
        UINT trayMsg = LOWORD(lParam);
        if (icon)
        {
            switch (trayMsg)
            {
            case WM_LBUTTONUP:
                if (!icon->m_bPropPageOpen)
                {
                    icon->OpenPropPage();
                }
                else
                {
                    EnumThreadWindows(GetCurrentThreadId(), enumWindowCallback, (LPARAM)icon->m_hWnd);
                }
                break;
            case WM_RBUTTONUP:
            case WM_CONTEXTMENU:
                if (icon->m_bPropPageOpen)
                {
                    break;
                }
                HMENU hMenu = icon->GetPopupMenu();
                if (hMenu)
                {
                    POINT p;
                    GetCursorPos(&p);
                    SetForegroundWindow(hwnd);
                    int cmd = TrackPopupMenu(hMenu, TPM_RETURNCMD, p.x, p.y, 0, hwnd, nullptr);
                    PostMessage(hwnd, WM_NULL, 0, 0);
                    icon->ProcessMenuCommand(hMenu, cmd);
                    DestroyMenu(hMenu);
                }
                break;
            }
        }
    }
    break;
    }
    return DefWindowProc(hwnd, uMsg, wParam, lParam);
}


================================================
FILE: common/DSUtilLite/BaseTrayIcon.h
================================================
/*
 *      Copyright (C) 2010-2021 Hendrik Leppkes
 *      http://www.1f0.de
 *
 *  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 Street, Fifth Floor, Boston, MA 02110-1301 USA.
 */

#pragma once

#include <ShellAPI.h>

class CBaseTrayIcon
{
  public:
    CBaseTrayIcon(IBaseFilter *pFilter, const WCHAR *wszName, int resIcon);
    virtual ~CBaseTrayIcon(void);

    static BOOL ProcessBlackList();

  protected:
    virtual HRESULT CreateTrayIconData();

    virtual HMENU GetPopupMenu() { return nullptr; }
    virtual HRESULT ProcessMenuCommand(HMENU hMenu, int cmd) { return E_NOTIMPL; }

    HRESULT OpenPropPage();

  private:
    HRESULT StartMessageThread();
    HRESULT RegisterWindowClass();
    HRESULT CreateMessageWindow();

    DWORD TrayMessageThread();
    static unsigned int WINAPI InitialThreadProc(LPVOID pv);

    static LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);

  protected:
    IBaseFilter *m_pFilter;

  private:
    CAMEvent m_evSetupFinished{TRUE};

    HANDLE m_hThread = 0;
    HWND m_hWnd = 0;
    BOOL m_bPropPageOpen = FALSE;

    WCHAR m_wszClassName[64];
    const WCHAR *m_wszName = nullptr;
    int m_resIcon = 0;

    NOTIFYICONDATA m_NotifyIconData;
};


================================================
FILE: common/DSUtilLite/ByteParser.cpp
================================================
/*
 *      Copyright (C) 2010-2021 Hendrik Leppkes
 *      http://www.1f0.de
 *
 *  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 Street, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 *  Initial design and concept by Gabest and the MPC-HC Team, copyright under GPLv2
 */

#include "stdafx.h"
#include "ByteParser.h"

#pragma warning(push)
#pragma warning(disable : 4101)
#pragma warning(disable : 4244)
#pragma warning(disable : 5033)
extern "C"
{
#define AVCODEC_X86_MATHOPS_H
#include "libavcodec/get_bits.h"
};
#pragma warning(pop)

CByteParser::CByteParser(const BYTE *pData, size_t length)
    : m_pData(pData)
    , m_pEnd(pData + length)
{
    m_gbCtx = (GetBitContext *)av_mallocz(sizeof(GetBitContext));
    init_get_bits8(m_gbCtx, pData, (int)length);
}

CByteParser::~CByteParser()
{
    av_freep(&m_gbCtx);
}

unsigned int CByteParser::BitRead(unsigned int numBits, bool peek)
{
    if (numBits == 0)
        return 0;

    if (peek)
        return show_bits_long(m_gbCtx, numBits);
    else
        return get_bits_long(m_gbCtx, numBits);
}

void CByteParser::BitSkip(unsigned int numBits)
{
    if (numBits == 0)
        return;

    skip_bits_long(m_gbCtx, numBits);
}

size_t CByteParser::RemainingBits() const
{
    int bits = get_bits_left(m_gbCtx);
    if (bits < 0)
        return 0;
    return (size_t)bits;
}

size_t CByteParser::Pos() const
{
    return (size_t)(m_pEnd - m_pData - Remaining());
}

// Exponential Golomb Coding (with k = 0)
// As used in H.264/MPEG-4 AVC
// http://en.wikipedia.org/wiki/Exponential-Golomb_coding

unsigned CByteParser::UExpGolombRead()
{
    int n = -1;
    for (BYTE b = 0; !b && RemainingBits(); n++)
    {
        b = get_bits1(m_gbCtx);
    }
    if (!RemainingBits())
        return 0;
    return ((1 << n) | BitRead(n)) - 1;
}

int CByteParser::SExpGolombRead()
{
    int k = UExpGolombRead() + 1;
    // Negative numbers are interleaved in the series
    // unsigned: 0, 1,  2, 3,  4, 5,  6, ...
    //   signed: 0, 1, -1, 2, -2, 3, -3, ....
    // So all even numbers are negative (last bit = 0)
    // Note that we added 1 to the unsigned value already, so the check is inverted
    if (k & 1)
        return -(k >> 1);
    else
        return (k >> 1);
}

void CByteParser::BitByteAlign()
{
    align_get_bits(m_gbCtx);
}


================================================
FILE: common/DSUtilLite/ByteParser.h
================================================
/*
 *      Copyright (C) 2010-2021 Hendrik Leppkes
 *      http://www.1f0.de
 *
 *  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 Street, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 *  Initial design and concept by Gabest and the MPC-HC Team, copyright under GPLv2
 */

#pragma once

struct GetBitContext;

/**
 * Byte Parser Utility Class
 */
class CByteParser
{
  public:
    /** Construct a Byte Parser to parse the given BYTE array with the given length */
    CByteParser(const BYTE *pData, size_t length);
    virtual ~CByteParser();

    /** Read 1 to 32 Bits from the Byte Array. If peek is set, the data will just be returned, and the buffer not
     * advanced. */
    unsigned int BitRead(unsigned int numBits, bool peek = false);

    /** Skip any number of bits from the byte array */
    void BitSkip(unsigned int numBits);

    /** Read a unsigned number in Exponential Golomb encoding (with k = 0) */
    unsigned int UExpGolombRead();
    /** Read a signed number in Exponential Golomb encoding (with k = 0) */
    int SExpGolombRead();

    /** Pointer to the start of the byte array */
    const BYTE *Start() const { return m_pData; }
    /** Pointer to the end of the byte array */
    const BYTE *End() const { return m_pEnd; }

    /** Overall length (in bytes) of the byte array */
    size_t Length() const;

    size_t Pos() const;

    /** Number of bytes remaining in the array */
    size_t Remaining() const { return RemainingBits() >> 3; }

    /** Number of bits remaining */
    size_t RemainingBits() const;

    void BitByteAlign();

  private:
    GetBitContext *m_gbCtx = nullptr;

    const BYTE *m_pData = nullptr;
    const BYTE *m_pEnd = nullptr;
};


================================================
FILE: common/DSUtilLite/CueSheet.cpp
================================================
/*
 *      Copyright (C) 2010-2021 Hendrik Leppkes
 *      http://www.1f0.de
 *
 *  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 Street, Fifth Floor, Boston, MA 02110-1301 USA.
 */

#include "stdafx.h"
#include "CueSheet.h"

#include <algorithm>
#include <sstream>
#include <regex>

using namespace std;

enum class ParserState
{
    GLOBAL,
    FILE,
    TRACK
};

typedef string::value_type char_t;

static char_t up_char(char_t ch)
{
    return use_facet<ctype<char_t>>(locale()).toupper(ch);
}

static string toupper(const string &src)
{
    string result;
    transform(src.begin(), src.end(), back_inserter(result), up_char);
    return result;
}

static void str_replace(string &s, const string &search, const string &replace)
{
    for (string::size_type pos = 0;; pos += replace.length())
    {
        pos = s.find(search, pos);
        if (pos == string::npos)
            break;

        s.erase(pos, search.length());
        s.insert(pos, replace);
    }
}

static string GetCueParam(string line, bool firstWord = false)
{
    const string delims(" \t\n\r\"'");
    string::size_type idx;
    // Find beginning of the command word
    idx = line.find_first_not_of(delims);
    // Find end of the command word
    idx = line.find_first_of(delims, idx);
    // Find beginning of param
    idx = line.find_first_not_of(delims, idx);
    if (idx == string::npos)
        return string();
    string param = line.substr(idx);
    // trim spaces off the end
    param = param.substr(0, param.find_last_not_of(delims) + 1);
    // replace escaped quotes
    str_replace(param, "\\\"", "\"");

    if (firstWord)
    {
        idx = param.find_first_of(delims);
        if (idx != string::npos)
            param = param.substr(0, idx);
    }
    return param;
}

static REFERENCE_TIME ParseCueIndex(string line)
{
    int index, m, s, f, ret;
    ret = sscanf_s(line.c_str(), " INDEX %d %d:%d:%d", &index, &m, &s, &f);
    if (ret == 4)
        return (m * 60i64 + s) * 10000000i64 + (f * 10000000i64 / 75);
    else
        return 0;
}

CCueSheet::CCueSheet()
{
}

CCueSheet::~CCueSheet()
{
}

HRESULT CCueSheet::Parse(string cueSheet)
{
    DbgLog((LOG_TRACE, 10, L"CCueSheet::Parse(): Parsing Cue Sheet"));
    int trackCount = 0;
    ParserState state(ParserState::GLOBAL);
    stringstream cueSheetStream(cueSheet);
    string line;
    while (getline(cueSheetStream, line))
    {
        string word;
        (stringstream(line)) >> word;
        word = toupper(word);
        switch (state)
        {
        case ParserState::GLOBAL:
            if (word == "PERFORMER")
            {
                m_Performer = GetCueParam(line);
            }
            else if (word == "TITLE")
            {
                m_Title = GetCueParam(line);
            }
            else if (word == "FILE")
            {
                state = ParserState::FILE;
            }
            break;
        case ParserState::FILE:
        case ParserState::TRACK:
            if (word == "FILE")
            {
                DbgLog((LOG_TRACE, 10, L"CCueSheet::Parse(): Multiple FILE segments not supported."));
                return E_FAIL;
            }
            if (word == "TRACK")
            {
                state = ParserState::TRACK;
                trackCount++;

                string id = GetCueParam(line, true);
                Track track{trackCount - 1, id, "Title " + id, 0, ""};
                m_Tracks.push_back(track);
            }
            else if (state == ParserState::TRACK)
            {
                if (word == "TITLE")
                {
                    m_Tracks.back().Title = GetCueParam(line);
                }
                else if (word == "INDEX")
                {
                    m_Tracks.back().Time = ParseCueIndex(line);
                }
                else if (word == "PERFORMER")
                {
                    m_Tracks.back().Performer = GetCueParam(line);
                }
            }
            break;
        }
    }

    return S_OK;
}

std::string CCueSheet::FormatTrack(Track &track)
{
    string trackFormat = track.Id + ". ";
    if (!track.Performer.empty())
        trackFormat += track.Performer + " - ";
    trackFormat += track.Title;
    return trackFormat;
}


================================================
FILE: common/DSUtilLite/CueSheet.h
================================================
/*
 *      Copyright (C) 2010-2021 Hendrik Leppkes
 *      http://www.1f0.de
 *
 *  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 Street, Fifth Floor, Boston, MA 02110-1301 USA.
 */

#pragma once

#include <string>
#include <list>

class CCueSheet
{
  public:
    CCueSheet();
    ~CCueSheet();

    HRESULT Parse(std::string cueSheet);

  public:
    struct Track
    {
        int index;
        std::string Id;
        std::string Title;
        REFERENCE_TIME Time;
        std::string Performer;
    };

    std::string m_Performer;
    std::string m_Title;
    std::list<Track> m_Tracks;

    std::string FormatTrack(Track &track);
};


================================================
FILE: common/DSUtilLite/DSMResourceBag.cpp
================================================
#include "stdafx.h"
#include "DSMResourceBag.h"

#include <algorithm>

CDSMResource::CDSMResource()
    : mime(L"application/octet-stream")
{
}

CDSMResource::CDSMResource(LPCWSTR name, LPCWSTR desc, LPCWSTR mime, BYTE *pData, int len, DWORD_PTR tag)
{
    this->name = name;
    this->desc = desc;
    this->mime = mime;
    data.resize(len);
    memcpy(data.data(), pData, data.size());
    this->tag = tag;
}

CDSMResource &CDSMResource::operator=(const CDSMResource &r)
{
    if (this != &r)
    {
        name = r.name;
        desc = r.desc;
        mime = r.mime;
        data = r.data;
        tag = r.tag;
    }
    return *this;
}

CDSMResourceBag::CDSMResourceBag()
{
}

CDSMResourceBag::~CDSMResourceBag()
{
    m_resources.clear();
}

STDMETHODIMP_(DWORD) CDSMResourceBag::ResGetCount()
{
    CAutoLock lock(&m_csResources);
    return (DWORD)m_resources.size();
}

STDMETHODIMP CDSMResourceBag::ResGet(DWORD iIndex, BSTR *ppName, BSTR *ppDesc, BSTR *ppMime, BYTE **ppData,
                                     DWORD *pDataLen, DWORD_PTR *pTag)
{
    CAutoLock lock(&m_csResources);

    if (ppData && !pDataLen)
        return E_INVALIDARG;

    if (iIndex >= m_resources.size())
        return E_INVALIDARG;

    CDSMResource &r = m_resources[iIndex];

    if (ppName)
    {
        *ppName = SysAllocString(r.name.data());
        if (*ppName == NULL)
            return E_OUTOFMEMORY;
    }
    if (ppDesc)
    {
        *ppDesc = SysAllocString(r.desc.data());
        if (*ppDesc == NULL)
            return E_OUTOFMEMORY;
    }
    if (ppMime)
    {
        *ppMime = SysAllocString(r.mime.data());
        if (*ppMime == NULL)
            return E_OUTOFMEMORY;
    }
    if (ppData)
    {
        *pDataLen = (DWORD)r.data.size();
        memcpy(*ppData = (BYTE *)CoTaskMemAlloc(*pDataLen), r.data.data(), *pDataLen);
    }
    if (pTag)
    {
        *pTag = r.tag;
    }

    return S_OK;
}

STDMETHODIMP CDSMResourceBag::ResSet(DWORD iIndex, LPCWSTR pName, LPCWSTR pDesc, LPCWSTR pMime, const BYTE *pData,
                                     DWORD len, DWORD_PTR tag)
{
    CAutoLock lock(&m_csResources);

    if (iIndex >= m_resources.size())
        return E_INVALIDARG;

    CDSMResource &r = m_resources[iIndex];

    if (pName)
        r.name = pName;

    if (pDesc)
        r.desc = pDesc;

    if (pMime)
        r.mime = pMime;

    if (pData || len == 0)
    {
        r.data.resize(len);
        if (pData)
        {
            memcpy(r.data.data(), pData, r.data.size());
        }
    }

    r.tag = tag;

    return S_OK;
}

STDMETHODIMP CDSMResourceBag::ResAppend(LPCWSTR pName, LPCWSTR pDesc, LPCWSTR pMime, BYTE *pData, DWORD len,
                                        DWORD_PTR tag)
{
    CAutoLock lock(&m_csResources);
    m_resources.push_back(CDSMResource());
    return ResSet((DWORD)m_resources.size() - 1, pName, pDesc, pMime, pData, len, tag);
}

STDMETHODIMP CDSMResourceBag::ResRemoveAt(DWORD iIndex)
{
    CAutoLock lock(&m_csResources);

    if (iIndex >= m_resources.size())
        return E_INVALIDARG;

    m_resources.erase(m_resources.cbegin() + iIndex);

    return S_OK;
}

STDMETHODIMP CDSMResourceBag::ResRemoveAll(DWORD_PTR tag)
{
    CAutoLock lock(&m_csResources);

    if (tag)
    {
        m_resources.erase(
            std::remove_if(m_resources.begin(), m_resources.end(), [&](const CDSMResource &r) { return r.tag == tag; }),
            m_resources.end());
    }
    else
    {
        m_resources.clear();
    }

    return S_OK;
}


================================================
FILE: common/DSUtilLite/DSMResourceBag.h
================================================
#pragma once

#include "IDSMResourceBag.h"

#include <string>
#include <vector>
#include <map>

class CDSMResource
{
  public:
    CDSMResource();
    CDSMResource(LPCWSTR name, LPCWSTR desc, LPCWSTR mime, BYTE *pData, int len, DWORD_PTR tag = 0);

    CDSMResource &operator=(const CDSMResource &r);

  public:
    DWORD_PTR tag;
    std::wstring name, desc, mime;
    std::vector<BYTE> data;
};

class CDSMResourceBag : public IDSMResourceBag
{
  public:
    CDSMResourceBag();
    virtual ~CDSMResourceBag();

    // IDSMResourceBag
    STDMETHODIMP_(DWORD) ResGetCount();
    STDMETHODIMP ResGet(DWORD iIndex, BSTR *ppName, BSTR *ppDesc, BSTR *ppMime, BYTE **ppData, DWORD *pDataLen,
                        DWORD_PTR *pTag = nullptr);
    STDMETHODIMP ResSet(DWORD iIndex, LPCWSTR pName, LPCWSTR pDesc, LPCWSTR pMime, const BYTE *pData, DWORD len,
                        DWORD_PTR tag = 0);
    STDMETHODIMP ResAppend(LPCWSTR pName, LPCWSTR pDesc, LPCWSTR pMime, BYTE *pData, DWORD len, DWORD_PTR tag = 0);
    STDMETHODIMP ResRemoveAt(DWORD iIndex);
    STDMETHODIMP ResRemoveAll(DWORD_PTR tag = 0);

  private:
    CCritSec m_csResources;
    std::vector<CDSMResource> m_resources;
};


================================================
FILE: common/DSUtilLite/DSUtilLite.vcxproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup Label="ProjectConfigurations">
    <ProjectConfiguration Include="Debug|Win32">
      <Configuration>Debug</Configuration>
      <Platform>Win32</Platform>
    </ProjectConfiguration>
    <ProjectConfiguration Include="Debug|x64">
      <Configuration>Debug</Configuration>
      <Platform>x64</Platform>
    </ProjectConfiguration>
    <ProjectConfiguration Include="Release|Win32">
      <Configuration>Release</Configuration>
      <Platform>Win32</Platform>
    </ProjectConfiguration>
    <ProjectConfiguration Include="Release|x64">
      <Configuration>Release</Configuration>
      <Platform>x64</Platform>
    </ProjectConfiguration>
  </ItemGroup>
  <PropertyGroup Label="Globals">
    <ProjectGuid>{0A058024-41F4-4509-97D2-803A1806CE86}</ProjectGuid>
    <Keyword>Win32Proj</Keyword>
    <RootNamespace>DSUtilLite</RootNamespace>
  </PropertyGroup>
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
  <Import Project="$(SolutionDir)common\platform.props" />
  <PropertyGroup Condition="'$(Configuration)'=='Debug'" Label="Configuration">
    <ConfigurationType>StaticLibrary</ConfigurationType>
    <UseDebugLibraries>true</UseDebugLibraries>
    <CharacterSet>Unicode</CharacterSet>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)'=='Release'" Label="Configuration">
    <ConfigurationType>StaticLibrary</ConfigurationType>
    <UseDebugLibraries>false</UseDebugLibraries>
    <WholeProgramOptimization>true</WholeProgramOptimization>
    <CharacterSet>Unicode</CharacterSet>
  </PropertyGroup>
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
  <Import Project="$(SolutionDir)common\common.props" />
  <ImportGroup Label="ExtensionSettings">
  </ImportGroup>
  <ImportGroup Label="PropertySheets">
    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
  </ImportGroup>
  <PropertyGroup Label="UserMacros" />
  <PropertyGroup Condition="'$(Configuration)'=='Debug'">
    <TargetName>dsutild</TargetName>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)'=='Release'">
    <TargetName>dsutil</TargetName>
  </PropertyGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)'=='Debug'">
    <ClCompile>
      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
    </ClCompile>
    <PreBuildEvent>
      <Command>"$(SolutionDir)common\genversion.bat"</Command>
    </PreBuildEvent>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)'=='Release'">
    <ClCompile>
      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
    </ClCompile>
    <PreBuildEvent>
      <Command>"$(SolutionDir)common\genversion.bat"</Command>
    </PreBuildEvent>
  </ItemDefinitionGroup>
  <ItemGroup>
    <ClInclude Include="BaseDSPropPage.h" />
    <ClInclude Include="CueSheet.h" />
    <ClInclude Include="DSMResourceBag.h" />
    <ClInclude Include="MediaSampleSideData.h" />
    <ClInclude Include="PopupMenu.h" />
    <ClInclude Include="BaseTrayIcon.h" />
    <ClInclude Include="ByteParser.h" />
    <ClInclude Include="DeCSS\CSSauth.h" />
    <ClInclude Include="DeCSS\CSSscramble.h" />
    <ClInclude Include="DeCSS\DeCSSInputPin.h" />
    <ClInclude Include="DShowUtil.h" />
    <ClInclude Include="FloatingAverage.h" />
    <ClInclude Include="FontInstaller.h" />
    <ClInclude Include="gpu_memcpy_sse4.h" />
    <ClInclude Include="growarray.h" />
    <ClInclude Include="H264Nalu.h" />
    <ClInclude Include="lavf_log.h" />
    <ClInclude Include="rand_sse.h" />
    <ClInclude Include="registry.h" />
    <ClInclude Include="stdafx.h" />
    <ClInclude Include="SynchronizedQueue.h" />
    <ClInclude Include="timer.h" />
  </ItemGroup>
  <ItemGroup>
    <ClCompile Include="BaseDSPropPage.cpp" />
    <ClCompile Include="CueSheet.cpp" />
    <ClCompile Include="DSMResourceBag.cpp" />
    <ClCompile Include="MediaSampleSideData.cpp" />
    <ClCompile Include="PopupMenu.cpp" />
    <ClCompile Include="BaseTrayIcon.cpp" />
    <ClCompile Include="ByteParser.cpp" />
    <ClCompile Include="DeCSS\CSSauth.cpp" />
    <ClCompile Include="DeCSS\CSSscramble.cpp" />
    <ClCompile Include="DeCSS\DeCSSInputPin.cpp" />
    <ClCompile Include="DShowUtil.cpp" />
    <ClCompile Include="filterreg.cpp" />
    <ClCompile Include="FontInstaller.cpp" />
    <ClCompile Include="H264Nalu.cpp" />
    <ClCompile Include="locale.cpp" />
    <ClCompile Include="registry.cpp" />
    <ClCompile Include="stdafx.cpp">
      <PrecompiledHeader>Create</PrecompiledHeader>
    </ClCompile>
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\baseclasses\baseclasses.vcxproj">
      <Project>{e8a3f6fa-ae1c-4c8e-a0b6-9c8480324eaa}</Project>
    </ProjectReference>
  </ItemGroup>
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
  <ImportGroup Label="ExtensionTargets">
  </ImportGroup>
</Project>


================================================
FILE: common/DSUtilLite/DSUtilLite.vcxproj.filters
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup>
    <Filter Include="Source Files">
      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
    </Filter>
    <Filter Include="Header Files">
      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
    </Filter>
    <Filter Include="Resource Files">
      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
    </Filter>
    <Filter Include="Header Files\DeCSS">
      <UniqueIdentifier>{a130de5c-2e03-4582-92a8-2675b370e46f}</UniqueIdentifier>
    </Filter>
    <Filter Include="Source Files\DeCSS">
      <UniqueIdentifier>{b645319e-a7a0-4188-b5cb-516008bf32c5}</UniqueIdentifier>
    </Filter>
  </ItemGroup>
  <ItemGroup>
    <ClInclude Include="stdafx.h">
      <Filter>Header Files</Filter>
    </ClInclude>
    <ClInclude Include="H264Nalu.h">
      <Filter>Header Files</Filter>
    </ClInclude>
    <ClInclude Include="DShowUtil.h">
      <Filter>Header Files</Filter>
    </ClInclude>
    <ClInclude Include="registry.h">
      <Filter>Header Files</Filter>
    </ClInclude>
    <ClInclude Include="growarray.h">
      <Filter>Header Files</Filter>
    </ClInclude>
    <ClInclude Include="FloatingAverage.h">
      <Filter>Header Files</Filter>
    </ClInclude>
    <ClInclude Include="BaseDSPropPage.h">
      <Filter>Header Files</Filter>
    </ClInclude>
    <ClInclude Include="FontInstaller.h">
      <Filter>Header Files</Filter>
    </ClInclude>
    <ClInclude Include="DeCSS\CSSauth.h">
      <Filter>Header Files\DeCSS</Filter>
    </ClInclude>
    <ClInclude Include="DeCSS\CSSscramble.h">
      <Filter>Header Files\DeCSS</Filter>
    </ClInclude>
    <ClInclude Include="DeCSS\DeCSSInputPin.h">
      <Filter>Header Files\DeCSS</Filter>
    </ClInclude>
    <ClInclude Include="ByteParser.h">
      <Filter>Header Files</Filter>
    </ClInclude>
    <ClInclude Include="lavf_log.h">
      <Filter>Header Files</Filter>
    </ClInclude>
    <ClInclude Include="gpu_memcpy_sse4.h">
      <Filter>Header Files</Filter>
    </ClInclude>
    <ClInclude Include="rand_sse.h">
      <Filter>Header Files</Filter>
    </ClInclude>
    <ClInclude Include="SynchronizedQueue.h">
      <Filter>Header Files</Filter>
    </ClInclude>
    <ClInclude Include="BaseTrayIcon.h">
      <Filter>Header Files</Filter>
    </ClInclude>
    <ClInclude Include="PopupMenu.h">
      <Filter>Header Files</Filter>
    </ClInclude>
    <ClInclude Include="CueSheet.h">
      <Filter>Header Files</Filter>
    </ClInclude>
    <ClInclude Include="timer.h">
      <Filter>Header Files</Filter>
    </ClInclude>
    <ClInclude Include="DSMResourceBag.h">
      <Filter>Header Files</Filter>
    </ClInclude>
    <ClInclude Include="MediaSampleSideData.h">
      <Filter>Header Files</Filter>
    </ClInclude>
  </ItemGroup>
  <ItemGroup>
    <ClCompile Include="stdafx.cpp">
      <Filter>Source Files</Filter>
    </ClCompile>
    <ClCompile Include="H264Nalu.cpp">
      <Filter>Source Files</Filter>
    </ClCompile>
    <ClCompile Include="filterreg.cpp">
      <Filter>Source Files</Filter>
    </ClCompile>
    <ClCompile Include="locale.cpp">
      <Filter>Source Files</Filter>
    </ClCompile>
    <ClCompile Include="DShowUtil.cpp">
      <Filter>Source Files</Filter>
    </ClCompile>
    <ClCompile Include="registry.cpp">
      <Filter>Source Files</Filter>
    </ClCompile>
    <ClCompile Include="BaseDSPropPage.cpp">
      <Filter>Source Files</Filter>
    </ClCompile>
    <ClCompile Include="FontInstaller.cpp">
      <Filter>Source Files</Filter>
    </ClCompile>
    <ClCompile Include="DeCSS\CSSauth.cpp">
      <Filter>Source Files\DeCSS</Filter>
    </ClCompile>
    <ClCompile Include="DeCSS\CSSscramble.cpp">
      <Filter>Source Files\DeCSS</Filter>
    </ClCompile>
    <ClCompile Include="DeCSS\DeCSSInputPin.cpp">
      <Filter>Source Files\DeCSS</Filter>
    </ClCompile>
    <ClCompile Include="ByteParser.cpp">
      <Filter>Source Files</Filter>
    </ClCompile>
    <ClCompile Include="BaseTrayIcon.cpp">
      <Filter>Source Files</Filter>
    </ClCompile>
    <ClCompile Include="PopupMenu.cpp">
      <Filter>Source Files</Filter>
    </ClCompile>
    <ClCompile Include="CueSheet.cpp">
      <Filter>Source Files</Filter>
    </ClCompile>
    <ClCompile Include="DSMResourceBag.cpp">
      <Filter>Source Files</Filter>
    </ClCompile>
    <ClCompile Include="MediaSampleSideData.cpp">
      <Filter>Source Files</Filter>
    </ClCompile>
  </ItemGroup>
</Project>

================================================
FILE: common/DSUtilLite/DShowUtil.cpp
================================================
/*
 *      Copyright (C) 2010-2021 Hendrik Leppkes
 *      http://www.1f0.de
 *
 *  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 Street, Fifth Floor, Boston, MA 02110-1301 USA.
 */

#include "stdafx.h"
#include "DShowUtil.h"

#include <Shlwapi.h>

#include <dvdmedia.h>
#include "moreuuids.h"

#include "registry.h"

#include "IMediaSideDataFFmpeg.h"

//
// Usage: SetThreadName (-1, "MainThread");
//
typedef struct tagTHREADNAME_INFO
{
    DWORD dwType;     // must be 0x1000
    LPCSTR szName;    // pointer to name (in user addr space)
    DWORD dwThreadID; // thread ID (-1=caller thread)
    DWORD dwFlags;    // reserved for future use, must be zero
} THREADNAME_INFO;

const DWORD MS_VC_EXCEPTION = 0x406D1388;

void SetThreadName(DWORD dwThreadID, LPCSTR szThreadName)
{
    THREADNAME_INFO info;
    info.dwType = 0x1000;
    info.szName = szThreadName;
    info.dwThreadID = dwThreadID;
    info.dwFlags = 0;

    __try
    {
        RaiseException(MS_VC_EXCEPTION, 0, sizeof(info) / sizeof(ULONG_PTR), (ULONG_PTR *)&info);
    }
    __except (EXCEPTION_EXECUTE_HANDLER)
    {
    }
}

#ifdef DEBUG

#include <Shlobj.h>
#include <Shlwapi.h>

extern HANDLE m_hOutput;
volatile LONG hOutputCounter = 0;
extern HRESULT DbgUniqueProcessName(LPCTSTR inName, LPTSTR outName);
void DbgSetLogFile(LPCTSTR szFile)
{
    HANDLE hOutput =
        CreateFile(szFile, GENERIC_WRITE, FILE_SHARE_READ, nullptr, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, nullptr);

    if (INVALID_HANDLE_VALUE == hOutput && GetLastError() == ERROR_SHARING_VIOLATION)
    {
        TCHAR uniqueName[MAX_PATH] = {0};
        if (SUCCEEDED(DbgUniqueProcessName(szFile, uniqueName)))
        {
            hOutput = CreateFile(uniqueName, GENERIC_WRITE, FILE_SHARE_READ, nullptr, CREATE_ALWAYS,
                                 FILE_ATTRIBUTE_NORMAL, nullptr);
        }
    }

    if (hOutput != INVALID_HANDLE_VALUE)
    {
        if (InterlockedCompareExchangePointer(&m_hOutput, hOutput, INVALID_HANDLE_VALUE) != INVALID_HANDLE_VALUE)
            CloseHandle(hOutput);
    }

    InterlockedIncrement(&hOutputCounter);
}

void DbgSetLogFileDesktop(LPCTSTR szFile)
{
    TCHAR szLogPath[512];
    SHGetFolderPath(nullptr, CSIDL_DESKTOPDIRECTORY, nullptr, 0, szLogPath);
    PathAppend(szLogPath, szFile);
    DbgSetLogFile(szLogPath);
}

void DbgCloseLogFile()
{
    LONG count = InterlockedDecrement(&hOutputCounter);
    if (count == 0 && m_hOutput != INVALID_HANDLE_VALUE)
    {
        FlushFileBuffers(m_hOutput);
        CloseHandle(m_hOutput);
        m_hOutput = INVALID_HANDLE_VALUE;
    }
}
#endif

void split(const std::string &text, const std::string &separators, std::list<std::string> &words)
{
    size_t n = text.length();
    size_t start, stop;

    start = text.find_first_not_of(separators);
    while ((start >= 0) && (start < n))
    {
        stop = text.find_first_of(separators, start);
        if ((stop < 0) || (stop > n))
            stop = n;
        words.push_back(text.substr(start, stop - start));
        start = text.find_first_not_of(separators, stop + 1);
    }
}

IBaseFilter *FindFilter(const GUID &clsid, IFilterGraph *pFG)
{
    IBaseFilter *pFilter = nullptr;
    IEnumFilters *pEnumFilters = nullptr;
    if (pFG && SUCCEEDED(pFG->EnumFilters(&pEnumFilters)))
    {
        for (IBaseFilter *pBF = nullptr; S_OK == pEnumFilters->Next(1, &pBF, 0);)
        {
            GUID clsid2;
            if (SUCCEEDED(pBF->GetClassID(&clsid2)) && clsid == clsid2)
            {
                pFilter = pBF;
                break;
            }
            SafeRelease(&pBF);
        }
        SafeRelease(&pEnumFilters);
    }

    return pFilter;
}

BOOL FilterInGraph(const GUID &clsid, IFilterGraph *pFG)
{
    BOOL bFound = FALSE;
    IBaseFilter *pFilter = nullptr;

    pFilter = FindFilter(clsid, pFG);
    bFound = (pFilter != nullptr);
    SafeRelease(&pFilter);

    return bFound;
}

BOOL FilterInGraphWithInputSubtype(const GUID &clsid, IFilterGraph *pFG, const GUID &clsidSubtype)
{
    BOOL bFound = FALSE;
    IBaseFilter *pFilter = nullptr;

    pFilter = FindFilter(clsid, pFG);

    if (pFilter)
    {
        IEnumPins *pPinEnum = nullptr;
        pFilter->EnumPins(&pPinEnum);
        IPin *pPin = nullptr;
        while ((S_OK == pPinEnum->Next(1, &pPin, nullptr)) && pPin)
        {
            PIN_DIRECTION dir;
            pPin->QueryDirection(&dir);
            if (dir == PINDIR_INPUT)
            {
                AM_MEDIA_TYPE mt;
                pPin->ConnectionMediaType(&mt);

                if (mt.subtype == clsidSubtype)
                {
                    bFound = TRUE;
                }
                FreeMediaType(mt);
            }
            SafeRelease(&pPin);

            if (bFound)
                break;
        }

        SafeRelease(&pPinEnum);
        SafeRelease(&pFilter);
    }

    return bFound;
}

std::wstring WStringFromGUID(const GUID &guid)
{
    WCHAR null[128] = {0}, buff[128];
    StringFromGUID2(GUID_NULL, null, 127);
    return std::wstring(StringFromGUID2(guid, buff, 127) > 0 ? buff : null);
}

int SafeMultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, LPWSTR lpWideCharStr,
                            int cchWideChar)
{
    int len = MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, lpWideCharStr, cchWideChar);
    if (cchWideChar)
    {
        if (len == cchWideChar || (len == 0 && GetLastError() == ERROR_INSUFFICIENT_BUFFER))
        {
            lpWideCharStr[cchWideChar - 1] = 0;
        }
        else if (len == 0)
        {
            DWORD dwErr = GetLastError();
            if (dwErr == ERROR_NO_UNICODE_TRANSLATION && CodePage == CP_UTF8)
            {
                return SafeMultiByteToWideChar(CP_ACP, dwFlags, lpMultiByteStr, cbMultiByte, lpWideCharStr,
                                               cchWideChar);
            }
            else if (dwErr == ERROR_NO_UNICODE_TRANSLATION && (dwFlags & MB_ERR_INVALID_CHARS))
            {
                return SafeMultiByteToWideChar(CP_UTF8, (dwFlags & ~MB_ERR_INVALID_CHARS), lpMultiByteStr, cbMultiByte,
                                               lpWideCharStr, cchWideChar);
            }
            lpWideCharStr[0] = 0;
        }
    }
    return len;
}

int SafeWideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, LPSTR lpMultiByteStr,
                            int cbMultiByte, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar)
{
    int len = WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, lpMultiByteStr, cbMultiByte,
                                  lpDefaultChar, lpUsedDefaultChar);
    if (cbMultiByte)
    {
        if (len == cbMultiByte || (len == 0 && GetLastError() == ERROR_INSUFFICIENT_BUFFER))
        {
            lpMultiByteStr[cbMultiByte - 1] = 0;
        }
        else if (len == 0)
        {
            lpMultiByteStr[0] = 0;
        }
    }
    return len;
}

LPWSTR CoTaskGetWideCharFromMultiByte(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte)
{
    int len = MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, nullptr, 0);
    if (len)
    {
        LPWSTR pszWideString = (LPWSTR)CoTaskMemAlloc(len * sizeof(WCHAR));
        MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, pszWideString, len);

        return pszWideString;
    }
    else
    {
        DWORD dwErr = GetLastError();
        if (dwErr == ERROR_NO_UNICODE_TRANSLATION && CodePage == CP_UTF8)
        {
            return CoTaskGetWideCharFromMultiByte(CP_ACP, dwFlags, lpMultiByteStr, cbMultiByte);
        }
        else if (dwErr == ERROR_NO_UNICODE_TRANSLATION && (dwFlags & MB_ERR_INVALID_CHARS))
        {
            return CoTaskGetWideCharFromMultiByte(CP_UTF8, (dwFlags & ~MB_ERR_INVALID_CHARS), lpMultiByteStr,
                                                  cbMultiByte);
        }
    }
    return NULL;
}

LPSTR CoTaskGetMultiByteFromWideChar(UINT CodePage, DWORD dwFlags, LPCWSTR lpMultiByteStr, int cbMultiByte)
{
    int len = WideCharToMultiByte(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, nullptr, 0, nullptr, nullptr);
    if (len)
    {
        LPSTR pszMBString = (LPSTR)CoTaskMemAlloc(len * sizeof(char));
        WideCharToMultiByte(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, pszMBString, len, nullptr, nullptr);

        return pszMBString;
    }
    return NULL;
}

BSTR ConvertCharToBSTR(const char *sz)
{
    bool acp = false;
    if (!sz || strlen(sz) == 0)
        return nullptr;

    WCHAR *wide = CoTaskGetWideCharFromMultiByte(CP_UTF8, MB_ERR_INVALID_CHARS, sz, -1);
    if (!wide)
        return nullptr;

    BSTR bstr = SysAllocString(wide);
    CoTaskMemFree(wide);

    return bstr;
}

IBaseFilter *GetFilterFromPin(IPin *pPin)
{
    CheckPointer(pPin, nullptr);

    PIN_INFO pi;
    if (pPin && SUCCEEDED(pPin->QueryPinInfo(&pi)))
    {
        return pi.pFilter;
    }

    return nullptr;
}

HRESULT NukeDownstream(IFilterGraph *pGraph, IPin *pPin)
{
    PIN_DIRECTION dir;
    if (pPin)
    {
        IPin *pPinTo = nullptr;
        if (FAILED(pPin->QueryDirection(&dir)))
            return E_FAIL;
        if (dir == PINDIR_OUTPUT)
        {
            if (SUCCEEDED(pPin->ConnectedTo(&pPinTo)) && pPinTo)
            {
                if (IBaseFilter *pFilter = GetFilterFromPin(pPinTo))
                {
                    NukeDownstream(pGraph, pFilter);
                    pGraph->Disconnect(pPinTo);
                    pGraph->Disconnect(pPin);
                    pGraph->RemoveFilter(pFilter);
                    SafeRelease(&pFilter);
                }
                SafeRelease(&pPinTo);
            }
        }
    }

    return S_OK;
}

HRESULT NukeDownstream(IFilterGraph *pGraph, IBaseFilter *pFilter)
{
    IEnumPins *pEnumPins = nullptr;
    if (pFilter && SUCCEEDED(pFilter->EnumPins(&pEnumPins)))
    {
        for (IPin *pPin = nullptr; S_OK == pEnumPins->Next(1, &pPin, 0); pPin = nullptr)
        {
            NukeDownstream(pGraph, pPin);
            SafeRelease(&pPin);
        }
        SafeRelease(&pEnumPins);
    }

    return S_OK;
}

// pPin - pin of our filter to start searching
// refiid - guid of the interface to find
// pUnknown - variable that'll receive the interface
HRESULT FindIntefaceInGraph(IPin *pPin, REFIID refiid, void **pUnknown)
{
    PIN_DIRECTION dir;
    pPin->QueryDirection(&dir);

    IPin *pOtherPin = nullptr;
    if (SUCCEEDED(pPin->ConnectedTo(&pOtherPin)) && pOtherPin)
    {
        IBaseFilter *pFilter = GetFilterFromPin(pOtherPin);
        SafeRelease(&pOtherPin);

        HRESULT hrFilter = pFilter->QueryInterface(refiid, pUnknown);
        if (FAILED(hrFilter))
        {
            IEnumPins *pPinEnum = nullptr;
            pFilter->EnumPins(&pPinEnum);

            HRESULT hrPin = E_FAIL;
            for (IPin *pOtherPin2 = nullptr; pPinEnum->Next(1, &pOtherPin2, 0) == S_OK; pOtherPin2 = nullptr)
            {
                PIN_DIRECTION pinDir;
                pOtherPin2->QueryDirection(&pinDir);
                if (dir == pinDir)
                {
                    hrPin = FindIntefaceInGraph(pOtherPin2, refiid, pUnknown);
                }
                SafeRelease(&pOtherPin2);
                if (SUCCEEDED(hrPin))
                    break;
            }
            hrFilter = hrPin;
            SafeRelease(&pPinEnum);
        }
        SafeRelease(&pFilter);

        if (SUCCEEDED(hrFilter))
        {
            return S_OK;
        }
    }
    return E_NOINTERFACE;
}

// pPin - pin of our filter to start searching
// refiid - guid of the interface to find
// pUnknown - variable that'll receive the interface
HRESULT FindPinIntefaceInGraph(IPin *pPin, REFIID refiid, void **pUnknown)
{
    PIN_DIRECTION dir;
    pPin->QueryDirection(&dir);

    IPin *pOtherPin = nullptr;
    if (SUCCEEDED(pPin->ConnectedTo(&pOtherPin)) && pOtherPin)
    {
        IBaseFilter *pFilter = nullptr;
        HRESULT hrFilter = pOtherPin->QueryInterface(refiid, pUnknown);

        if (FAILED(hrFilter))
        {
            pFilter = GetFilterFromPin(pOtherPin);

            IEnumPins *pPinEnum = nullptr;
            pFilter->EnumPins(&pPinEnum);

            HRESULT hrPin = E_FAIL;
            for (IPin *pOtherPin2 = nullptr; pPinEnum->Next(1, &pOtherPin2, 0) == S_OK; pOtherPin2 = nullptr)
            {
                PIN_DIRECTION pinDir;
                pOtherPin2->QueryDirection(&pinDir);
                if (dir == pinDir)
                {
                    hrPin = FindPinIntefaceInGraph(pOtherPin2, refiid, pUnknown);
                }
                SafeRelease(&pOtherPin2);
                if (SUCCEEDED(hrPin))
                    break;
            }
            hrFilter = hrPin;
            SafeRelease(&pPinEnum);
        }
        SafeRelease(&pFilter);
        SafeRelease(&pOtherPin);

        if (SUCCEEDED(hrFilter))
        {
            return S_OK;
        }
    }
    return E_NOINTERFACE;
}

// pPin - pin of our filter to start searching
// guid - guid of the filter to find
// ppFilter - variable that'll receive a AddRef'd reference to the filter
HRESULT FindFilterSafe(IPin *pPin, const GUID &guid, IBaseFilter **ppFilter, BOOL bReverse)
{
    CheckPointer(ppFilter, E_POINTER);
    CheckPointer(pPin, E_POINTER);
    HRESULT hr = S_OK;

    PIN_DIRECTION dir;
    pPin->QueryDirection(&dir);

    IPin *pOtherPin = nullptr;
    if (bReverse)
    {
        dir = (dir == PINDIR_INPUT) ? PINDIR_OUTPUT : PINDIR_INPUT;
        pOtherPin = pPin;
        pPin->AddRef();
        hr = S_OK;
    }
    else
    {
        hr = pPin->ConnectedTo(&pOtherPin);
    }
    if (SUCCEEDED(hr) && pOtherPin)
    {
        IBaseFilter *pFilter = GetFilterFromPin(pOtherPin);
        SafeRelease(&pOtherPin);

        HRESULT hrFilter = E_NOINTERFACE;
        CLSID filterGUID;
        if (SUCCEEDED(pFilter->GetClassID(&filterGUID)))
        {
            if (filterGUID == guid)
            {
                *ppFilter = pFilter;
                hrFilter = S_OK;
            }
            else
            {
                IEnumPins *pPinEnum = nullptr;
                pFilter->EnumPins(&pPinEnum);

                HRESULT hrPin = E_FAIL;
                for (IPin *pOtherPin2 = nullptr; pPinEnum->Next(1, &pOtherPin2, 0) == S_OK; pOtherPin2 = nullptr)
                {
                    PIN_DIRECTION pinDir;
                    pOtherPin2->QueryDirection(&pinDir);
                    if (dir == pinDir)
                    {
                        hrPin = FindFilterSafe(pOtherPin2, guid, ppFilter);
                    }
                    SafeRelease(&pOtherPin2);
                    if (SUCCEEDED(hrPin))
                        break;
                }
                hrFilter = hrPin;
                SafeRelease(&pPinEnum);
                SafeRelease(&pFilter);
            }
        }

        if (SUCCEEDED(hrFilter))
        {
            return S_OK;
        }
    }
    return E_NOINTERFACE;
}

// pPin - pin of our filter to start searching
// guid - guid of the filter to find
// ppFilter - variable that'll receive a AddRef'd reference to the filter
BOOL HasSourceWithType(IPin *pPin, const GUID &mediaType)
{
    CheckPointer(pPin, false);
    BOOL bFound = FALSE;

    PIN_DIRECTION dir;
    pPin->QueryDirection(&dir);

    IPin *pOtherPin = nullptr;
    if (SUCCEEDED(pPin->ConnectedTo(&pOtherPin)) && pOtherPin)
    {
        IBaseFilter *pFilter = GetFilterFromPin(pOtherPin);

        HRESULT hrFilter = E_NOINTERFACE;
        IEnumPins *pPinEnum = nullptr;
        pFilter->EnumPins(&pPinEnum);

        HRESULT hrPin = E_FAIL;
        for (IPin *pOtherPin2 = nullptr; !bFound && pPinEnum->Next(1, &pOtherPin2, 0) == S_OK; pOtherPin2 = nullptr)
        {
            if (pOtherPin2 != pOtherPin)
            {
                PIN_DIRECTION pinDir;
                pOtherPin2->QueryDirection(&pinDir);
                if (dir != pinDir)
                {
                    IEnumMediaTypes *pMediaTypeEnum = nullptr;
                    if (SUCCEEDED(pOtherPin2->EnumMediaTypes(&pMediaTypeEnum)))
                    {
                        for (AM_MEDIA_TYPE *mt = nullptr; pMediaTypeEnum->Next(1, &mt, 0) == S_OK; mt = nullptr)
                        {
                            if (mt->majortype == mediaType)
                            {
                                bFound = TRUE;
                            }
                            DeleteMediaType(mt);
                        }
                        SafeRelease(&pMediaTypeEnum);
                    }
                }
                else
                {
                    bFound = HasSourceWithType(pOtherPin2, mediaType);
                }
            }
            SafeRelease(&pOtherPin2);
        }
        SafeRelease(&pPinEnum);
        SafeRelease(&pFilter);
        SafeRelease(&pOtherPin);
    }
    return bFound;
}

// Similar to HasSourceWithType but also checks forward pins for future backwards joins
BOOL HasSourceWithTypeAdvanced(IPin *pPinInput, IPin *pPinOutput, const GUID &mediaType)
{
    // check the input pin backwards first
    if (pPinInput && HasSourceWithType(pPinInput, mediaType))
        return true;

    if (pPinOutput == NULL)
        return false;

    // and check the tree forwards
    BOOL bFound = FALSE;
    IPin *pOtherPin = nullptr;
    if (SUCCEEDED(pPinOutput->ConnectedTo(&pOtherPin)) && pOtherPin)
    {
        IBaseFilter *pFilter = GetFilterFromPin(pOtherPin);

        HRESULT hrFilter = E_NOINTERFACE;
        IEnumPins *pPinEnum = nullptr;
        pFilter->EnumPins(&pPinEnum);

        // Iterate over pins of the filter..
        HRESULT hrPin = E_FAIL;
        for (IPin *pOtherPin2 = nullptr; !bFound && pPinEnum->Next(1, &pOtherPin2, 0) == S_OK; pOtherPin2 = nullptr)
        {
            // ignore the pint we're connected to
            if (pOtherPin2 != pOtherPin)
            {
                PIN_DIRECTION pinDir;
                pOtherPin2->QueryDirection(&pinDir);

                // if its another input, go backwards there
                if (pinDir == PINDIR_INPUT)
                {
                    bFound = HasSourceWithType(pOtherPin2, mediaType);
                }
                // if its an output, go forwards
                else if (pinDir == PINDIR_OUTPUT)
                {
                    bFound = HasSourceWithTypeAdvanced(NULL, pOtherPin2, mediaType);
                }
            }
            SafeRelease(&pOtherPin2);
        }
        SafeRelease(&pPinEnum);
        SafeRelease(&pFilter);
        SafeRelease(&pOtherPin);
    }

    return bFound;
}

BOOL FilterInGraphSafe(IPin *pPin, const GUID &guid, BOOL bReverse)
{
    IBaseFilter *pFilter = nullptr;
    HRESULT hr = FindFilterSafe(pPin, guid, &pFilter, bReverse);
    if (SUCCEEDED(hr) && pFilter)
    {
        SafeRelease(&pFilter);
        return TRUE;
    }
    return FALSE;
}

unsigned int lav_xiphlacing(unsigned char *s, unsigned int v)
{
    unsigned int n = 0;

    while (v >= 0xff)
    {
        *s++ = 0xff;
        v -= 0xff;
        n++;
    }
    *s = v;
    n++;
    return n;
}

void videoFormatTypeHandler(const AM_MEDIA_TYPE &mt, BITMAPINFOHEADER **pBMI, REFERENCE_TIME *prtAvgTime,
                            DWORD *pDwAspectX, DWORD *pDwAspectY)
{
    videoFormatTypeHandler(mt.pbFormat, &mt.formattype, pBMI, prtAvgTime, pDwAspectX, pDwAspectY);
}

void videoFormatTypeHandler(const BYTE *format, const GUID *formattype, BITMAPINFOHEADER **pBMI,
                            REFERENCE_TIME *prtAvgTime, DWORD *pDwAspectX, DWORD *pDwAspectY)
{
    REFERENCE_TIME rtAvg = 0;
    BITMAPINFOHEADER *bmi = nullptr;
    DWORD dwAspectX = 0, dwAspectY = 0;

    if (!format)
        goto done;

    if (*formattype == FORMAT_VideoInfo)
    {
        VIDEOINFOHEADER *vih = (VIDEOINFOHEADER *)format;
        rtAvg = vih->AvgTimePerFrame;
        bmi = &vih->bmiHeader;
    }
    else if (*formattype == FORMAT_VideoInfo2)
    {
        VIDEOINFOHEADER2 *vih2 = (VIDEOINFOHEADER2 *)format;
        rtAvg = vih2->AvgTimePerFrame;
        bmi = &vih2->bmiHeader;
        dwAspectX = vih2->dwPictAspectRatioX;
        dwAspectY = vih2->dwPictAspectRatioY;
    }
    else if (*formattype == FORMAT_MPEGVideo)
    {
        MPEG1VIDEOINFO *mp1vi = (MPEG1VIDEOINFO *)format;
        rtAvg = mp1vi->hdr.AvgTimePerFrame;
        bmi = &mp1vi->hdr.bmiHeader;
    }
    else if (*formattype == FORMAT_MPEG2Video)
    {
        MPEG2VIDEOINFO *mp2vi = (MPEG2VIDEOINFO *)format;
        rtAvg = mp2vi->hdr.AvgTimePerFrame;
        bmi = &mp2vi->hdr.bmiHeader;
        dwAspectX = mp2vi->hdr.dwPictAspectRatioX;
        dwAspectY = mp2vi->hdr.dwPictAspectRatioY;
    }
    else
    {
        ASSERT(FALSE);
    }

done:
    if (pBMI)
    {
        *pBMI = bmi;
    }
    if (prtAvgTime)
    {
        *prtAvgTime = rtAvg;
    }
    if (pDwAspectX && pDwAspectY)
    {
        *pDwAspectX = dwAspectX;
        *pDwAspectY = dwAspectY;
    }
}

void audioFormatTypeHandler(const BYTE *format, const GUID *formattype, DWORD *pnSamples, WORD *pnChannels,
                            WORD *pnBitsPerSample, WORD *pnBlockAlign, 
Download .txt
gitextract_htgb5fag/

├── .clang-format
├── .editorconfig
├── .github/
│   └── FUNDING.yml
├── .gitignore
├── .gitmodules
├── CHANGELOG.txt
├── COPYING
├── LAVFilters.iss
├── LAVFilters.sln
├── README.md
├── build.bat
├── build_ffmpeg.sh
├── build_ffmpeg_msvc.sh
├── common/
│   ├── DSUtilLite/
│   │   ├── BaseDSPropPage.cpp
│   │   ├── BaseDSPropPage.h
│   │   ├── BaseTrayIcon.cpp
│   │   ├── BaseTrayIcon.h
│   │   ├── ByteParser.cpp
│   │   ├── ByteParser.h
│   │   ├── CueSheet.cpp
│   │   ├── CueSheet.h
│   │   ├── DSMResourceBag.cpp
│   │   ├── DSMResourceBag.h
│   │   ├── DSUtilLite.vcxproj
│   │   ├── DSUtilLite.vcxproj.filters
│   │   ├── DShowUtil.cpp
│   │   ├── DShowUtil.h
│   │   ├── DeCSS/
│   │   │   ├── CSSauth.cpp
│   │   │   ├── CSSauth.h
│   │   │   ├── CSSscramble.cpp
│   │   │   ├── CSSscramble.h
│   │   │   ├── DeCSSInputPin.cpp
│   │   │   └── DeCSSInputPin.h
│   │   ├── FloatingAverage.h
│   │   ├── FontInstaller.cpp
│   │   ├── FontInstaller.h
│   │   ├── H264Nalu.cpp
│   │   ├── H264Nalu.h
│   │   ├── MediaSampleSideData.cpp
│   │   ├── MediaSampleSideData.h
│   │   ├── PopupMenu.cpp
│   │   ├── PopupMenu.h
│   │   ├── SynchronizedQueue.h
│   │   ├── filterreg.cpp
│   │   ├── gpu_memcpy_sse4.h
│   │   ├── growarray.h
│   │   ├── lavf_log.h
│   │   ├── locale.cpp
│   │   ├── rand_sse.h
│   │   ├── registry.cpp
│   │   ├── registry.h
│   │   ├── stdafx.cpp
│   │   ├── stdafx.h
│   │   └── timer.h
│   ├── baseclasses/
│   │   ├── amextra.cpp
│   │   ├── amextra.h
│   │   ├── amfilter.cpp
│   │   ├── amfilter.h
│   │   ├── amvideo.cpp
│   │   ├── arithutil.cpp
│   │   ├── baseclasses.vcxproj
│   │   ├── baseclasses.vcxproj.filters
│   │   ├── cache.h
│   │   ├── checkbmi.h
│   │   ├── combase.cpp
│   │   ├── combase.h
│   │   ├── cprop.cpp
│   │   ├── cprop.h
│   │   ├── ctlutil.cpp
│   │   ├── ctlutil.h
│   │   ├── ddmm.cpp
│   │   ├── ddmm.h
│   │   ├── dllentry.cpp
│   │   ├── dllsetup.cpp
│   │   ├── dllsetup.h
│   │   ├── dxmperf.h
│   │   ├── fourcc.h
│   │   ├── measure.h
│   │   ├── msgthrd.h
│   │   ├── mtype.cpp
│   │   ├── mtype.h
│   │   ├── outputq.cpp
│   │   ├── outputq.h
│   │   ├── perflog.cpp
│   │   ├── perflog.h
│   │   ├── perfstruct.h
│   │   ├── pstream.cpp
│   │   ├── pstream.h
│   │   ├── pullpin.cpp
│   │   ├── pullpin.h
│   │   ├── refclock.cpp
│   │   ├── refclock.h
│   │   ├── reftime.h
│   │   ├── renbase.cpp
│   │   ├── renbase.h
│   │   ├── schedule.cpp
│   │   ├── schedule.h
│   │   ├── seekpt.cpp
│   │   ├── seekpt.h
│   │   ├── source.cpp
│   │   ├── source.h
│   │   ├── streams.h
│   │   ├── strmctl.cpp
│   │   ├── strmctl.h
│   │   ├── sysclock.cpp
│   │   ├── sysclock.h
│   │   ├── transfrm.cpp
│   │   ├── transfrm.h
│   │   ├── transip.cpp
│   │   ├── transip.h
│   │   ├── videoctl.cpp
│   │   ├── videoctl.h
│   │   ├── vtrans.cpp
│   │   ├── vtrans.h
│   │   ├── winctrl.cpp
│   │   ├── winctrl.h
│   │   ├── winutil.cpp
│   │   ├── winutil.h
│   │   ├── wxdebug.cpp
│   │   ├── wxdebug.h
│   │   ├── wxlist.cpp
│   │   ├── wxlist.h
│   │   ├── wxutil.cpp
│   │   └── wxutil.h
│   ├── common.props
│   ├── genversion.bat
│   ├── includes/
│   │   ├── ILAVPinInfo.h
│   │   ├── IMediaSideDataFFmpeg.h
│   │   ├── LAVSplitterSettingsInternal.h
│   │   ├── SubRenderIntf.h
│   │   ├── common_defines.h
│   │   ├── moreuuids.h
│   │   └── version.h
│   └── platform.props
├── decoder/
│   ├── LAVAudio/
│   │   ├── AudioSettingsProp.cpp
│   │   ├── AudioSettingsProp.h
│   │   ├── Bitstream.cpp
│   │   ├── BitstreamMAT.cpp
│   │   ├── BitstreamParser.cpp
│   │   ├── BitstreamParser.h
│   │   ├── LAVAudio.cpp
│   │   ├── LAVAudio.def
│   │   ├── LAVAudio.h
│   │   ├── LAVAudio.manifest
│   │   ├── LAVAudio.rc
│   │   ├── LAVAudio.rc2
│   │   ├── LAVAudio.vcxproj
│   │   ├── LAVAudio.vcxproj.filters
│   │   ├── Media.cpp
│   │   ├── Media.h
│   │   ├── PostProcessor.cpp
│   │   ├── PostProcessor.h
│   │   ├── dllmain.cpp
│   │   ├── parser/
│   │   │   ├── dts.cpp
│   │   │   ├── dts.h
│   │   │   └── parser.h
│   │   ├── resource.h
│   │   ├── stdafx.cpp
│   │   └── stdafx.h
│   └── LAVVideo/
│       ├── CCOutputPin.cpp
│       ├── CCOutputPin.h
│       ├── DecodeManager.cpp
│       ├── DecodeManager.h
│       ├── Filtering.cpp
│       ├── LAVPixFmtConverter.cpp
│       ├── LAVPixFmtConverter.h
│       ├── LAVVideo.cpp
│       ├── LAVVideo.def
│       ├── LAVVideo.h
│       ├── LAVVideo.manifest
│       ├── LAVVideo.rc
│       ├── LAVVideo.rc2
│       ├── LAVVideo.vcxproj
│       ├── LAVVideo.vcxproj.filters
│       ├── Media.cpp
│       ├── Media.h
│       ├── VideoInputPin.cpp
│       ├── VideoInputPin.h
│       ├── VideoOutputPin.cpp
│       ├── VideoOutputPin.h
│       ├── VideoSettingsProp.cpp
│       ├── VideoSettingsProp.h
│       ├── decoders/
│       │   ├── DecBase.h
│       │   ├── ILAVDecoder.h
│       │   ├── avcodec.cpp
│       │   ├── avcodec.h
│       │   ├── cuvid/
│       │   │   ├── dynlink_cuda.h
│       │   │   ├── dynlink_cuda_cuda.h
│       │   │   ├── dynlink_cuda_d3d.h
│       │   │   ├── dynlink_cuviddec.h
│       │   │   └── dynlink_nvcuvid.h
│       │   ├── cuvid.cpp
│       │   ├── cuvid.h
│       │   ├── d3d11/
│       │   │   ├── D3D11SurfaceAllocator.cpp
│       │   │   └── D3D11SurfaceAllocator.h
│       │   ├── d3d11va.cpp
│       │   ├── d3d11va.h
│       │   ├── dxva2/
│       │   │   ├── DXVA2SurfaceAllocator.cpp
│       │   │   ├── DXVA2SurfaceAllocator.h
│       │   │   ├── dxva_common.cpp
│       │   │   └── dxva_common.h
│       │   ├── dxva2dec.cpp
│       │   ├── dxva2dec.h
│       │   ├── msdk_mvc.cpp
│       │   ├── msdk_mvc.h
│       │   ├── mvc/
│       │   │   ├── include/
│       │   │   │   ├── mfxcommon.h
│       │   │   │   ├── mfxdefs.h
│       │   │   │   ├── mfxmvc.h
│       │   │   │   ├── mfxsession.h
│       │   │   │   ├── mfxstructures.h
│       │   │   │   ├── mfxvideo.h
│       │   │   │   └── mfxvstructures.h
│       │   │   ├── lib32/
│       │   │   │   └── libmfx.lib
│       │   │   └── lib64/
│       │   │       └── libmfx.lib
│       │   ├── pixfmt.cpp
│       │   ├── quicksync.cpp
│       │   ├── quicksync.h
│       │   ├── wmv9mft.cpp
│       │   └── wmv9mft.h
│       ├── dllmain.cpp
│       ├── parsers/
│       │   ├── AnnexBConverter.cpp
│       │   ├── AnnexBConverter.h
│       │   ├── H264SequenceParser.cpp
│       │   ├── H264SequenceParser.h
│       │   ├── HEVCSequenceParser.cpp
│       │   ├── HEVCSequenceParser.h
│       │   ├── MPEG2HeaderParser.cpp
│       │   ├── MPEG2HeaderParser.h
│       │   ├── VC1HeaderParser.cpp
│       │   └── VC1HeaderParser.h
│       ├── pixconv/
│       │   ├── convert_direct.cpp
│       │   ├── convert_generic.cpp
│       │   ├── interleave.cpp
│       │   ├── pixconv.cpp
│       │   ├── pixconv_internal.h
│       │   ├── pixconv_sse2_templates.h
│       │   ├── rgb2rgb_unscaled.cpp
│       │   ├── yuv2rgb.cpp
│       │   ├── yuv2yuv_unscaled.cpp
│       │   ├── yuv420_yuy2.cpp
│       │   └── yuv444_ayuv.cpp
│       ├── resource.h
│       ├── stdafx.cpp
│       ├── stdafx.h
│       └── subtitles/
│           ├── LAVSubtitleConsumer.cpp
│           ├── LAVSubtitleConsumer.h
│           ├── LAVSubtitleFrame.cpp
│           ├── LAVSubtitleFrame.h
│           ├── LAVSubtitleProvider.cpp
│           ├── LAVSubtitleProvider.h
│           ├── LAVVideoSubtitleInputPin.cpp
│           ├── LAVVideoSubtitleInputPin.h
│           ├── SubRenderOptionsImpl.cpp
│           ├── SubRenderOptionsImpl.h
│           └── blend/
│               └── blend_generic.cpp
├── demuxer/
│   ├── Demuxers/
│   │   ├── BDDemuxer.cpp
│   │   ├── BDDemuxer.h
│   │   ├── BaseDemuxer.cpp
│   │   ├── BaseDemuxer.h
│   │   ├── Demuxers.vcxproj
│   │   ├── Demuxers.vcxproj.filters
│   │   ├── ExtradataParser.cpp
│   │   ├── ExtradataParser.h
│   │   ├── LAVFAudioHelper.cpp
│   │   ├── LAVFAudioHelper.h
│   │   ├── LAVFDemuxer.cpp
│   │   ├── LAVFDemuxer.h
│   │   ├── LAVFInputFormats.cpp
│   │   ├── LAVFStreamInfo.cpp
│   │   ├── LAVFStreamInfo.h
│   │   ├── LAVFUtils.cpp
│   │   ├── LAVFUtils.h
│   │   ├── LAVFVideoHelper.cpp
│   │   ├── LAVFVideoHelper.h
│   │   ├── Packet.cpp
│   │   ├── Packet.h
│   │   ├── StreamInfo.cpp
│   │   ├── StreamInfo.h
│   │   ├── stdafx.cpp
│   │   └── stdafx.h
│   └── LAVSplitter/
│       ├── InputPin.cpp
│       ├── InputPin.h
│       ├── LAVSplitter.cpp
│       ├── LAVSplitter.def
│       ├── LAVSplitter.h
│       ├── LAVSplitter.manifest
│       ├── LAVSplitter.rc
│       ├── LAVSplitter.rc2
│       ├── LAVSplitter.vcxproj
│       ├── LAVSplitter.vcxproj.filters
│       ├── LAVSplitterTrayIcon.cpp
│       ├── LAVSplitterTrayIcon.h
│       ├── OutputPin.cpp
│       ├── OutputPin.h
│       ├── PacketAllocator.cpp
│       ├── PacketAllocator.h
│       ├── PacketQueue.cpp
│       ├── PacketQueue.h
│       ├── SettingsProp.cpp
│       ├── SettingsProp.h
│       ├── StreamParser.cpp
│       ├── StreamParser.h
│       ├── dllmain.cpp
│       ├── resource.h
│       ├── stdafx.cpp
│       └── stdafx.h
├── include/
│   ├── IBitRateInfo.h
│   ├── IBufferInfo.h
│   ├── ID3DVideoMemoryConfiguration.h
│   ├── IDSMResourceBag.h
│   ├── IGraphRebuildDelegate.h
│   ├── IKeyFrameInfo.h
│   ├── ILAVDynamicAllocator.h
│   ├── IMediaSample3D.h
│   ├── IMediaSideData.h
│   ├── IPinSegmentEx.h
│   ├── ISpecifyPropertyPages2.h
│   ├── IStreamSourceControl.h
│   ├── ITrackInfo.h
│   ├── IURLSourceFilterLAV.h
│   ├── LAVAudioSettings.h
│   ├── LAVSplitterSettings.h
│   ├── LAVVideoSettings.h
│   └── README.txt
├── resources/
│   └── LAVFilters.Dependencies.manifest
└── thirdparty/
    ├── 32/
    │   ├── include/
    │   │   ├── avisynth/
    │   │   │   ├── avisynth.h
    │   │   │   ├── avisynth_c.h
    │   │   │   └── avs/
    │   │   │       ├── alignment.h
    │   │   │       ├── arch.h
    │   │   │       ├── capi.h
    │   │   │       ├── config.h
    │   │   │       ├── cpuid.h
    │   │   │       ├── filesystem.h
    │   │   │       ├── minmax.h
    │   │   │       ├── posix.h
    │   │   │       ├── types.h
    │   │   │       ├── version.h
    │   │   │       └── win.h
    │   │   ├── dav1d/
    │   │   │   ├── common.h
    │   │   │   ├── data.h
    │   │   │   ├── dav1d.h
    │   │   │   ├── headers.h
    │   │   │   ├── picture.h
    │   │   │   └── version.h
    │   │   ├── gmp.h
    │   │   ├── gnutls/
    │   │   │   ├── abstract.h
    │   │   │   ├── compat.h
    │   │   │   ├── crypto.h
    │   │   │   ├── dtls.h
    │   │   │   ├── gnutls.h
    │   │   │   ├── ocsp.h
    │   │   │   ├── openpgp.h
    │   │   │   ├── pkcs11.h
    │   │   │   ├── pkcs12.h
    │   │   │   ├── pkcs7.h
    │   │   │   ├── self-test.h
    │   │   │   ├── socket.h
    │   │   │   ├── system-keys.h
    │   │   │   ├── tpm.h
    │   │   │   ├── urls.h
    │   │   │   ├── x509-ext.h
    │   │   │   └── x509.h
    │   │   ├── libxml2/
    │   │   │   └── libxml/
    │   │   │       ├── HTMLparser.h
    │   │   │       ├── HTMLtree.h
    │   │   │       ├── SAX.h
    │   │   │       ├── SAX2.h
    │   │   │       ├── c14n.h
    │   │   │       ├── catalog.h
    │   │   │       ├── chvalid.h
    │   │   │       ├── debugXML.h
    │   │   │       ├── dict.h
    │   │   │       ├── encoding.h
    │   │   │       ├── entities.h
    │   │   │       ├── globals.h
    │   │   │       ├── hash.h
    │   │   │       ├── list.h
    │   │   │       ├── nanoftp.h
    │   │   │       ├── nanohttp.h
    │   │   │       ├── parser.h
    │   │   │       ├── parserInternals.h
    │   │   │       ├── pattern.h
    │   │   │       ├── relaxng.h
    │   │   │       ├── schemasInternals.h
    │   │   │       ├── schematron.h
    │   │   │       ├── threads.h
    │   │   │       ├── tree.h
    │   │   │       ├── uri.h
    │   │   │       ├── valid.h
    │   │   │       ├── xinclude.h
    │   │   │       ├── xlink.h
    │   │   │       ├── xmlIO.h
    │   │   │       ├── xmlautomata.h
    │   │   │       ├── xmlerror.h
    │   │   │       ├── xmlexports.h
    │   │   │       ├── xmlmemory.h
    │   │   │       ├── xmlmodule.h
    │   │   │       ├── xmlreader.h
    │   │   │       ├── xmlregexp.h
    │   │   │       ├── xmlsave.h
    │   │   │       ├── xmlschemas.h
    │   │   │       ├── xmlschemastypes.h
    │   │   │       ├── xmlstring.h
    │   │   │       ├── xmlunicode.h
    │   │   │       ├── xmlversion.h
    │   │   │       ├── xmlwriter.h
    │   │   │       ├── xpath.h
    │   │   │       ├── xpathInternals.h
    │   │   │       └── xpointer.h
    │   │   ├── nettle/
    │   │   │   ├── aes.h
    │   │   │   ├── arcfour.h
    │   │   │   ├── arctwo.h
    │   │   │   ├── asn1.h
    │   │   │   ├── balloon.h
    │   │   │   ├── base16.h
    │   │   │   ├── base64.h
    │   │   │   ├── bignum.h
    │   │   │   ├── blowfish.h
    │   │   │   ├── buffer.h
    │   │   │   ├── camellia.h
    │   │   │   ├── cast128.h
    │   │   │   ├── cbc.h
    │   │   │   ├── ccm.h
    │   │   │   ├── cfb.h
    │   │   │   ├── chacha-poly1305.h
    │   │   │   ├── chacha.h
    │   │   │   ├── cmac.h
    │   │   │   ├── ctr.h
    │   │   │   ├── curve25519.h
    │   │   │   ├── curve448.h
    │   │   │   ├── des.h
    │   │   │   ├── dsa-compat.h
    │   │   │   ├── dsa.h
    │   │   │   ├── eax.h
    │   │   │   ├── ecc-curve.h
    │   │   │   ├── ecc.h
    │   │   │   ├── ecdsa.h
    │   │   │   ├── eddsa.h
    │   │   │   ├── gcm.h
    │   │   │   ├── gostdsa.h
    │   │   │   ├── gosthash94.h
    │   │   │   ├── hkdf.h
    │   │   │   ├── hmac.h
    │   │   │   ├── knuth-lfib.h
    │   │   │   ├── macros.h
    │   │   │   ├── md2.h
    │   │   │   ├── md4.h
    │   │   │   ├── md5-compat.h
    │   │   │   ├── md5.h
    │   │   │   ├── memops.h
    │   │   │   ├── memxor.h
    │   │   │   ├── nettle-meta.h
    │   │   │   ├── nettle-types.h
    │   │   │   ├── nist-keywrap.h
    │   │   │   ├── ocb.h
    │   │   │   ├── pbkdf2.h
    │   │   │   ├── pgp.h
    │   │   │   ├── pkcs1.h
    │   │   │   ├── poly1305.h
    │   │   │   ├── pss-mgf1.h
    │   │   │   ├── pss.h
    │   │   │   ├── realloc.h
    │   │   │   ├── ripemd160.h
    │   │   │   ├── rsa.h
    │   │   │   ├── salsa20.h
    │   │   │   ├── serpent.h
    │   │   │   ├── sexp.h
    │   │   │   ├── sha.h
    │   │   │   ├── sha1.h
    │   │   │   ├── sha2.h
    │   │   │   ├── sha3.h
    │   │   │   ├── siv-cmac.h
    │   │   │   ├── siv-gcm.h
    │   │   │   ├── sm3.h
    │   │   │   ├── sm4.h
    │   │   │   ├── streebog.h
    │   │   │   ├── twofish.h
    │   │   │   ├── umac.h
    │   │   │   ├── version.h
    │   │   │   ├── xts.h
    │   │   │   └── yarrow.h
    │   │   ├── opencore-amrnb/
    │   │   │   ├── interf_dec.h
    │   │   │   └── interf_enc.h
    │   │   ├── opencore-amrwb/
    │   │   │   ├── dec_if.h
    │   │   │   └── if_rom.h
    │   │   └── speex/
    │   │       ├── speex.h
    │   │       ├── speex_bits.h
    │   │       ├── speex_callbacks.h
    │   │       ├── speex_config_types.h
    │   │       ├── speex_header.h
    │   │       ├── speex_stereo.h
    │   │       └── speex_types.h
    │   └── lib/
    │       ├── libdav1d.a
    │       ├── libgmp.a
    │       ├── libgnutls.a
    │       ├── libhogweed.a
    │       ├── libnettle.a
    │       ├── libopencore-amrnb.a
    │       ├── libopencore-amrwb.a
    │       ├── libspeex.a
    │       ├── libxml2.a
    │       └── pkgconfig/
    │           ├── dav1d.pc
    │           ├── gmp.pc
    │           ├── gnutls.pc
    │           ├── hogweed.pc
    │           ├── libxml-2.0.pc
    │           ├── nettle.pc
    │           ├── opencore-amrnb.pc
    │           ├── opencore-amrwb.pc
    │           └── speex.pc
    ├── 64/
    │   ├── include/
    │   │   ├── avisynth/
    │   │   │   ├── avisynth.h
    │   │   │   ├── avisynth_c.h
    │   │   │   └── avs/
    │   │   │       ├── alignment.h
    │   │   │       ├── arch.h
    │   │   │       ├── capi.h
    │   │   │       ├── config.h
    │   │   │       ├── cpuid.h
    │   │   │       ├── filesystem.h
    │   │   │       ├── minmax.h
    │   │   │       ├── posix.h
    │   │   │       ├── types.h
    │   │   │       ├── version.h
    │   │   │       └── win.h
    │   │   ├── dav1d/
    │   │   │   ├── common.h
    │   │   │   ├── data.h
    │   │   │   ├── dav1d.h
    │   │   │   ├── headers.h
    │   │   │   ├── picture.h
    │   │   │   └── version.h
    │   │   ├── gmp.h
    │   │   ├── gnutls/
    │   │   │   ├── abstract.h
    │   │   │   ├── compat.h
    │   │   │   ├── crypto.h
    │   │   │   ├── dtls.h
    │   │   │   ├── gnutls.h
    │   │   │   ├── ocsp.h
    │   │   │   ├── openpgp.h
    │   │   │   ├── pkcs11.h
    │   │   │   ├── pkcs12.h
    │   │   │   ├── pkcs7.h
    │   │   │   ├── self-test.h
    │   │   │   ├── socket.h
    │   │   │   ├── system-keys.h
    │   │   │   ├── tpm.h
    │   │   │   ├── urls.h
    │   │   │   ├── x509-ext.h
    │   │   │   └── x509.h
    │   │   ├── libxml2/
    │   │   │   └── libxml/
    │   │   │       ├── HTMLparser.h
    │   │   │       ├── HTMLtree.h
    │   │   │       ├── SAX.h
    │   │   │       ├── SAX2.h
    │   │   │       ├── c14n.h
    │   │   │       ├── catalog.h
    │   │   │       ├── chvalid.h
    │   │   │       ├── debugXML.h
    │   │   │       ├── dict.h
    │   │   │       ├── encoding.h
    │   │   │       ├── entities.h
    │   │   │       ├── globals.h
    │   │   │       ├── hash.h
    │   │   │       ├── list.h
    │   │   │       ├── nanoftp.h
    │   │   │       ├── nanohttp.h
    │   │   │       ├── parser.h
    │   │   │       ├── parserInternals.h
    │   │   │       ├── pattern.h
    │   │   │       ├── relaxng.h
    │   │   │       ├── schemasInternals.h
    │   │   │       ├── schematron.h
    │   │   │       ├── threads.h
    │   │   │       ├── tree.h
    │   │   │       ├── uri.h
    │   │   │       ├── valid.h
    │   │   │       ├── xinclude.h
    │   │   │       ├── xlink.h
    │   │   │       ├── xmlIO.h
    │   │   │       ├── xmlautomata.h
    │   │   │       ├── xmlerror.h
    │   │   │       ├── xmlexports.h
    │   │   │       ├── xmlmemory.h
    │   │   │       ├── xmlmodule.h
    │   │   │       ├── xmlreader.h
    │   │   │       ├── xmlregexp.h
    │   │   │       ├── xmlsave.h
    │   │   │       ├── xmlschemas.h
    │   │   │       ├── xmlschemastypes.h
    │   │   │       ├── xmlstring.h
    │   │   │       ├── xmlunicode.h
    │   │   │       ├── xmlversion.h
    │   │   │       ├── xmlwriter.h
    │   │   │       ├── xpath.h
    │   │   │       ├── xpathInternals.h
    │   │   │       └── xpointer.h
    │   │   ├── nettle/
    │   │   │   ├── aes.h
    │   │   │   ├── arcfour.h
    │   │   │   ├── arctwo.h
    │   │   │   ├── asn1.h
    │   │   │   ├── balloon.h
    │   │   │   ├── base16.h
    │   │   │   ├── base64.h
    │   │   │   ├── bignum.h
    │   │   │   ├── blowfish.h
    │   │   │   ├── buffer.h
    │   │   │   ├── camellia.h
    │   │   │   ├── cast128.h
    │   │   │   ├── cbc.h
    │   │   │   ├── ccm.h
    │   │   │   ├── cfb.h
    │   │   │   ├── chacha-poly1305.h
    │   │   │   ├── chacha.h
    │   │   │   ├── cmac.h
    │   │   │   ├── ctr.h
    │   │   │   ├── curve25519.h
    │   │   │   ├── curve448.h
    │   │   │   ├── des.h
    │   │   │   ├── dsa-compat.h
    │   │   │   ├── dsa.h
    │   │   │   ├── eax.h
    │   │   │   ├── ecc-curve.h
    │   │   │   ├── ecc.h
    │   │   │   ├── ecdsa.h
    │   │   │   ├── eddsa.h
    │   │   │   ├── gcm.h
    │   │   │   ├── gostdsa.h
    │   │   │   ├── gosthash94.h
    │   │   │   ├── hkdf.h
    │   │   │   ├── hmac.h
    │   │   │   ├── knuth-lfib.h
    │   │   │   ├── macros.h
    │   │   │   ├── md2.h
    │   │   │   ├── md4.h
    │   │   │   ├── md5-compat.h
    │   │   │   ├── md5.h
    │   │   │   ├── memops.h
    │   │   │   ├── memxor.h
    │   │   │   ├── nettle-meta.h
    │   │   │   ├── nettle-types.h
    │   │   │   ├── nist-keywrap.h
    │   │   │   ├── ocb.h
    │   │   │   ├── pbkdf2.h
    │   │   │   ├── pgp.h
    │   │   │   ├── pkcs1.h
    │   │   │   ├── poly1305.h
    │   │   │   ├── pss-mgf1.h
    │   │   │   ├── pss.h
    │   │   │   ├── realloc.h
    │   │   │   ├── ripemd160.h
    │   │   │   ├── rsa.h
    │   │   │   ├── salsa20.h
    │   │   │   ├── serpent.h
    │   │   │   ├── sexp.h
    │   │   │   ├── sha.h
    │   │   │   ├── sha1.h
    │   │   │   ├── sha2.h
    │   │   │   ├── sha3.h
    │   │   │   ├── siv-cmac.h
    │   │   │   ├── siv-gcm.h
    │   │   │   ├── sm3.h
    │   │   │   ├── sm4.h
    │   │   │   ├── streebog.h
    │   │   │   ├── twofish.h
    │   │   │   ├── umac.h
    │   │   │   ├── version.h
    │   │   │   ├── xts.h
    │   │   │   └── yarrow.h
    │   │   ├── opencore-amrnb/
    │   │   │   ├── interf_dec.h
    │   │   │   └── interf_enc.h
    │   │   ├── opencore-amrwb/
    │   │   │   ├── dec_if.h
    │   │   │   └── if_rom.h
    │   │   └── speex/
    │   │       ├── speex.h
    │   │       ├── speex_bits.h
    │   │       ├── speex_callbacks.h
    │   │       ├── speex_config_types.h
    │   │       ├── speex_header.h
    │   │       ├── speex_stereo.h
    │   │       └── speex_types.h
    │   └── lib/
    │       ├── libdav1d.a
    │       ├── libgmp.a
    │       ├── libgnutls.a
    │       ├── libhogweed.a
    │       ├── libnettle.a
    │       ├── libopencore-amrnb.a
    │       ├── libopencore-amrwb.a
    │       ├── libspeex.a
    │       ├── libxml2.a
    │       └── pkgconfig/
    │           ├── dav1d.pc
    │           ├── gmp.pc
    │           ├── gnutls.pc
    │           ├── hogweed.pc
    │           ├── libxml-2.0.pc
    │           ├── nettle.pc
    │           ├── opencore-amrnb.pc
    │           ├── opencore-amrwb.pc
    │           └── speex.pc
    ├── build instructions.txt
    └── versions.txt
Download .txt
Showing preview only (464K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (6121 symbols across 486 files)

FILE: common/DSUtilLite/BaseDSPropPage.cpp
  function HWND (line 28) | HWND CBaseDSPropPage::createHintWindow(HWND parent, int timePop, int tim...
  function TOOLINFO (line 41) | TOOLINFO CBaseDSPropPage::addHint(int id, const LPWSTR text)
  function HRESULT (line 67) | HRESULT CBaseDSPropPage::ShowPropPageDialog(IBaseFilter *pFilter, HWND h...

FILE: common/DSUtilLite/BaseDSPropPage.h
  function class (line 22) | class CBaseDSPropPage : public CBasePropertyPage

FILE: common/DSUtilLite/BaseTrayIcon.cpp
  function BOOL (line 39) | BOOL CBaseTrayIcon::ProcessBlackList()
  function HRESULT (line 74) | HRESULT CBaseTrayIcon::StartMessageThread()
  function DWORD (line 100) | DWORD CBaseTrayIcon::TrayMessageThread()
  function HRESULT (line 150) | HRESULT CBaseTrayIcon::RegisterWindowClass()
  function HRESULT (line 164) | HRESULT CBaseTrayIcon::CreateMessageWindow()
  function HRESULT (line 172) | HRESULT CBaseTrayIcon::CreateTrayIconData()
  function HRESULT (line 187) | HRESULT CBaseTrayIcon::OpenPropPage()
  function BOOL (line 200) | static BOOL CALLBACK enumWindowCallback(HWND hwnd, LPARAM lparam)
  function LRESULT (line 211) | LRESULT CALLBACK CBaseTrayIcon::WindowProc(HWND hwnd, UINT uMsg, WPARAM ...

FILE: common/DSUtilLite/BaseTrayIcon.h
  function class (line 24) | class CBaseTrayIcon

FILE: common/DSUtilLite/ByteParser.h
  type GetBitContext (line 24) | struct GetBitContext
  function class (line 29) | class CByteParser

FILE: common/DSUtilLite/CueSheet.cpp
  type ParserState (line 29) | enum class ParserState
  function char_t (line 38) | static char_t up_char(char_t ch)
  function string (line 43) | static string toupper(const string &src)
  function str_replace (line 50) | static void str_replace(string &s, const string &search, const string &r...
  function string (line 63) | static string GetCueParam(string line, bool firstWord = false)
  function REFERENCE_TIME (line 90) | static REFERENCE_TIME ParseCueIndex(string line)
  function HRESULT (line 108) | HRESULT CCueSheet::Parse(string cueSheet)

FILE: common/DSUtilLite/CueSheet.h
  function class (line 25) | class CCueSheet

FILE: common/DSUtilLite/DSMResourceBag.cpp
  function CDSMResource (line 21) | CDSMResource &CDSMResource::operator=(const CDSMResource &r)
  function STDMETHODIMP (line 49) | STDMETHODIMP CDSMResourceBag::ResGet(DWORD iIndex, BSTR *ppName, BSTR *p...
  function STDMETHODIMP (line 93) | STDMETHODIMP CDSMResourceBag::ResSet(DWORD iIndex, LPCWSTR pName, LPCWST...
  function STDMETHODIMP (line 126) | STDMETHODIMP CDSMResourceBag::ResAppend(LPCWSTR pName, LPCWSTR pDesc, LP...
  function STDMETHODIMP (line 134) | STDMETHODIMP CDSMResourceBag::ResRemoveAt(DWORD iIndex)
  function STDMETHODIMP (line 146) | STDMETHODIMP CDSMResourceBag::ResRemoveAll(DWORD_PTR tag)

FILE: common/DSUtilLite/DSMResourceBag.h
  function class (line 9) | class CDSMResource
  function class (line 23) | class CDSMResourceBag : public IDSMResourceBag

FILE: common/DSUtilLite/DShowUtil.cpp
  type tagTHREADNAME_INFO (line 35) | struct tagTHREADNAME_INFO
  function SetThreadName (line 45) | void SetThreadName(DWORD dwThreadID, LPCSTR szThreadName)
  function DbgSetLogFile (line 70) | void DbgSetLogFile(LPCTSTR szFile)
  function DbgSetLogFileDesktop (line 94) | void DbgSetLogFileDesktop(LPCTSTR szFile)
  function DbgCloseLogFile (line 102) | void DbgCloseLogFile()
  function split (line 114) | void split(const std::string &text, const std::string &separators, std::...
  function IBaseFilter (line 130) | IBaseFilter *FindFilter(const GUID &clsid, IFilterGraph *pFG)
  function BOOL (line 152) | BOOL FilterInGraph(const GUID &clsid, IFilterGraph *pFG)
  function BOOL (line 164) | BOOL FilterInGraphWithInputSubtype(const GUID &clsid, IFilterGraph *pFG,...
  function WStringFromGUID (line 204) | std::wstring WStringFromGUID(const GUID &guid)
  function SafeMultiByteToWideChar (line 211) | int SafeMultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMulti...
  function SafeWideCharToMultiByte (line 240) | int SafeWideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWSTR lpWide...
  function LPWSTR (line 259) | LPWSTR CoTaskGetWideCharFromMultiByte(UINT CodePage, DWORD dwFlags, LPCS...
  function LPSTR (line 285) | LPSTR CoTaskGetMultiByteFromWideChar(UINT CodePage, DWORD dwFlags, LPCWS...
  function BSTR (line 298) | BSTR ConvertCharToBSTR(const char *sz)
  function IBaseFilter (line 314) | IBaseFilter *GetFilterFromPin(IPin *pPin)
  function HRESULT (line 327) | HRESULT NukeDownstream(IFilterGraph *pGraph, IPin *pPin)
  function HRESULT (line 355) | HRESULT NukeDownstream(IFilterGraph *pGraph, IBaseFilter *pFilter)
  function HRESULT (line 374) | HRESULT FindIntefaceInGraph(IPin *pPin, REFIID refiid, void **pUnknown)
  function HRESULT (line 420) | HRESULT FindPinIntefaceInGraph(IPin *pPin, REFIID refiid, void **pUnknown)
  function HRESULT (line 468) | HRESULT FindFilterSafe(IPin *pPin, const GUID &guid, IBaseFilter **ppFil...
  function BOOL (line 538) | BOOL HasSourceWithType(IPin *pPin, const GUID &mediaType)
  function BOOL (line 593) | BOOL HasSourceWithTypeAdvanced(IPin *pPinInput, IPin *pPinOutput, const ...
  function BOOL (line 644) | BOOL FilterInGraphSafe(IPin *pPin, const GUID &guid, BOOL bReverse)
  function lav_xiphlacing (line 656) | unsigned int lav_xiphlacing(unsigned char *s, unsigned int v)
  function videoFormatTypeHandler (line 671) | void videoFormatTypeHandler(const AM_MEDIA_TYPE &mt, BITMAPINFOHEADER **...
  function videoFormatTypeHandler (line 677) | void videoFormatTypeHandler(const BYTE *format, const GUID *formattype, ...
  function audioFormatTypeHandler (line 736) | void audioFormatTypeHandler(const BYTE *format, const GUID *formattype, ...
  function getExtraData (line 787) | void getExtraData(const AM_MEDIA_TYPE &mt, BYTE *extra, size_t *extralen)
  function getExtraData (line 792) | void getExtraData(const BYTE *format, const GUID *formattype, const size...
  function CopyMediaSideDataFF (line 866) | void CopyMediaSideDataFF(AVPacket *dst, const MediaSideDataFFMpeg **sd)
  function BOOL (line 888) | BOOL IsWindows7OrNewer()
  function BOOL (line 893) | BOOL IsWindows8OrNewer()
  function BOOL (line 898) | BOOL IsWindows10OrNewer()
  function BOOL (line 903) | BOOL IsWindows10BuildOrNewer(DWORD dwBuild)
  function debugprintf (line 908) | void __cdecl debugprintf(LPCWSTR format, ...)
  function BOOL (line 930) | BOOL CheckApplicationBlackList(LPCTSTR subkey)

FILE: common/DSUtilLite/DShowUtil.h
  type AVPacket (line 165) | struct AVPacket
  type MediaSideDataFFMpeg (line 166) | struct MediaSideDataFFMpeg

FILE: common/DSUtilLite/DeCSS/CSSauth.cpp
  function CSSkey1 (line 5) | void CSSkey1(int varient, unsigned char const *challenge, unsigned char ...
  function CSSkey2 (line 20) | void CSSkey2(int varient, unsigned char const *challenge, unsigned char ...
  function CSSbuskey (line 39) | void CSSbuskey(int varient, unsigned char const *challenge, unsigned cha...
  function CSSgenbits (line 57) | static void CSSgenbits(unsigned char *output, int len, unsigned char con...
  function CSSengine (line 107) | static void CSSengine(int varient, unsigned char const *input, unsigned ...

FILE: common/DSUtilLite/DeCSS/CSSscramble.cpp
  function CSSdescramble (line 102) | void CSSdescramble(unsigned char *sec, unsigned char *tkey)
  function CSSdisckey (line 129) | void CSSdisckey(unsigned char *dkey, unsigned char *pkey)
  function CSStitlekey (line 160) | void CSStitlekey(unsigned char *tkey, unsigned char *dkey)

FILE: common/DSUtilLite/DeCSS/DeCSSInputPin.cpp
  function STDMETHODIMP (line 194) | STDMETHODIMP CDeCSSPinHelper::Set(REFGUID PropSet, ULONG Id, LPVOID pIns...
  function STDMETHODIMP (line 302) | STDMETHODIMP CDeCSSPinHelper::Get(REFGUID PropSet, ULONG Id, LPVOID pIns...
  function STDMETHODIMP (line 350) | STDMETHODIMP CDeCSSPinHelper::QuerySupported(REFGUID PropSet, ULONG Id, ...
  function STDMETHODIMP (line 384) | STDMETHODIMP CDeCSSTransformInputPin::NonDelegatingQueryInterface(REFIID...
  function STDMETHODIMP (line 391) | STDMETHODIMP CDeCSSTransformInputPin::Receive(IMediaSample *pSample)
  function HRESULT (line 397) | HRESULT CDeCSSTransformInputPin::SetMediaType(const CMediaType *pmt)

FILE: common/DSUtilLite/DeCSS/DeCSSInputPin.h
  function class (line 24) | class CDeCSSPinHelper : public IKsPropertySet

FILE: common/DSUtilLite/FloatingAverage.h
  function SetNumSamples (line 32) | void SetNumSamples(unsigned int iNumSamples)
  function Sample (line 44) | void Sample(T fSample)
  function T (line 53) | T Average() const
  function T (line 74) | T AbsMinimum() const
  function T (line 96) | T AbsMaximum() const
  function OffsetValues (line 107) | void OffsetValues(T value) const

FILE: common/DSUtilLite/FontInstaller.h
  function class (line 26) | class CFontInstaller

FILE: common/DSUtilLite/H264Nalu.h
  type NALU_TYPE (line 24) | typedef enum
  function class (line 42) | class CH264Nalu
  function class (line 83) | class CH265Nalu : public CH264Nalu
  function class (line 91) | class CH264NALUnescape

FILE: common/DSUtilLite/MediaSampleSideData.cpp
  function STDMETHODIMP (line 34) | STDMETHODIMP CMediaSampleSideData::QueryInterface(REFIID riid, __deref_o...
  function STDMETHODIMP (line 100) | STDMETHODIMP CMediaSampleSideData::SetSideData(GUID guidType, const BYTE...
  function STDMETHODIMP (line 143) | STDMETHODIMP CMediaSampleSideData::GetSideData(GUID guidType, const BYTE...

FILE: common/DSUtilLite/MediaSampleSideData.h
  type SideDataGUIDComparer (line 27) | struct SideDataGUIDComparer
  type SideDataEntry (line 54) | struct SideDataEntry

FILE: common/DSUtilLite/PopupMenu.cpp
  function HRESULT (line 34) | HRESULT CPopupMenu::AddItem(UINT id, LPWSTR caption, BOOL checked, BOOL ...
  function HRESULT (line 50) | HRESULT CPopupMenu::AddSeparator()
  function HRESULT (line 62) | HRESULT CPopupMenu::AddSubmenu(HMENU hSubMenu, LPWSTR caption)
  function HMENU (line 77) | HMENU CPopupMenu::Finish()

FILE: common/DSUtilLite/PopupMenu.h
  function class (line 22) | class CPopupMenu

FILE: common/DSUtilLite/SynchronizedQueue.h
  function Push (line 29) | void Push(T item)
  function T (line 36) | T Pop(void)
  function Empty (line 49) | bool Empty()
  function Size (line 56) | size_t Size()

FILE: common/DSUtilLite/filterreg.cpp
  function CStringFromGUID (line 25) | std::wstring CStringFromGUID(const GUID &guid)
  function DeleteRegKey (line 34) | bool DeleteRegKey(std::wstring szKey, std::wstring szSubkey)
  function SetRegKeyValue (line 53) | bool SetRegKeyValue(std::wstring szKey, std::wstring szSubkey, std::wstr...
  function SetRegKeyValue (line 80) | bool SetRegKeyValue(std::wstring szKey, std::wstring szSubkey, std::wstr...
  function RegisterSourceFilter (line 85) | void RegisterSourceFilter(const CLSID &clsid, const GUID &subtype2, LPCW...
  function RegisterProtocolSourceFilter (line 106) | void RegisterProtocolSourceFilter(const CLSID &clsid, LPCWSTR protocol)
  function UnRegisterProtocolSourceFilter (line 111) | void UnRegisterProtocolSourceFilter(LPCWSTR protocol)
  function RegisterSourceFilter (line 116) | void RegisterSourceFilter(const CLSID &clsid, const GUID &subtype2, std:...
  function UnRegisterSourceFilter (line 146) | void UnRegisterSourceFilter(const GUID &subtype)

FILE: common/DSUtilLite/growarray.h
  function virtual (line 40) | virtual ~GrowableArray() { free(m_pArray); }
  function HRESULT (line 43) | HRESULT Allocate(DWORD alloc)
  function HRESULT (line 63) | HRESULT Clear()
  function HRESULT (line 72) | HRESULT SetSize(DWORD count)
  function HRESULT (line 86) | HRESULT Append(GrowableArray<T> *other) { return Append(other->Ptr(), ot...
  function HRESULT (line 88) | HRESULT Append(const T *other, DWORD dwSize)
  function HRESULT (line 99) | HRESULT AppendZero(DWORD dwSize)
  function Consume (line 110) | void Consume(DWORD dwSize)
  function T (line 134) | const T &operator[](DWORD index) const
  function T (line 141) | T *Ptr() { return m_pArray; }

FILE: common/DSUtilLite/lavf_log.h
  function lavf_log_callback (line 23) | inline void lavf_log_callback(void *ptr, int level, const char *fmt, va_...

FILE: common/DSUtilLite/locale.cpp
  function ISO6391ToLanguage (line 527) | std::string ISO6391ToLanguage(LPCSTR code)
  function ISO6392ToLanguage (line 549) | std::string ISO6392ToLanguage(LPCSTR code)
  function ProbeLangForLanguage (line 572) | std::string ProbeLangForLanguage(LPCSTR code)
  function ISO6392Check (line 585) | static std::string ISO6392Check(LPCSTR lang)
  function LanguageToISO6392 (line 602) | static std::string LanguageToISO6392(LPCSTR code)
  function ProbeForISO6392 (line 614) | std::string ProbeForISO6392(LPCSTR lang)
  function LCID (line 644) | LCID ISO6391ToLcid(LPCSTR code)
  function LCID (line 660) | LCID ISO6392ToLcid(LPCSTR code)
  function ISO6391To6392 (line 677) | std::string ISO6391To6392(LPCSTR code)
  function ISO6392To6391 (line 693) | std::string ISO6392To6391(LPCSTR code)
  function LCID (line 710) | LCID ProbeLangForLCID(LPCSTR code)

FILE: common/DSUtilLite/rand_sse.h
  function srand_sse (line 8) | void srand_sse(unsigned int seed)
  function rand_sse (line 13) | inline void rand_sse(int *result)

FILE: common/DSUtilLite/registry.cpp
  function CreateRegistryKey (line 23) | bool CreateRegistryKey(HKEY hKeyRoot, LPCTSTR pszSubKey)
  function HRESULT (line 57) | HRESULT CRegistry::Open(HKEY hkeyRoot, LPCTSTR pszSubKey, BOOL bReadOnly...
  function HRESULT (line 119) | HRESULT CRegistry::WriteString(LPCTSTR pszKey, const LPCTSTR pszValue)
  function DWORD (line 140) | DWORD CRegistry::ReadDWORD(LPCTSTR pszKey, HRESULT &hr)
  function HRESULT (line 164) | HRESULT CRegistry::WriteDWORD(LPCTSTR pszKey, DWORD dwValue)
  function BOOL (line 184) | BOOL CRegistry::ReadBOOL(LPCTSTR pszKey, HRESULT &hr)
  function HRESULT (line 190) | HRESULT CRegistry::WriteBOOL(LPCTSTR pszKey, BOOL bValue)
  function BYTE (line 195) | BYTE *CRegistry::ReadBinary(LPCTSTR pszKey, DWORD &dwSize, HRESULT &hr)
  function HRESULT (line 233) | HRESULT CRegistry::WriteBinary(LPCTSTR pszKey, const BYTE *pbValue, int ...
  function HRESULT (line 253) | HRESULT CRegistry::DeleteKey(LPCTSTR pszKey)

FILE: common/DSUtilLite/registry.h
  function class (line 26) | class CRegistry

FILE: common/baseclasses/amextra.cpp
  function STDMETHODIMP (line 40) | STDMETHODIMP CRenderedInputPin::EndOfStream()
  function STDMETHODIMP (line 60) | STDMETHODIMP CRenderedInputPin::EndFlush()
  function HRESULT (line 73) | HRESULT CRenderedInputPin::Run(REFERENCE_TIME tStart)
  function HRESULT (line 86) | HRESULT CRenderedInputPin::Active()

FILE: common/baseclasses/amextra.h
  function class (line 20) | class CRenderedInputPin : public CBaseInputPin

FILE: common/baseclasses/amfilter.cpp
  function STDAPI (line 39) | STDAPI CreateMemoryAllocator(__deref_out IMemAllocator **ppAllocator)
  function STDAPI (line 46) | STDAPI CreatePosPassThru(__in_opt LPUNKNOWN pAgg, BOOL bRenderer, IPin *...
  function STDMETHODIMP (line 112) | STDMETHODIMP
  function STDMETHODIMP (line 130) | STDMETHODIMP
  function STDMETHODIMP (line 141) | STDMETHODIMP
  function STDMETHODIMP (line 154) | STDMETHODIMP
  function STDMETHODIMP (line 179) | STDMETHODIMP
  function STDMETHODIMP (line 197) | STDMETHODIMP
  function STDMETHODIMP (line 208) | STDMETHODIMP
  function STDMETHODIMP (line 226) | STDMETHODIMP
  function HRESULT (line 250) | HRESULT
  function STDMETHODIMP (line 283) | STDMETHODIMP CBaseFilter::NonDelegatingQueryInterface(REFIID riid, __der...
  function STDMETHODIMP (line 426) | STDMETHODIMP
  function STDMETHODIMP (line 436) | STDMETHODIMP
  function STDMETHODIMP (line 449) | STDMETHODIMP
  function STDMETHODIMP (line 474) | STDMETHODIMP
  function STDMETHODIMP (line 492) | STDMETHODIMP
  function STDMETHODIMP (line 539) | STDMETHODIMP
  function STDMETHODIMP (line 588) | STDMETHODIMP
  function HRESULT (line 643) | HRESULT
  function STDMETHODIMP (line 670) | STDMETHODIMP
  function STDMETHODIMP (line 685) | STDMETHODIMP
  function STDMETHODIMP (line 718) | STDMETHODIMP
  function STDMETHODIMP (line 740) | STDMETHODIMP
  function STDMETHODIMP (line 801) | STDMETHODIMP
  function HRESULT (line 811) | HRESULT
  function HRESULT (line 835) | HRESULT
  function LONG (line 864) | LONG CBaseFilter::GetPinVersion()
  function STDMETHODIMP (line 878) | STDMETHODIMP CBaseFilter::Register()
  function STDMETHODIMP (line 915) | STDMETHODIMP CBaseFilter::Unregister()
  function STDMETHODIMP (line 1020) | STDMETHODIMP
  function STDMETHODIMP (line 1059) | STDMETHODIMP
  function STDMETHODIMP (line 1085) | STDMETHODIMP
  function STDMETHODIMP (line 1163) | STDMETHODIMP
  function STDMETHODIMP (line 1194) | STDMETHODIMP
  function STDMETHODIMP (line 1216) | STDMETHODIMP
  function STDMETHODIMP (line 1276) | STDMETHODIMP
  function STDMETHODIMP (line 1315) | STDMETHODIMP
  function STDMETHODIMP (line 1351) | STDMETHODIMP
  function STDMETHODIMP (line 1431) | STDMETHODIMP
  function STDMETHODIMP (line 1462) | STDMETHODIMP
  function STDMETHODIMP (line 1616) | STDMETHODIMP
  function STDMETHODIMP (line 1710) | STDMETHODIMP
  function HRESULT (line 1768) | HRESULT
  function HRESULT (line 1867) | HRESULT CBasePin::TryMediaTypes(IPin *pReceivePin, __in_opt const CMedia...
  function HRESULT (line 1945) | HRESULT CBasePin::AgreeMediaType(IPin *pReceivePin, const CMediaType *pmt)
  function HRESULT (line 2002) | HRESULT
  function HRESULT (line 2013) | HRESULT
  function HRESULT (line 2029) | HRESULT
  function HRESULT (line 2051) | HRESULT
  function STDMETHODIMP (line 2061) | STDMETHODIMP
  function STDMETHODIMP (line 2162) | STDMETHODIMP
  function STDMETHODIMP (line 2176) | STDMETHODIMP
  function STDMETHODIMP (line 2218) | STDMETHODIMP
  function STDMETHODIMP (line 2243) | STDMETHODIMP
  function STDMETHODIMP (line 2265) | STDMETHODIMP
  function STDMETHODIMP (line 2291) | STDMETHODIMP
  function STDMETHODIMP (line 2302) | STDMETHODIMP
  function STDMETHODIMP (line 2316) | STDMETHODIMP
  function STDMETHODIMP (line 2342) | STDMETHODIMP
  function HRESULT (line 2364) | HRESULT CBasePin::GetMediaType(int iPosition, __inout CMediaType *pMedia...
  function LONG (line 2379) | LONG CBasePin::GetMediaTypeVersion()
  function HRESULT (line 2395) | HRESULT
  function HRESULT (line 2405) | HRESULT
  function HRESULT (line 2416) | HRESULT
  function STDMETHODIMP (line 2424) | STDMETHODIMP
  function STDMETHODIMP (line 2430) | STDMETHODIMP
  function STDMETHODIMP (line 2440) | STDMETHODIMP
  function STDMETHODIMP (line 2453) | STDMETHODIMP
  function HRESULT (line 2493) | HRESULT
  function HRESULT (line 2510) | HRESULT
  function HRESULT (line 2530) | HRESULT
  function HRESULT (line 2562) | HRESULT
  function HRESULT (line 2581) | HRESULT
  function HRESULT (line 2662) | HRESULT
  function HRESULT (line 2699) | HRESULT
  function HRESULT (line 2716) | HRESULT
  function HRESULT (line 2730) | HRESULT
  function HRESULT (line 2743) | HRESULT
  function STDMETHODIMP (line 2756) | STDMETHODIMP
  function STDMETHODIMP (line 2763) | STDMETHODIMP
  function STDMETHODIMP (line 2770) | STDMETHODIMP
  function HRESULT (line 2777) | HRESULT
  function HRESULT (line 2789) | HRESULT
  function HRESULT (line 2800) | HRESULT
  function STDMETHODIMP (line 2852) | STDMETHODIMP
  function STDMETHODIMP (line 2878) | STDMETHODIMP
  function STDMETHODIMP (line 2904) | STDMETHODIMP
  function HRESULT (line 2927) | HRESULT
  function STDMETHODIMP (line 2959) | STDMETHODIMP
  function STDMETHODIMP (line 3045) | STDMETHODIMP
  function STDMETHODIMP (line 3069) | STDMETHODIMP
  function STDMETHODIMP (line 3127) | STDMETHODIMP
  function STDMETHODIMP (line 3151) | STDMETHODIMP
  function STDMETHODIMP (line 3174) | STDMETHODIMP
  function HRESULT (line 3187) | HRESULT
  function STDMETHODIMP (line 3204) | STDMETHODIMP
  function HRESULT (line 3213) | HRESULT
  function HRESULT (line 3239) | HRESULT
  function STDMETHODIMP (line 3375) | STDMETHODIMP
  function HRESULT (line 3453) | HRESULT
  function STDMETHODIMP (line 3469) | STDMETHODIMP
  function STDMETHODIMP (line 3490) | STDMETHODIMP
  function STDMETHODIMP (line 3520) | STDMETHODIMP
  function STDMETHODIMP (line 3551) | STDMETHODIMP
  function STDMETHODIMP (line 3568) | STDMETHODIMP
  function STDMETHODIMP (line 3593) | STDMETHODIMP
  function STDMETHODIMP (line 3606) | STDMETHODIMP
  function STDMETHODIMP (line 3623) | STDMETHODIMP
  function STDMETHODIMP (line 3638) | STDMETHODIMP
  function STDMETHODIMP (line 3653) | STDMETHODIMP
  function STDMETHODIMP (line 3666) | STDMETHODIMP
  function STDMETHODIMP (line 3686) | STDMETHODIMP
  function STDMETHODIMP (line 3700) | STDMETHODIMP
  function STDMETHODIMP (line 3729) | STDMETHODIMP
  function STDMETHODIMP (line 3765) | STDMETHODIMP CMediaSample::GetProperties(DWORD cbProperties, __out_bcoun...
  function HRESULT (line 3796) | HRESULT CMediaSample::SetProperties(DWORD cbProperties, __in_bcount(cbPr...
  function HRESULT (line 4028) | HRESULT CDynamicOutputPin::Initialize(void)
  function STDMETHODIMP (line 4047) | STDMETHODIMP CDynamicOutputPin::NonDelegatingQueryInterface(REFIID riid,...
  function STDMETHODIMP (line 4059) | STDMETHODIMP CDynamicOutputPin::Disconnect(void)
  function STDMETHODIMP (line 4065) | STDMETHODIMP CDynamicOutputPin::Block(DWORD dwBlockFlags, HANDLE hEvent)
  function HRESULT (line 4132) | HRESULT CDynamicOutputPin::SynchronousBlockOutputPin(void)
  function HRESULT (line 4169) | HRESULT CDynamicOutputPin::AsynchronousBlockOutputPin(HANDLE hNotifyCall...
  function HRESULT (line 4236) | HRESULT CDynamicOutputPin::UnblockOutputPin(void)
  function HRESULT (line 4268) | HRESULT CDynamicOutputPin::StartUsingOutputPin(void)
  function HRESULT (line 4367) | HRESULT CDynamicOutputPin::Active(void)
  function HRESULT (line 4387) | HRESULT CDynamicOutputPin::Inactive(void)
  function HRESULT (line 4398) | HRESULT CDynamicOutputPin::DeliverBeginFlush(void)
  function HRESULT (line 4409) | HRESULT CDynamicOutputPin::DeliverEndFlush(void)
  function HRESULT (line 4422) | HRESULT CDynamicOutputPin::ChangeOutputFormat(const AM_MEDIA_TYPE *pmt, ...
  function HRESULT (line 4448) | HRESULT CDynamicOutputPin::ChangeMediaType(const CMediaType *pmt)
  function HRESULT (line 4488) | HRESULT CDynamicOutputPin::ChangeMediaTypeHelper(const CMediaType *pmt)
  function HRESULT (line 4560) | HRESULT CDynamicOutputPin::DynamicReconnect(const CMediaType *pmt)
  function HRESULT (line 4577) | HRESULT CDynamicOutputPin::CompleteConnect(IPin *pReceivePin)
  function HRESULT (line 4630) | HRESULT CDynamicOutputPin::WaitEvent(HANDLE hEvent)
  function STDMETHODIMP (line 4747) | STDMETHODIMP
  function STDMETHODIMP (line 4767) | STDMETHODIMP
  function STDMETHODIMP (line 4816) | STDMETHODIMP
  function HRESULT (line 4835) | HRESULT CBaseAllocator::GetBuffer(__deref_out IMediaSample **ppBuffer, _...
  function STDMETHODIMP (line 4893) | STDMETHODIMP
  function STDMETHODIMP (line 4949) | STDMETHODIMP
  function STDMETHODIMP (line 4966) | STDMETHODIMP
  function STDMETHODIMP (line 4985) | STDMETHODIMP
  function STDMETHODIMP (line 5027) | STDMETHODIMP
  function HRESULT (line 5087) | HRESULT
  function CUnknown (line 5134) | CUnknown *CMemAllocator::CreateInstance(__inout_opt LPUNKNOWN pUnk, __in...
  function STDMETHODIMP (line 5158) | STDMETHODIMP
  function HRESULT (line 5231) | HRESULT
  function STDAPI (line 5396) | STDAPI

FILE: common/baseclasses/amfilter.h
  function BOOL (line 119) | BOOL IsActive()
  function BOOL (line 233) | BOOL IsActive()
  function BOOL (line 240) | BOOL IsStopped() { return (m_State == State_Stopped); }
  function __out_opt (line 269) | __out_opt IFilterGraph *GetFilterGraph() { return m_pGraph; }
  function virtual (line 283) | virtual int GetPinCount() PURE;
  function DisplayPinInfo (line 339) | void DisplayPinInfo(IPin *pReceivePin){}
  function DisplayTypeInfo (line 340) | void DisplayTypeInfo(IPin *pPin, const CMediaType *pmt){}
  function STDMETHODIMP (line 427) | STDMETHODIMP QueryInternalConnections(__out_ecount_part(*nPin, *nPin) IP...
  function BOOL (line 457) | BOOL IsConnected(void) { return (m_Connected != NULL); }
  function IPin (line 459) | IPin *GetConnected() { return m_Connected; }
  function BOOL (line 462) | BOOL IsStopped() { return (m_pFilter->m_State == State_Stopped); }
  function REFERENCE_TIME (line 496) | REFERENCE_TIME CurrentStopTime() { return m_tStop; }
  function REFERENCE_TIME (line 497) | REFERENCE_TIME CurrentStartTime() { return m_tStart; }
  function CurrentRate (line 498) | double CurrentRate() { return m_dRate; }
  function LPWSTR (line 501) | LPWSTR Name() { return m_pName; }
  function SetReconnectWhenActive (line 504) | void SetReconnectWhenActive(bool bCanReconnect) { m_bCanReconnectWhenAct...
  function CanReconnectWhenActive (line 506) | bool CanReconnectWhenActive() { return m_bCanReconnectWhenActive; }
  function class (line 525) | class CEnumPins : public IEnumPins // The interface we support
  function class (line 586) | class CEnumMediaTypes : public IEnumMediaTypes // The interface we support
  function BOOL (line 800) | BOOL IsReadOnly() { return m_bReadOnly; }
  function BOOL (line 803) | BOOL IsFlushing() { return m_bFlushing; }
  function AM_SAMPLE2_PROPERTIES (line 825) | AM_SAMPLE2_PROPERTIES *SampleProps()
  type BLOCK_STATE (line 896) | enum BLOCK_STATE
  function class (line 958) | class CAutoUsingOutputPin
  function CAutoUsingOutputPin (line 968) | inline CAutoUsingOutputPin::CAutoUsingOutputPin(__in CDynamicOutputPin *...
  function CAutoUsingOutputPin (line 988) | inline CAutoUsingOutputPin::~CAutoUsingOutputPin()
  function HRESULT (line 998) | inline HRESULT CDynamicOutputPin::Deliver(IMediaSample *pSample)
  function HRESULT (line 1007) | inline HRESULT CDynamicOutputPin::DeliverEndOfStream(void)
  function HRESULT (line 1016) | inline HRESULT CDynamicOutputPin::DeliverNewSegment(REFERENCE_TIME tStar...
  function class (line 1059) | class CMediaSample : public IMediaSample2 // The interface we support
  function CMediaSample (line 1198) | static CMediaSample *&NextSample(__in CMediaSample *pSample) { return pS...
  function class (line 1201) | class CSampleList
  function SetWaiting (line 1354) | void SetWaiting() { m_lWaiting++; }
  function class (line 1376) | class CMemAllocator : public CBaseAllocator

FILE: common/baseclasses/amvideo.cpp
  function GetBitmapSize (line 43) | GetBitmapSize(const BITMAPINFOHEADER *pHeader)
  function GetTrueColorType (line 51) | GetTrueColorType(const BITMAPINFOHEADER *pbmiHeader)
  function GetBitmapSubtype (line 99) | GetBitmapSubtype(const BITMAPINFOHEADER *pbmiHeader)
  function GetBitCount (line 132) | GetBitCount(const GUID *pSubtype)
  function LocateSubtype (line 160) | int LocateSubtype(const GUID *pSubtype)
  function GetSubtypeNameW (line 183) | GetSubtypeNameW(const GUID *pSubtype)
  function GetSubtypeNameA (line 188) | GetSubtypeNameA(const GUID *pSubtype)
  function GetSubtypeName (line 200) | GetSubtypeName(const GUID *pSubtype)
  function GetBitmapFormatSize (line 219) | GetBitmapFormatSize(const BITMAPINFOHEADER *pHeader)
  function ContainsPalette (line 264) | ContainsPalette(const VIDEOINFOHEADER *pVideoInfo)
  function GetBitmapPalette (line 278) | GetBitmapPalette(const VIDEOINFOHEADER *pVideoInfo)

FILE: common/baseclasses/arithutil.cpp
  function ULONG (line 24) | __inline ULONG WINAPI EnlargedUnsignedDivide(IN ULARGE_INTEGER Dividend,...
  function ULONG (line 33) | __inline ULONG WINAPI EnlargedUnsignedDivide(IN ULARGE_INTEGER Dividend,...
  function LONGLONG (line 62) | LONGLONG WINAPI llMulDiv(LONGLONG a, LONGLONG b, LONGLONG c, LONGLONG d)
  function LONGLONG (line 237) | LONGLONG WINAPI Int64x32Div32(LONGLONG a, LONG b, LONG c, LONG d)

FILE: common/baseclasses/cache.h
  function class (line 31) | class CCache : CBaseObject

FILE: common/baseclasses/checkbmi.h
  function BOOL (line 11) | __inline BOOL MultiplyCheckOverflow(DWORD a, DWORD b, __deref_out_range(...
  function BOOL (line 32) | __inline BOOL ValidateBitmapInfoHeader(

FILE: common/baseclasses/combase.cpp
  function HINSTANCE (line 71) | HINSTANCE LoadOLEAut32()
  function STDMETHODIMP (line 136) | STDMETHODIMP CUnknown::NonDelegatingQueryInterface(REFIID riid, __deref_...
  function T (line 160) | inline static T ourmax(const T &a, const T &b)
  function STDAPI (line 216) | STDAPI GetInterface(LPUNKNOWN pUnk, __out void **ppv)
  function BOOL (line 226) | BOOL WINAPI IsEqualObject(IUnknown *pFirst, IUnknown *pSecond)

FILE: common/baseclasses/combase.h
  type REGPINTYPES (line 109) | typedef REGPINTYPES AMOVIESETUP_MEDIATYPE, *PAMOVIESETUP_MEDIATYPE, *FAR...
  type REGFILTERPINS (line 111) | typedef REGFILTERPINS AMOVIESETUP_PIN, *PAMOVIESETUP_PIN, *FAR LPAMOVIES...
  type AMOVIESETUP_FILTER (line 113) | typedef struct _AMOVIESETUP_FILTER
  function DECLARE_INTERFACE (line 136) | DECLARE_INTERFACE(INonDelegatingUnknown)
  type INonDelegatingUnknown (line 145) | typedef INonDelegatingUnknown *PNDUNKNOWN;
  function class (line 154) | class CBaseObject
  type CUnknown (line 235) | typedef CUnknown *(CALLBACK *LPFNNewCOMObject)(__in_opt LPUNKNOWN pUnkOu...
  function class (line 248) | class CFactoryTemplate

FILE: common/baseclasses/cprop.cpp
  function STDMETHODIMP (line 85) | STDMETHODIMP
  function STDMETHODIMP (line 100) | STDMETHODIMP CBasePropertyPage::GetPageInfo(__out LPPROPPAGEINFO pPageInfo)
  function INT_PTR (line 132) | INT_PTR CALLBACK CBasePropertyPage::DialogProc(HWND hwnd, UINT uMsg, WPA...
  function STDMETHODIMP (line 165) | STDMETHODIMP CBasePropertyPage::SetObjects(ULONG cObjects, __in_ecount_o...
  function STDMETHODIMP (line 193) | STDMETHODIMP CBasePropertyPage::Activate(HWND hwndParent, LPCRECT pRect,...
  function STDMETHODIMP (line 221) | STDMETHODIMP CBasePropertyPage::Move(LPCRECT pRect)
  function STDMETHODIMP (line 242) | STDMETHODIMP CBasePropertyPage::Show(UINT nCmdShow)
  function STDMETHODIMP (line 265) | STDMETHODIMP CBasePropertyPage::Deactivate(void)
  function STDMETHODIMP (line 296) | STDMETHODIMP CBasePropertyPage::SetPageSite(__in_opt LPPROPERTYPAGESITE ...
  function STDMETHODIMP (line 325) | STDMETHODIMP CBasePropertyPage::Apply()
  function INT_PTR (line 364) | INT_PTR CBasePropertyPage::OnReceiveMessage(HWND hwnd, UINT uMsg, WPARAM...

FILE: common/baseclasses/cprop.h
  function virtual (line 57) | virtual ~CBasePropertyPage(){}
  function HRESULT (line 62) | HRESULT OnConnect(IUnknown *pUnknown) { return NOERROR; }
  function virtual (line 63) | virtual HRESULT OnDisconnect() { return NOERROR; }
  function virtual (line 64) | virtual HRESULT OnActivate() { return NOERROR; }
  function virtual (line 65) | virtual HRESULT OnDeactivate() { return NOERROR; }
  function virtual (line 66) | virtual HRESULT OnApplyChanges() { return NOERROR; }
  function STDMETHODIMP (line 81) | STDMETHODIMP IsPageDirty(void) { return m_bDirty ? S_OK : S_FALSE; }
  function STDMETHODIMP (line 83) | STDMETHODIMP Help(LPCWSTR lpszHelpDir) { return E_NOTIMPL; }
  function STDMETHODIMP (line 84) | STDMETHODIMP TranslateAccelerator(__inout LPMSG lpMsg) { return E_NOTIMP...

FILE: common/baseclasses/ctlutil.cpp
  function STDMETHODIMP (line 32) | STDMETHODIMP
  function STDMETHODIMP (line 48) | STDMETHODIMP
  function STDMETHODIMP (line 136) | STDMETHODIMP
  function STDMETHODIMP (line 164) | STDMETHODIMP
  function STDMETHODIMP (line 180) | STDMETHODIMP
  function STDMETHODIMP (line 188) | STDMETHODIMP
  function STDMETHODIMP (line 194) | STDMETHODIMP
  function STDMETHODIMP (line 201) | STDMETHODIMP
  function STDMETHODIMP (line 234) | STDMETHODIMP
  function STDMETHODIMP (line 250) | STDMETHODIMP
  function STDMETHODIMP (line 258) | STDMETHODIMP
  function STDMETHODIMP (line 264) | STDMETHODIMP
  function STDMETHODIMP (line 271) | STDMETHODIMP
  function STDMETHODIMP (line 310) | STDMETHODIMP
  function STDMETHODIMP (line 326) | STDMETHODIMP
  function STDMETHODIMP (line 334) | STDMETHODIMP
  function STDMETHODIMP (line 340) | STDMETHODIMP
  function STDMETHODIMP (line 347) | STDMETHODIMP
  function STDMETHODIMP (line 386) | STDMETHODIMP
  function HRESULT (line 401) | HRESULT
  function HRESULT (line 426) | HRESULT
  function STDMETHODIMP (line 451) | STDMETHODIMP
  function STDMETHODIMP (line 466) | STDMETHODIMP
  function STDMETHODIMP (line 481) | STDMETHODIMP
  function STDMETHODIMP (line 496) | STDMETHODIMP
  function STDMETHODIMP (line 511) | STDMETHODIMP
  function STDMETHODIMP (line 526) | STDMETHODIMP
  function STDMETHODIMP (line 541) | STDMETHODIMP
  function STDMETHODIMP (line 556) | STDMETHODIMP
  function STDMETHODIMP (line 572) | STDMETHODIMP
  function STDMETHODIMP (line 588) | STDMETHODIMP
  function HRESULT (line 603) | HRESULT
  function STDMETHODIMP (line 618) | STDMETHODIMP
  function STDMETHODIMP (line 630) | STDMETHODIMP
  function STDMETHODIMP (line 637) | STDMETHODIMP
  function STDMETHODIMP (line 644) | STDMETHODIMP
  function STDMETHODIMP (line 651) | STDMETHODIMP
  function STDMETHODIMP (line 666) | STDMETHODIMP
  function STDMETHODIMP (line 680) | STDMETHODIMP
  function STDMETHODIMP (line 701) | STDMETHODIMP
  function STDMETHODIMP (line 716) | STDMETHODIMP
  function STDMETHODIMP (line 730) | STDMETHODIMP
  function STDMETHODIMP (line 744) | STDMETHODIMP
  function STDMETHODIMP (line 758) | STDMETHODIMP
  function STDMETHODIMP (line 772) | STDMETHODIMP
  function STDMETHODIMP (line 786) | STDMETHODIMP
  function STDMETHODIMP (line 800) | STDMETHODIMP
  function STDMETHODIMP (line 814) | STDMETHODIMP
  function STDMETHODIMP (line 833) | STDMETHODIMP
  function STDMETHODIMP (line 847) | STDMETHODIMP
  function HRESULT (line 880) | HRESULT
  function HRESULT (line 906) | HRESULT
  function HRESULT (line 918) | HRESULT
  function HRESULT (line 941) | HRESULT
  function HRESULT (line 954) | HRESULT
  function HRESULT (line 990) | HRESULT CSourceSeeking::NonDelegatingQueryInterface(REFIID riid, __deref...
  function HRESULT (line 1003) | HRESULT CSourceSeeking::IsFormatSupported(const GUID *pFormat)
  function HRESULT (line 1010) | HRESULT CSourceSeeking::QueryPreferredFormat(__out GUID *pFormat)
  function HRESULT (line 1017) | HRESULT CSourceSeeking::SetTimeFormat(const GUID *pFormat)
  function HRESULT (line 1025) | HRESULT CSourceSeeking::IsUsingTimeFormat(const GUID *pFormat)
  function HRESULT (line 1031) | HRESULT CSourceSeeking::GetTimeFormat(__out GUID *pFormat)
  function HRESULT (line 1038) | HRESULT CSourceSeeking::GetDuration(__out LONGLONG *pDuration)
  function HRESULT (line 1046) | HRESULT CSourceSeeking::GetStopPosition(__out LONGLONG *pStop)
  function HRESULT (line 1054) | HRESULT CSourceSeeking::GetCurrentPosition(__out LONGLONG *pCurrent)
  function HRESULT (line 1061) | HRESULT CSourceSeeking::GetCapabilities(__out DWORD *pCapabilities)
  function HRESULT (line 1068) | HRESULT CSourceSeeking::CheckCapabilities(__inout DWORD *pCapabilities)
  function HRESULT (line 1076) | HRESULT CSourceSeeking::ConvertTimeFormat(__out LONGLONG *pTarget, __in_...
  function HRESULT (line 1096) | HRESULT CSourceSeeking::SetPositions(__inout_opt LONGLONG *pCurrent, DWO...
  function HRESULT (line 1164) | HRESULT CSourceSeeking::GetPositions(__out_opt LONGLONG *pCurrent, __out...
  function HRESULT (line 1179) | HRESULT CSourceSeeking::GetAvailable(__out_opt LONGLONG *pEarliest, __ou...
  function HRESULT (line 1193) | HRESULT CSourceSeeking::SetRate(double dRate)
  function HRESULT (line 1202) | HRESULT CSourceSeeking::GetRate(__out double *pdRate)
  function HRESULT (line 1210) | HRESULT CSourceSeeking::GetPreroll(__out LONGLONG *pPreroll)
  function STDMETHODIMP (line 1229) | STDMETHODIMP
  function STDMETHODIMP (line 1240) | STDMETHODIMP
  function STDMETHODIMP (line 1250) | STDMETHODIMP
  function STDMETHODIMP (line 1261) | STDMETHODIMP
  function STDMETHODIMP (line 1271) | STDMETHODIMP
  function STDMETHODIMP (line 1279) | STDMETHODIMP
  function STDMETHODIMP (line 1285) | STDMETHODIMP
  function STDMETHODIMP (line 1296) | STDMETHODIMP
  function STDMETHODIMP (line 1308) | STDMETHODIMP
  function STDMETHODIMP (line 1318) | STDMETHODIMP
  function STDMETHODIMP (line 1335) | STDMETHODIMP
  function STDMETHODIMP (line 1349) | STDMETHODIMP
  function STDMETHODIMP (line 1355) | STDMETHODIMP
  function STDMETHODIMP (line 1361) | STDMETHODIMP
  function STDMETHODIMP (line 1368) | STDMETHODIMP
  function STDMETHODIMP (line 1401) | STDMETHODIMP
  function STDMETHODIMP (line 1415) | STDMETHODIMP
  function STDMETHODIMP (line 1421) | STDMETHODIMP
  function STDMETHODIMP (line 1427) | STDMETHODIMP
  function STDMETHODIMP (line 1434) | STDMETHODIMP
  function STDMETHODIMP (line 1467) | STDMETHODIMP
  function STDMETHODIMP (line 1481) | STDMETHODIMP
  function STDMETHODIMP (line 1487) | STDMETHODIMP
  function STDMETHODIMP (line 1493) | STDMETHODIMP
  function STDMETHODIMP (line 1500) | STDMETHODIMP
  function STDMETHODIMP (line 1739) | STDMETHODIMP
  function STDMETHODIMP (line 1757) | STDMETHODIMP
  function STDMETHODIMP (line 1775) | STDMETHODIMP
  function STDMETHODIMP (line 1781) | STDMETHODIMP
  function STDMETHODIMP (line 1798) | STDMETHODIMP
  function HRESULT (line 1828) | HRESULT
  function HRESULT (line 1924) | HRESULT
  function HRESULT (line 1953) | HRESULT
  function HRESULT (line 1993) | HRESULT
  function HRESULT (line 2038) | HRESULT
  function HRESULT (line 2132) | HRESULT
  function HRESULT (line 2147) | HRESULT
  function HRESULT (line 2167) | HRESULT
  function HRESULT (line 2236) | HRESULT

FILE: common/baseclasses/ctlutil.h
  function class (line 24) | class CBaseDispatch
  function class (line 127) | class COARefTime : public CRefTime
  function operator (line 140) | operator double() { return double(m_time) / 10000000; }
  function operator (line 142) | operator REFERENCE_TIME() { return m_time; }
  function BOOL (line 156) | inline BOOL operator==(const COARefTime &rt) { return m_time == rt.m_tim...
  function BOOL (line 158) | inline BOOL operator!=(const COARefTime &rt) { return m_time != rt.m_tim...
  function BOOL (line 160) | inline BOOL operator<(const COARefTime &rt) { return m_time < rt.m_time; }
  function BOOL (line 162) | inline BOOL operator>(const COARefTime &rt) { return m_time > rt.m_time; }
  function BOOL (line 164) | inline BOOL operator>=(const COARefTime &rt) { return m_time >= rt.m_tim...
  function BOOL (line 166) | inline BOOL operator<=(const COARefTime &rt) { return m_time <= rt.m_tim...
  function COARefTime (line 172) | inline COARefTime operator*(LONG l) { return COARefTime(m_time * l); }
  function COARefTime (line 174) | inline COARefTime operator/(LONG l) { return COARefTime(m_time / l); }
  function DECLARE_IUNKNOWN (line 211) | DECLARE_IUNKNOWN
  function virtual (line 216) | virtual HRESULT GetMediaTime(__out LONGLONG *pStartTime, __out_opt LONGL...
  function class (line 261) | class CRendererPosPassThru : public CPosPassThru
  function STDMETHODIMP (line 338) | STDMETHODIMP GetPreferredAspectRatio(__out long *plAspectX, __out long *...
  function STDMETHODIMP (line 394) | STDMETHODIMP get_CurrentPosition(__out REFTIME *pllTime) { return E_NOTI...
  function virtual (line 449) | virtual HRESULT ChangeStart() PURE;
  function BOOL (line 530) | BOOL IsStreamTime() { return m_bStream; }
  function CRefTime (line 532) | CRefTime GetTime() { return m_time; }
  function REFIID (line 534) | REFIID GetIID() { return *m_iid; }
  function GetMethod (line 536) | long GetMethod() { return m_dispidMethod; }
  function GetFlags (line 538) | short GetFlags() { return m_wFlags; }
  function DISPPARAMS (line 540) | DISPPARAMS *GetParams() { return &m_DispParams; }
  function VARIANT (line 542) | VARIANT *GetResult() { return m_pvarResult; }
  function class (line 571) | class AM_NOVTABLE CCmdQueue

FILE: common/baseclasses/ddmm.cpp
  function BOOL (line 25) | BOOL CALLBACK FindDeviceCallback(__in_opt GUID *lpGUID, __in LPSTR szNam...
  function BOOL (line 46) | BOOL CALLBACK FindDeviceCallbackEx(__in_opt GUID *lpGUID, __in LPSTR szN...
  function IDirectDraw (line 73) | IDirectDraw *DirectDrawCreateFromDevice(__in_opt LPSTR szDevice, PDRAWCR...
  function IDirectDraw (line 109) | IDirectDraw *DirectDrawCreateFromDeviceEx(__in_opt LPSTR szDevice, PDRAW...

FILE: common/baseclasses/ddmm.h
  type HRESULT (line 20) | typedef HRESULT (*PDRAWCREATE)(IID *, LPDIRECTDRAW *, LPUNKNOWN);
  type HRESULT (line 21) | typedef HRESULT (*PDRAWENUM)(LPDDENUMCALLBACKA, LPVOID);

FILE: common/baseclasses/dllentry.cpp
  class CClassFactory (line 36) | class CClassFactory
    method BOOL (line 61) | static BOOL IsLocked() { return (m_cLocked > 0); }
  function STDMETHODIMP (line 74) | STDMETHODIMP
  function STDMETHODIMP (line 113) | STDMETHODIMP
  function STDMETHODIMP (line 177) | STDMETHODIMP
  function STDAPI (line 194) | STDAPI DllGetClassObject(__in REFCLSID rClsID, __in REFIID riid, __deref...
  function DllInitClasses (line 228) | void DllInitClasses(BOOL bLoading)
  function STDAPI (line 251) | STDAPI
  function DECLSPEC_NOINLINE (line 273) | DECLSPEC_NOINLINE BOOL WINAPI DllEntryPoint(HINSTANCE hInstance, ULONG u...
  function DECLSPEC_NOINLINE (line 283) | DECLSPEC_NOINLINE

FILE: common/baseclasses/dllsetup.cpp
  function STDAPI (line 37) | STDAPI
  function STDAPI (line 94) | STDAPI
  function STDAPI (line 179) | STDAPI
  function STDAPI (line 209) | STDAPI
  function STDAPI (line 265) | STDAPI
  function STDAPI (line 317) | STDAPI
  function STDAPI (line 462) | STDAPI
  function STDAPI (line 554) | STDAPI

FILE: common/baseclasses/dxmperf.h
  function ULONGLONG (line 20) | inline ULONGLONG _RDTSC(void)
  function VOID (line 225) | inline VOID PERFLOG_STREAMTRACE(ULONG Level, ULONG Id, ULONGLONG DShowCl...

FILE: common/baseclasses/fourcc.h
  function class (line 28) | class FOURCCMap : public GUID
  function InitGUID (line 49) | inline void FOURCCMap::InitGUID()
  function FOURCCMap (line 57) | inline FOURCCMap::FOURCCMap()
  function FOURCCMap (line 63) | inline FOURCCMap::FOURCCMap(DWORD fourcc)
  function FOURCCMap (line 69) | inline FOURCCMap::FOURCCMap(const GUID *pGuid)
  function SetFOURCC (line 75) | inline void FOURCCMap::SetFOURCC(const GUID *pGuid)
  function SetFOURCC (line 81) | inline void FOURCCMap::SetFOURCC(DWORD fourcc)
  function DWORD (line 86) | inline DWORD FOURCCMap::GetFOURCC(void)

FILE: common/baseclasses/msgthrd.h
  function class (line 12) | class CMsg

FILE: common/baseclasses/mtype.cpp
  function CMediaType (line 58) | CMediaType &CMediaType::operator=(const AM_MEDIA_TYPE &rt)
  function CMediaType (line 64) | CMediaType &CMediaType::operator=(const CMediaType &rt)
  function BOOL (line 70) | BOOL CMediaType::operator==(const CMediaType &rt) const
  function BOOL (line 85) | BOOL CMediaType::operator!=(const CMediaType &rt) const
  function HRESULT (line 96) | HRESULT
  function HRESULT (line 102) | HRESULT
  function BOOL (line 118) | BOOL CMediaType::IsValid() const
  function ULONG (line 133) | ULONG
  function BOOL (line 169) | BOOL CMediaType::SetFormat(__in_bcount(cb) BYTE *pformat, ULONG cb)
  function BYTE (line 205) | BYTE *CMediaType::AllocFormatBuffer(ULONG length)
  function BYTE (line 244) | BYTE *CMediaType::ReallocFormatBuffer(ULONG length)
  function BOOL (line 292) | BOOL CMediaType::IsPartiallySpecified(void) const
  function BOOL (line 304) | BOOL CMediaType::MatchesPartial(const CMediaType *ppartial) const
  function DeleteMediaType (line 340) | void WINAPI DeleteMediaType(__inout_opt AM_MEDIA_TYPE *pmt)
  function HRESULT (line 384) | HRESULT WINAPI CopyMediaType(__out AM_MEDIA_TYPE *pmtTarget, const AM_ME...
  function FreeMediaType (line 414) | void WINAPI FreeMediaType(__inout AM_MEDIA_TYPE &mt)
  function STDAPI (line 433) | STDAPI CreateAudioMediaType(const WAVEFORMATEX *pwfx, __out AM_MEDIA_TYP...

FILE: common/baseclasses/mtype.h
  function class (line 17) | class CMediaType : public _AMMediaType

FILE: common/baseclasses/outputq.cpp
  function DWORD (line 187) | DWORD WINAPI COutputQueue::InitialThreadProc(__in LPVOID pv)
  function DWORD (line 209) | DWORD COutputQueue::ThreadProc()
  function HRESULT (line 624) | HRESULT COutputQueue::Receive(IMediaSample *pSample)
  function HRESULT (line 642) | HRESULT COutputQueue::ReceiveMultiple(__in_ecount(nSamples) IMediaSample...
  function BOOL (line 844) | BOOL COutputQueue::IsIdle()

FILE: common/baseclasses/outputq.h
  type CGenericList (line 11) | typedef CGenericList<IMediaSample> CSampleList;
  function class (line 13) | class COutputQueue : public CCritSec

FILE: common/baseclasses/perflog.cpp
  function VOID (line 86) | VOID PerflogReadModuleLevel(HINSTANCE hInstance)
  function BOOL (line 143) | BOOL PerflogInitIfEnabled(IN HINSTANCE hInstance, __in IN PPERFLOG_LOGGI...
  function BOOL (line 156) | BOOL PerflogInitialize(__in IN PPERFLOG_LOGGING_PARAMS LogParams)
  function VOID (line 203) | VOID PerflogShutdown(VOID)
  function ULONG (line 220) | ULONG
  function VOID (line 263) | VOID PerflogTraceEvent(__in PEVENT_TRACE_HEADER Event)
  function VOID (line 273) | VOID PerflogTraceEventLevel(ULONG Level, __in PEVENT_TRACE_HEADER Event)

FILE: common/baseclasses/perflog.h
  type PERFLOG_LOGGING_PARAMS (line 9) | typedef struct _PERFLOG_LOGGING_PARAMS

FILE: common/baseclasses/perfstruct.h
  type PERFINFO_DSHOW_AUDIOGLITCH (line 53) | typedef struct PERFINFO_DSHOW_AUDIOGLITCH
  type PERFINFO_WMI_AUDIO_GLITCH (line 62) | typedef struct PERFINFO_WMI_AUDIOGLITCH
  type PERFINFO_DSHOW_GETTIME (line 68) | typedef struct PERFINFO_DSHOW_GETTIME
  type PERFINFO_WMI_GETTIME (line 74) | typedef struct PERFINFO_WMI_GETTIME
  type PERFINFO_DSHOW_AVREND (line 80) | typedef struct PERFINFO_DSHOW_AVREND
  type PERFINFO_WMI_AVREND (line 87) | typedef struct PERFINFO_WMI_AVREND
  type PERFINFO_DSHOW_AUDIOBREAK (line 93) | typedef struct PERFINFO_DSHOW_AUDIOBREAK
  type PERFINFO_WMI_AUDIOBREAK (line 101) | typedef struct PERFINFO_WMI_AUDIOBREAK
  type PERFINFO_DSHOW_FRAMEDROP (line 107) | typedef struct PERFINFO_DSHOW_FRAMEDROP
  type PERFINFO_WMI_FRAMEDROP (line 114) | typedef struct PERFINFO_WMI_FRAMEDROP
  type PERFINFO_DSHOW_STREAMTRACE (line 141) | typedef struct _PERFINFO_DSHOW_STREAMTRACE
  type PERFINFO_WMI_STREAMTRACE (line 149) | typedef struct _PERFINFO_WMI_STREAMTRACE
  type PERFINFO_DSHOW_AUDIORECV (line 155) | typedef struct PERFINFO_DSHOW_AUDIORECV
  type PERFINFO_WMI_AUDIORECV (line 164) | typedef struct PERFINFO_WMI_AUDIORECV
  type PERFINFO_DSHOW_AUDIOSLAVE (line 170) | typedef struct PERFINFO_DSHOW_AUDIOSLAVE
  type PERFINFO_WMI_AUDIOSLAVE (line 179) | typedef struct PERFINFO_WMI_AUDIOSLAVE
  type PERFINFO_DSHOW_AUDIOADDBREAK (line 185) | typedef struct PERFINFO_DSHOW_AUDIOADDBREAK
  type PERFINFO_WMI_AUDIOADDBREAK (line 193) | typedef struct PERFINFO_WMI_AUDIOADDBREAK

FILE: common/baseclasses/pstream.cpp
  function HRESULT (line 59) | HRESULT CPersistStream::WriteToStream(IStream *pStream)
  function HRESULT (line 67) | HRESULT CPersistStream::ReadFromStream(IStream *pStream)
  function STDMETHODIMP (line 79) | STDMETHODIMP CPersistStream::Load(LPSTREAM pStm)
  function STDMETHODIMP (line 96) | STDMETHODIMP CPersistStream::Save(LPSTREAM pStm, BOOL fClearDirty)
  function STDAPI (line 124) | STDAPI WriteInt(IStream *pIStream, int n)
  function ReadInt (line 138) | ReadInt(IStream *pIStream, __out HRESULT &hr)

FILE: common/baseclasses/pstream.h
  function STDMETHODIMP (line 60) | STDMETHODIMP GetSizeMax(__out ULARGE_INTEGER *pcbSize)
  function HRESULT (line 72) | HRESULT SetDirty(BOOL fDirty)
  function virtual (line 88) | virtual DWORD GetSoftwareVersion(void) { return 0; }
  function virtual (line 95) | virtual int SizeMax() { return 0; }

FILE: common/baseclasses/pullpin.cpp
  function HRESULT (line 40) | HRESULT
  function HRESULT (line 113) | HRESULT
  function HRESULT (line 144) | HRESULT
  function HRESULT (line 166) | HRESULT
  function HRESULT (line 174) | HRESULT
  function HRESULT (line 182) | HRESULT
  function HRESULT (line 208) | HRESULT
  function HRESULT (line 215) | HRESULT
  function HRESULT (line 248) | HRESULT
  function HRESULT (line 273) | HRESULT
  function DWORD (line 308) | DWORD
  function HRESULT (line 341) | HRESULT
  function HRESULT (line 373) | HRESULT
  function HRESULT (line 398) | HRESULT

FILE: common/baseclasses/pullpin.h
  function class (line 23) | class CPullPin : public CAMThread

FILE: common/baseclasses/refclock.cpp
  function STDMETHODIMP (line 19) | STDMETHODIMP CBaseReferenceClock::NonDelegatingQueryInterface(REFIID rii...
  function STDMETHODIMP (line 134) | STDMETHODIMP CBaseReferenceClock::GetTime(__out REFERENCE_TIME *pTime)
  function STDMETHODIMP (line 167) | STDMETHODIMP CBaseReferenceClock::AdviseTime(REFERENCE_TIME baseTime,   ...
  function STDMETHODIMP (line 195) | STDMETHODIMP CBaseReferenceClock::AdvisePeriodic(REFERENCE_TIME StartTim...
  function STDMETHODIMP (line 215) | STDMETHODIMP CBaseReferenceClock::Unadvise(DWORD_PTR dwAdviseCookie)
  function REFERENCE_TIME (line 220) | REFERENCE_TIME CBaseReferenceClock::GetPrivateTime()
  function STDMETHODIMP (line 250) | STDMETHODIMP CBaseReferenceClock::SetTimeDelta(const REFERENCE_TIME &Tim...
  function DWORD (line 305) | DWORD __stdcall CBaseReferenceClock::AdviseThreadFunction(__in LPVOID p)
  function HRESULT (line 310) | HRESULT CBaseReferenceClock::AdviseThread()
  function HRESULT (line 352) | HRESULT CBaseReferenceClock::SetDefaultTimerResolution(REFERENCE_TIME ti...
  function HRESULT (line 379) | HRESULT CBaseReferenceClock::GetDefaultTimerResolution(__out REFERENCE_T...

FILE: common/baseclasses/refclock.h
  function LONGLONG (line 18) | inline LONGLONG WINAPI ConvertToMilliseconds(const REFERENCE_TIME &RT)
  function CAMSchedule (line 137) | CAMSchedule *GetSchedule() const { return m_pSchedule; }

FILE: common/baseclasses/reftime.h
  function class (line 44) | class CRefTime
  function LONG (line 81) | inline LONG Millisecs(void) { return (LONG)(m_time / (UNITS / MILLISECON...
  function LONGLONG (line 83) | inline LONGLONG GetUnits(void) { return m_time; }

FILE: common/baseclasses/renbase.cpp
  function TimeDiff (line 17) | int inline TimeDiff(REFERENCE_TIME rt)
  function HRESULT (line 104) | HRESULT CBaseRenderer::GetMediaPositionInterface(REFIID riid, __deref_ou...
  function STDMETHODIMP (line 143) | STDMETHODIMP CBaseRenderer::NonDelegatingQueryInterface(REFIID riid, __d...
  function HRESULT (line 163) | HRESULT CBaseRenderer::SourceThreadCanWait(BOOL bCanWait)
  function HRESULT (line 262) | HRESULT CBaseRenderer::WaitForRenderTime()
  function FILTER_STATE (line 342) | FILTER_STATE CBaseRenderer::GetRealState()
  function STDMETHODIMP (line 351) | STDMETHODIMP CBaseRenderer::GetState(DWORD dwMSecs, FILTER_STATE *State)
  function HRESULT (line 371) | HRESULT CBaseRenderer::CompleteStateChange(FILTER_STATE OldState)
  function STDMETHODIMP (line 411) | STDMETHODIMP CBaseRenderer::Stop()
  function STDMETHODIMP (line 470) | STDMETHODIMP CBaseRenderer::Pause()
  function STDMETHODIMP (line 547) | STDMETHODIMP CBaseRenderer::Run(REFERENCE_TIME StartTime)
  function CBasePin (line 627) | CBasePin *CBaseRenderer::GetPin(int n)
  function STDMETHODIMP (line 667) | STDMETHODIMP CBaseRenderer::FindPin(LPCWSTR Id, __deref_out IPin **ppPin)
  function HRESULT (line 696) | HRESULT CBaseRenderer::EndOfStream()
  function HRESULT (line 732) | HRESULT CBaseRenderer::BeginFlush()
  function HRESULT (line 752) | HRESULT CBaseRenderer::EndFlush()
  function HRESULT (line 767) | HRESULT CBaseRenderer::CompleteConnect(IPin *pReceivePin)
  function HRESULT (line 795) | HRESULT CBaseRenderer::Active()
  function HRESULT (line 802) | HRESULT CBaseRenderer::Inactive()
  function HRESULT (line 817) | HRESULT CBaseRenderer::SetMediaType(const CMediaType *pmt)
  function HRESULT (line 828) | HRESULT CBaseRenderer::BreakConnect()
  function HRESULT (line 869) | HRESULT CBaseRenderer::GetSampleTimes(IMediaSample *pMediaSample, __out ...
  function HRESULT (line 907) | HRESULT CBaseRenderer::ShouldDrawSampleNow(IMediaSample *pMediaSample, _...
  function HRESULT (line 930) | HRESULT CBaseRenderer::CancelNotification()
  function BOOL (line 955) | BOOL CBaseRenderer::ScheduleSample(IMediaSample *pMediaSample)
  function HRESULT (line 1019) | HRESULT CBaseRenderer::Render(IMediaSample *pMediaSample)
  function BOOL (line 1050) | BOOL CBaseRenderer::HaveCurrentSample()
  function IMediaSample (line 1061) | IMediaSample *CBaseRenderer::GetCurrentSample()
  function HRESULT (line 1079) | HRESULT CBaseRenderer::PrepareReceive(IMediaSample *pMediaSample)
  function HRESULT (line 1170) | HRESULT CBaseRenderer::Receive(IMediaSample *pSample)
  function HRESULT (line 1250) | HRESULT CBaseRenderer::ClearPendingSample()
  function EndOfStreamTimer (line 1263) | void CALLBACK EndOfStreamTimer(UINT uID,         // Timer identifier
  function HRESULT (line 1299) | HRESULT CBaseRenderer::SendEndOfStream()
  function HRESULT (line 1349) | HRESULT CBaseRenderer::NotifyEndOfStream()
  function HRESULT (line 1386) | HRESULT CBaseRenderer::ResetEndOfStream()
  function HRESULT (line 1416) | HRESULT CBaseRenderer::StartStreaming()
  function HRESULT (line 1456) | HRESULT CBaseRenderer::StopStreaming()
  function BOOL (line 1548) | BOOL CBaseRenderer::OnDisplayChange()
  function STDMETHODIMP (line 1621) | STDMETHODIMP CRendererInputPin::EndOfStream()
  function STDMETHODIMP (line 1650) | STDMETHODIMP CRendererInputPin::BeginFlush()
  function STDMETHODIMP (line 1663) | STDMETHODIMP CRendererInputPin::EndFlush()
  function STDMETHODIMP (line 1678) | STDMETHODIMP CRendererInputPin::Receive(IMediaSample *pSample)
  function HRESULT (line 1724) | HRESULT CRendererInputPin::BreakConnect()
  function HRESULT (line 1736) | HRESULT CRendererInputPin::CompleteConnect(IPin *pReceivePin)
  function STDMETHODIMP (line 1748) | STDMETHODIMP CRendererInputPin::QueryId(__deref_out LPWSTR *Id)
  function HRESULT (line 1765) | HRESULT CRendererInputPin::CheckMediaType(const CMediaType *pmt)
  function HRESULT (line 1772) | HRESULT CRendererInputPin::Active()
  function HRESULT (line 1779) | HRESULT CRendererInputPin::Inactive()
  function HRESULT (line 1792) | HRESULT CRendererInputPin::SetMediaType(const CMediaType *pmt)
  function HRESULT (line 1877) | HRESULT CBaseVideoRenderer::ResetStreamingTimes()
  function HRESULT (line 1914) | HRESULT CBaseVideoRenderer::OnStartStreaming()
  function HRESULT (line 1922) | HRESULT CBaseVideoRenderer::OnStopStreaming()
  function STDMETHODIMP (line 2122) | STDMETHODIMP CBaseVideoRenderer::SetSink(IQualityControl *piqc)
  function STDMETHODIMP (line 2130) | STDMETHODIMP CBaseVideoRenderer::Notify(IBaseFilter *pSelf, Quality q)
  function HRESULT (line 2216) | HRESULT CBaseVideoRenderer::SendQuality(REFERENCE_TIME trLate, REFERENCE...
  function HRESULT (line 2361) | HRESULT CBaseVideoRenderer::ShouldDrawSampleNow(IMediaSample *pMediaSamp...
  function BOOL (line 2686) | BOOL CBaseVideoRenderer::ScheduleSample(IMediaSample *pMediaSample)
  function STDMETHODIMP (line 2711) | STDMETHODIMP CBaseVideoRenderer::get_FramesDroppedInRenderer(__out int *...
  function STDMETHODIMP (line 2722) | STDMETHODIMP CBaseVideoRenderer::get_FramesDrawn(int *pcFramesDrawn)
  function STDMETHODIMP (line 2733) | STDMETHODIMP CBaseVideoRenderer::get_AvgFrameRate(int *piAvgFrameRate)
  function STDMETHODIMP (line 2765) | STDMETHODIMP CBaseVideoRenderer::get_AvgSyncOffset(__out int *piAvg)
  function isqrt (line 2807) | int isqrt(int x)
  function HRESULT (line 2843) | HRESULT CBaseVideoRenderer::GetStdDev(int nSamples, __out int *piResult,...
  function STDMETHODIMP (line 2881) | STDMETHODIMP CBaseVideoRenderer::get_DevSyncOffset(__out int *piDev)
  function STDMETHODIMP (line 2891) | STDMETHODIMP CBaseVideoRenderer::get_Jitter(__out int *piJitter)
  function STDMETHODIMP (line 2901) | STDMETHODIMP
  function STDMETHODIMP (line 2920) | STDMETHODIMP

FILE: common/baseclasses/renbase.h
  function class (line 21) | class CRendererInputPin : public CBaseInputPin
  function class (line 52) | class CBaseRenderer : public CBaseFilter

FILE: common/baseclasses/schedule.cpp
  function DWORD (line 67) | DWORD CAMSchedule::GetAdviseCount()
  function REFERENCE_TIME (line 73) | REFERENCE_TIME CAMSchedule::GetNextAdviseTime()
  function DWORD_PTR (line 79) | DWORD_PTR CAMSchedule::AddAdvisePacket(const REFERENCE_TIME &time1, cons...
  function HRESULT (line 116) | HRESULT CAMSchedule::Unadvise(DWORD_PTR dwAdviseCookie)
  function REFERENCE_TIME (line 145) | REFERENCE_TIME CAMSchedule::Advise(const REFERENCE_TIME &rtTime)
  function DWORD_PTR (line 189) | DWORD_PTR CAMSchedule::AddAdvisePacket(__inout CAdvisePacket *pPacket)

FILE: common/baseclasses/schedule.h
  function class (line 12) | class CAMSchedule : private CBaseObject
  function DumpLinkedList (line 126) | void DumpLinkedList() {}

FILE: common/baseclasses/seekpt.cpp
  function CUnknown (line 19) | CUnknown *CSeekingPassThru::CreateInstance(__inout_opt LPUNKNOWN pUnk, _...
  function STDMETHODIMP (line 24) | STDMETHODIMP CSeekingPassThru::NonDelegatingQueryInterface(REFIID riid, ...
  function STDMETHODIMP (line 54) | STDMETHODIMP CSeekingPassThru::Init(BOOL bRendererSeeking, IPin *pPin)

FILE: common/baseclasses/source.cpp
  function HRESULT (line 77) | HRESULT CSource::AddPin(__in CSourceStream *pStream)
  function HRESULT (line 102) | HRESULT CSource::RemovePin(__in CSourceStream *pStream)
  function STDMETHODIMP (line 132) | STDMETHODIMP CSource::FindPin(LPCWSTR Id, __deref_out IPin **ppPin)
  function CBasePin (line 184) | CBasePin *CSource::GetPin(int n)
  function STDMETHODIMP (line 209) | STDMETHODIMP CSourceStream::QueryId(__deref_out LPWSTR *Id)
  function HRESULT (line 265) | HRESULT CSourceStream::CheckMediaType(const CMediaType *pMediaType)
  function HRESULT (line 286) | HRESULT CSourceStream::GetMediaType(int iPosition, __inout CMediaType *p...
  function HRESULT (line 306) | HRESULT CSourceStream::Active(void)
  function HRESULT (line 352) | HRESULT CSourceStream::Inactive(void)
  function DWORD (line 406) | DWORD CSourceStream::ThreadProc(void)
  function HRESULT (line 480) | HRESULT CSourceStream::DoBufferProcessingLoop(void)

FILE: common/baseclasses/source.h
  function class (line 41) | class CSource : public CBaseFilter
  function virtual (line 109) | virtual HRESULT OnThreadCreate(void) { return NOERROR; }
  function virtual (line 110) | virtual HRESULT OnThreadDestroy(void) { return NOERROR; }
  function virtual (line 111) | virtual HRESULT OnThreadStartPlay(void) { return NOERROR; }
  type Command (line 122) | enum Command
  function HRESULT (line 130) | HRESULT Init(void) { return CallWorker(CMD_INIT); }
  function HRESULT (line 131) | HRESULT Exit(void) { return CallWorker(CMD_EXIT); }
  function HRESULT (line 132) | HRESULT Run(void) { return CallWorker(CMD_RUN); }
  function HRESULT (line 133) | HRESULT Pause(void) { return CallWorker(CMD_PAUSE); }
  function HRESULT (line 134) | HRESULT Stop(void) { return CallWorker(CMD_STOP); }
  function BOOL (line 138) | BOOL CheckRequest(Command *pCom) { return CAMThread::CheckRequest((DWORD...
  function virtual (line 157) | virtual HRESULT GetMediaType(__inout CMediaType *pMediaType) { return E_...

FILE: common/baseclasses/streams.h
  type WAVEFORMATEXTENSIBLE (line 60) | typedef struct

FILE: common/baseclasses/strmctl.cpp
  function STDMETHODIMP (line 34) | STDMETHODIMP CBaseStreamControl::StopAt(const REFERENCE_TIME *ptStop, BO...
  function STDMETHODIMP (line 82) | STDMETHODIMP CBaseStreamControl::StartAt(const REFERENCE_TIME *ptStart, ...
  function STDMETHODIMP (line 125) | STDMETHODIMP CBaseStreamControl::GetInfo(__out AM_STREAM_INFO *pInfo)
  type CBaseStreamControl::StreamControlState (line 228) | enum CBaseStreamControl::StreamControlState
  type CBaseStreamControl::StreamControlState (line 269) | enum CBaseStreamControl::StreamControlState

FILE: common/baseclasses/strmctl.h
  function class (line 12) | class CBaseStreamControl : public IAMStreamControl

FILE: common/baseclasses/sysclock.cpp
  function STDMETHODIMP (line 36) | STDMETHODIMP CSystemClock::NonDelegatingQueryInterface(REFIID riid, __de...
  function STDMETHODIMP (line 53) | STDMETHODIMP
  function STDMETHODIMP (line 62) | STDMETHODIMP

FILE: common/baseclasses/transfrm.cpp
  function HRESULT (line 56) | HRESULT CTransformFilter::Transform(IMediaSample *pIn, IMediaSample *pOut)
  function CBasePin (line 80) | CBasePin *CTransformFilter::GetPin(int n)
  function STDMETHODIMP (line 136) | STDMETHODIMP CTransformFilter::FindPin(LPCWSTR Id, __deref_out IPin **pp...
  function HRESULT (line 171) | HRESULT
  function HRESULT (line 177) | HRESULT
  function HRESULT (line 185) | HRESULT
  function HRESULT (line 195) | HRESULT
  function HRESULT (line 204) | HRESULT
  function HRESULT (line 214) | HRESULT
  function HRESULT (line 223) | HRESULT
  function HRESULT (line 301) | HRESULT
  function HRESULT (line 384) | HRESULT CTransformFilter::AlterQuality(Quality q)
  function HRESULT (line 394) | HRESULT
  function HRESULT (line 408) | HRESULT
  function HRESULT (line 428) | HRESULT
  function STDMETHODIMP (line 444) | STDMETHODIMP
  function STDMETHODIMP (line 487) | STDMETHODIMP
  function HRESULT (line 541) | HRESULT
  function HRESULT (line 552) | HRESULT
  function HRESULT (line 609) | HRESULT
  function HRESULT (line 622) | HRESULT
  function HRESULT (line 633) | HRESULT
  function HRESULT (line 646) | HRESULT
  function HRESULT (line 672) | HRESULT
  function STDMETHODIMP (line 694) | STDMETHODIMP
  function STDMETHODIMP (line 708) | STDMETHODIMP
  function STDMETHODIMP (line 730) | STDMETHODIMP
  function HRESULT (line 754) | HRESULT
  function STDMETHODIMP (line 771) | STDMETHODIMP
  function STDMETHODIMP (line 817) | STDMETHODIMP
  function HRESULT (line 850) | HRESULT
  function HRESULT (line 871) | HRESULT
  function HRESULT (line 882) | HRESULT
  function HRESULT (line 895) | HRESULT
  function HRESULT (line 911) | HRESULT
  function HRESULT (line 940) | HRESULT
  function HRESULT (line 948) | HRESULT
  function STDMETHODIMP (line 970) | STDMETHODIMP

FILE: common/baseclasses/transfrm.h
  function class (line 31) | class CTransformInputPin : public CBaseInputPin
  function class (line 91) | class CTransformOutputPin : public CBaseOutputPin
  function virtual (line 224) | virtual void RegisterPerfId() { m_idTransform = MSR_REGISTER(TEXT("Trans...

FILE: common/baseclasses/transip.cpp
  function CBasePin (line 291) | CBasePin *CTransInPlaceFilter::GetPin(int n)
  function HRESULT (line 353) | HRESULT CTransInPlaceFilter::CompleteConnect(PIN_DIRECTION dir, IPin *pR...
  function HRESULT (line 408) | HRESULT CTransInPlaceFilter::DecideBufferSize(IMemAllocator *pAlloc, __i...
  function __out_opt (line 479) | __out_opt IMediaSample *CTransInPlaceFilter::Copy(IMediaSample *pSource)
  function HRESULT (line 582) | HRESULT
  function STDMETHODIMP (line 693) | STDMETHODIMP CTransInPlaceInputPin::GetAllocator(__deref_out IMemAllocat...
  function STDMETHODIMP (line 724) | STDMETHODIMP
  function STDMETHODIMP (line 823) | STDMETHODIMP CTransInPlaceInputPin::EnumMediaTypes(__deref_out IEnumMedi...
  function HRESULT (line 838) | HRESULT CTransInPlaceInputPin::CheckMediaType(const CMediaType *pmt)
  function STDMETHODIMP (line 853) | STDMETHODIMP
  function HRESULT (line 868) | HRESULT
  function STDMETHODIMP (line 897) | STDMETHODIMP CTransInPlaceOutputPin::EnumMediaTypes(__deref_out IEnumMed...
  function HRESULT (line 911) | HRESULT CTransInPlaceOutputPin::CheckMediaType(const CMediaType *pmt)
  function HRESULT (line 959) | HRESULT

FILE: common/baseclasses/transip.h
  function class (line 40) | class CTransInPlaceInputPin : public CTransformInputPin
  function class (line 83) | class CTransInPlaceOutputPin : public CTransformOutputPin
  function HRESULT (line 147) | HRESULT GetMediaType(int iPosition, __inout CMediaType *pMediaType)
  function HRESULT (line 160) | HRESULT CheckTransform(const CMediaType *mtIn, const CMediaType *mtOut) ...
  function virtual (line 183) | virtual void RegisterPerfId() { m_idTransInPlace = MSR_REGISTER(TEXT("Tr...
  function __out (line 201) | __out CTransInPlaceInputPin *InputPin() const { return (CTransInPlaceInp...
  function __out (line 202) | __out CTransInPlaceOutputPin *OutputPin() const { return (CTransInPlaceO...
  function BOOL (line 205) | BOOL TypesMatch() { return InputPin()->CurrentMediaType() == OutputPin()...

FILE: common/baseclasses/videoctl.cpp
  function LPTSTR (line 17) | LPTSTR WINAPI StringFromResource(__out_ecount(STR_MAX_LENGTH) LPTSTR pBu...
  function LPSTR (line 27) | LPSTR WINAPI StringFromResource(__out_ecount(STR_MAX_LENGTH) LPSTR pBuff...
  function LPWSTR (line 46) | LPWSTR WINAPI WideStringFromResource(__out_ecount(STR_MAX_LENGTH) LPWSTR...
  function BOOL (line 73) | BOOL WINAPI GetDialogSize(int iResourceID, DLGPROC pDlgProc, LPARAM lPar...
  function STDMETHODIMP (line 102) | STDMETHODIMP CAggDirectDraw::NonDelegatingQueryInterface(REFIID riid, __...
  function STDMETHODIMP (line 118) | STDMETHODIMP CAggDirectDraw::Compact()
  function STDMETHODIMP (line 124) | STDMETHODIMP CAggDirectDraw::CreateClipper(DWORD dwFlags, __deref_out LP...
  function STDMETHODIMP (line 131) | STDMETHODIMP CAggDirectDraw::CreatePalette(DWORD dwFlags, __in LPPALETTE...
  function STDMETHODIMP (line 139) | STDMETHODIMP CAggDirectDraw::CreateSurface(__in LPDDSURFACEDESC lpDDSurf...
  function STDMETHODIMP (line 147) | STDMETHODIMP CAggDirectDraw::DuplicateSurface(__in LPDIRECTDRAWSURFACE l...
  function STDMETHODIMP (line 154) | STDMETHODIMP CAggDirectDraw::EnumDisplayModes(DWORD dwSurfaceDescCount, ...
  function STDMETHODIMP (line 161) | STDMETHODIMP CAggDirectDraw::EnumSurfaces(DWORD dwFlags, __in LPDDSURFAC...
  function STDMETHODIMP (line 168) | STDMETHODIMP CAggDirectDraw::FlipToGDISurface()
  function STDMETHODIMP (line 174) | STDMETHODIMP CAggDirectDraw::GetCaps(__out LPDDCAPS lpDDDriverCaps, __ou...
  function STDMETHODIMP (line 180) | STDMETHODIMP CAggDirectDraw::GetDisplayMode(__out LPDDSURFACEDESC lpDDSu...
  function STDMETHODIMP (line 186) | STDMETHODIMP CAggDirectDraw::GetFourCCCodes(__inout LPDWORD lpNumCodes, ...
  function STDMETHODIMP (line 192) | STDMETHODIMP CAggDirectDraw::GetGDISurface(__deref_out LPDIRECTDRAWSURFA...
  function STDMETHODIMP (line 198) | STDMETHODIMP CAggDirectDraw::GetMonitorFrequency(__out LPDWORD lpdwFrequ...
  function STDMETHODIMP (line 204) | STDMETHODIMP CAggDirectDraw::GetScanLine(__out LPDWORD lpdwScanLine)
  function STDMETHODIMP (line 210) | STDMETHODIMP CAggDirectDraw::GetVerticalBlankStatus(__out LPBOOL lpblsInVB)
  function STDMETHODIMP (line 216) | STDMETHODIMP CAggDirectDraw::Initialize(__in GUID *lpGUID)
  function STDMETHODIMP (line 222) | STDMETHODIMP CAggDirectDraw::RestoreDisplayMode()
  function STDMETHODIMP (line 228) | STDMETHODIMP CAggDirectDraw::SetCooperativeLevel(HWND hWnd, DWORD dwFlags)
  function STDMETHODIMP (line 234) | STDMETHODIMP CAggDirectDraw::SetDisplayMode(DWORD dwWidth, DWORD dwHeigh...
  function STDMETHODIMP (line 240) | STDMETHODIMP CAggDirectDraw::WaitForVerticalBlank(DWORD dwFlags, HANDLE ...
  function STDMETHODIMP (line 254) | STDMETHODIMP CAggDrawSurface::NonDelegatingQueryInterface(REFIID riid, _...
  function STDMETHODIMP (line 270) | STDMETHODIMP CAggDrawSurface::AddAttachedSurface(__in LPDIRECTDRAWSURFAC...
  function STDMETHODIMP (line 276) | STDMETHODIMP CAggDrawSurface::AddOverlayDirtyRect(__in LPRECT lpRect)
  function STDMETHODIMP (line 282) | STDMETHODIMP CAggDrawSurface::Blt(__in LPRECT lpDestRect, __in LPDIRECTD...
  function STDMETHODIMP (line 289) | STDMETHODIMP CAggDrawSurface::BltBatch(__in_ecount(dwCount) LPDDBLTBATCH...
  function STDMETHODIMP (line 295) | STDMETHODIMP CAggDrawSurface::BltFast(DWORD dwX, DWORD dwY, __in LPDIREC...
  function STDMETHODIMP (line 302) | STDMETHODIMP CAggDrawSurface::DeleteAttachedSurface(DWORD dwFlags, __in ...
  function STDMETHODIMP (line 308) | STDMETHODIMP CAggDrawSurface::EnumAttachedSurfaces(__in LPVOID lpContext,
  function STDMETHODIMP (line 315) | STDMETHODIMP CAggDrawSurface::EnumOverlayZOrders(DWORD dwFlags, __in LPV...
  function STDMETHODIMP (line 322) | STDMETHODIMP CAggDrawSurface::Flip(__in LPDIRECTDRAWSURFACE lpDDSurfaceT...
  function STDMETHODIMP (line 328) | STDMETHODIMP CAggDrawSurface::GetAttachedSurface(__in LPDDSCAPS lpDDSCaps,
  function STDMETHODIMP (line 335) | STDMETHODIMP CAggDrawSurface::GetBltStatus(DWORD dwFlags)
  function STDMETHODIMP (line 341) | STDMETHODIMP CAggDrawSurface::GetCaps(__out LPDDSCAPS lpDDSCaps)
  function STDMETHODIMP (line 347) | STDMETHODIMP CAggDrawSurface::GetClipper(__deref_out LPDIRECTDRAWCLIPPER...
  function STDMETHODIMP (line 353) | STDMETHODIMP CAggDrawSurface::GetColorKey(DWORD dwFlags, __out LPDDCOLOR...
  function STDMETHODIMP (line 359) | STDMETHODIMP CAggDrawSurface::GetDC(__out HDC *lphDC)
  function STDMETHODIMP (line 365) | STDMETHODIMP CAggDrawSurface::GetFlipStatus(DWORD dwFlags)
  function STDMETHODIMP (line 371) | STDMETHODIMP CAggDrawSurface::GetOverlayPosition(__out LPLONG lpdwX, __o...
  function STDMETHODIMP (line 377) | STDMETHODIMP CAggDrawSurface::GetPalette(__deref_out LPDIRECTDRAWPALETTE...
  function STDMETHODIMP (line 383) | STDMETHODIMP CAggDrawSurface::GetPixelFormat(__out LPDDPIXELFORMAT lpDDP...
  function STDMETHODIMP (line 399) | STDMETHODIMP CAggDrawSurface::GetSurfaceDesc(__out LPDDSURFACEDESC lpDDS...
  function STDMETHODIMP (line 416) | STDMETHODIMP CAggDrawSurface::Initialize(__in LPDIRECTDRAW lpDD, __in LP...
  function STDMETHODIMP (line 422) | STDMETHODIMP CAggDrawSurface::IsLost()
  function STDMETHODIMP (line 428) | STDMETHODIMP CAggDrawSurface::Lock(__in LPRECT lpDestRect, __inout LPDDS...
  function STDMETHODIMP (line 435) | STDMETHODIMP CAggDrawSurface::ReleaseDC(HDC hDC)
  function STDMETHODIMP (line 441) | STDMETHODIMP CAggDrawSurface::Restore()
  function STDMETHODIMP (line 447) | STDMETHODIMP CAggDrawSurface::SetClipper(__in LPDIRECTDRAWCLIPPER lpDDCl...
  function STDMETHODIMP (line 453) | STDMETHODIMP CAggDrawSurface::SetColorKey(DWORD dwFlags, __in LPDDCOLORK...
  function STDMETHODIMP (line 459) | STDMETHODIMP CAggDrawSurface::SetOverlayPosition(LONG dwX, LONG dwY)
  function STDMETHODIMP (line 465) | STDMETHODIMP CAggDrawSurface::SetPalette(__in LPDIRECTDRAWPALETTE lpDDPa...
  function STDMETHODIMP (line 471) | STDMETHODIMP CAggDrawSurface::Unlock(__in LPVOID lpSurfaceData)
  function STDMETHODIMP (line 477) | STDMETHODIMP CAggDrawSurface::UpdateOverlay(__in LPRECT lpSrcRect, __in ...
  function STDMETHODIMP (line 484) | STDMETHODIMP CAggDrawSurface::UpdateOverlayDisplay(DWORD dwFlags)
  function STDMETHODIMP (line 490) | STDMETHODIMP CAggDrawSurface::UpdateOverlayZOrder(DWORD dwFlags, __in LP...
  function HRESULT (line 531) | HRESULT CLoadDirectDraw::LoadDirectDraw(__in LPSTR szDevice)
  function HRESULT (line 622) | HRESULT CLoadDirectDraw::IsDirectDrawLoaded()
  function LPDIRECTDRAW (line 636) | LPDIRECTDRAW CLoadDirectDraw::GetDirectDraw()
  function BOOL (line 656) | BOOL CLoadDirectDraw::IsDirectDrawVersion1()

FILE: common/baseclasses/videoctl.h
  function virtual (line 52) | virtual CAggDirectDraw::~CAggDirectDraw(){}
  function SetDirectDraw (line 55) | void SetDirectDraw(__inout LPDIRECTDRAW pDirectDraw) { m_pDirectDraw = p...
  function SetDirectDrawSurface (line 109) | void SetDirectDrawSurface(__inout LPDIRECTDRAWSURFACE pDirectDrawSurface)
  function class (line 154) | class CLoadDirectDraw

FILE: common/baseclasses/vtrans.cpp
  function HRESULT (line 35) | HRESULT CVideoTransformFilter::StartStreaming()
  function HRESULT (line 50) | HRESULT CVideoTransformFilter::EndFlush()
  function HRESULT (line 66) | HRESULT CVideoTransformFilter::AbortPlayback(HRESULT hr)
  function HRESULT (line 91) | HRESULT CVideoTransformFilter::Receive(IMediaSample *pSample)
  function BOOL (line 324) | BOOL CVideoTransformFilter::ShouldSkipFrame(IMediaSample *pIn)
  function HRESULT (line 462) | HRESULT CVideoTransformFilter::AlterQuality(Quality q)

FILE: common/baseclasses/vtrans.h
  function class (line 13) | class CVideoTransformFilter : public CTransformFilter

FILE: common/baseclasses/winctrl.cpp
  function BOOL (line 33) | BOOL WINAPI PossiblyEatMessage(HWND hwndDrain, UINT uMsg, WPARAM wParam,...
  function STDMETHODIMP (line 114) | STDMETHODIMP CBaseControlWindow::put_Caption(__in BSTR strCaption)
  function STDMETHODIMP (line 135) | STDMETHODIMP CBaseControlWindow::get_Caption(__out BSTR *pstrCaption)
  function STDMETHODIMP (line 155) | STDMETHODIMP CBaseControlWindow::put_WindowStyleEx(long WindowStyleEx)
  function STDMETHODIMP (line 183) | STDMETHODIMP CBaseControlWindow::get_WindowStyleEx(__out long *pWindowSt...
  function STDMETHODIMP (line 192) | STDMETHODIMP CBaseControlWindow::put_WindowStyle(long WindowStyle)
  function STDMETHODIMP (line 209) | STDMETHODIMP CBaseControlWindow::get_WindowStyle(__out long *pWindowStyle)
  function HRESULT (line 223) | HRESULT CBaseControlWindow::DoSetWindowStyle(long Style, long WindowLong)
  function HRESULT (line 285) | HRESULT CBaseControlWindow::DoGetWindowStyle(__out long *pStyle, long Wi...
  function STDMETHODIMP (line 296) | STDMETHODIMP CBaseControlWindow::put_WindowState(long WindowState)
  function STDMETHODIMP (line 309) | STDMETHODIMP CBaseControlWindow::get_WindowState(__out long *pWindowState)
  function STDMETHODIMP (line 354) | STDMETHODIMP CBaseControlWindow::put_BackgroundPalette(long BackgroundPa...
  function STDMETHODIMP (line 380) | STDMETHODIMP
  function STDMETHODIMP (line 395) | STDMETHODIMP CBaseControlWindow::put_Visible(long Visible)
  function STDMETHODIMP (line 418) | STDMETHODIMP CBaseControlWindow::get_Visible(__out long *pVisible)
  function STDMETHODIMP (line 436) | STDMETHODIMP CBaseControlWindow::put_Left(long Left)
  function STDMETHODIMP (line 476) | STDMETHODIMP CBaseControlWindow::get_Left(__out long *pLeft)
  function STDMETHODIMP (line 492) | STDMETHODIMP CBaseControlWindow::put_Width(long Width)
  function STDMETHODIMP (line 534) | STDMETHODIMP CBaseControlWindow::get_Width(__out long *pWidth)
  function STDMETHODIMP (line 549) | STDMETHODIMP CBaseControlWindow::put_Top(long Top)
  function STDMETHODIMP (line 589) | STDMETHODIMP CBaseControlWindow::get_Top(long *pTop)
  function STDMETHODIMP (line 605) | STDMETHODIMP CBaseControlWindow::put_Height(long Height)
  function STDMETHODIMP (line 643) | STDMETHODIMP CBaseControlWindow::get_Height(__out long *pHeight)
  function STDMETHODIMP (line 665) | STDMETHODIMP CBaseControlWindow::put_Owner(OAHWND Owner)
  function STDMETHODIMP (line 702) | STDMETHODIMP CBaseControlWindow::get_Owner(__out OAHWND *Owner)
  function STDMETHODIMP (line 715) | STDMETHODIMP CBaseControlWindow::put_MessageDrain(OAHWND Drain)
  function STDMETHODIMP (line 726) | STDMETHODIMP CBaseControlWindow::get_MessageDrain(__out OAHWND *Drain)
  function STDMETHODIMP (line 741) | STDMETHODIMP
  function STDMETHODIMP (line 784) | STDMETHODIMP CBaseControlWindow::SetWindowForeground(long Focus)
  function STDMETHODIMP (line 810) | STDMETHODIMP
  function STDMETHODIMP (line 843) | STDMETHODIMP
  function STDMETHODIMP (line 875) | STDMETHODIMP
  function STDMETHODIMP (line 922) | STDMETHODIMP CBaseControlWindow::get_BorderColor(__out long *Color)
  function STDMETHODIMP (line 932) | STDMETHODIMP CBaseControlWindow::put_BorderColor(long Color)
  function STDMETHODIMP (line 945) | STDMETHODIMP CBaseControlWindow::get_FullScreenMode(__out long *FullScre...
  function STDMETHODIMP (line 954) | STDMETHODIMP CBaseControlWindow::put_FullScreenMode(long FullScreenMode)
  function STDMETHODIMP (line 964) | STDMETHODIMP CBaseControlWindow::put_AutoShow(long AutoShow)
  function STDMETHODIMP (line 986) | STDMETHODIMP CBaseControlWindow::get_AutoShow(__out long *AutoShow)
  function STDMETHODIMP (line 999) | STDMETHODIMP
  function STDMETHODIMP (line 1026) | STDMETHODIMP
  function STDMETHODIMP (line 1050) | STDMETHODIMP
  function STDMETHODIMP (line 1071) | STDMETHODIMP CBaseControlWindow::IsCursorHidden(__out long *CursorHidden)
  function STDMETHODIMP (line 1105) | STDMETHODIMP CBaseControlVideo::get_AvgTimePerFrame(__out REFTIME *pAvgT...
  function STDMETHODIMP (line 1122) | STDMETHODIMP CBaseControlVideo::get_BitRate(__out long *pBitRate)
  function STDMETHODIMP (line 1137) | STDMETHODIMP CBaseControlVideo::get_BitErrorRate(__out long *pBitErrorRate)
  function STDMETHODIMP (line 1152) | STDMETHODIMP CBaseControlVideo::get_VideoWidth(__out long *pVideoWidth)
  function STDMETHODIMP (line 1167) | STDMETHODIMP CBaseControlVideo::get_VideoHeight(__out long *pVideoHeight)
  function STDMETHODIMP (line 1187) | STDMETHODIMP CBaseControlVideo::GetVideoPaletteEntries(long StartIndex, ...
  function STDMETHODIMP (line 1255) | STDMETHODIMP CBaseControlVideo::GetVideoSize(__out long *pWidth, __out l...
  function STDMETHODIMP (line 1275) | STDMETHODIMP
  function STDMETHODIMP (line 1308) | STDMETHODIMP
  function STDMETHODIMP (line 1335) | STDMETHODIMP
  function STDMETHODIMP (line 1369) | STDMETHODIMP
  function STDMETHODIMP (line 1397) | STDMETHODIMP CBaseControlVideo::put_SourceLeft(long SourceLeft)
  function STDMETHODIMP (line 1426) | STDMETHODIMP CBaseControlVideo::get_SourceLeft(__out long *pSourceLeft)
  function STDMETHODIMP (line 1442) | STDMETHODIMP CBaseControlVideo::put_SourceWidth(long SourceWidth)
  function STDMETHODIMP (line 1470) | STDMETHODIMP CBaseControlVideo::get_SourceWidth(__out long *pSourceWidth)
  function STDMETHODIMP (line 1487) | STDMETHODIMP CBaseControlVideo::put_SourceTop(long SourceTop)
  function STDMETHODIMP (line 1516) | STDMETHODIMP CBaseControlVideo::get_SourceTop(__out long *pSourceTop)
  function STDMETHODIMP (line 1530) | STDMETHODIMP CBaseControlVideo::put_SourceHeight(long SourceHeight)
  function STDMETHODIMP (line 1558) | STDMETHODIMP CBaseControlVideo::get_SourceHeight(__out long *pSourceHeight)
  function STDMETHODIMP (line 1575) | STDMETHODIMP CBaseControlVideo::put_DestinationLeft(long DestinationLeft)
  function STDMETHODIMP (line 1604) | STDMETHODIMP CBaseControlVideo::get_DestinationLeft(__out long *pDestina...
  function STDMETHODIMP (line 1618) | STDMETHODIMP CBaseControlVideo::put_DestinationWidth(long DestinationWidth)
  function STDMETHODIMP (line 1646) | STDMETHODIMP CBaseControlVideo::get_DestinationWidth(__out long *pDestin...
  function STDMETHODIMP (line 1663) | STDMETHODIMP CBaseControlVideo::put_DestinationTop(long DestinationTop)
  function STDMETHODIMP (line 1692) | STDMETHODIMP CBaseControlVideo::get_DestinationTop(__out long *pDestinat...
  function STDMETHODIMP (line 1706) | STDMETHODIMP CBaseControlVideo::put_DestinationHeight(long DestinationHe...
  function STDMETHODIMP (line 1734) | STDMETHODIMP CBaseControlVideo::get_DestinationHeight(__out long *pDesti...
  function STDMETHODIMP (line 1748) | STDMETHODIMP CBaseControlVideo::SetDefaultSourcePosition()
  function STDMETHODIMP (line 1762) | STDMETHODIMP CBaseControlVideo::IsUsingDefaultSource()
  function STDMETHODIMP (line 1771) | STDMETHODIMP CBaseControlVideo::SetDefaultDestinationPosition()
  function STDMETHODIMP (line 1785) | STDMETHODIMP CBaseControlVideo::IsUsingDefaultDestination()
  function STDMETHODIMP (line 1794) | STDMETHODIMP
  function HRESULT (line 1832) | HRESULT CBaseControlVideo::GetImageSize(__in VIDEOINFOHEADER *pVideoInfo...
  function HRESULT (line 1876) | HRESULT CBaseControlVideo::CopyImage(IMediaSample *pMediaSample, __in VI...
  function HRESULT (line 1990) | HRESULT CBaseControlVideo::OnVideoSizeChange()
  function HRESULT (line 2011) | HRESULT CBaseControlVideo::CheckSourceRect(__in RECT *pSourceRect)
  function HRESULT (line 2046) | HRESULT CBaseControlVideo::CheckTargetRect(__in RECT *pTargetRect)

FILE: common/baseclasses/winctrl.h
  function BOOL (line 38) | BOOL IsAutoShowEnabled() { return m_bAutoShow; }
  function COLORREF (line 39) | COLORREF GetBorderColour() { return m_BorderColour; }
  function HWND (line 40) | HWND GetOwnerWindow() { return m_hwndOwner; }
  function BOOL (line 41) | BOOL IsCursorHidden() { return m_bCursorHidden; }
  function BOOL (line 43) | inline BOOL PossiblyEatMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
  function SetControlWindowPin (line 54) | void SetControlWindowPin(CBasePin *pPin) { m_pPin = pPin; }
  function class (line 111) | class CBaseControlVideo : public CBaseBasicVideo

FILE: common/baseclasses/winutil.cpp
  function HRESULT (line 51) | HRESULT CBaseWindow::PrepareWindow()
  function HRESULT (line 115) | HRESULT CBaseWindow::DoneWithWindow()
  function HRESULT (line 214) | HRESULT CBaseWindow::InactivateWindow()
  function HRESULT (line 227) | HRESULT CBaseWindow::CompleteConnect()
  function HRESULT (line 240) | HRESULT CBaseWindow::ActivateWindow()
  function HRESULT (line 283) | HRESULT CBaseWindow::PerformanceAlignWindow()
  function HRESULT (line 320) | HRESULT CBaseWindow::SetPalette(HPALETTE hPalette)
  function HRESULT (line 332) | HRESULT CBaseWindow::SetPalette()
  function HRESULT (line 381) | HRESULT CBaseWindow::DoRealisePalette(BOOL bForceBackground)
  function LRESULT (line 421) | LRESULT CALLBACK WndProc(HWND hwnd,     // Window handle
  function BOOL (line 494) | BOOL CBaseWindow::OnSize(LONG Width, LONG Height)
  function BOOL (line 503) | BOOL CBaseWindow::OnClose()
  function HRESULT (line 515) | HRESULT CBaseWindow::UninitialiseWindow()
  function HRESULT (line 555) | HRESULT CBaseWindow::InitialiseWindow(HWND hwnd)
  function HRESULT (line 574) | HRESULT CBaseWindow::DoCreateWindow()
  function LRESULT (line 658) | LRESULT CBaseWindow::OnReceiveMessage(HWND hwnd,     // Window handle
  function LRESULT (line 762) | LRESULT CBaseWindow::OnPaletteChange(HWND hwnd, UINT Message)
  function RECT (line 814) | RECT CBaseWindow::GetDefaultRect()
  function LONG (line 824) | LONG CBaseWindow::GetWindowWidth()
  function LONG (line 833) | LONG CBaseWindow::GetWindowHeight()
  function HWND (line 842) | HWND CBaseWindow::GetWindowHWND()
  function HDC (line 851) | HDC CBaseWindow::GetWindowHDC()
  function HDC (line 860) | HDC CBaseWindow::GetMemoryHDC()
  function HPALETTE (line 868) | HPALETTE CBaseWindow::GetPalette()
  function HRESULT (line 881) | HRESULT CBaseWindow::DoShowWindow(LONG ShowCmd)
  function RECT (line 996) | RECT CDrawImage::ScaleSourceRect(const RECT *pSource)
  function BOOL (line 1205) | BOOL CDrawImage::DrawImage(IMediaSample *pMediaSample)
  function BOOL (line 1232) | BOOL CDrawImage::DrawVideoImageHere(HDC hdc, IMediaSample *pMediaSample,...
  function BOOL (line 1368) | BOOL CDrawImage::UsingImageAllocator()
  function LONG (line 1388) | LONG CDrawImage::GetPaletteVersion()
  function STDMETHODIMP (line 1461) | STDMETHODIMP CImageAllocator::CheckSizes(__in ALLOCATOR_PROPERTIES *pReq...
  function STDMETHODIMP (line 1502) | STDMETHODIMP CImageAllocator::SetProperties(__in ALLOCATOR_PROPERTIES *p...
  function HRESULT (line 1524) | HRESULT CImageAllocator::Alloc(void)
  function HRESULT (line 1603) | HRESULT CImageAllocator::CreateDIB(LONG InSize, DIBDATA &DibData)
  function __out (line 1717) | __out DIBDATA *CImageSample::GetDIBData()
  function BOOL (line 1759) | BOOL CImagePalette::ShouldUpdate(const VIDEOINFOHEADER *pNewInfo, const ...
  function HRESULT (line 1803) | HRESULT CImagePalette::PreparePalette(const CMediaType *pmtNew, const CM...
  function HRESULT (line 1877) | HRESULT CImagePalette::CopyPalette(const CMediaType *pSrc, __out CMediaT...
  function HRESULT (line 1939) | HRESULT CImagePalette::RemovePalette()
  function HPALETTE (line 1981) | HPALETTE CImagePalette::MakePalette(const VIDEOINFOHEADER *pVideoInfo, _...
  function HRESULT (line 2037) | HRESULT CImagePalette::MakeIdentityPalette(__inout_ecount_full(iColours)...
  function HRESULT (line 2141) | HRESULT CImageDisplay::RefreshDisplayType(__in_opt LPSTR szDeviceName)
  function BOOL (line 2194) | BOOL CImageDisplay::CheckBitFields(const VIDEOINFO *pInput)
  function DWORD (line 2233) | DWORD CImageDisplay::CountSetBits(DWORD Field)
  function DWORD (line 2254) | DWORD CImageDisplay::CountPrefixBits(DWORD Field)
  function BOOL (line 2283) | BOOL CImageDisplay::CheckHeaderValidity(const VIDEOINFO *pInput)
  function BOOL (line 2363) | BOOL CImageDisplay::CheckPaletteHeader(const VIDEOINFO *pInput)
  function VIDEOINFO (line 2405) | const VIDEOINFO *CImageDisplay::GetDisplayFormat()
  function BOOL (line 2412) | BOOL CImageDisplay::IsPalettised()
  function WORD (line 2419) | WORD CImageDisplay::GetDisplayDepth()
  function HRESULT (line 2432) | HRESULT CImageDisplay::UpdateFormat(__inout VIDEOINFO *pVideoInfo)
  function HRESULT (line 2476) | HRESULT CImageDisplay::CheckVideoType(const VIDEOINFO *pInput)
  function DWORD (line 2541) | const DWORD *CImageDisplay::GetBitMasks(const VIDEOINFO *pVideoInfo)
  function HRESULT (line 2567) | HRESULT CImageDisplay::CheckMediaType(const CMediaType *pmtIn)
  function BOOL (line 2616) | BOOL CImageDisplay::GetColourMask(__out DWORD *pMaskRed, __out DWORD *pM...
  function STDAPI (line 2669) | STDAPI ConvertVideoInfoToVideoInfo2(__inout AM_MEDIA_TYPE *pmt)
  function STDAPI (line 2708) | STDAPI CheckVideoInfoType(const AM_MEDIA_TYPE *pmt)
  function STDAPI (line 2729) | STDAPI CheckVideoInfo2Type(const AM_MEDIA_TYPE *pmt)

FILE: common/baseclasses/winutil.h
  function class (line 35) | class AM_NOVTABLE CBaseWindow
  function class (line 152) | class CDrawImage
  type DIBDATA (line 214) | typedef struct tagDIBDATA
  function class (line 231) | class CImageSample : public CMediaSample
  function class (line 256) | class CImageAllocator : public CBaseAllocator
  function class (line 299) | class CImagePalette
  function class (line 338) | class CImageDisplay : public CCritSec

FILE: common/baseclasses/wxdebug.cpp
  function DbgInitialise (line 79) | void WINAPI DbgInitialise(HINSTANCE hInst)
  function DbgTerminate (line 99) | void WINAPI DbgTerminate()
  function DbgInitKeyLevels (line 113) | void WINAPI DbgInitKeyLevels(HKEY hKey, bool fTakeMax)
  function DbgOutString (line 199) | void WINAPI DbgOutString(LPCTSTR psz)
  function HRESULT (line 216) | HRESULT DbgUniqueProcessName(LPCTSTR inName, LPTSTR outName)
  function DbgInitLogTo (line 258) | void WINAPI DbgInitLogTo(HKEY hKey)
  function DbgInitGlobalSettings (line 337) | void WINAPI DbgInitGlobalSettings(bool fTakeMax)
  function DbgInitModuleSettings (line 385) | void WINAPI DbgInitModuleSettings(bool fTakeMax)
  function DbgInitModuleName (line 430) | void WINAPI DbgInitModuleName()
  type MsgBoxMsg (line 448) | struct MsgBoxMsg
  function DWORD (line 461) | DWORD WINAPI MsgBoxThread(__inout LPVOID lpParameter // thread data
  function INT (line 470) | INT MessageBoxOtherThread(HWND hwnd, LPCTSTR szTitle, LPCTSTR szMessage,...
  function DbgAssert (line 504) | void WINAPI DbgAssert(LPCTSTR pCondition, LPCTSTR pFileName, INT iLine)
  function DbgBreakPoint (line 533) | void WINAPI DbgBreakPoint(LPCTSTR pCondition, LPCTSTR pFileName, INT iLine)
  function DbgBreakPoint (line 559) | void WINAPI DbgBreakPoint(LPCTSTR pFileName, INT iLine, __format_string ...
  function BOOL (line 599) | BOOL WINAPI DbgCheckModuleLevel(DWORD Type, DWORD Level)
  function DbgSetModuleLevel (line 645) | void WINAPI DbgSetModuleLevel(DWORD Type, DWORD Level)
  function DbgSetAutoRefreshLevels (line 661) | void WINAPI DbgSetAutoRefreshLevels(bool fAuto)
  function DbgLogInfo (line 671) | void WINAPI DbgLogInfo(DWORD Type, DWORD Level, __format_string LPCSTR p...
  function DbgAssert (line 704) | void WINAPI DbgAssert(LPCSTR pCondition, LPCSTR pFileName, INT iLine)
  function DbgBreakPoint (line 733) | void WINAPI DbgBreakPoint(LPCSTR pCondition, LPCSTR pFileName, INT iLine)
  function DbgKernelAssert (line 759) | void WINAPI DbgKernelAssert(LPCSTR pCondition, LPCSTR pFileName, INT iLine)
  function DbgLogInfo (line 776) | void WINAPI DbgLogInfo(DWORD Type, DWORD Level, LPCTSTR pFormat, ...)
  function DbgKernelAssert (line 808) | void WINAPI DbgKernelAssert(LPCTSTR pCondition, LPCTSTR pFileName, INT i...
  function DWORD (line 820) | DWORD WINAPI DbgRegisterObjectCreation(LPCSTR szObjectName, LPCWSTR wszO...
  function BOOL (line 888) | BOOL WINAPI DbgRegisterObjectDestruction(DWORD dwCookie)
  function DbgDumpObjectRegister (line 948) | void WINAPI DbgDumpObjectRegister()
  function DWORD (line 986) | DWORD WINAPI DbgWaitForSingleObject(HANDLE h)
  function DWORD (line 996) | DWORD WINAPI DbgWaitForMultipleObjects(DWORD nCount, __in_ecount(nCount)...
  function DbgSetWaitTimeout (line 1007) | void WINAPI DbgSetWaitTimeout(DWORD dwTimeout)
  function DisplayType (line 1226) | void WINAPI DisplayType(LPCTSTR label, const AM_MEDIA_TYPE *pmtIn)
  function DisplayBITMAPINFO (line 1310) | void DisplayBITMAPINFO(const BITMAPINFOHEADER *pbmi)
  function DisplayRECT (line 1331) | void DisplayRECT(LPCTSTR szLabel, const RECT &rc)
  function DumpGraph (line 1337) | void WINAPI DumpGraph(IFilterGraph *pGraph, DWORD dwLevel)

FILE: common/baseclasses/wxdebug.h
  type ObjectDesc (line 70) | typedef struct tag_ObjectDesc
  type GUID_STRING_ENTRY (line 260) | typedef struct
  function class (line 266) | class CGuidNameList
  function class (line 293) | class CDispBasic
  function class (line 303) | class CDisp : public CDispBasic
  function class (line 323) | class CAutoTrace

FILE: common/baseclasses/wxlist.cpp
  function __out_opt (line 181) | __out_opt POSITION CBaseList::GetHeadPositionI() const
  function __out_opt (line 186) | __out_opt POSITION CBaseList::GetTailPositionI() const
  function __out (line 209) | __out void *CBaseList::GetNextI(__inout POSITION &rp) const
  function __out_opt (line 242) | __out_opt void *CBaseList::GetI(__in_opt POSITION p) const
  function __out (line 255) | __out void *CBaseList::GetValidI(__in POSITION p) const
  function __out_opt (line 266) | __out_opt POSITION CBaseList::FindI(__in void *pObj) const
  function __out_opt (line 283) | __out_opt void *CBaseList::RemoveHeadI()
  function __out_opt (line 299) | __out_opt void *CBaseList::RemoveTailI()
  function __out_opt (line 319) | __out_opt void *CBaseList::RemoveI(__in_opt POSITION pos)
  function __out_opt (line 384) | __out_opt POSITION CBaseList::AddTailI(__in void *pObject)
  function __out_opt (line 438) | __out_opt POSITION CBaseList::AddHeadI(__in void *pObject)
  function BOOL (line 488) | BOOL CBaseList::AddTail(__in CBaseList *pList)
  function BOOL (line 511) | BOOL CBaseList::AddHead(__in CBaseList *pList)
  function __out_opt (line 538) | __out_opt POSITION CBaseList::AddAfterI(__in_opt POSITION pos, __in void...
  function BOOL (line 590) | BOOL CBaseList::AddAfter(__in_opt POSITION p, __in CBaseList *pList)
  function __out_opt (line 608) | __out_opt POSITION CBaseList::AddBeforeI(__in_opt POSITION pos, __in voi...
  function BOOL (line 658) | BOOL CBaseList::AddBefore(__in_opt POSITION p, __in CBaseList *pList)
  function BOOL (line 687) | BOOL CBaseList::MoveToTail(__in_opt POSITION pos, __in CBaseList *pList)
  function BOOL (line 755) | BOOL CBaseList::MoveToHead(__in_opt POSITION pos, __in CBaseList *pList)

FILE: common/baseclasses/wxlist.h
  type __POSITION (line 52) | struct __POSITION
  type __POSITION (line 56) | typedef __POSITION *POSITION;
  function class (line 78) | class CNode : public CBaseObject
  function CBaseList (line 483) | CGenericList(__in_opt LPCTSTR pName)
  function __out (line 490) | __out OBJECT *GetNext(__inout POSITION &rp) const { return (OBJECT *)Get...
  function __out_opt (line 492) | __out_opt OBJECT *Get(__in_opt POSITION p) const { return (OBJECT *)GetI...
  function __out (line 493) | __out OBJECT *GetValid(__in POSITION p) const { return (OBJECT *)GetVali...
  function __out_opt (line 494) | __out_opt OBJECT *GetHead() const { return Get(GetHeadPosition()); }
  function __out_opt (line 496) | __out_opt OBJECT *RemoveHead() { return (OBJECT *)RemoveHeadI(); }
  function __out_opt (line 498) | __out_opt OBJECT *RemoveTail() { return (OBJECT *)RemoveTailI(); }
  function __out_opt (line 500) | __out_opt OBJECT *Remove(__in_opt POSITION p) { return (OBJECT *)RemoveI...
  function __out_opt (line 501) | __out_opt POSITION AddBefore(__in_opt POSITION p, __in OBJECT *pObj) { r...
  function __out_opt (line 502) | __out_opt POSITION AddAfter(__in_opt POSITION p, __in OBJECT *pObj) { re...
  function __out_opt (line 503) | __out_opt POSITION AddHead(__in OBJECT *pObj) { return AddHeadI(pObj); }
  function __out_opt (line 504) | __out_opt POSITION AddTail(__in OBJECT *pObj) { return AddTailI(pObj); }
  function BOOL (line 505) | BOOL AddTail(__in CGenericList<OBJECT> *pList) { return CBaseList::AddTa...
  function BOOL (line 506) | BOOL AddHead(__in CGenericList<OBJECT> *pList) { return CBaseList::AddHe...
  function BOOL (line 507) | BOOL AddAfter(__in_opt POSITION p, __in CGenericList<OBJECT> *pList)
  function BOOL (line 511) | BOOL AddBefore(__in_opt POSITION p, __in CGenericList<OBJECT> *pList)
  function __out_opt (line 515) | __out_opt POSITION Find(__in OBJECT *pObj) const { return FindI(pObj); }
  type CGenericList (line 520) | typedef CGenericList<CBaseObject> CBaseObjectList;
  type CGenericList (line 521) | typedef CGenericList<IUnknown> CBaseInterfaceList;

FILE: common/baseclasses/wxutil.cpp
  function BOOL (line 56) | BOOL CAMMsgEvent::WaitMsg(DWORD dwTimeout)
  function BOOL (line 139) | BOOL CAMThread::Create()
  function DWORD (line 163) | DWORD
  function DWORD (line 188) | DWORD
  function BOOL (line 196) | BOOL CAMThread::CheckRequest(__out_opt DWORD *pParam)
  function HRESULT (line 231) | HRESULT CAMThread::CoInitializeHelper()
  function BOOL (line 289) | BOOL CMsgThread::CreateThread()
  function DWORD (line 306) | DWORD WINAPI CMsgThread::DefaultThreadProc(__inout LPVOID lpParam)
  function IntToWstr (line 362) | void WINAPI IntToWstr(int i, __out_ecount(12) LPWSTR wstr)
  function HRESULT (line 440) | HRESULT AMSafeMemMoveOffset(__in_bcount(dst_size) void *dst, __in size_t...
  function DbgLockTrace (line 532) | void WINAPI DbgLockTrace(CCritSec *pcCrit, BOOL fTrace)
  function BOOL (line 537) | BOOL WINAPI CritCheckIn(CCritSec *pcCrit)
  function BOOL (line 542) | BOOL WINAPI CritCheckIn(const CCritSec *pcCrit)
  function BOOL (line 547) | BOOL WINAPI CritCheckOut(CCritSec *pcCrit)
  function BOOL (line 552) | BOOL WINAPI CritCheckOut(const CCritSec *pcCrit)
  function STDAPI (line 558) | STDAPI WriteBSTR(__deref_out BSTR *pstrDest, LPCWSTR szSrc)
  function STDAPI (line 566) | STDAPI FreeBSTR(__deref_in BSTR *pstr)
  function STDAPI (line 579) | STDAPI AMGetWideString(LPCWSTR psz, __deref_out LPWSTR *ppszReturn)
  function DWORD (line 604) | DWORD WINAPI WaitDispatchingMessages(HANDLE hObject, DWORD dwWait, HWND ...
  function HRESULT (line 707) | HRESULT AmGetLastErrorToHResult()
  function IUnknown (line 720) | IUnknown *QzAtlComPtrAssign(__deref_inout_opt IUnknown **pp, __in_opt IU...

FILE: common/baseclasses/wxutil.h
  function class (line 17) | class CCritSec
  function class (line 74) | class CAutoLock
  function class (line 96) | class CAMEvent
  function class (line 125) | class CAMMsgEvent : public CAMEvent
  function class (line 143) | class AM_NOVTABLE CAMThread
  function Initialize (line 262) | void Initialize(int n)
  function T (line 285) | T GetQueueObject()
  function PutQueueObject (line 308) | void PutQueueObject(T Object)
  function Release (line 480) | void Release()
  function operator (line 486) | operator T *() { return (T *)p; }

FILE: common/includes/IMediaSideDataFFmpeg.h
  type MediaSideDataFFMpeg (line 34) | struct MediaSideDataFFMpeg

FILE: common/includes/LAVSplitterSettingsInternal.h
  function class (line 25) | class FormatInfo

FILE: common/includes/moreuuids.h
  type DIRACINFOHEADER (line 127) | struct DIRACINFOHEADER
  function WAVEFORMATEX (line 302) | struct WAVEFORMATEXPS2 : public WAVEFORMATEX
  type VORBISFORMAT (line 380) | typedef struct tagVORBISFORMAT
  type VORBISFORMAT2 (line 396) | typedef struct tagVORBISFORMAT2
  type SUBTITLEINFO (line 445) | typedef struct
  function WAVEFORMATEX (line 1373) | struct WAVEFORMATEX_HDMV_LPCM : public WAVEFORMATEX
  type WAVEFORMATEXFFMPEG (line 1390) | struct WAVEFORMATEXFFMPEG

FILE: decoder/LAVAudio/AudioSettingsProp.cpp
  function HRESULT (line 38) | HRESULT CLAVAudioSettingsProp::OnConnect(IUnknown *pUnk)
  function HRESULT (line 48) | HRESULT CLAVAudioSettingsProp::OnDisconnect()
  function HRESULT (line 54) | HRESULT CLAVAudioSettingsProp::OnApplyChanges()
  function HRESULT (line 138) | HRESULT CLAVAudioSettingsProp::OnActivate()
  function HRESULT (line 229) | HRESULT CLAVAudioSettingsProp::LoadData()
  function INT_PTR (line 254) | INT_PTR CLAVAudioSettingsProp::OnReceiveMessage(HWND hwnd, UINT uMsg, WP...
  function HRESULT (line 441) | HRESULT CLAVAudioMixingProp::OnConnect(IUnknown *pUnk)
  function HRESULT (line 451) | HRESULT CLAVAudioMixingProp::OnDisconnect()
  function DWORD (line 461) | static DWORD get_speaker_index(DWORD dwLayout)
  function HRESULT (line 472) | HRESULT CLAVAudioMixingProp::OnApplyChanges()
  function HRESULT (line 517) | HRESULT CLAVAudioMixingProp::OnActivate()
  function HRESULT (line 603) | HRESULT CLAVAudioMixingProp::LoadData()
  function INT_PTR (line 616) | INT_PTR CLAVAudioMixingProp::OnReceiveMessage(HWND hwnd, UINT uMsg, WPAR...
  function HRESULT (line 739) | HRESULT CLAVAudioFormatsProp::OnConnect(IUnknown *pUnk)
  function HRESULT (line 749) | HRESULT CLAVAudioFormatsProp::OnDisconnect()
  function HRESULT (line 755) | HRESULT CLAVAudioFormatsProp::OnApplyChanges()
  function HRESULT (line 775) | HRESULT CLAVAudioFormatsProp::OnActivate()
  function HRESULT (line 837) | HRESULT CLAVAudioFormatsProp::LoadData()
  function INT_PTR (line 845) | INT_PTR CLAVAudioFormatsProp::OnReceiveMessage(HWND hwnd, UINT uMsg, WPA...
  function HRESULT (line 889) | HRESULT CLAVAudioStatusProp::OnConnect(IUnknown *pUnk)
  function HRESULT (line 899) | HRESULT CLAVAudioStatusProp::OnDisconnect()
  function HRESULT (line 905) | HRESULT CLAVAudioStatusProp::OnActivate()
  function HRESULT (line 993) | HRESULT CLAVAudioStatusProp::OnDeactivate()
  function INT_PTR (line 1017) | INT_PTR CLAVAudioStatusProp::OnReceiveMessage(HWND hwnd, UINT uMsg, WPAR...

FILE: decoder/LAVAudio/AudioSettingsProp.h
  function class (line 38) | class CLAVAudioSettingsProp : public CBaseDSPropPage
  function class (line 83) | class CLAVAudioMixingProp : public CBaseDSPropPage
  function class (line 119) | class CLAVAudioFormatsProp : public CBaseDSPropPage
  function class (line 149) | class CLAVAudioStatusProp : public CBaseDSPropPage

FILE: decoder/LAVAudio/Bitstream.cpp
  function BOOL (line 42) | BOOL CLAVAudio::IsBitstreaming(AVCodecID codec)
  function HRESULT (line 56) | HRESULT CLAVAudio::InitBitstreaming()
  function HRESULT (line 74) | HRESULT CLAVAudio::ShutdownBitstreaming()
  function HRESULT (line 92) | HRESULT CLAVAudio::CreateBitstreamContext(AVCodecID codec, WAVEFORMATEX ...
  function HRESULT (line 152) | HRESULT CLAVAudio::UpdateBitstreamContext()
  function HRESULT (line 197) | HRESULT CLAVAudio::FreeBitstreamContext()
  function CMediaType (line 217) | CMediaType CLAVAudio::CreateBitstreamMediaType(AVCodecID codec, DWORD dw...
  function HRESULT (line 324) | HRESULT CLAVAudio::Bitstream(const BYTE *pDataBuffer, int buffsize, int ...
  function HRESULT (line 440) | HRESULT CLAVAudio::DeliverBitstream(AVCodecID codec, const BYTE *buffer,...
  function HRESULT (line 573) | HRESULT CLAVAudio::BitstreamFallbackToPCM()

FILE: decoder/LAVAudio/BitstreamMAT.cpp
  function ParseTrueHDMajorSyncHeaders (line 205) | static bool ParseTrueHDMajorSyncHeaders(const BYTE *p, int buffsize, int...
  function HRESULT (line 281) | HRESULT CLAVAudio::BitstreamTrueHD(const BYTE *p, int buffsize, HRESULT ...

FILE: decoder/LAVAudio/BitstreamParser.cpp
  function HRESULT (line 56) | HRESULT CBitstreamParser::Parse(AVCodecID codec, BYTE *pBuffer, DWORD dw...
  function HRESULT (line 68) | HRESULT CBitstreamParser::ParseDTS(BYTE *pBuffer, DWORD dwSize)
  function HRESULT (line 84) | HRESULT CBitstreamParser::ParseAC3(BYTE *pBuffer, DWORD dwSize)
  function HRESULT (line 104) | HRESULT CBitstreamParser::ParseTrueHD(BYTE *pBuffer, DWORD dwSize)

FILE: decoder/LAVAudio/BitstreamParser.h
  type GetBitContext (line 24) | struct GetBitContext
  function class (line 26) | class CBitstreamParser

FILE: decoder/LAVAudio/LAVAudio.cpp
  function STDMETHODIMP (line 117) | STDMETHODIMP CLAVAudio::CreateTrayIcon()
  function STDMETHODIMP (line 128) | STDMETHODIMP CLAVAudio::JoinFilterGraph(IFilterGraph *pGraph, LPCWSTR pN...
  function HRESULT (line 143) | HRESULT CLAVAudio::LoadDefaults()
  function HRESULT (line 196) | HRESULT CLAVAudio::LoadSettings()
  function HRESULT (line 206) | HRESULT CLAVAudio::ReadSettings(HKEY rootKey)
  function HRESULT (line 356) | HRESULT CLAVAudio::SaveSettings()
  function STDMETHODIMP (line 452) | STDMETHODIMP CLAVAudio::NonDelegatingQueryInterface(REFIID riid, void **...
  function STDMETHODIMP (line 463) | STDMETHODIMP CLAVAudio::GetPages(CAUUID *pPages)
  function STDMETHODIMP (line 481) | STDMETHODIMP CLAVAudio::CreatePage(const GUID &guid, IPropertyPage **ppP...
  function HRESULT (line 511) | HRESULT CLAVAudio::GetDRC(BOOL *pbDRCEnabled, int *piDRCLevel)
  function HRESULT (line 525) | HRESULT CLAVAudio::SetRuntimeConfig(BOOL bRuntimeConfig)
  function HRESULT (line 536) | HRESULT CLAVAudio::SetDRC(BOOL bDRCEnabled, int fDRCLevel)
  function BOOL (line 551) | BOOL CLAVAudio::GetFormatConfiguration(LAVAudioCodec aCodec)
  function HRESULT (line 558) | HRESULT CLAVAudio::SetFormatConfiguration(LAVAudioCodec aCodec, BOOL bEn...
  function BOOL (line 569) | BOOL CLAVAudio::GetBitstreamConfig(LAVBitstreamCodec bsCodec)
  function HRESULT (line 577) | HRESULT CLAVAudio::SetBitstreamConfig(LAVBitstreamCodec bsCodec, BOOL bE...
  function STDMETHODIMP (line 601) | STDMETHODIMP CLAVAudio::SetDTSHDFraming(BOOL bHDFraming)
  function STDMETHODIMP (line 612) | STDMETHODIMP CLAVAudio::SetBitstreamingFallback(BOOL bBitstreamingFallback)
  function STDMETHODIMP (line 625) | STDMETHODIMP CLAVAudio::SetAutoAVSync(BOOL bAutoSync)
  function STDMETHODIMP (line 638) | STDMETHODIMP CLAVAudio::SetOutputStandardLayout(BOOL bStdLayout)
  function STDMETHODIMP (line 651) | STDMETHODIMP CLAVAudio::SetExpandMono(BOOL bExpandMono)
  function STDMETHODIMP (line 664) | STDMETHODIMP CLAVAudio::SetExpand61(BOOL bExpand61)
  function STDMETHODIMP (line 677) | STDMETHODIMP CLAVAudio::SetAllowRawSPDIFInput(BOOL bAllow)
  function STDMETHODIMP (line 693) | STDMETHODIMP CLAVAudio::SetSampleFormat(LAVAudioSampleFormat format, BOO...
  function STDMETHODIMP (line 704) | STDMETHODIMP CLAVAudio::GetAudioDelay(BOOL *pbEnabled, int *pDelay)
  function STDMETHODIMP (line 713) | STDMETHODIMP CLAVAudio::SetAudioDelay(BOOL bEnabled, int delay)
  function STDMETHODIMP (line 722) | STDMETHODIMP CLAVAudio::SetMixingEnabled(BOOL bEnabled)
  function STDMETHODIMP (line 737) | STDMETHODIMP CLAVAudio::SetMixingLayout(DWORD dwLayout)
  function STDMETHODIMP (line 752) | STDMETHODIMP CLAVAudio::SetMixingFlags(DWORD dwFlags)
  function STDMETHODIMP (line 767) | STDMETHODIMP CLAVAudio::SetMixingMode(LAVAudioMixingMode mixingMode)
  function STDMETHODIMP (line 782) | STDMETHODIMP CLAVAudio::SetMixingLevels(DWORD dwCenterLevel, DWORD dwSur...
  function STDMETHODIMP (line 794) | STDMETHODIMP CLAVAudio::GetMixingLevels(DWORD *dwCenterLevel, DWORD *dwS...
  function STDMETHODIMP (line 806) | STDMETHODIMP CLAVAudio::SetTrayIcon(BOOL bEnabled)
  function STDMETHODIMP (line 823) | STDMETHODIMP CLAVAudio::SetSampleConvertDithering(BOOL bEnabled)
  function STDMETHODIMP (line 835) | STDMETHODIMP CLAVAudio::SetSuppressFormatChanges(BOOL bEnabled)
  function STDMETHODIMP (line 846) | STDMETHODIMP CLAVAudio::SetOutput51LegacyLayout(BOOL b51Legacy)
  function BOOL (line 858) | BOOL CLAVAudio::IsSampleFormatSupported(LAVAudioSampleFormat sfCheck)
  function HRESULT (line 863) | HRESULT CLAVAudio::GetDecodeDetails(const char **pCodec, const char **pD...
  function HRESULT (line 940) | HRESULT CLAVAudio::GetOutputDetails(const char **pOutputFormat, int *pnC...
  function HRESULT (line 976) | HRESULT CLAVAudio::EnableVolumeStats()
  function HRESULT (line 983) | HRESULT CLAVAudio::DisableVolumeStats()
  function HRESULT (line 990) | HRESULT CLAVAudio::GetChannelVolumeAverage(WORD nChannel, float *pfDb)
  function HRESULT (line 1006) | HRESULT CLAVAudio::CheckInputType(const CMediaType *mtIn)
  function HRESULT (line 1032) | HRESULT CLAVAudio::GetMediaType(int iPosition, CMediaType *pMediaType)
  function HRESULT (line 1141) | HRESULT CLAVAudio::ReconnectOutput(long cbBuffer, CMediaType &mt)
  function CMediaType (line 1194) | CMediaType CLAVAudio::CreateMediaType(LAVAudioSampleFormat outputFormat,...
  function HRESULT (line 1259) | HRESULT CLAVAudio::CheckTransform(const CMediaType *mtIn, const CMediaTy...
  function HRESULT (line 1283) | HRESULT CLAVAudio::DecideBufferSize(IMemAllocator *pAllocator, ALLOCATOR...
  function HRESULT (line 1310) | HRESULT CLAVAudio::ffmpeg_init(AVCodecID codec, const void *format, cons...
  function HRESULT (line 1613) | HRESULT CLAVAudio::SetMediaType(PIN_DIRECTION dir, const CMediaType *pmt)
  function HRESULT (line 1677) | HRESULT CLAVAudio::CheckConnect(PIN_DIRECTION dir, IPin *pPin)
  function HRESULT (line 1691) | HRESULT CLAVAudio::CompleteConnect(PIN_DIRECTION dir, IPin *pReceivePin)
  function HRESULT (line 1720) | HRESULT CLAVAudio::EndOfStream()
  function HRESULT (line 1733) | HRESULT CLAVAudio::PerformFlush()
  function HRESULT (line 1755) | HRESULT CLAVAudio::BeginFlush()
  function HRESULT (line 1762) | HRESULT CLAVAudio::EndFlush()
  function HRESULT (line 1775) | HRESULT CLAVAudio::NewSegment(REFERENCE_TIME tStart, REFERENCE_TIME tSto...
  function HRESULT (line 1789) | HRESULT CLAVAudio::FlushDecoder()
  function HRESULT (line 1811) | HRESULT CLAVAudio::Receive(IMediaSample *pIn)
  function check_mpegaudio_header (line 1951) | static int check_mpegaudio_header(uint8_t *buf, uint32_t *retheader)
  function HRESULT (line 1965) | HRESULT CLAVAudio::ResyncMPEGAudio()
  function HRESULT (line 1999) | HRESULT CLAVAudio::ProcessBuffer(IMediaSample *pMediaSample, BOOL bEOF)
  function DWORD (line 2169) | static DWORD get_lav_channel_layout(AVChannelLayout *layout)
  function HRESULT (line 2195) | HRESULT CLAVAudio::Decode(const BYTE *pDataBuffer, int buffsize, int &co...
  function HRESULT (line 2409) | HRESULT CLAVAudio::DecodeReceive(HRESULT *hrDeliver)
  function HRESULT (line 2589) | HRESULT CLAVAudio::GetDeliveryBuffer(IMediaSample **pSample, BYTE **pData)
  function HRESULT (line 2612) | HRESULT CLAVAudio::QueueOutput(BufferDetails &buffer)
  function HRESULT (line 2662) | HRESULT CLAVAudio::FlushOutput(BOOL bDeliver)
  function HRESULT (line 2678) | HRESULT CLAVAudio::Deliver(BufferDetails &buffer)
  function HRESULT (line 2891) | HRESULT CLAVAudio::BreakConnect(PIN_DIRECTION dir)

FILE: decoder/LAVAudio/LAVAudio.h
  type WAVEFORMATEX_HDMV_LPCM (line 60) | struct WAVEFORMATEX_HDMV_LPCM
  type BufferDetails (line 62) | struct BufferDetails
  type DTSBitstreamMode (line 183) | enum DTSBitstreamMode
  function AVChannelLayout (line 284) | AVChannelLayout m_chOverrideMixer{}
  function AVChannelLayout (line 288) | AVChannelLayout m_chRemixLayout{}
  type AudioSettings (line 293) | struct AudioSettings
  function AVChannelLayout (line 350) | AVChannelLayout m_DecodeLayout{}
  function AVChannelLayout (line 351) | AVChannelLayout m_DecodeLayoutSanified{}
  function AVChannelLayout (line 352) | AVChannelLayout m_MixingInputLayout{}
  function AVChannelLayout (line 355) | AVChannelLayout m_SuppressLayout{}
  function AVChannelLayout (line 358) | AVChannelLayout m_ChannelMapOutputLayout{}

FILE: decoder/LAVAudio/Media.cpp
  type AVCodecID (line 37) | enum AVCodecID
  function AVCodecID (line 285) | AVCodecID FindCodecId(const CMediaType *mt)
  type s_ffmpeg_codec_overrides (line 297) | struct s_ffmpeg_codec_overrides
  function DWORD (line 332) | DWORD get_channel_mask(int num_channels)
  function BYTE (line 370) | BYTE get_byte_per_sample(LAVAudioSampleFormat sfFormat)
  function LAVAudioSampleFormat (line 383) | LAVAudioSampleFormat get_lav_sample_fmt(AVSampleFormat sample_fmt, int b...
  function AVSampleFormat (line 410) | AVSampleFormat get_ff_sample_fmt(LAVAudioSampleFormat sample_fmt)
  function BYTE (line 425) | static BYTE get_lpcm_sample_rate_index(int sample_rate)
  function BYTE (line 436) | static BYTE get_lpcm_bit_per_sample_index(int bit_per_sample)
  function BYTE (line 456) | static BYTE get_dvdlpcm_sample_rate_index(int sample_rate)
  function HRESULT (line 476) | HRESULT CLAVAudio::ParseRealAudioHeader(const BYTE *extra, const size_t ...
  function T (line 550) | T get_sample_from_buffer(const BYTE *const pBuffer, LAVAudioSampleFormat...
  function WORD (line 616) | WORD get_channel_from_flag(DWORD dwMask, DWORD dwFlag)
  function DWORD (line 635) | DWORD get_flag_from_channel(DWORD dwMask, WORD wChannel)
  function codec_config_t (line 705) | const codec_config_t *get_codec_config(LAVAudioCodec codec)
  function LAVAudioSampleFormat (line 734) | LAVAudioSampleFormat CLAVAudio::GetBestAvailableSampleFormat(LAVAudioSam...
  function lav_spdif_bswap_buf16 (line 758) | void lav_spdif_bswap_buf16(uint16_t *dst, const uint16_t *src, int w)

FILE: decoder/LAVAudio/Media.h
  type scmap_t (line 33) | struct scmap_t
  type codec_config_t (line 41) | struct codec_config_t

FILE: decoder/LAVAudio/PostProcessor.cpp
  function SampleCopyAdjust (line 55) | static inline void SampleCopyAdjust(BYTE *pOut, const BYTE *pIn, int iFa...
  function Silence (line 114) | static inline void Silence(BYTE *pBuffer, LAVAudioSampleFormat sfSampleF...
  function HRESULT (line 160) | HRESULT ExtendedChannelMapping(BufferDetails *pcm, const unsigned uOutCh...
  function HRESULT (line 211) | HRESULT CLAVAudio::CheckChannelLayoutConformity(AVChannelLayout * layout)
  function HRESULT (line 290) | HRESULT CLAVAudio::Create51Conformity(DWORD dwLayout)
  function HRESULT (line 322) | HRESULT CLAVAudio::Create61Conformity(DWORD dwLayout)
  function HRESULT (line 366) | HRESULT CLAVAudio::Create71Conformity(DWORD dwLayout)
  function HRESULT (line 416) | HRESULT CLAVAudio::PadTo32(BufferDetails *buffer)
  function HRESULT (line 444) | HRESULT CLAVAudio::Truncate32Buffer(BufferDetails *buffer)
  function HRESULT (line 479) | HRESULT CLAVAudio::PerformAVRProcessing(BufferDetails *buffer)
  function HRESULT (line 625) | HRESULT CLAVAudio::PostProcess(BufferDetails *buffer)

FILE: decoder/LAVAudio/PostProcessor.h
  type BufferDetails (line 22) | struct BufferDetails
  type ExtendedChannelMap_s (line 24) | struct ExtendedChannelMap_s
  function ExtChMapSet (line 30) | inline void ExtChMapSet(ExtendedChannelMap *map, int ch, int idx, int fa...
  function ExtChMapClear (line 36) | inline void ExtChMapClear(ExtendedChannelMap *map)

FILE: decoder/LAVAudio/dllmain.cpp
  function STDAPI (line 68) | STDAPI DllRegisterServer()
  function STDAPI (line 74) | STDAPI DllUnregisterServer()
  function BOOL (line 84) | BOOL WINAPI DllMain(HANDLE hDllHandle, DWORD dwReason, LPVOID lpReserved)
  function OpenConfiguration (line 89) | void CALLBACK OpenConfiguration(HWND hwnd, HINSTANCE hinst, LPSTR lpszCm...

FILE: decoder/LAVAudio/parser/dts.cpp
  type DTSParserContext (line 45) | struct DTSParserContext
  function init_dts_parser (line 50) | int init_dts_parser(DTSParserContext **pContext)
  function close_dts_parser (line 65) | int close_dts_parser(DTSParserContext **pContext)
  function parse_dts_xch_header (line 77) | static int parse_dts_xch_header(DTSParserContext *pContext, DTSHeader *p...
  function parse_dts_xch_hd_header (line 89) | static int parse_dts_xch_hd_header(DTSParserContext *pContext, DTSHeader...
  function parse_dts_xxch_header (line 101) | static int parse_dts_xxch_header(DTSParserContext *pContext, DTSHeader *...
  function parse_dts_xxch_hd_header (line 114) | static int parse_dts_xxch_hd_header(DTSParserContext *pContext, DTSHeade...
  function parse_dts_hd_header (line 128) | static int parse_dts_hd_header(DTSParserContext *pContext, DTSHeader *pH...
  function parse_dts_header (line 239) | int parse_dts_header(DTSParserContext *pContext, DTSHeader *pHeader, uin...

FILE: decoder/LAVAudio/parser/dts.h
  type DTSParserContext (line 37) | struct DTSParserContext
  type DTSHeader (line 39) | struct DTSHeader

FILE: decoder/LAVVideo/CCOutputPin.cpp
  function HRESULT (line 39) | HRESULT CCCOutputPin::Active(void)
  function STDMETHODIMP (line 44) | STDMETHODIMP CCCOutputPin::NonDelegatingQueryInterface(REFIID riid, void...
  function HRESULT (line 51) | HRESULT CCCOutputPin::DecideBufferSize(IMemAllocator *pAlloc, ALLOCATOR_...
  function HRESULT (line 72) | HRESULT CCCOutputPin::CheckMediaType(const CMediaType *pmt)
  function HRESULT (line 80) | HRESULT CCCOutputPin::GetMediaType(int iPosition, CMediaType *pmt)
  function STDMETHODIMP (line 89) | STDMETHODIMP CCCOutputPin::DeliverCCData(BYTE *pDataIn, size_t size, REF...

FILE: decoder/LAVVideo/CCOutputPin.h
  function class (line 24) | class CCCOutputPin : public CBaseOutputPin

FILE: decoder/LAVVideo/DecodeManager.cpp
  function STDMETHODIMP (line 39) | STDMETHODIMP CDecodeManager::Close()
  function ILAVDecoder (line 64) | ILAVDecoder *CDecodeManager::CreateHWAccelDecoder(LAVHWAccel hwAccel)
  function STDMETHODIMP (line 81) | STDMETHODIMP CDecodeManager::CreateSideDataCache(const MediaSideDataFFMp...
  function STDMETHODIMP (line 114) | STDMETHODIMP CDecodeManager::CreateDecoder(const CMediaType *pmt, AVCode...
  function STDMETHODIMP (line 215) | STDMETHODIMP CDecodeManager::Decode(IMediaSample *pSample)
  function STDMETHODIMP (line 257) | STDMETHODIMP CDecodeManager::Flush()
  function STDMETHODIMP (line 267) | STDMETHODIMP CDecodeManager::EndOfStream()
  function STDMETHODIMP (line 277) | STDMETHODIMP CDecodeManager::InitAllocator(IMemAllocator **ppAlloc)
  function STDMETHODIMP (line 287) | STDMETHODIMP CDecodeManager::PostConnect(IPin *pPin)
  function STDMETHODIMP (line 304) | STDMETHODIMP CDecodeManager::BreakConnect()

FILE: decoder/LAVVideo/DecodeManager.h
  function class (line 28) | class CDecodeManager : protected CCritSec

FILE: decoder/LAVVideo/Filtering.cpp
  function lav_free_lavframe (line 23) | static void lav_free_lavframe(void *opaque, uint8_t *data)
  function lav_unref_frame (line 30) | static void lav_unref_frame(void *opaque, uint8_t *data)
  function avfilter_free_lav_buffer (line 36) | static void avfilter_free_lav_buffer(LAVFrame *pFrame)
  function HRESULT (line 41) | HRESULT CLAVVideo::Filter(LAVFrame *pFrame)

FILE: decoder/LAVVideo/LAVPixFmtConverter.cpp
  function LAV_INOUT_PIXFMT_MAP (line 148) | static LAV_INOUT_PIXFMT_MAP *lookupFormatMap(LAVPixelFormat informat, in...
  function LAVOutPixFmts (line 178) | LAVOutPixFmts CLAVPixFmtConverter::GetOutputBySubtype(const GUID *guid)
  function LAVOutPixFmts (line 206) | LAVOutPixFmts CLAVPixFmtConverter::GetFilteredFormat(int index)
  function LAVOutPixFmts (line 224) | LAVOutPixFmts CLAVPixFmtConverter::GetPreferredOutput()
  function DWORD (line 314) | DWORD CLAVPixFmtConverter::GetImageSize(int width, int height, LAVOutPix...
  function BOOL (line 334) | BOOL CLAVPixFmtConverter::IsAllowedSubtype(const GUID *guid)
  function HRESULT (line 577) | HRESULT CLAVPixFmtConverter::Convert(const BYTE *const src[4], const ptr...
  function BOOL (line 627) | BOOL CLAVPixFmtConverter::IsDirectModeSupported(uintptr_t dst, ptrdiff_t...
  function HRESULT (line 635) | HRESULT CLAVPixFmtConverter::ConvertDirect(LAVFrame *pFrame, uint8_t *ds...

FILE: decoder/LAVVideo/LAVPixFmtConverter.h
  type LAVOutPixFmtDesc (line 37) | typedef struct
  type RGBCoeffs (line 47) | typedef struct _RGBCoeffs
  function class (line 65) | class CLAVPixFmtConverter

FILE: decoder/LAVVideo/LAVVideo.cpp
  function HRESULT (line 93) | HRESULT CLAVVideo::CreateTrayIcon()
  function STDMETHODIMP (line 104) | STDMETHODIMP CLAVVideo::JoinFilterGraph(IFilterGraph *pGraph, LPCWSTR pN...
  function HRESULT (line 119) | HRESULT CLAVVideo::LoadDefaults()
  function HRESULT (line 184) | HRESULT CLAVVideo::LoadSettings()
  function HRESULT (line 194) | HRESULT CLAVVideo::ReadSettings(HKEY rootKey)
  function HRESULT (line 362) | HRESULT CLAVVideo::SaveSettings()
  function STDMETHODIMP (line 435) | STDMETHODIMP CLAVVideo::NonDelegatingQueryInterface(REFIID riid, void **...
  function STDMETHODIMP (line 446) | STDMETHODIMP CLAVVideo::GetPages(CAUUID *pPages)
  function STDMETHODIMP (line 460) | STDMETHODIMP CLAVVideo::CreatePage(const GUID &guid, IPropertyPage **ppP...
  function CBasePin (line 529) | CBasePin *CLAVVideo::GetPin(int n)
  function HRESULT (line 541) | HRESULT CLAVVideo::CheckInputType(const CMediaType *mtIn)
  function HRESULT (line 556) | HRESULT CLAVVideo::CheckTransform(const CMediaType *mtIn, const CMediaTy...
  function HRESULT (line 569) | HRESULT CLAVVideo::DecideBufferSize(IMemAllocator *pAllocator, ALLOCATOR...
  function HRESULT (line 603) | HRESULT CLAVVideo::GetMediaType(int iPosition, CMediaType *pMediaType)
  function BOOL (line 644) | BOOL CLAVVideo::IsInterlacedOutput()
  function HRESULT (line 654) | HRESULT CLAVVideo::CreateDecoder(const CMediaType *pmt)
  function HRESULT (line 847) | HRESULT CLAVVideo::CheckDirectMode()
  function HRESULT (line 881) | HRESULT CLAVVideo::SetMediaType(PIN_DIRECTION dir, const CMediaType *pmt)
  function HRESULT (line 901) | HRESULT CLAVVideo::EndOfStream()
  function HRESULT (line 916) | HRESULT CLAVVideo::EndOfSegment()
  function HRESULT (line 940) | HRESULT CLAVVideo::BeginFlush()
  function HRESULT (line 951) | HRESULT CLAVVideo::EndFlush()
  function HRESULT (line 972) | HRESULT CLAVVideo::ReleaseLastSequenceFrame()
  function HRESULT (line 991) | HRESULT CLAVVideo::PerformFlush()
  function HRESULT (line 1009) | HRESULT CLAVVideo::NewSegment(REFERENCE_TIME tStart, REFERENCE_TIME tSto...
  function HRESULT (line 1021) | HRESULT CLAVVideo::CheckConnect(PIN_DIRECTION dir, IPin *pPin)
  function HRESULT (line 1054) | HRESULT CLAVVideo::BreakConnect(PIN_DIRECTION dir)
  function HRESULT (line 1072) | HRESULT CLAVVideo::CompleteConnect(PIN_DIRECTION dir, IPin *pReceivePin)
  function HRESULT (line 1140) | HRESULT CLAVVideo::StartStreaming()
  function STDMETHODIMP (line 1206) | STDMETHODIMP CLAVVideo::Stop()
  function HRESULT (line 1222) | HRESULT CLAVVideo::GetDeliveryBuffer(IMediaSample **ppOut, int width, in...
  function HRESULT (line 1307) | HRESULT CLAVVideo::ReconnectOutput(int width, int height, AVRational ar,...
  function HRESULT (line 1651) | HRESULT CLAVVideo::NegotiatePixelFormat(CMediaType &outMt, int width, in...
  function HRESULT (line 1705) | HRESULT CLAVVideo::Receive(IMediaSample *pIn)
  function STDMETHODIMP (line 1753) | STDMETHODIMP CLAVVideo::AllocateFrame(LAVFrame **ppFrame)
  function STDMETHODIMP (line 1778) | STDMETHODIMP CLAVVideo::ReleaseFrame(LAVFrame **ppFrame)
  function HRESULT (line 1791) | HRESULT CLAVVideo::DeDirectFrame(LAVFrame *pFrame, bool bDisableDirectMode)
  function STDMETHODIMP (line 1859) | STDMETHODIMP CLAVVideo::Deliver(LAVFrame *pFrame)
  function HRESULT (line 1951) | HRESULT CLAVVideo::DeliverToRenderer(LAVFrame *pFrame)
  function HRESULT (line 2389) | HRESULT CLAVVideo::GetD3DBuffer(LAVFrame *pFrame)
  function HRESULT (line 2414) | HRESULT CLAVVideo::RedrawStillImage()
  function HRESULT (line 2494) | HRESULT CLAVVideo::SetFrameFlags(IMediaSample *pMS, LAVFrame *pFrame)
  function STDMETHODIMP (line 2521) | STDMETHODIMP CLAVVideo::Read(LPCOLESTR pszPropName, VARIANT *pVar, IErro...
  function STDMETHODIMP (line 2546) | STDMETHODIMP CLAVVideo::SetRuntimeConfig(BOOL bRuntimeConfig)
  function STDMETHODIMP (line 2557) | STDMETHODIMP CLAVVideo::SetFormatConfiguration(LAVVideoCodec vCodec, BOO...
  function STDMETHODIMP (line 2575) | STDMETHODIMP CLAVVideo::SetNumThreads(DWORD dwNum)
  function STDMETHODIMP (line 2586) | STDMETHODIMP CLAVVideo::SetStreamAR(DWORD bStreamAR)
  function STDMETHODIMP (line 2597) | STDMETHODIMP CLAVVideo::SetDeintFieldOrder(LAVDeintFieldOrder order)
  function STDMETHODIMP (line 2608) | STDMETHODIMP CLAVVideo::SetDeintAggressive(BOOL bAggressive)
  function STDMETHODIMP (line 2622) | STDMETHODIMP CLAVVideo::SetDeintForce(BOOL bForce)
  function STDMETHODIMP (line 2636) | STDMETHODIMP CLAVVideo::SetPixelFormat(LAVOutPixFmts pixFmt, BOOL bEnabled)
  function STDMETHODIMP (line 2654) | STDMETHODIMP CLAVVideo::SetRGBOutputRange(DWORD dwRange)
  function STDMETHODIMP (line 2686) | STDMETHODIMP CLAVVideo::SetHWAccel(LAVHWAccel hwAccel)
  function STDMETHODIMP (line 2697) | STDMETHODIMP CLAVVideo::SetHWAccelCodec(LAVVideoHWCodec hwAccelCodec, BO...
  function STDMETHODIMP (line 2714) | STDMETHODIMP CLAVVideo::SetHWAccelDeintMode(LAVHWDeintModes deintMode)
  function STDMETHODIMP (line 2725) | STDMETHODIMP CLAVVideo::SetHWAccelDeintOutput(LAVDeintOutput deintOutput)
  function STDMETHODIMP (line 2736) | STDMETHODIMP CLAVVideo::SetHWAccelDeintHQ(BOOL bHQ)
  function STDMETHODIMP (line 2747) | STDMETHODIMP CLAVVideo::SetSWDeintMode(LAVSWDeintModes deintMode)
  function STDMETHODIMP (line 2758) | STDMETHODIMP CLAVVideo::SetSWDeintOutput(LAVDeintOutput deintOutput)
  function STDMETHODIMP (line 2769) | STDMETHODIMP CLAVVideo::SetDeintTreatAsProgressive(BOOL bEnabled)
  function STDMETHODIMP (line 2780) | STDMETHODIMP CLAVVideo::SetDitherMode(LAVDitherMode ditherMode)
  function STDMETHODIMP (line 2791) | STDMETHODIMP CLAVVideo::SetUseMSWMV9Decoder(BOOL bEnabled)
  function STDMETHODIMP (line 2802) | STDMETHODIMP CLAVVideo::SetDVDVideoSupport(BOOL bEnabled)
  function STDMETHODIMP (line 2813) | STDMETHODIMP CLAVVideo::SetHWAccelResolutionFlags(DWORD dwResFlags)
  function STDMETHODIMP (line 2824) | STDMETHODIMP CLAVVideo::SetTrayIcon(BOOL bEnabled)
  function STDMETHODIMP (line 2841) | STDMETHODIMP CLAVVideo::SetDeinterlacingMode(LAVDeintMode deintMode)
  function STDMETHODIMP (line 2852) | STDMETHODIMP CLAVVideo::SetGPUDeviceIndex(DWORD dwDevice)
  function STDMETHODIMP (line 2875) | STDMETHODIMP CLAVVideo::GetHWAccelDeviceInfo(LAVHWAccel hwAccel, DWORD d...
  function STDMETHODIMP (line 2943) | STDMETHODIMP CLAVVideo::SetHWAccelDeviceIndex(LAVHWAccel hwAccel, DWORD ...
  function STDMETHODIMP (line 2970) | STDMETHODIMP CLAVVideo::SetH264MVCDecodingOverride(BOOL bEnabled)
  function STDMETHODIMP (line 2976) | STDMETHODIMP CLAVVideo::SetEnableCCOutputPin(BOOL bEnabled)
  function STDMETHODIMP (line 2982) | STDMETHODIMP CLAVVideo::GetHWAccelActiveDevice(BSTR *pstrDeviceName)

FILE: decoder/LAVVideo/LAVVideo.h
  type TimingCache (line 56) | typedef struct
  function GetActiveDecoderName (line 153) | STDMETHODIMP_(const WCHAR *) GetActiveDecoderName() { return m_Decoder.G...
  function FilterInGraph (line 190) | STDMETHODIMP_(BOOL) FilterInGraph(PIN_DIRECTION dir, const GUID &clsid)
  function GetDecodeFlags (line 197) | STDMETHODIMP_(DWORD) GetDecodeFlags() { return m_dwDecodeFlags; }

FILE: decoder/LAVVideo/Media.cpp
  type AVCodecID (line 32) | enum AVCodecID
  function AVCodecID (line 685) | AVCodecID FindCodecId(const CMediaType *mt)
  function codec_config_t (line 769) | const codec_config_t *get_codec_config(LAVVideoCodec codec)
  function flip_plane (line 787) | int flip_plane(BYTE *buffer, int stride, int height)
  function fillDXVAExtFormat (line 804) | void fillDXVAExtFormat(DXVA2_ExtendedFormat &fmt, int range, int primari...
  function processFFHDRData (line 918) | void processFFHDRData(MediaSideDataHDR *sd, AVMasteringDisplayMetadata *ff)
  function processFFHDR10PlusData (line 942) | void processFFHDR10PlusData(MediaSideDataHDR10Plus *sd, AVDynamicHDRPlus...
  function processFFDOVIData (line 1016) | void processFFDOVIData(MediaSideDataDOVIMetadata* sd, const AVDOVIMetada...
  function CheckForSequenceMarkers (line 1222) | int CheckForSequenceMarkers(AVCodecID codec, const uint8_t *buf, long le...
  function sws_scale2 (line 1246) | int sws_scale2(struct SwsContext *c, const uint8_t *const srcSlice[], co...

FILE: decoder/LAVVideo/Media.h
  type codec_config_t (line 32) | struct codec_config_t
  type SwsContext (line 54) | struct SwsContext

FILE: decoder/LAVVideo/VideoInputPin.cpp
  function STDMETHODIMP (line 30) | STDMETHODIMP CVideoInputPin::NonDelegatingQueryInterface(REFIID riid, vo...
  function STDMETHODIMP (line 37) | STDMETHODIMP CVideoInputPin::NotifyAllocator(IMemAllocator *pAllocator, ...
  function STDMETHODIMP (line 55) | STDMETHODIMP CVideoInputPin::EndOfSegment()
  function STDMETHODIMP (line 69) | STDMETHODIMP CVideoInputPin::Set(REFGUID PropSet, ULONG Id, LPVOID pInst...
  function STDMETHODIMP (line 108) | STDMETHODIMP CVideoInputPin::Get(REFGUID PropSet, ULONG Id, LPVOID pInst...
  function STDMETHODIMP (line 149) | STDMETHODIMP CVideoInputPin::QuerySupported(REFGUID PropSet, ULONG Id, U...

FILE: decoder/LAVVideo/VideoInputPin.h
  function AM_SimpleRateChange (line 50) | AM_SimpleRateChange GetDVDRateChange()
  function BOOL (line 56) | BOOL HasDynamicAllocator() { return m_bDynamicAllocator; }

FILE: decoder/LAVVideo/VideoOutputPin.cpp
  function HRESULT (line 34) | HRESULT CVideoOutputPin::InitAllocator(IMemAllocator **ppAlloc)

FILE: decoder/LAVVideo/VideoOutputPin.h
  function class (line 22) | class CVideoOutputPin : public CTransformOutputPin

FILE: decoder/LAVVideo/VideoSettingsProp.cpp
  function HRESULT (line 38) | HRESULT CLAVVideoSettingsProp::OnConnect(IUnknown *pUnk)
  function HRESULT (line 54) | HRESULT CLAVVideoSettingsProp::OnDisconnect()
  function HRESULT (line 61) | HRESULT CLAVVideoSettingsProp::OnApplyChanges()
  function AddComboBoxEntryWithData (line 188) | static void AddComboBoxEntryWithData(HWND hwnd, int nIDDlgItem, WCHAR *p...
  function SelectComboBoxItemByValue (line 199) | static void SelectComboBoxItemByValue(HWND hwnd, int nIDDlgItem, UINT Data)
  function HRESULT (line 213) | HRESULT CLAVVideoSettingsProp::OnActivate()
  function HRESULT (line 410) | HRESULT CLAVVideoSettingsProp::UpdateHWOptions()
  function HRESULT (line 513) | HRESULT CLAVVideoSettingsProp::UpdateYADIFOptions()
  function HRESULT (line 524) | HRESULT CLAVVideoSettingsProp::LoadData()
  function INT_PTR (line 561) | INT_PTR CLAVVideoSettingsProp::OnReceiveMessage(HWND hwnd, UINT uMsg, WP...
  function HRESULT (line 967) | HRESULT CLAVVideoFormatsProp::OnConnect(IUnknown *pUnk)
  function HRESULT (line 977) | HRESULT CLAVVideoFormatsProp::OnDisconnect()
  function HRESULT (line 983) | HRESULT CLAVVideoFormatsProp::OnApplyChanges()
  function HRESULT (line 1009) | HRESULT CLAVVideoFormatsProp::OnActivate()
  function HRESULT (line 1074) | HRESULT CLAVVideoFormatsProp::LoadData()
  function INT_PTR (line 1087) | INT_PTR CLAVVideoFormatsProp::OnReceiveMessage(HWND hwnd, UINT uMsg, WPA...

FILE: decoder/LAVVideo/VideoSettingsProp.h
  function class (line 32) | class CLAVVideoSettingsProp : public CBaseDSPropPage
  function class (line 85) | class CLAVVideoFormatsProp : public CBaseDSPropPage

FILE: decoder/LAVVideo/decoders/DecBase.h
  function class (line 25) | class CDecBase : public ILAVDecoder
  function STDMETHODIMP (line 51) | STDMETHODIMP HasThreadSafeBuffers() { return S_FALSE; }
  function STDMETHODIMP (line 53) | STDMETHODIMP SetDirectOutput(BOOL bDirect) { return S_FALSE; }
  function GetHWAccelNumDevices (line 55) | STDMETHODIMP_(DWORD) GetHWAccelNumDevices() { return 0; }
  function STDMETHODIMP (line 56) | STDMETHODIMP GetHWAccelDeviceInfo(DWORD dwIndex, BSTR *pstrDeviceName, D...
  function STDMETHODIMP (line 60) | STDMETHODIMP GetHWAccelActiveDevice(BSTR *pstrDeviceName) { return E_UNE...
  function STDMETHODIMP (line 62) | STDMETHODIMP Decode(IMediaSample *pSample)
  function STDMETHODIMP (line 100) | STDMETHODIMP Flush()
  function HRESULT (line 111) | inline HRESULT AllocateFrame(LAVFrame **ppFrame) { return m_pCallback->A...
  function HRESULT (line 113) | inline HRESULT ReleaseFrame(LAVFrame **ppFrame) { return m_pCallback->Re...

FILE: decoder/LAVVideo/decoders/ILAVDecoder.h
  type LAVPixelFormat (line 34) | typedef enum LAVPixelFormat {
  type LAVPixFmtDesc (line 74) | typedef struct LAVPixFmtDesc
  type LAVDirectBuffer (line 92) | typedef struct LAVDirectBuffer
  type LAVFrameSideData (line 100) | typedef struct LAVFrameSideData
  type LAVFrame (line 119) | typedef struct LAVFrame
  type LAVPinInfo (line 211) | typedef struct LAVPinInfo

FILE: decoder/LAVVideo/decoders/avcodec.cpp
  function ILAVDecoder (line 49) | ILAVDecoder *CreateDecoderAVCodec()
  function DXVA2_ExtendedFormat (line 58) | static DXVA2_ExtendedFormat GetDXVA2ExtendedFlags(AVFrame *frame)
  type PixelFormatMapping (line 86) | struct PixelFormatMapping
  function getPixFmtMapping (line 203) | static struct PixelFormatMapping getPixFmtMapping(AVPixelFormat pixfmt)
  function STDMETHODIMP (line 286) | STDMETHODIMP CDecAvcodec::Init()
  function STDMETHODIMP (line 297) | STDMETHODIMP CDecAvcodec::InitDecoder(AVCodecID codec, const CMediaType ...
  function STDMETHODIMP (line 784) | STDMETHODIMP CDecAvcodec::DestroyDecoder()
  function lav_avframe_free (line 823) | static void lav_avframe_free(LAVFrame *frame)
  function avpacket_mediasample_free (line 829) | static void avpacket_mediasample_free(void *opaque, uint8_t *buffer)
  function STDMETHODIMP (line 835) | STDMETHODIMP CDecAvcodec::FillAVPacketData(AVPacket *avpkt, const uint8_...
  function STDMETHODIMP (line 887) | STDMETHODIMP CDecAvcodec::Decode(const BYTE *buffer, int buflen, REFEREN...
  function STDMETHODIMP (line 956) | STDMETHODIMP CDecAvcodec::ParsePacket(const BYTE *buffer, int buflen, RE...
  function STDMETHODIMP (line 1068) | STDMETHODIMP CDecAvcodec::DecodePacket(AVPacket *avpkt, REFERENCE_TIME r...
  function STDMETHODIMP (line 1465) | STDMETHODIMP CDecAvcodec::Flush()
  function STDMETHODIMP (line 1496) | STDMETHODIMP CDecAvcodec::EndOfStream()
  function STDMETHODIMP (line 1502) | STDMETHODIMP CDecAvcodec::GetPixelFormat(LAVPixelFormat *pPix, int *pBpp...
  function STDMETHODIMP (line 1515) | STDMETHODIMP CDecAvcodec::ConvertPixFmt(AVFrame *pFrame, LAVFrame *pOutF...

FILE: decoder/LAVVideo/decoders/avcodec.h
  type TimingCache (line 28) | typedef struct
  function class (line 34) | class CDecAvcodec : public CDecBase
  function virtual (line 57) | virtual HRESULT PostDecode() { return S_FALSE; }
  function virtual (line 58) | virtual HRESULT HandleDXVA2Frame(LAVFrame *pFrame) { return S_FALSE; }
  function virtual (line 59) | virtual BOOL IsHardwareAccelerator() { return FALSE; }

FILE: decoder/LAVVideo/decoders/cuvid.cpp
  function ILAVDecoder (line 36) | ILAVDecoder *CreateDecoderCUVID()
  function BOOL (line 88) | static BOOL IsLevelC(DWORD deviceId)
  function STDMETHODIMP (line 129) | STDMETHODIMP CDecCuvid::DestroyDecoder(bool bFull)
  function STDMETHODIMP (line 214) | STDMETHODIMP CDecCuvid::LoadCUDAFuncRefs()
  function STDMETHODIMP (line 270) | STDMETHODIMP CDecCuvid::FlushParser()
  function _ConvertSMVer2CoresDrvApi (line 294) | static int _ConvertSMVer2CoresDrvApi(int major, int minor)
  function STDMETHODIMP (line 428) | STDMETHODIMP CDecCuvid::Init()
  function STDMETHODIMP (line 513) | STDMETHODIMP CDecCuvid::InitD3D9(int best_device, DWORD requested_device)
  function STDMETHODIMP (line 630) | STDMETHODIMP CDecCuvid::InitDecoder(AVCodecID codec, const CMediaType *p...
  function STDMETHODIMP (line 838) | STDMETHODIMP CDecCuvid::CreateCUVIDDecoder(cudaVideoCodec codec, DWORD d...
  function STDMETHODIMP (line 896) | STDMETHODIMP CDecCuvid::DecodeSequenceData()
  function CUVIDPARSERDISPINFO (line 916) | CUVIDPARSERDISPINFO *CDecCuvid::GetNextFrame()
  function STDMETHODIMP (line 1096) | STDMETHODIMP CDecCuvid::Display(CUVIDPARSERDISPINFO *cuviddisp)
  function STDMETHODIMP (line 1151) | STDMETHODIMP CDecCuvid::Deliver(CUVIDPARSERDISPINFO *cuviddisp, int field)
  function STDMETHODIMP (line 1292) | STDMETHODIMP CDecCuvid::CheckH264Sequence(const BYTE *buffer, int buflen)
  function STDMETHODIMP (line 1319) | STDMETHODIMP CDecCuvid::CheckHEVCSequence(const BYTE *buffer, int buflen...
  function STDMETHODIMP (line 1344) | STDMETHODIMP CDecCuvid::Decode(const BYTE *buffer, int buflen, REFERENCE...
  function STDMETHODIMP (line 1454) | STDMETHODIMP CDecCuvid::Flush()
  function STDMETHODIMP (line 1485) | STDMETHODIMP CDecCuvid::EndOfStream()
  function STDMETHODIMP (line 1503) | STDMETHODIMP CDecCuvid::GetPixelFormat(LAVPixelFormat *pPix, int *pBpp, ...
  function STDMETHODIMP (line 1526) | STDMETHODIMP CDecCuvid::GetHWAccelActiveDevice(BSTR *pstrDeviceName)

FILE: decoder/LAVVideo/decoders/cuvid.h
  function class (line 39) | class CDecCuvid : public CDecBase

FILE: decoder/LAVVideo/decoders/cuvid/dynlink_cuda_cuda.h
  type CUdeviceptr (line 50) | typedef unsigned long long CUdeviceptr;
  type CUdeviceptr (line 52) | typedef unsigned int CUdeviceptr;
  type CUdevice (line 57) | typedef int CUdevice;
  type CUctx_st (line 58) | struct CUctx_st
  type CUmod_st (line 59) | struct CUmod_st
  type CUfunc_st (line 60) | struct CUfunc_st
  type CUarray_st (line 61) | struct CUarray_st
  type CUtexref_st (line 62) | struct CUtexref_st
  type CUsurfref_st (line 63) | struct CUsurfref_st
  type CUevent_st (line 64) | struct CUevent_st
  type CUstream_st (line 65) | struct CUstream_st
  type CUgraphicsResource_st (line 66) | struct CUgraphicsResource_st
  type CUuuid (line 68) | typedef struct CUuuid_st                                  /**< CUDA defi...
  type CUctx_flags (line 76) | typedef enum CUctx_flags_enum
  type CUevent_flags (line 98) | typedef enum CUevent_flags_enum
  type CUarray_format (line 108) | typedef enum CUarray_format_enum
  type CUaddress_mode (line 123) | typedef enum CUaddress_mode_enum
  type CUfilter_mode (line 134) | typedef enum CUfilter_mode_enum
  type CUdevice_attribute (line 143) | typedef enum CUdevice_attribute_enum
  type CUdevprop (line 197) | typedef struct CUdevprop_st
  type CUfunction_attribute (line 214) | typedef enum CUfunction_attribute_enum
  type CUfunc_cache (line 270) | typedef enum CUfunc_cache_enum
  type CUmemorytype (line 280) | typedef enum CUmemorytype_enum
  type CUcomputemode (line 293) | typedef enum CUcomputemode_enum
  type CUjit_option (line 306) | typedef enum CUjit_option_enum
  type CUjit_target (line 398) | typedef enum CUjit_target_enum
  type CUjit_fallback (line 411) | typedef enum CUjit_fallback_enum
  type CUgraphicsRegisterFlags (line 422) | typedef enum CUgraphicsRegisterFlags_enum
  type CUgraphicsMapResourceFlags (line 433) | typedef enum CUgraphicsMapResourceFlags_enum
  type CUarray_cubemap_face (line 443) | typedef enum CUarray_cubemap_face_enum
  type CUlimit (line 456) | typedef enum CUlimit_enum
  type CUresult (line 466) | typedef enum cudaError_enum
  type CUDA_MEMCPY2D (line 808) | typedef struct CUDA_MEMCPY2D_st
  type CUDA_MEMCPY3D (line 835) | typedef struct CUDA_MEMCPY3D_st
  type CUDA_MEMCPY3D_PEER (line 869) | typedef struct CUDA_MEMCPY3D_PEER_st
  type CUDA_ARRAY_DESCRIPTOR (line 903) | typedef struct CUDA_ARRAY_DESCRIPTOR_st
  type CUDA_ARRAY3D_DESCRIPTOR (line 915) | typedef struct CUDA_ARRAY3D_DESCRIPTOR_st
  type CUdeviceptr (line 1020) | typedef unsigned int CUdeviceptr;
  type CUDA_MEMCPY2D (line 1022) | typedef struct CUDA_MEMCPY2D_st
  type CUDA_MEMCPY3D (line 1044) | typedef struct CUDA_MEMCPY3D_st
  type CUDA_ARRAY_DESCRIPTOR (line 1075) | typedef struct CUDA_ARRAY_DESCRIPTOR_st
  type CUDA_ARRAY3D_DESCRIPTOR (line 1084) | typedef struct CUDA_ARRAY3D_DESCRIPTOR_st
  type CUresult (line 1161) | typedef CUresult  CUDAAPI tcuInit(unsigned int Flags);
  type CUresult (line 1166) | typedef CUresult  CUDAAPI tcuDriverGetVersion(int *driverVersion);
  type CUresult (line 1174) | typedef CUresult  CUDAAPI tcuDeviceGet(CUdevice *device, int ordinal);
  type CUresult (line 1175) | typedef CUresult  CUDAAPI tcuDeviceGetCount(int *count);
  type CUresult (line 1176) | typedef CUresult  CUDAAPI tcuDeviceGetName(char *name, int len, CUdevice...
  type CUresult (line 1177) | typedef CUresult  CUDAAPI tcuDeviceComputeCapability(int *major, int *mi...
  type CUresult (line 1179) | typedef CUresult  CUDAAPI tcuDeviceTotalMem(size_t *bytes, CUdevice dev);
  type CUresult (line 1181) | typedef CUresult  CUDAAPI tcuDeviceTotalMem(unsigned int *bytes, CUdevic...
  type CUresult (line 1184) | typedef CUresult  CUDAAPI tcuDeviceGetProperties(CUdevprop *prop, CUdevi...
  type CUresult (line 1185) | typedef CUresult  CUDAAPI tcuDeviceGetAttribute(int *pi, CUdevice_attrib...
  type CUresult (line 1192) | typedef CUresult  CUDAAPI tcuCtxCreate(CUcontext *pctx, unsigned int fla...
  type CUresult (line 1193) | typedef CUresult  CUDAAPI tcuCtxDestroy(CUcontext ctx);
  type CUresult (line 1194) | typedef CUresult  CUDAAPI tcuCtxAttach(CUcontext *pctx, unsigned int fla...
  type CUresult (line 1195) | typedef CUresult  CUDAAPI tcuCtxDetach(CUcontext ctx);
  type CUresult (line 1196) | typedef CUresult  CUDAAPI tcuCtxPushCurrent(CUcontext ctx);
  type CUresult (line 1197) | typedef CUresult  CUDAAPI tcuCtxPopCurrent(CUcontext *pctx);
  type CUresult (line 1199) | typedef CUresult  CUDAAPI tcuCtxSetCurrent(CUcontext ctx);
  type CUresult (line 1200) | typedef CUresult  CUDAAPI tcuCtxGetCurrent(CUcontext *pctx);
  type CUresult (line 1202) | typedef CUresult  CUDAAPI tcuCtxGetDevice(CUdevice *device);
  type CUresult (line 1203) | typedef CUresult  CUDAAPI tcuCtxSynchronize(void);
  type CUresult (line 1211) | typedef CUresult  CUDAAPI tcuModuleLoad(CUmodule *module, const char *fn...
  type CUresult (line 1212) | typedef CUresult  CUDAAPI tcuModuleLoadData(CUmodule *module, const void...
  type CUresult (line 1213) | typedef CUresult  CUDAAPI tcuModuleLoadDataEx(CUmodule *module, const vo...
  type CUresult (line 1214) | typedef CUresult  CUDAAPI tcuModuleLoadFatBinary(CUmodule *module, const...
  type CUresult (line 1215) | typedef CUresult  CUDAAPI tcuModuleUnload(CUmodule hmod);
  type CUresult (line 1216) | typedef CUresult  CUDAAPI tcuModuleGetFunction(CUfunction *hfunc, CUmodu...
  type CUresult (line 1219) | typedef CUresult  CUDAAPI tcuModuleGetGlobal(CUdeviceptr *dptr, size_t *...
  type CUresult (line 1221) | typedef CUresult  CUDAAPI tcuModuleGetGlobal(CUdeviceptr *dptr, unsigned...
  type CUresult (line 1224) | typedef CUresult  CUDAAPI tcuModuleGetTexRef(CUtexref *pTexRef, CUmodule...
  type CUresult (line 1225) | typedef CUresult  CUDAAPI tcuModuleGetSurfRef(CUsurfref *pSurfRef, CUmod...
  type CUresult (line 1233) | typedef CUresult CUDAAPI tcuMemGetInfo(size_t *free, size_t *total);
  type CUresult (line 1234) | typedef CUresult CUDAAPI tcuMemAlloc(CUdeviceptr *dptr, size_t bytesize);
  type CUresult (line 1235) | typedef CUresult CUDAAPI tcuMemGetAddressRange(CUdeviceptr *pbase, size_...
  type CUresult (line 1236) | typedef CUresult CUDAAPI tcuMemAllocPitch(CUdeviceptr *dptr,
  type CUresult (line 1245) | typedef CUresult CUDAAPI tcuMemGetInfo(unsigned int *free, unsigned int ...
  type CUresult (line 1246) | typedef CUresult CUDAAPI tcuMemAlloc(CUdeviceptr *dptr, unsigned int byt...
  type CUresult (line 1247) | typedef CUresult CUDAAPI tcuMemGetAddressRange(CUdeviceptr *pbase, unsig...
  type CUresult (line 1248) | typedef CUresult CUDAAPI tcuMemAllocPitch(CUdeviceptr *dptr,
  type CUresult (line 1258) | typedef CUresult CUDAAPI tcuMemFree(CUdeviceptr dptr);
  type CUresult (line 1261) | typedef CUresult CUDAAPI tcuMemAllocHost(void **pp, size_t bytesize);
  type CUresult (line 1263) | typedef CUresult CUDAAPI tcuMemAllocHost(void **pp, unsigned int bytesize);
  type CUresult (line 1266) | typedef CUresult CUDAAPI tcuMemFreeHost(void *p);
  type CUresult (line 1267) | typedef CUresult CUDAAPI tcuMemHostAlloc(void **pp, size_t bytesize, uns...
  type CUresult (line 1269) | typedef CUresult CUDAAPI tcuMemHostGetDevicePointer(CUdeviceptr *pdptr, ...
  type CUresult (line 1270) | typedef CUresult CUDAAPI tcuMemHostGetFlags(unsigned int *pFlags, void *p);
  type CUresult (line 1272) | typedef CUresult CUDAAPI tcuMemHostRegister(void *p, size_t bytesize, un...
  type CUresult (line 1273) | typedef CUresult CUDAAPI tcuMemHostUnregister(void *p);
  type CUresult (line 1274) | typedef CUresult CUDAAPI tcuMemcpy(CUdeviceptr dst, CUdeviceptr src, siz...
  type CUresult (line 1275) | typedef CUresult CUDAAPI tcuMemcpyPeer(CUdeviceptr dstDevice, CUcontext ...
  type CUresult (line 1288) | typedef CUresult  CUDAAPI tcuMemcpyHtoD(CUdeviceptr dstDevice, const voi...
  type CUresult (line 1289) | typedef CUresult  CUDAAPI tcuMemcpyDtoH(void *dstHost, CUdeviceptr srcDe...
  type CUresult (line 1292) | typedef CUresult  CUDAAPI tcuMemcpyDtoD(CUdeviceptr dstDevice, CUdevicep...
  type CUresult (line 1295) | typedef CUresult  CUDAAPI tcuMemcpyDtoA(CUarray dstArray, size_t dstOffs...
  type CUresult (line 1296) | typedef CUresult  CUDAAPI tcuMemcpyAtoD(CUdeviceptr dstDevice, CUarray s...
  type CUresult (line 1299) | typedef CUresult  CUDAAPI tcuMemcpyHtoA(CUarray dstArray, size_t dstOffs...
  type CUresult (line 1300) | typedef CUresult  CUDAAPI tcuMemcpyAtoH(void *dstHost, CUarray srcArray,...
  type CUresult (line 1303) | typedef CUresult  CUDAAPI tcuMemcpyAtoA(CUarray dstArray, size_t dstOffs...
  type CUresult (line 1306) | typedef CUresult  CUDAAPI tcuMemcpyHtoD(CUdeviceptr dstDevice, const voi...
  type CUresult (line 1307) | typedef CUresult  CUDAAPI tcuMemcpyDtoH(void *dstHost, CUdeviceptr srcDe...
  type CUresult (line 1310) | typedef CUresult  CUDAAPI tcuMemcpyDtoD(CUdeviceptr dstDevice, CUdevicep...
  type CUresult (line 1313) | typedef CUresult  CUDAAPI tcuMemcpyDtoA(CUarray dstArray, unsigned int d...
  type CUresult (line 1314) | typedef CUresult  CUDAAPI tcuMemcpyAtoD(CUdeviceptr dstDevice, CUarray s...
  type CUresult (line 1317) | typedef CUresult  CUDAAPI tcuMemcpyHtoA(CUarray dstArray, unsigned int d...
  type CUresult (line 1318) | typedef CUresult  CUDAAPI tcuMemcpyAtoH(void *dstHost, CUarray srcArray,...
  type CUresult (line 1321) | typedef CUresult  CUDAAPI tcuMemcpyAtoA(CUarray dstArray, unsigned int d...
  type CUresult (line 1325) | typedef CUresult  CUDAAPI tcuMemcpy2D(const CUDA_MEMCPY2D *pCopy);
  type CUresult (line 1326) | typedef CUresult  CUDAAPI tcuMemcpy2DUnaligned(const CUDA_MEMCPY2D *pCopy);
  type CUresult (line 1329) | typedef CUresult  CUDAAPI tcuMemcpy3D(const CUDA_MEMCPY3D *pCopy);
  type CUresult (line 1345) | typedef CUresult  CUDAAPI tcuMemcpyHtoDAsync(CUdeviceptr dstDevice,
  type CUresult (line 1347) | typedef CUresult  CUDAAPI tcuMemcpyDtoHAsync(void *dstHost,
  type CUresult (line 1351) | typedef CUresult  CUDAAPI tcuMemcpyDtoDAsync(CUdeviceptr dstDevice,
  type CUresult (line 1355) | typedef CUresult  CUDAAPI tcuMemcpyHtoAAsync(CUarray dstArray, size_t ds...
  type CUresult (line 1357) | typedef CUresult  CUDAAPI tcuMemcpyAtoHAsync(void *dstHost, CUarray srcA...
  type CUresult (line 1361) | typedef CUresult  CUDAAPI tcuMemcpyHtoDAsync(CUdeviceptr dstDevice,
  type CUresult (line 1363) | typedef CUresult  CUDAAPI tcuMemcpyDtoHAsync(void *dstHost,
  type CUresult (line 1367) | typedef CUresult  CUDAAPI tcuMemcpyDtoDAsync(CUdeviceptr dstDevice,
  type CUresult (line 1371) | typedef CUresult  CUDAAPI tcuMemcpyHtoAAsync(CUarray dstArray, unsigned ...
  type CUresult (line 1373) | typedef CUresult  CUDAAPI tcuMemcpyAtoHAsync(void *dstHost, CUarray srcA...
  type CUresult (line 1378) | typedef CUresult  CUDAAPI tcuMemcpy2DAsync(const CUDA_MEMCPY2D *pCopy, C...
  type CUresult (line 1381) | typedef CUresult  CUDAAPI tcuMemcpy3DAsync(const CUDA_MEMCPY3D *pCopy, C...
  type CUresult (line 1389) | typedef CUresult  CUDAAPI tcuMemsetD8(CUdeviceptr dstDevice, unsigned ch...
  type CUresult (line 1390) | typedef CUresult  CUDAAPI tcuMemsetD16(CUdeviceptr dstDevice, unsigned s...
  type CUresult (line 1391) | typedef CUresult  CUDAAPI tcuMemsetD32(CUdeviceptr dstDevice, unsigned i...
  type CUresult (line 1392) | typedef CUresult  CUDAAPI tcuMemsetD2D8(CUdeviceptr dstDevice, unsigned ...
  type CUresult (line 1393) | typedef CUresult  CUDAAPI tcuMemsetD2D16(CUdeviceptr dstDevice, unsigned...
  type CUresult (line 1394) | typedef CUresult  CUDAAPI tcuMemsetD2D32(CUdeviceptr dstDevice, unsigned...
  type CUresult (line 1396) | typedef CUresult  CUDAAPI tcuMemsetD8(CUdeviceptr dstDevice, unsigned ch...
  type CUresult (line 1397) | typedef CUresult  CUDAAPI tcuMemsetD16(CUdeviceptr dstDevice, unsigned s...
  type CUresult (line 1398) | typedef CUresult  CUDAAPI tcuMemsetD32(CUdeviceptr dstDevice, unsigned i...
  type CUresult (line 1399) | typedef CUresult  CUDAAPI tcuMemsetD2D8(CUdeviceptr dstDevice, unsigned ...
  type CUresult (line 1400) | typedef CUresult  CUDAAPI tcuMemsetD2D16(CUdeviceptr dstDevice, unsigned...
  type CUresult (line 1401) | typedef CUresult  CUDAAPI tcuMemsetD2D32(CUdeviceptr dstDevice, unsigned...
  type CUresult (line 1411) | typedef CUresult CUDAAPI tcuFuncSetBlockShape(CUfunction hfunc, int x, i...
  type CUresult (line 1412) | typedef CUresult CUDAAPI tcuFuncSetSharedSize(CUfunction hfunc, unsigned...
  type CUresult (line 1413) | typedef CUresult CUDAAPI tcuFuncGetAttribute(int *pi, CUfunction_attribu...
  type CUresult (line 1414) | typedef CUresult CUDAAPI tcuFuncSetCacheConfig(CUfunction hfunc, CUfunc_...
  type CUresult (line 1415) | typedef CUresult CUDAAPI tcuLaunchKernel(CUfunction f,
  type CUresult (line 1427) | typedef CUresult  CUDAAPI tcuArrayCreate(CUarray *pHandle, const CUDA_AR...
  type CUresult (line 1428) | typedef CUresult  CUDAAPI tcuArrayGetDescriptor(CUDA_ARRAY_DESCRIPTOR *p...
  type CUresult (line 1429) | typedef CUresult  CUDAAPI tcuArrayDestroy(CUarray hArray);
  type CUresult (line 1431) | typedef CUresult  CUDAAPI tcuArray3DCreate(CUarray *pHandle, const CUDA_...
  type CUresult (line 1432) | typedef CUresult  CUDAAPI tcuArray3DGetDescriptor(CUDA_ARRAY3D_DESCRIPTO...
  type CUresult (line 1440) | typedef CUresult  CUDAAPI tcuTexRefCreate(CUtexref *pTexRef);
  type CUresult (line 1441) | typedef CUresult  CUDAAPI tcuTexRefDestroy(CUtexref hTexRef);
  type CUresult (line 1443) | typedef CUresult  CUDAAPI tcuTexRefSetArray(CUtexref hTexRef, CUarray hA...
  type CUresult (line 1446) | typedef CUresult  CUDAAPI tcuTexRefSetAddress(size_t *ByteOffset, CUtexr...
  type CUresult (line 1447) | typedef CUresult  CUDAAPI tcuTexRefSetAddress2D(CUtexref hTexRef, const ...
  type CUresult (line 1449) | typedef CUresult  CUDAAPI tcuTexRefSetAddress(unsigned int *ByteOffset, ...
  type CUresult (line 1450) | typedef CUresult  CUDAAPI tcuTexRefSetAddress2D(CUtexref hTexRef, const ...
  type CUresult (line 1453) | typedef CUresult  CUDAAPI tcuTexRefSetFormat(CUtexref hTexRef, CUarray_f...
  type CUresult (line 1454) | typedef CUresult  CUDAAPI tcuTexRefSetAddressMode(CUtexref hTexRef, int ...
  type CUresult (line 1455) | typedef CUresult  CUDAAPI tcuTexRefSetFilterMode(CUtexref hTexRef, CUfil...
  type CUresult (line 1456) | typedef CUresult  CUDAAPI tcuTexRefSetFlags(CUtexref hTexRef, unsigned i...
  type CUresult (line 1458) | typedef CUresult  CUDAAPI tcuTexRefGetAddress(CUdeviceptr *pdptr, CUtexr...
  type CUresult (line 1459) | typedef CUresult  CUDAAPI tcuTexRefGetArray(CUarray *phArray, CUtexref h...
  type CUresult (line 1460) | typedef CUresult  CUDAAPI tcuTexRefGetAddressMode(CUaddress_mode *pam, C...
  type CUresult (line 1461) | typedef CUresult  CUDAAPI tcuTexRefGetFilterMode(CUfilter_mode *pfm, CUt...
  type CUresult (line 1462) | typedef CUresult  CUDAAPI tcuTexRefGetFormat(CUarray_format *pFormat, in...
  type CUresult (line 1463) | typedef CUresult  CUDAAPI tcuTexRefGetFlags(unsigned int *pFlags, CUtexr...
  type CUresult (line 1470) | typedef CUresult  CUDAAPI tcuSurfRefSetArray(CUsurfref hSurfRef, CUarray...
  type CUresult (line 1471) | typedef CUresult  CUDAAPI tcuSurfRefGetArray(CUarray *phArray, CUsurfref...
  type CUresult (line 1479) | typedef CUresult  CUDAAPI tcuParamSetSize(CUfunction hfunc, unsigned int...
  type CUresult (line 1480) | typedef CUresult  CUDAAPI tcuParamSeti(CUfunction hfunc, int offset, uns...
  type CUresult (line 1481) | typedef CUresult  CUDAAPI tcuParamSetf(CUfunction hfunc, int offset, flo...
  type CUresult (line 1482) | typedef CUresult  CUDAAPI tcuParamSetv(CUfunction hfunc, int offset, voi...
  type CUresult (line 1483) | typedef CUresult  CUDAAPI tcuParamSetTexRef(CUfunction hfunc, int texuni...
  type CUresult (line 1492) | typedef CUresult CUDAAPI tcuLaunch(CUfunction f);
  type CUresult (line 1493) | typedef CUresult CUDAAPI tcuLaunchGrid(CUfunction f, int grid_width, int...
  type CUresult (line 1494) | typedef CUresult CUDAAPI tcuLaunchGridAsync(CUfunction f, int grid_width...
  type CUresult (line 1501) | typedef CUresult CUDAAPI tcuEventCreate(CUevent *phEvent, unsigned int F...
  type CUresult (line 1502) | typedef CUresult CUDAAPI tcuEventRecord(CUevent hEvent, CUstream hStream);
  type CUresult (line 1503) | typedef CUresult CUDAAPI tcuEventQuery(CUevent hEvent);
  type CUresult (line 1504) | typedef CUresult CUDAAPI tcuEventSynchronize(CUevent hEvent);
  type CUresult (line 1505) | typedef CUresult CUDAAPI tcuEventDestroy(CUevent hEvent);
  type CUresult (line 1506) | typedef CUresult CUDAAPI tcuEventElapsedTime(float *pMilliseconds, CUeve...
  type CUresult (line 1513) | typedef CUresult CUDAAPI  tcuStreamCreate(CUstream *phStream, unsigned i...
  type CUresult (line 1514) | typedef CUresult CUDAAPI  tcuStreamQuery(CUstream hStream);
  type CUresult (line 1515) | typedef CUresult CUDAAPI  tcuStreamSynchronize(CUstream hStream);
  type CUresult (line 1516) | typedef CUresult CUDAAPI  tcuStreamDestroy(CUstream hStream);
  type CUresult (line 1523) | typedef CUresult CUDAAPI tcuGraphicsUnregisterResource(CUgraphicsResourc...
  type CUresult (line 1524) | typedef CUresult CUDAAPI tcuGraphicsSubResourceGetMappedArray(CUarray *p...
  type CUresult (line 1527) | typedef CUresult CUDAAPI tcuGraphicsResourceGetMappedPointer(CUdeviceptr...
  type CUresult (line 1529) | typedef CUresult CUDAAPI tcuGraphicsResourceGetMappedPointer(CUdeviceptr...
  type CUresult (line 1532) | typedef CUresult CUDAAPI tcuGraphicsResourceSetMapFlags(CUgraphicsResour...
  type CUresult (line 1533) | typedef CUresult CUDAAPI tcuGraphicsMapResources(unsigned int count, CUg...
  type CUresult (line 1534) | typedef CUresult CUDAAPI tcuGraphicsUnmapResources(unsigned int count, C...
  type CUresult (line 1541) | typedef CUresult CUDAAPI tcuGetExportTable(const void **ppExportTable, c...
  type CUresult (line 1549) | typedef CUresult CUDAAPI tcuCtxSetLimit(CUlimit limit, size_t value);
  type CUresult (line 1550) | typedef CUresult CUDAAPI tcuCtxGetLimit(size_t *pvalue, CUlimit limit);

FILE: decoder/LAVVideo/decoders/cuvid/dynlink_cuda_d3d.h
  type CUd3d9register_flags (line 31) | typedef enum CUd3d9register_flags_enum
  type CUd3d9map_flags (line 40) | typedef enum CUd3d9map_flags_enum
  type CUresult (line 48) | typedef CUresult CUDAAPI tcuD3D9Begin(IDirect3DDevice9 *pDevice);
  type CUresult (line 49) | typedef CUresult CUDAAPI tcuD3D9End(void);
  type CUresult (line 50) | typedef CUresult CUDAAPI tcuD3D9RegisterVertexBuffer(IDirect3DVertexBuff...
  type CUresult (line 51) | typedef CUresult CUDAAPI tcuD3D9MapVertexBuffer(CUdeviceptr *pDevPtr, un...
  type CUresult (line 52) | typedef CUresult CUDAAPI tcuD3D9UnmapVertexBuffer(IDirect3DVertexBuffer9...
  type CUresult (line 53) | typedef CUresult CUDAAPI tcuD3D9UnregisterVertexBuffer(IDirect3DVertexBu...
  type CUresult (line 56) | typedef CUresult CUDAAPI tcuD3D9GetDirect3DDevice(IDirect3DDevice9 **ppD...
  type CUresult (line 57) | typedef CUresult CUDAAPI tcuD3D9RegisterResource(IDirect3DResource9 *pRe...
  type CUresult (line 58) | typedef CUresult CUDAAPI tcuD3D9UnregisterResource(IDirect3DResource9 *p...
  type CUresult (line 60) | typedef CUresult CUDAAPI tcuD3D9MapResources(unsigned int count, IDirect...
  type CUresult (line 61) | typedef CUresult CUDAAPI tcuD3D9UnmapResources(unsigned int count, IDire...
  type CUresult (line 62) | typedef CUresult CUDAAPI tcuD3D9ResourceSetMapFlags(IDirect3DResource9 *...
  type CUresult (line 64) | typedef CUresult CUDAAPI tcuD3D9ResourceGetSurfaceDimensions(unsigned in...
  type CUresult (line 65) | typedef CUresult CUDAAPI tcuD3D9ResourceGetMappedArray(CUarray *pArray, ...
  type CUresult (line 66) | typedef CUresult CUDAAPI tcuD3D9ResourceGetMappedPointer(CUdeviceptr *pD...
  type CUresult (line 67) | typedef CUresult CUDAAPI tcuD3D9ResourceGetMappedSize(unsigned int *pSiz...
  type CUresult (line 68) | typedef CUresult CUDAAPI tcuD3D9ResourceGetMappedPitch(unsigned int *pPi...
  type CUresult (line 71) | typedef CUresult CUDAAPI tcuD3D9GetDevice(CUdevice *pCudaDevice, const c...
  type CUresult (line 72) | typedef CUresult CUDAAPI tcuD3D9CtxCreate(CUcontext *pCtx, CUdevice *pCu...
  type CUresult (line 73) | typedef CUresult CUDAAPI tcuGraphicsD3D9RegisterResource(CUgraphicsResou...
  type CUresult (line 86) | typedef CUresult CUDAAPI tcuD3D10GetDevice(CUdevice *pCudaDevice, IDXGIA...
  type CUresult (line 87) | typedef CUresult CUDAAPI tcuD3D10CtxCreate(CUcontext *pCtx, CUdevice *pC...
  type CUresult (line 88) | typedef CUresult CUDAAPI tcuGraphicsD3D10RegisterResource(CUgraphicsReso...
  type CUresult (line 100) | typedef CUresult CUDAAPI tcuD3D11GetDevice(CUdevice *pCudaDevice, IDXGIA...
  type CUresult (line 101) | typedef CUresult CUDAAPI tcuD3D11CtxCreate(CUcontext *pCtx, CUdevice *pC...
  type CUresult (line 102) | typedef CUresult CUDAAPI tcuGraphicsD3D11RegisterResource(CUgraphicsReso...

FILE: decoder/LAVVideo/decoders/cuvid/dynlink_cuviddec.h
  type _CUcontextlock_st (line 53) | struct _CUcontextlock_st
  type cudaVideoCodec (line 60) | typedef enum cudaVideoCodec_enum
  type cudaVideoSurfaceFormat (line 88) | typedef enum cudaVideoSurfaceFormat_enum
  type cudaVideoDeinterlaceMode (line 105) | typedef enum cudaVideoDeinterlaceMode_enum
  type cudaVideoChromaFormat (line 117) | typedef enum cudaVideoChromaFormat_enum
  type cudaVideoCreateFlags (line 130) | typedef enum cudaVideoCreateFlags_enum
  type cuvidDecodeStatus (line 144) | typedef enum cuvidDecodeStatus_enum
  type CUVIDDECODECAPS (line 158) | typedef struct _CUVIDDECODECAPS
  type CUVIDDECODECREATEINFO (line 186) | typedef struct _CUVIDDECODECREATEINFO
  type CUVIDH264DPBENTRY (line 243) | typedef struct _CUVIDH264DPBENTRY
  type CUVIDH264MVCEXT (line 258) | typedef struct _CUVIDH264MVCEXT
  type CUVIDH264SVCEXT (line 275) | typedef struct _CUVIDH264SVCEXT
  type CUVIDH264PICPARAMS (line 316) | typedef struct _CUVIDH264PICPARAMS
  type CUVIDMPEG2PICPARAMS (line 376) | typedef struct _CUVIDMPEG2PICPARAMS
  type CUVIDMPEG4PICPARAMS (line 407) | typedef struct _CUVIDMPEG4PICPARAMS
  type CUVIDVC1PICPARAMS (line 442) | typedef struct _CUVIDVC1PICPARAMS
  type CUVIDJPEGPICPARAMS (line 487) | typedef struct _CUVIDJPEGPICPARAMS
  type CUVIDHEVCPICPARAMS (line 497) | typedef struct _CUVIDHEVCPICPARAMS
  type CUVIDVP8PICPARAMS (line 635) | typedef struct _CUVIDVP8PICPARAMS
  type CUVIDVP9PICPARAMS (line 664) | typedef struct _CUVIDVP9PICPARAMS
  type CUVIDAV1PICPARAMS (line 734) | typedef struct _CUVIDAV1PICPARAMS
  type CUVIDPICPARAMS (line 932) | typedef struct _CUVIDPICPARAMS
  type CUVIDPROCPARAMS (line 969) | typedef struct _CUVIDPROCPARAMS
  type CUVIDGETDECODESTATUS (line 995) | typedef struct _CUVIDGETDECODESTATUS
  type CUVIDRECONFIGUREDECODERINFO (line 1007) | typedef struct _CUVIDRECONFIGUREDECODERINFO
  type CUresult (line 1079) | typedef CUresult CUDAAPI tcuvidGetDecoderCaps(CUVIDDECODECAPS *pdc);
  type CUresult (line 1085) | typedef CUresult CUDAAPI tcuvidCreateDecoder(CUvideodecoder *phDecoder, ...
  type CUresult (line 1091) | typedef CUresult CUDAAPI tcuvidDestroyDecoder(CUvideodecoder hDecoder);
  type CUresult (line 1098) | typedef CUresult CUDAAPI tcuvidDecodePicture(CUvideodecoder hDecoder, CU...
  type CUresult (line 1107) | typedef CUresult CUDAAPI tcuvidGetDecodeStatus(CUvideodecoder hDecoder, ...
  type CUresult (line 1116) | typedef CUresult CUDAAPI tcuvidReconfigureDecoder(CUvideodecoder hDecoder,
  type CUresult (line 1126) | typedef CUresult CUDAAPI tcuvidMapVideoFrame(CUvideodecoder hDecoder, in...
  type CUresult (line 1133) | typedef CUresult CUDAAPI tcuvidUnmapVideoFrame(CUvideodecoder hDecoder, ...
  type CUresult (line 1142) | typedef CUresult CUDAAPI tcuvidMapVideoFrame64(CUvideodecoder hDecoder, ...
  type CUresult (line 1149) | typedef CUresult CUDAAPI tcuvidUnmapVideoFrame64(CUvideodecoder hDecoder...
  type CUresult (line 1177) | typedef CUresult CUDAAPI tcuvidCtxLockCreate(CUvideoctxlock *pLock, CUco...
  type CUresult (line 1183) | typedef CUresult CUDAAPI tcuvidCtxLockDestroy(CUvideoctxlock lck);
  type CUresult (line 1189) | typedef CUresult CUDAAPI tcuvidCtxLock(CUvideoctxlock lck, unsigned int ...
  type CUresult (line 1195) | typedef CUresult CUDAAPI tcuvidCtxUnlock(CUvideoctxlock lck, unsigned in...

FILE: decoder/LAVVideo/decoders/cuvid/dynlink_nvcuvid.h
  type CUvideotimestamp (line 54) | typedef long long CUvideotimestamp;
  type cudaVideoState (line 62) | typedef enum {
  type cudaAudioCodec (line 73) | typedef enum {
  type TIMECODESET (line 87) | typedef struct _TIMECODESET
  type NVTIMECODE (line 112) | typedef struct _TIMECODE
  type SEIMASTERINGDISPLAYINFO (line 123) | typedef struct _SEIMASTERINGDISPLAYINFO
  type SEICONTENTLIGHTLEVELINFO (line 138) | typedef struct _SEICONTENTLIGHTLEVELINFO
  type TIMECODEMPEG2 (line 150) | typedef struct _TIMECODEMPEG2
  type SEIALTERNATIVETRANSFERCHARACTERISTICS (line 165) | typedef struct _SEIALTERNATIVETRANSFERCHARACTERISTICS
  type CUSEIMESSAGE (line 175) | typedef struct _CUSEIMESSAGE
  type CUVIDEOFORMAT (line 188) | typedef struct
  type CUVIDOPERATINGPOINTINFO (line 257) | typedef struct
  type CUVIDSEIMESSAGEINFO (line 277) | typedef struct _CUVIDSEIMESSAGEINFO
  type CUVIDAV1SEQHDR (line 290) | typedef struct {
  type CUVIDEOFORMATEX (line 302) | typedef struct
  type CUAUDIOFORMAT (line 317) | typedef struct
  type CUvideopacketflags (line 333) | typedef enum {
  type CUVIDSOURCEDATAPACKET (line 350) | typedef struct _CUVIDSOURCEDATAPACKET
  type CUVIDSOURCEPARAMS (line 369) | typedef struct _CUVIDSOURCEPARAMS
  type CUvideosourceformat_flags (line 388) | typedef enum {
  type CUresult (line 401) | typedef CUresult CUDAAPI tcuvidCreateVideoSource(CUvideosource *pObj, co...
  type CUresult (line 408) | typedef CUresult CUDAAPI tcuvidCreateVideoSourceW(CUvideosource *pObj, c...
  type CUresult (line 415) | typedef CUresult CUDAAPI tcuvidDestroyVideoSource(CUvideosource obj);
  type CUresult (line 425) | typedef CUresult CUDAAPI tcuvidSetVideoSourceState(CUvideosource obj, cu...
  type cudaVideoState (line 436) | typedef cudaVideoState CUDAAPI tcuvidGetVideoSourceState(CUvideosource o...
  type CUresult (line 443) | typedef CUresult CUDAAPI tcuvidGetSourceVideoFormat(CUvideosource obj, C...
  type CUresult (line 452) | typedef CUresult CUDAAPI tcuvidGetSourceAudioFormat(CUvideosource obj, C...
  type CUVIDPARSERDISPINFO (line 460) | typedef struct _CUVIDPARSERDISPINFO
  type CUVIDPARSERPARAMS (line 496) | typedef struct _CUVIDPARSERPARAMS
  type CUresult (line 524) | typedef CUresult CUDAAPI tcuvidCreateVideoParser(CUvideoparser *pObj, CU...
  type CUresult (line 536) | typedef CUresult CUDAAPI tcuvidParseVideoData(CUvideoparser obj, CUVIDSO...
  type CUresult (line 543) | typedef CUresult CUDAAPI tcuvidDestroyVideoParser(CUvideoparser obj);

FILE: decoder/LAVVideo/decoders/d3d11/D3D11SurfaceAllocator.cpp
  function STDMETHODIMP (line 48) | STDMETHODIMP CD3D11MediaSample::QueryInterface(REFIID riid, __deref_out ...
  function STDMETHODIMP (line 75) | STDMETHODIMP CD3D11MediaSample::GetD3D11Texture(int nView, ID3D11Texture...
  function bufref_release_sample (line 97) | static void bufref_release_sample(void *opaque, uint8_t *data)
  function STDMETHODIMP (line 103) | STDMETHODIMP CD3D11MediaSample::GetAVFrameBuffer(AVFrame *pFrame)
  function HRESULT (line 152) | HRESULT CD3D11SurfaceAllocator::Alloc(void)
  function STDMETHODIMP (line 226) | STDMETHODIMP CD3D11SurfaceAllocator::ReleaseBuffer(IMediaSample *pSample)

FILE: decoder/LAVVideo/decoders/d3d11/D3D11SurfaceAllocator.h
  function STDMETHODIMP (line 45) | STDMETHODIMP GetPointer(BYTE **ppBuffer) { return E_NOTIMPL; }
  function class (line 58) | class CD3D11SurfaceAllocator : public CBaseAllocator

FILE: decoder/LAVVideo/decoders/d3d11va.cpp
  function ILAVDecoder (line 30) | ILAVDecoder *CreateDecoderD3D11()
  function HRESULT (line 35) | HRESULT VerifyD3D11Device(DWORD &dwIndex, DWORD dwDeviceId)
  function s_GetD3D11FeatureLevels (line 111) | static int s_GetD3D11FeatureLevels(int max_fl, const D3D_FEATURE_LEVEL *...
  function DXGI_FORMAT (line 125) | static DXGI_FORMAT d3d11va_map_sw_to_hw_format(enum AVPixelFormat pix_fmt)
  function LAVPixelFormat (line 153) | static LAVPixelFormat d3d11va_map_hw_to_lav_format(DXGI_FORMAT dxgiFormat)
  function STDMETHODIMP (line 187) | STDMETHODIMP CDecD3D11::DestroyDecoder(bool bFull)
  function STDMETHODIMP (line 231) | STDMETHODIMP CDecD3D11::Init()
  function STDMETHODIMP (line 268) | STDMETHODIMP CDecD3D11::Check()
  function STDMETHODIMP (line 283) | STDMETHODIMP CDecD3D11::InitAllocator(IMemAllocator **ppAlloc)
  function STDMETHODIMP (line 310) | STDMETHODIMP CDecD3D11::CreateD3D11Device(UINT nDeviceIndex, ID3D11Devic...
  function STDMETHODIMP (line 414) | STDMETHODIMP CDecD3D11::PostConnect(IPin *pPin)
  function STDMETHODIMP (line 574) | STDMETHODIMP CDecD3D11::BreakConnect()
  function STDMETHODIMP (line 589) | STDMETHODIMP CDecD3D11::InitDecoder(AVCodecID codec, const CMediaType *p...
  function HRESULT (line 625) | HRESULT CDecD3D11::AdditionaDecoderInit()
  function STDMETHODIMP (line 650) | STDMETHODIMP CDecD3D11::FillHWContext(AVD3D11VAContext *ctx)
  function STDMETHODIMP (line 714) | STDMETHODIMP CDecD3D11::FlushDisplayQueue(BOOL bDeliver)
  function STDMETHODIMP (line 736) | STDMETHODIMP CDecD3D11::Flush()
  function STDMETHODIMP (line 746) | STDMETHODIMP CDecD3D11::EndOfStream()
  function HRESULT (line 756) | HRESULT CDecD3D11::PostDecode()
  type AVPixelFormat (line 766) | enum AVPixelFormat
  type AVCodecContext (line 766) | struct AVCodecContext
  type AVPixelFormat (line 766) | enum AVPixelFormat
  type AVPixelFormat (line 769) | enum AVPixelFormat
  type AVCodecContext (line 794) | struct AVCodecContext
  function STDMETHODIMP (line 847) | STDMETHODIMP CDecD3D11::ReInitD3D11Decoder(AVCodecContext *c)
  function STDMETHODIMP (line 921) | STDMETHODIMP CDecD3D11::FindVideoServiceConversion(AVCodecID codec, int ...
  function STDMETHODIMP (line 997) | STDMETHODIMP CDecD3D11::FindDecoderConfiguration(const D3D11_VIDEO_DECOD...
  function STDMETHODIMP (line 1050) | STDMETHODIMP CDecD3D11::CreateD3D11Decoder()
  function AVPixelFormat (line 1246) | static AVPixelFormat s_GetAVD3D11PixelFormat(DXGI_FORMAT format)
  function STDMETHODIMP (line 1267) | STDMETHODIMP CDecD3D11::AllocateFramesContext(int width, int height, DXG...
  function HRESULT (line 1304) | HRESULT CDecD3D11::HandleDXVA2Frame(LAVFrame *pFrame)
  function HRESULT (line 1338) | HRESULT CDecD3D11::DeliverD3D11Frame(LAVFrame *pFrame)
  function HRESULT (line 1361) | HRESULT CDecD3D11::DeliverD3D11Readback(LAVFrame *pFrame)
  type D3D11DirectPrivate (line 1392) | struct D3D11DirectPrivate
  function d3d11_direct_lock (line 1398) | static bool d3d11_direct_lock(LAVFrame *pFrame, LAVDirectBuffer *pBuffer)
  function d3d11_direct_unlock (line 1437) | static void d3d11_direct_unlock(LAVFrame *pFrame)
  function d3d11_direct_free (line 1447) | static void d3d11_direct_free(LAVFrame *pFrame)
  function HRESULT (line 1455) | HRESULT CDecD3D11::DeliverD3D11ReadbackDirect(LAVFrame *pFrame)
  function STDMETHODIMP (line 1517) | STDMETHODIMP CDecD3D11::GetPixelFormat(LAVPixelFormat *pPix, int *pBpp, ...
  function STDMETHODIMP (line 1572) | STDMETHODIMP CDecD3D11::GetHWAccelDeviceInfo(DWORD dwIndex, BSTR *pstrDe...
  function STDMETHODIMP (line 1607) | STDMETHODIMP CDecD3D11::GetHWAccelActiveDevice(BSTR *pstrDeviceName)

FILE: decoder/LAVVideo/decoders/d3d11va.h
  function class (line 41) | class CDecD3D11 : public CDecAvcodec

FILE: decoder/LAVVideo/decoders/dxva2/DXVA2SurfaceAllocator.cpp
  function STDMETHODIMP (line 43) | STDMETHODIMP CDXVA2Sample::QueryInterface(REFIID riid, __deref_out void ...
  function STDMETHODIMP (line 75) | STDMETHODIMP CDXVA2Sample::GetService(REFGUID guidService, REFIID riid, ...
  function STDMETHODIMP (line 93) | STDMETHODIMP CDXVA2Sample::GetPointer(BYTE **ppBuffer)
  function STDMETHODIMP (line 126) | STDMETHODIMP CDXVA2SurfaceAllocator::NonDelegatingQueryInterface(REFIID ...
  function HRESULT (line 135) | HRESULT CDXVA2SurfaceAllocator::Alloc()

FILE: decoder/LAVVideo/decoders/dxva2/DXVA2SurfaceAllocator.h
  function DecommitInProgress (line 85) | STDMETHODIMP_(BOOL) DecommitInProgress()
  function IsCommited (line 90) | STDMETHODIMP_(BOOL) IsCommited()
  function DecoderDestruct (line 96) | STDMETHODIMP_(void) DecoderDestruct() { m_pDec = nullptr; }

FILE: decoder/LAVVideo/decoders/dxva2/dxva_common.cpp
  function DWORD (line 31) | DWORD dxva_align_dimensions(AVCodecID codec, DWORD dim)
  function dxva_mode_t (line 159) | const dxva_mode_t *get_dxva_mode_from_guid(const GUID *guid)
  function check_dxva_mode_compatibility (line 168) | int check_dxva_mode_compatibility(const dxva_mode_t *mode, int codec, in...
  function check_dxva_codec_profile (line 193) | int check_dxva_codec_profile(const AVCodecContext *ctx, int hwpixfmt)

FILE: decoder/LAVVideo/decoders/dxva2/dxva_common.h
  type dxva_mode_t (line 30) | typedef struct

FILE: decoder/LAVVideo/decoders/dxva2dec.cpp
  function ILAVDecoder (line 47) | ILAVDecoder *CreateDecoderDXVA2()
  function ILAVDecoder (line 52) | ILAVDecoder *CreateDecoderDXVA2Native()
  function HRESULT (line 59) | HRESULT VerifyD3D9Device(DWORD &dwIndex, DWORD dwDeviceId)
  function IsAMDUVD (line 118) | static int IsAMDUVD(DWORD dwDeviceId)
  function D3DFORMAT (line 128) | static D3DFORMAT get_dxva_surface_format(AVCodecContext *ctx)
  function STDMETHODIMP (line 161) | STDMETHODIMP CDecDXVA2::DestroyDecoder(bool bFull, bool bNoAVCodec)
  function STDMETHODIMP (line 190) | STDMETHODIMP CDecDXVA2::FreeD3DResources()
  function STDMETHODIMP (line 215) | STDMETHODIMP CDecDXVA2::InitAllocator(IMemAllocator **ppAlloc)
  function STDMETHODIMP (line 235) | STDMETHODIMP CDecDXVA2::PostConnect(IPin *pPin)
  function HRESULT (line 302) | HRESULT CDecDXVA2::DXVA2NotifyEVR()
  function STDMETHODIMP (line 347) | STDMETHODIMP CDecDXVA2::LoadDXVA2Functions()
  function HRESULT (line 383) | HRESULT CDecDXVA2::CreateD3DDeviceManager(IDirect3DDevice9 *pDevice, UIN...
  function HRESULT (line 410) | HRESULT CDecDXVA2::CreateDXVAVideoService(IDirect3DDeviceManager9 *pMana...
  function HRESULT (line 437) | HRESULT CDecDXVA2::FindVideoServiceConversion(AVCodecID codec, int profi...
  function HRESULT (line 525) | HRESULT CDecDXVA2::InitD3DAdapterIdentifier(UINT lAdapter)
  function HRESULT (line 560) | HRESULT CDecDXVA2::InitD3D(UINT lAdapter)
  function HRESULT (line 611) | HRESULT CDecDXVA2::InitD3DEx(UINT lAdapter)
  function HRESULT (line 675) | HRESULT CDecDXVA2::RetrieveVendorId(IDirect3DDeviceManager9 *pDevManager)
  function HRESULT (line 733) | HRESULT CDecDXVA2::CheckHWCompatConditions(GUID decoderGuid)
  function HRESULT (line 779) | HRESULT CDecDXVA2::SetD3DDeviceManager(IDirect3DDeviceManager9 *pDevMana...
  function STDMETHODIMP (line 870) | STDMETHODIMP CDecDXVA2::Init()
  function STDMETHODIMP (line 934) | STDMETHODIMP CDecDXVA2::InitDecoder(AVCodecID codec, const CMediaType *p...
  function HRESULT (line 1069) | HRESULT CDecDXVA2::FindDecoderConfiguration(const GUID &input, const DXV...
  function HRESULT (line 1121) | HRESULT CDecDXVA2::CreateDXVA2Decoder(int nSurfaces, IDirect3DSurface9 *...
  function HRESULT (line 1228) | HRESULT CDecDXVA2::FillHWContext(dxva_context *ctx)
  type AVPixelFormat (line 1245) | enum AVPixelFormat
  type AVCodecContext (line 1245) | struct AVCodecContext
  type AVPixelFormat (line 1245) | enum AVPixelFormat
  type AVPixelFormat (line 1248) | enum AVPixelFormat
  type SurfaceWrapper (line 1273) | struct SurfaceWrapper
  function HRESULT (line 1301) | HRESULT CDecDXVA2::ReInitDXVA2Decoder(AVCodecContext *c)
  type AVCodecContext (line 1374) | struct AVCodecContext
  function HRESULT (line 1479) | HRESULT CDecDXVA2::AdditionaDecoderInit()
  function HRESULT (line 1505) | HRESULT CDecDXVA2::PostDecode()
  function STDMETHODIMP (line 1515) | STDMETHODIMP CDecDXVA2::FlushFromAllocator()
  function STDMETHODIMP (line 1524) | STDMETHODIMP CDecDXVA2::Flush()
  function STDMETHODIMP (line 1563) | STDMETHODIMP CDecDXVA2::FlushDisplayQueue(BOOL bDeliver)
  function STDMETHODIMP (line 1585) | STDMETHODIMP CDecDXVA2::EndOfStream()
  function HRESULT (line 1595) | HRESULT CDecDXVA2::HandleDXVA2Frame(LAVFrame *pFrame)
  function HRESULT (line 1626) | HRESULT CDecDXVA2::DeliverDXVA2Frame(LAVFrame *pFrame)
  function STDMETHODIMP (line 1658) | STDMETHODIMP CDecDXVA2::GetPixelFormat(LAVPixelFormat *pPix, int *pBpp, ...
  function direct_lock (line 1726) | static bool direct_lock(LAVFrame *pFrame, LAVDirectBuffer *pBuffer)
  function direct_unlock (line 1757) | static void direct_unlock(LAVFrame *pFrame)
  function STDMETHODIMP (line 1787) | STDMETHODIMP CDecDXVA2::GetHWAccelDeviceInfo(DWORD dwIndex, BSTR *pstrDe...
  function STDMETHODIMP (line 1816) | STDMETHODIMP CDecDXVA2::GetHWAccelActiveDevice(BSTR *pstrDeviceName)

FILE: decoder/LAVVideo/decoders/dxva2dec.h
  type HRESULT (line 28) | typedef HRESULT WINAPI pDirect3DCreate9Ex(UINT, IDirect3D9Ex **);
  type HRESULT (line 29) | typedef HRESULT WINAPI pCreateDeviceManager9(UINT *pResetToken, IDirect3...
  type d3d_surface_t (line 31) | typedef struct
  function class (line 41) | class CDecDXVA2 : public CDecAvcodec

FILE: decoder/LAVVideo/decoders/msdk_mvc.cpp
  function ILAVDecoder (line 30) | ILAVDecoder *CreateDecoderMSDKMVC()
  class CBitstreamBuffer (line 39) | class CBitstreamBuffer
    method CBitstreamBuffer (line 42) | CBitstreamBuffer(GrowableArray<BYTE> *arrStorage)
    method Allocate (line 62) | void Allocate(size_t size) { m_pStorage->Allocate((DWORD)size); }
    method Append (line 64) | void Append(const BYTE *buffer, size_t size) { m_pStorage->Append(buff...
    method Consume (line 66) | void Consume(size_t count) { m_nConsumed += min(count, GetBufferSize()...
    method Clear (line 68) | void Clear() { m_nConsumed += GetBufferSize(); }
    method BYTE (line 70) | BYTE *GetBuffer() { return m_pStorage->Ptr() + m_nConsumed; }
    method GetBufferSize (line 72) | size_t GetBufferSize() { return m_pStorage->GetCount() - m_nConsumed; }
  function STDMETHODIMP (line 92) | STDMETHODIMP CDecMSDKMVC::Init()
  function STDMETHODIMP (line 178) | STDMETHODIMP CDecMSDKMVC::InitDecoder(AVCodecID codec, const CMediaType ...
  function STDMETHODIMP (line 233) | STDMETHODIMP CDecMSDKMVC::AllocateMVCExtBuffers()
  function MVCBuffer (line 267) | MVCBuffer *CDecMSDKMVC::GetBuffer()
  function MVCBuffer (line 305) | MVCBuffer *CDecMSDKMVC::FindBuffer(mfxFrameSurface1 *pSurface)
  function STDMETHODIMP (line 338) | STDMETHODIMP CDecMSDKMVC::Decode(const BYTE *buffer, int buflen, REFEREN...
  function HRESULT (line 495) | HRESULT CDecMSDKMVC::ParseSEI(const BYTE *buffer, size_t size, mfxU64 ti...
  function HRESULT (line 536) | HRESULT CDecMSDKMVC::ParseMVCNestedSEI(const BYTE *buffer, size_t size, ...
  function HRESULT (line 574) | HRESULT CDecMSDKMVC::ParseUnregUserDataSEI(const BYTE *buffer, size_t si...
  function HRESULT (line 596) | HRESULT CDecMSDKMVC::ParseOffsetMetadata(const BYTE *buffer, size_t size...
  function BOOL (line 659) | BOOL CDecMSDKMVC::RemoveFrameFromGOP(MVCGOP *pGOP, mfxU64 timestamp)
  function HRESULT (line 727) | HRESULT CDecMSDKMVC::HandleOutput(MVCBuffer *pOutputBuffer)
  function HRESULT (line 752) | HRESULT CDecMSDKMVC::DeliverOutput(MVCBuffer *pBaseView, MVCBuffer *pExt...
  function STDMETHODIMP (line 848) | STDMETHODIMP CDecMSDKMVC::Flush()
  function STDMETHODIMP (line 871) | STDMETHODIMP CDecMSDKMVC::EndOfStream()

FILE: decoder/LAVVideo/decoders/msdk_mvc.h
  type MVCBuffer (line 38) | typedef struct _MVCBuffer
  type MVCGOP (line 45) | typedef struct _MVCGOP
  function class (line 51) | class CDecMSDKMVC : public CDecBase

FILE: decoder/LAVVideo/decoders/mvc/include/mfxcommon.h
  type mfxExtBuffer (line 46) | typedef struct {
  type mfxI32 (line 52) | typedef mfxI32 mfxIMPL;
  type mfxVersion (line 76) | typedef union {
  type mfxPriority (line 85) | typedef enum
  type mfxEncryptedData (line 93) | typedef struct _mfxEncryptedData mfxEncryptedData;
  type mfxBitstream (line 94) | typedef struct {
  type _mfxSyncPoint (line 116) | struct _mfxSyncPoint
  type mfxInitParam (line 125) | typedef struct {
  type mfxExtThreadsParam (line 144) | typedef struct {
  type mfxPlatform (line 171) | typedef struct {

FILE: decoder/LAVVideo/decoders/mvc/include/mfxdefs.h
  type mfxU8 (line 66) | typedef unsigned char       mfxU8;
  type mfxI8 (line 67) | typedef char                mfxI8;
  type mfxI16 (line 68) | typedef short               mfxI16;
  type mfxU16 (line 69) | typedef unsigned short      mfxU16;
  type mfxU32 (line 70) | typedef unsigned int        mfxU32;
  type mfxI32 (line 71) | typedef int                 mfxI32;
  type mfxUL32 (line 73) | typedef unsigned long       mfxUL32;
  type mfxL32 (line 74) | typedef long                mfxL32;
  type mfxUL32 (line 76) | typedef unsigned int        mfxUL32;
  type mfxL32 (line 77) | typedef int                 mfxL32;
  type mfxF32 (line 79) | typedef float               mfxF32;
  type mfxF64 (line 80) | typedef double              mfxF64;
  type __UINT64 (line 81) | typedef __UINT64            mfxU64;
  type __INT64 (line 82) | typedef __INT64             mfxI64;
  type mfxHDL (line 84) | typedef mfxHDL              mfxMemId;
  type mfxChar (line 86) | typedef char                mfxChar;
  type mfxI16Pair (line 88) | typedef struct {
  type mfxHDLPair (line 93) | typedef struct {
  type mfxStatus (line 102) | typedef enum

FILE: decoder/LAVVideo/decoders/mvc/include/mfxmvc.h
  type mfxMVCViewDependency (line 52) | typedef struct  {
  type mfxMVCOperationPoint (line 66) | typedef struct {
  type mfxExtMVCSeqDesc (line 75) | typedef struct  {
  type mfxExtMVCTargetViews (line 95) | typedef struct {

FILE: decoder/LAVVideo/decoders/mvc/include/mfxsession.h
  type _mfxSession (line 40) | struct _mfxSession

FILE: decoder/LAVVideo/decoders/mvc/include/mfxstructures.h
  type mfxFrameId (line 44) | typedef struct {
  type mfxFrameInfo (line 60) | typedef struct {
  type mfxY410 (line 178) | typedef struct
  type mfxA2RGB10 (line 188) | typedef struct
  type mfxFrameData (line 199) | typedef struct {
  type mfxFrameSurface1 (line 251) | typedef struct {
  type mfxInfoMFX (line 263) | typedef struct {
  type mfxInfoVPP (line 333) | typedef struct {
  type mfxVideoParam (line 339) | typedef struct {
  type mfxExtCodingOption (line 526) | typedef struct {
  type mfxExtCodingOption2 (line 594) | typedef struct {
  type mfxExtCodingOption3 (line 663) | typedef struct {
  type mfxExtVPPDoNotUse (line 828) | typedef struct {
  type mfxExtVPPDenoise (line 834) | typedef struct {
  type mfxExtVPPDetail (line 839) | typedef struct {
  type mfxExtVPPProcAmp (line 844) | typedef struct {
  type mfxEncodeStat (line 853) | typedef struct {
  type mfxDecodeStat (line 860) | typedef struct {
  type mfxVPPStat (line 868) | typedef struct {
  type mfxExtVppAuxData (line 874) | typedef struct {
  type mfxPayload (line 896) | typedef struct {
  type mfxEncodeCtrl (line 905) | typedef struct {
  type mfxFrameAllocRequest (line 955) | typedef struct {
  type mfxFrameAllocResponse (line 968) | typedef struct {
  type mfxHandleType (line 1010) | typedef enum {
  type mfxSkipMode (line 1019) | typedef enum {
  type mfxExtCodingOptionSPSPPS (line 1025) | typedef struct {
  type mfxExtCodingOptionVPS (line 1035) | typedef struct {
  type mfxExtVideoSignalInfo (line 1048) | typedef struct {
  type mfxExtVPPDoUse (line 1058) | typedef struct {
  type mfxExtOpaqueSurfaceAlloc (line 1064) | typedef struct {
  type mfxExtAVCRefListCtrl (line 1075) | typedef struct {
  type mfxExtVPPFrameRateConversion (line 1098) | typedef struct {
  type mfxExtVPPImageStab (line 1110) | typedef struct {
  type mfxExtMasteringDisplayColourVolume (line 1122) | typedef struct {
  type mfxExtContentLightLevelInfo (line 1136) | typedef struct {
  type mfxExtPictureTimingSEI (line 1146) | typedef struct {
  type mfxExtAvcTemporalLayers (line 1169) | typedef struct {
  type mfxExtEncoderCapability (line 1182) | typedef struct {
  type mfxExtEncoderResetOption (line 1189) | typedef struct {
  type mfxExtAVCEncodedFrameInfo (line 1201) | typedef struct {
  type mfxVPPCompInputStream (line 1221) | typedef struct mfxVPPCompInputStream {
  type mfxExtVPPComposite (line 1240) | typedef struct {
  type mfxExtVPPVideoSignalInfo (line 1277) | typedef struct {
  type mfxExtEncoderROI (line 1303) | typedef struct {
  type mfxExtVPPDeinterlacing (line 1349) | typedef struct {
  type mfxExtAVCRefLists (line 1357) | typedef struct {
  type mfxExtVPPFieldProcessing (line 1385) | typedef struct {
  type mfxExtDecVideoProcessing (line 1394) | typedef struct {
  type mfxExtChromaLocInfo (line 1423) | typedef struct {
  type mfxExtMBQP (line 1438) | typedef struct {
  type mfxExtMBForceIntra (line 1452) | typedef struct {
  type mfxExtHEVCTiles (line 1463) | typedef struct {
  type mfxExtMBDisableSkipMap (line 1471) | typedef struct {
  type mfxExtHEVCParam (line 1508) | typedef struct {
  type mfxExtDecodeErrorReport (line 1529) | typedef struct {
  type mfxExtDecodedFrameInfo (line 1537) | typedef struct {
  type mfxExtTimeCode (line 1544) | typedef struct {
  type mfxExtHEVCRegion (line 1566) | typedef struct {
  type mfxExtPredWeightTable (line 1575) | typedef struct {
  type mfxExtAVCRoundingOffset (line 1586) | typedef struct {
  type mfxExtDirtyRect (line 1598) | typedef struct {
  type mfxExtMoveRect (line 1614) | typedef struct {
  type mfxExtVPPRotation (line 1641) | typedef struct {
  type mfxExtEncodedSlicesInfo (line 1648) | typedef struct {
  type mfxExtVPPScaling (line 1670) | typedef struct {
  type mfxExtAVCRefListCtrl (line 1678) | typedef mfxExtAVCRefListCtrl mfxExtHEVCRefListCtrl;
  type mfxExtAVCRefLists (line 1679) | typedef mfxExtAVCRefLists mfxExtHEVCRefLists;
  type mfxExtAvcTemporalLayers (line 1680) | typedef mfxExtAvcTemporalLayers mfxExtHEVCTemporalLayers;
  type mfxExtVPPMirroring (line 1690) | typedef struct {
  type mfxExtMVOverPicBoundaries (line 1697) | typedef struct {
  type mfxExtVPPColorFill (line 1707) | typedef struct {
  type mfxExtColorConversion (line 1725) | typedef struct {
  type mfxVP9SegmentParam (line 1758) | typedef struct {
  type mfxExtVP9Segmentation (line 1766) | typedef struct {
  type mfxVP9TemporalLayer (line 1779) | typedef struct {
  type mfxExtVP9TemporalLayers (line 1785) | typedef struct {
  type mfxExtVP9Param (line 1791) | typedef struct {
  type mfxExtMultiFrameParam (line 1816) | typedef struct {
  type mfxExtMultiFrameControl (line 1826) | typedef struct {
  type mfxEncodedUnitInfo (line 1835) | typedef struct {
  type mfxExtEncodedUnitsInfo (line 1843) | typedef struct {
  type mfxExtVppMctf (line 1859) | typedef struct {

FILE: decoder/LAVVideo/decoders/mvc/include/mfxvideo.h
  type mfxBufferAllocator (line 41) | typedef struct {
  type mfxFrameAllocator (line 50) | typedef struct {

FILE: decoder/LAVVideo/decoders/pixfmt.cpp
  function LAVPixFmtDesc (line 43) | LAVPixFmtDesc getPixelFormatDesc(LAVPixelFormat pixFmt)
  function AVPixelFormat (line 61) | AVPixelFormat getFFPixelFormatFromLAV(LAVPixelFormat pixFmt, int bpp)
  function free_buffers (line 105) | static void free_buffers(struct LAVFrame *pFrame)
  function HRESULT (line 120) | HRESULT AllocLAVFrameBuffers(LAVFrame *pFrame, ptrdiff_t stride)
  function HRESULT (line 170) | HRESULT FreeLAVFrameBuffers(LAVFrame *pFrame)
  function HRESULT (line 194) | HRESULT CopyLAVFrame(LAVFrame *pSrc, LAVFrame **ppDst)
  function HRESULT (line 251) | HRESULT CopyLAVFrameInPlace(LAVFrame *pFrame)
  function BYTE (line 261) | BYTE *AddLAVFrameSideData(LAVFrame *pFrame, GUID guidType, size_t size)
  function BYTE (line 282) | BYTE *GetLAVFrameSideData(LAVFrame *pFrame, GUID guidType, size_t *pSize)
  function ValidateLAVFrameBuffers (line 301) | bool ValidateLAVFrameBuffers(LAVFrame* pFrame)

FILE: decoder/LAVVideo/decoders/quicksync.cpp
  function ILAVDecoder (line 43) | ILAVDecoder *CreateDecoderQuickSync()
  class CQSMediaSample (line 74) | class CQSMediaSample : public IMediaSample
    method CQSMediaSample (line 77) | CQSMediaSample(BYTE *pBuffer, long len)
    method STDMETHODIMP (line 85) | STDMETHODIMP QueryInterface(REFIID riid, void **ppvObject)
    method STDMETHODIMP_ (line 103) | STDMETHODIMP_(ULONG) AddRef()
    method STDMETHODIMP_ (line 108) | STDMETHODIMP_(ULONG) Release()
    method STDMETHODIMP (line 121) | STDMETHODIMP GetPointer(BYTE **ppBuffer)
    method STDMETHODIMP_ (line 127) | STDMETHODIMP_(long) GetSize(void) { return m_lLen; }
    method STDMETHODIMP (line 128) | STDMETHODIMP GetTime(REFERENCE_TIME *pTimeStart, REFERENCE_TIME *pTime...
    method STDMETHODIMP (line 147) | STDMETHODIMP SetTime(REFERENCE_TIME *pTimeStart, REFERENCE_TIME *pTime...
    method STDMETHODIMP (line 164) | STDMETHODIMP IsSyncPoint(void) { return m_bSyncPoint ? S_OK : S_FALSE; }
    method STDMETHODIMP (line 165) | STDMETHODIMP SetSyncPoint(BOOL bIsSyncPoint)
    method STDMETHODIMP (line 170) | STDMETHODIMP IsPreroll(void) { return E_NOTIMPL; }
    method STDMETHODIMP (line 171) | STDMETHODIMP SetPreroll(BOOL bIsPreroll) { return E_NOTIMPL; }
    method STDMETHODIMP_ (line 172) | STDMETHODIMP_(long) GetActualDataLength(void) { return m_lActualLen; }
    method STDMETHODIMP (line 173) | STDMETHODIMP SetActualDataLength(long length)
    method STDMETHODIMP (line 178) | STDMETHODIMP GetMediaType(AM_MEDIA_TYPE **ppMediaType) { return S_FALS...
    method STDMETHODIMP (line 179) | STDMETHODIMP SetMediaType(AM_MEDIA_TYPE *pMediaType) { return E_NOTIMP...
    method STDMETHODIMP (line 180) | STDMETHODIMP IsDiscontinuity(void) { return m_bDiscontinuity ? S_OK : ...
    method STDMETHODIMP (line 181) | STDMETHODIMP SetDiscontinuity(BOOL bDiscontinuity)
    method STDMETHODIMP (line 186) | STDMETHODIMP GetMediaTime(LONGLONG *pTimeStart, LONGLONG *pTimeEnd) { ...
    method STDMETHODIMP (line 187) | STDMETHODIMP SetMediaTime(LONGLONG *pTimeStart, LONGLONG *pTimeEnd) { ...
  class CIDirect3DDeviceManager9Proxy (line 202) | class CIDirect3DDeviceManager9Proxy : public IDirect3DDeviceManager9
    method CIDirect3DDeviceManager9Proxy (line 205) | CIDirect3DDeviceManager9Proxy(IPin *pPin)
    method QueryInterface (line 219) | QueryInterface(REFIID riid, void **ppvObject)
    method AddRef (line 224) | AddRef(void)
    method Release (line 229) | Release(void)
    method ResetDevice (line 242) | ResetDevice(IDirect3DDevice9 *pDevice, UINT resetToken)
    method OpenDeviceHandle (line 247) | OpenDeviceHandle(HANDLE *phDevice)
    method CloseDeviceHandle (line 252) | CloseDeviceHandle(HANDLE hDevice)
    method TestDevice (line 257) | TestDevice(HANDLE hDevice)
    method LockDevice (line 262) | LockDevice(HANDLE hDevice, IDirect3DDevice9 **ppDevice, BOOL fBlock)
    method UnlockDevice (line 267) | UnlockDevice(HANDLE hDevice, BOOL fSaveState)
    method GetVideoService (line 272) | GetVideoService(HANDLE hDevice, REFIID riid, void **ppService)
    method CreateDeviceManager (line 279) | CreateDeviceManager()
  function STDMETHODIMP (line 329) | STDMETHODIMP CDecQuickSync::DestroyDecoder(bool bFull)
  function STDMETHODIMP (line 347) | STDMETHODIMP CDecQuickSync::Init()
  function STDMETHODIMP (line 396) | STDMETHODIMP CDecQuickSync::PostConnect(IPin *pPin)
  function STDMETHODIMP (line 413) | STDMETHODIMP CDecQuickSync::Check()
  function STDMETHODIMP (line 428) | STDMETHODIMP CDecQuickSync::CheckH264Sequence(const BYTE *buffer, size_t...
  function STDMETHODIMP (line 462) | STDMETHODIMP CDecQuickSync::InitDecoder(AVCodecID codec, const CMediaTyp...
  function STDMETHODIMP (line 677) | STDMETHODIMP CDecQuickSync::Decode(const BYTE *buffer, int buflen, REFER...
  function HRESULT (line 753) | HRESULT CDecQuickSync::QS_DeliverSurfaceCallback(void *obj, QsFrameData ...
  function STDMETHODIMP (line 786) | STDMETHODIMP CDecQuickSync::HandleFrame(QsFrameData *data)
  function STDMETHODIMP (line 830) | STDMETHODIMP CDecQuickSync::Flush()
  function STDMETHODIMP (line 844) | STDMETHODIMP CDecQuickSync::EndOfStream()
  function STDMETHODIMP (line 851) | STDMETHODIMP CDecQuickSync::GetPixelFormat(LAVPixelFormat *pPix, int *pB...

FILE: decoder/LAVVideo/decoders/quicksync.h
  type IQuickSyncDecoder (line 25) | typedef IQuickSyncDecoder *__stdcall pcreateQuickSync();
  type DWORD (line 27) | typedef DWORD __stdcall pcheck();
  function class (line 31) | class CDecQuickSync : public CDecBase

FILE: decoder/LAVVideo/decoders/wmv9mft.cpp
  function ILAVDecoder (line 38) | ILAVDecoder *CreateDecoderWMV9MFT()
  function STDMETHODIMP (line 58) | STDMETHODIMP CDecWMV9MFT::DestroyDecoder(bool bFull)
  function STDMETHODIMP (line 90) | STDMETHODIMP CDecWMV9MFT::Init()
  function GUID (line 134) | static GUID VerifySubtype(AVCodecID codec, GUID subtype)
  function STDMETHODIMP (line 151) | STDMETHODIMP CDecWMV9MFT::InitDecoder(AVCodecID codec, const CMediaType ...
  function STDMETHODIMP (line 255) | STDMETHODIMP CDecWMV9MFT::SelectOutputType()
  function IMFMediaBuffer (line 286) | IMFMediaBuffer *CDecWMV9MFT::CreateMediaBuffer(const BYTE *pData, DWORD ...
  function STDMETHODIMP (line 315) | STDMETHODIMP CDecWMV9MFT::Decode(const BYTE *buffer, int buflen, REFEREN...
  function memcpy_plane (line 413) | static inline void memcpy_plane(BYTE *dst, const BYTE *src, ptrdiff_t wi...
  function IMFMediaBuffer (line 423) | IMFMediaBuffer *CDecWMV9MFT::GetBuffer(DWORD dwRequiredSize)
  function STDMETHODIMP (line 492) | STDMETHODIMP CDecWMV9MFT::ProcessOutput()
  function STDMETHODIMP (line 711) | STDMETHODIMP CDecWMV9MFT::Flush()
  function STDMETHODIMP (line 724) | STDMETHODIMP CDecWMV9MFT::EndOfStream()
  function STDMETHODIMP (line 736) | STDMETHODIMP CDecWMV9MFT::GetPixelFormat(LAVPixelFormat *pPix, int *pBpp...

FILE: decoder/LAVVideo/decoders/wmv9mft.h
  type HRESULT (line 31) | typedef HRESULT STDAPICALLTYPE tMFStartup(ULONG Version, DWORD dwFlags);
  type HRESULT (line 32) | typedef HRESULT STDAPICALLTYPE
  type HRESULT (line 34) | typedef HRESULT STDAPICALLTYPE
  type HRESULT (line 35) | typedef HRESULT STDAPICALLTYPE
  type HRESULT (line 36) | typedef HRESULT STDAPICALLTYPE tMFCreateAlignedMemoryBuffer(DWORD cbMaxL...
  type HRESULT (line 39) | typedef HRESULT STDAPICALLTYPE tMFAverageTimePerFrameToFrameRate(UINT64 ...
  function GetDecoderName (line 71) | STDMETHODIMP_(const WCHAR *) GetDecoderName() { return L"wmv9 mft"; }
  function STDMETHODIMP (line 72) | STDMETHODIMP HasThreadSafeBuffers() { return S_OK; }

FILE: decoder/LAVVideo/dllmain.cpp
  function STDAPI (line 67) | STDAPI DllRegisterServer()
  function STDAPI (line 73) | STDAPI DllUnregisterServer()
  function BOOL (line 83) | BOOL WINAPI DllMain(HANDLE hDllHandle, DWORD dwReason, LPVOID lpReserved)
  function OpenConfiguration (line 88) | void CALLBACK OpenConfiguration(HWND hwnd, HINSTANCE hinst, LPSTR lpszCm...

FILE: decoder/LAVVideo/parsers/AnnexBConverter.cpp
  function HRESULT (line 33) | static HRESULT alloc_and_copy(uint8_t **poutbuf, int *poutbuf_size, cons...
  function HRESULT (line 58) | HRESULT CAnnexBConverter::Convert(BYTE **poutbuf, int *poutbuf_size, con...
  function HRESULT (line 103) | HRESULT CAnnexBConverter::ConvertHEVCExtradata(BYTE **poutbuf, int *pout...

FILE: decoder/LAVVideo/parsers/AnnexBConverter.h
  function class (line 22) | class CAnnexBConverter

FILE: decoder/LAVVideo/parsers/H264SequenceParser.cpp
  function HRESULT (line 36) | HRESULT CH264SequenceParser::ParseNALs(const BYTE *buffer, size_t buflen...
  function SPSDecodeScalingList (line 55) | static void SPSDecodeScalingList(CByteParser &parser, int size)
  function HRESULT (line 74) | HRESULT CH264SequenceParser::ParseSPS(const BYTE *buffer, size_t buflen)

FILE: decoder/LAVVideo/parsers/H264SequenceParser.h
  function class (line 22) | class CH264SequenceParser

FILE: decoder/LAVVideo/parsers/HEVCSequenceParser.cpp
  function HRESULT (line 39) | HRESULT CHEVCSequenceParser::ParseNALs(const BYTE *buffer, size_t buflen...
  function HRESULT (line 59) | HRESULT CHEVCSequenceParser::ParseSPS(const BYTE *buffer, size_t buflen)

FILE: decoder/LAVVideo/parsers/HEVCSequenceParser.h
  function class (line 26) | class CHEVCSequenceParser

FILE: decoder/LAVVideo/parsers/MPEG2HeaderParser.h
  type GetBitContext (line 22) | struct GetBitContext
  function class (line 24) | class CMPEG2HeaderParser

FILE: decoder/LAVVideo/parsers/VC1HeaderParser.cpp
  type VC1Code (line 37) | enum VC1Code
  type Profile (line 51) | enum Profile
  type FrameCodingMode (line 60) | enum FrameCodingMode
  function vc1_unescape_buffer (line 87) | static inline int vc1_unescape_buffer(const uint8_t *src, int size, uint...
  function AVPictureType (line 244) | AVPictureType CVC1HeaderParser::ParseVC1PictureType(const uint8_t *buf, ...

FILE: decoder/LAVVideo/parsers/VC1HeaderParser.h
  type GetBitContext (line 22) | struct GetBitContext
  function class (line 24) | class CVC1HeaderParser

FILE: decoder/LAVVideo/pixconv/convert_direct.cpp
  function DECLARE_CONV_FUNC_IMPL (line 28) | DECLARE_CONV_FUNC_IMPL(plane_copy_direct_nv12_sse4)
  function DECLARE_CONV_FUNC_IMPL (line 99) | DECLARE_CONV_FUNC_IMPL(plane_copy_direct_sse4)
  function DECLARE_CONV_FUNC_IMPL (line 148) | DECLARE_CONV_FUNC_IMPL(convert_nv12_yv12_direct_sse4)
  function DECLARE_CONV_FUNC_IMPL (line 247) | DECLARE_CONV_FUNC_IMPL(convert_p010_nv12_direct_sse4)
  function DECLARE_CONV_FUNC_IMPL (line 386) | DECLARE_CONV_FUNC_IMPL(convert_y210_p210_direct_sse4)
  function DECLARE_CONV_FUNC_IMPL (line 439) | DECLARE_CONV_FUNC_IMPL(convert_yuy2_yv16_direct_sse4)

FILE: decoder/LAVVideo/pixconv/convert_generic.cpp
  function DECLARE_CONV_FUNC_IMPL (line 30) | DECLARE_CONV_FUNC_IMPL(convert_generic)
  function SwsContext (line 86) | inline SwsContext *CLAVPixFmtConverter::GetSWSContext(int width, int hei...
  function HRESULT (line 128) | HRESULT CLAVPixFmtConverter::swscale_scale(enum AVPixelFormat srcPix, en...
  function HRESULT (line 150) | HRESULT CLAVPixFmtConverter::ConvertTo422Packed(const uint8_t *const src...
  function HRESULT (line 263) | HRESULT CLAVPixFmtConverter::ConvertToAYUV(const uint8_t *const src[4], ...
  function HRESULT (line 340) | HRESULT CLAVPixFmtConverter::ConvertToPX1X(const uint8_t *const src[4], ...
  function HRESULT (line 470) | HRESULT CLAVPixFmtConverter::ConvertToY410(const uint8_t *const src[4], ...
  function HRESULT (line 536) | HRESULT CLAVPixFmtConverter::ConvertToY416(const uint8_t *const src[4], ...
  function HRESULT (line 599) | HRESULT CLAVPixFmtConverter::ConvertTov210(const uint8_t *const src[4], ...
  function HRESULT (line 707) | HRESULT CLAVPixFmtConverter::ConvertTov410(const uint8_t *const src[4], ...

FILE: decoder/LAVVideo/pixconv/interleave.cpp
  function DECLARE_CONV_FUNC_IMPL (line 27) | DECLARE_CONV_FUNC_IMPL(convert_yuv444_y410)

FILE: decoder/LAVVideo/pixconv/pixconv.cpp
  function DECLARE_CONV_FUNC_IMPL (line 39) | DECLARE_CONV_FUNC_IMPL(plane_copy)
  function DECLARE_CONV_FUNC_IMPL (line 66) | DECLARE_CONV_FUNC_IMPL(plane_copy_sse2)

FILE: decoder/LAVVideo/pixconv/rgb2rgb_unscaled.cpp
  function DECLARE_CONV_FUNC_IMPL (line 27) | DECLARE_CONV_FUNC_IMPL(convert_rgb48_rgb32_ssse3)
  function DECLARE_CONV_FUNC_IMPL (line 91) | DECLARE_CONV_FUNC_IMPL(convert_rgb48_rgb)

FILE: decoder/LAVVideo/pixconv/yuv2rgb.cpp
  function yuv2rgb_convert_pixels (line 35) | __forceinline static int yuv2rgb_convert_pixels(const uint8_t *&srcY, co...
  function yuv2rgb_convert (line 474) | static int __stdcall yuv2rgb_convert(const uint8_t *srcY, const uint8_t ...
  function DECLARE_CONV_FUNC_IMPL (line 578) | DECLARE_CONV_FUNC_IMPL(convert_yuv_rgb)
  function RGBCoeffs (line 684) | const RGBCoeffs *CLAVPixFmtConverter::getRGBCoeffs(int width, int height)

FILE: decoder/LAVVideo/pixconv/yuv2yuv_unscaled.cpp
  function DECLARE_CONV_FUNC_IMPL (line 27) | DECLARE_CONV_FUNC_IMPL(convert_yuv_yv_nv12_dither_le)
  function DECLARE_CONV_FUNC_IMPL (line 133) | DECLARE_CONV_FUNC_IMPL(convert_yuv420_px1x_le)
  function DECLARE_CONV_FUNC_IMPL (line 188) | DECLARE_CONV_FUNC_IMPL(convert_yuv_yv)
  function DECLARE_CONV_FUNC_IMPL (line 250) | DECLARE_CONV_FUNC_IMPL(convert_yuv420_nv12)
  function DECLARE_CONV_FUNC_IMPL (line 316) | DECLARE_CONV_FUNC_IMPL(convert_yuv422_yuy2_uyvy)
  function DECLARE_CONV_FUNC_IMPL (line 386) | DECLARE_CONV_FUNC_IMPL(convert_yuv422_yuy2_uyvy_dither_le)
  function DECLARE_CONV_FUNC_IMPL (line 466) | DECLARE_CONV_FUNC_IMPL(convert_nv12_yv12)
  function DECLARE_CONV_FUNC_IMPL (line 518) | DECLARE_CONV_FUNC_IMPL(convert_p010_nv12_sse2)
  function DECLARE_CONV_FUNC_IMPL (line 606) | DECLARE_CONV_FUNC_IMPL(convert_y210_p210_sse4)
  function DECLARE_CONV_FUNC_IMPL (line 671) | DECLARE_CONV_FUNC_IMPL(convert_yuy2_yv16_sse2)

FILE: decoder/LAVVideo/pixconv/yuv420_yuy2.cpp
  function yuv420yuy2_convert_pixels (line 32) | __forceinline static int yuv420yuy2_convert_pixels(const uint8_t *&srcY,...
  function yuv420yuy2_process_lines (line 186) | static int __stdcall yuv420yuy2_process_lines(const uint8_t *srcY, const...
  function yuv420yuy2_dispatch (line 247) | static int __stdcall yuv420yuy2_dispatch(LAVPixelFormat inputFormat, int...
  function DECLARE_CONV_FUNC_IMPL (line 287) | DECLARE_CONV_FUNC_IMPL(convert_yuv420_yuy2)

FILE: decoder/LAVVideo/pixconv/yuv444_ayuv.cpp
  function DECLARE_CONV_FUNC_IMPL (line 35) | DECLARE_CONV_FUNC_IMPL(convert_yuv444_ayuv)
  function DECLARE_CONV_FUNC_IMPL (line 93) | DECLARE_CONV_FUNC_IMPL(convert_yuv444_ayuv_dither_le)

FILE: decoder/LAVVideo/subtitles/LAVSubtitleConsumer.cpp
  function STDMETHODIMP (line 58) | STDMETHODIMP CLAVSubtitleConsumer::NonDelegatingQueryInterface(REFIID ri...
  function STDMETHODIMP (line 67) | STDMETHODIMP CLAVSubtitleConsumer::Connect(ISubRenderProvider *subtitleR...
  function STDMETHODIMP (line 74) | STDMETHODIMP CLAVSubtitleConsumer::Disconnect(void)
  function STDMETHODIMP (line 85) | STDMETHODIMP CLAVSubtitleConsumer::DeliverFrame(REFERENCE_TIME start, RE...
  function STDMETHODIMP (line 97) | STDMETHODIMP CLAVSubtitleConsumer::Clear(REFERENCE_TIME clearNewerThan)
  function STDMETHODIMP (line 103) | STDMETHODIMP CLAVSubtitleConsumer::RequestFrame(REFERENCE_TIME rtStart, ...
  function STDMETHODIMP (line 109) | STDMETHODIMP CLAVSubtitleConsumer::ProcessFrame(LAVFrame *pFrame)
  function LAVPixFmtDesc (line 208) | static LAVPixFmtDesc getFFSubPixelFormatDesc(AVPixelFormat pixFmt)
  function AVPixelFormat (line 222) | static AVPixelFormat getFFPixFmtForSubtitle(LAVPixelFormat pixFmt)
  function STDMETHODIMP (line 236) | STDMETHODIMP CLAVSubtitleConsumer::SelectBlendFunction()
  function STDMETHODIMP (line 256) | STDMETHODIMP CLAVSubtitleConsumer::ProcessSubtitleBitmap(LAVPixelFormat ...

FILE: decoder/LAVVideo/subtitles/LAVSubtitleConsumer.h
  type LAVSubtitleConsumerContext (line 35) | typedef struct LAVSubtitleConsumerContext
  function STDMETHODIMP (line 58) | STDMETHODIMP GetMerit(ULONG *merit)
  function STDMETHODIMP (line 74) | STDMETHODIMP DisconnectProvider()
  function SetVideoSize (line 84) | void SetVideoSize(LONG w, LONG h)
  type BLEND_FUNC_PARAMS (line 96) | typedef HRESULT(CLAVSubtitleConsumer::*BlendFn) BLEND_FUNC_PARAMS;
  function CAMEvent (line 105) | CAMEvent m_evFrame{FALSE};

FILE: decoder/LAVVideo/subtitles/LAVSubtitleFrame.cpp
  function STDMETHODIMP (line 39) | STDMETHODIMP CLAVSubtitleFrame::SetOutputRect(RECT outputRect)
  function STDMETHODIMP (line 45) | STDMETHODIMP CLAVSubtitleFrame::SetClipRect(RECT clipRect)
  function STDMETHODIMP (line 51) | STDMETHODIMP CLAVSubtitleFrame::AddBitmap(CLAVSubRect *subRect)
  function STDMETHODIMP (line 70) | STDMETHODIMP CLAVSubtitleFrame::GetOutputRect(RECT *outputRect)
  function STDMETHODIMP (line 77) | STDMETHODIMP CLAVSubtitleFrame::GetClipRect(RECT *clipRect)
  function STDMETHODIMP (line 84) | STDMETHODIMP CLAVSubtitleFrame::GetBitmapCount(int *count)
  function STDMETHODIMP (line 91) | STDMETHODIMP CLAVSubtitleFrame::GetBitmap(int index, ULONGLONG *id, POIN...

FILE: decoder/LAVVideo/subtitles/LAVSubtitleFrame.h
  function class (line 22) | class CLAVSubRect : public IUnknown

FILE: decoder/LAVVideo/subtitles/LAVSubtitleProvider.cpp
  function STDMETHODIMP (line 97) | STDMETHODIMP CLAVSubtitleProvider::SetConsumer(ISubRenderConsumer *pCons...
  function STDMETHODIMP (line 117) | STDMETHODIMP CLAVSubtitleProvider::DisconnectConsumer(void)
  function STDMETHODIMP (line 131) | STDMETHODIMP CLAVSubtitleProvider::RequestFrame(REFERENCE_TIME start, RE...
  function STDMETHODIMP (line 191) | STDMETHODIMP CLAVSubtitleProvider::Disconnect(void)
  function STDMETHODIMP (line 197) | STDMETHODIMP CLAVSubtitleProvider::InitDecoder(const CMediaType *pmt, AV...
  function STDMETHODIMP (line 240) | STDMETHODIMP CLAVSubtitleProvider::Flush()
  function STDMETHODIMP (line 280) | STDMETHODIMP CLAVSubtitleProvider::Decode(BYTE *buf, int buflen, REFEREN...
  type DVDSubContext (line 521) | struct DVDSubContext
  function STDMETHODIMP (line 538) | STDMETHODIMP CLAVSubtitleProvider::SetDVDPalette(AM_PROPERTY_SPPAL *pPal)
  function STDMETHODIMP (line 565) | STDMETHODIMP CLAVSubtitleProvider::SetDVDHLI(struct _AM_PROPERTY_SPHLI *...
  function CLAVSubRect (line 594) | CLAVSubRect* CLAVSubtitleProvider::ProcessDVDHLI(CLAVSubRect *rect)
  function STDMETHODIMP (line 661) | STDMETHODIMP CLAVSubtitleProvider::SetDVDComposit(BOOL bComposit)
  function DWORD (line 686) | DWORD CLAVSubtitleProviderControlThread::ThreadProc()

FILE: decoder/LAVVideo/subtitles/LAVSubtitleProvider.h
  type LAVSubtitleProviderContext (line 27) | typedef struct LAVSubtitleProviderContext
  type _AM_PROPERTY_SPPAL (line 40) | struct _AM_PROPERTY_SPPAL
  type _AM_PROPERTY_SPHLI (line 41) | struct _AM_PROPERTY_SPHLI
  type _AM_PROPERTY_SPPAL (line 85) | struct _AM_PROPERTY_SPPAL
  type _AM_PROPERTY_SPHLI (line 86) | struct _AM_PROPERTY_SPHLI
  function HRESULT (line 104) | HRESULT ControlCmd(DWORD cmd) { return m_ControlThread->CallWorker(cmd); }
  type _AM_PROPERTY_SPHLI (line 127) | struct _AM_PROPERTY_SPHLI

FILE: decoder/LAVVideo/subtitles/LAVVideoSubtitleInputPin.cpp
  type AVCodecID (line 30) | enum AVCodecID
  function STDMETHODIMP (line 53) | STDMETHODIMP CLAVVideoSubtitleInputPin::NonDelegatingQueryInterface(REFI...
  function HRESULT (line 60) | HRESULT CLAVVideoSubtitleInputPin::CheckMediaType(const CMediaType *mtIn)
  function HRESULT (line 74) | HRESULT CLAVVideoSubtitleInputPin::SetMediaType(const CMediaType *pmt)
  function HRESULT (line 106) | HRESULT CLAVVideoSubtitleInputPin::BreakConnect()
  function STDMETHODIMP (line 116) | STDMETHODIMP CLAVVideoSubtitleInputPin::BeginFlush()
  function STDMETHODIMP (line 121) | STDMETHODIMP CLAVVideoSubtitleInputPin::EndFlush()
  function HRESULT (line 132) | HRESULT CLAVVideoSubtitleInputPin::SetSubtitleConsumer(ISubRenderConsume...
  function STDMET
Condensed preview — 695 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (6,850K chars).
[
  {
    "path": ".clang-format",
    "chars": 1004,
    "preview": "BasedOnStyle: Microsoft\nIndentWidth: 4\nUseTab: Never\n\nLanguage: Cpp\nStandard: Cpp11\nSortIncludes: false\nAlignAfterOpenBr"
  },
  {
    "path": ".editorconfig",
    "chars": 270,
    "preview": "root = true\n\n[*]\nend_of_line = CRLF\nindent_style = space\nindent_size = 4\ninsert_final_newline = true\ntrim_trailing_white"
  },
  {
    "path": ".github/FUNDING.yml",
    "chars": 814,
    "preview": "# These are supported funding model platforms\n\ngithub: Nevcairiel # Replace with up to 4 GitHub Sponsors-enabled usernam"
  },
  {
    "path": ".gitignore",
    "chars": 100,
    "preview": "\n*.user\n*.suo\n*.sdf\n*.opensdf\n*.aps\n*.db\n*.opendb\n\n/ipch\n/bin_*\n/common/includes/version_rev.h\n/.vs\n"
  },
  {
    "path": ".gitmodules",
    "chars": 255,
    "preview": "[submodule \"ffmpeg\"]\n\tpath = ffmpeg\n\turl = https://gitea.1f0.de/LAV/FFmpeg.git\n[submodule \"libbluray\"]\n\tpath = libbluray"
  },
  {
    "path": "CHANGELOG.txt",
    "chars": 63124,
    "preview": "LAV DirectShow Filters Changelog\n===================================\n0.81.0 - 2026/01/12\nLAV Splitter\n- NEW: Support for"
  },
  {
    "path": "COPYING",
    "chars": 18092,
    "preview": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 2, June 1991\n\n Copyright (C) 1989, 1991 Fr"
  },
  {
    "path": "LAVFilters.iss",
    "chars": 26731,
    "preview": "; LAV Filters Inno Setup script\n\n#include <idp.iss>\n\n; Include version info\n#define ISPP_INCLUDED\n#include \"common\\inclu"
  },
  {
    "path": "LAVFilters.sln",
    "chars": 8052,
    "preview": "\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio Version 17\nVisualStudioVersion = 17.2.3263"
  },
  {
    "path": "README.md",
    "chars": 7162,
    "preview": "LAV Filters - ffmpeg based DirectShow Splitter and Decoders\n=============================\n\nLAV Filters are a set of Dire"
  },
  {
    "path": "build.bat",
    "chars": 707,
    "preview": "@ECHO OFF\n\nfor /f \"usebackq tokens=*\" %%i in (`call \"%ProgramFiles(x86)%\\Microsoft Visual Studio\\Installer\\vswhere.exe\" "
  },
  {
    "path": "build_ffmpeg.sh",
    "chars": 3992,
    "preview": "#!/bin/sh\n\narch=x86\narchdir=Win32\nclean_build=true\ncross_prefix=\n\nCV2PDB=../thirdparty/contrib/cv2pdb.exe\n\nfor opt in \"$"
  },
  {
    "path": "build_ffmpeg_msvc.sh",
    "chars": 2933,
    "preview": "#!/bin/sh\n\narch=x86\narchdir=Win32\narchincdir=32\nclean_build=true\ndebug=true\n\nfor opt in \"$@\"\ndo\n    case \"$opt\" in\n    x"
  },
  {
    "path": "common/DSUtilLite/BaseDSPropPage.cpp",
    "chars": 4237,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "common/DSUtilLite/BaseDSPropPage.h",
    "chars": 1453,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "common/DSUtilLite/BaseTrayIcon.cpp",
    "chars": 7827,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "common/DSUtilLite/BaseTrayIcon.h",
    "chars": 1860,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "common/DSUtilLite/ByteParser.cpp",
    "chars": 2917,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "common/DSUtilLite/ByteParser.h",
    "chars": 2321,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "common/DSUtilLite/CueSheet.cpp",
    "chars": 4888,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "common/DSUtilLite/CueSheet.h",
    "chars": 1271,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "common/DSUtilLite/DSMResourceBag.cpp",
    "chars": 3512,
    "preview": "#include \"stdafx.h\"\n#include \"DSMResourceBag.h\"\n\n#include <algorithm>\n\nCDSMResource::CDSMResource()\n    : mime(L\"applica"
  },
  {
    "path": "common/DSUtilLite/DSMResourceBag.h",
    "chars": 1193,
    "preview": "#pragma once\n\n#include \"IDSMResourceBag.h\"\n\n#include <string>\n#include <vector>\n#include <map>\n\nclass CDSMResource\n{\n  p"
  },
  {
    "path": "common/DSUtilLite/DSUtilLite.vcxproj",
    "chars": 5183,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" ToolsVersion=\"Current\" xmlns=\"http://schemas.mic"
  },
  {
    "path": "common/DSUtilLite/DSUtilLite.vcxproj.filters",
    "chars": 4866,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"12.0\" xmlns=\"http://schemas.microsoft.com/developer/msbui"
  },
  {
    "path": "common/DSUtilLite/DShowUtil.cpp",
    "chars": 28250,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "common/DSUtilLite/DShowUtil.h",
    "chars": 7149,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "common/DSUtilLite/DeCSS/CSSauth.cpp",
    "chars": 12803,
    "preview": "#include \"stdafx.h\"\n\nstatic void CSSengine(int varient, unsigned char const *input, unsigned char *output);\n\nvoid CSSkey"
  },
  {
    "path": "common/DSUtilLite/DeCSS/CSSauth.h",
    "chars": 220,
    "preview": "#pragma once\n\nextern void CSSkey1(int varient, byte const *challenge, byte *key);\nextern void CSSkey2(int varient, byte "
  },
  {
    "path": "common/DSUtilLite/DeCSS/CSSscramble.cpp",
    "chars": 13348,
    "preview": "#include \"stdafx.h\"\n\n#ifndef countof\n#define countof(array) (sizeof(array) / sizeof(array[0]))\n#endif\n\nunsigned int CSSt"
  },
  {
    "path": "common/DSUtilLite/DeCSS/CSSscramble.h",
    "chars": 285,
    "preview": "#pragma once\n\nextern void CSSdisckey(unsigned char *dkey, unsigned char *pkey);\nextern void CSStitlekey(unsigned char *t"
  },
  {
    "path": "common/DSUtilLite/DeCSS/DeCSSInputPin.cpp",
    "chars": 12211,
    "preview": "/*\n *      Copyright (C) 2003-2006 Gabest\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n "
  },
  {
    "path": "common/DSUtilLite/DeCSS/DeCSSInputPin.h",
    "chars": 2090,
    "preview": "/*\n *      Copyright (C) 2003-2006 Gabest\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n "
  },
  {
    "path": "common/DSUtilLite/FloatingAverage.h",
    "chars": 3207,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "common/DSUtilLite/FontInstaller.cpp",
    "chars": 2176,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "common/DSUtilLite/FontInstaller.h",
    "chars": 1338,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "common/DSUtilLite/H264Nalu.cpp",
    "chars": 4234,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "common/DSUtilLite/H264Nalu.h",
    "chars": 3079,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "common/DSUtilLite/MediaSampleSideData.cpp",
    "chars": 3985,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "common/DSUtilLite/MediaSampleSideData.h",
    "chars": 1847,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "common/DSUtilLite/PopupMenu.cpp",
    "chars": 2323,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "common/DSUtilLite/PopupMenu.h",
    "chars": 1161,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "common/DSUtilLite/SynchronizedQueue.h",
    "chars": 1477,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "common/DSUtilLite/filterreg.cpp",
    "chars": 4632,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "common/DSUtilLite/gpu_memcpy_sse4.h",
    "chars": 4535,
    "preview": "/*\n *      Copyright (C) 2011-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "common/DSUtilLite/growarray.h",
    "chars": 4138,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "common/DSUtilLite/lavf_log.h",
    "chars": 1627,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "common/DSUtilLite/locale.cpp",
    "chars": 32764,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "common/DSUtilLite/rand_sse.h",
    "chars": 1931,
    "preview": "// Based on rand_sse at\n// http://software.intel.com/en-us/articles/fast-random-number-generator-on-the-intel-pentiumr-4"
  },
  {
    "path": "common/DSUtilLite/registry.cpp",
    "chars": 5708,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "common/DSUtilLite/registry.h",
    "chars": 1717,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "common/DSUtilLite/stdafx.cpp",
    "chars": 920,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "common/DSUtilLite/stdafx.h",
    "chars": 1047,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "common/DSUtilLite/timer.h",
    "chars": 2924,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "common/baseclasses/amextra.cpp",
    "chars": 2831,
    "preview": "//------------------------------------------------------------------------------\n// File: AMExtra.cpp\n//\n// Desc: Direct"
  },
  {
    "path": "common/baseclasses/amextra.h",
    "chars": 1450,
    "preview": "//------------------------------------------------------------------------------\n// File: AMExtra.h\n//\n// Desc: DirectSh"
  },
  {
    "path": "common/baseclasses/amfilter.cpp",
    "chars": 153313,
    "preview": "//------------------------------------------------------------------------------\n// File: AMFilter.cpp\n//\n// Desc: Direc"
  },
  {
    "path": "common/baseclasses/amfilter.h",
    "chars": 55439,
    "preview": "//------------------------------------------------------------------------------\n// File: AMFilter.h\n//\n// Desc: DirectS"
  },
  {
    "path": "common/baseclasses/amvideo.cpp",
    "chars": 9400,
    "preview": "//------------------------------------------------------------------------------\n// File: AMVideo.cpp\n//\n// Desc: Direct"
  },
  {
    "path": "common/baseclasses/arithutil.cpp",
    "chars": 9995,
    "preview": "//------------------------------------------------------------------------------\n// File: ArithUtil.cpp\n//\n// Desc: Dire"
  },
  {
    "path": "common/baseclasses/baseclasses.vcxproj",
    "chars": 5849,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" ToolsVersion=\"Current\" xmlns=\"http://schemas.mic"
  },
  {
    "path": "common/baseclasses/baseclasses.vcxproj.filters",
    "chars": 6877,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"12.0\" xmlns=\"http://schemas.microsoft.com/developer/msbui"
  },
  {
    "path": "common/baseclasses/cache.h",
    "chars": 2825,
    "preview": "//------------------------------------------------------------------------------\n// File: Cache.h\n//\n// Desc: DirectShow"
  },
  {
    "path": "common/baseclasses/checkbmi.h",
    "chars": 3651,
    "preview": "//  Copyright (c) 1992 - 1997  Microsoft Corporation.  All Rights Reserved.\n\n#ifndef _CHECKBMI_H_\n#define _CHECKBMI_H_\n\n"
  },
  {
    "path": "common/baseclasses/combase.cpp",
    "chars": 7689,
    "preview": "//------------------------------------------------------------------------------\n// File: ComBase.cpp\n//\n// Desc: Direct"
  },
  {
    "path": "common/baseclasses/combase.h",
    "chars": 9897,
    "preview": "//------------------------------------------------------------------------------\n// File: ComBase.h\n//\n// Desc: DirectSh"
  },
  {
    "path": "common/baseclasses/cprop.cpp",
    "chars": 9915,
    "preview": "//------------------------------------------------------------------------------\n// File: CProp.cpp\n//\n// Desc: DirectSh"
  },
  {
    "path": "common/baseclasses/cprop.h",
    "chars": 4068,
    "preview": "//------------------------------------------------------------------------------\n// File: CProp.h\n//\n// Desc: DirectShow"
  },
  {
    "path": "common/baseclasses/ctlutil.cpp",
    "chars": 55333,
    "preview": "//------------------------------------------------------------------------------\n// File: CtlUtil.cpp\n//\n// Desc: Direct"
  },
  {
    "path": "common/baseclasses/ctlutil.h",
    "chars": 26431,
    "preview": "//------------------------------------------------------------------------------\n// File: CtlUtil.h\n//\n// Desc: DirectSh"
  },
  {
    "path": "common/baseclasses/ddmm.cpp",
    "chars": 3539,
    "preview": "//------------------------------------------------------------------------------\n// File: DDMM.cpp\n//\n// Desc: DirectSho"
  },
  {
    "path": "common/baseclasses/ddmm.h",
    "chars": 964,
    "preview": "//------------------------------------------------------------------------------\n// File: DDMM.h\n//\n// Desc: DirectShow "
  },
  {
    "path": "common/baseclasses/dllentry.cpp",
    "chars": 9783,
    "preview": "//------------------------------------------------------------------------------\n// File: DlleEntry.cpp\n//\n// Desc: Dire"
  },
  {
    "path": "common/baseclasses/dllsetup.cpp",
    "chars": 17030,
    "preview": "//------------------------------------------------------------------------------\n// File: DllSetup.cpp\n//\n// Desc: Direc"
  },
  {
    "path": "common/baseclasses/dllsetup.h",
    "chars": 1259,
    "preview": "//------------------------------------------------------------------------------\n// File: DllSetup.h\n//\n// Desc: DirectS"
  },
  {
    "path": "common/baseclasses/dxmperf.h",
    "chars": 13015,
    "preview": "//------------------------------------------------------------------------------\n// File: DXMPerf.h\n//\n// Desc: Macros f"
  },
  {
    "path": "common/baseclasses/fourcc.h",
    "chars": 1963,
    "preview": "//------------------------------------------------------------------------------\n// File: FourCC.h\n//\n// Desc: DirectSho"
  },
  {
    "path": "common/baseclasses/measure.h",
    "chars": 8060,
    "preview": "//------------------------------------------------------------------------------\n// File: Measure.h\n//\n// Desc: DirectSh"
  },
  {
    "path": "common/baseclasses/msgthrd.h",
    "chars": 3410,
    "preview": "//------------------------------------------------------------------------------\n// File: MsgThrd.h\n//\n// Desc: DirectSh"
  },
  {
    "path": "common/baseclasses/mtype.cpp",
    "chars": 11760,
    "preview": "//------------------------------------------------------------------------------\n// File: MType.cpp\n//\n// Desc: DirectSh"
  },
  {
    "path": "common/baseclasses/mtype.h",
    "chars": 2967,
    "preview": "//------------------------------------------------------------------------------\n// File: MtType.h\n//\n// Desc: DirectSho"
  },
  {
    "path": "common/baseclasses/outputq.cpp",
    "chars": 23716,
    "preview": "//------------------------------------------------------------------------------\n// File: OutputQ.cpp\n//\n// Desc: Direct"
  },
  {
    "path": "common/baseclasses/outputq.h",
    "chars": 4202,
    "preview": "//------------------------------------------------------------------------------\n// File: OutputQ.h\n//\n// Desc: DirectSh"
  },
  {
    "path": "common/baseclasses/perflog.cpp",
    "chars": 7713,
    "preview": "//------------------------------------------------------------------------------\n// File: perflog.cpp\n//\n// Desc: Macros"
  },
  {
    "path": "common/baseclasses/perflog.h",
    "chars": 1198,
    "preview": "//------------------------------------------------------------------------------\n// File: perflog.h\n//\n// Desc: Performa"
  },
  {
    "path": "common/baseclasses/perfstruct.h",
    "chars": 6503,
    "preview": "//------------------------------------------------------------------------------\n// File: PerfStruct.h\n//\n// Desc: Struc"
  },
  {
    "path": "common/baseclasses/pstream.cpp",
    "chars": 4663,
    "preview": "//------------------------------------------------------------------------------\n// File: PStream.cpp\n//\n// Desc: Direct"
  },
  {
    "path": "common/baseclasses/pstream.h",
    "chars": 4010,
    "preview": "//------------------------------------------------------------------------------\n// File: PStream.h\n//\n// Desc: DirectSh"
  },
  {
    "path": "common/baseclasses/pullpin.cpp",
    "chars": 12746,
    "preview": "//------------------------------------------------------------------------------\n// File: PullPin.cpp\n//\n// Desc: Direct"
  },
  {
    "path": "common/baseclasses/pullpin.h",
    "chars": 4311,
    "preview": "//------------------------------------------------------------------------------\n// File: PullPin.h\n//\n// Desc: DirectSh"
  },
  {
    "path": "common/baseclasses/refclock.cpp",
    "chars": 12677,
    "preview": "//------------------------------------------------------------------------------\n// File: RefClock.cpp\n//\n// Desc: Direc"
  },
  {
    "path": "common/baseclasses/refclock.h",
    "chars": 7521,
    "preview": "//------------------------------------------------------------------------------\n// File: RefClock.h\n//\n// Desc: DirectS"
  },
  {
    "path": "common/baseclasses/reftime.h",
    "chars": 2614,
    "preview": "//------------------------------------------------------------------------------\n// File: RefTime.h\n//\n// Desc: DirectSh"
  },
  {
    "path": "common/baseclasses/renbase.cpp",
    "chars": 97161,
    "preview": "//------------------------------------------------------------------------------\n// File: RenBase.cpp\n//\n// Desc: Direct"
  },
  {
    "path": "common/baseclasses/renbase.h",
    "chars": 19930,
    "preview": "//------------------------------------------------------------------------------\n// File: RenBase.h\n//\n// Desc: DirectSh"
  },
  {
    "path": "common/baseclasses/schedule.cpp",
    "chars": 7614,
    "preview": "//------------------------------------------------------------------------------\n// File: Schedule.cpp\n//\n// Desc: Direc"
  },
  {
    "path": "common/baseclasses/schedule.h",
    "chars": 4207,
    "preview": "//------------------------------------------------------------------------------\n// File: Schedule.h\n//\n// Desc: DirectS"
  },
  {
    "path": "common/baseclasses/seekpt.cpp",
    "chars": 2356,
    "preview": "//------------------------------------------------------------------------------\n// File: SeekPT.cpp\n//\n// Desc: DirectS"
  },
  {
    "path": "common/baseclasses/seekpt.h",
    "chars": 854,
    "preview": "//------------------------------------------------------------------------------\n// File: SeekPT.h\n//\n// Desc: DirectSho"
  },
  {
    "path": "common/baseclasses/source.cpp",
    "chars": 12998,
    "preview": "//------------------------------------------------------------------------------\n// File: Source.cpp\n//\n// Desc: DirectS"
  },
  {
    "path": "common/baseclasses/source.h",
    "chars": 5707,
    "preview": "//------------------------------------------------------------------------------\n// File: Source.h\n//\n// Desc: DirectSho"
  },
  {
    "path": "common/baseclasses/streams.h",
    "chars": 6774,
    "preview": "//------------------------------------------------------------------------------\n// File: Streams.h\n//\n// Desc: DirectSh"
  },
  {
    "path": "common/baseclasses/strmctl.cpp",
    "chars": 13163,
    "preview": "//------------------------------------------------------------------------------\n// File: StrmCtl.cpp\n//\n// Desc: Direct"
  },
  {
    "path": "common/baseclasses/strmctl.h",
    "chars": 6279,
    "preview": "//------------------------------------------------------------------------------\n// File: StrmCtl.h\n//\n// Desc: DirectSh"
  },
  {
    "path": "common/baseclasses/sysclock.cpp",
    "chars": 2024,
    "preview": "//------------------------------------------------------------------------------\n// File: SysClock.cpp\n//\n// Desc: Direc"
  },
  {
    "path": "common/baseclasses/sysclock.h",
    "chars": 1282,
    "preview": "//------------------------------------------------------------------------------\n// File: SysClock.h\n//\n// Desc: DirectS"
  },
  {
    "path": "common/baseclasses/transfrm.cpp",
    "chars": 27660,
    "preview": "//------------------------------------------------------------------------------\n// File: Transfrm.cpp\n//\n// Desc: Direc"
  },
  {
    "path": "common/baseclasses/transfrm.h",
    "chars": 9216,
    "preview": "//------------------------------------------------------------------------------\n// File: Transfrm.h\n//\n// Desc: DirectS"
  },
  {
    "path": "common/baseclasses/transip.cpp",
    "chars": 33490,
    "preview": "//------------------------------------------------------------------------------\n// File: TransIP.cpp\n//\n// Desc: Direct"
  },
  {
    "path": "common/baseclasses/transip.h",
    "chars": 8364,
    "preview": "//------------------------------------------------------------------------------\n// File: TransIP.h\n//\n// Desc: DirectSh"
  },
  {
    "path": "common/baseclasses/videoctl.cpp",
    "chars": 22149,
    "preview": "//------------------------------------------------------------------------------\n// File: VideoCtl.cpp\n//\n// Desc: Direc"
  },
  {
    "path": "common/baseclasses/videoctl.h",
    "chars": 7984,
    "preview": "//------------------------------------------------------------------------------\n// File: VideoCtl.h\n//\n// Desc: DirectS"
  },
  {
    "path": "common/baseclasses/vtrans.cpp",
    "chars": 17719,
    "preview": "//------------------------------------------------------------------------------\n// File: Vtrans.cpp\n//\n// Desc: DirectS"
  },
  {
    "path": "common/baseclasses/vtrans.h",
    "chars": 6557,
    "preview": "//------------------------------------------------------------------------------\n// File: VTrans.h\n//\n// Desc: DirectSho"
  },
  {
    "path": "common/baseclasses/winctrl.cpp",
    "chars": 66399,
    "preview": "//------------------------------------------------------------------------------\n// File: WinCtrl.cpp\n//\n// Desc: Direct"
  },
  {
    "path": "common/baseclasses/winctrl.h",
    "chars": 10403,
    "preview": "//------------------------------------------------------------------------------\n// File: WinCtrl.h\n//\n// Desc: DirectSh"
  },
  {
    "path": "common/baseclasses/winutil.cpp",
    "chars": 93205,
    "preview": "//------------------------------------------------------------------------------\n// File: WinUtil.cpp\n//\n// Desc: Direct"
  },
  {
    "path": "common/baseclasses/winutil.h",
    "chars": 15984,
    "preview": "//------------------------------------------------------------------------------\n// File: WinUtil.h\n//\n// Desc: DirectSh"
  },
  {
    "path": "common/baseclasses/wxdebug.cpp",
    "chars": 48484,
    "preview": "//------------------------------------------------------------------------------\n// File: WXDebug.cpp\n//\n// Desc: Direct"
  },
  {
    "path": "common/baseclasses/wxdebug.h",
    "chars": 11696,
    "preview": "//------------------------------------------------------------------------------\n// File: WXDebug.h\n//\n// Desc: DirectSh"
  },
  {
    "path": "common/baseclasses/wxlist.cpp",
    "chars": 24265,
    "preview": "//------------------------------------------------------------------------------\n// File: WXList.cpp\n//\n// Desc: DirectS"
  },
  {
    "path": "common/baseclasses/wxlist.h",
    "chars": 19466,
    "preview": "//------------------------------------------------------------------------------\n// File: WXList.h\n//\n// Desc: DirectSho"
  },
  {
    "path": "common/baseclasses/wxutil.cpp",
    "chars": 18629,
    "preview": "//------------------------------------------------------------------------------\n// File: WXUtil.cpp\n//\n// Desc: DirectS"
  },
  {
    "path": "common/baseclasses/wxutil.h",
    "chars": 15859,
    "preview": "//------------------------------------------------------------------------------\n// File: WXUtil.h\n//\n// Desc: DirectSho"
  },
  {
    "path": "common/common.props",
    "chars": 3354,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"Current\" xmlns=\"http://schemas.microsoft.com/developer/msb"
  },
  {
    "path": "common/genversion.bat",
    "chars": 952,
    "preview": "@ECHO OFF\nSETLOCAL\n\nPUSHD \"%~dp0\"\n\nSET nbMAJOR_PART=0\nSET nbCOMMIT_PART=0\nSET nbHASH_PART=00000\nSET OLDVER=\n\n:: check fo"
  },
  {
    "path": "common/includes/ILAVPinInfo.h",
    "chars": 1780,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "common/includes/IMediaSideDataFFmpeg.h",
    "chars": 1303,
    "preview": "/*\n*      Copyright (C) 2010-2021 Hendrik Leppkes\n*      http://www.1f0.de\n*\n*  This program is free software; you can r"
  },
  {
    "path": "common/includes/LAVSplitterSettingsInternal.h",
    "chars": 2219,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "common/includes/SubRenderIntf.h",
    "chars": 21688,
    "preview": "// ***************************************************************\n//  SubRenderIntf.h           version: 1.0.9  -  date"
  },
  {
    "path": "common/includes/common_defines.h",
    "chars": 1162,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "common/includes/moreuuids.h",
    "chars": 77656,
    "preview": "/*\n *      Copyright (C) 2003-2006 Gabest\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n "
  },
  {
    "path": "common/includes/version.h",
    "chars": 735,
    "preview": "#pragma once\n\n#include \"version_rev.h\"\n\n#define LAV_VERSION_MAJOR     0\n#define LAV_VERSION_MINOR    81\n#define LAV_VERS"
  },
  {
    "path": "common/platform.props",
    "chars": 1179,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"Current\" xmlns=\"http://schemas.microsoft.com/developer/msb"
  },
  {
    "path": "decoder/LAVAudio/AudioSettingsProp.cpp",
    "chars": 40544,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "decoder/LAVAudio/AudioSettingsProp.h",
    "chars": 4504,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "decoder/LAVAudio/Bitstream.cpp",
    "chars": 18840,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "decoder/LAVAudio/BitstreamMAT.cpp",
    "chars": 16213,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "decoder/LAVAudio/BitstreamParser.cpp",
    "chars": 3168,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "decoder/LAVAudio/BitstreamParser.h",
    "chars": 1477,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "decoder/LAVAudio/LAVAudio.cpp",
    "chars": 90732,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "decoder/LAVAudio/LAVAudio.def",
    "chars": 288,
    "preview": "; LAVAudio.def ; declares the exports\n\nLIBRARY         \"LAVAudio.ax\"\n\nEXPORTS\n                DllGetClassObject PRIVATE\n"
  },
  {
    "path": "decoder/LAVAudio/LAVAudio.h",
    "chars": 14987,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "decoder/LAVAudio/LAVAudio.manifest",
    "chars": 311,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<assembly xmlns=\"urn:schemas-microsoft-com:asm.v1\" manifestVersi"
  },
  {
    "path": "decoder/LAVAudio/LAVAudio.rc",
    "chars": 12407,
    "preview": "// Microsoft Visual C++ generated resource script.\n//\n#include \"resource.h\"\n\n#define APSTUDIO_READONLY_SYMBOLS\n/////////"
  },
  {
    "path": "decoder/LAVAudio/LAVAudio.rc2",
    "chars": 2091,
    "preview": "//\n// LAVAudio.rc2 - resources Microsoft Visual C++ does not edit directly\n//\n\n#ifdef APSTUDIO_INVOKED\n#error This file "
  },
  {
    "path": "decoder/LAVAudio/LAVAudio.vcxproj",
    "chars": 6094,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" ToolsVersion=\"Current\" xmlns=\"http://schemas.mic"
  },
  {
    "path": "decoder/LAVAudio/LAVAudio.vcxproj.filters",
    "chars": 3527,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"12.0\" xmlns=\"http://schemas.microsoft.com/developer/msbui"
  },
  {
    "path": "decoder/LAVAudio/Media.cpp",
    "chars": 28426,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "decoder/LAVAudio/Media.h",
    "chars": 2642,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "decoder/LAVAudio/PostProcessor.cpp",
    "chars": 28978,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "decoder/LAVAudio/PostProcessor.h",
    "chars": 1355,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "decoder/LAVAudio/dllmain.cpp",
    "chars": 4410,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "decoder/LAVAudio/parser/dts.cpp",
    "chars": 13523,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "decoder/LAVAudio/parser/dts.h",
    "chars": 1806,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "decoder/LAVAudio/parser/parser.h",
    "chars": 1170,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "decoder/LAVAudio/resource.h",
    "chars": 5192,
    "preview": "//{{NO_DEPENDENCIES}}\n// Microsoft Visual C++ generated include file.\n// Used by LAVAudio.rc\n//\n#define IDD_PROPPAGE_AUD"
  },
  {
    "path": "decoder/LAVAudio/stdafx.cpp",
    "chars": 855,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "decoder/LAVAudio/stdafx.h",
    "chars": 1592,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "decoder/LAVVideo/CCOutputPin.cpp",
    "chars": 4139,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "decoder/LAVVideo/CCOutputPin.h",
    "chars": 1585,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "decoder/LAVVideo/DecodeManager.cpp",
    "chars": 10441,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "decoder/LAVVideo/DecodeManager.h",
    "chars": 3526,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "decoder/LAVVideo/Filtering.cpp",
    "chars": 12382,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "decoder/LAVVideo/LAVPixFmtConverter.cpp",
    "chars": 34436,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "decoder/LAVVideo/LAVPixFmtConverter.h",
    "chars": 9519,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "decoder/LAVVideo/LAVVideo.cpp",
    "chars": 98719,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "decoder/LAVVideo/LAVVideo.def",
    "chars": 288,
    "preview": "; LAVVideo.def ; declares the exports\n\nLIBRARY         \"LAVVideo.ax\"\n\nEXPORTS\n                DllGetClassObject PRIVATE\n"
  },
  {
    "path": "decoder/LAVVideo/LAVVideo.h",
    "chars": 12516,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "decoder/LAVVideo/LAVVideo.manifest",
    "chars": 311,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<assembly xmlns=\"urn:schemas-microsoft-com:asm.v1\" manifestVersi"
  },
  {
    "path": "decoder/LAVVideo/LAVVideo.rc",
    "chars": 10974,
    "preview": "// Microsoft Visual C++ generated resource script.\n//\n#include \"resource.h\"\n\n#define APSTUDIO_READONLY_SYMBOLS\n/////////"
  },
  {
    "path": "decoder/LAVVideo/LAVVideo.rc2",
    "chars": 2091,
    "preview": "//\n// LAVVideo.rc2 - resources Microsoft Visual C++ does not edit directly\n//\n\n#ifdef APSTUDIO_INVOKED\n#error This file "
  },
  {
    "path": "decoder/LAVVideo/LAVVideo.vcxproj",
    "chars": 10511,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" ToolsVersion=\"Current\" xmlns=\"http://schemas.mic"
  },
  {
    "path": "decoder/LAVVideo/LAVVideo.vcxproj.filters",
    "chars": 12156,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"12.0\" xmlns=\"http://schemas.microsoft.com/developer/msbui"
  },
  {
    "path": "decoder/LAVVideo/Media.cpp",
    "chars": 53766,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "decoder/LAVVideo/Media.h",
    "chars": 2215,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "decoder/LAVVideo/VideoInputPin.cpp",
    "chars": 5211,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "decoder/LAVVideo/VideoInputPin.h",
    "chars": 2209,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "decoder/LAVVideo/VideoOutputPin.cpp",
    "chars": 1369,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "decoder/LAVVideo/VideoOutputPin.h",
    "chars": 1117,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "decoder/LAVVideo/VideoSettingsProp.cpp",
    "chars": 47612,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "decoder/LAVVideo/VideoSettingsProp.h",
    "chars": 3125,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "decoder/LAVVideo/decoders/DecBase.h",
    "chars": 4041,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "decoder/LAVVideo/decoders/ILAVDecoder.h",
    "chars": 15661,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "decoder/LAVVideo/decoders/avcodec.cpp",
    "chars": 56906,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "decoder/LAVVideo/decoders/avcodec.h",
    "chars": 3592,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "decoder/LAVVideo/decoders/cuvid/dynlink_cuda.h",
    "chars": 527,
    "preview": "/*\n * Copyright 1993-2015 NVIDIA Corporation.  All rights reserved.\n *\n * Please refer to the NVIDIA end user license ag"
  },
  {
    "path": "decoder/LAVVideo/decoders/cuvid/dynlink_cuda_cuda.h",
    "chars": 71378,
    "preview": "/*\n * Copyright 1993-2015 NVIDIA Corporation.  All rights reserved.\n *\n * Please refer to the NVIDIA end user license ag"
  },
  {
    "path": "decoder/LAVVideo/decoders/cuvid/dynlink_cuda_d3d.h",
    "chars": 5067,
    "preview": "/*\n * Copyright 1993-2015 NVIDIA Corporation.  All rights reserved.\n *\n * Please refer to the NVIDIA end user license ag"
  },
  {
    "path": "decoder/LAVVideo/decoders/cuvid/dynlink_cuviddec.h",
    "chars": 67358,
    "preview": "/*\n * This copyright notice applies to this header file only:\n *\n * Copyright (c) 2010-2024 NVIDIA Corporation\n *\n * Per"
  },
  {
    "path": "decoder/LAVVideo/decoders/cuvid/dynlink_nvcuvid.h",
    "chars": 30588,
    "preview": "/*\n * This copyright notice applies to this header file only:\n *\n * Copyright (c) 2010-2024 NVIDIA Corporation\n *\n * Per"
  },
  {
    "path": "decoder/LAVVideo/decoders/cuvid.cpp",
    "chars": 51494,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "decoder/LAVVideo/decoders/cuvid.h",
    "chars": 5544,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "decoder/LAVVideo/decoders/d3d11/D3D11SurfaceAllocator.cpp",
    "chars": 6635,
    "preview": "/*\n *      Copyright (C) 2019-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "decoder/LAVVideo/decoders/d3d11/D3D11SurfaceAllocator.h",
    "chars": 2562,
    "preview": "/*\n *      Copyright (C) 2019-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "decoder/LAVVideo/decoders/d3d11va.cpp",
    "chars": 50160,
    "preview": "/*\n *      Copyright (C) 2017-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "decoder/LAVVideo/decoders/d3d11va.h",
    "chars": 4831,
    "preview": "/*\n *      Copyright (C) 2017-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "decoder/LAVVideo/decoders/dxva2/DXVA2SurfaceAllocator.cpp",
    "chars": 6850,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "decoder/LAVVideo/decoders/dxva2/DXVA2SurfaceAllocator.h",
    "chars": 3057,
    "preview": "/*\n *      Copyright (C) 2010-2021 Hendrik Leppkes\n *      http://www.1f0.de\n *\n *  This program is free software; you c"
  },
  {
    "path": "decoder/LAVVideo/decoders/dxva2/dxva_common.cpp",
    "chars": 14509,
    "preview": "/*\n*      Copyright (C) 2011-2021 Hendrik Leppkes\n*      http://www.1f0.de\n*\n*  This program is free software; you can r"
  }
]

// ... and 495 more files (download for full content)

About this extraction

This page contains the full source code of the Nevcairiel/LAVFilters GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 695 files (6.2 MB), approximately 1.7M tokens, and a symbol index with 6121 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!