AudRecordLib
|
00001 00007 #ifndef AUDRECORDCLI_AUDRECORDWRAP_H 00008 #define AUDRECORDCLI_AUDRECORDWRAP_H 00009 00010 #pragma once 00011 00012 #include "EndpointWrap.h" 00013 #include "CodecWrap.h" 00014 #include "InterfaceWrap.h" 00015 00017 namespace AudRecordCLI 00018 { 00019 namespace IServ = System::Runtime::InteropServices; 00020 00021 [IServ::StructLayout(IServ::LayoutKind::Sequential)] 00023 public ref struct AudRecordStats 00024 { 00026 ULONGLONG qwSampleCount; 00028 ULONGLONG qwByteCount; 00030 ULONGLONG qwDroppedSampleCount; 00032 ULONGLONG qwDroppedByteCount; 00034 DWORD dwCurrentBitrate; 00036 DWORD dwAverageBitrate; 00038 DWORD dwExpectedBitrate; 00040 DWORD dwCurrentSampleRate; 00042 DWORD dwAverageSampleRate; 00044 DWORD dwExpectedSampleRate; 00045 }; 00046 00048 public enum class AudPausedState 00049 { 00051 AudPaused, 00053 AudRecording 00054 }; 00055 00057 public ref class Recorder 00058 { 00059 internal: 00061 IAudRecord* pNativeRecord; 00063 Object^ wrapObj; 00064 Recorder(IAudRecord* pRecord); 00065 public: 00066 void Record(Endpoint^ client); 00067 void ChangeCodec(CodecConfig^ config); 00068 AudPausedState TogglePause(); 00069 AudPausedState QueryPause(); 00070 void Stop(); 00071 IntPtr AddFileTarget(String^ fileName); 00072 IntPtr AddNetworkBroadcastTarget(DWORD% port, DWORD maxConnections, bool wantUrl, String^% url); 00073 IntPtr AddCustomTarget(ITargetSink^ pTarget); 00074 void RemoveTarget(IntPtr pCookie); 00075 AudRecordStats^ GetStatistics(); 00076 00077 static Recorder^ Create(CodecConfig^ initialConfig); 00078 }; 00079 } 00080 00083 #endif