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

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

?? win.c

?? 基于H.263的圖像壓縮編解碼的C源碼
?? C
字號(hào):
/************************************************************************
 *
 *  win.c, display routines for Win32 for tmndecode (H.263 decoder)
 *  
 ************************************************************************/

#include "config.h"
#include "main.h"
#include "global.h"
#include "win.h"

#ifdef WINDOWS

/* vdinit.c */

T_VDWINDOW vdWindow;

int initDisplay (int pels, int lines)
{
  int errFlag = 0;

  init_dither_tab();
  errFlag |= InitDisplayWindowThread (pels, lines);

  return errFlag;
}


int InitDisplayWindowThread (int width, int height)
{
  int errFlag = 0;

  /* now modify the couple that need it */
  vdWindow.width = width;
  vdWindow.height = height;
  vdWindow.biHeader.biWidth = vdWindow.width;
  vdWindow.biHeader.biHeight = vdWindow.height;
  vdWindow.biHeader.biSize = sizeof(BITMAPINFOHEADER);
  vdWindow.biHeader.biCompression = BI_RGB;
  vdWindow.biHeader.biPlanes = 1;
  vdWindow.biHeader.biBitCount = 24;

  vdWindow.biHeader.biSizeImage = 3 * vdWindow.width * vdWindow.height;
  vdWindow.imageIsReady = FALSE;

  /* allocate the memory needed to hold the RGB and visualization information */
  vdWindow.bufRGB = (unsigned char *)malloc (3 * vdWindow.width * vdWindow.height);

  /* Create synchronization event */
  vdWindow.hEvent = CreateEvent(NULL,FALSE,FALSE,NULL);

  vdWindow.hThread = 
    CreateThread (
      NULL, 
      0, 
      (LPTHREAD_START_ROUTINE) DisplayWinMain, 
      (LPVOID) NULL, 
      0, 
      &(vdWindow.dwThreadID)
    );

  if (vdWindow.hThread == NULL) {
    errFlag = 1;
    return errFlag;
  }

  return errFlag;
}

/* vddraw.c */

int displayImage (unsigned char *lum, unsigned char *Cr, unsigned char *Cb)
{
  int errFlag = 0;
  DWORD dwRetVal;

  /* wait until we have finished drawing the last frame */
  if (vdWindow.windowDismissed == FALSE) {
    vdWindow.src[0] = lum;
    vdWindow.src[1] = Cb;
    vdWindow.src[2] = Cr;

    /* wait until previous frame has been drawn */
    dwRetVal = WaitForSingleObject(vdWindow.hEvent,INFINITE);

    vdWindow.imageIsReady = TRUE;
    /* Post message to drawing thread's window to draw frame */
    PostMessage (vdWindow.hWnd, VIDEO_DRAW_FRAME, (WPARAM) NULL, (LPARAM) NULL);

	}
	
	return errFlag;
}

int DrawDIB()
{											      
  int errFlag = 0;

  errFlag |= 
    DrawDibDraw (
      vdWindow.hDrawDib, 
      vdWindow.hDC, 
      0, 
      0, 
      vdWindow.zoom * vdWindow.width, 
      vdWindow.zoom * vdWindow.height, 
      &vdWindow.biHeader, 
      vdWindow.bufRGB, 
      0, 
      0, 
      vdWindow.width, 
      vdWindow.height, 
      DDF_SAME_DRAW
    ); 
 
      return errFlag;
}

/* vdwinman.c */

