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

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

?? cpi_stream_internet.c

?? VC++視頻開發實例集錦(包括“遠程視頻監控”"語音識別系統"等13個經典例子)
?? C
字號:
#include "stdafx.h"
#include "globals.h"
#include "CPI_Stream.h"
#include "CPI_CircleBuffer.h"
#include "CPI_Player_Messages.h"


#define CIC_STREAMBUFFERSIZE		0x40000
#define CIC_PREBUFFERAMOUNT			0x8000
#define CIC_READCHUNKSIZE			0x1000

typedef struct _CPs_BufferFillerContext
{
    char* m_pcFlexiURL;
    CPs_CircleBuffer* m_pCircleBuffer;
    BOOL m_bTerminate;
    HWND m_hWndNotify;


} CPs_BufferFillerContext;

typedef struct _CPs_InStream_Internet
{
    CPs_CircleBuffer* m_pCircleBuffer;
    HANDLE m_hFillerThread;
    CPs_BufferFillerContext* m_pBufferFillContext;

} CPs_InStream_Internet;



void CPSINET_Uninitialise(CPs_InStream* pStream);
BOOL CPSINET_Read(CPs_InStream* pStream, void* pDestBuffer, const unsigned int iBytesToRead, unsigned int* piBytesRead);
void CPSINET_Seek(CPs_InStream* pStream, const unsigned int iNewOffset);
UINT CPSINET_Tell(CPs_InStream* pStream);
UINT CPSINET_GetLength(CPs_InStream* pStream);
BOOL CPSINET_IsSeekable(CPs_InStream* pStream);
////////////////////////////////////////////////////////////////////////////////
unsigned int _stdcall EP_FillerThread(void* _pContext)
{
    CPs_BufferFillerContext* pContext = (CPs_BufferFillerContext*)_pContext;
    HINTERNET hInternet;
    HINTERNET hURLStream;
    DWORD dwTimeout;
    BOOL bStreamComplete = FALSE;
    INTERNET_BUFFERS internetbuffer;
    BYTE bReadBuffer[CIC_READCHUNKSIZE];

    CP_CHECKOBJECT(pContext);

    PostMessage(pContext->m_hWndNotify, CPNM_SETSTREAMINGSTATE, (WPARAM)TRUE, (LPARAM)0);

    hInternet = InternetOpen(	"CoolPlayer",
                              INTERNET_OPEN_TYPE_PRECONFIG,
                              NULL, NULL, 0L);
    if(hInternet == NULL)
    {
        pContext->m_pCircleBuffer->SetComplete(pContext->m_pCircleBuffer);
        CP_TRACE0("EP_FillerThread::NoInternetOpen");
        return 0;
    }

    dwTimeout = 2000;
    InternetSetOption(hInternet, INTERNET_OPTION_CONNECT_TIMEOUT, &dwTimeout, sizeof(dwTimeout));

    hURLStream = InternetOpenUrl(	hInternet,
                                  pContext->m_pcFlexiURL,
                                  NULL,
                                  0,
                                  INTERNET_FLAG_NO_CACHE_WRITE
                                  | INTERNET_FLAG_PRAGMA_NOCACHE,
                                  0);
    if(hURLStream == NULL)
    {
        InternetCloseHandle(hInternet);
        pContext->m_pCircleBuffer->SetComplete(pContext->m_pCircleBuffer);
        CP_TRACE1("EP_FillerThread::NoOpenURL %s",pContext->m_pcFlexiURL);
        return 0;
    }

    internetbuffer.dwStructSize = sizeof(internetbuffer);
    internetbuffer.Next = NULL;
    internetbuffer.lpcszHeader = NULL;
    internetbuffer.lpvBuffer = bReadBuffer;
    internetbuffer.dwBufferLength = CIC_READCHUNKSIZE;

    while(pContext->m_bTerminate == FALSE && bStreamComplete == FALSE)
    {
        BOOL bReadResult;

        if(pContext->m_pCircleBuffer->GetFreeSize(pContext->m_pCircleBuffer) < CIC_READCHUNKSIZE)
        {
            Sleep(20);
            continue;
        }

        internetbuffer.dwBufferLength = CIC_READCHUNKSIZE;
        bReadResult = InternetReadFileEx(hURLStream, &internetbuffer, IRF_NO_WAIT, 0);
        if(bReadResult == FALSE)
            bStreamComplete = TRUE;
        if(internetbuffer.dwBufferLength)
        {
            pContext->m_pCircleBuffer->Write(	pContext->m_pCircleBuffer,
                                              internetbuffer.lpvBuffer,
                                              internetbuffer.dwBufferLength);

            PostMessage(	pContext->m_hWndNotify,
                         CPNM_SETSTREAMINGSTATE,
                         (WPARAM)TRUE,
                         (LPARAM)(pContext->m_pCircleBuffer->GetUsedSize(pContext->m_pCircleBuffer)*100)/CIC_STREAMBUFFERSIZE);
        }
        else
            Sleep(20);
    }

    InternetCloseHandle(hURLStream);
    InternetCloseHandle(hInternet);

    pContext->m_pCircleBuffer->SetComplete(pContext->m_pCircleBuffer);
    PostMessage(pContext->m_hWndNotify, CPNM_SETSTREAMINGSTATE, (WPARAM)FALSE, (LPARAM)0);
    CP_TRACE0("EP_FillerThread normal shutdown");
    return 0;
}
//
CPs_InStream* CP_CreateInStream_Internet(const char* pcFlexiURL, HWND hWndOwner)
{
    CPs_InStream* pNewStream;
    CPs_InStream_Internet* pContext;
    unsigned int iUsedSpace;

    {
        pNewStream = (CPs_InStream*)malloc(sizeof(CPs_InStream));
        pContext = (CPs_InStream_Internet*)malloc(sizeof(CPs_InStream_Internet));

        pNewStream->Uninitialise = CPSINET_Uninitialise;
        pNewStream->Read = CPSINET_Read;
        pNewStream->Seek = CPSINET_Seek;
        pNewStream->GetLength = CPSINET_GetLength;
        pNewStream->IsSeekable = CPSINET_IsSeekable;
        pNewStream->m_pModuleCookie = pContext;

        pContext->m_pCircleBuffer = CP_CreateCircleBuffer(CIC_STREAMBUFFERSIZE);
    }

    {
        CPs_BufferFillerContext* pBufferFillContext;
        UINT uiThreadID;

        pBufferFillContext = (CPs_BufferFillerContext*)malloc(sizeof(CPs_BufferFillerContext));
        pBufferFillContext->m_pCircleBuffer = pContext->m_pCircleBuffer;
        pBufferFillContext->m_bTerminate = FALSE;
        STR_AllocSetString(&pBufferFillContext->m_pcFlexiURL, pcFlexiURL, FALSE);
        pBufferFillContext->m_hWndNotify = hWndOwner;

        pContext->m_hFillerThread = (HANDLE)_beginthreadex(NULL, 0, EP_FillerThread, pBufferFillContext, 0, &uiThreadID);
        pContext->m_pBufferFillContext = pBufferFillContext;
    }

    do
    {
        MSG msg;
        BOOL bMessageReceived;

        if(pContext->m_pCircleBuffer->IsComplete(pContext->m_pCircleBuffer))
            break;

        Sleep(100);
        iUsedSpace = pContext->m_pCircleBuffer->GetUsedSize(pContext->m_pCircleBuffer);

        bMessageReceived = PeekMessage(&msg, NULL, CPTM_STOP, CPTM_STOP, PM_NOREMOVE);
        if(bMessageReceived)
            break;
    }
    while(iUsedSpace < CIC_PREBUFFERAMOUNT);

    return pNewStream;
}
//
void CPSINET_Uninitialise(CPs_InStream* pStream)
{
    CPs_InStream_Internet* pContext = (CPs_InStream_Internet*)pStream->m_pModuleCookie;
    CP_CHECKOBJECT(pContext);

    pContext->m_pBufferFillContext->m_bTerminate = TRUE;
    WaitForSingleObject(pContext->m_hFillerThread, INFINITE);
    CloseHandle(pContext->m_hFillerThread);
    free(pContext->m_pBufferFillContext->m_pcFlexiURL);
    free(pContext->m_pBufferFillContext);

    pContext->m_pCircleBuffer->Uninitialise(pContext->m_pCircleBuffer);
    free(pContext);
    free(pStream);
}
//
BOOL CPSINET_Read(CPs_InStream* pStream, void* pDestBuffer, const unsigned int iBytesToRead, unsigned int* piBytesRead)
{
    CPs_InStream_Internet* pContext = (CPs_InStream_Internet*)pStream->m_pModuleCookie;
    CP_CHECKOBJECT(pContext);

    return pContext->m_pCircleBuffer->Read(pContext->m_pCircleBuffer, pDestBuffer, iBytesToRead, piBytesRead);
}
//
void CPSINET_Seek(CPs_InStream* pStream, const unsigned int iNewOffset)
{
    CPs_InStream_Internet* pContext = (CPs_InStream_Internet*)pStream->m_pModuleCookie;
    CP_CHECKOBJECT(pContext);

}
//

