├── .gitignore ├── BUILDING.txt ├── Changes ├── Copying ├── publish ├── FilterTest.cmd ├── directtest.script ├── edittest.script ├── filters.txt ├── filtertest.script └── languagetest.script └── src ├── Ami ├── Ami.vcproj ├── Ami.vcxproj ├── h │ ├── bytecode.h │ ├── lexer.h │ └── utils.h └── source │ ├── lexer.cpp │ ├── main.cpp │ └── utils.cpp ├── Asuka ├── Asuka.vcproj ├── Asuka.vcxproj ├── h │ ├── filecreator.h │ ├── glc.h │ ├── stdafx.h │ ├── symbols.h │ └── utils.h ├── res │ ├── Asuka.rc │ └── resource.h └── source │ ├── checkimports.cpp │ ├── filecreator.cpp │ ├── fontencode.cpp │ ├── fontextract.cpp │ ├── fxc.cpp │ ├── fxc10.cpp │ ├── glc.cpp │ ├── glc_atifs.cpp │ ├── glc_nvrc.cpp │ ├── hash.cpp │ ├── lookup.cpp │ ├── main.cpp │ ├── makearray.cpp │ ├── maketables.cpp │ ├── mapconv.cpp │ ├── psa.cpp │ ├── resbind.cpp │ ├── resextract.cpp │ ├── snapsetup.cpp │ ├── stdafx.cpp │ ├── symbols.cpp │ ├── utils.cpp │ └── verinc.cpp ├── BuildData └── AllowedImports │ ├── Win7x64_x64.exports │ └── WinXPSP3.exports ├── Dita ├── Dita.vcproj ├── Dita.vcxproj ├── Dita.vcxproj.filters ├── h │ └── stdafx.h └── source │ ├── accel.cpp │ ├── basetypes.cpp │ ├── ctl_grid.cpp │ ├── ctl_set.cpp │ ├── interface.cpp │ ├── resources.cpp │ ├── services.cpp │ ├── stdafx.cpp │ ├── w32accel.cpp │ ├── w32base.cpp │ ├── w32button.cpp │ ├── w32control.cpp │ ├── w32group.cpp │ ├── w32hotkey.cpp │ ├── w32label.cpp │ ├── w32listbox.cpp │ ├── w32listview.cpp │ ├── w32peer.cpp │ ├── w32splitter.cpp │ ├── w32textedit.cpp │ └── w32trackbar.cpp ├── Kasumi ├── Kasumi.vcproj ├── Kasumi.vcxproj ├── Kasumi.vcxproj.filters ├── data │ ├── Tuffy.ttf │ └── Tuffy.txt ├── h │ ├── bitutils.h │ ├── blt_setup.h │ ├── blt_spanutils.h │ ├── blt_spanutils_x86.h │ ├── defaultfont.inl │ ├── resample_stages.h │ ├── resample_stages_reference.h │ ├── resample_stages_x64.h │ ├── resample_stages_x86.h │ ├── stdafx.h │ ├── uberblit.h │ ├── uberblit_16f.h │ ├── uberblit_base.h │ ├── uberblit_fill.h │ ├── uberblit_gen.h │ ├── uberblit_input.h │ ├── uberblit_interlace.h │ ├── uberblit_pal.h │ ├── uberblit_resample.h │ ├── uberblit_resample_special.h │ ├── uberblit_resample_special_x86.h │ ├── uberblit_rgb.h │ ├── uberblit_rgb64.h │ ├── uberblit_rgb_x86.h │ ├── uberblit_swizzle.h │ ├── uberblit_swizzle_x86.h │ ├── uberblit_v210.h │ ├── uberblit_ycbcr.h │ ├── uberblit_ycbcr_generic.h │ └── uberblit_ycbcr_x86.h └── source │ ├── a64_resample.asm64 │ ├── a_bltrgb.asm │ ├── a_bltrgb2yuv_mmx.asm │ ├── a_bltrgb_mmx.asm │ ├── a_bltyuv2rgb_sse2.asm │ ├── a_resample_mmx.asm │ ├── a_resample_sse41.asm │ ├── a_spanutils_isse.asm │ ├── a_stretchrgb_mmx.asm │ ├── a_stretchrgb_point.asm │ ├── a_triblt.inc │ ├── a_triblt_mmx.asm │ ├── a_triblt_scalar.asm │ ├── a_triblt_sse2.asm │ ├── alphablt.cpp │ ├── blitter.cpp │ ├── blt.cpp │ ├── blt_reference.cpp │ ├── blt_reference_pal.cpp │ ├── blt_reference_rgb.cpp │ ├── blt_reference_yuv.cpp │ ├── blt_reference_yuv2yuv.cpp │ ├── blt_reference_yuvrev.cpp │ ├── blt_setup.cpp │ ├── blt_spanutils.cpp │ ├── blt_spanutils_x86.cpp │ ├── blt_uberblit.cpp │ ├── blt_x86.cpp │ ├── pixel.cpp │ ├── pixmaputils.cpp │ ├── region.cpp │ ├── resample.cpp │ ├── resample_kernels.cpp │ ├── resample_stages.cpp │ ├── resample_stages_reference.cpp │ ├── resample_stages_x64.cpp │ ├── resample_stages_x86.cpp │ ├── stdafx.cpp │ ├── stretchblt_reference.cpp │ ├── tables.cpp │ ├── text.cpp │ ├── triblt.cpp │ ├── uberblit.cpp │ ├── uberblit_16f.cpp │ ├── uberblit_gen.cpp │ ├── uberblit_resample.cpp │ ├── uberblit_resample_special.cpp │ ├── uberblit_resample_special_x86.cpp │ ├── uberblit_rgb64.cpp │ ├── uberblit_swizzle.cpp │ ├── uberblit_swizzle_x86.cpp │ ├── uberblit_v210.cpp │ ├── uberblit_ycbcr_generic.cpp │ └── uberblit_ycbcr_x86.cpp ├── Lina ├── Lina.vcproj ├── Lina.vcxproj ├── h │ ├── document.h │ └── parser.h └── source │ ├── document.cpp │ ├── main.cpp │ └── parser.cpp ├── Meia ├── Meia.vcproj ├── Meia.vcxproj ├── Meia.vcxproj.filters ├── h │ ├── MPEGCache.h │ ├── common_png.h │ └── tables.h └── source │ ├── MPEGCache.cpp │ ├── MPEGDecoder.cpp │ ├── MPEGFile.cpp │ ├── a64_idct_sse2.asm │ ├── a64_predict_sse2.asm │ ├── a_predict_isse.asm │ ├── a_predict_mmx.asm │ ├── a_predict_scalar.asm │ ├── a_predict_sse2.asm │ ├── a_yuv2rgb.asm │ ├── a_yuvtable.asm │ ├── common_png.cpp │ ├── convert_isse.cpp │ ├── convert_mmx.cpp │ ├── convert_reference.cpp │ ├── convert_scalar.cpp │ ├── decode_dv.cpp │ ├── decode_huffyuv.cpp │ ├── decode_png.cpp │ ├── encode_png.cpp │ ├── idct_mmx.cpp │ ├── idct_reference.cpp │ ├── idct_scalar.cpp │ ├── idct_scalar_asm.inl │ ├── idct_test.cpp │ ├── mpeg_idct_mmx.asm │ ├── mpeg_idct_sse2.asm │ ├── predict_reference.cpp │ └── tables.cpp ├── PSA.props ├── PSA.rules ├── PSA.targets ├── PSA.xml ├── Priss ├── Priss.vcproj ├── Priss.vcxproj ├── Priss.vcxproj.filters ├── h │ ├── bitreader.h │ ├── engine.h │ └── polyphase.h └── source │ ├── a64_polyphase.asm │ ├── convert.cpp │ ├── engine.cpp │ ├── layer1.cpp │ ├── layer2.cpp │ ├── layer3.cpp │ ├── layer3tables.cpp │ └── polyphase.cpp ├── Riza ├── Riza.vcproj ├── Riza.vcxproj ├── Riza.vcxproj.filters ├── h │ └── d3dxfx.h └── source │ ├── a_resync.asm │ ├── ac_mpeg.cpp │ ├── ac_xlaw.cpp │ ├── audiocodec.cpp │ ├── audioformat.cpp │ ├── audioout.cpp │ ├── bitmap.cpp │ ├── direct3d.cpp │ ├── displayd3dfx.cpp │ ├── displayddraw.cpp │ ├── displaydx9.cpp │ ├── displaydx9.fx │ ├── displaydx9_ff.fxh │ ├── displaydx9_ps1.fxh │ ├── displaydx9_ps14.fxh │ ├── displaydx9_ps2.fxh │ ├── displaygdi.cpp │ ├── displaygl.cpp │ ├── opengl.cpp │ ├── stddefs.fxh │ ├── utils.fxh │ ├── vc_dv.cpp │ ├── vc_huffyuv.cpp │ ├── w32audiocodec.cpp │ ├── w32videocodec.cpp │ └── w32videocodecpack.cpp ├── Setup ├── Setup.rc ├── Setup.vcproj ├── Setup.vcxproj ├── helpfile.h ├── main.cpp ├── manifest.xml ├── mod2.ico ├── registry.cpp ├── registry.h ├── resource.h └── virtuald.ico ├── Sylia ├── ScriptError.cpp ├── ScriptError.h ├── ScriptInterpreter.cpp ├── ScriptInterpreter.h ├── ScriptValue.h ├── StringHeap.cpp ├── StringHeap.h ├── Sylia.vcproj ├── Sylia.vcxproj ├── VariableTable.cpp ├── VariableTable.h ├── VectorHeap.cpp ├── VectorHeap.h ├── objects.cpp ├── readme.txt └── resource.h ├── Tessa ├── Tessa.vcproj ├── Tessa.vcxproj ├── h │ ├── D3D11 │ │ ├── Context_D3D11.h │ │ └── FenceManager_D3D11.h │ ├── D3D9 │ │ ├── Context_D3D9.h │ │ └── FenceManager_D3D9.h │ ├── Program.h │ └── stdafx.h └── source │ ├── Context.cpp │ ├── D3D11 │ ├── Context_D3D11.cpp │ └── FenceManager_D3D11.cpp │ ├── D3D9 │ ├── Context_D3D9.cpp │ └── FenceManager_D3D9.cpp │ ├── Format.cpp │ ├── Program.cpp │ └── stdafx.cpp ├── VDCapture ├── AudioGrabberWASAPI.cpp ├── VDCapture.vcproj ├── VDCapture.vcxproj ├── VDCapture.vcxproj.filters ├── h │ ├── cap_screen.h │ └── stdafx.h ├── res │ ├── VDCapture.rc │ └── resource.h └── source │ ├── ScreenGrabberDXGI12.cpp │ ├── ScreenGrabberGDI.cpp │ ├── ScreenGrabberGL.cpp │ ├── cap_dshow.cpp │ ├── cap_screen.cpp │ ├── cap_screen_glshaders.vdfx │ ├── cap_vfw.cpp │ ├── capaudiocomp.cpp │ ├── caplog.cpp │ ├── capreplay.cpp │ ├── capresync.cpp │ ├── d3d11_colorconv.fx │ ├── d3d11_display.fx │ ├── d3d11_downscale.fx │ ├── d3d11_pointer.fx │ └── stdafx.cpp ├── VDDisplay ├── VDDisplay.vcproj ├── VDDisplay.vcxproj ├── VDDisplay.vcxproj.filters ├── h │ ├── bicubic.h │ ├── displaydrv3d.h │ ├── displaymgr.h │ └── stdafx.h ├── shaders │ ├── bicubic.fxh │ ├── image.fx │ ├── pal8.fxh │ ├── rgb.fxh │ ├── sysdefs.fxh │ ├── utils.fxh │ ├── ycbcr.fxh │ └── ycbcr_interleaved.fxh └── source │ ├── bicubic.cpp │ ├── display.cpp │ ├── displaydrv.cpp │ ├── displaydrv3d.cpp │ ├── displaymgr.cpp │ ├── renderer.cpp │ └── stdafx.cpp ├── VDFilters ├── VDFilters.vcproj ├── VDFilters.vcxproj ├── h │ ├── Blur.h │ ├── DSP.h │ ├── SingleValueDialog.h │ ├── stdafx.h │ └── x86 │ │ └── DSP_SSE2.h ├── res │ ├── VDFilters.rc │ └── resource.h └── source │ ├── Blur.cpp │ ├── DSP.cpp │ ├── SingleValueDialog.cpp │ ├── VFAliasFormat.cpp │ ├── VFBlendLayers.cpp │ ├── VFBlendLayers.vdshaders │ ├── VFBlur.cpp │ ├── VFBlur.vdshaders │ ├── VFBoxBlur.cpp │ ├── VFBrightCont.cpp │ ├── VFBrightCont.vdshaders │ ├── VFChromaSmoother.cpp │ ├── VFConvertFormat.cpp │ ├── VFDeinterlace.cpp │ ├── VFDeinterlace.vdshaders │ ├── VFDrawText.cpp │ ├── VFFieldBob.cpp │ ├── VFFieldBob2.cpp │ ├── VFFieldDelay.cpp │ ├── VFFieldSwap.cpp │ ├── VFFlipHorizontally.cpp │ ├── VFFlipVertically.cpp │ ├── VFGammaCorrect.cpp │ ├── VFGrayscale.cpp │ ├── VFGrayscale.vdshaders │ ├── VFHSV.cpp │ ├── VFIVTC.cpp │ ├── VFInterlace.cpp │ ├── VFInterpolate.cpp │ ├── VFInvert.cpp │ ├── VFInvert.vdshaders │ ├── VFList.cpp │ ├── VFMergeLayers.cpp │ ├── VFMergeLayers.vdshaders │ ├── VFMotionBlur.cpp │ ├── VFNull.cpp │ ├── VFPerspective.cpp │ ├── VFReduce2.cpp │ ├── VFReduce2HQ.cpp │ ├── VFRotate.cpp │ ├── VFRotate2.cpp │ ├── VFSharpen.cpp │ ├── VFSmoother.cpp │ ├── VFTV.cpp │ ├── VFTemporalSmoother.cpp │ ├── VFThreshold.cpp │ ├── VFWarpResize.cpp │ ├── VFWarpSharp.cpp │ ├── VFWarpSharp.vdshaders │ ├── a_brightcont.asm │ ├── a_grayscale.asm │ ├── a_reduce.asm │ ├── a_rotate.asm │ ├── a_sharpen.asm │ ├── a_threshold.asm │ ├── a_tv.asm │ ├── stdafx.cpp │ └── x86 │ └── DSP_SSE2.cpp ├── VDLib ├── VDLib.vcproj ├── VDLib.vcxproj ├── VDLib.vcxproj.filters ├── h │ ├── fft_radix2.inl │ ├── fft_radix4.inl │ └── fft_sse.inl ├── source │ ├── Dialog.cpp │ ├── Job.cpp │ ├── ParameterCurve.cpp │ ├── PortableRegistry.cpp │ ├── UIProxies.cpp │ ├── fft.cpp │ └── win32 │ │ ├── DIBSection.cpp │ │ ├── DebugOutputFilter.cpp │ │ └── FileMapping.cpp ├── stdafx.cpp └── stdafx.h ├── VDXFrame ├── VDXFrame.vcproj ├── VDXFrame.vcxproj ├── VDXFrame.vcxproj.filters ├── include │ └── stdafx.h └── source │ ├── VideoFilter.cpp │ ├── VideoFilterDialog.cpp │ ├── VideoFilterEntry.cpp │ └── stdafx.cpp ├── VirtualDub-projects.props ├── VirtualDub-vc14-AMD64.props ├── VirtualDub-vc14-Debug.props ├── VirtualDub-vc14-IX86.props ├── VirtualDub-vc14-Release.props ├── VirtualDub-vc14.props ├── VirtualDub-vc14.sln ├── VirtualDub-vc9-AMD64.vsprops ├── VirtualDub-vc9-Debug.vsprops ├── VirtualDub-vc9-IX86.vsprops ├── VirtualDub-vc9-Release.vsprops ├── VirtualDub-vc9.sln ├── VirtualDub-vc9.vsprops ├── VirtualDub ├── VirtualDub.vcproj ├── VirtualDub.vcxproj ├── VirtualDub.vcxproj.filters ├── build.cfg ├── dist │ ├── aviproxy │ │ ├── proxyoff.reg │ │ ├── proxyon.reg │ │ └── readme.txt │ ├── frameserver64.reg │ ├── plugins32 │ │ └── readme.txt │ └── plugins64 │ │ └── readme.txt ├── h │ ├── APNG.h │ ├── AVIOutput.h │ ├── AVIOutputAPNG.h │ ├── AVIOutputCLI.h │ ├── AVIOutputFLM.h │ ├── AVIOutputFile.h │ ├── AVIOutputGIF.h │ ├── AVIOutputImages.h │ ├── AVIOutputPlugin.h │ ├── AVIOutputPreview.h │ ├── AVIOutputRawAudio.h │ ├── AVIOutputRawVideo.h │ ├── AVIOutputSegmented.h │ ├── AVIOutputStriped.h │ ├── AVIOutputWAV.h │ ├── AVIPipe.h │ ├── AVIReadCache.h │ ├── AVIReadHandler.h │ ├── AVIReadIndex.h │ ├── AVIStripeSystem.h │ ├── AccelEditDialog.h │ ├── AsyncBlitter.h │ ├── Audio.h │ ├── AudioDisplay.h │ ├── AudioFilterSystem.h │ ├── AudioSource.h │ ├── AudioSourceAVI.h │ ├── AutoRecover.h │ ├── Avisynth.h │ ├── CVideoCompressor.h │ ├── ClippingControl.h │ ├── Command.h │ ├── Dub.h │ ├── DubFrameRequestQueue.h │ ├── DubIO.h │ ├── DubOutput.h │ ├── DubPreviewClock.h │ ├── DubProcess.h │ ├── DubProcessVideo.h │ ├── DubProcessVideoDisplay.h │ ├── DubSource.h │ ├── DubStatus.h │ ├── DubUtils.h │ ├── DynamicCode.h │ ├── ExternalEncoderProfile.h │ ├── FastReadStream.h │ ├── Filter.h │ ├── FilterAccelContext.h │ ├── FilterAccelConverter.h │ ├── FilterAccelDownloader.h │ ├── FilterAccelEngine.h │ ├── FilterAccelFrameAllocator.h │ ├── FilterAccelReadbackBuffer.h │ ├── FilterAccelUploader.h │ ├── FilterChainDesc.h │ ├── FilterFrame.h │ ├── FilterFrameAllocator.h │ ├── FilterFrameAllocatorManager.h │ ├── FilterFrameAllocatorMemory.h │ ├── FilterFrameAllocatorProxy.h │ ├── FilterFrameBufferAccel.h │ ├── FilterFrameBufferMemory.h │ ├── FilterFrameCache.h │ ├── FilterFrameConverter.h │ ├── FilterFrameManualSource.h │ ├── FilterFrameQueue.h │ ├── FilterFrameRequest.h │ ├── FilterFrameSharingPredictor.h │ ├── FilterFrameVideoSource.h │ ├── FilterGraph.h │ ├── FilterInstance.h │ ├── FilterPreview.h │ ├── FilterSystem.h │ ├── Filters.h │ ├── Fixes.h │ ├── FrameSubset.h │ ├── HexViewer.h │ ├── Histogram.h │ ├── HotKeyExControl.h │ ├── IVideoCompressor.h │ ├── IVideoDriver.h │ ├── InputFile.h │ ├── InputFileANIM.h │ ├── InputFileAVI.h │ ├── InputFileImages.h │ ├── InputFileMP3.h │ ├── InputFileTestPhysics.h │ ├── InputFileWAV.h │ ├── Job.h │ ├── JobControl.h │ ├── LevelControl.h │ ├── LogWindow.h │ ├── MJPEGDecoder.h │ ├── MRUList.h │ ├── MonoBitmap.h │ ├── ParameterCurveControl.h │ ├── PositionControl.h │ ├── ProgressDialog.h │ ├── RTProfileDisplay.h │ ├── SceneDetector.h │ ├── ThreadedVideoCompressor.h │ ├── VBitmap.h │ ├── VideoSequenceCompressor.h │ ├── VideoSource.h │ ├── VideoSourceAVI.h │ ├── VideoSourceAdapter.h │ ├── VideoSourceImages.h │ ├── VideoWindow.h │ ├── VirtualDub.h │ ├── af_base.h │ ├── af_input.h │ ├── af_polyphase.h │ ├── af_sink.h │ ├── afiltdlg.h │ ├── autodetect.h │ ├── auxdlg.h │ ├── backface.h │ ├── capclip.h │ ├── capdialogs.h │ ├── capfilter.h │ ├── capgraph.h │ ├── caphisto.h │ ├── capspill.h │ ├── capture.h │ ├── captureui.h │ ├── caputils.h │ ├── capvumeter.h │ ├── convert.h │ ├── crash.h │ ├── dTVdrv.h │ ├── disasm.h │ ├── f_convolute.h │ ├── f_resize_config.h │ ├── filtdlg.h │ ├── gui.h │ ├── helpcoach.h │ ├── helpfile.h │ ├── image.h │ ├── imageiff.h │ ├── imagejpeg.h │ ├── imagejpegdec.h │ ├── indeo_if.h │ ├── misc.h │ ├── mjpeg_color.inl │ ├── mpeg.h │ ├── optdlg.h │ ├── oshelper.h │ ├── plugins.h │ ├── prefs.h │ ├── project.h │ ├── projectui.h │ ├── script.h │ ├── server.h │ ├── stdafx.h │ ├── timeline.h │ ├── uiframe.h │ ├── version.h │ └── yuvcodec.h ├── manifest │ ├── comctl6.manifest │ ├── comctl6_x64.manifest │ └── win7.manifest ├── res │ ├── Changes.bin │ ├── Changes.txt │ ├── VirtualDub.rc │ ├── addpoint.cur │ ├── amd64.vdi │ ├── cap_point.cur │ ├── credits.txt │ ├── dragpoint.cur │ ├── ia32.vdi │ ├── license.bin │ ├── mod2.ico │ ├── modifypoint.cur │ ├── null.bin │ ├── pos_backward.ico │ ├── pos_backward_x128.bmp │ ├── pos_end.ico │ ├── pos_end_x128.bmp │ ├── pos_forward.ico │ ├── pos_forward_x128.bmp │ ├── pos_mark.ico │ ├── pos_mark2.ico │ ├── pos_mark2_x128.bmp │ ├── pos_mark_x128.bmp │ ├── pos_markout.ico │ ├── pos_markout2.ico │ ├── pos_markout2_x128.bmp │ ├── pos_markout_x128.bmp │ ├── pos_next_key.ico │ ├── pos_next_key_x128.bmp │ ├── pos_play.ico │ ├── pos_play2.ico │ ├── pos_play2_x128.bmp │ ├── pos_play_x128.bmp │ ├── pos_prev_key.ico │ ├── pos_prev_key_x128.bmp │ ├── pos_scenefwd.ico │ ├── pos_scenefwd_x128.bmp │ ├── pos_scenerev.ico │ ├── pos_scenerev_x128.bmp │ ├── pos_start.ico │ ├── pos_start_x128.bmp │ ├── pos_stop.ico │ ├── pos_stop_x128.bmp │ ├── rel_notes.bin │ ├── rel_notes.txt │ ├── removepoint.cur │ ├── resource.h │ ├── version.bin │ ├── version.rc │ ├── virtuald.ico │ └── virtualdub.ami ├── source │ ├── AVIOutput.cpp │ ├── AVIOutputAPNG.cpp │ ├── AVIOutputCLI.cpp │ ├── AVIOutputFLM.cpp │ ├── AVIOutputFile.cpp │ ├── AVIOutputGIF.cpp │ ├── AVIOutputImages.cpp │ ├── AVIOutputPlugin.cpp │ ├── AVIOutputPreview.cpp │ ├── AVIOutputRawAudio.cpp │ ├── AVIOutputRawVideo.cpp │ ├── AVIOutputSegmented.cpp │ ├── AVIOutputStriped.cpp │ ├── AVIOutputWAV.cpp │ ├── AVIPipe.cpp │ ├── AVIReadCache.cpp │ ├── AVIReadHandler.cpp │ ├── AVIReadHandlerTunnelW32.cpp │ ├── AVIReadIndex.cpp │ ├── AVIStripeSystem.cpp │ ├── A_bitmap.asm │ ├── A_resize.asm │ ├── AccelEditDialog.cpp │ ├── AsyncBlitter.cpp │ ├── Audio.cpp │ ├── AudioDisplay.cpp │ ├── AudioFilterSystem.cpp │ ├── AudioSource.cpp │ ├── AutoRecover.cpp │ ├── BatchWizard.cpp │ ├── CVideoCompressor.cpp │ ├── Capclip.cpp │ ├── Caphisto.cpp │ ├── Capture.cpp │ ├── ClippingControl.cpp │ ├── Command.cpp │ ├── Crash.cpp │ ├── Disasm.cpp │ ├── Dub.cpp │ ├── DubFrameRequestQueue.cpp │ ├── DubIO.cpp │ ├── DubOutput.cpp │ ├── DubPreviewClock.cpp │ ├── DubProcess.cpp │ ├── DubProcessVideo.cpp │ ├── DubProcessVideoDisplay.cpp │ ├── DubSource.cpp │ ├── DubStatus.cpp │ ├── DubUtils.cpp │ ├── DynamicCode.cpp │ ├── ExternalEncoderDialog.cpp │ ├── ExternalEncoderProfile.cpp │ ├── F_emboss.cpp │ ├── F_levels.cpp │ ├── F_list.cpp │ ├── FastReadStream.cpp │ ├── Filtdlg.cpp │ ├── FilterAccelContext.cpp │ ├── FilterAccelConverter.cpp │ ├── FilterAccelDownloader.cpp │ ├── FilterAccelEngine.cpp │ ├── FilterAccelEngine.vdshaders │ ├── FilterAccelEngine_SSE2.cpp │ ├── FilterAccelFrameAllocator.cpp │ ├── FilterAccelReadbackBuffer.cpp │ ├── FilterAccelUploader.cpp │ ├── FilterCallbacks.cpp │ ├── FilterChainDesc.cpp │ ├── FilterFrame.cpp │ ├── FilterFrameAllocator.cpp │ ├── FilterFrameAllocatorManager.cpp │ ├── FilterFrameAllocatorMemory.cpp │ ├── FilterFrameAllocatorProxy.cpp │ ├── FilterFrameBufferAccel.cpp │ ├── FilterFrameBufferMemory.cpp │ ├── FilterFrameCache.cpp │ ├── FilterFrameConverter.cpp │ ├── FilterFrameManualSource.cpp │ ├── FilterFrameQueue.cpp │ ├── FilterFrameRequest.cpp │ ├── FilterFrameSharingPredictor.cpp │ ├── FilterFrameVideoSource.cpp │ ├── FilterGraph.cpp │ ├── FilterInstance.cpp │ ├── FilterListAddDialog.cpp │ ├── FilterListCropDialog.cpp │ ├── FilterPreview.cpp │ ├── FilterSystem.cpp │ ├── Filters.cpp │ ├── FrameSubset.cpp │ ├── HexViewer.cpp │ ├── Histogram.cpp │ ├── HotKeyExControl.cpp │ ├── Init.cpp │ ├── InputFile.cpp │ ├── InputFileANIM.cpp │ ├── InputFileAPNG.cpp │ ├── InputFileASF.cpp │ ├── InputFileAVI.cpp │ ├── InputFileFLM.cpp │ ├── InputFileGIF.cpp │ ├── InputFileImages.cpp │ ├── InputFileMP3.cpp │ ├── InputFilePlugin.cpp │ ├── InputFileRawVideo.cpp │ ├── InputFileTest.cpp │ ├── InputFileTestPhysics.cpp │ ├── InputFileWAV.cpp │ ├── Job.cpp │ ├── JobControl.cpp │ ├── JobControlDialog.cpp │ ├── LevelControl.cpp │ ├── LogWindow.cpp │ ├── MJPEGDecoder.cpp │ ├── MRUList.cpp │ ├── Main.cpp │ ├── MonoBitmap.cpp │ ├── Mpeg.cpp │ ├── ParameterCurveControl.cpp │ ├── PluginsDialog.cpp │ ├── PositionControl.cpp │ ├── ProgressDialog.cpp │ ├── RTProfileDisplay.cpp │ ├── RTProfileDisplay2.cpp │ ├── SceneDetector.cpp │ ├── Script.cpp │ ├── ShutdownDialog.cpp │ ├── ThreadedVideoCompressor.cpp │ ├── VBitmap.cpp │ ├── VideoSequenceCompressor.cpp │ ├── VideoSource.cpp │ ├── VideoSourceAdapter.cpp │ ├── VideoSourceImages.cpp │ ├── VideoWindow.cpp │ ├── a64_resize.asm │ ├── a_chromasmoother.asm │ ├── a_cmult.asm │ ├── a_convertout.asm │ ├── a_convolute.asm │ ├── a_histogram.asm │ ├── a_mjpgdec.asm │ ├── a_scene.asm │ ├── a_yuv2rgbhq.asm │ ├── a_yuv422torgb.asm │ ├── a_yuvtable.asm │ ├── about.cpp │ ├── acompchoose.cpp │ ├── af_base.cpp │ ├── af_centercut.cpp │ ├── af_centermix.cpp │ ├── af_chorus.cpp │ ├── af_formatconv.cpp │ ├── af_gain.cpp │ ├── af_input.cpp │ ├── af_list.cpp │ ├── af_mix.cpp │ ├── af_newrate.cpp │ ├── af_pitchshift.cpp │ ├── af_pitchshift2.cpp │ ├── af_polyphase.cpp │ ├── af_sink.cpp │ ├── af_split.cpp │ ├── af_timestretch.cpp │ ├── afiltdlg.cpp │ ├── autodetect.cpp │ ├── auxdlg.cpp │ ├── backface.cpp │ ├── capbt848.cpp │ ├── capdialogs.cpp │ ├── capemu.cpp │ ├── capfilter.cpp │ ├── capgraph.cpp │ ├── capspill.cpp │ ├── captureui.cpp │ ├── caputils.cpp │ ├── capvumeter.cpp │ ├── capwarn.cpp │ ├── compchoose.cpp │ ├── dynacomp.inc │ ├── f_convolute.cpp │ ├── f_curves.cpp │ ├── f_debugcrop.cpp │ ├── f_debugerror.cpp │ ├── f_fill.cpp │ ├── f_logo.cpp │ ├── f_logo_mmx.cpp │ ├── f_resize.cpp │ ├── f_resize.vdshaders │ ├── f_resize_config.cpp │ ├── f_showinfo.cpp │ ├── f_test.cpp │ ├── f_triresize.cpp │ ├── gui.cpp │ ├── icdriver.cpp │ ├── if_list.cpp │ ├── if_testid.cpp │ ├── image.cpp │ ├── imageiff.cpp │ ├── imagejpeg.cpp │ ├── imagejpegdec.cpp │ ├── leaks.cpp │ ├── license.cpp │ ├── memcheck.cpp │ ├── misc.cpp │ ├── optdlg.cpp │ ├── oshelper.cpp │ ├── plugins.cpp │ ├── prefs.cpp │ ├── project.cpp │ ├── projectui.cpp │ ├── server.cpp │ ├── sparseavi.cpp │ ├── stdafx.cpp │ ├── test_dub.cpp │ ├── test_pal8.cpp │ ├── test_pixmaps.cpp │ ├── test_resampler.cpp │ ├── test_videodecode.cpp │ ├── test_videofilt.cpp │ ├── timeline.cpp │ ├── tool.cpp │ ├── tool.h │ ├── uiframe.cpp │ ├── version.cpp │ └── yuvcodec.cpp └── vf_input.cpp ├── YASM.props ├── YASM.rules ├── YASM.targets ├── YASM.xml ├── dfsc ├── dfsc.cpp └── dfsc.h ├── directshow ├── LICENSE ├── amextra.cpp ├── amextra.h ├── amfilter.cpp ├── amfilter.h ├── amvideo.cpp ├── arithutil.cpp ├── baseclasses.vcproj ├── baseclasses.vcxproj ├── 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 ├── disasm ├── amd64.bin ├── amd64.txt ├── disasm.vcproj ├── disasm.vcxproj ├── h │ ├── ruleset.h │ ├── runtime_dasm.h │ ├── runtime_tracedec.h │ └── utils.h ├── ia32.bin ├── ia32.txt ├── main.cpp ├── readme.txt └── source │ ├── encoder_dasm.cpp │ ├── encoder_tracedec.cpp │ ├── parser.cpp │ ├── runtime_dasm.cpp │ ├── runtime_tracedec.cpp │ └── utils.cpp ├── h └── vd2 │ ├── Dita │ ├── accel.h │ ├── basetypes.h │ ├── bytecode.h │ ├── controls.h │ ├── interface.h │ ├── resources.h │ ├── services.h │ ├── w32accel.h │ ├── w32base.h │ ├── w32control.h │ ├── w32interface.h │ └── w32peer.h │ ├── Kasumi │ ├── blitter.h │ ├── pixel.h │ ├── pixmap.h │ ├── pixmapops.h │ ├── pixmaputils.h │ ├── region.h │ ├── resample.h │ ├── resample_kernels.h │ ├── tables.h │ ├── text.h │ └── triblt.h │ ├── Meia │ ├── MPEGConvert.h │ ├── MPEGDecoder.h │ ├── MPEGFile.h │ ├── MPEGIDCT.h │ ├── MPEGPredict.h │ ├── decode_dv.h │ ├── decode_huffyuv.h │ ├── decode_png.h │ └── encode_png.h │ ├── Priss │ ├── convert.h │ └── decoder.h │ ├── Riza │ ├── audiocodec.h │ ├── audioformat.h │ ├── audioout.h │ ├── avi.h │ ├── bitmap.h │ ├── direct3d.h │ ├── displaydrvdx9.h │ ├── opengl.h │ ├── videocodec.h │ └── w32audiocodec.h │ ├── Tessa │ ├── Context.h │ ├── Format.h │ └── Types.h │ ├── VDCapture │ ├── AudioGrabberWASAPI.h │ ├── ScreenGrabber.h │ ├── ScreenGrabberDXGI12.h │ ├── ScreenGrabberGDI.h │ ├── ScreenGrabberGL.h │ ├── cap_dshow.h │ ├── capaudiocomp.h │ ├── capdriver.h │ ├── capdrivers.h │ ├── caplog.h │ ├── capreplay.h │ ├── capresync.h │ └── win32 │ │ ├── api_dxgi.h │ │ └── api_wasapi.h │ ├── VDDisplay │ ├── compositor.h │ ├── display.h │ ├── displaydrv.h │ └── renderer.h │ ├── VDFilters │ └── VFList.h │ ├── VDLib │ ├── Dialog.h │ ├── Job.h │ ├── ParameterCurve.h │ ├── PortableRegistry.h │ ├── UIProxies.h │ ├── fft.h │ └── win32 │ │ ├── DIBSection.h │ │ ├── DebugOutputFilter.h │ │ └── FileMapping.h │ ├── VDXFrame │ ├── Unknown.h │ ├── VideoFilter.h │ ├── VideoFilterDialog.h │ └── VideoFilterEntry.h │ ├── external │ └── glATI.h │ ├── libav_tiff │ └── tiff_image.h │ ├── plugin │ ├── vdaudiofilt.h │ ├── vdinputdriver.h │ ├── vdmodule.h │ ├── vdplugin.h │ ├── vdtool.h │ ├── vdvideoaccel.h │ ├── vdvideofilt.h │ └── vdvideoutil.h │ ├── system │ ├── Error.h │ ├── Fraction.h │ ├── VDNamespace.h │ ├── VDQueue.h │ ├── VDRingBuffer.h │ ├── VDScheduler.h │ ├── VDString.h │ ├── atomic.h │ ├── binary.h │ ├── bitmath.h │ ├── cache.h │ ├── cmdline.h │ ├── cpuaccel.h │ ├── date.h │ ├── debug.h │ ├── debugx86.h │ ├── event.h │ ├── file.h │ ├── fileasync.h │ ├── filesys.h │ ├── filewatcher.h │ ├── halffloat.h │ ├── hash.h │ ├── int128.h │ ├── linearalloc.h │ ├── list.h │ ├── log.h │ ├── math.h │ ├── memory.h │ ├── process.h │ ├── profile.h │ ├── progress.h │ ├── protscope.h │ ├── refcount.h │ ├── registry.h │ ├── registrymemory.h │ ├── seh.h │ ├── source │ │ └── registrymemory.cpp │ ├── strutil.h │ ├── text.h │ ├── thread.h │ ├── thunk.h │ ├── time.h │ ├── tls.h │ ├── unknown.h │ ├── vdalloc.h │ ├── vdstdc.h │ ├── vdstl.h │ ├── vdstl_hash.h │ ├── vdstl_hashmap.h │ ├── vdstl_hashset.h │ ├── vdstl_hashtable.h │ ├── vdstl_vector.h │ ├── vdtypes.h │ ├── vectors.h │ ├── vectors_float.h │ ├── vectors_int.h │ ├── w32assist.h │ ├── win32 │ │ ├── intrin.h │ │ └── miniwindows.h │ └── zip.h │ └── vdjson │ ├── jsonnametable.h │ ├── jsonreader.h │ ├── jsonvalue.h │ └── jsonwriter.h ├── helpfile ├── Makefile ├── helpfile.vcproj ├── helpfile.vcxproj └── source │ ├── audiofilters.lina │ ├── avi.lina │ ├── batch │ └── distributed.lina │ ├── capture.lina │ ├── crash.lina │ ├── dialogs.lina │ ├── fullstop.txt │ ├── fxvideo.lina │ ├── htmltoc.lina │ ├── layout.css │ ├── pics │ ├── artifact-banding.png │ ├── artifact-compression.jpeg │ ├── artifact-interlacing.png │ ├── artifact-rainbow.png │ ├── artifact-scaling.png │ ├── c-infopanel.png │ ├── c-spilldrives.png │ ├── c-timing.png │ ├── c-volume1.png │ ├── c-volume2.png │ ├── c-vumeter.png │ ├── d-audiocompression.png │ ├── d-audioconversion.png │ ├── d-audiofilters.png │ ├── d-audiointerleaving.png │ ├── d-audiovolume.png │ ├── d-capturesettings.png │ ├── d-preferences.png │ ├── d-videocolordepth.png │ ├── d-videocompression.png │ ├── d-videofilters.png │ ├── d-videoframerate.png │ ├── d-videorange.png │ ├── p-displaymenu.png │ ├── p-mainui-audiodisplay-spectrogram.jpeg │ ├── p-mainui-audiodisplay-waveform.png │ ├── p-mainui-curveedit.png │ ├── p-mainui-framestep.png │ ├── p-mainui-keystep.png │ ├── p-mainui-mark.png │ ├── p-mainui-playback.png │ ├── p-mainui-scenestep.png │ ├── p-mainui-timestamp.png │ └── p-mainui.png │ ├── render.lina │ ├── render │ ├── compression.lina │ └── externalencoder.lina │ ├── root.lina │ └── videofilters.lina ├── libav_tiff ├── COPYING.LGPLv2.1 ├── README ├── av_stub.h ├── bytestream.h ├── config.h ├── intreadwrite.h ├── libav_tiff.vcproj ├── libav_tiff.vcxproj ├── lzw.c ├── lzw.h ├── lzwenc.c ├── put_bits.h ├── tiff.c ├── tiff.h ├── tiff_common.c ├── tiff_common.h ├── tiff_data.c ├── tiff_data.h ├── tiff_image.cpp ├── tiffenc.c └── vc9 │ └── stdint.h ├── samplefilter ├── h │ └── af_base.h ├── res │ ├── resource.h │ └── samplefilter.rc ├── samplefilter.vcproj └── source │ ├── af_base.cpp │ ├── af_ringmodulate.cpp │ └── main.cpp ├── system ├── h │ └── stdafx.h ├── source │ ├── Error.cpp │ ├── Fraction.cpp │ ├── VDNamespace.cpp │ ├── VDScheduler.cpp │ ├── VDString.cpp │ ├── a64_cpuaccel.asm │ ├── a64_fraction.asm │ ├── a64_int128.asm │ ├── a64_thunk.asm │ ├── a_memory.asm │ ├── a_thunk.asm │ ├── bitmath.cpp │ ├── cache.cpp │ ├── cmdline.cpp │ ├── cpuaccel.cpp │ ├── date.cpp │ ├── debug.cpp │ ├── debugx86.cpp │ ├── error_win32.cpp │ ├── event.cpp │ ├── file.cpp │ ├── fileasync.cpp │ ├── filestream.cpp │ ├── filesys.cpp │ ├── filewatcher.cpp │ ├── halffloat.cpp │ ├── hash.cpp │ ├── int128.cpp │ ├── linearalloc.cpp │ ├── list.cpp │ ├── log.cpp │ ├── math.cpp │ ├── memory.cpp │ ├── process.cpp │ ├── profile.cpp │ ├── progress.cpp │ ├── protscope.cpp │ ├── refcount.cpp │ ├── registry.cpp │ ├── stdaccel.cpp │ ├── stdafx.cpp │ ├── strutil.cpp │ ├── text.cpp │ ├── thread.cpp │ ├── thunk.cpp │ ├── time.cpp │ ├── tls.cpp │ ├── vdalloc.cpp │ ├── vdstl.cpp │ ├── vdstl_hash.cpp │ ├── vdstl_hashtable.cpp │ ├── vectors.cpp │ ├── w32assist.cpp │ └── zip.cpp ├── system.vcproj ├── system.vcxproj └── system.vcxproj.filters ├── test ├── h │ └── test.h ├── source │ ├── TestAVIReadIndex.cpp │ ├── TestAudioConvert.cpp │ ├── TestBufferedStream.cpp │ ├── TestDeque.cpp │ ├── TestDistributedJobQueue.cpp │ ├── TestFilesys.cpp │ ├── TestFraction.cpp │ ├── TestHalfFloat.cpp │ ├── TestMath.cpp │ ├── TestParameterCurve.cpp │ ├── TestPixel.cpp │ ├── TestPixmap.cpp │ ├── TestResampler.cpp │ ├── TestSpanUtils.cpp │ ├── TestString.cpp │ ├── TestSynchronization.cpp │ ├── TestUberblit.cpp │ ├── TestUberblitPerf.cpp │ ├── TestVector.cpp │ ├── TestVector2.cpp │ ├── main.cpp │ └── test.cpp ├── test.vcproj └── test.vcxproj ├── vdicmdrv ├── CCompRemote.cpp ├── CCompRemote.h ├── CVideoCompressor.cpp ├── CVideoCompressor.h ├── IVideoCompressor.h ├── IVideoDriver.h ├── main.cpp ├── notes.txt ├── resource.h ├── vdicmdrv.def ├── vdicmdrv.rc ├── vdicmdrv.vcproj └── vdicmdrv.vcxproj ├── vdjson ├── h │ └── stdafx.h ├── source │ ├── jsonnametable.cpp │ ├── jsonreader.cpp │ ├── jsonvalue.cpp │ ├── jsonwriter.cpp │ └── stdafx.cpp ├── vdjson.vcproj └── vdjson.vcxproj ├── vdlaunch ├── h │ └── stdafx.h ├── source │ ├── stdafx.cpp │ ├── tinycrt.cpp │ └── vdlaunch.cpp ├── vdlaunch.vcproj └── vdlaunch.vcxproj ├── vdremote ├── Main.cpp ├── clsid.h ├── resource.h ├── vdremote.def ├── vdremote.h ├── vdremote.rc ├── vdremote.vcproj └── vdremote.vcxproj ├── vdsvrlnk ├── main.cpp ├── resource.h ├── vdserver.h ├── vdsvrlnk.rc ├── vdsvrlnk.vcproj └── vdsvrlnk.vcxproj ├── vdub ├── res │ ├── resource.h │ ├── vdub.ico │ └── vdub.rc ├── source │ ├── tinycrt.cpp │ └── vdub.cpp ├── vdub.vcproj └── vdub.vcxproj ├── wipe.bat └── zlib ├── adler32.c ├── compress.c ├── crc32.c ├── crc32.h ├── deflate.c ├── deflate.h ├── gzio.c ├── infback.c ├── inffast.c ├── inffast.h ├── inffixed.h ├── inflate.c ├── inflate.h ├── inftrees.c ├── inftrees.h ├── trees.c ├── trees.h ├── uncompr.c ├── zconf.h ├── zlib.h ├── zlib.vcproj ├── zlib.vcxproj ├── zlib.vcxproj.filters ├── zutil.c └── zutil.h /.gitignore: -------------------------------------------------------------------------------- 1 | lib 2 | obj 3 | out 4 | *.user 5 | *.ncb 6 | *.suo 7 | *.aps 8 | src/VDCapture/h/*.inl 9 | src/Riza/h/*.inl 10 | src/VDDisplay/autogen 11 | src/VDFilters/autogen 12 | src/VirtualDub/autogen 13 | version2.bin 14 | verstub.asm 15 | ipch 16 | *.db 17 | *.opendb 18 | -------------------------------------------------------------------------------- /BUILDING.txt: -------------------------------------------------------------------------------- 1 | 1. Install Visual Studio 2015 Community Edition with Windows XP Support for C++ 2 | 2. Install latest DirectX SDK (2010 June): https://www.microsoft.com/en-us/download/details.aspx?id=6812 3 | 3. Download YASM: http://yasm.tortall.net/Download.html 4 | * Win64 .exe (for general use on 64-bit Windows) 5 | Rename to yasm.exe and put it somewhere in the PATH 6 | Good place is vc\bin directory (for example C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\) 7 | 4. Open src\VirtualDub.sln 8 | 5. Build Win32 variant FIRST 9 | 6. Build x64 variant 10 | -------------------------------------------------------------------------------- /Changes: -------------------------------------------------------------------------------- 1 | This code includes modifications 2 | see sourceforge.net/projects/vdfiltermod 3 | -------------------------------------------------------------------------------- /publish/edittest.script: -------------------------------------------------------------------------------- 1 | declare vd = VirtualDub; 2 | declare vdv = vd.video; 3 | declare vdvf = vd.video.filters; 4 | declare vda = vd.audio; 5 | declare vds = vd.subset; 6 | declare log = vd.Log; 7 | declare tostr = Sylia.ToString; 8 | declare assert = Sylia.Assert; 9 | declare validate = vdv.__ValidateFrames2; 10 | 11 | // override the default mode to make sure we aren't tripped by saved settings 12 | vdv.SetInputFormat(0); 13 | vdv.SetOutputFormat(0); 14 | 15 | // create test file 16 | vd.Open("", "TestId", 0); 17 | assert(vdv.width == 8); 18 | assert(vdv.height == 4); 19 | 20 | // test frames [0,9] via selection 21 | vd.Open("", "TestId", 0); 22 | vdv.SetRange(0, 9000); // 100-10 23 | vd.SaveAVI("__test0.avi"); 24 | vd.Open("__test0.avi"); 25 | 26 | assert(vdv.framerate == 10); 27 | validate(0, 1, 2, 3, 4, 5, 6, 7, 8, 9); 28 | 29 | // set frame rate to 20 and revalidate 30 | // 31 | // Note that for compatibility reasons, the range source always be in source time, 32 | // regardless of frame rate adjustment. 33 | vd.Open("", "TestId", 0); 34 | vdv.SetFrameRate2(20, 1, 1); 35 | vdv.SetRange(0, 9500); // 100-95 36 | vd.SaveAVI("__test1.avi"); 37 | vdv.SetFrameRate2(0, 0, 1); 38 | 39 | vd.Open("__test1.avi"); 40 | 41 | assert(vdv.framerate == 20); 42 | validate(0, 1, 2, 3, 4); 43 | -------------------------------------------------------------------------------- /publish/filters.txt: -------------------------------------------------------------------------------- 1 | 2:1 reduction (high quality) 2 | 2:1 reduction 3 | blur more 4 | blur 5 | bob doubler 6 | box blur 7 | brightness/contrast 8 | chroma smoother 9 | convert format 10 | deinterlace 11 | emboss 12 | field bob 13 | field swap 14 | fill 15 | flip horizontally 16 | flip vertically 17 | general convolution 18 | grayscale 19 | HSV adjust 20 | interlace 21 | interpolate 22 | invert 23 | IVTC 24 | levels 25 | motion blur 26 | null transform 27 | perspective 28 | resize 29 | rotate 30 | rotate2 31 | sharpen 32 | smoother 33 | temporal smoother 34 | threshold 35 | TV 36 | warp resize 37 | warp sharp 38 | -------------------------------------------------------------------------------- /src/Ami/h/bytecode.h: -------------------------------------------------------------------------------- 1 | #include -------------------------------------------------------------------------------- /src/Ami/h/utils.h: -------------------------------------------------------------------------------- 1 | #ifndef f_VD2_AMI_UTILS_H 2 | #define f_VD2_AMI_UTILS_H 3 | 4 | #include 5 | 6 | std::string ANSIify(const std::wstring& unicode); 7 | void warning(const char *format, ...); 8 | void __declspec(noreturn) fatal(const char *format, ...); 9 | void __declspec(noreturn) fatal_internal(const char *fname, const int line); 10 | 11 | std::basic_string ConvertToSCSU(const std::wstring& s); 12 | 13 | #endif 14 | -------------------------------------------------------------------------------- /src/Asuka/h/stdafx.h: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | -------------------------------------------------------------------------------- /src/Asuka/res/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Visual C++ generated include file. 3 | // Used by Asuka.rc 4 | // 5 | #define IDD_VERINC_ERROR 101 6 | #define IDD_SETUP 102 7 | #define IDC_CHECKOUT 1004 8 | #define IDC_BUTTON2 1005 9 | #define IDC_BUTTON1 1005 10 | #define IDC_STRIP_READONLY 1006 11 | #define IDC_EDIT1 1008 12 | #define IDC_COUNTER_TAG 1008 13 | #define IDC_STATIC -1 14 | 15 | // Next default values for new objects 16 | // 17 | #ifdef APSTUDIO_INVOKED 18 | #ifndef APSTUDIO_READONLY_SYMBOLS 19 | #define _APS_NEXT_RESOURCE_VALUE 103 20 | #define _APS_NEXT_COMMAND_VALUE 40001 21 | #define _APS_NEXT_CONTROL_VALUE 1009 22 | #define _APS_NEXT_SYMED_VALUE 101 23 | #endif 24 | #endif 25 | -------------------------------------------------------------------------------- /src/Asuka/source/hash.cpp: -------------------------------------------------------------------------------- 1 | // Asuka - VirtualDub Build/Post-Mortem Utility 2 | // Copyright (C) 2005 Avery Lee 3 | // 4 | // This program is free software; you can redistribute it and/or modify 5 | // it under the terms of the GNU General Public License as published by 6 | // the Free Software Foundation; either version 2 of the License, or 7 | // (at your option) any later version. 8 | // 9 | // This program is distributed in the hope that it will be useful, 10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | // GNU General Public License for more details. 13 | // 14 | // You should have received a copy of the GNU General Public License 15 | // along with this program; if not, write to the Free Software 16 | // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 17 | 18 | #include "stdafx.h" 19 | #include 20 | #include 21 | #include 22 | 23 | void tool_hash(const vdfastvector& args, const vdfastvector& switches) { 24 | for(vdfastvector::const_iterator it = args.begin(), itEnd = args.end(); 25 | it != itEnd; 26 | ++it) 27 | { 28 | const char *s = *it; 29 | 30 | printf("%08x \"%s\"\n", VDHashString32I(s), s); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/Asuka/source/stdafx.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | -------------------------------------------------------------------------------- /src/Dita/h/stdafx.h: -------------------------------------------------------------------------------- 1 | #ifndef f_DITA_STDAFX_H 2 | #define f_DITA_STDAFX_H 3 | 4 | #if defined(_MSC_VER) && _MSC_VER < 1300 5 | #pragma warning(disable: 4786) 6 | static const struct VD_MSVC_C4786Workaround { VD_MSVC_C4786Workaround() {} } g_VD_MSVC_C4786Workaround; 7 | #endif 8 | 9 | #ifndef _WIN32_WINNT 10 | #define _WIN32_WINNT 0x0500 11 | #elif _WIN32_WINNT < 0x0500 12 | #error _WIN32_WINNT is less than 5.0. This will break the places bar on the load/save dialog. 13 | #endif 14 | 15 | #include 16 | #include 17 | 18 | #include 19 | 20 | #include 21 | #include 22 | #include 23 | #include 24 | #include 25 | 26 | #endif 27 | -------------------------------------------------------------------------------- /src/Dita/source/stdafx.cpp: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // Copyright (C) 1998-2004 Avery Lee 3 | // 4 | // This program is free software; you can redistribute it and/or modify 5 | // it under the terms of the GNU General Public License as published by 6 | // the Free Software Foundation; either version 2 of the License, or 7 | // (at your option) any later version. 8 | // 9 | // This program is distributed in the hope that it will be useful, 10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | // GNU General Public License for more details. 13 | // 14 | // You should have received a copy of the GNU General Public License 15 | // along with this program; if not, write to the Free Software 16 | // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 17 | 18 | #include 19 | -------------------------------------------------------------------------------- /src/Kasumi/data/Tuffy.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/Kasumi/data/Tuffy.ttf -------------------------------------------------------------------------------- /src/Kasumi/data/Tuffy.txt: -------------------------------------------------------------------------------- 1 | Tuffy.ttf comes from the website of Thatcher Ulrich, 1/7/2007: 2 | http://tulrich.com/fonts/ 3 | 4 | The description on the website: 5 | 6 | Public Domain Fonts 7 | 8 | Here are my dabblings in font design. I have placed them in the Public 9 | Domain. This is all 100% my own work. Usage is totally unrestricted. If 10 | you want to make derivative works for any purpose, please go ahead. 11 | 12 | I welcome comments & constructive criticism. 13 | -------------------------------------------------------------------------------- /src/Kasumi/h/bitutils.h: -------------------------------------------------------------------------------- 1 | #ifndef f_VD2_KASUMI_BITUTILS_H 2 | #define f_VD2_KASUMI_BITUTILS_H 3 | 4 | #include 5 | 6 | namespace nsVDPixmapBitUtils { 7 | inline uint32 avg_8888_11(uint32 x, uint32 y) { 8 | return (x|y) - (((x^y)&0xfefefefe)>>1); 9 | } 10 | 11 | inline uint32 avg_8888_121(uint32 x, uint32 y, uint32 z) { 12 | return avg_8888_11(avg_8888_11(x,z), y); 13 | } 14 | 15 | inline uint32 avg_0808_14641(uint32 a, uint32 b, uint32 c, uint32 d, uint32 e) { 16 | a &= 0xff00ff; 17 | b &= 0xff00ff; 18 | c &= 0xff00ff; 19 | d &= 0xff00ff; 20 | e &= 0xff00ff; 21 | 22 | return (((a+e) + 4*(b+d) + 6*c + 0x080008)&0x0ff00ff0)>>4; 23 | } 24 | }; 25 | 26 | #endif 27 | -------------------------------------------------------------------------------- /src/Kasumi/h/blt_spanutils_x86.h: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // Graphics support library 3 | // Copyright (C) 1998-2009 Avery Lee 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 18 | 19 | #ifndef f_VD2_KASUMI_BLT_SPANUTILS_X86_H 20 | #define f_VD2_KASUMI_BLT_SPANUTILS_X86_H 21 | 22 | #ifdef _MSC_VER 23 | #pragma once 24 | #endif 25 | 26 | #include 27 | 28 | namespace nsVDPixmapSpanUtils { 29 | void horiz_expand2x_coaligned_ISSE(uint8 *dst, const uint8 *src, sint32 w); 30 | void horiz_expand4x_coaligned_MMX(uint8 *dst, const uint8 *src, sint32 w); 31 | void vert_expand2x_centered_ISSE(uint8 *dst, const uint8 *const *srcs, sint32 w, uint8 phase); 32 | void vert_expand4x_centered_ISSE(uint8 *dst, const uint8 *const *srcs, sint32 w, uint8 phase); 33 | } 34 | 35 | #endif 36 | -------------------------------------------------------------------------------- /src/Kasumi/h/resample_stages_x64.h: -------------------------------------------------------------------------------- 1 | #ifndef f_VD2_KASUMI_RESAMPLE_STAGES_X64_H 2 | #define f_VD2_KASUMI_RESAMPLE_STAGES_X64_H 3 | 4 | #include "resample_stages_reference.h" 5 | 6 | /////////////////////////////////////////////////////////////////////////// 7 | // 8 | // resampler stages (SSE2, AMD64) 9 | // 10 | /////////////////////////////////////////////////////////////////////////// 11 | 12 | class VDResamplerSeparableTableRowStageSSE2 : public VDResamplerRowStageSeparableTable32 { 13 | public: 14 | VDResamplerSeparableTableRowStageSSE2(const IVDResamplerFilter& filter); 15 | 16 | void Process(void *dst, const void *src, uint32 w, uint32 u, uint32 dudx); 17 | }; 18 | 19 | class VDResamplerSeparableTableColStageSSE2 : public VDResamplerColStageSeparableTable32 { 20 | public: 21 | VDResamplerSeparableTableColStageSSE2(const IVDResamplerFilter& filter); 22 | 23 | void Process(void *dst, const void *const *src, uint32 w, sint32 phase); 24 | }; 25 | 26 | #endif 27 | -------------------------------------------------------------------------------- /src/Kasumi/h/stdafx.h: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // Graphics support library 3 | // Copyright (C) 1998-2009 Avery Lee 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 18 | 19 | #include 20 | #include 21 | #include -------------------------------------------------------------------------------- /src/Kasumi/h/uberblit_resample_special_x86.h: -------------------------------------------------------------------------------- 1 | #ifndef f_VD2_KASUMI_UBERBLIT_RESAMPLE_SPECIAL_X86_H 2 | #define f_VD2_KASUMI_UBERBLIT_RESAMPLE_SPECIAL_X86_H 3 | 4 | #include "uberblit_resample_special.h" 5 | 6 | class VDPixmapGenResampleRow_x2_p0_lin_u8_ISSE : public VDPixmapGenResampleRow_x2_p0_lin_u8 { 7 | protected: 8 | void Compute(void *dst0, sint32 y); 9 | }; 10 | 11 | class VDPixmapGenResampleRow_x4_p0_lin_u8_MMX : public VDPixmapGenResampleRow_x4_p0_lin_u8 { 12 | protected: 13 | void Compute(void *dst0, sint32 y); 14 | }; 15 | 16 | class VDPixmapGenResampleCol_d2_pnqrtr_lin_u8_ISSE: public VDPixmapGenResampleCol_d2_pnqrtr_lin_u8 { 17 | protected: 18 | void Compute(void *dst0, sint32 y); 19 | }; 20 | 21 | class VDPixmapGenResampleCol_d4_pn38_lin_u8_ISSE: public VDPixmapGenResampleCol_d4_pn38_lin_u8 { 22 | protected: 23 | void Compute(void *dst0, sint32 y); 24 | }; 25 | 26 | #endif 27 | -------------------------------------------------------------------------------- /src/Kasumi/h/uberblit_ycbcr_x86.h: -------------------------------------------------------------------------------- 1 | #ifndef f_VD2_KASUMI_UBERBLIT_YCBCR_X86_H 2 | #define f_VD2_KASUMI_UBERBLIT_YCBCR_X86_H 3 | 4 | #include 5 | #include "uberblit.h" 6 | #include "uberblit_ycbcr.h" 7 | 8 | /* 9 | this code fails with extreme YCbCr values: F9 7D 8A and like 10 | 11 | extern "C" void __cdecl vdasm_pixblt_YUV444Planar_to_XRGB8888_scan_MMX(void *dst, const uint8 *y, const uint8 *cb, const uint8 *cr, uint32 count); 12 | 13 | class VDPixmapGenYCbCr601ToRGB32_MMX : public VDPixmapGenYCbCr601ToRGB32 { 14 | protected: 15 | void Compute(void *dst0, sint32 y) { 16 | uint8 *dst = (uint8 *)dst0; 17 | const uint8 *srcY = (const uint8 *)mpSrcY->GetRow(y, mSrcIndexY); 18 | const uint8 *srcCb = (const uint8 *)mpSrcCb->GetRow(y, mSrcIndexCb); 19 | const uint8 *srcCr = (const uint8 *)mpSrcCr->GetRow(y, mSrcIndexCr); 20 | 21 | vdasm_pixblt_YUV444Planar_to_XRGB8888_scan_MMX(dst, srcY, srcCb, srcCr, mWidth); 22 | } 23 | }; 24 | */ 25 | 26 | class VDPixmapGenRGB32ToYCbCr601_SSE2 : public VDPixmapGenRGB32ToYCbCr601 { 27 | protected: 28 | void Compute(void *dst0, sint32 y); 29 | }; 30 | 31 | #endif 32 | -------------------------------------------------------------------------------- /src/Kasumi/source/a_triblt.inc: -------------------------------------------------------------------------------- 1 | struc span 2 | .u resd 1 3 | .v resd 1 4 | endstruc 5 | 6 | struc mipspan 7 | .u resd 1 8 | .v resd 1 9 | .lambda resd 1 10 | endstruc 11 | 12 | struc mipmap 13 | .bits resd 1 14 | .pitch resd 1 15 | .uvmul resd 1 16 | resd 1 17 | endstruc 18 | 19 | struc texinfo 20 | .mips resd 16*4 21 | .dst resd 1 22 | .src resd 1 23 | .w resd 1 24 | endstruc 25 | -------------------------------------------------------------------------------- /src/Kasumi/source/a_triblt_scalar.asm: -------------------------------------------------------------------------------- 1 | segment .text 2 | 3 | %include "a_triblt.inc" 4 | 5 | global _vdasm_triblt_span_point 6 | _vdasm_triblt_span_point: 7 | push ebp 8 | push edi 9 | push esi 10 | push ebx 11 | mov eax,[esp+4+16] 12 | mov ebp,[eax+texinfo.w] 13 | mov ebx,[eax+texinfo.mips+mipmap.pitch] 14 | shl ebp,2 15 | mov edi,[eax+texinfo.src] 16 | mov edx,[eax+texinfo.dst] 17 | mov ecx,[eax+texinfo.mips+mipmap.bits] 18 | sar ebx,2 19 | add edx,ebp 20 | neg ebp 21 | .xloop: 22 | mov eax,[edi+span.v] 23 | imul eax,ebx 24 | add eax,[edi+span.u] 25 | add edi,8 26 | mov eax,[ecx+eax*4] 27 | mov [edx+ebp],eax 28 | add ebp,4 29 | jnc .xloop 30 | pop ebx 31 | pop esi 32 | pop edi 33 | pop ebp 34 | ret 35 | 36 | end -------------------------------------------------------------------------------- /src/Kasumi/source/blt_setup.cpp: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // Graphics support library 3 | // Copyright (C) 1998-2009 Avery Lee 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 18 | 19 | #include 20 | #include "blt_setup.h" 21 | 22 | void VDPixmapBlitterTable::Clear() { 23 | memset(mTable, 0, sizeof mTable); 24 | } 25 | 26 | void VDPixmapBlitterTable::AddBlitter(const VDPixmapFormatSubset& srcFormats, VDPixmapFormatSubset& dstFormats, VDPixmapBlitterFn blitter) { 27 | for(int i=0; i 20 | #include 21 | #include 22 | #include "uberblit.h" 23 | 24 | void VDPixmapBlt_UberblitAdapter(const VDPixmap& dst, const VDPixmap& src, vdpixsize w, vdpixsize h) { 25 | vdautoptr blitter(VDPixmapCreateBlitter(dst, src)); 26 | 27 | if (w > src.w) 28 | w = src.w; 29 | if (w > dst.w) 30 | w = dst.w; 31 | if (h > src.h) 32 | h = src.h; 33 | if (h > dst.h) 34 | h = dst.h; 35 | 36 | vdrect32 r(0, 0, w, h); 37 | blitter->Blit(dst, &r, src); 38 | } 39 | -------------------------------------------------------------------------------- /src/Kasumi/source/resample_stages_x64.cpp: -------------------------------------------------------------------------------- 1 | #include "resample_stages_x64.h" 2 | 3 | extern "C" long vdasm_resize_table_col_SSE2(uint32 *out, const uint32 *const*in_table, const int *filter, int filter_width, uint32 w); 4 | extern "C" long vdasm_resize_table_row_SSE2(uint32 *out, const uint32 *in, const int *filter, int filter_width, uint32 w, long accum, long frac); 5 | 6 | VDResamplerSeparableTableRowStageSSE2::VDResamplerSeparableTableRowStageSSE2(const IVDResamplerFilter& filter) 7 | : VDResamplerRowStageSeparableTable32(filter) 8 | { 9 | VDResamplerSwizzleTable(mFilterBank.data(), (uint32)mFilterBank.size() >> 1); 10 | } 11 | 12 | void VDResamplerSeparableTableRowStageSSE2::Process(void *dst, const void *src, uint32 w, uint32 u, uint32 dudx) { 13 | vdasm_resize_table_row_SSE2((uint32 *)dst, (const uint32 *)src, (const int *)mFilterBank.data(), (int)mFilterBank.size() >> 8, w, u, dudx); 14 | } 15 | 16 | VDResamplerSeparableTableColStageSSE2::VDResamplerSeparableTableColStageSSE2(const IVDResamplerFilter& filter) 17 | : VDResamplerColStageSeparableTable32(filter) 18 | { 19 | VDResamplerSwizzleTable(mFilterBank.data(), (uint32)mFilterBank.size() >> 1); 20 | } 21 | 22 | void VDResamplerSeparableTableColStageSSE2::Process(void *dst, const void *const *src, uint32 w, sint32 phase) { 23 | const unsigned filtSize = (unsigned)mFilterBank.size() >> 8; 24 | 25 | vdasm_resize_table_col_SSE2((uint32*)dst, (const uint32 *const *)src, (const int *)mFilterBank.data() + filtSize*((phase >> 8) & 0xff), filtSize, w); 26 | } 27 | -------------------------------------------------------------------------------- /src/Kasumi/source/stdafx.cpp: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // Graphics support library 3 | // Copyright (C) 1998-2009 Avery Lee 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 18 | 19 | #include "stdafx.h" -------------------------------------------------------------------------------- /src/Lina/h/parser.h: -------------------------------------------------------------------------------- 1 | #ifndef f_LINA_PARSER_H 2 | #define f_LINA_PARSER_H 3 | 4 | void error(const char *format, ...); 5 | 6 | class TreeParser { 7 | public: 8 | TreeParser(TreeDocument *doc); 9 | 10 | void ParseFile(const char *fname); 11 | 12 | protected: 13 | void PushFile(const char *fname); 14 | bool PopFile(); 15 | int Next(); 16 | int NextRequired(); 17 | TreeNode *AllocNode(); 18 | TreeNode *ParseInline(int& c); 19 | TreeNode *ParseTag(); 20 | 21 | protected: 22 | TreeDocument *mpDocument; 23 | }; 24 | 25 | #endif 26 | -------------------------------------------------------------------------------- /src/Meia/h/MPEGCache.h: -------------------------------------------------------------------------------- 1 | #ifndef f_VD2_MEIA_MPEGCACHE_H 2 | #define f_VD2_MEIA_MPEGCACHE_H 3 | 4 | #include 5 | #include 6 | 7 | class VDMPEGCache { 8 | public: 9 | VDMPEGCache(int nBlocks, int nBlockLen); 10 | ~VDMPEGCache(); 11 | 12 | bool Read(void *pData, int64 bytepos, int len, int offset); 13 | void Write(const void *pData, int64 bytepos, int len); 14 | 15 | private: 16 | struct CacheEntry { 17 | int64 pos; // The assumption is that zero is never a valid start for a pack's data 18 | int len; // length of this cache block 19 | int next; 20 | int age; 21 | }; 22 | 23 | char *mpCacheMemory; 24 | unsigned mNextAgeValue; 25 | int mBlockSize; 26 | 27 | std::vector mCacheBlocks; 28 | 29 | int Evict(); 30 | }; 31 | 32 | #endif 33 | -------------------------------------------------------------------------------- /src/Meia/h/tables.h: -------------------------------------------------------------------------------- 1 | #ifndef f_VD2_MEIA_TABLES_H 2 | #define f_VD2_MEIA_TABLES_H 3 | 4 | namespace nsVDMPEGTables { 5 | extern const unsigned char clip_table[832]; 6 | }; 7 | 8 | #endif 9 | -------------------------------------------------------------------------------- /src/Meia/source/common_png.cpp: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // Video decoding library 3 | // Copyright (C) 1998-2006 Avery Lee 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 18 | 19 | #include "common_png.h" 20 | 21 | namespace nsVDPNG { 22 | extern const uint8 kPNGSignature[8]={137,80,78,71,13,10,26,10}; 23 | }; 24 | 25 | void VDAdler32Checker::Process(const void *src, sint32 len) { 26 | const uint8 *s = (const uint8 *)src; 27 | 28 | while(len > 0) { 29 | uint32 tc = len; 30 | if (tc > 0x1000) 31 | tc = 0x1000; 32 | 33 | len -= tc; 34 | do { 35 | mS1 += *s++; 36 | mS2 += mS1; 37 | } while(--tc); 38 | 39 | mS1 %= 65521; 40 | mS2 %= 65521; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/PSA.props: -------------------------------------------------------------------------------- 1 |  2 | 3 | 5 | Midl 6 | CustomBuild 7 | 8 | 9 | _SelectedFiles;$(PixelShaderAssemblerDependsOn) 11 | 12 | 13 | 14 | $(IntDir) 15 | "$(VDBaseDir)\out\$(VDConfigDirTag)\asuka.exe" psa "%(FullPath)" "%(OutputPath)\%(Filename).inl" 16 | %(OutputPath)\%(Filename).inl 17 | 18 | 19 | -------------------------------------------------------------------------------- /src/PSA.rules: -------------------------------------------------------------------------------- 1 |  2 | 6 | 7 | 14 | 15 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /src/Riza/source/audioformat.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | namespace nsVDWinFormats { 5 | bool Guid::operator==(const Guid& r) const { 6 | return !memcmp(this, &r, 16); 7 | } 8 | 9 | extern const Guid kKSDATAFORMAT_SUBTYPE_PCM={ 10 | kWAVE_FORMAT_PCM, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 11 | }; 12 | }; 13 | -------------------------------------------------------------------------------- /src/Riza/source/displaydx9.fx: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // A/V interface library 3 | // Copyright (C) 1998-2008 Avery Lee 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 18 | 19 | #include "stddefs.fxh" 20 | #include "utils.fxh" 21 | #include "displaydx9_ff.fxh" 22 | #include "displaydx9_ps1.fxh" 23 | #include "displaydx9_ps14.fxh" 24 | #include "displaydx9_ps2.fxh" 25 | -------------------------------------------------------------------------------- /src/Setup/manifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/Setup/mod2.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/Setup/mod2.ico -------------------------------------------------------------------------------- /src/Setup/registry.h: -------------------------------------------------------------------------------- 1 | #ifndef f_REGISTRY_H 2 | #define f_REGISTRY_H 3 | 4 | #include 5 | 6 | HKEY OpenRegKey(HKEY hkBase, char *szKeyName); 7 | HKEY CreateRegKey(HKEY hkBase, char *szKeyName); 8 | HKEY CreateRegKey64(HKEY hkBase, char *szKeyName); 9 | BOOL DeleteRegValue(HKEY hkBase, char *szKeyName, char *szValueName); 10 | BOOL QueryRegString(HKEY hkBase, char *szKeyName, char *szValueName, char *lpBuffer, int cbBuffer); 11 | BOOL SetRegString(HKEY hkBase, char *szKeyName, char *szValueName, char *lpBuffer); 12 | BOOL SetRegString64(HKEY hkBase, char *szKeyName, char *szValueName, char *lpBuffer); 13 | 14 | #endif 15 | -------------------------------------------------------------------------------- /src/Setup/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Visual C++ generated include file. 3 | // Used by Setup.rc 4 | // 5 | #define IDC_BENCHMARK 3 6 | #define IDC_INSTALL 4 7 | #define IDC_REMOVE 5 8 | #define IDC_UNINSTALL 6 9 | #define IDC_ABOUT 7 10 | #define IDC_EXECUTE 8 11 | #define IDC_4GB_ON 9 12 | #define IDC_4GB_OFF 10 13 | #define IDD_MAINWINDOW 101 14 | #define IDD_ATTEMPT 102 15 | #define IDD_ABOUT 105 16 | #define IDI_VIRTUALDUB 107 17 | #define IDC_ACTIONLIST 1000 18 | #define IDC_BUFFERING_FULL 1006 19 | #define IDC_BUFFERING_COMBINEONLY 1007 20 | #define IDC_BUFFERING_NONE 1008 21 | #define IDC_ACTION 1014 22 | #define IDC_FINALS_SUCK 1150 23 | 24 | // Next default values for new objects 25 | // 26 | #ifdef APSTUDIO_INVOKED 27 | #ifndef APSTUDIO_READONLY_SYMBOLS 28 | #define _APS_NO_MFC 1 29 | #define _APS_NEXT_RESOURCE_VALUE 108 30 | #define _APS_NEXT_COMMAND_VALUE 40001 31 | #define _APS_NEXT_CONTROL_VALUE 1018 32 | #define _APS_NEXT_SYMED_VALUE 101 33 | #endif 34 | #endif 35 | -------------------------------------------------------------------------------- /src/Setup/virtuald.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/Setup/virtuald.ico -------------------------------------------------------------------------------- /src/Sylia/ScriptError.h: -------------------------------------------------------------------------------- 1 | #ifndef f_SYLIA_SCRIPTERROR_H 2 | #define f_SYLIA_SCRIPTERROR_H 3 | 4 | class VDScriptError { 5 | public: 6 | int err; 7 | 8 | enum { 9 | PARSE_ERROR=1, 10 | SEMICOLON_EXPECTED, 11 | IDENTIFIER_EXPECTED, 12 | 13 | TYPE_INT_REQUIRED, 14 | TYPE_ARRAY_REQUIRED, 15 | TYPE_FUNCTION_REQUIRED, 16 | TYPE_OBJECT_REQUIRED, 17 | 18 | OBJECT_MEMBER_NAME_REQUIRED, 19 | FUNCCALLEND_EXPECTED, 20 | TOO_MANY_PARAMS, 21 | DIVIDE_BY_ZERO, 22 | VAR_NOT_FOUND, 23 | MEMBER_NOT_FOUND, 24 | OVERLOADED_FUNCTION_NOT_FOUND, 25 | IDENT_TOO_LONG, 26 | OPERATOR_EXPECTED, 27 | CLOSEPARENS_EXPECTED, 28 | CLOSEBRACKET_EXPECTED, 29 | 30 | VAR_UNDEFINED, 31 | 32 | OUT_OF_STRING_SPACE, 33 | OUT_OF_MEMORY, 34 | INTERNAL_ERROR, 35 | EXTERNAL_ERROR, 36 | 37 | FCALL_OUT_OF_RANGE, 38 | FCALL_INVALID_PTYPE, 39 | FCALL_UNKNOWN_STR, 40 | 41 | ARRAY_INDEX_OUT_OF_BOUNDS, 42 | 43 | NUMERIC_OVERFLOW, 44 | STRING_NOT_AN_INTEGER_VALUE, 45 | STRING_NOT_A_REAL_VALUE, 46 | 47 | ASSERTION_FAILED, 48 | AMBIGUOUS_CALL, 49 | CANNOT_CAST 50 | }; 51 | 52 | VDScriptError(int err_num) : err(err_num) { } 53 | 54 | int getErr() { return err; } 55 | }; 56 | 57 | #define SCRIPT_ERROR(x) throw VDScriptError(VDScriptError::##x) 58 | 59 | const char *VDScriptTranslateError(int); 60 | 61 | static inline const char *VDScriptTranslateError(VDScriptError cse) { 62 | return VDScriptTranslateError(cse.getErr()); 63 | } 64 | 65 | #endif 66 | -------------------------------------------------------------------------------- /src/Sylia/ScriptInterpreter.h: -------------------------------------------------------------------------------- 1 | #ifndef f_SYLIA_SCRIPTINTERPRETER_H 2 | #define f_SYLIA_SCRIPTINTERPRETER_H 3 | 4 | class VDScriptValue; 5 | class VDScriptError; 6 | struct VDScriptObject; 7 | class IVDScriptInterpreter; 8 | struct VDScriptFunctionDef; 9 | 10 | typedef VDScriptValue (*VDScriptRootHandlerPtr)(IVDScriptInterpreter *,char *,void *); 11 | 12 | class IVDScriptInterpreter { 13 | public: 14 | virtual ~IVDScriptInterpreter() {} 15 | 16 | virtual void SetRootHandler(VDScriptRootHandlerPtr, void *) =0; 17 | 18 | virtual void ExecuteLine(const char *s) =0; 19 | 20 | virtual void ScriptError(int e) =0; 21 | virtual const char* TranslateScriptError(const VDScriptError& cse) =0; 22 | virtual char** AllocTempString(long l) =0; 23 | 24 | virtual VDScriptValue LookupObjectMember(const VDScriptObject *obj, void *, char *szIdent) = 0; 25 | 26 | virtual const VDScriptFunctionDef *GetCurrentMethod() = 0; 27 | virtual int GetErrorLocation() = 0; 28 | virtual VDScriptValue DupCString(const char *) = 0; 29 | }; 30 | 31 | IVDScriptInterpreter *VDCreateScriptInterpreter(); 32 | 33 | #define VDSCRIPT_EXT_ERROR(x) if(true){isi->ScriptError(VDScriptError::x); VDNEVERHERE;}else 34 | 35 | #endif 36 | -------------------------------------------------------------------------------- /src/Sylia/StringHeap.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | #include "ScriptError.h" 5 | 6 | #include "StringHeap.h" 7 | 8 | VDScriptStringHeap::VDScriptStringHeap() { 9 | } 10 | 11 | VDScriptStringHeap::~VDScriptStringHeap() { 12 | Clear(); 13 | } 14 | 15 | void VDScriptStringHeap::Clear() { 16 | tStrings::iterator it(mStrings.begin()), itEnd(mStrings.end()); 17 | 18 | for(; it!=itEnd; ++it) { 19 | char *s = *it; 20 | 21 | free(s-1); 22 | } 23 | 24 | mStrings.clear(); 25 | } 26 | 27 | void VDScriptStringHeap::BeginGC() { 28 | tStrings::iterator it(mStrings.begin()), itEnd(mStrings.end()); 29 | 30 | for(; it!=itEnd; ++it) { 31 | char *s = *it; 32 | s[-1] = 0; 33 | } 34 | } 35 | 36 | void VDScriptStringHeap::Mark(char *s) { 37 | s[-1] = 1; 38 | } 39 | 40 | int VDScriptStringHeap::EndGC() { 41 | tStrings::iterator it(mStrings.begin()), itEnd(mStrings.end()); 42 | int n = 0; 43 | 44 | while(it != itEnd) { 45 | char *s = *it; 46 | 47 | if (!s[-1]) { 48 | free(s-1); 49 | it = mStrings.erase(it); 50 | ++n; 51 | } else 52 | ++it; 53 | } 54 | 55 | return n; 56 | } 57 | 58 | char **VDScriptStringHeap::Allocate(int len) { 59 | char *s = (char *)malloc(len+2); 60 | if (!s) 61 | SCRIPT_ERROR(OUT_OF_STRING_SPACE); 62 | 63 | mStrings.push_back(s + 1); 64 | return &mStrings.back(); 65 | } 66 | -------------------------------------------------------------------------------- /src/Sylia/StringHeap.h: -------------------------------------------------------------------------------- 1 | #ifndef f_SYLIA_STRINGHEAP_H 2 | #define f_SYLIA_STRINGHEAP_H 3 | 4 | #include 5 | 6 | class VDScriptStringHeap { 7 | protected: 8 | typedef std::list tStrings; 9 | tStrings mStrings; 10 | 11 | public: 12 | VDScriptStringHeap(); 13 | ~VDScriptStringHeap(); 14 | 15 | void Clear(); 16 | void BeginGC(); 17 | void Mark(char *s); 18 | int EndGC(); 19 | char **Allocate(int); 20 | }; 21 | 22 | #endif 23 | -------------------------------------------------------------------------------- /src/Sylia/VariableTable.h: -------------------------------------------------------------------------------- 1 | #ifndef f_SYLIA_VARIABLETABLE_H 2 | #define f_SYLIA_VARIABLETABLE_H 3 | 4 | #include "ScriptValue.h" 5 | #include "VectorHeap.h" 6 | 7 | class VDScriptStringHeap; 8 | 9 | class VariableTableEntry { 10 | public: 11 | VariableTableEntry *next; 12 | VDScriptValue v; 13 | char szName[1]; 14 | }; 15 | 16 | class VariableTable { 17 | private: 18 | long lHashTableSize; 19 | VariableTableEntry **lpHashTable; 20 | VectorHeap varheap; 21 | 22 | long Hash(const char *szName); 23 | 24 | public: 25 | VariableTable(int); 26 | ~VariableTable(); 27 | 28 | void MarkStrings(VDScriptStringHeap& heap); 29 | 30 | VariableTableEntry *Lookup(const char *szName); 31 | VariableTableEntry *Declare(const char *szName); 32 | }; 33 | 34 | #endif 35 | -------------------------------------------------------------------------------- /src/Sylia/VectorHeap.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | #include "VectorHeap.h" 6 | 7 | VectorHeap::VectorHeap(long chunk_size) { 8 | lChunkSize = chunk_size; 9 | first = last = NULL; 10 | } 11 | 12 | VectorHeap::~VectorHeap() { 13 | VectorHeapHeader *vhh_cur, *vhh_next; 14 | 15 | vhh_cur = first; 16 | 17 | while(vhh_cur) { 18 | vhh_next = vhh_cur->next; 19 | free(vhh_cur); 20 | vhh_cur = vhh_next; 21 | } 22 | } 23 | 24 | void *VectorHeap::Allocate(long lBytes) { 25 | long lp; 26 | 27 | lBytes = (lBytes + 7) & ~7; 28 | 29 | if (!last || last->lSize - last->lPoint < lBytes) { 30 | VectorHeapHeader *vhh; 31 | 32 | vhh = (VectorHeapHeader *)malloc(lChunkSize); 33 | if (!vhh) return NULL; 34 | 35 | vhh->next = NULL; 36 | vhh->lSize = lChunkSize - offsetof(VectorHeapHeader, heap); 37 | vhh->lPoint = lBytes; 38 | 39 | if (last) last->next = vhh; 40 | last = vhh; 41 | if (!first) first = vhh; 42 | 43 | return vhh->heap; 44 | } 45 | 46 | lp = last->lPoint; 47 | last->lPoint += lBytes; 48 | 49 | return &last->heap[lp]; 50 | } 51 | -------------------------------------------------------------------------------- /src/Sylia/VectorHeap.h: -------------------------------------------------------------------------------- 1 | #ifndef f_SYLIA_VECTORHEAP_H 2 | #define f_SYLIA_VECTORHEAP_H 3 | 4 | class VectorHeapHeader { 5 | public: 6 | VectorHeapHeader *next; 7 | long lSize, lPoint; 8 | char heap[1]; 9 | }; 10 | 11 | class VectorHeap { 12 | private: 13 | VectorHeapHeader *first, *last; 14 | long lChunkSize; 15 | 16 | public: 17 | VectorHeap(long chunk_size); 18 | ~VectorHeap(); 19 | 20 | void *Allocate(long); 21 | }; 22 | 23 | #endif 24 | -------------------------------------------------------------------------------- /src/Sylia/readme.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/Sylia/readme.txt -------------------------------------------------------------------------------- /src/Sylia/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Developer Studio generated include file. 3 | // Used by sylia.rc 4 | // 5 | 6 | // Next default values for new objects 7 | // 8 | #ifdef APSTUDIO_INVOKED 9 | #ifndef APSTUDIO_READONLY_SYMBOLS 10 | #define _APS_NEXT_RESOURCE_VALUE 101 11 | #define _APS_NEXT_COMMAND_VALUE 40001 12 | #define _APS_NEXT_CONTROL_VALUE 1000 13 | #define _APS_NEXT_SYMED_VALUE 101 14 | #endif 15 | #endif 16 | -------------------------------------------------------------------------------- /src/Tessa/h/D3D11/FenceManager_D3D11.h: -------------------------------------------------------------------------------- 1 | #ifndef f_VD2_TESSA_D3D11_FENCEMANAGER_D3D11_H 2 | #define f_VD2_TESSA_D3D11_FENCEMANAGER_D3D11_H 3 | 4 | #include 5 | 6 | struct ID3D11Device; 7 | struct ID3D11Query; 8 | 9 | class VDTFenceManagerD3D11 { 10 | VDTFenceManagerD3D11(const VDTFenceManagerD3D11&); 11 | VDTFenceManagerD3D11& operator=(const VDTFenceManagerD3D11&); 12 | public: 13 | VDTFenceManagerD3D11(); 14 | ~VDTFenceManagerD3D11(); 15 | 16 | void Init(ID3D11Device *dev, ID3D11DeviceContext *devctx); 17 | void Shutdown(); 18 | 19 | void FlushDefaultResources(); 20 | 21 | uint32 InsertFence(); 22 | bool CheckFence(uint32 fence); 23 | 24 | protected: 25 | typedef vdfastvector IdleQueries; 26 | typedef vdfastdeque ActiveQueries; 27 | 28 | ID3D11Device *mpD3DDevice; 29 | ID3D11DeviceContext *mpD3DDeviceContext; 30 | uint32 mFirstFenceId; 31 | uint32 mNextFenceId; 32 | ActiveQueries mActiveQueries; 33 | IdleQueries mIdleQueries; 34 | }; 35 | 36 | #endif 37 | -------------------------------------------------------------------------------- /src/Tessa/h/D3D9/FenceManager_D3D9.h: -------------------------------------------------------------------------------- 1 | #ifndef f_VD2_TESSA_D3D9_FENCEMANAGER_D3D9_H 2 | #define f_VD2_TESSA_D3D9_FENCEMANAGER_D3D9_H 3 | 4 | #include 5 | 6 | struct IDirect3DDevice9; 7 | struct IDirect3DQuery9; 8 | 9 | class VDTFenceManagerD3D9 { 10 | VDTFenceManagerD3D9(const VDTFenceManagerD3D9&); 11 | VDTFenceManagerD3D9& operator=(const VDTFenceManagerD3D9&); 12 | public: 13 | VDTFenceManagerD3D9(); 14 | ~VDTFenceManagerD3D9(); 15 | 16 | void Init(IDirect3DDevice9 *dev); 17 | void Shutdown(); 18 | 19 | void FlushDefaultResources(); 20 | 21 | uint32 InsertFence(); 22 | bool CheckFence(uint32 fence); 23 | 24 | protected: 25 | typedef vdfastvector IdleQueries; 26 | typedef vdfastdeque ActiveQueries; 27 | 28 | IDirect3DDevice9 *mpD3DDevice; 29 | uint32 mFirstFenceId; 30 | uint32 mNextFenceId; 31 | bool mbEventQueriesSupported; 32 | ActiveQueries mActiveQueries; 33 | IdleQueries mIdleQueries; 34 | }; 35 | 36 | #endif 37 | -------------------------------------------------------------------------------- /src/Tessa/h/Program.h: -------------------------------------------------------------------------------- 1 | #ifndef f_VD2_TESSA_PROGRAM_H 2 | #define f_VD2_TESSA_PROGRAM_H 3 | 4 | #include 5 | #include 6 | 7 | bool VDTExtractMultiTargetProgram(VDTData srcdata, const uint32 *targets, VDTData& program); 8 | 9 | #endif // f_VD2_TESSA_PROGRAM_H 10 | -------------------------------------------------------------------------------- /src/Tessa/h/stdafx.h: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // 3D acceleration library 3 | // Copyright (C) 1998-2009 Avery Lee 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 18 | 19 | #ifndef f_STDAFX_H 20 | #define f_STDAFX_H 21 | 22 | #ifdef _MSC_VER 23 | #pragma once 24 | #endif 25 | 26 | #include 27 | 28 | #endif // f_STDAFX_H 29 | 30 | -------------------------------------------------------------------------------- /src/Tessa/source/Context.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | void VDTBeginScopeF(IVDTProfiler *profiler, uint32 color, const char *format, ...) { 6 | va_list val; 7 | char buf[256]; 8 | 9 | va_start(val, format); 10 | _vsnprintf(buf, sizeof buf, format, val); 11 | va_end(val); 12 | buf[255] = 0; 13 | profiler->BeginScope(color, buf); 14 | } 15 | -------------------------------------------------------------------------------- /src/Tessa/source/Format.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | uint32 VDTGetBytesPerBlockRow(VDTFormat format, uint32 w) { 5 | switch(format) { 6 | default: 7 | return 0; 8 | 9 | case kVDTF_R8G8B8A8: 10 | case kVDTF_B8G8R8A8: 11 | return w << 2; 12 | 13 | case kVDTF_U8V8: 14 | case kVDTF_L8A8: 15 | case kVDTF_R8G8: 16 | case kVDTF_B5G6R5: 17 | case kVDTF_B5G5R5A1: 18 | return w << 1; 19 | 20 | case kVDTF_R8: 21 | return w; 22 | } 23 | } 24 | 25 | uint32 VDTGetNumBlockRows(VDTFormat format, uint32 h) { 26 | switch(format) { 27 | default: 28 | return 0; 29 | 30 | case kVDTF_R8G8B8A8: 31 | case kVDTF_B8G8R8A8: 32 | case kVDTF_U8V8: 33 | case kVDTF_L8A8: 34 | case kVDTF_R8G8: 35 | case kVDTF_B5G6R5: 36 | case kVDTF_B5G5R5A1: 37 | case kVDTF_R8: 38 | return h; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/Tessa/source/Program.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include "Program.h" 4 | 5 | bool VDTExtractMultiTargetProgram(VDTData srcdata, const uint32 *targets, VDTData& program) { 6 | const uint8 *data8 = (const uint8 *)srcdata.mpData; 7 | 8 | for(;;) { 9 | uint32 target_id = VDReadUnalignedU32(data8); 10 | 11 | if (!target_id) 12 | break; 13 | 14 | for(const uint32 *p = targets; *p; ++p) { 15 | if (*p == target_id) { 16 | program.mpData = (const uint8 *)srcdata.mpData + VDReadUnalignedU32(data8 + 4); 17 | program.mLength = VDReadUnalignedU32(data8 + 8); 18 | return true; 19 | } 20 | } 21 | 22 | data8 += 12; 23 | } 24 | 25 | return false; 26 | } 27 | -------------------------------------------------------------------------------- /src/Tessa/source/stdafx.cpp: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // 3D acceleration library 3 | // Copyright (C) 1998-2009 Avery Lee 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 18 | 19 | #include "stdafx.h" 20 | -------------------------------------------------------------------------------- /src/VDCapture/h/stdafx.h: -------------------------------------------------------------------------------- 1 | // Compilation workaround for high char annoyance in the Platform SDK: 2 | // 3 | // c:\platsdk5\include\uuids.h : warning C4819: The file contains a character that cannot 4 | // be represented in the current code page (932). Save the file in Unicode format to 5 | // prevent data loss 6 | #pragma warning(disable: 4819) 7 | 8 | #define _WIN32_WINNT 0x0501 9 | #include 10 | -------------------------------------------------------------------------------- /src/VDCapture/source/d3d11_display.fx: -------------------------------------------------------------------------------- 1 | extern Texture2D srctex : register(t0); 2 | extern SamplerState srcsamp : register(s0); 3 | 4 | /////////////////////////////////////////////////////////////////////////// 5 | 6 | void VS_Display( 7 | float2 pos : POSITION, 8 | float2 uv : TEXCOORD0, 9 | out float4 oPos : SV_Position, 10 | out float2 oT0 : TEXCOORD0 11 | ) 12 | { 13 | oPos = float4(pos.xy, 0.5, 1); 14 | oT0 = uv; 15 | } 16 | 17 | /////////////////////////////////////////////////////////////////////////// 18 | 19 | float4 PS_Display(float4 pos : SV_Position, 20 | float2 uv0 : TEXCOORD0 21 | ) : SV_Target0 { 22 | float4 px0 = float4(srctex.Sample(srcsamp, uv0).rgb, 1); 23 | return px0; 24 | } 25 | 26 | //$$export_shader vs_4_0_level_9_3 VS_Display g_VDCapDXGI12_VS_Display 27 | //$$export_shader ps_4_0_level_9_3 PS_Display g_VDCapDXGI12_PS_Display 28 | -------------------------------------------------------------------------------- /src/VDCapture/source/d3d11_pointer.fx: -------------------------------------------------------------------------------- 1 | extern Texture2D srctex : register(t0); 2 | extern SamplerState srcsamp : register(s0); 3 | 4 | extern float4 position_mapping : register(c0); 5 | 6 | /////////////////////////////////////////////////////////////////////////// 7 | 8 | void VS_Pointer( 9 | float2 pos : POSITION, 10 | float2 uv : TEXCOORD0, 11 | out float4 oPos : SV_Position, 12 | out float2 oT0 : TEXCOORD0 13 | ) 14 | { 15 | oPos = float4(uv.xy * position_mapping.xy + position_mapping.zw, 0.5, 1); 16 | oT0 = uv; 17 | } 18 | 19 | /////////////////////////////////////////////////////////////////////////// 20 | 21 | float4 PS_Pointer_Blend(float4 pos : SV_Position, float2 uv : TEXCOORD0) : SV_Target0 { 22 | return srctex.Sample(srcsamp, uv); 23 | } 24 | 25 | float4 PS_Pointer_MaskA0(float4 pos : SV_Position, float2 uv : TEXCOORD0) : SV_Target0 { 26 | float4 c = srctex.Sample(srcsamp, uv); 27 | 28 | clip(0.5f - c.a); 29 | return c; 30 | } 31 | 32 | float4 PS_Pointer_MaskA1(float4 pos : SV_Position, float2 uv : TEXCOORD0) : SV_Target0 { 33 | float4 c = srctex.Sample(srcsamp, uv); 34 | 35 | clip(c.a - 0.5f); 36 | return c; 37 | } 38 | 39 | //$$export_shader vs_4_0_level_9_3 VS_Pointer g_VDCapDXGI12_VS_Pointer 40 | //$$export_shader ps_4_0_level_9_3 PS_Pointer_Blend g_VDCapDXGI12_PS_Pointer_Blend 41 | //$$export_shader ps_4_0_level_9_3 PS_Pointer_MaskA0 g_VDCapDXGI12_PS_Pointer_MaskA0 42 | //$$export_shader ps_4_0_level_9_3 PS_Pointer_MaskA1 g_VDCapDXGI12_PS_Pointer_MaskA1 43 | -------------------------------------------------------------------------------- /src/VDCapture/source/stdafx.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | -------------------------------------------------------------------------------- /src/VDDisplay/h/bicubic.h: -------------------------------------------------------------------------------- 1 | #ifndef f_VD2_VDDISPLAY_BICUBIC_H 2 | #define f_VD2_VDDISPLAY_BICUBIC_H 3 | 4 | #include 5 | 6 | void VDDisplayCreateBicubicTexture(uint32 *dst, int w, int srcw, bool swapRB); 7 | 8 | #endif // f_VD2_VDDISPLAY_BICUBIC_H 9 | -------------------------------------------------------------------------------- /src/VDDisplay/h/stdafx.h: -------------------------------------------------------------------------------- 1 | #include 2 | -------------------------------------------------------------------------------- /src/VDDisplay/shaders/bicubic.fxh: -------------------------------------------------------------------------------- 1 | extern Texture2D cubicpttex : register(ps, t1); 2 | extern Texture2D filtertex : register(ps, t2); 3 | extern SamplerState cubicptsamp : register(ps, s1); 4 | extern SamplerState filtersamp : register(ps, s2); 5 | 6 | void VP_StretchBltCubic( 7 | float3 pos : POSITION, 8 | float2 uv0 : TEXCOORD0, 9 | float2 uv1 : TEXCOORD1, 10 | float2 uv2 : TEXCOORD2, 11 | float2 uvfilt : TEXCOORD3, 12 | out float4 oPos : SV_Position, 13 | out float2 oT0 : TEXCOORD0, 14 | out float2 oT1 : TEXCOORD1, 15 | out float2 oT2 : TEXCOORD2, 16 | out float2 oT3 : TEXCOORD3) 17 | { 18 | oPos = float4(pos.xyz, 1.0f); 19 | oT0 = uv0; 20 | oT1 = uv1; 21 | oT2 = uv2; 22 | oT3 = uvfilt; 23 | 24 | VP_APPLY_VIEWPORT(oPos); 25 | } 26 | 27 | half4 FP_StretchBltCubic(float4 pos : SV_Position, float2 uv0 : TEXCOORD0, float2 uv1 : TEXCOORD1, float2 uv2 : TEXCOORD2, float2 uvfilt : TEXCOORD3) : SV_Target { 28 | half4 weights = (half4)SAMPLE2D(filtertex, filtersamp, uvfilt); 29 | 30 | half4 p1 = (half4)SAMPLE2D(cubicpttex, cubicptsamp, uv0); 31 | half4 p2 = (half4)SAMPLE2D(srctex, srcsamp, uv1); 32 | half4 p3 = (half4)SAMPLE2D(cubicpttex, cubicptsamp, uv1); 33 | half4 p4 = (half4)SAMPLE2D(cubicpttex, cubicptsamp, uv2); 34 | 35 | weights.rg *= 0.25h; 36 | 37 | half4 c1 = lerp(p4, p1, weights.b); 38 | half4 c2 = lerp(p2, p3, weights.g); 39 | return (c2 - c1) * weights.r + c2; 40 | } 41 | -------------------------------------------------------------------------------- /src/VDDisplay/shaders/pal8.fxh: -------------------------------------------------------------------------------- 1 | 2 | extern Texture2D paltex : register(t1); 3 | extern SamplerState palsamp : register(s1); 4 | 5 | //////////////////////////////////////////////////////////////////////////////////////////////////// 6 | // 7 | // Pal8 to RGB -- pixel shader 2.0 8 | // 9 | //////////////////////////////////////////////////////////////////////////////////////////////////// 10 | 11 | float4 FP_BlitPal8(float4 pos : SV_Position, float2 uv : TEXCOORD0) : SV_Target 12 | { 13 | half index = (half)SAMPLE2D(srctex, srcsamp, (half2)uv).r; 14 | 15 | return SAMPLE2D(paltex, palsamp, half2(index * 255.0h/256.0h + 0.5h/256.0h, 0)); 16 | } 17 | 18 | float4 FP_BlitPal8RBSwap(float4 pos : SV_Position, float2 uv : TEXCOORD0) : SV_Target 19 | { 20 | half index = (half)SAMPLE2D(srctex, srcsamp, (half2)uv).r; 21 | 22 | return SAMPLE2D(paltex, palsamp, half2(index * 255.0h/256.0h + 0.5h/256.0h, 0)).bgra; 23 | } 24 | -------------------------------------------------------------------------------- /src/VDDisplay/shaders/rgb.fxh: -------------------------------------------------------------------------------- 1 | extern Texture2D rgbtex : register(t1); 2 | extern SamplerState rgbsamp : register(s1); 3 | 4 | //////////////////////////////////////////////////////////////////////////////////////////////////// 5 | // 6 | // Pal8 to RGB -- pixel shader 2.0 7 | // 8 | //////////////////////////////////////////////////////////////////////////////////////////////////// 9 | 10 | half4 FP_BlitRGB16_L8A8(float4 pos : SV_Position, float2 uv : TEXCOORD0) : SV_Target { 11 | half4 px = (half4)SAMPLE2D(srctex, srcsamp, (half2)uv) * (255.0h / 256.0h) + (0.5h / 256.0h); 12 | half4 c0 = (half4)SAMPLE2D(rgbtex, rgbsamp, half2(px.r, 0)); 13 | half4 c1 = (half4)SAMPLE2D(rgbtex, rgbsamp, half2(px.a, 1)); 14 | 15 | return c0 + c1; 16 | } 17 | 18 | half4 FP_BlitRGB16_R8G8(float4 pos : SV_Position, float2 uv : TEXCOORD0) : SV_Target { 19 | half4 px = (half4)SAMPLE2D(srctex, srcsamp, (half2)uv) * (255.0h / 256.0h) + (0.5h / 256.0h); 20 | half4 c0 = (half4)SAMPLE2D(rgbtex, rgbsamp, half2(px.r, 0)); 21 | half4 c1 = (half4)SAMPLE2D(rgbtex, rgbsamp, half2(px.g, 1)); 22 | 23 | return c0 + c1; 24 | } 25 | 26 | half4 FP_BlitRGB24(float4 pos : SV_Position, 27 | float2 uv0 : TEXCOORD0, 28 | float2 uv1 : TEXCOORD1, 29 | float2 uv2 : TEXCOORD2) : SV_Target { 30 | half b = (half)SAMPLE2D(srctex, srcsamp, (half2)uv0); 31 | half g = (half)SAMPLE2D(srctex, srcsamp, (half2)uv1); 32 | half r = (half)SAMPLE2D(srctex, srcsamp, (half2)uv2); 33 | 34 | return half4(r, g, b, 1); 35 | } 36 | -------------------------------------------------------------------------------- /src/VDDisplay/shaders/sysdefs.fxh: -------------------------------------------------------------------------------- 1 | #if PROFILE_D3D9 2 | #define SAMPLE2D(tex, samp, uv) tex2D(samp, uv) 3 | #define VP_APPLY_VIEWPORT(hpos) hpos.xy = hpos.xy * vd_viewport.xy + vd_viewport.zw * hpos.w 4 | #else 5 | #define SAMPLE2D(tex, samp, uv) tex.Sample(samp, uv) 6 | #define VP_APPLY_VIEWPORT(hpos) (0) 7 | #endif 8 | 9 | // system variables 10 | extern float4 vd_viewport : register(vs, c0); 11 | -------------------------------------------------------------------------------- /src/VDDisplay/source/renderer.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | VDDisplayImageView::VDDisplayImageView() 5 | : mbDynamic(false) 6 | , mUniquenessCounter(0) 7 | { 8 | memset(&mPixmap, 0, sizeof mPixmap); 9 | } 10 | 11 | VDDisplayImageView::~VDDisplayImageView() { 12 | } 13 | 14 | void VDDisplayImageView::SetImage(const VDPixmap& px, bool dynamic) { 15 | SetCachedImage(NULL); 16 | 17 | mPixmap = px; 18 | mbDynamic = dynamic; 19 | } 20 | 21 | void VDDisplayImageView::SetCachedImage(IVDRefUnknown *p) { 22 | mpCachedImage = p; 23 | } 24 | 25 | void VDDisplayImageView::Invalidate() { 26 | ++mUniquenessCounter; 27 | } 28 | -------------------------------------------------------------------------------- /src/VDDisplay/source/stdafx.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | -------------------------------------------------------------------------------- /src/VDFilters/h/Blur.h: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // Copyright (C) 1998-2001 Avery Lee 3 | // 4 | // This program is free software; you can redistribute it and/or modify 5 | // it under the terms of the GNU General Public License as published by 6 | // the Free Software Foundation; either version 2 of the License, or 7 | // (at your option) any later version. 8 | // 9 | // This program is distributed in the hope that it will be useful, 10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | // GNU General Public License for more details. 13 | // 14 | // You should have received a copy of the GNU General Public License 15 | // along with this program; if not, write to the Free Software 16 | // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 17 | 18 | #ifndef f_VD2_VDFILTERS_BLUR_H 19 | #define f_VD2_VDFILTERS_BLUR_H 20 | 21 | struct VDPixmap; 22 | 23 | class VEffect { 24 | public: 25 | virtual ~VEffect() {} 26 | 27 | virtual void run(const VDPixmap&) = 0; 28 | virtual void run(const VDPixmap&, const VDPixmap&) = 0; 29 | }; 30 | 31 | VEffect *VCreateEffectBlur(const VDPixmapLayout&); 32 | VEffect *VCreateEffectBlurHi(const VDPixmapLayout&); 33 | 34 | #endif 35 | -------------------------------------------------------------------------------- /src/VDFilters/h/SingleValueDialog.h: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // Internal filter library 3 | // Copyright (C) 1998-2011 Avery Lee 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 18 | 19 | #ifndef f_VD2_VDFILTERS_SINGLEVALUEDIALOG_H 20 | #define f_VD2_VDFILTERS_SINGLEVALUEDIALOG_H 21 | 22 | #include 23 | 24 | bool VDFilterGetSingleValue(VDXHWND hWnd, sint32 cVal, sint32 *result, sint32 lMin, sint32 lMax, const char *title, IVDXFilterPreview2 *ifp2, void (*pUpdateFunction)(long value, void *data), void *pUpdateFunctionData); 25 | 26 | #endif // f_VD2_VDFILTERS_SINGLEVALUEDIALOG_H 27 | -------------------------------------------------------------------------------- /src/VDFilters/h/stdafx.h: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // Internal filter library 3 | // Copyright (C) 1998-2011 Avery Lee 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 18 | 19 | #include 20 | #include 21 | #include 22 | #include 23 | #include 24 | #include 25 | #include 26 | #include 27 | #include 28 | #include 29 | #include 30 | #include "resource.h" -------------------------------------------------------------------------------- /src/VDFilters/res/VDFilters.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/VDFilters/res/VDFilters.rc -------------------------------------------------------------------------------- /src/VDFilters/source/VFBlur.vdshaders: -------------------------------------------------------------------------------- 1 | kVDFilterBlurPS: 2 | ps_2_0 3 | def c0, 0.25, 0, 0, 0 4 | dcl_2d s0 5 | dcl t0.xy 6 | dcl t1.xy 7 | dcl t2.xy 8 | dcl t3.xy 9 | texld r0, t0, s0 10 | texld r1, t1, s0 11 | texld r2, t2, s0 12 | texld r3, t3, s0 13 | mul r0, r0, c0.x 14 | mad r0, r1, c0.x, r0 15 | mad r0, r2, c0.x, r0 16 | mad r0, r3, c0.x, r0 17 | mov oC0, r0 18 | 19 | kVDFilterBlurMorePS: 20 | ps_2_0 21 | def c0, 0.09765625, 0.1171875, 0.140625, 0 22 | dcl_2d s0 23 | dcl t0.xyzw 24 | dcl t1.xy 25 | dcl t2.xy 26 | dcl t3.xy 27 | dcl t4.xy 28 | dcl t5.xy 29 | dcl t6.xy 30 | dcl t7.xy 31 | texld r0, t0, s0 32 | texld r1, t1, s0 33 | texld r2, t2, s0 34 | texld r3, t3, s0 35 | texld r4, t4, s0 36 | texld r5, t5, s0 37 | texld r6, t6, s0 38 | texld r7, t7, s0 39 | mov r8.xy, t0.wzyx 40 | texld r8, r8, s0 41 | mul r0, r0, c0.x 42 | mad r0, r1, c0.x, r0 43 | mad r0, r2, c0.x, r0 44 | mad r0, r3, c0.x, r0 45 | mad r0, r4, c0.y, r0 46 | mad r0, r5, c0.y, r0 47 | mad r0, r6, c0.y, r0 48 | mad r0, r7, c0.y, r0 49 | mad r0, r8, c0.z, r0 50 | mov oC0, r0 51 | -------------------------------------------------------------------------------- /src/VDFilters/source/VFBrightCont.vdshaders: -------------------------------------------------------------------------------- 1 | kVDFilterBrightContFP: 2 | ps_2_0 3 | dcl_2d s0 4 | dcl t0.xy 5 | texld r0, t0, s0 6 | mad r0.ga, r0, c0.x, c0.y 7 | mad r0.rb, r0, c0.x, c0.z 8 | mov oC0, r0 9 | -------------------------------------------------------------------------------- /src/VDFilters/source/VFGrayscale.vdshaders: -------------------------------------------------------------------------------- 1 | kVDVFGrayscaleFP_RGB:: 2 | extern sampler2D src0 : register(s0); 3 | 4 | half4 main( 5 | float4 uv0 : TEXCOORD0 6 | ) : COLOR0 7 | { 8 | half3 kLumaAxis = { 0.30h, 0.59h, 0.11h }; 9 | half3 c0 = (half3)tex2D(src0, uv0.xy).xyz; 10 | 11 | return dot(c0, kLumaAxis); 12 | } 13 | 14 | kVDVFGrayscaleFP_YUV:: 15 | extern sampler2D src0 : register(s0); 16 | 17 | half4 main( 18 | float4 uv0 : TEXCOORD0 19 | ) : COLOR0 20 | { 21 | half3 c0 = (half3)tex2D(src0, uv0.xy).xyz; 22 | 23 | return half4(128.0h/255.0h, c0.y, 128.0h/255.0h, 128.0h/255.0h); 24 | } 25 | -------------------------------------------------------------------------------- /src/VDFilters/source/VFIVTC.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/VDFilters/source/VFIVTC.cpp -------------------------------------------------------------------------------- /src/VDFilters/source/VFInvert.vdshaders: -------------------------------------------------------------------------------- 1 | kVDFilterInvertPS: 2 | ps_2_0 3 | def c0, 1, 0, 0, 0 4 | dcl t0.xy 5 | dcl_2d s0 6 | texld_pp r0, t0, s0 7 | add_pp r0, c0.x, -r0 8 | mov_pp oC0, r0 9 | -------------------------------------------------------------------------------- /src/VDFilters/source/VFMergeLayers.vdshaders: -------------------------------------------------------------------------------- 1 | kVDVFMergeLayersFP_Lerp:: 2 | extern sampler2D src0 : register(s0); 3 | extern sampler2D src1 : register(s1); 4 | extern sampler2D src2 : register(s2); 5 | extern float opacity : register(c0); 6 | 7 | half4 main( 8 | float4 uv0 : TEXCOORD0, 9 | float4 uv1 : TEXCOORD1, 10 | float4 uv2 : TEXCOORD2 11 | ) : COLOR0 12 | { 13 | half4 c0 = (half4)tex2D(src0, uv0.xy); 14 | half4 c1 = (half4)tex2D(src1, uv1.xy); 15 | half4 c2 = (half4)tex2D(src2, uv2.xy); 16 | 17 | return lerp(c0, c1, c2); 18 | } 19 | 20 | kVDVFMergeLayersFP_Select:: 21 | extern sampler2D src0 : register(s0); 22 | extern sampler2D src1 : register(s1); 23 | extern sampler2D src2 : register(s2); 24 | extern float opacity : register(c0); 25 | 26 | half4 main( 27 | float4 uv0 : TEXCOORD0, 28 | float4 uv1 : TEXCOORD1, 29 | float4 uv2 : TEXCOORD2 30 | ) : COLOR0 31 | { 32 | half4 c0 = (half4)tex2D(src0, uv0.xy); 33 | half4 c1 = (half4)tex2D(src1, uv1.xy); 34 | half4 c2 = (half4)tex2D(src2, uv2.xy); 35 | 36 | return c2 >= 0.5h ? c1 : c0; 37 | } 38 | -------------------------------------------------------------------------------- /src/VDFilters/source/stdafx.cpp: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // Internal filter library 3 | // Copyright (C) 1998-2011 Avery Lee 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 18 | 19 | #include 20 | -------------------------------------------------------------------------------- /src/VDLib/source/win32/FileMapping.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | #include "vd2/VDLib/win32/FileMapping.h" 3 | #include 4 | 5 | VDFileMappingW32::VDFileMappingW32() 6 | : mpHandle(NULL) 7 | { 8 | } 9 | 10 | VDFileMappingW32::~VDFileMappingW32() { 11 | Shutdown(); 12 | } 13 | 14 | bool VDFileMappingW32::Init(uint32 bytes) { 15 | if (mpHandle) 16 | Shutdown(); 17 | 18 | mpHandle = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, bytes, NULL); 19 | if (!mpHandle) 20 | return false; 21 | 22 | return true; 23 | } 24 | 25 | void VDFileMappingW32::Shutdown() { 26 | if (mpHandle) { 27 | CloseHandle(mpHandle); 28 | mpHandle = NULL; 29 | } 30 | } 31 | 32 | /////////////////////////////////////////////////////////////////////////////// 33 | 34 | VDFileMappingViewW32::VDFileMappingViewW32() 35 | : mpView(NULL) 36 | { 37 | } 38 | 39 | VDFileMappingViewW32::~VDFileMappingViewW32() { 40 | Shutdown(); 41 | } 42 | 43 | bool VDFileMappingViewW32::Init(const VDFileMappingW32& mapping, uint64 offset, uint32 size) { 44 | Shutdown(); 45 | 46 | HANDLE h = mapping.GetHandle(); 47 | if (!h) 48 | return false; 49 | 50 | mpView = MapViewOfFile(h, FILE_MAP_WRITE, (uint32)(offset >> 32), (uint32)offset, size); 51 | if (!mpView) 52 | return false; 53 | 54 | return true; 55 | } 56 | 57 | void VDFileMappingViewW32::Shutdown() { 58 | if (mpView) { 59 | UnmapViewOfFile(mpView); 60 | mpView = NULL; 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /src/VDLib/stdafx.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | -------------------------------------------------------------------------------- /src/VDLib/stdafx.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | #include 4 | #include 5 | -------------------------------------------------------------------------------- /src/VDXFrame/include/stdafx.h: -------------------------------------------------------------------------------- 1 | // VDXFrame - Helper library for VirtualDub plugins 2 | // Copyright (C) 2008 Avery Lee 3 | // 4 | // The plugin headers in the VirtualDub plugin SDK are licensed differently 5 | // differently than VirtualDub and the Plugin SDK themselves. This 6 | // particular file is thus licensed as follows (the "zlib" license): 7 | // 8 | // This software is provided 'as-is', without any express or implied 9 | // warranty. In no event will the authors be held liable for any 10 | // damages arising from the use of this software. 11 | // 12 | // Permission is granted to anyone to use this software for any purpose, 13 | // including commercial applications, and to alter it and redistribute it 14 | // freely, subject to the following restrictions: 15 | // 16 | // 1. The origin of this software must not be misrepresented; you must 17 | // not claim that you wrote the original software. If you use this 18 | // software in a product, an acknowledgment in the product 19 | // documentation would be appreciated but is not required. 20 | // 2. Altered source versions must be plainly marked as such, and must 21 | // not be misrepresented as being the original software. 22 | // 3. This notice may not be removed or altered from any source 23 | // distribution. 24 | 25 | #define _CRT_SECURE_NO_DEPRECATE 26 | #define _CRT_SECURE_NO_WARNINGS 27 | #include 28 | #include 29 | #include 30 | #include 31 | #include 32 | 33 | #include 34 | -------------------------------------------------------------------------------- /src/VDXFrame/source/stdafx.cpp: -------------------------------------------------------------------------------- 1 | // VDXFrame - Helper library for VirtualDub plugins 2 | // Copyright (C) 2008 Avery Lee 3 | // 4 | // The plugin headers in the VirtualDub plugin SDK are licensed differently 5 | // differently than VirtualDub and the Plugin SDK themselves. This 6 | // particular file is thus licensed as follows (the "zlib" license): 7 | // 8 | // This software is provided 'as-is', without any express or implied 9 | // warranty. In no event will the authors be held liable for any 10 | // damages arising from the use of this software. 11 | // 12 | // Permission is granted to anyone to use this software for any purpose, 13 | // including commercial applications, and to alter it and redistribute it 14 | // freely, subject to the following restrictions: 15 | // 16 | // 1. The origin of this software must not be misrepresented; you must 17 | // not claim that you wrote the original software. If you use this 18 | // software in a product, an acknowledgment in the product 19 | // documentation would be appreciated but is not required. 20 | // 2. Altered source versions must be plainly marked as such, and must 21 | // not be misrepresented as being the original software. 22 | // 3. This notice may not be removed or altered from any source 23 | // distribution. 24 | 25 | #include "stdafx.h" 26 | -------------------------------------------------------------------------------- /src/VirtualDub-projects.props: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | v140_xp 5 | 6 | -------------------------------------------------------------------------------- /src/VirtualDub-vc14-AMD64.props: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | AMD64 5 | /Dxmmword=qword 6 | 7 | 8 | <_ProjectFileVersion>10.0.40219.1 9 | $(DXSDK_DIR)Include;$(IncludePath) 10 | $(DXSDK_DIR)Lib\x64;$(LibraryPath) 11 | 12 | 13 | 14 | 4244;4267;%(DisableSpecificWarnings) 15 | VD_CPU_SSE;%(PreprocessorDefinitions) 16 | 17 | 18 | 19 | 20 | $(VDPlatformDirTag) 21 | 22 | 23 | $(ML) 24 | true 25 | 26 | 27 | -------------------------------------------------------------------------------- /src/VirtualDub-vc14-Debug.props: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Debug 5 | 6 | 7 | <_ProjectFileVersion>10.0.40219.1 8 | 9 | 10 | 11 | $(VDConfigDirTag) 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/VirtualDub-vc14-IX86.props: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | <_ProjectFileVersion>10.0.40219.1 8 | $(DXSDK_DIR)Include;$(IncludePath) 9 | $(DXSDK_DIR)Lib\x86;$(LibraryPath) 10 | 11 | 12 | 13 | NoExtensions 14 | 15 | 16 | 17 | 18 | $(VDPlatformDirTag) 19 | 20 | 21 | -------------------------------------------------------------------------------- /src/VirtualDub-vc14-Release.props: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Release 5 | 6 | 7 | <_ProjectFileVersion>10.0.40219.1 8 | 9 | 10 | 11 | AnySuitable 12 | 13 | 14 | 15 | 16 | true 17 | 18 | 19 | 20 | 21 | Speed 22 | 23 | 24 | 25 | 26 | true 27 | MaxSpeed 28 | 29 | 30 | 31 | 32 | $(VDConfigDirTag) 33 | 34 | 35 | -------------------------------------------------------------------------------- /src/VirtualDub-vc9-AMD64.vsprops: -------------------------------------------------------------------------------- 1 | 2 | 7 | 12 | 16 | 21 | 25 | 26 | -------------------------------------------------------------------------------- /src/VirtualDub-vc9-Debug.vsprops: -------------------------------------------------------------------------------- 1 | 2 | 7 | 11 | 12 | -------------------------------------------------------------------------------- /src/VirtualDub-vc9-IX86.vsprops: -------------------------------------------------------------------------------- 1 | 2 | 7 | 11 | 15 | 16 | -------------------------------------------------------------------------------- /src/VirtualDub-vc9-Release.vsprops: -------------------------------------------------------------------------------- 1 | 2 | 7 | 15 | 19 | 20 | -------------------------------------------------------------------------------- /src/VirtualDub-vc9.vsprops: -------------------------------------------------------------------------------- 1 | 2 | 8 | 19 | 23 | 27 | 31 | 35 | 39 | 40 | -------------------------------------------------------------------------------- /src/VirtualDub/build.cfg: -------------------------------------------------------------------------------- 1 | counter-tag: Althena 2 | -------------------------------------------------------------------------------- /src/VirtualDub/dist/aviproxy/proxyoff.reg: -------------------------------------------------------------------------------- 1 | REGEDIT4 2 | 3 | [HKEY_CLASSES_ROOT\AVIFile\Extensions\AVI] 4 | @="{00020000-0000-0000-C000-000000000046}" 5 | 6 | [HKEY_CLASSES_ROOT\AVIFile\RIFFHandlers\AVI] 7 | @="{00020000-0000-0000-C000-000000000046}" 8 | -------------------------------------------------------------------------------- /src/VirtualDub/dist/aviproxy/proxyon.reg: -------------------------------------------------------------------------------- 1 | REGEDIT4 2 | 3 | [HKEY_CLASSES_ROOT\AVIFile\Extensions\AVI] 4 | @="{894288e0-0948-11d2-8109-004845000eb5}" 5 | 6 | [HKEY_CLASSES_ROOT\AVIFile\RIFFHandlers\AVI] 7 | @="{894288e0-0948-11d2-8109-004845000eb5}" 8 | -------------------------------------------------------------------------------- /src/VirtualDub/dist/frameserver64.reg: -------------------------------------------------------------------------------- 1 | Windows Registry Editor Version 5.00 2 | 3 | [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{894288e0-0948-11d2-8109-004845000eb5}] 4 | @="VirtualDub link handler" 5 | 6 | [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{894288e0-0948-11d2-8109-004845000eb5}\InprocServer32] 7 | @="vdremote64.dll" 8 | "ThreadingModel"="Apartment" 9 | 10 | [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{894288e0-0948-11d2-8109-004845000eb5}\InprocServer32\AVIFile] 11 | @="1" 12 | 13 | [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AVIFile\Extensions\VDR] 14 | @="{894288e0-0948-11d2-8109-004845000eb5}" 15 | 16 | [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AVIFile\RIFFHandlers\VDRM] 17 | @="{894288e0-0948-11d2-8109-004845000eb5}" 18 | 19 | [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\CLSID\{894288e0-0948-11d2-8109-004845000eb5}] 20 | @="VirtualDub link handler" 21 | 22 | [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\CLSID\{894288e0-0948-11d2-8109-004845000eb5}\InprocServer32] 23 | @="vdremote.dll" 24 | ThreadingModel="Apartment" 25 | 26 | [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\CLSID\{894288e0-0948-11d2-8109-004845000eb5}\InprocServer32\AVIFile] 27 | @="1" 28 | 29 | [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\AVIFile\Extensions\VDR] 30 | @="{894288e0-0948-11d2-8109-004845000eb5}" 31 | 32 | [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\AVIFile\RIFFHandlers\VDRM] 33 | @="{894288e0-0948-11d2-8109-004845000eb5}" 34 | -------------------------------------------------------------------------------- /src/VirtualDub/dist/plugins32/readme.txt: -------------------------------------------------------------------------------- 1 | Filter plugins (*.vdf) placed here are automatically loaded 2 | by the 32-bit version of VirtualDub on startup. 3 | -------------------------------------------------------------------------------- /src/VirtualDub/dist/plugins64/readme.txt: -------------------------------------------------------------------------------- 1 | Filter plugins (*.vdf) placed here are automatically loaded 2 | by the 64-bit version of VirtualDub on startup. 3 | -------------------------------------------------------------------------------- /src/VirtualDub/h/AVIOutputFLM.h: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // Copyright (C) 1998-2006 Avery Lee 3 | // 4 | // This program is free software; you can redistribute it and/or modify 5 | // it under the terms of the GNU General Public License as published by 6 | // the Free Software Foundation; either version 2 of the License, or 7 | // (at your option) any later version. 8 | // 9 | // This program is distributed in the hope that it will be useful, 10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | // GNU General Public License for more details. 13 | // 14 | // You should have received a copy of the GNU General Public License 15 | // along with this program; if not, write to the Free Software 16 | // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 17 | 18 | #ifndef f_AVIOUTPUTFLM_H 19 | #define f_AVIOUTPUTFLM_H 20 | 21 | #include 22 | 23 | class AVIOutputFLM : public AVIOutput { 24 | public: 25 | AVIOutputFLM(); 26 | 27 | IVDMediaOutputStream *createVideoStream(); 28 | IVDMediaOutputStream *createAudioStream(); 29 | 30 | bool init(const wchar_t *szFile); 31 | void finalize(); 32 | 33 | protected: 34 | vdautoptr mpAsync; 35 | }; 36 | 37 | #endif 38 | -------------------------------------------------------------------------------- /src/VirtualDub/h/AVIOutputGIF.h: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // Copyright (C) 1998-2007 Avery Lee 3 | // 4 | // This program is free software; you can redistribute it and/or modify 5 | // it under the terms of the GNU General Public License as published by 6 | // the Free Software Foundation; either version 2 of the License, or 7 | // (at your option) any later version. 8 | // 9 | // This program is distributed in the hope that it will be useful, 10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | // GNU General Public License for more details. 13 | // 14 | // You should have received a copy of the GNU General Public License 15 | // along with this program; if not, write to the Free Software 16 | // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 17 | 18 | #ifndef f_AVIOUTPUTGIF_H 19 | #define f_AVIOUTPUTGIF_H 20 | 21 | #include 22 | #include "AVIOutput.h" 23 | 24 | class VideoSource; 25 | 26 | class IVDAVIOutputGIF { 27 | public: 28 | virtual ~IVDAVIOutputGIF() {} 29 | virtual AVIOutput *AsAVIOutput() = 0; 30 | virtual void SetLoopCount(int loopCount) = 0; 31 | }; 32 | 33 | IVDAVIOutputGIF *VDCreateAVIOutputGIF(); 34 | 35 | #endif 36 | -------------------------------------------------------------------------------- /src/VirtualDub/h/AVIOutputSegmented.h: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // Copyright (C) 1998-2006 Avery Lee 3 | // 4 | // This program is free software; you can redistribute it and/or modify 5 | // it under the terms of the GNU General Public License as published by 6 | // the Free Software Foundation; either version 2 of the License, or 7 | // (at your option) any later version. 8 | // 9 | // This program is distributed in the hope that it will be useful, 10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | // GNU General Public License for more details. 13 | // 14 | // You should have received a copy of the GNU General Public License 15 | // along with this program; if not, write to the Free Software 16 | // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 17 | 18 | #ifndef f_AVIOUTPUTFILESEGMENTED_H 19 | #define f_AVIOUTPUTFILESEGMENTED_H 20 | 21 | class IVDDubberOutputSystem; 22 | class IVDMediaOutput; 23 | 24 | IVDMediaOutput *VDCreateMediaOutputSegmented(IVDDubberOutputSystem *pOutputSystem, double interval, double preload, sint64 max_bytes, sint64 max_frames); 25 | 26 | #endif 27 | -------------------------------------------------------------------------------- /src/VirtualDub/h/AVIReadCache.h: -------------------------------------------------------------------------------- 1 | #ifndef f_AVIREADCACHE_H 2 | #define f_AVIREADCACHE_H 3 | 4 | class AVIStreamNode; 5 | 6 | class VDINTERFACE IAVIReadCacheSource { 7 | public: 8 | virtual long ReadData(int stream, void *buffer, sint64 position, long len); 9 | virtual bool Stream(AVIStreamNode *, _int64 pos) = 0; 10 | virtual sint64 getStreamPtr() = 0; 11 | }; 12 | 13 | class AVIReadCache { 14 | public: 15 | long cache_hit_bytes, cache_miss_bytes; 16 | int reads; 17 | 18 | AVIReadCache(int nlines, int nstream, IAVIReadCacheSource *root, AVIStreamNode *psnData); 19 | ~AVIReadCache(); 20 | 21 | void ResetStatistics(); 22 | bool WriteBegin(sint64 pos, uint32 len); 23 | void Write(const void *buffer, uint32 len); 24 | void WriteEnd(); 25 | long Read(void *dest, sint64 chunk_pos, sint64 pos, uint32 len); 26 | 27 | long getMaxRead() { 28 | return (long)mSize; 29 | } 30 | 31 | private: 32 | struct IndexBlockEntry { 33 | sint64 pos; 34 | uint32 start; 35 | uint32 len; 36 | }; 37 | 38 | struct IndexBlock { 39 | enum { kBlocksPerIndex = 64 }; 40 | 41 | int mHead; 42 | int mTail; 43 | IndexBlockEntry mBlocks[kBlocksPerIndex]; 44 | }; 45 | 46 | AVIStreamNode *psnData; 47 | 48 | vdfastvector mBuffer; 49 | 50 | typedef std::list tIndexBlockList; 51 | tIndexBlockList mActiveIndices; 52 | tIndexBlockList mFreeIndices; 53 | 54 | int mSize, mFree; 55 | int mWritePos; 56 | int stream; 57 | IAVIReadCacheSource *source; 58 | }; 59 | 60 | 61 | #endif 62 | -------------------------------------------------------------------------------- /src/VirtualDub/h/AccelEditDialog.h: -------------------------------------------------------------------------------- 1 | #ifndef f_VD2_ACCELEDITDIALOG_H 2 | #define f_VD2_ACCELEDITDIALOG_H 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | #include 9 | 10 | bool VDShowDialogEditAccelerators(VDGUIHandle hParent, const VDAccelToCommandEntry *commands, uint32 commandCount, VDAccelTableDefinition& accelTable, VDAccelTableDefinition& defaultAccelTable); 11 | 12 | #endif 13 | -------------------------------------------------------------------------------- /src/VirtualDub/h/AutoRecover.h: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // Copyright (C) 1998-2011 Avery Lee 3 | // 4 | // This program is free software; you can redistribute it and/or modify 5 | // it under the terms of the GNU General Public License as published by 6 | // the Free Software Foundation; either version 2 of the License, or 7 | // (at your option) any later version. 8 | // 9 | // This program is distributed in the hope that it will be useful, 10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | // GNU General Public License for more details. 13 | // 14 | // You should have received a copy of the GNU General Public License 15 | // along with this program; if not, write to the Free Software 16 | // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 17 | 18 | #ifndef f_VD2_AUTORECOVER_H 19 | #define f_VD2_AUTORECOVER_H 20 | 21 | void VDUICheckForAutoRecoverFiles(VDGUIHandle h); 22 | 23 | #endif // f_VD2_AUTORECOVER_H 24 | -------------------------------------------------------------------------------- /src/VirtualDub/h/DynamicCode.h: -------------------------------------------------------------------------------- 1 | struct DynamicCodeBlock { 2 | void *pCode; 3 | long cbCode; 4 | short nEntryPoints; 5 | short nRelocs; 6 | 7 | long entrypts[1]; 8 | }; 9 | 10 | class DynamicCode { 11 | protected: 12 | void **pDynamicBlock; 13 | 14 | public: 15 | DynamicCode(const DynamicCodeBlock *, long *params); 16 | ~DynamicCode(); 17 | 18 | void *getEntryPoint(int ep) { return pDynamicBlock[ep]; } 19 | }; 20 | -------------------------------------------------------------------------------- /src/VirtualDub/h/FilterAccelReadbackBuffer.h: -------------------------------------------------------------------------------- 1 | #ifndef f_VD2_FILTERACCELREADBACKBUFFER_H 2 | #define f_VD2_FILTERACCELREADBACKBUFFER_H 3 | 4 | class VDFilterAccelReadbackBuffer { 5 | VDFilterAccelReadbackBuffer(const VDFilterAccelReadbackBuffer&); 6 | VDFilterAccelReadbackBuffer& operator=(const VDFilterAccelReadbackBuffer&); 7 | public: 8 | VDFilterAccelReadbackBuffer(); 9 | ~VDFilterAccelReadbackBuffer(); 10 | 11 | IVDTSurface *GetRenderTarget() const { return mpReadbackRT; } 12 | IVDTReadbackBuffer *GetReadbackBuffer() const { return mpReadbackBuffer; } 13 | 14 | bool Init(IVDTContext *ctx, uint32 w, uint32 h, bool yuvMode); 15 | void Shutdown(); 16 | 17 | protected: 18 | IVDTSurface *mpReadbackRT; 19 | IVDTReadbackBuffer *mpReadbackBuffer; 20 | }; 21 | 22 | #endif // f_VD2_FILTERACCELREADBACKBUFFER_H 23 | -------------------------------------------------------------------------------- /src/VirtualDub/h/FilterFrameSharingPredictor.h: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // Copyright (C) 1998-2009 Avery Lee 3 | // 4 | // This program is free software; you can redistribute it and/or modify 5 | // it under the terms of the GNU General Public License as published by 6 | // the Free Software Foundation; either version 2 of the License, or 7 | // (at your option) any later version. 8 | // 9 | // This program is distributed in the hope that it will be useful, 10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | // GNU General Public License for more details. 13 | // 14 | // You should have received a copy of the GNU General Public License 15 | // along with this program; if not, write to the Free Software 16 | // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 17 | 18 | #ifndef f_VD2_FILTERFRAMESHARINGPREDICTOR_H 19 | #define f_VD2_FILTERFRAMESHARINGPREDICTOR_H 20 | 21 | class VDFilterFrameSharingPredictor { 22 | public: 23 | VDFilterFrameSharingPredictor(); 24 | 25 | void Clear(); 26 | void OnRequest(sint64 frame); 27 | 28 | bool IsSharingPredicted(sint64 frame) const { 29 | return mShareCount > 0; 30 | } 31 | 32 | protected: 33 | struct LRUEntry { 34 | sint64 mFrame; 35 | bool mbShared; 36 | }; 37 | 38 | uint32 mShareCount; 39 | LRUEntry mLRU[8]; 40 | }; 41 | 42 | #endif 43 | -------------------------------------------------------------------------------- /src/VirtualDub/h/HexViewer.h: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // Copyright (C) 1998-2001 Avery Lee 3 | // 4 | // This program is free software; you can redistribute it and/or modify 5 | // it under the terms of the GNU General Public License as published by 6 | // the Free Software Foundation; either version 2 of the License, or 7 | // (at your option) any later version. 8 | // 9 | // This program is distributed in the hope that it will be useful, 10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | // GNU General Public License for more details. 13 | // 14 | // You should have received a copy of the GNU General Public License 15 | // along with this program; if not, write to the Free Software 16 | // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 17 | 18 | #ifndef f_HEXVIEWER_H 19 | #define f_HEXVIEWER_H 20 | 21 | #include 22 | 23 | #define HEXEDITORCLASS (szHexEditorClassName) 24 | 25 | #ifndef f_HEXVIEWER_CPP 26 | extern const char szHexEditorClassName[]; 27 | #endif 28 | 29 | ATOM RegisterHexEditor(); 30 | 31 | void HexEdit(HWND, const wchar_t *filename, bool readonly); 32 | 33 | #endif 34 | -------------------------------------------------------------------------------- /src/VirtualDub/h/HotKeyExControl.h: -------------------------------------------------------------------------------- 1 | #ifndef f_VD2_HOTKEYEXCONTROL_H 2 | #define f_VD2_HOTKEYEXCONTROL_H 3 | 4 | #include 5 | #include 6 | 7 | struct VDUIAccelerator; 8 | class IVDUIHotKeyExControl; 9 | 10 | #define VDUIHOTKEYEXCLASS "VDHotKeyEx" 11 | 12 | bool VDUIRegisterHotKeyExControl(); 13 | IVDUIHotKeyExControl *VDGetUIHotKeyExControl(VDGUIHandle h); 14 | 15 | class IVDUIHotKeyExControl : public IVDRefUnknown { 16 | public: 17 | enum { kTypeID = 'uihk' }; 18 | 19 | virtual void GetAccelerator(VDUIAccelerator& accel) = 0; 20 | virtual void SetAccelerator(const VDUIAccelerator& accel) = 0; 21 | virtual void Clear() = 0; 22 | 23 | virtual VDEvent& OnChange() = 0; 24 | }; 25 | 26 | #endif 27 | -------------------------------------------------------------------------------- /src/VirtualDub/h/MJPEGDecoder.h: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // Copyright (C) 1998-2001 Avery Lee 3 | // 4 | // This program is free software; you can redistribute it and/or modify 5 | // it under the terms of the GNU General Public License as published by 6 | // the Free Software Foundation; either version 2 of the License, or 7 | // (at your option) any later version. 8 | // 9 | // This program is distributed in the hope that it will be useful, 10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | // GNU General Public License for more details. 13 | // 14 | // You should have received a copy of the GNU General Public License 15 | // along with this program; if not, write to the Free Software 16 | // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 17 | 18 | #ifndef f_MJPEGDECODER_H 19 | #define f_MJPEGDECODER_H 20 | 21 | #include "VirtualDub.h" 22 | 23 | class IMJPEGDecoder { 24 | public: 25 | virtual ~IMJPEGDecoder() {}; 26 | 27 | virtual void decodeFrameRGB15(uint32 *output, uint8 *input, int len)=0; 28 | virtual void decodeFrameRGB32(uint32 *output, uint8 *input, int len)=0; 29 | virtual void decodeFrameUYVY(uint32 *output, uint8 *input, int len)=0; 30 | virtual void decodeFrameYUY2(uint32 *output, uint8 *input, int len)=0; 31 | }; 32 | 33 | IMJPEGDecoder *CreateMJPEGDecoder(int w, int h); 34 | 35 | #endif 36 | -------------------------------------------------------------------------------- /src/VirtualDub/h/MRUList.h: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // Copyright (C) 1998-2001 Avery Lee 3 | // 4 | // This program is free software; you can redistribute it and/or modify 5 | // it under the terms of the GNU General Public License as published by 6 | // the Free Software Foundation; either version 2 of the License, or 7 | // (at your option) any later version. 8 | // 9 | // This program is distributed in the hope that it will be useful, 10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | // GNU General Public License for more details. 13 | // 14 | // You should have received a copy of the GNU General Public License 15 | // along with this program; if not, write to the Free Software 16 | // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 17 | 18 | #ifndef f_MRULIST_H 19 | #define f_MRULIST_H 20 | 21 | #include 22 | #include 23 | 24 | class MRUList { 25 | private: 26 | std::vector mKey; 27 | std::vector mFiles; 28 | const char *mpKeyName; 29 | int mMaxCount; 30 | bool mbDirty; 31 | 32 | public: 33 | MRUList(int max_files, char *key); 34 | ~MRUList(); 35 | 36 | VDStringW operator[](int i); 37 | 38 | void set_capacity(int max_files); 39 | 40 | void add(const wchar_t *file); 41 | void move_to_top(int index); 42 | void clear(); 43 | void clear_history(); 44 | void load(); 45 | void flush(); 46 | }; 47 | 48 | #endif 49 | -------------------------------------------------------------------------------- /src/VirtualDub/h/RTProfileDisplay.h: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // Copyright (C) 1998-2003 Avery Lee 3 | // 4 | // This program is free software; you can redistribute it and/or modify 5 | // it under the terms of the GNU General Public License as published by 6 | // the Free Software Foundation; either version 2 of the License, or 7 | // (at your option) any later version. 8 | // 9 | // This program is distributed in the hope that it will be useful, 10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | // GNU General Public License for more details. 13 | // 14 | // You should have received a copy of the GNU General Public License 15 | // along with this program; if not, write to the Free Software 16 | // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 17 | 18 | #ifndef f_RTPROFILEDISPLAY_H 19 | #define f_RTPROFILEDISPLAY_H 20 | 21 | #include 22 | 23 | #define RTPROFILEDISPLAYCONTROLCLASS (g_szRTProfileDisplayControlName) 24 | 25 | extern const char g_szRTProfileDisplayControlName[]; 26 | 27 | ATOM RegisterRTProfileDisplayControl(); 28 | 29 | class VDRTProfiler; 30 | 31 | class IVDRTProfileDisplay { 32 | public: 33 | virtual void SetProfiler(VDRTProfiler *pProfiler) = 0; 34 | }; 35 | 36 | IVDRTProfileDisplay *VDGetIRTProfileDisplayControl(HWND hwnd); 37 | 38 | #endif 39 | -------------------------------------------------------------------------------- /src/VirtualDub/h/VideoSourceImages.h: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // Copyright (C) 1998-2007 Avery Lee 3 | // 4 | // This program is free software; you can redistribute it and/or modify 5 | // it under the terms of the GNU General Public License as published by 6 | // the Free Software Foundation; either version 2 of the License, or 7 | // (at your option) any later version. 8 | // 9 | // This program is distributed in the hope that it will be useful, 10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | // GNU General Public License for more details. 13 | // 14 | // You should have received a copy of the GNU General Public License 15 | // along with this program; if not, write to the Free Software 16 | // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 17 | 18 | #ifndef f_VIDEOSOURCEIMAGES_H 19 | #define f_VIDEOSOURCEIMAGES_H 20 | 21 | #include "VideoSource.h" 22 | 23 | class VDInputFileImages; 24 | 25 | IVDVideoSource *VDCreateVideoSourceImages(VDInputFileImages *base); 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /src/VirtualDub/h/VirtualDub.h: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // Copyright (C) 1998-2001 Avery Lee 3 | // 4 | // This program is free software; you can redistribute it and/or modify 5 | // it under the terms of the GNU General Public License as published by 6 | // the Free Software Foundation; either version 2 of the License, or 7 | // (at your option) any later version. 8 | // 9 | // This program is distributed in the hope that it will be useful, 10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | // GNU General Public License for more details. 13 | // 14 | // You should have received a copy of the GNU General Public License 15 | // along with this program; if not, write to the Free Software 16 | // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 17 | 18 | #ifndef f_VIRTUALDUB_H 19 | #define f_VIRTUALDUB_H 20 | 21 | void *allocmem(size_t); 22 | void freemem(void *); 23 | void *reallocmem(void *, size_t); 24 | void *callocmem(size_t, size_t); 25 | 26 | #endif 27 | -------------------------------------------------------------------------------- /src/VirtualDub/h/af_input.h: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // Copyright (C) 1998-2005 Avery Lee 3 | // 4 | // This program is free software; you can redistribute it and/or modify 5 | // it under the terms of the GNU General Public License as published by 6 | // the Free Software Foundation; either version 2 of the License, or 7 | // (at your option) any later version. 8 | // 9 | // This program is distributed in the hope that it will be useful, 10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | // GNU General Public License for more details. 13 | // 14 | // You should have received a copy of the GNU General Public License 15 | // along with this program; if not, write to the Free Software 16 | // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 17 | 18 | #ifndef f_AF_INPUT_H 19 | #define f_AF_INPUT_H 20 | 21 | class IVDAudioFilterInput { 22 | public: 23 | virtual void EnableDecompression(bool enable) = 0; 24 | }; 25 | 26 | IVDAudioFilterInput *VDGetAudioFilterInputInterface(void *); 27 | 28 | #endif 29 | -------------------------------------------------------------------------------- /src/VirtualDub/h/af_sink.h: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // Copyright (C) 1998-2003 Avery Lee 3 | // 4 | // This program is free software; you can redistribute it and/or modify 5 | // it under the terms of the GNU General Public License as published by 6 | // the Free Software Foundation; either version 2 of the License, or 7 | // (at your option) any later version. 8 | // 9 | // This program is distributed in the hope that it will be useful, 10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | // GNU General Public License for more details. 13 | // 14 | // You should have received a copy of the GNU General Public License 15 | // along with this program; if not, write to the Free Software 16 | // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 17 | 18 | #ifndef f_AF_SINK_H 19 | #define f_AF_SINK_H 20 | 21 | class IVDAudioFilterSink { 22 | public: 23 | virtual uint32 ReadSamples(void *dst, uint32 samples) = 0; 24 | virtual const void *GetFormat()=0; 25 | virtual int GetFormatLen()=0; 26 | virtual sint64 GetLength()=0; 27 | virtual bool IsEnded() = 0; 28 | }; 29 | 30 | IVDAudioFilterSink *VDGetAudioFilterSinkInterface(void *); 31 | 32 | #endif 33 | -------------------------------------------------------------------------------- /src/VirtualDub/h/afiltdlg.h: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // Copyright (C) 1998-2003 Avery Lee 3 | // 4 | // This program is free software; you can redistribute it and/or modify 5 | // it under the terms of the GNU General Public License as published by 6 | // the Free Software Foundation; either version 2 of the License, or 7 | // (at your option) any later version. 8 | // 9 | // This program is distributed in the hope that it will be useful, 10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | // GNU General Public License for more details. 13 | // 14 | // You should have received a copy of the GNU General Public License 15 | // along with this program; if not, write to the Free Software 16 | // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 17 | 18 | #ifndef f_AFILTDLG_H 19 | #define f_AFILTDLG_H 20 | 21 | #include 22 | #include 23 | 24 | void VDDisplayAudioFilterDialog(VDGUIHandle hwndParent); 25 | 26 | #endif 27 | -------------------------------------------------------------------------------- /src/VirtualDub/h/autodetect.h: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // Copyright (C) 1998-2001 Avery Lee 3 | // 4 | // This program is free software; you can redistribute it and/or modify 5 | // it under the terms of the GNU General Public License as published by 6 | // the Free Software Foundation; either version 2 of the License, or 7 | // (at your option) any later version. 8 | // 9 | // This program is distributed in the hope that it will be useful, 10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | // GNU General Public License for more details. 13 | // 14 | // You should have received a copy of the GNU General Public License 15 | // along with this program; if not, write to the Free Software 16 | // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 17 | 18 | class VideoSource; 19 | 20 | char *AutodetectFile(VideoSource *pvs); 21 | -------------------------------------------------------------------------------- /src/VirtualDub/h/auxdlg.h: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // Copyright (C) 1998-2001 Avery Lee 3 | // 4 | // This program is free software; you can redistribute it and/or modify 5 | // it under the terms of the GNU General Public License as published by 6 | // the Free Software Foundation; either version 2 of the License, or 7 | // (at your option) any later version. 8 | // 9 | // This program is distributed in the hope that it will be useful, 10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | // GNU General Public License for more details. 13 | // 14 | // You should have received a copy of the GNU General Public License 15 | // along with this program; if not, write to the Free Software 16 | // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 17 | 18 | #ifndef f_AUXDLG_H 19 | #define f_AUXDLG_H 20 | 21 | #include 22 | 23 | INT_PTR CALLBACK ShowTextDlgProc( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam); 24 | INT_PTR CALLBACK AboutDlgProc( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam); 25 | #define WM_MOVE_ WM_SETTEXT 26 | void Welcome(); 27 | void AnnounceExperimental(); 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /src/VirtualDub/h/capclip.h: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // Copyright (C) 1998-2001 Avery Lee 3 | // 4 | // This program is free software; you can redistribute it and/or modify 5 | // it under the terms of the GNU General Public License as published by 6 | // the Free Software Foundation; either version 2 of the License, or 7 | // (at your option) any later version. 8 | // 9 | // This program is distributed in the hope that it will be useful, 10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | // GNU General Public License for more details. 13 | // 14 | // You should have received a copy of the GNU General Public License 15 | // along with this program; if not, write to the Free Software 16 | // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 17 | 18 | #ifndef f_CAPCLIP_H 19 | #define f_CAPCLIP_H 20 | 21 | #include 22 | #include 23 | 24 | #include "VBitmap.h" 25 | 26 | class CaptureFrameSource { 27 | private: 28 | BITMAPINFOHEADER bmihDecomp; 29 | BITMAPINFOHEADER *bmihSrc; 30 | HIC hic; 31 | VBitmap vbAnalyze; 32 | void * pFrameBuffer; 33 | bool fDecompressionOk; 34 | 35 | void _destruct(); 36 | 37 | public: 38 | CaptureFrameSource(HWND); 39 | ~CaptureFrameSource(); 40 | 41 | bool CheckFrameSize(int w, int h); 42 | const VBitmap *Decompress(VIDEOHDR *pvhdr); 43 | const VBitmap *getFrameBuffer() { 44 | return &vbAnalyze; 45 | } 46 | }; 47 | 48 | #endif 49 | -------------------------------------------------------------------------------- /src/VirtualDub/h/capfilter.h: -------------------------------------------------------------------------------- 1 | #ifndef f_CAPFILTER_H 2 | #define f_CAPFILTER_H 3 | 4 | #include 5 | 6 | class VDFraction; 7 | 8 | class VDINTERFACE IVDCaptureFilterSystem { 9 | public: 10 | enum FilterMode { 11 | kFilterDisable, 12 | kFilterLinear, 13 | kFilterCubic, 14 | 15 | kFilterCount 16 | }; 17 | 18 | virtual ~IVDCaptureFilterSystem() {} 19 | 20 | virtual void SetCrop(uint32 x1, uint32 y1, uint32 x2, uint32 y2) = 0; 21 | virtual void SetNoiseReduction(uint32 threshold) = 0; 22 | virtual void SetLumaSquish(bool blackEnable, bool whiteEnable) = 0; 23 | virtual void SetFieldSwap(bool enable) = 0; 24 | virtual void SetVertSquashMode(FilterMode mode) = 0; 25 | virtual void SetChainEnable(bool enable, bool force24Bit) = 0; 26 | 27 | virtual VDFraction GetOutputFrameRate() = 0; 28 | 29 | virtual void Init(VDPixmapLayout& layout, const VDFraction& frameRate) = 0; 30 | virtual void ProcessIn(const VDPixmap& px) = 0; 31 | virtual bool ProcessOut(VDPixmap& px, void *&data, uint32& size) = 0; 32 | virtual void Shutdown() = 0; 33 | }; 34 | 35 | IVDCaptureFilterSystem *VDCreateCaptureFilterSystem(); 36 | 37 | #endif 38 | -------------------------------------------------------------------------------- /src/VirtualDub/h/capgraph.h: -------------------------------------------------------------------------------- 1 | #ifndef f_CAPGRAPH_H 2 | #define f_CAPGRAPH_H 3 | 4 | #include 5 | 6 | class IVDCaptureStatsCollector; 7 | 8 | class VDINTERFACE IVDUICaptureGraph { 9 | public: 10 | enum { kTypeID = 'cpgr' }; 11 | 12 | virtual IVDCaptureProfiler *AsICaptureProfiler() = 0; 13 | virtual void Clear() = 0; 14 | }; 15 | 16 | #endif -------------------------------------------------------------------------------- /src/VirtualDub/h/caphisto.h: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // Copyright (C) 1998-2001 Avery Lee 3 | // 4 | // This program is free software; you can redistribute it and/or modify 5 | // it under the terms of the GNU General Public License as published by 6 | // the Free Software Foundation; either version 2 of the License, or 7 | // (at your option) any later version. 8 | // 9 | // This program is distributed in the hope that it will be useful, 10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | // GNU General Public License for more details. 13 | // 14 | // You should have received a copy of the GNU General Public License 15 | // along with this program; if not, write to the Free Software 16 | // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 17 | 18 | #ifndef f_CAPHISTO_H 19 | #define f_CAPHISTO_H 20 | 21 | class IVDUIWindow; 22 | 23 | class VDINTERFACE IVDCaptureVideoHistogram { 24 | public: 25 | virtual ~IVDCaptureVideoHistogram() {} 26 | 27 | virtual bool Process(const VDPixmap& px, float out[256], double scale) = 0; 28 | }; 29 | 30 | class VDINTERFACE IVDUICaptureVideoHistogram : public IVDUnknown { 31 | public: 32 | enum { kTypeID = 'caph' }; 33 | 34 | virtual void SetHistogram(const float data[256]) = 0; // (thread-safe) 35 | }; 36 | 37 | IVDCaptureVideoHistogram *VDCreateCaptureVideoHistogram(); 38 | IVDUIWindow *VDCreateUICaptureVideoHistogram(); 39 | 40 | #endif 41 | -------------------------------------------------------------------------------- /src/VirtualDub/h/caputils.h: -------------------------------------------------------------------------------- 1 | #ifndef f_VD2_CAPUTILS_H 2 | #define f_VD2_CAPUTILS_H 3 | 4 | #include 5 | 6 | class VDCaptureAutoPriority { 7 | public: 8 | VDCaptureAutoPriority(); 9 | ~VDCaptureAutoPriority(); 10 | 11 | protected: 12 | bool mbPowerOffState; 13 | bool mbLowPowerState; 14 | bool mbScreenSaverState; 15 | 16 | uint32 mPreviousPriorityClass; 17 | uint32 mPreviousThreadPriority; 18 | }; 19 | 20 | int VDCaptureIsCatchableException(uint32 ec); 21 | long VDCaptureHashDriverName(const char *name); 22 | 23 | #endif -------------------------------------------------------------------------------- /src/VirtualDub/h/capvumeter.h: -------------------------------------------------------------------------------- 1 | #ifndef CAPVUMETER_H 2 | #define CAPVUMETER_H 3 | 4 | #include 5 | 6 | void VDComputeWavePeaks(const void *p, unsigned depth, unsigned channels, unsigned count, float* peak); 7 | 8 | class VDINTERFACE IVDUICaptureVumeter { 9 | public: 10 | enum { kTypeID = 'cpvu' }; 11 | 12 | virtual void SetPeakLevels(int count, float* peak, int mask) = 0; 13 | }; 14 | 15 | #endif -------------------------------------------------------------------------------- /src/VirtualDub/h/convert.h: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // Copyright (C) 1998-2001 Avery Lee 3 | // 4 | // This program is free software; you can redistribute it and/or modify 5 | // it under the terms of the GNU General Public License as published by 6 | // the Free Software Foundation; either version 2 of the License, or 7 | // (at your option) any later version. 8 | // 9 | // This program is distributed in the hope that it will be useful, 10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | // GNU General Public License for more details. 13 | // 14 | // You should have received a copy of the GNU General Public License 15 | // along with this program; if not, write to the Free Software 16 | // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 17 | 18 | #ifndef f_CONVERT_H 19 | #define f_CONVERT_H 20 | 21 | extern "C" void DIBconvert_32_to_16_dithered(void *dest, long dest_pitch, void *src, long src_pitch, long width, long height); 22 | extern "C" void DIBconvert_32_to_16_565_dithered(void *dest, long dest_pitch, void *src, long src_pitch, long width, long height); 23 | 24 | #endif 25 | -------------------------------------------------------------------------------- /src/VirtualDub/h/f_convolute.h: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // Copyright (C) 1998-2001 Avery Lee 3 | // 4 | // This program is free software; you can redistribute it and/or modify 5 | // it under the terms of the GNU General Public License as published by 6 | // the Free Software Foundation; either version 2 of the License, or 7 | // (at your option) any later version. 8 | // 9 | // This program is distributed in the hope that it will be useful, 10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | // GNU General Public License for more details. 13 | // 14 | // You should have received a copy of the GNU General Public License 15 | // along with this program; if not, write to the Free Software 16 | // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 17 | 18 | #ifndef f_F_CONVOLUTE_H 19 | #define f_F_CONVOLUTE_H 20 | 21 | #include 22 | 23 | struct ConvoluteFilterData { 24 | long m[9]; 25 | long bias; 26 | void *dyna_func; 27 | uint32 dyna_size; 28 | uint32 dyna_old_protect; 29 | bool fClip; 30 | }; 31 | 32 | int filter_convolute_run(const VDXFilterActivation *fa, const VDXFilterFunctions *ff); 33 | long filter_convolute_param(VDXFilterActivation *fa, const VDXFilterFunctions *ff); 34 | int filter_convolute_end(VDXFilterActivation *fa, const VDXFilterFunctions *ff); 35 | int filter_convolute_start(VDXFilterActivation *fa, const VDXFilterFunctions *ff); 36 | 37 | #endif 38 | -------------------------------------------------------------------------------- /src/VirtualDub/h/helpcoach.h: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // Copyright (C) 1998-2001 Avery Lee 3 | // 4 | // This program is free software; you can redistribute it and/or modify 5 | // it under the terms of the GNU General Public License as published by 6 | // the Free Software Foundation; either version 2 of the License, or 7 | // (at your option) any later version. 8 | // 9 | // This program is distributed in the hope that it will be useful, 10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | // GNU General Public License for more details. 13 | // 14 | // You should have received a copy of the GNU General Public License 15 | // along with this program; if not, write to the Free Software 16 | // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 17 | 18 | #define IDH_COACH_0 59500 19 | #define IDH_COACH_1 59501 20 | #define IDH_COACH_2 59502 21 | #define IDH_COACH_3 59503 22 | #define IDH_COACH_4 59504 23 | #define IDH_COACH_5 59505 24 | #define IDH_COACH_6 59506 25 | #define IDH_COACH_7 59507 26 | #define IDH_COACH_8 59508 27 | #define IDH_COACH_9 59509 28 | #define IDH_COACH_10 59510 29 | #define IDH_COACH_11 59511 30 | #define IDH_COACH_12 59512 31 | -------------------------------------------------------------------------------- /src/VirtualDub/h/imageiff.h: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // Copyright (C) 1998-2006 Avery Lee 3 | // 4 | // This program is free software; you can redistribute it and/or modify 5 | // it under the terms of the GNU General Public License as published by 6 | // the Free Software Foundation; either version 2 of the License, or 7 | // (at your option) any later version. 8 | // 9 | // This program is distributed in the hope that it will be useful, 10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | // GNU General Public License for more details. 13 | // 14 | // You should have received a copy of the GNU General Public License 15 | // along with this program; if not, write to the Free Software 16 | // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 17 | 18 | #ifndef f_VD2_IMAGEIFF_H 19 | #define f_VD2_IMAGEIFF_H 20 | 21 | #include 22 | 23 | struct VDPixmap; 24 | 25 | class VDINTERFACE IVDImageDecoderIFF { 26 | public: 27 | virtual ~IVDImageDecoderIFF() {} 28 | 29 | virtual const VDPixmap& Decode(const void *src, uint32 srclen) = 0; 30 | }; 31 | 32 | IVDImageDecoderIFF *VDCreateImageDecoderIFF(); 33 | 34 | #endif 35 | -------------------------------------------------------------------------------- /src/VirtualDub/h/imagejpegdec.h: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // Copyright (C) 1998-2004 Avery Lee 3 | // 4 | // This program is free software; you can redistribute it and/or modify 5 | // it under the terms of the GNU General Public License as published by 6 | // the Free Software Foundation; either version 2 of the License, or 7 | // (at your option) any later version. 8 | // 9 | // This program is distributed in the hope that it will be useful, 10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | // GNU General Public License for more details. 13 | // 14 | // You should have received a copy of the GNU General Public License 15 | // along with this program; if not, write to the Free Software 16 | // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 17 | 18 | #ifndef f_IMAGEJPEGDEC_H 19 | #define f_IMAGEJPEGDEC_H 20 | 21 | #include 22 | 23 | class IVDJPEGDecoder { 24 | public: 25 | enum { 26 | kFormatXRGB1555, 27 | kFormatRGB888, 28 | kFormatXRGB8888 29 | }; 30 | 31 | virtual ~IVDJPEGDecoder() {} 32 | 33 | virtual void Begin(const void *src, uint32 srclen) = 0; 34 | virtual void DecodeHeader(int& w, int& h) = 0; 35 | virtual void DecodeImage(void *dst, ptrdiff_t dstpitch, int format) = 0; 36 | virtual void End() = 0; 37 | }; 38 | 39 | IVDJPEGDecoder *VDCreateJPEGDecoder(); 40 | 41 | #endif 42 | -------------------------------------------------------------------------------- /src/VirtualDub/h/mpeg.h: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // Copyright (C) 1998-2001 Avery Lee 3 | // 4 | // This program is free software; you can redistribute it and/or modify 5 | // it under the terms of the GNU General Public License as published by 6 | // the Free Software Foundation; either version 2 of the License, or 7 | // (at your option) any later version. 8 | // 9 | // This program is distributed in the hope that it will be useful, 10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | // GNU General Public License for more details. 13 | // 14 | // You should have received a copy of the GNU General Public License 15 | // along with this program; if not, write to the Free Software 16 | // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 17 | 18 | #ifndef f_MPEG_H 19 | #define f_MPEG_H 20 | 21 | #ifdef _MSC_VER 22 | #pragma once 23 | #endif 24 | 25 | #include "InputFile.h" 26 | 27 | InputFile *CreateInputFileMPEG(); 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /src/VirtualDub/h/script.h: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // Copyright (C) 1998-2001 Avery Lee 3 | // 4 | // This program is free software; you can redistribute it and/or modify 5 | // it under the terms of the GNU General Public License as published by 6 | // the Free Software Foundation; either version 2 of the License, or 7 | // (at your option) any later version. 8 | // 9 | // This program is distributed in the hope that it will be useful, 10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | // GNU General Public License for more details. 13 | // 14 | // You should have received a copy of the GNU General Public License 15 | // along with this program; if not, write to the Free Software 16 | // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 17 | 18 | #ifndef f_VIRTUALDUB_SCRIPT_H 19 | #define f_VIRTUALDUB_SCRIPT_H 20 | 21 | #ifdef _MSC_VER 22 | #pragma once 23 | #endif 24 | 25 | bool InitScriptSystem(); 26 | void DeinitScriptSystem(); 27 | void RunProject(const wchar_t *name, void *hwnd=0); 28 | void RunScript(const wchar_t *name, void *hwnd=0); 29 | void RunScriptMemory(const char *mem, int start_line, bool stopAtReloadMarker = false, bool partial = false); 30 | 31 | bool strfuzzycompare(const char *s, const char *t); 32 | void memunbase64(char *t, const char *s); 33 | void membase64(char *t, const char *s, long l); 34 | 35 | #endif 36 | -------------------------------------------------------------------------------- /src/VirtualDub/h/server.h: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // Copyright (C) 1998-2001 Avery Lee 3 | // 4 | // This program is free software; you can redistribute it and/or modify 5 | // it under the terms of the GNU General Public License as published by 6 | // the Free Software Foundation; either version 2 of the License, or 7 | // (at your option) any later version. 8 | // 9 | // This program is distributed in the hope that it will be useful, 10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | // GNU General Public License for more details. 13 | // 14 | // You should have received a copy of the GNU General Public License 15 | // along with this program; if not, write to the Free Software 16 | // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 17 | 18 | #ifndef f_SERVER_H 19 | #define f_SERVER_H 20 | 21 | #include 22 | 23 | void ActivateFrameServerDialog(HWND hwnd, const char *serverName); 24 | 25 | #endif 26 | -------------------------------------------------------------------------------- /src/VirtualDub/manifest/comctl6.manifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/VirtualDub/manifest/comctl6_x64.manifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/VirtualDub/manifest/win7.manifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | true/pm 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /src/VirtualDub/res/VirtualDub.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/VirtualDub/res/VirtualDub.rc -------------------------------------------------------------------------------- /src/VirtualDub/res/addpoint.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/VirtualDub/res/addpoint.cur -------------------------------------------------------------------------------- /src/VirtualDub/res/amd64.vdi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/VirtualDub/res/amd64.vdi -------------------------------------------------------------------------------- /src/VirtualDub/res/cap_point.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/VirtualDub/res/cap_point.cur -------------------------------------------------------------------------------- /src/VirtualDub/res/credits.txt: -------------------------------------------------------------------------------- 1 | Paul Hsieh Constant multiply table 2 | Robert Blum Faster asm grayscale code 3 | Joerg Anders Java MPEG-1 player source 4 | Steven Weixel Rainbow Runner testing 5 | Reliable Software FFT spectrum analyzer source at www.relisoft.com 6 | Serguei Grigoriev Capture bug reports, OpenDML spec 7 | Donald Graft Smart deinterlacer and lots of advice 8 | Jason Haitsuka Iomega Buz testing and for putting up with me 9 | Steven Don Noise reduction algorithm and filter 10 | Chris Carton Tracked a very annoying SMP bug 11 | Nullsoft Couldn't have coded without WinAmp 12 | MacKenzie Patterson III Strange bug reports and comic relief 13 | [...and to anyone else I've forgotten: You all make it worthwhile.] 14 | -------------------------------------------------------------------------------- /src/VirtualDub/res/dragpoint.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/VirtualDub/res/dragpoint.cur -------------------------------------------------------------------------------- /src/VirtualDub/res/ia32.vdi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/VirtualDub/res/ia32.vdi -------------------------------------------------------------------------------- /src/VirtualDub/res/license.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/VirtualDub/res/license.bin -------------------------------------------------------------------------------- /src/VirtualDub/res/mod2.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/VirtualDub/res/mod2.ico -------------------------------------------------------------------------------- /src/VirtualDub/res/modifypoint.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/VirtualDub/res/modifypoint.cur -------------------------------------------------------------------------------- /src/VirtualDub/res/null.bin: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/VirtualDub/res/pos_backward.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/VirtualDub/res/pos_backward.ico -------------------------------------------------------------------------------- /src/VirtualDub/res/pos_backward_x128.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/VirtualDub/res/pos_backward_x128.bmp -------------------------------------------------------------------------------- /src/VirtualDub/res/pos_end.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/VirtualDub/res/pos_end.ico -------------------------------------------------------------------------------- /src/VirtualDub/res/pos_end_x128.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/VirtualDub/res/pos_end_x128.bmp -------------------------------------------------------------------------------- /src/VirtualDub/res/pos_forward.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/VirtualDub/res/pos_forward.ico -------------------------------------------------------------------------------- /src/VirtualDub/res/pos_forward_x128.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/VirtualDub/res/pos_forward_x128.bmp -------------------------------------------------------------------------------- /src/VirtualDub/res/pos_mark.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/VirtualDub/res/pos_mark.ico -------------------------------------------------------------------------------- /src/VirtualDub/res/pos_mark2.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/VirtualDub/res/pos_mark2.ico -------------------------------------------------------------------------------- /src/VirtualDub/res/pos_mark2_x128.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/VirtualDub/res/pos_mark2_x128.bmp -------------------------------------------------------------------------------- /src/VirtualDub/res/pos_mark_x128.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/VirtualDub/res/pos_mark_x128.bmp -------------------------------------------------------------------------------- /src/VirtualDub/res/pos_markout.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/VirtualDub/res/pos_markout.ico -------------------------------------------------------------------------------- /src/VirtualDub/res/pos_markout2.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/VirtualDub/res/pos_markout2.ico -------------------------------------------------------------------------------- /src/VirtualDub/res/pos_markout2_x128.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/VirtualDub/res/pos_markout2_x128.bmp -------------------------------------------------------------------------------- /src/VirtualDub/res/pos_markout_x128.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/VirtualDub/res/pos_markout_x128.bmp -------------------------------------------------------------------------------- /src/VirtualDub/res/pos_next_key.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/VirtualDub/res/pos_next_key.ico -------------------------------------------------------------------------------- /src/VirtualDub/res/pos_next_key_x128.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/VirtualDub/res/pos_next_key_x128.bmp -------------------------------------------------------------------------------- /src/VirtualDub/res/pos_play.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/VirtualDub/res/pos_play.ico -------------------------------------------------------------------------------- /src/VirtualDub/res/pos_play2.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/VirtualDub/res/pos_play2.ico -------------------------------------------------------------------------------- /src/VirtualDub/res/pos_play2_x128.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/VirtualDub/res/pos_play2_x128.bmp -------------------------------------------------------------------------------- /src/VirtualDub/res/pos_play_x128.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/VirtualDub/res/pos_play_x128.bmp -------------------------------------------------------------------------------- /src/VirtualDub/res/pos_prev_key.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/VirtualDub/res/pos_prev_key.ico -------------------------------------------------------------------------------- /src/VirtualDub/res/pos_prev_key_x128.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/VirtualDub/res/pos_prev_key_x128.bmp -------------------------------------------------------------------------------- /src/VirtualDub/res/pos_scenefwd.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/VirtualDub/res/pos_scenefwd.ico -------------------------------------------------------------------------------- /src/VirtualDub/res/pos_scenefwd_x128.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/VirtualDub/res/pos_scenefwd_x128.bmp -------------------------------------------------------------------------------- /src/VirtualDub/res/pos_scenerev.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/VirtualDub/res/pos_scenerev.ico -------------------------------------------------------------------------------- /src/VirtualDub/res/pos_scenerev_x128.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/VirtualDub/res/pos_scenerev_x128.bmp -------------------------------------------------------------------------------- /src/VirtualDub/res/pos_start.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/VirtualDub/res/pos_start.ico -------------------------------------------------------------------------------- /src/VirtualDub/res/pos_start_x128.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/VirtualDub/res/pos_start_x128.bmp -------------------------------------------------------------------------------- /src/VirtualDub/res/pos_stop.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/VirtualDub/res/pos_stop.ico -------------------------------------------------------------------------------- /src/VirtualDub/res/pos_stop_x128.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/VirtualDub/res/pos_stop_x128.bmp -------------------------------------------------------------------------------- /src/VirtualDub/res/removepoint.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/VirtualDub/res/removepoint.cur -------------------------------------------------------------------------------- /src/VirtualDub/res/version.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/VirtualDub/res/version.bin -------------------------------------------------------------------------------- /src/VirtualDub/res/version.rc: -------------------------------------------------------------------------------- 1 | ///////////////////////////////////////////////////////////////////////////// 2 | // 3 | // Version 4 | // 5 | 6 | VS_VERSION_INFO VERSIONINFO 7 | FILEVERSION 2,0,0,0 8 | PRODUCTVERSION 2,0,0,0 9 | FILEFLAGSMASK 0x3fL 10 | #if defined(_DEBUG) 11 | FILEFLAGS 0x21L 12 | #else 13 | FILEFLAGS 0x0L 14 | #endif 15 | FILEOS 0x40004L 16 | FILETYPE 0x1L 17 | FILESUBTYPE 0x0L 18 | BEGIN 19 | BLOCK "StringFileInfo" 20 | BEGIN 21 | BLOCK "040904b0" 22 | BEGIN 23 | VALUE "InternalName", "VirtualDub" 24 | VALUE "ProductName", "VirtualDub2" 25 | VALUE "CompanyName", "VirtualDub2.com" 26 | #ifdef _WIN64 27 | VALUE "FileDescription", "VirtualDub2 (x64)" 28 | VALUE "OriginalFilename", "VirtualDub64.exe" 29 | #else 30 | VALUE "FileDescription", "VirtualDub2 (x86)" 31 | VALUE "OriginalFilename", "VirtualDub.exe" 32 | #endif 33 | #if defined(_DEBUG) 34 | VALUE "SpecialBuild", "Debug build (i.e. big, fat, and slow)" 35 | #endif 36 | END 37 | END 38 | BLOCK "VarFileInfo" 39 | BEGIN 40 | VALUE "Translation", 0x409, 1200 41 | END 42 | END 43 | 44 | -------------------------------------------------------------------------------- /src/VirtualDub/res/virtuald.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/VirtualDub/res/virtuald.ico -------------------------------------------------------------------------------- /src/VirtualDub/res/virtualdub.ami: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/VirtualDub/res/virtualdub.ami -------------------------------------------------------------------------------- /src/VirtualDub/source/FilterAccelReadbackBuffer.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | #include 3 | #include "FilterAccelReadbackBuffer.h" 4 | 5 | VDFilterAccelReadbackBuffer::VDFilterAccelReadbackBuffer() 6 | : mpReadbackBuffer(NULL) 7 | , mpReadbackRT(NULL) 8 | { 9 | } 10 | 11 | VDFilterAccelReadbackBuffer::~VDFilterAccelReadbackBuffer() { 12 | Shutdown(); 13 | } 14 | 15 | bool VDFilterAccelReadbackBuffer::Init(IVDTContext *ctx, uint32 w, uint32 h, bool yuvMode) { 16 | uint32 rw = w; 17 | uint32 rh = h; 18 | 19 | if (yuvMode) { 20 | rw = (rw + 3) >> 2; 21 | rh *= 3; 22 | } 23 | 24 | if (!ctx->CreateReadbackBuffer(rw, rh, kVDTF_B8G8R8A8, &mpReadbackBuffer)) { 25 | Shutdown(); 26 | return false; 27 | } 28 | 29 | if (!ctx->CreateSurface(rw, rh, kVDTF_B8G8R8A8, kVDTUsage_Render, &mpReadbackRT)) { 30 | Shutdown(); 31 | return false; 32 | } 33 | 34 | return true; 35 | } 36 | 37 | void VDFilterAccelReadbackBuffer::Shutdown() { 38 | if (mpReadbackBuffer) { 39 | mpReadbackBuffer->Release(); 40 | mpReadbackBuffer = NULL; 41 | } 42 | 43 | if (mpReadbackRT) { 44 | mpReadbackRT->Release(); 45 | mpReadbackRT = NULL; 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/VirtualDub/source/FilterFrameAllocator.cpp: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // Copyright (C) 1998-2009 Avery Lee 3 | // 4 | // This program is free software; you can redistribute it and/or modify 5 | // it under the terms of the GNU General Public License as published by 6 | // the Free Software Foundation; either version 2 of the License, or 7 | // (at your option) any later version. 8 | // 9 | // This program is distributed in the hope that it will be useful, 10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | // GNU General Public License for more details. 13 | // 14 | // You should have received a copy of the GNU General Public License 15 | // along with this program; if not, write to the Free Software 16 | // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 17 | 18 | #include "stdafx.h" 19 | #include "FilterFrameAllocator.h" 20 | -------------------------------------------------------------------------------- /src/VirtualDub/source/InputFileAPNG.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/VirtualDub/source/InputFileAPNG.cpp -------------------------------------------------------------------------------- /src/VirtualDub/source/InputFileGIF.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/VirtualDub/source/InputFileGIF.cpp -------------------------------------------------------------------------------- /src/VirtualDub/source/Mpeg.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/VirtualDub/source/Mpeg.cpp -------------------------------------------------------------------------------- /src/VirtualDub/source/ShutdownDialog.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | #include 3 | #include 4 | #include 5 | #include "resource.h" 6 | 7 | class VDUIShutdownDialog : public VDDialogFrameW32 { 8 | public: 9 | VDUIShutdownDialog(); 10 | 11 | protected: 12 | VDZINT_PTR DlgProc(VDZUINT msg, VDZWPARAM wParam, VDZLPARAM lParam); 13 | 14 | bool OnLoaded(); 15 | bool OnTimer(); 16 | 17 | int mPos; 18 | }; 19 | 20 | VDUIShutdownDialog::VDUIShutdownDialog() 21 | : VDDialogFrameW32(IDD_JOBFINISH) 22 | { 23 | } 24 | 25 | VDZINT_PTR VDUIShutdownDialog::DlgProc(VDZUINT msg, VDZWPARAM wParam, VDZLPARAM lParam) { 26 | switch(msg) { 27 | case WM_TIMER: 28 | return OnTimer(); 29 | } 30 | 31 | return VDDialogFrameW32::DlgProc(msg, wParam, lParam); 32 | } 33 | 34 | bool VDUIShutdownDialog::OnLoaded() { 35 | SendDlgItemMessage(mhdlg, IDC_PROGRESS, PBM_SETRANGE, TRUE, MAKELONG(0, 40)); 36 | SendDlgItemMessage(mhdlg, IDC_PROGRESS, PBM_SETSTEP, 1, 0); 37 | SetTimer(mhdlg, 1, 250, NULL); 38 | 39 | mPos = 0; 40 | 41 | return VDDialogFrameW32::OnLoaded(); 42 | } 43 | 44 | bool VDUIShutdownDialog::OnTimer() { 45 | SendDlgItemMessage(mhdlg, IDC_PROGRESS, PBM_STEPIT, 0, 0); 46 | 47 | if (++mPos >= 40) 48 | End(true); 49 | 50 | return true; 51 | } 52 | 53 | bool VDUIRequestSystemShutdown(VDGUIHandle hParent) { 54 | VDUIShutdownDialog dlg; 55 | 56 | return dlg.ShowDialog(hParent) != 0; 57 | } 58 | -------------------------------------------------------------------------------- /src/VirtualDub/source/VideoSourceAdapter.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" -------------------------------------------------------------------------------- /src/VirtualDub/source/VideoSourceImages.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/VirtualDub/source/VideoSourceImages.cpp -------------------------------------------------------------------------------- /src/VirtualDub/source/a64_resize.asm: -------------------------------------------------------------------------------- 1 | end 2 | -------------------------------------------------------------------------------- /src/VirtualDub/source/if_list.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | #include "plugins.h" 3 | 4 | extern const VDXPluginInfo g_inputDrv_plugindef_TestId; 5 | 6 | static const VDPluginInfo *const g_inputDrv_list[]={ 7 | &g_inputDrv_plugindef_TestId, 8 | NULL 9 | }; 10 | 11 | void VDInitBuiltinInputDrivers() { 12 | VDAddInternalPlugins(g_inputDrv_list); 13 | } 14 | 15 | -------------------------------------------------------------------------------- /src/VirtualDub/source/stdafx.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #ifdef _MSC_VER 4 | #pragma hdrstop 5 | #endif 6 | 7 | // compiler/setup checks 8 | 9 | #if defined(_MSC_VER) 10 | #if _MSC_VER < 1300 11 | #include 12 | 13 | #line 1 " \n \n \n***** You do not have the correct version of the Microsoft Platform SDK installed *****\nPlease see Docs\\index.html for details.\n \n \n" 14 | namespace { const DWORD PlatformSDKTest = INVALID_SET_FILE_POINTER; } 15 | #line 1 "" 16 | 17 | #pragma warning(disable: 4505) 18 | #line 1 " \n \n \n***** You do not have the Visual C++ Processor Pack installed *****\nPlease see Docs\\index.html for details.\n \n \n" 19 | static void VCPPCheck() { __asm { sfence } } 20 | #line 1 "" 21 | #endif 22 | #endif 23 | -------------------------------------------------------------------------------- /src/VirtualDub/source/tool.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOL_H 2 | #define TOOL_H 3 | 4 | #include 5 | #include 6 | 7 | struct FileNameCommand{ 8 | VDStringW fileName; 9 | VDStringW driverName; 10 | void* object; 11 | void* userData; 12 | bool reopen; 13 | 14 | FileNameCommand(){ object=0; userData=0; reopen=0; } 15 | }; 16 | 17 | void VDToolExecuteCommand(int id, HWND parent); 18 | void VDToolInsertMenu(HMENU menu, int pos); 19 | bool VDToolCatchError(FileNameCommand* cmd, const MyError& e); 20 | void VDToolsHandleFileOpen(const wchar_t* fname, IVDInputDriver *pDriver); 21 | bool VDToolsHandleFileOpenError(const wchar_t* fname, const wchar_t* driver_name, const MyError& e, int line=-1); 22 | void VDToolsAttach(HWND hwnd); 23 | void VDToolsDetach(HWND hwnd); 24 | 25 | #endif 26 | -------------------------------------------------------------------------------- /src/VirtualDub/source/version.cpp: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // Copyright (C) 1998-2007 Avery Lee 3 | // 4 | // This program is free software; you can redistribute it and/or modify 5 | // it under the terms of the GNU General Public License as published by 6 | // the Free Software Foundation; either version 2 of the License, or 7 | // (at your option) any later version. 8 | // 9 | // This program is distributed in the hope that it will be useful, 10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | // GNU General Public License for more details. 13 | // 14 | // You should have received a copy of the GNU General Public License 15 | // along with this program; if not, write to the Free Software 16 | // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 17 | 18 | #include "stdafx.h" 19 | #include "version.h" 20 | 21 | uint32 VDGetBuildNumber() { 22 | return version_num; 23 | } 24 | -------------------------------------------------------------------------------- /src/YASM.props: -------------------------------------------------------------------------------- 1 |  2 | 3 | 5 | Midl 6 | CustomBuild 7 | 8 | 9 | _SelectedFiles;$(YASMDependsOn) 11 | 12 | 13 | 14 | yasm -X vc -g cv8 -f win32 -o "$(IntDir)%(Filename).obj" "%(FullPath)" 15 | yasm -X vc -g cv8 -f win64 -o "$(IntDir)%(Filename).obj" "%(FullPath)" 16 | $(IntDir)%(Filename).obj 17 | Assembling: %(Filename)%(Extension) 18 | 19 | 20 | -------------------------------------------------------------------------------- /src/YASM.rules: -------------------------------------------------------------------------------- 1 |  2 | 6 | 7 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /src/directshow/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) Microsoft Corporation 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | 23 | Portions of this repo are provided under the SIL Open Font License. 24 | See the LICENSE file in individual samples for additional details. 25 | -------------------------------------------------------------------------------- /src/directshow/ddmm.h: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // File: DDMM.h 3 | // 4 | // Desc: DirectShow base classes - efines routines for using DirectDraw 5 | // on a multimonitor system. 6 | // 7 | // Copyright (c) 1995-2001 Microsoft Corporation. All rights reserved. 8 | //------------------------------------------------------------------------------ 9 | 10 | 11 | #ifdef __cplusplus 12 | extern "C" { /* Assume C declarations for C++ */ 13 | #endif /* __cplusplus */ 14 | 15 | // DDRAW.H might not include these 16 | #ifndef DDENUM_ATTACHEDSECONDARYDEVICES 17 | #define DDENUM_ATTACHEDSECONDARYDEVICES 0x00000001L 18 | #endif 19 | 20 | typedef HRESULT (*PDRAWCREATE)(IID *,LPDIRECTDRAW *,LPUNKNOWN); 21 | typedef HRESULT (*PDRAWENUM)(LPDDENUMCALLBACKA, LPVOID); 22 | 23 | IDirectDraw * DirectDrawCreateFromDevice(__in_opt LPSTR, PDRAWCREATE, PDRAWENUM); 24 | IDirectDraw * DirectDrawCreateFromDeviceEx(__in_opt LPSTR, PDRAWCREATE, LPDIRECTDRAWENUMERATEEXA); 25 | 26 | #ifdef __cplusplus 27 | } 28 | #endif /* __cplusplus */ 29 | -------------------------------------------------------------------------------- /src/directshow/perflog.h: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // File: perflog.h 3 | // 4 | // Desc: Performance logging framework. 5 | // 6 | // Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved. 7 | //------------------------------------------------------------------------------ 8 | 9 | typedef struct _PERFLOG_LOGGING_PARAMS { 10 | GUID ControlGuid; 11 | void (*OnStateChanged)(void); 12 | ULONG NumberOfTraceGuids; 13 | TRACE_GUID_REGISTRATION TraceGuids[ANYSIZE_ARRAY]; 14 | } PERFLOG_LOGGING_PARAMS, *PPERFLOG_LOGGING_PARAMS; 15 | 16 | BOOL 17 | PerflogInitIfEnabled( 18 | IN HINSTANCE hInstance, 19 | __in PPERFLOG_LOGGING_PARAMS LogParams 20 | ); 21 | 22 | BOOL 23 | PerflogInitialize ( 24 | __in PPERFLOG_LOGGING_PARAMS LogParams 25 | ); 26 | 27 | VOID 28 | PerflogShutdown ( 29 | VOID 30 | ); 31 | 32 | VOID 33 | PerflogTraceEvent ( 34 | __in PEVENT_TRACE_HEADER Event 35 | ); 36 | 37 | extern ULONG PerflogEnableFlags; 38 | extern UCHAR PerflogEnableLevel; 39 | extern ULONG PerflogModuleLevel; 40 | extern TRACEHANDLE PerflogTraceHandle; 41 | extern TRACEHANDLE PerflogRegHandle; 42 | 43 | #define PerflogTracingEnabled() (PerflogTraceHandle != 0) 44 | 45 | #define PerflogEvent( _x_ ) PerflogTraceEventLevel _x_ 46 | 47 | VOID 48 | PerflogTraceEventLevel( 49 | ULONG Level, 50 | __in PEVENT_TRACE_HEADER Event 51 | ); 52 | 53 | VOID 54 | PerflogTraceEvent ( 55 | __in PEVENT_TRACE_HEADER Event 56 | ); 57 | -------------------------------------------------------------------------------- /src/directshow/seekpt.h: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // File: SeekPT.h 3 | // 4 | // Desc: DirectShow base classes. 5 | // 6 | // Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved. 7 | //------------------------------------------------------------------------------ 8 | 9 | 10 | #ifndef __seekpt_h__ 11 | #define __seekpt_h__ 12 | 13 | 14 | class CSeekingPassThru : public ISeekingPassThru, public CUnknown 15 | { 16 | public: 17 | static CUnknown *CreateInstance(__inout_opt LPUNKNOWN pUnk, __inout HRESULT *phr); 18 | CSeekingPassThru(__in_opt LPCTSTR pName, __inout_opt LPUNKNOWN pUnk, __inout HRESULT *phr); 19 | ~CSeekingPassThru(); 20 | 21 | DECLARE_IUNKNOWN; 22 | STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, __deref_out void ** ppv); 23 | 24 | STDMETHODIMP Init(BOOL bSupportRendering, IPin *pPin); 25 | 26 | private: 27 | CPosPassThru *m_pPosPassThru; 28 | }; 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /src/directshow/sysclock.h: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // File: SysClock.h 3 | // 4 | // Desc: DirectShow base classes - defines a system clock implementation of 5 | // IReferenceClock. 6 | // 7 | // Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved. 8 | //------------------------------------------------------------------------------ 9 | 10 | 11 | #ifndef __SYSTEMCLOCK__ 12 | #define __SYSTEMCLOCK__ 13 | 14 | // 15 | // Base clock. Uses timeGetTime ONLY 16 | // Uses most of the code in the base reference clock. 17 | // Provides GetTime 18 | // 19 | 20 | class CSystemClock : public CBaseReferenceClock, public IAMClockAdjust, public IPersist 21 | { 22 | public: 23 | // We must be able to create an instance of ourselves 24 | static CUnknown * WINAPI CreateInstance(__inout_opt LPUNKNOWN pUnk, __inout HRESULT *phr); 25 | CSystemClock(__in_opt LPCTSTR pName, __inout_opt LPUNKNOWN pUnk, __inout HRESULT *phr); 26 | 27 | DECLARE_IUNKNOWN 28 | 29 | STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, __deref_out void ** ppv); 30 | 31 | // Yield up our class id so that we can be persisted 32 | // Implement required Ipersist method 33 | STDMETHODIMP GetClassID(__out CLSID *pClsID); 34 | 35 | // IAMClockAdjust methods 36 | STDMETHODIMP SetClockDelta(REFERENCE_TIME rtDelta); 37 | }; //CSystemClock 38 | 39 | #endif /* __SYSTEMCLOCK__ */ 40 | -------------------------------------------------------------------------------- /src/disasm/amd64.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/disasm/amd64.bin -------------------------------------------------------------------------------- /src/disasm/h/runtime_dasm.h: -------------------------------------------------------------------------------- 1 | #ifndef f_VD2_DISASM_RUNTIME_DASM_H 2 | #define f_VD2_DISASM_RUNTIME_DASM_H 3 | 4 | #include 5 | #include 6 | 7 | struct VDDisassemblyContext { 8 | const unsigned char **pRuleSystem; 9 | long (*pSymLookup)(unsigned long virtAddr, char *buf, int buf_len); 10 | 11 | bool bSizeOverride; // 66 12 | bool bAddressOverride; // 67 13 | bool bRepnePrefix; // F2 14 | bool bRepePrefix; // F3 15 | unsigned char rex; 16 | const char *pszSegmentOverride; 17 | 18 | ptrdiff_t physToVirtOffset; 19 | 20 | char heap[2048]; 21 | int stack[32]; 22 | }; 23 | 24 | void VDDisassemble(VDDisassemblyContext *pvdc, const uint8 *source, int bytes); 25 | 26 | #endif 27 | -------------------------------------------------------------------------------- /src/disasm/h/runtime_tracedec.h: -------------------------------------------------------------------------------- 1 | #ifndef f_VD2_DISASM_RUNTIME_TRACEDEC_H 2 | #define f_VD2_DISASM_RUNTIME_TRACEDEC_H 3 | 4 | #include 5 | #include 6 | 7 | struct VDTracedecContext { 8 | const unsigned char **pRuleSystem; 9 | 10 | bool bSizeOverride; // 66 11 | bool bAddressOverride; // 67 12 | bool bRepnePrefix; // F2 13 | bool bRepePrefix; // F3 14 | bool bFinal; 15 | unsigned char rex; 16 | const char *pszSegmentOverride; 17 | 18 | uint8 mFlags; 19 | 20 | ptrdiff_t physToVirtOffset; 21 | }; 22 | 23 | struct VDTracedecResult { 24 | ptrdiff_t mInsnLength; 25 | ptrdiff_t mBranchTarget; 26 | bool mbIsJmp; 27 | bool mbIsJcc; 28 | bool mbIsCall; 29 | bool mbIsReturn; 30 | bool mbIsInvalid; 31 | bool mbTargetValid; 32 | int mRelTargetSize; 33 | }; 34 | 35 | void VDTraceObjectCode(VDTracedecContext *pvdc, const uint8 *source, int bytes); 36 | void *VDTracedecDecompress(void *_dst, const unsigned char *src, int src_len); 37 | 38 | #endif 39 | -------------------------------------------------------------------------------- /src/disasm/h/utils.h: -------------------------------------------------------------------------------- 1 | #ifndef f_VD2_DISASM_UTILS_H 2 | #define f_VD2_DISASM_UTILS_H 3 | 4 | void oops(const char *format, ...); 5 | void strtrim(char *s); 6 | char *strtack(char *s, const char *t); 7 | 8 | #endif 9 | -------------------------------------------------------------------------------- /src/disasm/ia32.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/disasm/ia32.bin -------------------------------------------------------------------------------- /src/disasm/source/utils.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include "utils.h" 7 | 8 | void oops(const char *format, ...) { 9 | va_list val; 10 | 11 | va_start(val, format); 12 | vprintf(format, val); 13 | va_end(val); 14 | getchar(); 15 | exit(5); 16 | } 17 | 18 | void strtrim(char *s) { 19 | char *t = s; 20 | char *u = s; 21 | 22 | while(*t) 23 | ++t; 24 | 25 | while(t>s && isspace((unsigned char)t[-1])) 26 | --t; 27 | 28 | while(u 5 | #include 6 | 7 | void VDUIExtractAcceleratorTableW32(VDAccelTableDefinition& dst, HACCEL haccel, const VDAccelToCommandEntry *pCommands, uint32 nCommands); 8 | void VDUIMergeAcceleratorTableW32(VDAccelTableDefinition& dst, HACCEL haccel, const int *pCommands, uint32 nCommands, VDAccelTableDefinition& src); 9 | 10 | HACCEL VDUIBuildAcceleratorTableW32(const VDAccelTableDefinition& def); 11 | void VDUIUpdateMenuAcceleratorsW32(HMENU hmenu, const VDAccelTableDefinition& def); 12 | 13 | #endif 14 | -------------------------------------------------------------------------------- /src/h/vd2/Dita/w32control.h: -------------------------------------------------------------------------------- 1 | #ifndef f_VD2_DITA_W32CONTROL_H 2 | #define f_VD2_DITA_W32CONTROL_H 3 | 4 | #include 5 | 6 | class VDUIControlW32 : public VDUIPeerW32 { 7 | public: 8 | ~VDUIControlW32(); 9 | 10 | protected: 11 | bool CreateW32(IVDUIParameters *pParms, const char *pClass, DWORD style); 12 | void Destroy(); 13 | 14 | virtual void PreLayoutBase(const VDUILayoutSpecs&); 15 | virtual void PreLayoutBaseW32(const VDUILayoutSpecs&) {} 16 | 17 | SIZE SizeText(int nMaxWidth, int nPadWidth, int nPadHeight); 18 | }; 19 | 20 | class VDUICustomControlW32 : public VDUIControlW32 { 21 | public: 22 | bool Create(IVDUIParameters *pParameters, bool forceNonChild = false, DWORD flags = 0); 23 | void Destroy(); 24 | 25 | protected: 26 | virtual bool IsOwnerW32() const { return true; } 27 | 28 | static INT_PTR CALLBACK StaticDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); 29 | static LRESULT CALLBACK StaticWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); 30 | virtual LRESULT WndProc(UINT msg, WPARAM wParam, LPARAM lParam); 31 | 32 | static ATOM sWindowClass; 33 | }; 34 | 35 | #endif 36 | -------------------------------------------------------------------------------- /src/h/vd2/Dita/w32interface.h: -------------------------------------------------------------------------------- 1 | #ifndef f_VD2_DITA_W32INTERFACE_H 2 | #define f_VD2_DITA_W32INTERFACE_H 3 | 4 | #include 5 | 6 | class IVDUIWindowW32 : public IVDUnknown { 7 | public: 8 | enum { kTypeID = 'uw32' }; 9 | 10 | virtual HWND GetHandleW32() const = 0; 11 | }; 12 | 13 | #endif 14 | -------------------------------------------------------------------------------- /src/h/vd2/Dita/w32peer.h: -------------------------------------------------------------------------------- 1 | #ifndef f_VD2_DITA_W32PEER_H 2 | #define f_VD2_DITA_W32PEER_H 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | class VDUIPeerW32 : public VDUIWindow, public IVDUIWindowW32 { 9 | public: 10 | enum { kTypeID = 'uipr' }; 11 | 12 | VDUIPeerW32(); 13 | VDUIPeerW32(HWND hwnd); 14 | 15 | void Attach(HWND hwnd); 16 | void Detach(); 17 | 18 | void *AsInterface(uint32 id); 19 | 20 | void RelayoutChildren(); 21 | 22 | void SetFocus(); 23 | 24 | void SetCaption(const wchar_t *caption); 25 | 26 | vduirect GetArea(); 27 | void SetArea(const vduirect& pos); 28 | 29 | vduirect GetClientArea() const; 30 | 31 | void PropagateVisible(bool vis); 32 | void PropagateEnabled(bool ena); 33 | 34 | public: 35 | VDUIPeerW32 *GetParentPeerW32() const; 36 | HWND GetParentW32() const; 37 | HWND GetHandleW32() const { return mhwnd; } 38 | virtual bool IsOwnerW32() const; 39 | 40 | void RegisterCallbackW32(VDUIPeerW32 *pChild); 41 | void UnregisterCallbackW32(VDUIPeerW32 *pChild); 42 | 43 | void UpdateCaptionW32(); 44 | 45 | virtual void OnCommandCallback(UINT code) {} 46 | virtual void OnNotifyCallback(const NMHDR *pHdr) {} 47 | virtual void OnScrollCallback(UINT code) {} 48 | 49 | HWND mhwnd; 50 | 51 | typedef std::map tCallbacks; 52 | tCallbacks mCallbacks; 53 | }; 54 | 55 | #endif 56 | -------------------------------------------------------------------------------- /src/h/vd2/Kasumi/pixmapops.h: -------------------------------------------------------------------------------- 1 | #ifndef f_VD2_KASUMI_PIXMAPOPS_H 2 | #define f_VD2_KASUMI_PIXMAPOPS_H 3 | 4 | #ifdef _MSC_VER 5 | #pragma once 6 | #endif 7 | 8 | #include 9 | 10 | bool VDPixmapIsBltPossible(int dst_format, int src_format); 11 | bool VDPixmapBlt(const VDPixmap& dst, const VDPixmap& src); 12 | bool VDPixmapBlt(const VDPixmap& dst, vdpixpos x1, vdpixpos y1, const VDPixmap& src, vdpixpos x2, vdpixpos y2, vdpixsize w, vdpixsize h); 13 | bool VDPixmapStretchBltNearest(const VDPixmap& dst, const VDPixmap& src); 14 | bool VDPixmapStretchBltNearest(const VDPixmap& dst, sint32 x1, sint32 y1, sint32 x2, sint32 y2, const VDPixmap& src, sint32 u1, sint32 v1, sint32 u2, sint32 v2); 15 | bool VDPixmapStretchBltBilinear(const VDPixmap& dst, const VDPixmap& src); 16 | bool VDPixmapStretchBltBilinear(const VDPixmap& dst, sint32 x1, sint32 y1, sint32 x2, sint32 y2, const VDPixmap& src, sint32 u1, sint32 v1, sint32 u2, sint32 v2); 17 | 18 | bool VDPixmapBltAlphaConst(const VDPixmap& dst, const VDPixmap& src, float alpha); 19 | 20 | #endif 21 | -------------------------------------------------------------------------------- /src/h/vd2/Kasumi/resample.h: -------------------------------------------------------------------------------- 1 | #ifndef f_VD2_KASUMI_RESAMPLE_H 2 | #define f_VD2_KASUMI_RESAMPLE_H 3 | 4 | #include 5 | 6 | struct VDPixmap; 7 | 8 | class IVDPixmapResampler { 9 | public: 10 | enum FilterMode { 11 | kFilterPoint, 12 | kFilterLinear, 13 | kFilterCubic, 14 | kFilterLanczos3, 15 | kFilterCount 16 | }; 17 | 18 | virtual ~IVDPixmapResampler() {} 19 | virtual void SetSplineFactor(double A) = 0; 20 | virtual void SetFilters(FilterMode h, FilterMode v, bool interpolationOnly) = 0; 21 | virtual bool Init(uint32 dw, uint32 dh, int dstformat, uint32 sw, uint32 sh, int srcformat) = 0; 22 | virtual bool Init(const vdrect32f& dstrect, uint32 dw, uint32 dh, int dstformat, const vdrect32f& srcrect, uint32 sw, uint32 sh, int srcformat) = 0; 23 | virtual void Shutdown() = 0; 24 | 25 | virtual void Process(const VDPixmap& dst, const VDPixmap& src) = 0; 26 | }; 27 | 28 | IVDPixmapResampler *VDCreatePixmapResampler(); 29 | bool VDPixmapResample(const VDPixmap& dst, const VDPixmap& src, IVDPixmapResampler::FilterMode filter); 30 | 31 | #endif 32 | -------------------------------------------------------------------------------- /src/h/vd2/Meia/decode_dv.h: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // Video decoding library 3 | // Copyright (C) 1998-2004 Avery Lee 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 18 | 19 | #ifndef f_VD2_MEIA_DECODE_DV_H 20 | #define f_VD2_MEIA_DECODE_DV_H 21 | 22 | #include 23 | 24 | struct VDPixmap; 25 | 26 | class VDINTERFACE IVDVideoDecoderDV { 27 | public: 28 | virtual ~IVDVideoDecoderDV() {} 29 | virtual void DecompressFrame(const void *src, bool isPAL) = 0; 30 | virtual VDPixmap GetFrameBuffer() = 0; 31 | }; 32 | 33 | IVDVideoDecoderDV *VDCreateVideoDecoderDV(); 34 | 35 | #endif 36 | -------------------------------------------------------------------------------- /src/h/vd2/Meia/decode_huffyuv.h: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // Video decoding library 3 | // Copyright (C) 1998-2008 Avery Lee 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 18 | 19 | #ifndef f_VD2_MEIA_DECODE_HUFFYUV_H 20 | #define f_VD2_MEIA_DECODE_HUFFYUV_H 21 | 22 | #include 23 | 24 | struct VDPixmap; 25 | 26 | class VDINTERFACE IVDVideoDecoderHuffyuv { 27 | public: 28 | virtual ~IVDVideoDecoderHuffyuv() {} 29 | virtual void Init(uint32 w, uint32 h, uint32 depth, const uint8 *extradata, uint32 extralen) = 0; 30 | virtual void DecompressFrame(const void *src, uint32 len) = 0; 31 | virtual VDPixmap GetFrameBuffer() = 0; 32 | }; 33 | 34 | IVDVideoDecoderHuffyuv *VDCreateVideoDecoderHuffyuv(); 35 | 36 | #endif 37 | -------------------------------------------------------------------------------- /src/h/vd2/Meia/encode_png.h: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // Video decoding/encoding library 3 | // Copyright (C) 1998-2006 Avery Lee 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 18 | 19 | #ifndef f_VD2_MEIA_ENCODE_PNG_H 20 | #define f_VD2_MEIA_ENCODE_PNG_H 21 | 22 | #include 23 | 24 | struct VDPixmap; 25 | 26 | class VDINTERFACE IVDImageEncoderPNG { 27 | public: 28 | virtual ~IVDImageEncoderPNG() {} 29 | virtual void Encode(const VDPixmap& px, const void *&p, uint32& len, bool quick_compress) = 0; 30 | }; 31 | 32 | IVDImageEncoderPNG *VDCreateImageEncoderPNG(); 33 | 34 | #endif 35 | -------------------------------------------------------------------------------- /src/h/vd2/Tessa/Format.h: -------------------------------------------------------------------------------- 1 | #ifndef f_VD2_TESSA_FORMAT_H 2 | #define f_VD2_TESSA_FORMAT_H 3 | 4 | #include 5 | 6 | uint32 VDTGetBytesPerBlockRow(VDTFormat format, uint32 w); 7 | uint32 VDTGetNumBlockRows(VDTFormat format, uint32 h); 8 | 9 | #endif // f_VD2_TESSA_FORMAT_H 10 | -------------------------------------------------------------------------------- /src/h/vd2/VDCapture/capdrivers.h: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // A/V interface library 3 | // Copyright (C) 1998-2004 Avery Lee 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 18 | 19 | #ifndef f_VD2_RIZA_CAPDRIVERS_H 20 | #define f_VD2_RIZA_CAPDRIVERS_H 21 | 22 | class IVDCaptureSystem; 23 | 24 | IVDCaptureSystem *VDCreateCaptureSystemVFW(); 25 | IVDCaptureSystem *VDCreateCaptureSystemDS(); 26 | IVDCaptureSystem *VDCreateCaptureSystemScreen(); 27 | 28 | #endif 29 | -------------------------------------------------------------------------------- /src/h/vd2/VDCapture/capreplay.h: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // A/V interface library 3 | // Copyright (C) 1998-2005 Avery Lee 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 18 | 19 | #ifndef f_VD2_RIZA_CAPREPLAY_H 20 | #define f_VD2_RIZA_CAPREPLAY_H 21 | 22 | #include 23 | 24 | class IVDCaptureDriverCallback; 25 | 26 | class VDINTERFACE IVDCaptureReplayDriver { 27 | public: 28 | virtual ~IVDCaptureReplayDriver() {} 29 | 30 | virtual void SetChildCallback(IVDCaptureDriverCallback *pChild) = 0; 31 | 32 | virtual void Init(const wchar_t *filename) = 0; 33 | virtual bool ReplayNext() = 0; 34 | 35 | }; 36 | 37 | IVDCaptureReplayDriver *VDCreateCaptureReplayDriver(); 38 | 39 | 40 | #endif 41 | -------------------------------------------------------------------------------- /src/h/vd2/VDDisplay/compositor.h: -------------------------------------------------------------------------------- 1 | #ifndef f_VD2_VDDISPLAY_COMPOSITOR_H 2 | #define f_VD2_VDDISPLAY_COMPOSITOR_H 3 | 4 | #include 5 | 6 | class IVDDisplayRenderer; 7 | 8 | class VDINTERFACE IVDDisplayCompositor : public IVDRefCount { 9 | public: 10 | virtual void Composite(IVDDisplayRenderer& r) = 0; 11 | }; 12 | 13 | #endif 14 | -------------------------------------------------------------------------------- /src/h/vd2/VDDisplay/renderer.h: -------------------------------------------------------------------------------- 1 | #ifndef f_VD2_VDDISPLAY_RENDERER_H 2 | #define f_VD2_VDDISPLAY_RENDERER_H 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | class VDDisplayImageView; 9 | 10 | class IVDDisplayRenderer { 11 | public: 12 | virtual void SetColorRGB(uint32 color) = 0; 13 | virtual void FillRect(sint32 x, sint32 y, sint32 w, sint32 h) = 0; 14 | virtual void Blt(sint32 x, sint32 y, VDDisplayImageView& imageView) = 0; 15 | }; 16 | 17 | class VDDisplayImageView { 18 | public: 19 | VDDisplayImageView(); 20 | ~VDDisplayImageView(); 21 | 22 | bool IsDynamic() const { return mbDynamic; } 23 | const VDPixmap& GetImage() const { return mPixmap; } 24 | void SetImage(const VDPixmap& px, bool dynamic); 25 | 26 | void SetCachedImage(IVDRefUnknown *p); 27 | IVDRefUnknown *GetCachedImage() const { return mpCachedImage; } 28 | 29 | uint32 GetUniquenessCounter() const { return mUniquenessCounter; } 30 | 31 | void Invalidate(); 32 | 33 | protected: 34 | vdrefptr mpCachedImage; 35 | uint32 mUniquenessCounter; 36 | VDPixmap mPixmap; 37 | bool mbDynamic; 38 | }; 39 | 40 | #endif 41 | -------------------------------------------------------------------------------- /src/h/vd2/VDFilters/VFList.h: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // Internal filter library 3 | // Copyright (C) 1998-2011 Avery Lee 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 18 | 19 | #ifndef f_VD2_VDFILTERS_VFLIST_H 20 | #define f_VD2_VDFILTERS_VFLIST_H 21 | 22 | const VDXFilterDefinition *const *VDVFGetList(); 23 | 24 | #endif 25 | -------------------------------------------------------------------------------- /src/h/vd2/VDLib/PortableRegistry.h: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // Copyright (C) 1998-2011 Avery Lee 3 | // 4 | // This program is free software; you can redistribute it and/or modify 5 | // it under the terms of the GNU General Public License as published by 6 | // the Free Software Foundation; either version 2 of the License, or 7 | // (at your option) any later version. 8 | // 9 | // This program is distributed in the hope that it will be useful, 10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | // GNU General Public License for more details. 13 | // 14 | // You should have received a copy of the GNU General Public License 15 | // along with this program; if not, write to the Free Software 16 | // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 17 | 18 | #ifndef f_VD2_VDLIB_PORTABLEREGISTRY_H 19 | #define f_VD2_VDLIB_PORTABLEREGISTRY_H 20 | 21 | void VDLoadRegistry(const wchar_t *path); 22 | void VDSaveRegistry(const wchar_t *fnpath); 23 | 24 | #endif // f_VD2_VDLIB_PORTABLEREGISTRY_H 25 | -------------------------------------------------------------------------------- /src/h/vd2/VDLib/win32/DebugOutputFilter.h: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // Application helper library 3 | // Copyright (C) 1998-2008 Avery Lee 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 18 | 19 | #ifndef f_VD2_VDLIB_WIN32_DEBUGOUTPUTFILTER_H 20 | #define f_VD2_VDLIB_WIN32_DEBUGOUTPUTFILTER_H 21 | 22 | void VDInitDebugOutputFilterW32(const char *filter); 23 | 24 | #endif 25 | -------------------------------------------------------------------------------- /src/h/vd2/VDLib/win32/FileMapping.h: -------------------------------------------------------------------------------- 1 | #ifndef f_VD2_VDLIB_WIN32_FILEMAPPING_H 2 | #define f_VD2_VDLIB_WIN32_FILEMAPPING_H 3 | 4 | #ifdef _MSC_VER 5 | #pragma once 6 | #endif 7 | 8 | class VDFileMappingW32 { 9 | VDFileMappingW32(const VDFileMappingW32&); 10 | VDFileMappingW32& operator=(const VDFileMappingW32&); 11 | public: 12 | VDFileMappingW32(); 13 | ~VDFileMappingW32(); 14 | 15 | bool Init(uint32 bytes); 16 | void Shutdown(); 17 | 18 | void *GetHandle() const { return mpHandle; } 19 | 20 | protected: 21 | void *mpHandle; 22 | }; 23 | 24 | class VDFileMappingViewW32 { 25 | VDFileMappingViewW32(const VDFileMappingViewW32&); 26 | VDFileMappingViewW32& operator=(const VDFileMappingViewW32&); 27 | public: 28 | VDFileMappingViewW32(); 29 | ~VDFileMappingViewW32(); 30 | 31 | bool Init(const VDFileMappingW32& mapping, uint64 offset, uint32 size); 32 | void Shutdown(); 33 | 34 | void *GetPointer() const { return mpView; } 35 | 36 | protected: 37 | void *mpView; 38 | }; 39 | 40 | #endif 41 | -------------------------------------------------------------------------------- /src/h/vd2/libav_tiff/tiff_image.h: -------------------------------------------------------------------------------- 1 | #ifndef tiff_image_h 2 | #define tiff_image_h 3 | 4 | #include 5 | 6 | bool VDIsTiffHeader(const void *pv, uint32 len); 7 | 8 | struct VDPixmap; 9 | struct FilterModPixmapInfo; 10 | 11 | class VDINTERFACE IVDImageDecoderTIFF { 12 | public: 13 | virtual ~IVDImageDecoderTIFF() {} 14 | 15 | virtual void Decode(const void *src, uint32 srclen) = 0; 16 | virtual void GetSize(int& w, int& h) = 0; 17 | virtual int GetFormat() = 0; 18 | virtual void GetImage(void *p, int pitch, int format) = 0; 19 | virtual void GetPixmapInfo(FilterModPixmapInfo& info) = 0; 20 | }; 21 | 22 | enum { 23 | tiffenc_default, 24 | tiffenc_lzw, 25 | tiffenc_zip 26 | }; 27 | 28 | class VDINTERFACE IVDImageEncoderTIFF { 29 | public: 30 | virtual ~IVDImageEncoderTIFF() {} 31 | virtual void Encode(const VDPixmap& px, void *&p, uint32& len, int compress, bool alpha) = 0; 32 | }; 33 | 34 | IVDImageDecoderTIFF *VDCreateImageDecoderTIFF(); 35 | IVDImageEncoderTIFF *VDCreateImageEncoderTIFF(); 36 | 37 | #endif 38 | -------------------------------------------------------------------------------- /src/h/vd2/system/filewatcher.h: -------------------------------------------------------------------------------- 1 | #ifndef f_VD2_SYSTEM_FILEWATCHER_H 2 | #define f_VD2_SYSTEM_FILEWATCHER_H 3 | 4 | #ifdef _MSC_VER 5 | #pragma once 6 | #endif 7 | 8 | #include 9 | #include 10 | 11 | class VDFunctionThunk; 12 | 13 | class IVDFileWatcherCallback { 14 | public: 15 | virtual bool OnFileUpdated(const wchar_t *path) = 0; 16 | }; 17 | 18 | class VDFileWatcher { 19 | public: 20 | VDFileWatcher(); 21 | ~VDFileWatcher(); 22 | 23 | bool IsActive() const; 24 | 25 | void Init(const wchar_t *file, IVDFileWatcherCallback *cb); 26 | void InitDir(const wchar_t *path, bool subdirs, IVDFileWatcherCallback *cb); 27 | void Shutdown(); 28 | 29 | bool Wait(uint32 delay = 0xFFFFFFFFU); 30 | 31 | protected: 32 | void StaticTimerCallback(void *, unsigned, unsigned, unsigned long); 33 | 34 | void *mChangeHandle; 35 | uint64 mLastWriteTime; 36 | bool mbWatchDir; 37 | VDStringW mPath; 38 | 39 | IVDFileWatcherCallback *mpCB; 40 | 41 | bool mbRepeatRequested; 42 | bool mbThunksInited; 43 | VDFunctionThunk *mpThunk; 44 | uint32 mTimerId; 45 | }; 46 | 47 | #endif 48 | -------------------------------------------------------------------------------- /src/h/vd2/system/halffloat.h: -------------------------------------------------------------------------------- 1 | #ifndef f_VD2_SYSTEM_HALFFLOAT_H 2 | #define f_VD2_SYSTEM_HALFFLOAT_H 3 | 4 | #include 5 | 6 | uint16 VDConvertFloatToHalf(const void *f); 7 | void VDConvertHalfToFloat(uint16 h, void *dst); 8 | 9 | #endif // f_VD2_SYSTEM_HALFFLOAT_H 10 | -------------------------------------------------------------------------------- /src/helpfile/Makefile: -------------------------------------------------------------------------------- 1 | OUTDIR = ..\..\out\Helpfile 2 | LINA = ..\..\out\$(BUILD)\Lina 3 | HHC = "C:\Program Files\HTML Help Workshop\hhc.exe" 4 | HHC2 = "C:\Program Files (x86)\HTML Help Workshop\hhc.exe" 5 | 6 | ..\$(BUILD)\VirtualDub.vdhelp: $(SRC)/*.lina $(SRC)\pics\* 7 | if not exist $(OUTDIR) md $(OUTDIR) 8 | $(LINA) $(SRC)/root.lina 9 | cd $(OUTDIR) 10 | if exist $(HHC2) cmd /v:on /c $(HHC2) help.hhp ^& set /a x = 1-!errorlevel! ^> nul ^& exit !x! 11 | if not exist $(HHC2) cmd /v:on /c $(HHC) help.hhp ^& set /a x = 1-!errorlevel! ^> nul ^& exit !x! 12 | -------------------------------------------------------------------------------- /src/helpfile/source/fullstop.txt: -------------------------------------------------------------------------------- 1 | VirtualDub 2 | video 3 | audio 4 | a 5 | the 6 | and 7 | or 8 | but 9 | however 10 | go 11 | must 12 | be 13 | not 14 | it 15 | you 16 | of 17 | as 18 | in 19 | 1 20 | 2 21 | 320 22 | 240 23 | -------------------------------------------------------------------------------- /src/helpfile/source/pics/artifact-banding.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/helpfile/source/pics/artifact-banding.png -------------------------------------------------------------------------------- /src/helpfile/source/pics/artifact-compression.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/helpfile/source/pics/artifact-compression.jpeg -------------------------------------------------------------------------------- /src/helpfile/source/pics/artifact-interlacing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/helpfile/source/pics/artifact-interlacing.png -------------------------------------------------------------------------------- /src/helpfile/source/pics/artifact-rainbow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/helpfile/source/pics/artifact-rainbow.png -------------------------------------------------------------------------------- /src/helpfile/source/pics/artifact-scaling.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/helpfile/source/pics/artifact-scaling.png -------------------------------------------------------------------------------- /src/helpfile/source/pics/c-infopanel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/helpfile/source/pics/c-infopanel.png -------------------------------------------------------------------------------- /src/helpfile/source/pics/c-spilldrives.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/helpfile/source/pics/c-spilldrives.png -------------------------------------------------------------------------------- /src/helpfile/source/pics/c-timing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/helpfile/source/pics/c-timing.png -------------------------------------------------------------------------------- /src/helpfile/source/pics/c-volume1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/helpfile/source/pics/c-volume1.png -------------------------------------------------------------------------------- /src/helpfile/source/pics/c-volume2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/helpfile/source/pics/c-volume2.png -------------------------------------------------------------------------------- /src/helpfile/source/pics/c-vumeter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/helpfile/source/pics/c-vumeter.png -------------------------------------------------------------------------------- /src/helpfile/source/pics/d-audiocompression.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/helpfile/source/pics/d-audiocompression.png -------------------------------------------------------------------------------- /src/helpfile/source/pics/d-audioconversion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/helpfile/source/pics/d-audioconversion.png -------------------------------------------------------------------------------- /src/helpfile/source/pics/d-audiofilters.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/helpfile/source/pics/d-audiofilters.png -------------------------------------------------------------------------------- /src/helpfile/source/pics/d-audiointerleaving.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/helpfile/source/pics/d-audiointerleaving.png -------------------------------------------------------------------------------- /src/helpfile/source/pics/d-audiovolume.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/helpfile/source/pics/d-audiovolume.png -------------------------------------------------------------------------------- /src/helpfile/source/pics/d-capturesettings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/helpfile/source/pics/d-capturesettings.png -------------------------------------------------------------------------------- /src/helpfile/source/pics/d-preferences.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/helpfile/source/pics/d-preferences.png -------------------------------------------------------------------------------- /src/helpfile/source/pics/d-videocolordepth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/helpfile/source/pics/d-videocolordepth.png -------------------------------------------------------------------------------- /src/helpfile/source/pics/d-videocompression.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/helpfile/source/pics/d-videocompression.png -------------------------------------------------------------------------------- /src/helpfile/source/pics/d-videofilters.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/helpfile/source/pics/d-videofilters.png -------------------------------------------------------------------------------- /src/helpfile/source/pics/d-videoframerate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/helpfile/source/pics/d-videoframerate.png -------------------------------------------------------------------------------- /src/helpfile/source/pics/d-videorange.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/helpfile/source/pics/d-videorange.png -------------------------------------------------------------------------------- /src/helpfile/source/pics/p-displaymenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/helpfile/source/pics/p-displaymenu.png -------------------------------------------------------------------------------- /src/helpfile/source/pics/p-mainui-audiodisplay-spectrogram.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/helpfile/source/pics/p-mainui-audiodisplay-spectrogram.jpeg -------------------------------------------------------------------------------- /src/helpfile/source/pics/p-mainui-audiodisplay-waveform.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/helpfile/source/pics/p-mainui-audiodisplay-waveform.png -------------------------------------------------------------------------------- /src/helpfile/source/pics/p-mainui-curveedit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/helpfile/source/pics/p-mainui-curveedit.png -------------------------------------------------------------------------------- /src/helpfile/source/pics/p-mainui-framestep.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/helpfile/source/pics/p-mainui-framestep.png -------------------------------------------------------------------------------- /src/helpfile/source/pics/p-mainui-keystep.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/helpfile/source/pics/p-mainui-keystep.png -------------------------------------------------------------------------------- /src/helpfile/source/pics/p-mainui-mark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/helpfile/source/pics/p-mainui-mark.png -------------------------------------------------------------------------------- /src/helpfile/source/pics/p-mainui-playback.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/helpfile/source/pics/p-mainui-playback.png -------------------------------------------------------------------------------- /src/helpfile/source/pics/p-mainui-scenestep.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/helpfile/source/pics/p-mainui-scenestep.png -------------------------------------------------------------------------------- /src/helpfile/source/pics/p-mainui-timestamp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/helpfile/source/pics/p-mainui-timestamp.png -------------------------------------------------------------------------------- /src/helpfile/source/pics/p-mainui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/helpfile/source/pics/p-mainui.png -------------------------------------------------------------------------------- /src/helpfile/source/render/externalencoder.lina: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/helpfile/source/render/externalencoder.lina -------------------------------------------------------------------------------- /src/libav_tiff/README: -------------------------------------------------------------------------------- 1 | This library contains parts of FFMPEG (http://ffmpeg.org). 2 | Files were modified to cut down dependencies on FFMPEG sources. 3 | Some features like location tags were disabled. 4 | Support for YUV formats was disabled. 5 | -------------------------------------------------------------------------------- /src/libav_tiff/config.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/libav_tiff/config.h -------------------------------------------------------------------------------- /src/samplefilter/res/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Developer Studio generated include file. 3 | // Used by samplefilter.rc 4 | // 5 | #define IDC_PREVIEW 3 6 | #define IDD_FILTER_TUTORIAL_SATURATION 101 7 | #define IDC_VALUE 1000 8 | 9 | // Next default values for new objects 10 | // 11 | #ifdef APSTUDIO_INVOKED 12 | #ifndef APSTUDIO_READONLY_SYMBOLS 13 | #define _APS_NEXT_RESOURCE_VALUE 102 14 | #define _APS_NEXT_COMMAND_VALUE 40001 15 | #define _APS_NEXT_CONTROL_VALUE 1001 16 | #define _APS_NEXT_SYMED_VALUE 101 17 | #endif 18 | #endif 19 | -------------------------------------------------------------------------------- /src/system/h/stdafx.h: -------------------------------------------------------------------------------- 1 | // Force C locale to avoid this warning: 2 | // 3 | // mmreg.h : warning C4819: The file contains a character that cannot be represented in the current code page (932). Save the file in Unicode format to prevent data loss 4 | #pragma setlocale("C") 5 | 6 | // Detect the Windows SDK in use and select Windows 2000 baseline 7 | // if the Vista SDK, else Windows 98 baseline. 8 | #ifdef _MSC_VER 9 | #include 10 | #else 11 | #define VER_PRODUCTBUILD 6001 12 | #endif 13 | #if VER_PRODUCTBUILD >= 6000 14 | #define _WIN32_WINNT 0x0501 15 | #else 16 | #define _WIN32_WINNT 0x0410 17 | #endif 18 | 19 | #include 20 | #include 21 | #include 22 | #include 23 | #include 24 | #include 25 | #include 26 | #include 27 | #include 28 | #include 29 | #include 30 | -------------------------------------------------------------------------------- /src/system/source/a64_cpuaccel.asm: -------------------------------------------------------------------------------- 1 | ; VirtualDub - Video processing and capture application 2 | ; System library component 3 | ; Copyright (C) 1998-2006 Avery Lee, All Rights Reserved. 4 | ; 5 | ; Beginning with 1.6.0, the VirtualDub system library is licensed 6 | ; differently than the remainder of VirtualDub. This particular file is 7 | ; thus licensed as follows (the "zlib" license): 8 | ; 9 | ; This software is provided 'as-is', without any express or implied 10 | ; warranty. In no event will the authors be held liable for any 11 | ; damages arising from the use of this software. 12 | ; 13 | ; Permission is granted to anyone to use this software for any purpose, 14 | ; including commercial applications, and to alter it and redistribute it 15 | ; freely, subject to the following restrictions: 16 | ; 17 | ; 1. The origin of this software must not be misrepresented; you must 18 | ; not claim that you wrote the original software. If you use this 19 | ; software in a product, an acknowledgment in the product 20 | ; documentation would be appreciated but is not required. 21 | ; 2. Altered source versions must be plainly marked as such, and must 22 | ; not be misrepresented as being the original software. 23 | ; 3. This notice may not be removed or altered from any source 24 | ; distribution. 25 | 26 | segment .text 27 | 28 | ;-------------------------------------------------------------------------- 29 | global get_xcr0 30 | get_xcr0: 31 | xor ecx, ecx 32 | xgetbv 33 | ret 34 | end 35 | -------------------------------------------------------------------------------- /src/system/source/a64_thunk.asm: -------------------------------------------------------------------------------- 1 | segment .text 2 | 3 | global VDMethodToFunctionThunk64 4 | proc_frame VDMethodToFunctionThunk64 5 | ;prolog 6 | db 48h ;emit REX prefix -- first instruction must be two bytes for hot patching 7 | push rbp 8 | [pushreg rbp] 9 | 10 | mov rbp, rsp ;create stack pointer 11 | [setframe rbp, 0] 12 | 13 | mov [rbp+16], rcx ;save arg1 14 | [savereg rcx, 0] 15 | 16 | mov [rbp+24], rdx ;save arg2 17 | [savereg rcx, 8] 18 | 19 | mov [rbp+32], r8 ;save arg3 20 | [savereg rcx, 16] 21 | 22 | mov [rbp+40], r9 ;save arg4 23 | [savereg rcx, 24] 24 | 25 | [endprolog] 26 | 27 | ;re-copy arguments 4 and up 28 | mov ecx, [rax+24] 29 | or ecx, ecx 30 | jz .argsdone 31 | lea rdx, [rcx+32] 32 | .argsloop: 33 | push qword [rsp+rdx] 34 | sub ecx, 8 35 | jnz .argsloop 36 | .argsdone: 37 | 38 | ;load 'this' pointer 39 | mov rcx, [rax+16] 40 | 41 | ;reload arguments 1-3 42 | mov rdx, [rbp+16] 43 | mov r8, [rbp+24] 44 | mov r9, [rbp+32] 45 | 46 | ;reserve argument 1-4 space on stack 47 | sub rsp, 32 48 | 49 | ;call function 50 | call qword [rax+8] 51 | 52 | ;epilog 53 | lea rsp, [rbp] ;pop off stack frame and any additional arg space 54 | pop rbp ;restore base pointer 55 | ret ;all done 56 | endproc_frame 57 | 58 | end 59 | -------------------------------------------------------------------------------- /src/system/source/linearalloc.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | #include 3 | #include 4 | 5 | VDLinearAllocator::VDLinearAllocator(uint32 blockSize) 6 | : mpBlocks(NULL) 7 | , mpAllocPtr(NULL) 8 | , mAllocLeft(0) 9 | , mBlockSize(blockSize) 10 | { 11 | } 12 | 13 | VDLinearAllocator::~VDLinearAllocator() { 14 | Clear(); 15 | } 16 | 17 | void VDLinearAllocator::Clear() { 18 | Block *p = mpBlocks; 19 | 20 | while(p) { 21 | Block *next = p->mpNext; 22 | 23 | free(p); 24 | 25 | p = next; 26 | } 27 | 28 | mpBlocks = NULL; 29 | mpAllocPtr = NULL; 30 | mAllocLeft = 0; 31 | } 32 | 33 | void *VDLinearAllocator::AllocateSlow(size_t bytes) { 34 | Block *block; 35 | void *p; 36 | 37 | if ((bytes + bytes) >= mBlockSize) { 38 | block = (Block *)malloc(sizeof(Block) + bytes); 39 | if (!block) 40 | throw MyMemoryError(); 41 | 42 | mAllocLeft = 0; 43 | 44 | } else { 45 | block = (Block *)malloc(sizeof(Block) + mBlockSize); 46 | 47 | if (!block) 48 | throw MyMemoryError(); 49 | 50 | mAllocLeft = mBlockSize - bytes; 51 | 52 | } 53 | 54 | p = block + 1; 55 | mpAllocPtr = (char *)p + bytes; 56 | 57 | block->mpNext = mpBlocks; 58 | mpBlocks = block; 59 | 60 | return p; 61 | } 62 | 63 | void VDFixedLinearAllocator::ThrowException() { 64 | throw MyMemoryError(); 65 | } 66 | 67 | -------------------------------------------------------------------------------- /src/system/source/refcount.cpp: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // System library component 3 | // Copyright (C) 1998-2009 Avery Lee, All Rights Reserved. 4 | // 5 | // Beginning with 1.6.0, the VirtualDub system library is licensed 6 | // differently than the remainder of VirtualDub. This particular file is 7 | // thus licensed as follows (the "zlib" license): 8 | // 9 | // This software is provided 'as-is', without any express or implied 10 | // warranty. In no event will the authors be held liable for any 11 | // damages arising from the use of this software. 12 | // 13 | // Permission is granted to anyone to use this software for any purpose, 14 | // including commercial applications, and to alter it and redistribute it 15 | // freely, subject to the following restrictions: 16 | // 17 | // 1. The origin of this software must not be misrepresented; you must 18 | // not claim that you wrote the original software. If you use this 19 | // software in a product, an acknowledgment in the product 20 | // documentation would be appreciated but is not required. 21 | // 2. Altered source versions must be plainly marked as such, and must 22 | // not be misrepresented as being the original software. 23 | // 3. This notice may not be removed or altered from any source 24 | // distribution. 25 | 26 | #include "stdafx.h" 27 | #include 28 | 29 | vdsaferelease_t vdsaferelease; 30 | -------------------------------------------------------------------------------- /src/system/source/vdalloc.cpp: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // System library component 3 | // Copyright (C) 1998-2012 Avery Lee, All Rights Reserved. 4 | // 5 | // Beginning with 1.6.0, the VirtualDub system library is licensed 6 | // differently than the remainder of VirtualDub. This particular file is 7 | // thus licensed as follows (the "zlib" license): 8 | // 9 | // This software is provided 'as-is', without any express or implied 10 | // warranty. In no event will the authors be held liable for any 11 | // damages arising from the use of this software. 12 | // 13 | // Permission is granted to anyone to use this software for any purpose, 14 | // including commercial applications, and to alter it and redistribute it 15 | // freely, subject to the following restrictions: 16 | // 17 | // 1. The origin of this software must not be misrepresented; you must 18 | // not claim that you wrote the original software. If you use this 19 | // software in a product, an acknowledgment in the product 20 | // documentation would be appreciated but is not required. 21 | // 2. Altered source versions must be plainly marked as such, and must 22 | // not be misrepresented as being the original software. 23 | // 3. This notice may not be removed or altered from any source 24 | // distribution. 25 | 26 | #include "stdafx.h" 27 | #include 28 | 29 | vdsafedelete_t vdsafedelete; 30 | -------------------------------------------------------------------------------- /src/test/h/test.h: -------------------------------------------------------------------------------- 1 | #ifndef f_TEST_H 2 | #define f_TEST_H 3 | 4 | #include 5 | 6 | typedef int (*TestFn)(); 7 | 8 | extern void AddTest(TestFn, const char *, bool autoRun); 9 | 10 | #define DEFINE_TEST(name) int Test##name(); namespace { struct TestAutoInit_##name { TestAutoInit_##name() { AddTest(Test##name, #name, true); } } g_testAutoInit_##name; } int Test##name() 11 | #define DEFINE_TEST_NONAUTO(name) int Test##name(); namespace { struct TestAutoInit_##name { TestAutoInit_##name() { AddTest(Test##name, #name, false); } } g_testAutoInit_##name; } int Test##name() 12 | 13 | class AssertionException : public MyError { 14 | public: 15 | AssertionException(const char *s) : MyError(s) {} 16 | }; 17 | 18 | bool ShouldBreak(); 19 | 20 | #define TEST_ASSERT_STRINGIFY(x) TEST_ASSERT_STRINGIFY1(x) 21 | #define TEST_ASSERT_STRINGIFY1(x) #x 22 | 23 | #define TEST_ASSERT(condition) if (!(condition)) { ShouldBreak() ? __debugbreak() : throw AssertionException("Test assertion failed at line " TEST_ASSERT_STRINGIFY(__LINE__) ": " #condition); volatile int _x = 0; } else ((void)0) 24 | 25 | #endif 26 | -------------------------------------------------------------------------------- /src/test/source/test.cpp: -------------------------------------------------------------------------------- 1 | #define _WIN32_WINNT 0x0400 2 | #include 3 | 4 | bool ShouldBreak() { 5 | return !!IsDebuggerPresent(); 6 | } 7 | -------------------------------------------------------------------------------- /src/vdicmdrv/IVideoDriver.h: -------------------------------------------------------------------------------- 1 | #ifndef _f_IVIDEODRIVER_H 2 | #define _f_IVIDEODRIVER_H 3 | 4 | #include 5 | #include 6 | //#include 7 | 8 | // From msviddrv.h (Video for Windows 1.1e SDK) 9 | 10 | typedef struct tag_video_open_parms { 11 | DWORD dwSize; // sizeof(VIDEO_OPEN_PARMS) 12 | FOURCC fccType; // 'vcap' 13 | FOURCC fccComp; // unused 14 | DWORD dwVersion; // version of msvideo opening you 15 | DWORD dwFlags; // channel type 16 | DWORD dwError; // if open fails, this is why 17 | } VIDEO_OPEN_PARMS, FAR * LPVIDEO_OPEN_PARMS; 18 | 19 | 20 | class IVideoDriver { 21 | public: 22 | virtual ~IVideoDriver() {}; 23 | 24 | virtual BOOL Load(HDRVR hDriver) = 0; 25 | virtual void Free(HDRVR hDriver) = 0; 26 | virtual DWORD Open(HDRVR hDriver, char *szDescription, LPVIDEO_OPEN_PARMS lpVideoOpenParms) = 0; 27 | virtual void Disable(HDRVR hDriver) = 0; 28 | virtual void Enable(HDRVR hDriver) = 0; 29 | virtual LRESULT Default(DWORD dwDriverID, HDRVR hDriver, UINT uiMessage, LPARAM lParam1, LPARAM lParam2) = 0; 30 | }; 31 | 32 | #endif 33 | -------------------------------------------------------------------------------- /src/vdicmdrv/notes.txt: -------------------------------------------------------------------------------- 1 | ANNOYING PROBLEMS 2 | ================= 3 | o XingMPEG Encoder requires *write* access to any AVI files it opens (unconfirmed). 4 | o XingMPEG Encoder leaves files open when the compressor cannot be found (confirmed). -------------------------------------------------------------------------------- /src/vdicmdrv/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Developer Studio generated include file. 3 | // Used by vdicmdrv.rc 4 | // 5 | #define IDD_ABOUT 101 6 | 7 | // Next default values for new objects 8 | // 9 | #ifdef APSTUDIO_INVOKED 10 | #ifndef APSTUDIO_READONLY_SYMBOLS 11 | #define _APS_NEXT_RESOURCE_VALUE 102 12 | #define _APS_NEXT_COMMAND_VALUE 40001 13 | #define _APS_NEXT_CONTROL_VALUE 1000 14 | #define _APS_NEXT_SYMED_VALUE 101 15 | #endif 16 | #endif 17 | -------------------------------------------------------------------------------- /src/vdicmdrv/vdicmdrv.def: -------------------------------------------------------------------------------- 1 | LIBRARY vdicmdrv 2 | 3 | EXPORTS 4 | DriverProc 5 | -------------------------------------------------------------------------------- /src/vdicmdrv/vdicmdrv.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/vdicmdrv/vdicmdrv.rc -------------------------------------------------------------------------------- /src/vdjson/h/stdafx.h: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // JSON I/O library 3 | // Copyright (C) 1998-2010 Avery Lee 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 18 | 19 | #include 20 | #include 21 | #include 22 | -------------------------------------------------------------------------------- /src/vdjson/source/stdafx.cpp: -------------------------------------------------------------------------------- 1 | // VirtualDub - Video processing and capture application 2 | // JSON I/O library 3 | // Copyright (C) 1998-2010 Avery Lee 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 18 | 19 | #include "stdafx.h" 20 | -------------------------------------------------------------------------------- /src/vdlaunch/h/stdafx.h: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | -------------------------------------------------------------------------------- /src/vdlaunch/source/stdafx.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | -------------------------------------------------------------------------------- /src/vdlaunch/source/tinycrt.cpp: -------------------------------------------------------------------------------- 1 | //#ifdef _M_IX86 2 | 3 | extern "C" void *memcpy(void *dst0, const void *src0, size_t len); 4 | #pragma function(memcpy) 5 | extern "C" void *memcpy(void *dst0, const void *src0, size_t len) { 6 | char *dst = (char *)dst0; 7 | const char *src = (const char *)src0; 8 | 9 | while(len--) 10 | *dst++ = *src++; 11 | 12 | return dst0; 13 | } 14 | 15 | extern "C" void *memset(void *dst0, int fill, size_t len); 16 | #pragma function(memset) 17 | extern "C" void *memset(void *dst0, int fill, size_t len) { 18 | char *dst = (char *)dst0; 19 | 20 | while(len--) 21 | *dst++ = (char)fill; 22 | 23 | return dst0; 24 | } 25 | 26 | //#endif 27 | -------------------------------------------------------------------------------- /src/vdremote/clsid.h: -------------------------------------------------------------------------------- 1 | #ifndef f_VDREMOTE_CLSID_H 2 | #define f_VDREMOTE_CLSID_H 3 | 4 | #include 5 | 6 | DEFINE_GUID(CLSID_CAVIFileRemote , 0x894288e0,0x0948,0x11d2,0x81,0x09,0x00,0x48,0x45,0x00,0x0e,0xb5); 7 | DEFINE_GUID(CLSID_CAVIStreamRemote , 0x91379540,0x0948,0x11d2,0x81,0x09,0x00,0x48,0x45,0x00,0x0e,0xb5); 8 | 9 | #endif 10 | -------------------------------------------------------------------------------- /src/vdremote/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Developer Studio generated include file. 3 | // Used by vdremote.rc 4 | // 5 | 6 | // Next default values for new objects 7 | // 8 | #ifdef APSTUDIO_INVOKED 9 | #ifndef APSTUDIO_READONLY_SYMBOLS 10 | #define _APS_NEXT_RESOURCE_VALUE 101 11 | #define _APS_NEXT_COMMAND_VALUE 40001 12 | #define _APS_NEXT_CONTROL_VALUE 1000 13 | #define _APS_NEXT_SYMED_VALUE 101 14 | #endif 15 | #endif 16 | -------------------------------------------------------------------------------- /src/vdremote/vdremote.def: -------------------------------------------------------------------------------- 1 | LIBRARY 2 | EXPORTS 3 | DllGetClassObject PRIVATE 4 | DllCanUnloadNow PRIVATE 5 | -------------------------------------------------------------------------------- /src/vdremote/vdremote.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/vdremote/vdremote.rc -------------------------------------------------------------------------------- /src/vdsvrlnk/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Developer Studio generated include file. 3 | // Used by vdsvrlnk.rc 4 | // 5 | 6 | // Next default values for new objects 7 | // 8 | #ifdef APSTUDIO_INVOKED 9 | #ifndef APSTUDIO_READONLY_SYMBOLS 10 | #define _APS_NEXT_RESOURCE_VALUE 101 11 | #define _APS_NEXT_COMMAND_VALUE 40001 12 | #define _APS_NEXT_CONTROL_VALUE 1000 13 | #define _APS_NEXT_SYMED_VALUE 101 14 | #endif 15 | #endif 16 | -------------------------------------------------------------------------------- /src/vdsvrlnk/vdsvrlnk.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/vdsvrlnk/vdsvrlnk.rc -------------------------------------------------------------------------------- /src/vdub/res/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Developer Studio generated include file. 3 | // Used by vdub.rc 4 | // 5 | #define IDI_MAINICON 101 6 | 7 | // Next default values for new objects 8 | // 9 | #ifdef APSTUDIO_INVOKED 10 | #ifndef APSTUDIO_READONLY_SYMBOLS 11 | #define _APS_NEXT_RESOURCE_VALUE 102 12 | #define _APS_NEXT_COMMAND_VALUE 40001 13 | #define _APS_NEXT_CONTROL_VALUE 1000 14 | #define _APS_NEXT_SYMED_VALUE 101 15 | #endif 16 | #endif 17 | -------------------------------------------------------------------------------- /src/vdub/res/vdub.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/vdub/res/vdub.ico -------------------------------------------------------------------------------- /src/vdub/res/vdub.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shekh/VirtualDub2/942a73abf23a721e5bb9f319960b8374429909f9/src/vdub/res/vdub.rc -------------------------------------------------------------------------------- /src/vdub/source/tinycrt.cpp: -------------------------------------------------------------------------------- 1 | //#ifdef _M_IX86 2 | 3 | extern "C" void *memcpy(void *dst0, const void *src0, size_t len); 4 | #pragma function(memcpy) 5 | extern "C" void *memcpy(void *dst0, const void *src0, size_t len) { 6 | char *dst = (char *)dst0; 7 | const char *src = (const char *)src0; 8 | 9 | while(len--) 10 | *dst++ = *src++; 11 | 12 | return dst0; 13 | } 14 | 15 | extern "C" void *memset(void *dst0, int fill, size_t len); 16 | #pragma function(memset) 17 | extern "C" void *memset(void *dst0, int fill, size_t len) { 18 | char *dst = (char *)dst0; 19 | 20 | while(len--) 21 | *dst++ = (char)fill; 22 | 23 | return dst0; 24 | } 25 | 26 | //#endif 27 | -------------------------------------------------------------------------------- /src/wipe.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | @attrib /r /s /h *.suo 3 | @for /r %%x in (*.user;*.scc;*.suo;*.ncb) do ( 4 | @echo %%x 5 | @del %%x 6 | ) 7 | 8 | -------------------------------------------------------------------------------- /src/zlib/inffast.h: -------------------------------------------------------------------------------- 1 | /* inffast.h -- header to use inffast.c 2 | * Copyright (C) 1995-2003 Mark Adler 3 | * For conditions of distribution and use, see copyright notice in zlib.h 4 | */ 5 | 6 | /* WARNING: this file should *not* be used by applications. It is 7 | part of the implementation of the compression library and is 8 | subject to change. Applications should only use zlib.h. 9 | */ 10 | 11 | void inflate_fast OF((z_streamp strm, unsigned start)); 12 | --------------------------------------------------------------------------------