void DisplayWinMain (void *dummy)
{
  int errFlag = 0;
  DWORD dwStyle;
	
  vdWindow.wc.style =  CS_BYTEALIGNWINDOW;				 
  vdWindow.wc.lpfnWndProc = MainWndProc;
  vdWindow.wc.cbClsExtra = 0;
  vdWindow.wc.cbWndExtra = 0;
  vdWindow.wc.hInstance = 0;
  vdWindow.wc.hIcon = LoadIcon (NULL, IDI_APPLICATION);
  vdWindow.wc.hCursor = LoadCursor (NULL, IDC_ARROW);
  vdWindow.wc.hbrBackground = GetStockObject (WHITE_BRUSH);
  vdWindow.wc.lpszMenuName = NULL;
  vdWindow.zoom = 1;
  strcpy (vdWindow.lpszAppName, "H.263 Display");
  vdWindow.wc.lpszClassName = vdWindow.lpszAppName;

  RegisterClass(&vdWindow.wc);

  dwStyle =  WS_DLGFRAME | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX;

  vdWindow.hWnd = 
    CreateWindow (vdWindow.lpszAppName,
      vdWindow.lpszAppName,
      dwStyle,
      CW_USEDEFAULT,
      CW_USEDEFAULT,
      vdWindow.width + 6,
      vdWindow.height + 25,
      NULL,
      NULL,
      0,
      NULL
    );
	
  if (vdWindow.hWnd == NULL)
    ExitThread (errFlag = 1);

  ShowWindow(vdWindow.hWnd, SW_SHOWNOACTIVATE);
  UpdateWindow(vdWindow.hWnd);

  /* Message loop for display window's thread */
  while (GetMessage (&(vdWindow.msg), NULL, 0, 0)) {
    TranslateMessage (&(vdWindow.msg));
    DispatchMessage (&(vdWindow.msg));
  }

  ExitThread (0);
}


LRESULT APIENTRY MainWndProc (HWND hWnd, UINT msg, UINT wParam, LONG lParam)
{
  LPMINMAXINFO lpmmi;

  switch (msg) {
    case VIDEO_BEGIN:
      vdWindow.hDC = GetDC (vdWindow.hWnd);
      vdWindow.hDrawDib = DrawDibOpen();
      vdWindow.zoom = 1;
      vdWindow.oldzoom = 0;
      DrawDibBegin (
        vdWindow.hDrawDib, 
        vdWindow.hDC, 
        2*vdWindow.width, 
        2*vdWindow.height, 
        &vdWindow.biHeader, 
        vdWindow.width, 
        vdWindow.height, 
        0
      );
      SetEvent(vdWindow.hEvent);
      vdWindow.windowDismissed = FALSE;
      ReleaseDC (vdWindow.hWnd, vdWindow.hDC);
      break;
    case VIDEO_DRAW_FRAME:
      vdWindow.hDC = GetDC (vdWindow.hWnd);
      ConvertYUVtoRGB(
        vdWindow.src[0],
        vdWindow.src[1],
        vdWindow.src[2],
        vdWindow.bufRGB,
        vdWindow.width,
        vdWindow.height
      );
      /* draw the picture onto the screen*/
      DrawDIB();
      SetEvent(vdWindow.hEvent);
      ReleaseDC (vdWindow.hWnd, vdWindow.hDC);
      break;
    case VIDEO_END:
      /* Window has been closed.  The following lines handle the cleanup. */
      vdWindow.hDC = GetDC (vdWindow.hWnd);
      DrawDibEnd (vdWindow.hDrawDib);
      DrawDibClose (vdWindow.hDrawDib);
      ReleaseDC (vdWindow.hWnd, vdWindow.hDC);

      vdWindow.windowDismissed = TRUE;
      PostQuitMessage(0);
      break;

    case WM_CREATE:
      PostMessage(hWnd, VIDEO_BEGIN, 0, 0);
      break;
    case WM_SIZE:
      switch (wParam) {
        case SIZE_MAXIMIZED:
          vdWindow.zoom = 2;
          break;
        case SIZE_MINIMIZED:
          vdWindow.oldzoom = vdWindow.zoom;
        	break;
        case SIZE_RESTORED:
          if (vdWindow.oldzoom) {
            vdWindow.zoom = vdWindow.oldzoom;
            vdWindow.oldzoom = 0;
          }
          else
            vdWindow.zoom = 1;
          break;
        case SIZE_MAXHIDE:
          break;
        case SIZE_MAXSHOW:
          break;
      }
      PostMessage(hWnd,WM_PAINT,0,0);
      break;  
    case WM_GETMINMAXINFO:
      lpmmi = (LPMINMAXINFO) lParam;

      GetWindowRect (hWnd, &vdWindow.rect);
      lpmmi->ptMaxPosition.x = vdWindow.rect.left;
      lpmmi->ptMaxPosition.y = vdWindow.rect.top;

      lpmmi->ptMaxSize.x = 2 * (vdWindow.width) + 6;
      lpmmi->ptMaxSize.y = 2 * (vdWindow.height) + 25;
      break;
    case WM_DESTROY:
      /* Window has been closed.  The following lines handle the cleanup. */
      DrawDibEnd (vdWindow.hDrawDib);
      ReleaseDC (vdWindow.hWnd, vdWindow.hDC);
      DrawDibClose (vdWindow.hDrawDib);

      vdWindow.windowDismissed = TRUE;
      PostQuitMessage(0);
      break;
    case WM_PAINT:
      if (vdWindow.imageIsReady) {
        vdWindow.hDC = GetDC (vdWindow.hWnd);
        DrawDIB ();
        ReleaseDC (vdWindow.hWnd, vdWindow.hDC);
      }
      break;

  }
  return DefWindowProc (hWnd, msg, wParam, lParam);
}

