stream to bmp in API 
Author Message
 stream to bmp in API

I have this code... I wanna save each frame in a bmp file.. how I can do
that ?

    #include <windows.h>
    #include <windows.h>
    #include <windowsx.h>
    #include <mmsystem.h>
    #include <commdlg.h>
    #include <vfw.h>
    #include <memory.h>

    DWORD dwImageSize = (DWORD)320 * (DWORD)240 * 3;    // 640 * 480 *
24 bpp

    void AviPlayer(HWND hWnd, char* szFilename)
    {
        PAVIFILE pavif;
        PAVISTREAM pavis;
        AVIFILEINFO afi;
        LPBITMAPINFOHEADER biFmt;
        LPSTR szBuffering;
        HDC hdcDisplay;
        HDRAWDIB hddOp;
        LONG lIndex, lLength;

        // Initialisation du sous-systme AVI
        AVIFileInit();

        // Ouverture du fichier utilisateur en mode lecture seule et en
mode partage
        AVIFileOpen(&pavif, szFilename, OF_READ, NULL);

        // Rcupration des informations sur le copyright, stream name,
etc.
        AVIFileInfo(pavif, &afi, sizeof(AVIFILEINFO));

        // Trouver le premier flux video (obligatoire)
        AVIFileGetStream(pavif, &pavis, streamtypeVIDEO, 0);

        // Taille en octets d'un bloc video
        AVIStreamFormatSize(pavis, 0, &lLength);

        // Allocation de de l'espace ncessaire en fonction du format
        biFmt =
(LPBITMAPINFOHEADER)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,
lLength);
        szBuffering = (LPSTR)HeapAlloc(GetProcessHeap(),
HEAP_ZERO_MEMORY, dwImageSize);

        // Obtention du DC pour l'affichage
        hdcDisplay = GetWindowDC(hWnd);

        // Lecture du format d'un bloc sur la sortie video
        AVIStreamReadFormat(pavis, 0, biFmt, &lLength);

        // Combien de frames contient le flux video ?
        lLength = AVIStreamLength(pavis);

        // Retailler le fentre a la taille exacte du film
        SetWindowPos(hWnd, HWND_TOP, 0, 0, (UINT)biFmt->biWidth,
(UINT)biFmt->biHeight, SWP_NOMOVE);

        // Cration de l'objet DrawDib
        hddOp = DrawDibOpen();

        // Initialisation des proprits de l'objet DrawDib
        DrawDibBegin(hddOp, hdcDisplay, 0, 0, biFmt,
                      (UINT)biFmt->biWidth,(UINT)biFmt->biHeight,
DDF_SAME_HDC);

        // Finalement afficher la fentre
        ShowWindow(hWnd, SW_RESTORE);

        // Maintenant faire une boucle sur la lecture du flux videopour
lire l'ensemble des
        // frame le plus rapidement possible. Les frames video sont
dcompresses par la
        // fonction  AVIStreamRead() en DIBs (dans le buffer
szBuffering) ainsi nous n'avons
        // pas nous pr\eoccuper de la dcompression.
        for (lIndex = 0; lIndex < lLength; ++lIndex) {

            LONG uLong = dwImageSize;

            AVIStreamRead(pavis, lIndex, 1, szBuffering, dwImageSize,
&uLong, NULL);
            DrawDibDraw(hddOp, hdcDisplay, 0, 0, (UINT)biFmt->biWidth,
                         (UINT)biFmt->biHeight, biFmt, szBuffering, 0,
0,
                         (UINT)biFmt->biWidth, (UINT)biFmt->biHeight,
0);

        }    // Affichage de chaque Frame

        // Rafficher la fentre application
        ShowWindow(hWnd, SW_HIDE);
        ShowWindow(hWnd, SW_SHOW);

        // Libration du DC
        ReleaseDC(hWnd, hdcDisplay);

        // Libration des ressources du flux video
        AVIStreamRelease(pavis);
        AVIFileRelease(pavif);

        // Libration de la mmoire alloue
        HeapFree(GetProcessHeap(), 0, (LPVOID)biFmt);
        HeapFree(GetProcessHeap(), 0, (LPVOID)szBuffering);

        // Fermeture de l'objet DrawDib et du sous-systme AVI
        DrawDibClose(hddOp);
        AVIFileExit();
    }



Tue, 27 Feb 2001 03:00:00 GMT  
 stream to bmp in API
????
Quote:

> ?t<



Fri, 02 Mar 2001 03:00:00 GMT  
 stream to bmp in API
Yep.
Quote:

>????


>> ?t<



Sat, 03 Mar 2001 03:00:00 GMT  
 stream to bmp in API
Salut Sbastien,

C'est du C tu sais?

Il y a surement des ng en vc++ qui pourraient mieux t'aider.

Vanderghast, Access MVP.

Quote:

>????


>> ?t<



Sun, 04 Mar 2001 03:00:00 GMT  
 
 [ 4 post ] 

 Relevant Pages 

1. stream to bmp in API

2. DX9 - Playing a streaming sound from a memory stream (not file stream)

3. Saving API Drawings to a BMP or Converting from WMF to BMP

4. Streaming Wav Audio from a UDP network stream to the sound card

5. ADODB.stream instead of ADODB.Stream

6. ADODB.stream instead of ADODB.Stream??

7. ADODB.stream instead of ADODB.Stream??

8. Low level Visual Basic 6 API code to save BMP

9. API Question re bmp dib bitblt globalalloc

10. API for converting a BMP to Jpeg or GIF

11. BMP Print Code (included) fails when converted from 16-32 API on GetDIGBits

12. using APIs to load a BMP as a file mapping object

 

 
Powered by phpBB® Forum Software