Система регистрации речи диспетчерских переговоров
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
ick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure TAPICall1Reply(Sender: TObject; AsyncFunc: TAsyncFunc;
Error: Cardinal);
procedure SpeedButton12Click(Sender: TObject);
procedure TAPICall1StateBusy(Sender: TObject; BusyMode: TLineBusyMode;
Rights: TLineCallPrivilege);
procedure HeadSetVolUpDownChangingEx(Sender: TObject;
var AllowChange: Boolean; NewValue: Smallint;
Direction: TUpDownDirection);
procedure HeadSetGainUpDownChangingEx(Sender: TObject;
var AllowChange: Boolean; NewValue: Smallint;
Direction: TUpDownDirection);
procedure HandSetVolUpDownChangingEx(Sender: TObject;
var AllowChange: Boolean; NewValue: Smallint;
Direction: TUpDownDirection);
procedure HandSetGainUpDownChangingEx(Sender: TObject;
var AllowChange: Boolean; NewValue: Smallint;
Direction: TUpDownDirection);
procedure TAPICall1StateOffering(Sender: TObject;
OfferingMode: TLineOfferingModes; Rights: TLineCallPrivilege);
procedure TAPICall1StateIdle(Sender: TObject;
Rights: TLineCallPrivilege);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
FPulse : boolean;{признак импульсного набора номера}
FAutoAnswer : boolean;{признак автоответа модема}
ConfigFile : TIniFile;{переменная инициализационного файла}
FTimeReg : integer;{Время регистрации}
FTimeCounter : integer;{счетчик времени}
VG : array[1..4] of integer;{массив с настройками телефонной
гарнитуры}
{******************Для работы со звуковыми данными*************************************************************}
FWaveInID : DWORD;{индификатор Wave устройства}
FWaveFormat : PWAVEFORMATEX;{указатель на структуру ТWAVEFORMATEX
(формата звуковых данных)}
FTotalWaveSize : DWORD;{ Номер записанных выборок }
FByteDataSize : DWORD;{ Накапливаемый размер записанных данных}
FDiskFreeSpace : DWORD;{Свободное пространство для временного файла }
FWaveHdr : array [0..1] of PWAVEHDR;{ Точки доступа к wav информации
заголовка}
FWaveMem : array [0..1] of PChar;{Точки доступа к wav буферам }
FBufIndex : Integer;{ Номер буфера который добавляется для использования}
FWaveIn : HWAVEIN;//Маркер{Дескриптор} устройства для того, чтобы
//делать запись
FWaveOut : HWAVEOUT;//Маркер{Дескриптор} устройства для проигрывания звука
FMaxFmtSize : DWORD;// наибольший размер формата, требуемый для сжатия
FFormatDesc : String;// Описание формата
FFormatTag : String;// Описание тэга формата
FDeviceOpened : Boolean;// состояние открытия устройства
FRecorderMode : TRecorderMode;//Режим рекордера
//записи/проигрывания/не активности
FWaveBufSize : DWORD;// Размер буфера
FFilename : String;// Имя файла, чтобы сохранить WAV
FMoreToPlay : Boolean; //признак наличия звуковых данных, чтобы проигрывать
FRecordedData : Boolean;// мы сделали запись данных
FTmpFileName : String;//имя временного WAV файла
FTmpFileHandle : HFILE; // Маркер{Дескриптор} к временному WAV файлу
//==============работа с временым файлом========================================
function OpenTmpFile : Integer; // Открытие временного файла для чтения.
function CreateTmpFile : integer; // Создание временного файла чтобы писать
//wav данные.
procedure DeleteTmpFile; // Удаление временного wav файла.
procedure CloseTmpFile; // Закрытие временного файла содержащего недавно
//записаные данные.
//==================работа с записью============================================
procedure StopWaveRecord;// Остановка записи.
function StartWaveRecord : Integer;// Подготовка заголовков, добавление
//буфера, подготовка показа, и начало записи.
procedure InitWaveHeaders;// Обнуляет заголовки wav и инициализирует
//указатели данных и буферные длины
procedure CloseWaveDeviceRecord;//Закрытие временного файл и устройства,
//делающего запись.
procedure UpdateLength(BytePosition : DWORD; BytePositiontotal : DWORD);//
// Обновление на экране числа записанных байт
function AddNextBuffer : integer;// Добавление буфера к очереди и
//переключение индекса буфера
procedure UpdateRecordDisplay;// обновления количества записанных байтов
//================сохранение файла==============================================
function SaveWaveFile : integer;// Сохранение wav файла
procedure WFerror(mmfp : HMMIO; const msg : String); // Закрытие wav файла,
//вывод сообщения об ошибках
function CopyDataToWaveFile(mmfp : HMMIO) : integer;// Копирование wav данных
//из временного файла в wav файл
//======================получение и установка кодеков===========================
function GetWaveFormat : integer; //функция вызывающая визуальный выбор кодека
function GetFormatTagDetails(wFormatTag : WORD) : integer; // Получение
//подробности тэга формата, и сохранение строкового описания.
//=========================инициализация========================================
function InitWaveRecorder : integer;//Размещение формата и заголовков wav,
//буфера данных, и получение временного имени файла
function AllocWaveFormatEx : Integer;//Размещение и захват структуры WAVEFORMATEX,
//основанную на максимальном размере формата согласно ACM.
function GetFormatDetails(pfmtin : PWAVEFORMATEX) : integer; // Получение
//подробности формата, и сохранение строкового описания.
function AllocWaveHeader : integer; //размещение в памяти заголовка wave
function AllocPCMBuffers : Integer;//размещение wave буфера в памяти
//========================завершение============================================
procedure DestroyWaveRecorder; // Освобождение памяти, связанной с буферами wav.
procedure FreeWaveFormatEx; // Освобождение WAVEFORMATEX буфера
procedure FreeWaveHeader; //Освобождение памяти заголовка wav.
procedure FreePCMBuffers; //Освобождение памяти wav.
//===================проигрывание звука=========================================
function ReadWaveFile : Integer;//Чтение wav файла
function CopyWaveToTempFile(mmfp : HMMIO; datasize : DWORD) : Integer;//
//Копирование данных из wav файла RIFF во временый файл.
function StartWavePlay : Integer;//Под