🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: borland.public.cppbuilder.multimedia
Article #142

Re: AVI read with BCB6

#142
From: Zsolt Kendi
Date: Mon, 16 May 2005 13:39
147 lines
6462 bytes
Here is the code (structure) used by ours:

/* avidemo.cpp */


AVIOpen()
	{
        hResult = AVIFileOpen(&(pSD->pInfile), StrArgs.FromFname.c_str(), OF_READ, 0L);
        if(hResult)
                // error
        // avi file info
       	hResult = AVIFileInfo( pSD->pInfile, &(pSD->thisPfi), sizeof(AVIFILEINFO));
        if(hResult)
                // error
	}

AudioOpen()
	{
        hResult = AVIFileGetStream(pSD->pInfile, &(pSD->pAudioInStream), streamtypeAUDIO, 0);
	if(hResult)   // ha hiba volt
                // error
        pSD->AInstreastartS = AVIStreamStart(pSD->pAudioInStream);  // autdio stream start pos
        hResult = AVIStreamReadFormat(pSD->pAudioInStream, pSD->AInstreastartS, NULL, &laudioinfosize);  // avi file format info hossza
	if(hResult)   // ha hiba volt
                // error
        pSD->pChunkAudio = new BYTE[laudioinfosize+8];  // allokaljuk a szukseges teruletet, biztos ami biztos
        if(!(pSD->pChunkAudio))   // ha hiba volt
                // error
        if(AVIStreamReadFormat(pSD->pAudioInStream, pSD->AInstreastartS, pSD->pChunkAudio, &laudioinfosize))    // retrive info now!
	        {   // ha hiba volt
                // error
                }
        }

VideoOpen()
	{
        // open video stream
         hResult = AVIFileGetStream(pSD->pInfile, &(pSD->pVideoInStream), streamtypeVIDEO, 0);
        if(hResult)
                // error
        pSD->VInstreastartS = AVIStreamStart(pSD->pVideoInStream);     // az elso frame
        hResult = AVIStreamReadFormat(pSD->pVideoInStream, pSD->VInstreastartS , NULL, &lvideoinfosize);  // avi file format info hossza
        if(hResult)
                // error
        pSD->pChunkVideo = new BYTE[lvideoinfosize+8];  // allokaljuk a szukseges teruletet, biztos ami biztos
        if(!(pSD->pChunkVideo))   // ha hiba volt
                // error
        if(AVIStreamReadFormat(pSD->pVideoInStream, pSD->VInstreastartS, pSD->pChunkVideo, &lvideoinfosize))    // retrive info now!
	        {   // ha hiba volt
                // error
                }
        pInfo = (LPBITMAPINFO)pSD->pChunkVideo;
        if( pInfo->bmiHeader.biSize != sizeof(BITMAPINFOHEADER) )       // ha nem stimmel a header hossza
                // error
        CopyMemory(&(pSD->bminfo),pInfo,sizeof(BITMAPINFO));     // a bitmap info az utokornak
#if 0   // tankonyv szerint, viszont az eredmeny rossz!
        lpbi = &(pInfo->bmiHeader);
#else   // info form first frame, ugy nez ki ez pontosabb!

        pSD->pgetfrm = AVIStreamGetFrameOpen(pSD->pVideoInStream, NULL);    // get frame for info only
        lpbi = (LPBITMAPINFOHEADER)AVIStreamGetFrame(pSD->pgetfrm, pSD->VInstreastartS);   // az elso frame falbol
#endif
}


Audioproc()
	{
        AudioSstart = pSD->AInstreastartS;     // indulo stream pozicio
        AudioSnum = (pSD->asamplpers / nAudioSample); // ennyi sample-t dogozunk fel egyszerre
        do
                {
                        // behozzuk az audio mintakat
                savedAhResult = AhResult = AVIStreamRead(pSD->pAudioInStream,AudioSstart,AudioSnum,NULL,0,&AudioPlen,NULL);   // lekerujuk a szukseges buffer meretet
                if(AhResult != 0)
                        // error
                pABuffer = new BYTE[AudioPlen]; // allocate frame buffer
                if(!(pABuffer))
                        // error
                savedAhResult = AhResult = AVIStreamRead(pSD->pAudioInStream,AudioSstart,AudioSnum, pABuffer, AudioPlen, NULL, &AudioSnumact );
                if(AhResult != 0)
                        // error
                asp = (INT16 *)pABuffer; // itt vannak az audio mintak AudioSnum szamban
                //
                // sample processing ..
                //
                AudioSstart += AudioSnum;       // ennyit megettunk
                }
        while();
        }


