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

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

?? mjpeg2bmp.cpp

?? 基于WINCE的Webcam程序 基于WINCE的Webcam程序 基于WINCE的Webcam程序 基于WINCE的Webcam程序
?? CPP
字號:
#define INITGUID
#include <windows.h>                 // For all that Windows stuff
#include <stdlib.h>
#include <stdio.h>
#include <imaging.h>
#if _WIN32_WCE >= 500
#include <GdiPlusEnums.h>
#endif
#define GETZONESONLY
#include "CameraCode.h"				// Only needed for ZONE_ constants
#include "StreamFrame.h"

enum CodecType {eDecoder, eEncoder};

#define  NAMEVALENTRY(x)   { (LONG)(x), TEXT(#x) } 

struct NameValuePair {
    LONG pValue;
    TCHAR *szName;
};

//void info (const TCHAR* tszFormat, ...);

IImagingFactory *pImagingFactory = NULL;

//----------------------------------------------------------------------
// InitDisplayFrame 
//
HRESULT InitDisplayFrame (LPCWSTR pszExt)
{
    HRESULT hr;
	BOOL fFound = FALSE;

	// Get length of search extension
	int nLen = pszExt ? lstrlen (pszExt) : 0;
    
    if (FAILED(hr = CoInitializeEx(NULL, COINIT_MULTITHREADED)))
    {
        DEBUGMSG (ZONE_ERROR, (TEXT("CoInitializeEx failed, hr: 0x%08x\r\n"), hr));
        return 1;
    }
    hr = CoCreateInstance(CLSID_ImagingFactory, 
                          NULL, 
                          CLSCTX_INPROC_SERVER, 
                          IID_IImagingFactory, 
                          (void**) &pImagingFactory);
    if (FAILED(hr))
		return hr;
	//
	// Query current installed codecs
	//
	ImageCodecInfo *pCodecInfo;
	UINT uCnt = 0;
	hr = pImagingFactory->GetInstalledDecoders (&uCnt, &pCodecInfo);
	if (SUCCEEDED(hr))
	{
		DEBUGMSG (ZONE_INIT, (TEXT ("Detected %d decoders\r\n"), uCnt));
		for (UINT i = 0; i < uCnt; i++)
		{
			if (nLen && 
				(_wcsnicmp(pCodecInfo[i].FormatDescription, pszExt, nLen) == 0))
				fFound = TRUE;
			DEBUGMSG (ZONE_INIT, (TEXT("Name  >%S<\r\n"), pCodecInfo[i].CodecName));
			DEBUGMSG (ZONE_INIT, (TEXT("Desc  >%S<\r\n\r\n"), pCodecInfo[i].FormatDescription));
		}
		CoTaskMemFree ((PVOID)pCodecInfo);
	}
	// See if we were supposed to find specific support and didn't find it
	if (!hr && nLen && !fFound)
	{
		pImagingFactory->Release();
		hr = ERROR_NOT_SUPPORTED;
	}
	return hr;
}
//----------------------------------------------------------------------
// Frees the imaging library
//
HRESULT ReleaseDisplayFrame ()
{
	HRESULT hr = 0;

	if (pImagingFactory)
	{
		pImagingFactory->Release();
		pImagingFactory = NULL;
	}

	return hr;
}

