📄 mvframe.cpp
字号:
// Frame.cpp - by Robin Hewitt, 2004
// http://www.robinhewitt.com/mavis
// This is free software. See license at the bottom
// of this file for terms of use.
//
//////////////////////////////////////////////////////////////
// Implementation of the Frame class
//
#include "MVFrame.h"
#include "MavisErr.h"
#define NDEBUG
#include <assert.h>
MVFrame::MVFrame() : pFrame(0)
{
defaultValues();
// get handle to framegrabber dll
fgLib = LoadLibrary("fgClient");
//fgLib = LoadLibrary("bmpReader"); // reads from file
if(!fgLib) throw MavisErr( "Can't link to frame-capture server" );
// load dll's function addresses
fgWidthAdd = (FGPROC1)GetProcAddress(fgLib, "getWidth");
fgHeightAdd = (FGPROC1)GetProcAddress(fgLib, "getHeight");
fgSizeAdd = (FGPROC1)GetProcAddress(fgLib, "getFrameSize");
fgFrameAdd = (FGPROC2)GetProcAddress(fgLib, "getFrame");
// make sure function addresses are valid
if(!fgWidthAdd) throw MavisErr( "Link to fgClient.getWidth() method failed" );
if(!fgHeightAdd) throw MavisErr( "Link to fgClient.getHeight() method failed" );
if(!fgSizeAdd) throw MavisErr( "Link to fgClient.getFrameSize() method failed" );
if(!fgFrameAdd) throw MavisErr( "Link to fgClient.getFrame() method failed" );
// get frame-size data
ImgSize_t sz;
sz.w = (fgWidthAdd)();
sz.h = (fgHeightAdd)();
bufSize = (fgSizeAdd)();
nPixels = sz.w * sz.h;
// make the frame object
pFrame = new VideoFrame(sz);
// pull in one frame to synchronize with capture server
(fgFrameAdd)(pFrame->getData(), bufSize);
}
VideoFrame * MVFrame::nextFrame()
{
(fgFrameAdd)(pFrame->getData(), bufSize);
return pFrame;
}
void MVFrame::defaultValues()
{
// set all default values
bufSize = 0;
fgLib = 0;
fgWidthAdd = 0;
fgHeightAdd = 0;
fgSizeAdd = 0;
fgFrameAdd = 0;
}
MVFrame::~MVFrame()
{
// release the framegrabber dll
if(fgLib) FreeLibrary(fgLib);
// free memory
if(pFrame) delete pFrame;
pFrame = 0;
}
///////////////////////////////////////////////////////////////////////////////////////
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
//
// By downloading, copying, installing or using the software you agree to this
// license. If you do not agree to this license, do not download, install, copy or
// use the software.
//
//
// Mavis License Agreement
//
// Copyright (c) 2004, Robin Hewitt (http://www.robin-hewitt.com).
// Third party copyrights are property of their respective owners.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
// * Redistributions of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
//
// * Redistributions in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
//
// This software is provided "as is" and any express or implied warranties, including,
// but not limited to, the implied warranties of merchantability and fitness for a
// particular purpose are disclaimed. In no event shall the authors or contributors be
// liable for any direct, indirect, incidental, special, exemplary, or consequential
// damages (including, but not limited to, procurement of substitute goods or services;
// loss of use, data, or profits; or business interruption) however caused and on any
// theory of liability, whether in contract, strict liability, or tort (including
// negligence or otherwise) arising in any way out of the use of this software, even
// if advised of the possibility of such damage.
///////////////////////////////////////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -