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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? cpi_stream_internet.c

?? < VC++視頻音頻開(kāi)發(fā)>> 這本書(shū)的源碼
?? C
字號(hào):
#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;

}



?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
**性色生活片久久毛片| 欧美精品视频www在线观看| 精品国产三级电影在线观看| 中国色在线观看另类| 国产一区二区免费看| 精品久久99ma| 日韩二区在线观看| 91精品婷婷国产综合久久性色 | 欧美日韩www| 国产精品国产三级国产有无不卡| 欧美高清在线一区| 国产精品123| 欧美日韩国产一区| 日韩和欧美的一区| 欧美一区二区视频在线观看2022| 欧美一级视频精品观看| 国产一区二区三区日韩| 日本一区二区高清| 欧美日韩一区二区在线观看视频| 久久精品视频在线看| 成人久久久精品乱码一区二区三区| 欧美精品久久99久久在免费线| 日本一区二区成人在线| 欧洲精品一区二区| 久久精品国产99国产| 日本一区二区免费在线观看视频| 九九国产精品视频| 综合久久久久久久| 欧美一卡二卡三卡| 99久久久久久| 久久精品噜噜噜成人av农村| 国产精品久久久久久亚洲毛片 | 经典三级在线一区| 亚洲欧洲韩国日本视频| 欧美唯美清纯偷拍| 国产91精品在线观看| 亚洲高清免费一级二级三级| 国产欧美精品一区| 7799精品视频| 91视频www| 韩国理伦片一区二区三区在线播放 | 日韩激情av在线| 中文字幕第一区二区| 欧美精品xxxxbbbb| 91最新地址在线播放| 免费观看日韩av| 亚洲欧美日韩在线| 久久青草国产手机看片福利盒子| 蜜桃一区二区三区四区| 日韩毛片精品高清免费| www成人在线观看| 欧美日韩国产综合一区二区| 99久久久久免费精品国产| 国产一区二区三区黄视频 | 亚洲sss视频在线视频| 中文字幕精品一区二区三区精品| 国产一区二区三区免费| 日本中文在线一区| 亚洲成人免费电影| 一区二区三区精品| 国产日产欧美一区二区三区| 欧美一区二区三区系列电影| 91在线观看免费视频| 国产成人亚洲综合a∨猫咪| 美女国产一区二区三区| 亚洲一区二区高清| 一区二区免费在线播放| 亚洲欧美激情视频在线观看一区二区三区 | av一本久道久久综合久久鬼色| 亚洲天堂中文字幕| 中文字幕免费不卡| www亚洲一区| 久久精品在这里| 国产三级精品三级| 欧美激情综合在线| 欧美国产激情二区三区| 欧美国产日本视频| 国产欧美日韩综合精品一区二区| 色婷婷综合久色| 色综合天天综合网天天狠天天| 欧美日本一区二区三区| proumb性欧美在线观看| 高清不卡一区二区| 成人sese在线| 99re6这里只有精品视频在线观看| 亚洲高清视频中文字幕| 天堂精品中文字幕在线| 日日摸夜夜添夜夜添精品视频| www成人在线观看| 国产网站一区二区三区| 久久久综合激的五月天| 国产欧美视频在线观看| 亚洲三级电影网站| 亚洲成a人片综合在线| 蜜臂av日日欢夜夜爽一区| 秋霞av亚洲一区二区三| 国产在线精品免费| 风间由美一区二区三区在线观看| 亚洲成a人v欧美综合天堂下载 | 在线视频观看一区| 欧美人牲a欧美精品| 日韩欧美国产综合一区| 久久一夜天堂av一区二区三区| 91免费国产在线| 欧美日韩一区久久| 日韩女优av电影| 国产女人18水真多18精品一级做| 91精品国产综合久久精品麻豆| 成人h精品动漫一区二区三区| 理论片日本一区| 国产成人午夜精品影院观看视频 | 懂色av噜噜一区二区三区av| 91网站在线观看视频| 欧美日韩一二区| 国产精品丝袜一区| 日韩一区欧美二区| 成人永久看片免费视频天堂| 欧美日韩一区在线| 国产精品色一区二区三区| 亚洲成人综合在线| 久久9热精品视频| 91丨九色丨蝌蚪富婆spa| 日韩无一区二区| 亚洲激情欧美激情| 国产精品中文欧美| 7777精品久久久大香线蕉| 国产精品少妇自拍| 日本午夜一本久久久综合| yourporn久久国产精品| 欧美精品一区二区三区蜜桃| 亚洲精品高清在线观看| 国产精品一区二区黑丝| 9191成人精品久久| 成人免费小视频| 国产精品99久久不卡二区| 欧美日韩三级视频| 国产精品久久久久aaaa樱花| 久久精品国产亚洲aⅴ| 欧美午夜片在线看| 日韩毛片精品高清免费| 国产精品综合网| 日韩欧美国产三级电影视频| 亚洲一区二区三区免费视频| 大桥未久av一区二区三区中文| 不卡的av在线播放| 久久久青草青青国产亚洲免观| 久久先锋资源网| 免费在线欧美视频| 在线观看91视频| 亚洲欧美一区二区视频| 国产成人av资源| 欧美成人女星排名| 奇米亚洲午夜久久精品| 欧美日韩一区二区欧美激情| 亚洲精品伦理在线| 99久久精品费精品国产一区二区| 欧美在线三级电影| 亚洲欧美区自拍先锋| bt7086福利一区国产| 国产精品久久二区二区| 成人午夜视频免费看| 欧美激情综合网| 成人爽a毛片一区二区免费| 久久久99精品久久| 蜜桃久久精品一区二区| 日韩女优制服丝袜电影| 久久9热精品视频| 久久影视一区二区| 国产福利91精品| 国产精品久久久久久一区二区三区| 亚洲一区在线视频| 在线视频欧美区| 亚洲成人福利片| 欧美日韩久久一区| 美腿丝袜亚洲色图| 欧美mv和日韩mv的网站| 国产乱子轮精品视频| 日本一区二区综合亚洲| 99精品国产91久久久久久| 自拍偷拍欧美激情| 欧美午夜在线观看| 男人的天堂亚洲一区| 久久精品一区二区三区不卡牛牛 | 秋霞影院一区二区| 日韩手机在线导航| 九九视频精品免费| 国产精品区一区二区三区| 色婷婷久久99综合精品jk白丝| 久久人人超碰精品| 91在线丨porny丨国产| 亚洲激情在线激情| 欧美一级搡bbbb搡bbbb| 精品一区二区综合| 国产精品蜜臀av| 欧美日韩免费电影| 国产精品一区专区| 亚洲成人av福利| 久久综合色综合88| 在线免费观看不卡av| 久久电影国产免费久久电影|