BYTE MJPG2JPGHdr[440] = {
	// JPEG file header
	0xff,0xd8,					// SOI
	0xff,0xe0,					// APP0
	0x00,0x10,					// APP0 Hdr size
	0x4a,0x46,0x49,0x46,0x00,	// ID string
	0x01,0x01,					// Version
	0x00,						// Bits per type
	0x00, 0x00,					// X density
	0x00, 0x00,					// Y density
	0x00,						// X Thumbnail size
	0x00,						// Y Thumbnail size

	 /* JPEG DHT Segment for YCrCb omitted from MJPG data */
	0xFF,0xC4,0x01,0xA2,
	0x00,0x00,0x01,0x05,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x01,0x00,0x03,0x01,0x01,0x01,0x01,
	0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,
	0x08,0x09,0x0A,0x0B,0x10,0x00,0x02,0x01,0x03,0x03,0x02,0x04,0x03,0x05,0x05,0x04,0x04,0x00,
	0x00,0x01,0x7D,0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12,0x21,0x31,0x41,0x06,0x13,0x51,0x61,
	0x07,0x22,0x71,0x14,0x32,0x81,0x91,0xA1,0x08,0x23,0x42,0xB1,0xC1,0x15,0x52,0xD1,0xF0,0x24,
	0x33,0x62,0x72,0x82,0x09,0x0A,0x16,0x17,0x18,0x19,0x1A,0x25,0x26,0x27,0x28,0x29,0x2A,0x34,
	0x35,0x36,0x37,0x38,0x39,0x3A,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x53,0x54,0x55,0x56,
	0x57,0x58,0x59,0x5A,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x73,0x74,0x75,0x76,0x77,0x78,
	0x79,0x7A,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,
	0x9A,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,
	0xBA,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,
	0xDA,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,
	0xF8,0xF9,0xFA,0x11,0x00,0x02,0x01,0x02,0x04,0x04,0x03,0x04,0x07,0x05,0x04,0x04,0x00,0x01,
	0x02,0x77,0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21,0x31,0x06,0x12,0x41,0x51,0x07,0x61,0x71,
	0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91,0xA1,0xB1,0xC1,0x09,0x23,0x33,0x52,0xF0,0x15,0x62,
	0x72,0xD1,0x0A,0x16,0x24,0x34,0xE1,0x25,0xF1,0x17,0x18,0x19,0x1A,0x26,0x27,0x28,0x29,0x2A,
	0x35,0x36,0x37,0x38,0x39,0x3A,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x53,0x54,0x55,0x56,
	0x57,0x58,0x59,0x5A,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x73,0x74,0x75,0x76,0x77,0x78,
	0x79,0x7A,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x92,0x93,0x94,0x95,0x96,0x97,0x98,
	0x99,0x9A,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,
	0xB9,0xBA,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,
	0xD9,0xDA,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,
	0xF9,0xFA
};