unsigned int CPSINET_GetLength(CPs_InStream* pStream)
{
    CPs_InStream_Internet* pContext = (CPs_InStream_Internet*)pStream->m_pModuleCookie;
    CP_CHECKOBJECT(pContext);

    return 0;
}
//
BOOL CPSINET_IsSeekable(CPs_InStream* pStream)
{
    return FALSE;
}

UINT CPSINET_Tell(CPs_InStream* pStream)
{
	return 0;

}



?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产3级a| 美女www一区二区| 热久久久久久久| 不卡一区二区三区四区| 欧美乱妇一区二区三区不卡视频| 欧美国产一区视频在线观看| 亚洲一区二区三区四区的| 成人小视频在线| 精品久久一二三区| 午夜电影久久久| 一本色道久久综合亚洲aⅴ蜜桃| 久久免费美女视频| 久久成人久久爱| 欧美精品亚洲一区二区在线播放| 亚洲精品美腿丝袜| 粗大黑人巨茎大战欧美成人| 精品卡一卡二卡三卡四在线| 欧美aa在线视频| 日韩欧美一区二区不卡| 日韩av一区二区三区四区| 欧美丝袜自拍制服另类| 亚洲欧美日韩在线| 97精品久久久午夜一区二区三区 | 美女精品一区二区| 欧美在线观看一二区| 中文字幕一区二区视频| 成人av电影在线| 亚洲欧洲色图综合| 色婷婷久久久久swag精品| 亚洲欧美日韩国产另类专区| 97久久超碰国产精品| 亚洲欧美日韩国产综合| 欧美在线你懂的| 亚洲国产精品久久久久秋霞影院| 在线视频一区二区免费| 亚洲成人午夜影院| 69堂成人精品免费视频| 麻豆久久久久久| 亚洲精品一区二区三区影院 | 久久色在线视频| 国产一区二区三区免费看| 2欧美一区二区三区在线观看视频| 精品影院一区二区久久久| 久久天天做天天爱综合色| 日本欧美一区二区三区| 欧美va在线播放| 国产成人啪免费观看软件| 国产精品色婷婷久久58| 色吧成人激情小说| 亚洲成人激情社区| 亚洲精品一区二区三区蜜桃下载| 国产毛片精品视频| 国产精品人成在线观看免费 | 亚洲精品一区二区三区香蕉 | 久久成人免费网站| 国产精品人妖ts系列视频 | 不卡视频一二三四| 一区二区三区.www| 日韩欧美精品三级| 国产中文字幕一区| 亚洲女同ⅹxx女同tv| 欧美精品久久一区二区三区| 国内久久精品视频| 亚洲精品免费看| 久久综合久久综合九色| 99精品国产热久久91蜜凸| 亚洲va欧美va人人爽午夜| 国产亚洲美州欧州综合国| 99国内精品久久| 久久精品国产澳门| 一区二区三区四区亚洲| 精品女同一区二区| 在线观看网站黄不卡| 国产一区二区看久久| 一区二区三区国产豹纹内裤在线| 精品少妇一区二区三区在线播放| 99国产精品久| 国产在线视频一区二区| 一区二区三区欧美| 中文字幕的久久| 日韩小视频在线观看专区| 色综合夜色一区| 国产美女娇喘av呻吟久久| 视频一区视频二区中文| 亚洲欧美电影一区二区| 精品福利av导航| 欧美电影在哪看比较好| 91蝌蚪porny| 国产99久久久国产精品免费看| 午夜精品福利一区二区三区蜜桃| 国产精品美女视频| 久久精品视频一区二区三区| 91精品国产一区二区三区| 色视频成人在线观看免| 不卡在线视频中文字幕| 国产一区啦啦啦在线观看| 日本美女一区二区三区| 一区二区成人在线| 伊人婷婷欧美激情| 亚洲欧美影音先锋| 欧美韩国日本不卡| 国产欧美精品在线观看| 精品国产一区二区三区久久久蜜月| 欧美日韩综合不卡| 91黄色小视频| 色域天天综合网| 972aa.com艺术欧美| 波多野结衣视频一区| 国产精品原创巨作av| 国产高清不卡一区二区| 国产一区啦啦啦在线观看| 激情综合色综合久久综合| 蜜臀av亚洲一区中文字幕| 日本三级亚洲精品| 美洲天堂一区二卡三卡四卡视频| 免费三级欧美电影| 久久99国产精品久久99果冻传媒| 免费人成网站在线观看欧美高清| 免费精品视频在线| 国模套图日韩精品一区二区 | 五月婷婷欧美视频| 亚洲 欧美综合在线网络| 日本不卡一区二区三区高清视频| 日韩成人精品在线| 国产一区二区在线视频| 国产91色综合久久免费分享| 粉嫩嫩av羞羞动漫久久久| 99久久国产综合色|国产精品| 99riav一区二区三区| 欧美日韩在线播放一区| 日韩一区二区三区免费观看| 日韩精品中文字幕在线不卡尤物| 精品国产三级a在线观看| 国产欧美视频在线观看| 亚洲欧美自拍偷拍| 天堂成人免费av电影一区| 蓝色福利精品导航| 99久久国产综合精品色伊| 欧美日本一区二区三区四区| 精品国精品国产| 国产精品国产成人国产三级| 亚洲国产精品尤物yw在线观看| 免费成人你懂的| a在线播放不卡| 日韩三级视频在线观看| 国产精品久久三| 日韩国产在线观看一区| 国产成人福利片| 欧美日韩你懂得| 国产欧美日韩一区二区三区在线观看| 国产精品高潮呻吟久久| 日韩在线观看一区二区| 国产成人h网站| 欧美酷刑日本凌虐凌虐| 中文字幕av一区二区三区高| 亚洲国产日韩a在线播放| 国产精品一区免费视频| 欧美日韩极品在线观看一区| 国产亚洲精品福利| 日韩在线观看一区二区| 色综合天天综合狠狠| 日韩免费高清av| 亚洲影视资源网| 成人激情动漫在线观看| 日韩一区二区三区在线视频| 亚洲丝袜精品丝袜在线| 国产一区日韩二区欧美三区| 欧美日韩亚洲另类| 国产精品久线在线观看| 国产伦精品一区二区三区视频青涩 | 国产色产综合色产在线视频| 无码av免费一区二区三区试看| 成人理论电影网| 精品国产在天天线2019| 午夜电影久久久| 在线观看一区二区精品视频| 国产欧美一区在线| 久久成人久久鬼色| 91麻豆精品国产91久久久更新时间 | 亚洲国产综合91精品麻豆| 国产精品亚洲а∨天堂免在线| 欧美一区二区三区思思人| 亚洲成人av一区二区三区| 色综合欧美在线视频区| 国产精品视频免费| 成人午夜电影网站| 国产午夜精品一区二区| 精品在线视频一区| 欧美xfplay| 激情六月婷婷综合| 欧美变态tickle挠乳网站| 亚洲电影在线免费观看| 色呦呦一区二区三区| ●精品国产综合乱码久久久久| 成人一级黄色片| 国产精品盗摄一区二区三区| 99久久亚洲一区二区三区青草| 国产精品污网站| 成人黄色综合网站| 最新国产の精品合集bt伙计|