Модераторы: Rickert, Alexeis, BorisVorontsov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> VIDEOHDR преобразование, VIDEOHDR в любой формат данных 
:(
    Опции темы
UserNet
Дата 24.8.2008, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 226
Регистрация: 13.12.2006
Где: Новосибирск

Репутация: нет
Всего: 3



Товарищи есть такая проблема я пытаюсь отправить картинку с web-камеры по сети 
Код

#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <vfw.h> 
#include <fstream>
#include <sstream>
#include <vector>
#include <iostream>
#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "vfw32.lib")
using namespace std;


ATOM RegMyWindowClass(HINSTANCE hInst, LPCTSTR lpzClassName);
LRESULT pascal FrameCallbackFunc(HWND hWnd, VIDEOHDR *lpVHdr);
LRESULT CALLBACK WndProc(
  HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
HWND  hWndC,hWnd;

SOCKET server;

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
    
 

  LPCTSTR lpzClass = TEXT("My Window Class!");


  if (!RegMyWindowClass(hInstance, lpzClass))
    return 1;


  RECT screen_rect;
  GetWindowRect(GetDesktopWindow(),&screen_rect); 
  int x = screen_rect.right / 2 - 150;
  int y = screen_rect.bottom / 2 - 75;


  hWnd = CreateWindow(lpzClass, TEXT("Dialog Window"), 
    WS_OVERLAPPEDWINDOW | WS_VISIBLE, 0, 0, 900, 600, NULL, NULL, 
    hInstance, NULL);


   hWndC = capCreateCaptureWindow (
    (LPCWSTR) "", 
    WS_CHILD | WS_VISIBLE, 
    0, 0, 640, 480,        
    (HWND) hWnd,   
    (int) 0); 

SendMessage (hWndC, WM_CAP_DRIVER_CONNECT, 0, 0L); 


    WSADATA wsaData;
    WSAStartup(MAKEWORD(2,2), &wsaData);
   
    server = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    sockaddr_in saddr;
    saddr.sin_family = AF_INET;
    saddr.sin_addr.s_addr = INADDR_ANY;
    saddr.sin_port = htons(8081);
    bind(server, (SOCKADDR*)&saddr, sizeof(saddr));
    listen(server, 0);

 capOverlay(hWndC, TRUE);
  
// capPreviewRate(hWndC, 30);     
 //capPreview(hWndC, TRUE);      

    
capSetCallbackOnFrame(hWndC, FrameCallbackFunc);



  if(!hWnd) return 2; 




  MSG msg = {0};
  int iGetOk = 0;
  while ((iGetOk = GetMessage(&msg, NULL, 0, 0 )) != 0) 
  {
    if (iGetOk == -1) return 3;  
    TranslateMessage(&msg);    
    DispatchMessage(&msg);
  }

  return msg.wParam;  

}

ATOM RegMyWindowClass(HINSTANCE hInst, LPCTSTR lpzClassName)
{
  WNDCLASS wcWindowClass = {0};
  wcWindowClass.lpfnWndProc = (WNDPROC)WndProc;
  wcWindowClass.style = CS_HREDRAW|CS_VREDRAW;
  wcWindowClass.hInstance = hInst;
  wcWindowClass.lpszClassName = lpzClassName;
  wcWindowClass.hCursor = LoadCursor(NULL, IDC_ARROW);
  wcWindowClass.hbrBackground = (HBRUSH)COLOR_APPWORKSPACE;
  return RegisterClass(&wcWindowClass); 
}
LRESULT CALLBACK WndProc(
  HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{

  switch (message)
  {

 

  case WM_COMMAND:
    
           
            break;
  case WM_DESTROY:
    capDriverDisconnect(hWndC);
    PostQuitMessage(0); 
    break;
  default:  
    return DefWindowProc(hWnd, message, wParam, lParam);
  }
  return 0;
}

LRESULT pascal FrameCallbackFunc(HWND hWnd, VIDEOHDR *lpVHdr)
{
    tagBITMAP bm;
    bm.bmWidth=640;
    bm.bmHeight=480;
    bm.bmBits=lpVHdr->lpData;
    VIDEOHDR *testvideo;
    byte *testbyt;
    //int a;
    MoveMemory(&testvideo,&lpVHdr,sizeof(lpVHdr));
    testbyt=new byte[lpVHdr->dwBytesUsed];
    MoveMemory(&testbyt,&testvideo,sizeof(lpVHdr));
 
    //BITMAP testbmp =new BITMAP(&bm);
    size_t fileSize=lpVHdr->dwBufferLength;
   SOCKET client = accept(server, NULL, NULL);
   ostringstream headerStream;
   headerStream << "HTTP/1.0 200 OK\r\n" <<
                        "Connection: close\r\n" <<
                        "Content-Type: image/jpg\r\n";
   headerStream << "Content-Length: " << fileSize << "\r\n\r\n";
   send(client, headerStream.str().c_str(), headerStream.str().size(), 0);
   send(client, (char*)testbyt, lpVHdr->dwBufferLength, 0);
   

   
  return (LRESULT) TRUE ;

}


Проблема состоит вот в чём данные с web-камеры я полуаю в формате VIDEOHDR, как его преобразовать в другой формат с помощью которого можно отправить данные и они бы отображались?
 smile 

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

Ждём вас! С уважением, Alexeis, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема »


 




[ Время генерации скрипта: 0.0661 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.