//----------------------------------------------------------------------
// DisplayFrame 
//
HRESULT DisplayFrame (PBYTE pData, DWORD dwPreBuff, DWORD dwSize, HDC hdc, RECT *pRect)
{
	HRESULT hr;
    IImageSink *pImageSink = NULL;
    IImage *pImage = NULL;
    IImageDecoder *pImageDecoder = NULL;
    IImageEncoder *pImageEncoder = NULL;
    IBitmapImage *pBitmapImage = NULL;
    IStream *pStream = NULL;
    ImageInfo ii;
	LPBYTE pLocal = 0;

	if (pImagingFactory == NULL)
		return E_NOINTERFACE;

	if (*pData == 0)
		return 0;

	int MjpegHdrSize = *(pData+4);
	MjpegHdrSize = MjpegHdrSize << 8;
	MjpegHdrSize += *(pData+5)+4;
	if (MjpegHdrSize > 100)
		return -2;

#if 1
	// Slow way copies the data to a seperate heap allocation.  This seems to be needed for the
	// CreateStreamOnHGlobal method because that method looks at the heap block header to determine
	// the size of the data.
	
	// Data is in big endian format
	pLocal = (LPBYTE)LocalAlloc (LPTR, dwSize+512);
	if (!pLocal)
		return -1;

	memcpy (pLocal, MJPG2JPGHdr, sizeof (MJPG2JPGHdr));
	memcpy (pLocal + sizeof (MJPG2JPGHdr), pData + MjpegHdrSize, dwSize - MjpegHdrSize);

    // Create the stream
    hr = CreateStreamOnHGlobal(pLocal, TRUE, &pStream);
#endif
#if 0

	// This way also copies the data but then uses an custom stream
	// interface to expose the data.
	pLocal = (LPBYTE)LocalAlloc (LPTR, dwSize+512);
	if (!pLocal)
		return -1;

	memcpy (pLocal, MJPG2JPGHdr, sizeof (MJPG2JPGHdr));
	memcpy (pLocal + sizeof (MJPG2JPGHdr), pData + MjpegHdrSize, dwSize - MjpegHdrSize);

    // Create the stream
	FrameStream *pfs = new FrameStream (pLocal, dwSize + 512);
	hr = pfs->QueryInterface (__uuidof(IStream)/*IID_IStream*/, (void **)&pStream);
#endif
#if 0
	// Add JPEG header to MJPEG frame data.  We need to also remove the MJPEG info at the start of the frame
	// Data is in big endian format.

	// Expose the data in custom stream interface.

	PBYTE pPreBuff = pData + MjpegHdrSize - sizeof (MJPG2JPGHdr);
	memcpy (pPreBuff, MJPG2JPGHdr, sizeof (MJPG2JPGHdr));

	FrameStream *pfs = new FrameStream (pPreBuff, dwSize + sizeof (MJPG2JPGHdr) - MjpegHdrSize);
	hr = pfs->QueryInterface (__uuidof(IStream)/*IID_IStream*/, (void **)&pStream);
#endif
	__try 
	{
		if (FAILED(hr))
		{
			DEBUGMSG (ZONE_ERROR, (TEXT("Create stream failed, hr: 0x%08x\r\n"), hr));
			goto finish;
		}

		// Get the decoder.  The system chooses the proper decoder
		// from the format of the data in the buffer.
		if (FAILED(hr = pImagingFactory->CreateImageDecoder(pStream, DecoderInitFlagBuiltIn1st, &pImageDecoder)))
		{
			DEBUGMSG (ZONE_ERROR, (TEXT("CreateImageDecoder failed, hr: 0x%08x\r\n"), hr));
			goto finish;
		}

		// Query image info
		if (FAILED(hr = pImageDecoder->GetImageInfo(&ii)))
		{
			DEBUGMSG (ZONE_ERROR, (TEXT("GetImageInfo failed, hr: 0x%08x\r\n"), hr));
			goto finish;
		}

		// Create bitmap of the same size
		if (FAILED(hr = pImagingFactory->CreateNewBitmap(ii.Width, ii.Height, ii.PixelFormat, &pBitmapImage)))
		{
			DEBUGMSG (ZONE_ERROR, (TEXT("CreateNewBitmap failed, hr = 0x%08x\r\n"), hr));
			goto finish;
		}

		// Get the "sink" which is needed by the decoder so it can write the data to the bitmap
		if (FAILED(hr = pBitmapImage->QueryInterface(IID_IImageSink, (void**)&pImageSink)))
		{
			DEBUGMSG (ZONE_ERROR, (TEXT("QueryInterface for ImageSink from BitmapImage failed, hr: 0x%08x\r\n"), hr));
			goto finish;
		}

		// Finally, start the conversion
		if (FAILED(hr = pImageDecoder->BeginDecode(pImageSink, NULL)))
		{
			DEBUGMSG (ZONE_ERROR, (TEXT("BeginDecode into Bitmap Image failed, hr = 0x%08d\r\n"), hr));
			goto finish;
		}

		// Loop as necessary
		while (E_PENDING == (hr = pImageDecoder->Decode()))
			Sleep(100);

		if (hr != S_OK)
		{
			DEBUGCHK ((TEXT("Bad decode hr = %08x\r\n"), hr));
		}
		// Clean up
		hr = pImageDecoder->EndDecode(hr);

		if (FAILED(hr))
		{
			DEBUGMSG (ZONE_DECODING, (TEXT("Decoding failed, hr = 0x%08x\r\n"), hr));
			// If fail to decode, release block
			if (pLocal)
				LocalFree (pLocal);  
			goto finish;
		}
//		DEBUGMSG (ZONE_DECODING, (TEXT("img size %d\r\n"), dwSize));
		DEBUGMSG (1, (TEXT("img size %d\r\n"), dwSize));

		//
		// We have a bitmap at this point.  Get Image interface and draw
		//
		if (FAILED(hr = pBitmapImage->QueryInterface(IID_IImage, (void**)&pImage)))
		{
			DEBUGMSG (ZONE_ERROR, (TEXT("QueryInterface for Image from BitmapImage failed, hr: 0x%08x\r\n"), hr));
			goto finish;
		}

		hr = pImage->Draw (hdc, pRect, NULL);

	}
	__except (EXCEPTION_EXECUTE_HANDLER) 
	{
		DEBUGMSG (ZONE_ERROR, (TEXT ("Exception decoding image \r\n")));
	}
finish:
	if (pImage)
		pImage->Release();
	pImage = NULL;  // This is already deleted above, but just to make sure...

	if (pImageSink)
		pImageSink->Release();
	pImageSink = NULL;

    if (pBitmapImage)
        pBitmapImage->Release();
	pBitmapImage = NULL;
        
    if (pImageSink)
        pImageSink->Release();
	pImageSink = NULL;

    if (pImageDecoder)
        pImageDecoder->Release();
	pImageDecoder = NULL;
        
    if (pStream)
        pStream->Release();
	pStream = NULL;

    if (pImageEncoder)
        pImageEncoder->Release();
	pImageEncoder = NULL;

//	LocalFree (pLocal);  Seems to be released by the ImageDecoder object
	return hr;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线看日韩精品电影| 亚洲午夜电影在线| 欧美一区二区免费视频| 在线免费观看成人短视频| 91丨porny丨国产入口| 成人免费观看男女羞羞视频| 国产大陆a不卡| 成人精品亚洲人成在线| 成人免费毛片嘿嘿连载视频| 成人免费黄色在线| 91浏览器入口在线观看| 日本韩国一区二区三区| 欧美日韩中字一区| 日韩午夜在线观看| 成年人网站91| 欧美中文字幕一区| 欧美性猛片aaaaaaa做受| 色8久久人人97超碰香蕉987| 一本一道波多野结衣一区二区| 91免费在线视频观看| 在线观看亚洲专区| 欧美一区二区三区免费| 国产亚洲一本大道中文在线| 国产精品久久综合| 亚洲影院久久精品| 狠狠色丁香婷综合久久| 成人黄色软件下载| 欧美日韩国产区一| 2020国产精品| 亚洲精品日日夜夜| 乱一区二区av| 99久久久无码国产精品| 欧美高清视频一二三区| 久久久av毛片精品| 亚洲综合精品久久| 国产成人在线视频免费播放| 色综合久久九月婷婷色综合| 欧美一级精品大片| 亚洲免费观看高清| 极品美女销魂一区二区三区免费 | 国产精品一区二区久激情瑜伽| 国产.欧美.日韩| 在线免费观看日韩欧美| 欧美精品一区二区精品网| 国产精品免费aⅴ片在线观看| 亚洲一区在线播放| 国产精品白丝av| 欧美精选午夜久久久乱码6080| 国产亚洲一区二区三区四区| 亚洲一区二区不卡免费| 国产99久久久精品| 欧美一区三区二区| 亚洲黄色尤物视频| 国产成人超碰人人澡人人澡| 欧美日韩国产大片| 成人欧美一区二区三区黑人麻豆 | 精品一区二区国语对白| 色狠狠av一区二区三区| 国产视频视频一区| 免费精品99久久国产综合精品| 成人午夜视频在线| 久久一区二区视频| 日韩制服丝袜av| 欧美视频在线播放| 亚洲天堂av一区| 大白屁股一区二区视频| 亚洲精品在线网站| 麻豆精品一区二区三区| 3d成人h动漫网站入口| 亚洲精品第一国产综合野| 处破女av一区二区| 久久久.com| 国产xxx精品视频大全| 久久网这里都是精品| 精品一区二区av| 精品国产免费久久| 久久99国产精品久久| 日韩欧美中文一区| 男人的j进女人的j一区| 日韩色在线观看| 毛片av一区二区| 日韩一区二区三区高清免费看看 | 久草热8精品视频在线观看| 91精品国产91久久久久久一区二区 | 久久综合久久鬼色中文字| 蜜桃视频一区二区| 久久久国产一区二区三区四区小说| 久久精品国产在热久久| 久久亚洲综合色一区二区三区| 日本女优在线视频一区二区| 欧美一二区视频| 精品亚洲欧美一区| 中文天堂在线一区| 日本二三区不卡| 亚洲国产精品自拍| 精品少妇一区二区三区视频免付费 | 国产老肥熟一区二区三区| 国产日韩精品一区二区浪潮av | 国产精品你懂的在线| av一区二区三区| 亚洲一区中文在线| 欧美一区午夜精品| 成人高清视频在线观看| 亚洲人成人一区二区在线观看 | 久久久不卡影院| 色综合一个色综合亚洲| 日韩影院在线观看| 久久日韩精品一区二区五区| 成人福利视频网站| 亚洲一区二区三区中文字幕| 欧美岛国在线观看| 成人免费视频一区| 亚洲mv大片欧洲mv大片精品| 欧美本精品男人aⅴ天堂| 懂色av一区二区在线播放| 亚洲一区二区三区小说| ww亚洲ww在线观看国产| 91色porny蝌蚪| 老色鬼精品视频在线观看播放| 国产精品乱码久久久久久| 欧美美女bb生活片| 成人国产精品免费| 美腿丝袜在线亚洲一区| 亚洲视频1区2区| 久久综合久久综合九色| 欧美www视频| 欧美性极品少妇| 国产成人午夜高潮毛片| 天天av天天翘天天综合网色鬼国产| 欧美精品一区二区三区在线| 欧美综合一区二区| aaa亚洲精品一二三区| 久久国产视频网| 午夜不卡在线视频| 亚洲免费观看视频| 最好看的中文字幕久久| 久久影院午夜论| 日韩欧美在线123| 欧美日韩二区三区| 欧洲精品一区二区| 91亚洲精品一区二区乱码| 国产激情91久久精品导航| 另类欧美日韩国产在线| 婷婷成人综合网| 亚洲图片自拍偷拍| 亚洲乱码国产乱码精品精98午夜 | 麻豆精品在线看| 日韩精品乱码av一区二区| 一区二区三区国产豹纹内裤在线| 国产精品天美传媒沈樵| 国产亚洲自拍一区| 亚洲精品在线电影| 精品国产一区二区三区四区四| 日韩一级大片在线| 日韩网站在线看片你懂的| 91精品国产乱码| 日韩视频免费直播| 日韩一二三四区| 精品88久久久久88久久久| 精品日韩在线观看| 欧美精品一区二区不卡 | 国产成人欧美日韩在线电影| 久久99精品一区二区三区三区| 舔着乳尖日韩一区| 男女激情视频一区| 在线观看视频一区| 91免费精品国自产拍在线不卡| 成人久久久精品乱码一区二区三区| 国产盗摄精品一区二区三区在线 | 午夜久久久影院| 日韩激情视频网站| 精品一区二区三区在线播放视频| 国产在线精品一区二区不卡了| 国产酒店精品激情| 成人爱爱电影网址| 色哟哟在线观看一区二区三区| 在线观看不卡视频| 欧美一区国产二区| 久久综合999| 亚洲人成网站影音先锋播放| 亚瑟在线精品视频| 国产美女视频一区| 色美美综合视频| 91精品国产色综合久久不卡电影| 久久久久久久久99精品| 亚洲色图清纯唯美| 麻豆91在线看| 91美女在线观看| 日韩视频123| 日韩美女视频19| 久久国产精品色婷婷| 99精品桃花视频在线观看| 欧美浪妇xxxx高跟鞋交| 久久尤物电影视频在线观看| 亚洲视频资源在线| 日韩专区一卡二卡| 成人av电影在线播放| 91精品一区二区三区久久久久久 | 成人av午夜影院| 欧美肥妇bbw|