Article View: borland.public.cppbuilder.multimedia
Article #142Re: AVI read with BCB6
From: Zsolt Kendi
Date: Mon, 16 May 2005 13:39
Date: Mon, 16 May 2005 13:39
147 lines
6462 bytes
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-mailReferences:
<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