Videoproc()
	{
        VideoSstart = pSD->VInstreastartS;     // indulo stream pozicio
        VideoSnum = 1; // ennyi sample-t dogozunk fel egyszerre
        do
                {
                lpbi = (LPBITMAPINFOHEADER)AVIStreamGetFrame(pVgetframe,VideoSstart);    // read frame
                if(lpbi == NULL)
                       {       // ha hiba volt
                       VhResult = 29;
                       break;       // ha hiba volt, kilepunk
                       }
                pData = MakepData(lpbi,pSD);    // eloallitjuk a bitmezo elejet
                //
                // bitmap processing ...
                //
                VideoSstart += VideoSnum;       // ennyit megettunk
                }
        while();
        }


main()
        {
        AVIOpen();
        VideoOpen();
        AudioOpen();
        Audioproc();
        Videoproc();

        // cleanup...
        }


"Remy Lebeau \(TeamB\)" <no.spam@no.spam.com> wrote:
>
>"Zsolt Kendi" <kzsolt@datanet.hu> wrote in message
>news:427dcab5$1@newsgroups.borland.com...
>
>> If I try to prcess avi file with bcb6 (AVIStream functions) the during
>> the AVIStreamRead always get AVIERR_ERROR. This occured
>> always at the same frame.
>
>Maybe the frame in question is corrupted to begin with?  Maybe you are using
>AVIStreamRead() incorrectly?
>
>> Anybody have idea how to possible solve this problem?
>
>Your description is much too vague to diagnose your problem.  Please provide
>more details.
>
>
>Gambit
>
>
Technical Details
Message-ID: <4288a2a3$1@newsgroups.borland.com>
Path: arc1-ca.pugleaf.net!g2news1.google.com!news4.google.com!news.glorb.com!news2.euro.net!border2.nntp.ams.giganews.com!border1.nntp.ams.giganews.com!nntp.giganews.com!pe2.news.blueyonder.co.uk!blueyonder!news-peer-test!btnet!newsfeed.bt.es!caladan.landsraad.net!newsgroups.borland.com!not-for-mail
References: <427dcab5$1@newsgroups.borland.com> <427f97b1$1@newsgroups.borland.com>

Show Full Headers
Complete Article Headers
X-Google-Thread: 10d0fc,7f2b3e4c096b97ee
X-Google-Attributes: gid10d0fc,public
X-Google-Language: ENGLISH,ASCII-7-bit
From: "Zsolt Kendi" <kzsolt@datanet.hu>
Sender: "Zsolt Kendi" <kzsolt@datanet.hu>
Reply-To: "Zsolt Kendi" <kzsolt@datanet.hu>
Subject: Re: AVI read with BCB6
Newsgroups: borland.public.cppbuilder.multimedia
X-User-Info: 195.56.250.122     
References: <427dcab5$1@newsgroups.borland.com> <427f97b1$1@newsgroups.borland.com>
NNTP-Posting-Host: 207.105.83.66
Message-ID: <4288a2a3$1@newsgroups.borland.com>
Date: 16 May 2005 06:39:47 -0700
X-Trace: newsgroups.borland.com 1116250787 207.105.83.66 (16 May 2005 06:39:47 -0700)
Lines: 148
Path: arc1-ca.pugleaf.net!g2news1.google.com!news4.google.com!news.glorb.com!news2.euro.net!border2.nntp.ams.giganews.com!border1.nntp.ams.giganews.com!nntp.giganews.com!pe2.news.blueyonder.co.uk!blueyonder!news-peer-test!btnet!newsfeed.bt.es!caladan.landsraad.net!newsgroups.borland.com!not-for-mail