import "oaidl.idl";
import "ocidl.idl";

/* Interface IDatasteadMultipurposeDirectShowEncoder */
[
	object,
	uuid(F7F2BE3A-C4AC-43DB-8582-98E925CC2FE2),
	helpstring("Created by QueryInterface from IDatasteadMultipurposeDirectShowEncoderIDL")
] interface IDatasteadMultipurposeDirectShowEncoderIDL : IUnknown
{
	HRESULT SetCommandLine([in] LPWSTR CommandLine);
	HRESULT GetCommandLine([out] LPWSTR * CommandLine);
	HRESULT Stop_PauseWhenStop();
	HRESULT GetCurrentLog([in] BOOL OnlyIfUpdated, [in] LPCSTR pBuffer, [in] int MaxBufferSize, [out] int* CurrentLogSize, [out] int* CurrentLogFlag);
	HRESULT IsCurrentLogUpdated();
	HRESULT GetExitCode([out] int *ExitCode);
	HRESULT GetInputsTotalDurationMs([out] unsigned int* InputsTotalDurationMs);
	HRESULT GetProgress_FrameCount([out] unsigned int* Progress_FrameCount);
	HRESULT GetProgress_TimeMs([out] unsigned int* Progress_TimeMs);
	HRESULT GetProgress_DuplicatedCount([out] unsigned int* Progress_DuplicatedCount);
	HRESULT GetProgress_DroppedCount([out] unsigned int* Progress_DroppedCount);
	HRESULT GetProgress_Fps([out] double* Progress_Fps);
	HRESULT GetProgress_Quality([out] double* Progress_Quality);
	HRESULT GetProgress_SizeWrittenKb([out] double* Progress_SizeWrittenKb);
	HRESULT GetProgress_BitRateKbps([out] double* Progress_BitRateKbps);
	HRESULT GetConnectedVideoPinInfo([out] int* VideoWidth, [out] int* VideoHeight, [out] int* VideoAvgTimePerFrame);
	HRESULT GetConnectedAudioPinInfo([out] int* AudioChannels, [out] int* AudioSampleRate, [out] int* AudioBitsPerSample);
	HRESULT SetMediaEventSinkNotifyID([in] LONG_PTR Value);
	HRESULT Is64BitWindows([out] BOOL* Is_64BitWindows);
	HRESULT Is64BitApplication([out] BOOL* Is64_BitApplication);
	HRESULT GetVersion([out] unsigned int* Version);
};