/* vdclose.c */

int closeDisplay ()
{
  int errFlag = 0;

  if (vdWindow.hWnd) {
    PostMessage (vdWindow.hWnd, VIDEO_END, (WPARAM) NULL, (LPARAM) NULL);
    while (vdWindow.windowDismissed == FALSE)
      ;
  }

  if (vdWindow.hEvent)
    CloseHandle(vdWindow.hEvent);

  if (vdWindow.hThread)
    CloseHandle (vdWindow.hThread);

  free (vdWindow.bufRGB);

  return errFlag;
}

#endif

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人一区二区三区视频| 偷拍自拍另类欧美| 久久久久高清精品| 久久久精品免费观看| 国产人伦精品一区二区| 亚洲婷婷在线视频| 一区二区视频免费在线观看| 亚洲欧洲在线观看av| 亚洲福利一区二区三区| 日产国产欧美视频一区精品| 精品在线视频一区| proumb性欧美在线观看| 884aa四虎影成人精品一区| 91精品婷婷国产综合久久竹菊| 精品成人佐山爱一区二区| 久久夜色精品国产噜噜av| 18成人在线视频| 亚洲一区二区三区自拍| 日韩影院精彩在线| 国内成人免费视频| 99re热这里只有精品视频| 蜜桃久久av一区| 国产aⅴ综合色| 欧美性感一类影片在线播放| 在线播放视频一区| 国产99久久久久| 麻豆一区二区三| 国产福利91精品一区二区三区| 免费观看一级特黄欧美大片| 国产成人高清视频| 欧美无人高清视频在线观看| 久久久精品欧美丰满| 一区二区三区成人| 免费成人性网站| 在线观看日韩毛片| 久久精品一区二区三区不卡| 国产午夜精品久久| 国产原创一区二区| 欧美高清视频不卡网| 国产精品久久久久久久久免费相片| 亚洲精品欧美二区三区中文字幕| 国产成人综合在线观看| 制服丝袜中文字幕亚洲| 亚洲视频香蕉人妖| av在线综合网| 国产精品传媒视频| 成+人+亚洲+综合天堂| 国产女主播一区| 国产jizzjizz一区二区| 中文字幕一区在线观看| 国精产品一区一区三区mba视频 | 亚洲精品中文在线| 91在线观看污| 亚洲一卡二卡三卡四卡| 白白色亚洲国产精品| 国产精品乱码妇女bbbb| 99国产精品久久久久久久久久久| 国产精品理伦片| 中文字幕日本不卡| 奇米色777欧美一区二区| 欧美日韩一二区| 免费成人在线播放| 国产欧美一区二区三区在线老狼| 国产一区二区不卡老阿姨| 久久久久99精品一区| 色综合久久久网| 日本亚洲天堂网| 欧美一区欧美二区| 成人av中文字幕| 午夜视频在线观看一区二区三区| 8x福利精品第一导航| 国产麻豆成人精品| 亚洲与欧洲av电影| 欧美精品一区二区三区在线| 成人美女视频在线观看18| 一区二区三区日韩欧美精品| 亚洲精品一区二区在线观看| av一区二区三区四区| 另类欧美日韩国产在线| 亚洲欧洲精品天堂一级| 精品国产一区二区三区不卡 | 午夜精品久久久| 亚洲国产激情av| 欧美精品一区二区久久久| 韩国v欧美v亚洲v日本v| 日韩精品乱码免费| 亚洲精品国产无套在线观| 久久久久久久久久久久久夜| 欧美伊人精品成人久久综合97 | 精品国产99国产精品| 91黄色免费观看| 成人影视亚洲图片在线| 欧美精品一区二区三区蜜桃| 国产一区二区网址| 国产一区二区三区视频在线播放| 亚洲综合久久久久| 亚洲三级在线播放| 亚洲欧洲99久久| 久久欧美一区二区| 欧美日韩国产欧美日美国产精品| 久久黄色级2电影| 天天操天天综合网| 中文字幕综合网| 久久久蜜桃精品| 精品国产亚洲在线| 日韩欧美一卡二卡| 久久中文娱乐网| 久久久五月婷婷| 国产精品丝袜久久久久久app| 久久天堂av综合合色蜜桃网| 久久综合视频网| 国产精品女主播av| 最新欧美精品一区二区三区| 国产三级精品三级在线专区| 国产性天天综合网| 国产精品电影一区二区| 一区二区三区精品久久久| 婷婷一区二区三区| 久久国产福利国产秒拍| 国产一区二区三区四| 成人性生交大合| 欧美三片在线视频观看| 91麻豆精品久久久久蜜臀| 91精品国产综合久久久蜜臀图片 | 国产一区二区三区四| 国产一区二区三区免费播放| 成人激情图片网| 欧美吞精做爰啪啪高潮| 精品国产一区二区在线观看| 日韩欧美视频一区| 欧美国产一区在线| 亚洲欧美色图小说| 青青草国产精品97视觉盛宴 | 亚洲精品视频在线观看网站| 亚洲国产精品人人做人人爽| 麻豆91精品视频| 国产91在线观看| 欧美日韩亚洲另类| 国产日韩欧美电影| 亚洲成国产人片在线观看| 国产精品羞羞答答xxdd| 欧美亚日韩国产aⅴ精品中极品| 精品裸体舞一区二区三区| 久久久久久久久久看片| 亚洲情趣在线观看| 老鸭窝一区二区久久精品| 91久久国产最好的精华液| 精品国产sm最大网站免费看| 一区二区三区免费网站| 国产一区二区美女| 欧美挠脚心视频网站| 亚洲国产精品一区二区久久恐怖片 | 国产一区欧美二区| 欧美大肚乱孕交hd孕妇| 日本午夜一区二区| 91精品国产一区二区三区| 亚洲国产精品久久艾草纯爱| 91麻豆精品在线观看| 亚洲视频一区在线| 91丨九色丨国产丨porny| 国产精品成人网| 99精品一区二区三区| 欧美激情综合五月色丁香| 成人综合婷婷国产精品久久| 久久久久久久久久电影| 国产成人综合精品三级| 中文在线一区二区| 99精品久久免费看蜜臀剧情介绍| 国产精品美女www爽爽爽| 大美女一区二区三区| 国产精品久久久久久久久搜平片 | 在线影院国内精品| 一二三四社区欧美黄| 欧美三级乱人伦电影| 视频精品一区二区| 欧美α欧美αv大片| 国产成人精品亚洲日本在线桃色| xfplay精品久久| 成人永久aaa| 一区二区三区欧美在线观看| 欧美午夜精品久久久久久孕妇| 亚洲风情在线资源站| 欧美一区二区福利在线| 国产在线精品一区二区不卡了| 国产欧美综合色| 色综合天天综合| 五月激情六月综合| 久久综合色天天久久综合图片| 成人一级视频在线观看| 亚洲精品国产a久久久久久 | 日本丶国产丶欧美色综合| 亚洲妇熟xx妇色黄| 精品国产一区二区精华| jlzzjlzz欧美大全| 午夜av区久久| 2020国产成人综合网| 色先锋久久av资源部| 麻豆久久久久久| 综合av第一页| 日韩欧美一区二区久久婷婷|