I have the old code optimized, but the last command: AVIStreamWrite() are the result of -29381 back.
Code: Select all
#streamtypeVIDEO = 1935960438
#streamtypeAUDIO = 1935963489
#streamtypeMIDI = 1935960429
#streamtypeTEXT = 1937012852
#ICMF_CHOOSE_KEYFRAME=1
#ICMF_CHOOSE_DATARATE=2
#ICMF_CHOOSE_ALLCOMPRESSORS=8
#AVIERR_OK=0
#AVIERR_NOCOMPRESSOR=$80000000 Or $40000 Or ($4000 + 113)
#AVIERR_MEMORY= $80000000 Or $40000 Or ($4000 + 103)
#AVIERR_UNSUPPORTED= $80000000 Or $40000 Or ($4000 + 101)
#AVIIF_KEYFRAME=$10
#OF_READ=$0
#OF_WRITE=$1
#OF_SHARE_DENY_WRITE=$20
#OF_CREATE=$1000
#AVIGETFRAMEF_BESTDISPLAYFMT = 1
Structure AVIFile_Info
dwMaxBytesPerSec.l
dwFlags.l
dwCaps.l
dwStreams.l
dwSuggestedBufferSize.l
dwWidth.l
dwHeight.l
dwScale.l
dwRate.l
dwLength.l
dwEditCount.l
szFileType.b[64]
EndStructure
Structure AVI_RECT
left.i
top.i
right.i
bottom.i
EndStructure
Structure AVISTREAMINFO
fccType.l
fccHandler.l
dwFlags.l
dwCaps.l
wPriority.w
wLanguage.w
dwScale.l
dwRate.l
dwStart.l
dwLength.l
dwInitialFrames.l
dwSuggestedBufferSize.l
dwQuality.l
dwSampleSize.l
rcFrame.RECT
dwEditCount.l
dwFormatChangeCount.l
szName.c[64]
EndStructure
Structure AVIFILEINFO
dwMaxBytesPerSec.l
dwFlags.l
dwCaps.l
dwStreams.l
dwSuggestedBufferSize.l
dwWidth.l
dwHeight.l
dwScale.l
dwRate.l
dwLength.l
dwEditCount.l
szFileType.c[64]
EndStructure
Structure AVICOMPRESSOPTIONS
fccType.l
fccHandler.l
dwKeyFrameEvery.l
dwQuality.l
dwBytesPerSecond.l
dwFlags.l
*lpFormat
cbFormat.l
*lpParms
cbParms.l
dwInterleaveEvery.l
EndStructure
Structure AVI_STREAM_INFO
fccType.l
fccHandler.l
dwFlags.l
dwCaps.l
wPriority.i
wLanguage.i
dwScale.i
dwRate.l
dwStart.l
dwLength.l
dwInitialFrames.l
dwSuggestedBufferSize.l
dwQuality.l
dwSampleSize.l
rcFrame.AVI_RECT
dwEditCount.l
dwFormatChangeCount.l
szName.b[64]
EndStructure
Import "avifil32.lib"
AVIFileOpenA.l(*ppfile.l, szFile.s, mode.l , pclsidHandler.l )
AVIFileOpenW.l(*ppfile.l, szFile.s, mode.l , pclsidHandler.l )
AVIFileRelease.l(ppfile.l)
AVIFileInfoA.l(pfile.l, *pfi.AVIFile_Info, lSize.l )
AVIFileInfoW.l(pfile.l, *pfi.AVIFile_Info, lSize.l )
AVIStreamInfoA.l(pfile.l, *pfi.AVI_STREAM_INFO, lSize.l )
AVIStreamInfoW.l(pfile.l, *pfi.AVI_STREAM_INFO, lSize.l )
AVIFileGetStream.l(pfile.l, *ppavi.l, fccType.l, lParam.l)
AVIStreamGetFrameOpen.l(pfile.l, lParam.l)
AVIStreamGetFrame.l(StreamObjekt.l, Frame_Nummer.l)
AVIStreamStart(pfile.l)
AVIStreamLength(pfile.l)
AVIStreamRelease(pfile.l)
AVIStreamGetFrameClose.l(StreamObjekt.l)
AVIFileInit.l()
AVIFileExit.l()
AVIBuildFilter(lpszFilter.p-unicode, cbFilter.l, fSaving.l) As "_AVIBuildFilterA@12"
AVIClearClipboard()
AVIFileAddRef(pfile.l)
AVIFileCreateStream(pfile.l, ppavi.l, *psi.AVISTREAMINFO) As "_AVIFileCreateStreamA@12"
AVIFileEndRecord()
AVIFileInfo(pfile.l, *pfi.AVIFileInfo, lSize.l) As "_AVIFileInfoA@12"
AVIFileOpen(*ppfile.l, szFile.p-unicode, uMode.l, lpHandler.l) As "_AVIFileOpenA@16"
AVIFileReadData(pfile.l, ckid.l, lpData.l, *lpcbData.l)
AVIFileWriteData(pfile.l, ckid.l, lpData.l, cbData.l)
AVIGetFromClipboard(*lppf.l)
AVIMakeCompressedStream(ppsCompressed.l, ppsSource.l, *lpOptions.AVICOMPRESSOPTIONS, *pclsidHandler.l)
AVIMakeFileFromStreams(*ppfile.l, nStreams.l, papStreams.l)
AVIMakeStreamFromClipboard(cfFormat.l, hGlobal.l, ppstream.l)
AVIPutFileOnClipboard(pf.l)
AVISave(szFile.p-unicode, *pclsidHandler.l, lpfnCallback.l, nStreams.l, pfile.l, *lpOptions.AVICOMPRESSOPTIONS, OptionalArguments.l) As "_AVISaveA"
AVISaveOptions(hwnd.l, uiFlags.l, nStreams.l, ppavi.l, *plpOptions.AVICOMPRESSOPTIONS)
AVISaveOptionsFree(nStreams.l, *plpOptions.AVICOMPRESSOPTIONS)
AVISaveV(szFile.p-unicode, *pclsidHandler.l, lpfnCallback.l, nStreams.l, ppavi.l, *plpOptions.AVICOMPRESSOPTIONS) As "AVISaveVA@24"
AVIStreamAddRef(pavi.l)
AVIStreamBeginStreaming(pavi.l, lStart.l, lEnd.l, lRate.l)
AVIStreamCreate(ppavi.l, lParam1.l, lParam2.l, *pclsidHandler.l)
AVIStreamEndStreaming(pavi.l)
AVIStreamFindSample(pavi.l, lPos.l, lFlags.l)
AVIStreamInfo(pavi.l, *psi.AVISTREAMINFO, lSize.l) As "_AVIStreamInfoA@12"
AVIStreamOpenFromFile(ppavi.l, szFile.p-unicode, fccType.l, lParam.l, mode.l, *pclsidHandler.l) As "_AVIStreamOpenFromFileA@24"
AVIStreamRead(pavi.l, lStart.l, lSamples.l, lpBuffer.l, cbBuffer.l, *plBytes.l, *plSamples.l)
AVIStreamReadData(pavi.l, fcc.l, lp.l, *lpcb.l)
AVIStreamReadFormat(pavi.l, lPos.l, lpFormat.l, *lpcbFormat.l)
AVIStreamSampleToTime(pavi.l, lSample.l)
AVIStreamSetFormat(pavi.l, lPos.l, lpFormat.l, cbFormat.l)
AVIStreamTimeToSample(pavi.l, lTime.l)
AVIStreamWrite(pavi.l, lStart.l, lSamples.l, lpBuffer.l, cbBuffer.l, dwFlags.l, *plSampWritten.l, *plBytesWritten.l)
AVIStreamWriteData(pavi.l, fcc.l, lp.l, cb.l)
CreateEditableStream(ppsEditable.l, psSource.l)
EditStreamClone(pavi.l, ppResult.l)
EditStreamCopy(pavi.l, *plStart.l, *plLength.l, ppResult.l)
EditStreamCut(pavi.l, *plStart.l, *plLength.l, ppResult.l)
EditStreamPaste(pavi.l, *plPos.l, *plLength.l, pstream.l, lStart.l, lEnd.l)
EditStreamSetInfo(pavi.l, *lpInfo.AVISTREAMINFO, cbInfo.l) As "_EditStreamSetInfoA@12"
EditStreamSetName(pavi.l, lpszName.p-unicode) As "_EditStreamSetNameA@8"
EndImport
CompilerIf #PB_Compiler_Unicode
Macro AVIFileOpen
AVIFileOpenW
EndMacro
Macro AVIFileInfo
AVIFileInfoW
EndMacro
Macro AVIStreamInfo
AVIStreamInfoW
EndMacro
CompilerElse
Macro AVIFileOpen
AVIFileOpenA
EndMacro
Macro AVIFileInfo
AVIFileInfoA
EndMacro
Macro AVIStreamInfo
AVIStreamInfoA
EndMacro
CompilerEndIf
AVIDateiPfad.s = "C:trauen.avi"
AVIDateiPfad1.s = "C:\videoframe.avi"
AVIFileInit()
If AVIFileOpen(@FileBufferID, AVIDateiPfad.s, #OF_SHARE_DENY_WRITE, 0) = #AVIERR_OK
If AVIFileInfo(FileBufferID, AviInfo.AVIFile_Info, SizeOf(AVIInfo)) = #AVIERR_OK
EndIf
EndIf
; Read Videoframes
If AVIFileGetStream(FileBufferID, @AVIStreamBuffer.l, #streamtypeVIDEO, 0) = #AVIERR_OK
frameObject = AVIStreamGetFrameOpen.l(AVIStreamBuffer.l, #AVIGETFRAMEF_BESTDISPLAYFMT )
firstFrame = AVIStreamStart(AVIStreamBuffer)
numFrames = AVIStreamLength(AVIStreamBuffer)
bm = AVIStreamGetFrame(frameObject, 20)
AVIFileOpen(@FileBufferID1, AVIDateiPfad1.s, #OF_WRITE | #OF_CREATE, 0)
AVIFileCreateStream(FileBufferID1, @AVIStreamBuffer1.l, @strfff)
Debug AVIStreamWrite(AVIStreamBuffer1.l, 0, 0, bm , SizeOf(bm), #AVIIF_KEYFRAME, 0, 0)
AviStreamrelease(AVIStreamBuffer1.l)
AviStreamrelease(AVIStreamBuffer.l)
AviFilerelease(FileBufferID)
AviFilerelease(FileBufferID1)
AVIFileExit()
EndIf