亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mexddgrab.cpp

?? 用matlab進行視頻讀取的程序
?? CPP
字號:
/***************************************************
This is the matlab interface code to the grabber code.
It just wraps the grabber functions and does some error
conversion.

Written by Micah Richert.
07/14/2005
**************************************************/

#include "mex.h"
#include "DDGrab.h"

TCHAR str[200]; // 

TCHAR* message(HRESULT hr)
{
	if (hr == S_OK)
	{
		return "";
	} else {
		if (AMGetErrorText(hr,str,200) != 0) return str;
		return "Unknown error";
	}
}

DDGrabber DDG;

void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
	if (nrhs < 1 || !mxIsChar(prhs[0])) mexErrMsgTxt("First parameter must be the command (a string)");

	char cmd[100];
	mxGetString(prhs[0],cmd,100);

	if (!_stricmp("buildGraph",cmd))
	{
		if (nrhs < 2 || !mxIsChar(prhs[1])) mexErrMsgTxt("buildGraph: second parameter must be the filename (as a string)");
		if (nlhs > 0) mexErrMsgTxt("buildGraph: there are no outputs");
		int filenamelen = mxGetN(prhs[1])+1;
		char* filename = new char[filenamelen];
		if (!filename) mexErrMsgTxt("buildGraph: out of memory");
		mxGetString(prhs[1],filename,filenamelen);

		char* errmsg =  message(DDG.buildGraph(filename));
		free(filename);

		if (strcmp("",errmsg)) mexErrMsgTxt(errmsg);
		plhs[0] = NULL;
	} else if (!_stricmp("doCapture",cmd)) {
		if (nlhs > 0) mexErrMsgTxt("doCapture: there are no outputs");
		char* errmsg =  message(DDG.doCapture());
		if (strcmp("",errmsg)) mexErrMsgTxt(errmsg);
		plhs[0] = NULL;
	} else if (!_stricmp("getVideoInfo",cmd)) {
		if (nrhs < 2 || !mxIsNumeric(prhs[1])) mexErrMsgTxt("getVideoInfo: second parameter must be the video stream id (as a number)");
		if (nlhs > 4) mexErrMsgTxt("getVideoInfo: there are only 4 output values: widht, height, nrFramesCaptured, nrFramesTotal");

		unsigned int id = mxGetScalar(prhs[1]);
		int width,height,nrFramesCaptured,nrFramesTotal;
		char* errmsg =  message(DDG.getVideoInfo(id, &width, &height, &nrFramesCaptured, &nrFramesTotal));

		if (strcmp("",errmsg)) mexErrMsgTxt(errmsg);

		if (nlhs >= 1) {plhs[0] = mxCreateDoubleMatrix(1,1,mxREAL); mxGetPr(plhs[0])[0] = width; }
		if (nlhs >= 2) {plhs[1] = mxCreateDoubleMatrix(1,1,mxREAL); mxGetPr(plhs[1])[0] = height; }
		if (nlhs >= 3) {plhs[2] = mxCreateDoubleMatrix(1,1,mxREAL); mxGetPr(plhs[2])[0] = nrFramesCaptured; }
		if (nlhs >= 4) {plhs[3] = mxCreateDoubleMatrix(1,1,mxREAL); mxGetPr(plhs[3])[0] = nrFramesTotal; }
	} else if (!_stricmp("getAudioInfo",cmd)) {
		if (nrhs < 2 || !mxIsNumeric(prhs[1])) mexErrMsgTxt("getAudioInfo: second parameter must be the audio stream id (as a number)");
		if (nlhs > 5) mexErrMsgTxt("getAudioInfo: there are only 5 output values: nrChannels, rate, bits, nrFramesCaptured, nrFramesTotal");

		unsigned int id = mxGetScalar(prhs[1]);
		int nrChannels,rate,bits,nrFramesCaptured,nrFramesTotal;
		char* errmsg =  message(DDG.getAudioInfo(id, &nrChannels, &rate, &bits, &nrFramesCaptured, &nrFramesTotal));

		if (strcmp("",errmsg)) mexErrMsgTxt(errmsg);

		if (nlhs >= 1) {plhs[0] = mxCreateDoubleMatrix(1,1,mxREAL); mxGetPr(plhs[0])[0] = nrChannels; }
		if (nlhs >= 2) {plhs[1] = mxCreateDoubleMatrix(1,1,mxREAL); mxGetPr(plhs[1])[0] = rate; }
		if (nlhs >= 3) {plhs[2] = mxCreateDoubleMatrix(1,1,mxREAL); mxGetPr(plhs[2])[0] = bits; }
		if (nlhs >= 4) {plhs[3] = mxCreateDoubleMatrix(1,1,mxREAL); mxGetPr(plhs[3])[0] = nrFramesCaptured; }
		if (nlhs >= 5) {plhs[4] = mxCreateDoubleMatrix(1,1,mxREAL); mxGetPr(plhs[4])[0] = nrFramesTotal; }
	} else if (!_stricmp("getCaptureInfo",cmd)) {
		if (nlhs > 2) mexErrMsgTxt("getCaptureInfo: there are only 2 output values: nrVideo, nrAudio");

		int nrVideo, nrAudio;
		DDG.getCaptureInfo(&nrVideo, &nrAudio);

		if (nlhs >= 1) {plhs[0] = mxCreateDoubleMatrix(1,1,mxREAL); mxGetPr(plhs[0])[0] = nrVideo; }
		if (nlhs >= 2) {plhs[1] = mxCreateDoubleMatrix(1,1,mxREAL); mxGetPr(plhs[1])[0] = nrAudio; }
	} else if (!_stricmp("getVideoFrame",cmd)) {
		if (nrhs < 3 || !mxIsNumeric(prhs[1]) || !mxIsNumeric(prhs[2])) mexErrMsgTxt("getVideoFrame: second parameter must be the audio stream id (as a number) and third parameter must be the frame number");
		if (nlhs > 1) mexErrMsgTxt("getVideoFrame: there are only 1 output value: data");

		unsigned int id = mxGetScalar(prhs[1]);
		int frameNr = mxGetScalar(prhs[2]);
		char* data;
		int nrBytes;
		int dims[] = {1,1};
		char* errmsg =  message(DDG.getVideoFrame(id, frameNr, &data, &nrBytes));

		if (strcmp("",errmsg)) mexErrMsgTxt(errmsg);

		dims[0] = nrBytes;
		plhs[0] = mxCreateNumericArray(2, dims, mxUINT8_CLASS, mxREAL); // empty 2d matrix
		memcpy(mxGetPr(plhs[0]),data,nrBytes);
		free(data);
	} else if (!_stricmp("getAudioFrame",cmd)) {
		if (nrhs < 3 || !mxIsNumeric(prhs[1]) || !mxIsNumeric(prhs[2])) mexErrMsgTxt("getAudioFrame: second parameter must be the audio stream id (as a number) and third parameter must be the frame number");
		if (nlhs > 1) mexErrMsgTxt("getAudioFrame: there are only 1 output value: data");

		unsigned int id = mxGetScalar(prhs[1]);
		int frameNr = mxGetScalar(prhs[2]);
		char* data;
		int nrBytes;
		int dims[] = {1,1};
		char* errmsg =  message(DDG.getAudioFrame(id, frameNr, &data, &nrBytes));

		if (strcmp("",errmsg)) mexErrMsgTxt(errmsg);

		dims[0] = nrBytes;
		plhs[0] = mxCreateNumericArray(2, dims, mxUINT8_CLASS, mxREAL); // empty 2d matrix
		memcpy(mxGetPr(plhs[0]),data,nrBytes);
		free(data);
	} else if (!_stricmp("setFrames",cmd)) {
		if (nrhs < 2 || !mxIsDouble(prhs[1])) mexErrMsgTxt("setFrames: second parameter must be the frame numbers (as doubles)");
		if (nlhs > 0) mexErrMsgTxt("setFrames: there are no outputs");
		int nrFrames = mxGetN(prhs[1]) * mxGetM(prhs[1]);
		int* frameNrs = new int[nrFrames];
		if (!frameNrs) mexErrMsgTxt("setFrames: out of memory");
		double* data = mxGetPr(prhs[1]);
		for (int i=0; i<nrFrames; i++) frameNrs[i] = data[i];

		DDG.setFrames(frameNrs, nrFrames);
		plhs[0] = NULL;
	} else if (!_stricmp("disableVideo",cmd)) {
		if (nlhs > 0) mexErrMsgTxt("disableVideo: there are no outputs");
		DDG.disableVideo();
		plhs[0] = NULL;
	} else if (!_stricmp("disableAudio",cmd)) {
		if (nlhs > 0) mexErrMsgTxt("disableAudio: there are no outputs");
		DDG.disableAudio();
		plhs[0] = NULL;
	} else if (!_stricmp("cleanUp",cmd)) {
		if (nlhs > 0) mexErrMsgTxt("cleanUp: there are no outputs");
		DDG.cleanUp();
		plhs[0] = NULL;
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩免费观看2025年上映的电影| 亚洲一区二区美女| 国内偷窥港台综合视频在线播放| 精品精品国产高清a毛片牛牛| 人禽交欧美网站| 久久综合久色欧美综合狠狠| 激情五月婷婷综合网| 国产天堂亚洲国产碰碰| 成人短视频下载 | 欧美成人精精品一区二区频| 日本不卡一区二区三区高清视频| 日韩女优毛片在线| 国产精品一区二区在线观看网站| 欧美国产精品一区| 94色蜜桃网一区二区三区| 亚洲综合视频在线观看| 日韩精品在线看片z| 国产精品香蕉一区二区三区| 亚洲欧美另类久久久精品| 欧美三级日本三级少妇99| 美脚の诱脚舐め脚责91| 国产精品久久久99| 欧美日本国产视频| 国产成a人亚洲| 亚洲综合久久久| 日韩欧美中文字幕精品| 成人激情免费视频| 日日夜夜精品免费视频| 国产色综合久久| 欧美视频你懂的| 国产精品综合久久| 亚洲国产成人tv| 国产午夜久久久久| 欧美日韩一区成人| 成人精品在线视频观看| 日本不卡视频一二三区| 国产精品国产三级国产aⅴ无密码| 欧美午夜精品久久久| 国产精品一区不卡| 天堂在线亚洲视频| 亚洲人成亚洲人成在线观看图片 | 韩国一区二区视频| 亚洲免费观看高清完整版在线观看熊 | 久久99精品久久久久久久久久久久| 国产精品国产三级国产| 日韩欧美不卡在线观看视频| 色菇凉天天综合网| 国产精品一区二区你懂的| 日韩精品色哟哟| 亚洲人一二三区| 国产香蕉久久精品综合网| 欧美一级日韩一级| 91黄色小视频| 成人av手机在线观看| 免费高清不卡av| 午夜视黄欧洲亚洲| 亚洲中国最大av网站| 一区二区中文视频| 国产欧美一区二区三区网站| 91精品国产91久久久久久一区二区| 91丨九色丨黑人外教| 国产成人激情av| 国产综合色在线视频区| 日本vs亚洲vs韩国一区三区二区| 亚洲欧美偷拍另类a∨色屁股| 国产精品无遮挡| 国产色婷婷亚洲99精品小说| 久久女同精品一区二区| 精品国产乱码久久久久久久| 欧美一级搡bbbb搡bbbb| 欧美一级片免费看| 91精品欧美久久久久久动漫| 欧美日韩dvd在线观看| 91福利小视频| 欧洲一区在线电影| 欧美在线高清视频| 欧美性猛交xxxxxxxx| 在线看日韩精品电影| 一本大道久久a久久综合| 9色porny自拍视频一区二区| jlzzjlzz国产精品久久| av亚洲产国偷v产偷v自拍| va亚洲va日韩不卡在线观看| 成人手机电影网| 不卡一区二区三区四区| www.99精品| 一本色道久久综合亚洲91| 国产成人亚洲精品狼色在线 | 激情小说亚洲一区| 国产麻豆视频精品| 国产精品一区二区在线看| 不卡一区二区中文字幕| 色偷偷久久人人79超碰人人澡| 色呦呦网站一区| 欧美日韩午夜在线| 日韩欧美一区二区三区在线| 精品粉嫩超白一线天av| 日本一区二区久久| 亚洲乱码国产乱码精品精可以看 | 香蕉久久夜色精品国产使用方法| 午夜伊人狠狠久久| 久久99久久精品欧美| 国产99久久久国产精品免费看 | 韩国成人在线视频| 成人丝袜高跟foot| 欧美性三三影院| 久久久综合视频| 日韩毛片精品高清免费| 国产精品传媒在线| 亚洲gay无套男同| 日本视频免费一区| 国产精品99久久久久久久vr| 99久久精品一区二区| 欧美日韩一区二区不卡| 久久亚洲春色中文字幕久久久| 国产精品妹子av| 亚洲成国产人片在线观看| 久久99精品一区二区三区三区| 不卡欧美aaaaa| 日韩欧美国产麻豆| 亚洲天堂av老司机| 久久成人久久鬼色| 91精品福利视频| 337p粉嫩大胆色噜噜噜噜亚洲 | 亚洲精品一区二区三区99| 久久综合精品国产一区二区三区| 国产精品午夜在线| 国产成人三级在线观看| 91麻豆精品国产自产在线| 成人免费视频国产在线观看| 国产精品综合久久| 国产福利精品一区| 中文字幕一区二区三区在线观看| 国产剧情一区二区| 欧美成人伊人久久综合网| 中文字幕电影一区| 国产精品一区二区在线观看网站| 麻豆精品一二三| 亚洲男同性恋视频| 久久99国产精品免费| 欧美日韩免费在线视频| 日韩欧美黄色影院| 天堂av在线一区| 国产精品系列在线观看| 国产亚洲欧美日韩日本| 日韩av一级片| 欧美一级在线免费| 不卡电影一区二区三区| 国产亚洲自拍一区| 95精品视频在线| 国产毛片精品国产一区二区三区| 亚洲成人7777| 欧美一区二区三区性视频| 精品亚洲国内自在自线福利| 国产精品免费av| 色噜噜狠狠色综合欧洲selulu| 亚洲精品免费电影| 91精品国产91久久综合桃花| 午夜欧美2019年伦理| 丝袜美腿亚洲综合| 视频一区中文字幕| 欧美日韩激情一区二区三区| 日本成人在线视频网站| 91亚洲精品久久久蜜桃网站| 亚洲国产精品久久久久婷婷884 | 国产精品视频看| 国产又黄又大久久| 国产精品久久久久久久久久久免费看| 日韩精品中午字幕| 国产99一区视频免费| 日日夜夜免费精品| 香蕉久久夜色精品国产使用方法| 久久久久久电影| 欧美大片一区二区| 国产91清纯白嫩初高中在线观看 | 精品成a人在线观看| 久久蜜桃av一区精品变态类天堂 | 男女男精品网站| 7777女厕盗摄久久久| 成人综合在线网站| 久久精品久久综合| 亚洲一区二区三区在线播放| 国产精品午夜在线| 3d成人h动漫网站入口| 成人av免费观看| 99在线精品观看| ...中文天堂在线一区| 国产盗摄视频一区二区三区| 国产日韩精品一区二区三区在线| 高清在线不卡av| 一区二区三区在线视频免费| 欧美高清视频不卡网| 精品无人码麻豆乱码1区2区| 国产精品久久久久毛片软件| 日本韩国欧美在线| 美女网站一区二区| 中文字幕制服丝袜成人av| 欧美私人免费视频| 亚洲gay无套男同| 久久99精品国产麻豆婷婷洗澡|