⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mvframe.cpp

📁 机器人程序
💻 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 + -