Re: avifil32.dll
Verfasst: 20.07.2011 16:01
@deify ich wollte ja schon .. hatte aber keine Zeit bisher
hab hier "nur" eine olle USBWEbCam und die kann man mit dem escapidings---------------------------
Fehler
---------------------------
Es ist ein Fehler beim Starten der Webcams aufgetreten!
---------------------------
OK
---------------------------
Code: Alles auswählen
EnableExplicit
;- ImageDecoder
UseTGAImageDecoder()
;- IncludeFile
IncludeFile "escapi.pbi"
;- escapiOpen
If escapiOpen() = 0
MessageRequester("Kamera", "DLL 'escapi.dll' nicht vorhanden!")
End
EndIf
;- Enumerations / DataSections
;- Windows
Enumeration
#Window_0
EndEnumeration
;- Gadgets
Enumeration
#Image_0
#Image_1
EndEnumeration
;- Image
Enumeration
#Image_Capture
EndEnumeration
;- Structure
Structure TGA_HEADER
imageid.a
colourmaptype.a
imagetype.a
colourmapstart.u
colourmaplength.u
colourmapbits.a
xstart.u
ystart.u
width.u
height.u
pixeldepth.a
descriptor.a
EndStructure
Structure fps_struc
fps_soll.i
fps_delay.i
fps_counter.i
fps_timer.i
fps_res.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
;- Define
Define Event.i, EventWindow.i, EventGadget.i, EventType.i, EventMenu.i
;- Global
Global quit.i, q1.i, q2.i, capture01TH.i, capture02TH.i
Procedure OpenWindow_Window_0()
Protected res.i
res = #False
If OpenWindow(#Window_0, 0, 0, 1280/2, 720/2, "Kamera", #PB_Window_ScreenCentered | #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar)
ImageGadget(#Image_0, 0, 0, 1280/2, 720/2, 0)
ImageGadget(#Image_1, 1280/2, 0, 1280/2, 720/2, 0)
res = #True
EndIf
ProcedureReturn res
EndProcedure
Procedure capture(deviceno.i)
Protected width.l, height.l, image.i, *pImage.i
Protected count.l, *namebuffer.i, bufferlength.l, name$
Protected tgaheader.TGA_HEADER, scp.SimpleCapParams
Protected t1.q, t2.q, time.q
Protected *fps.fps_struc
*fps.fps_struc = AllocateMemory(SizeOf(fps_struc))
If *fps > 0
width = 1280/2
height = 720/2
*fps\fps_soll = 30
*fps\fps_delay = 1000 / *fps\fps_soll
image = CreateImage(#PB_Any, width, height, 24)
SetGadgetState(deviceno, ImageID(image))
initCOM()
count = countCaptureDevices()
Debug "count: " + Str(count)
If count > 0
bufferlength = 1000
*namebuffer = AllocateMemory(bufferlength)
If *namebuffer > 0
getCaptureDeviceName(deviceno, *namebuffer, bufferlength)
name$ = PeekS(*namebuffer, -1, #PB_Ascii)
If name$ <> ""
Debug "name: " + name$
If deviceno > 0
name$ = GetWindowTitle(#Window_0) + " | " + name$
EndIf
SetWindowTitle(#Window_0, name$)
EndIf
EndIf
tgaHeader\imageid = 0
tgaHeader\colourmaptype = 0
tgaheader\imagetype = 2
tgaHeader\colourmapstart = 0
tgaHeader\colourmaplength = 0
tgaheader\width = width
tgaheader\height = height
tgaHeader\xstart = 0
tgaHeader\ystart = 0
tgaheader\pixeldepth = 32
tgaheader\descriptor = % 11110100
*pImage = AllocateMemory(width * height * 4 + SizeOf(TGA_HEADER))
If *pImage > 0
CopyMemory(@tgaheader, *pImage, SizeOf(TGA_HEADER))
scp\mWidth = width
scp\mHeight = height
scp\mTargetBuf = *pImage + SizeOf(TGA_HEADER)
Debug "memory: " + Str(scp\mWidth * scp\mHeight * 4)
If initCapture(deviceno, @scp)
Debug "initCapture"
Repeat
t1 = timeGetTime_()
If *fps\fps_timer < t1
*fps\fps_res = *fps\fps_counter
*fps\fps_timer = t1 + 1000
*fps\fps_counter = 0
Else
*fps\fps_counter + 1
EndIf
doCapture(deviceno)
;While isCaptureDone(deviceno) = 0
; If quit = 1
; Break
; EndIf
; Delay(1)
;Wend
If quit = 1
Break
EndIf
If CatchImage(deviceno, *pImage)
StartDrawing(ImageOutput(image))
DrawImage(ImageID(deviceno), 0, 0)
DrawText(10, 10, "FPS: " + Str(*fps\fps_res), RGB(255, 0, 0))
StopDrawing()
SetGadgetState(deviceno, ImageID(image))
EndIf
t2 = timeGetTime_()
time = t2 - t1
If time < *fps\fps_delay
Delay(*fps\fps_delay - time)
Else
Delay(1)
EndIf
Until quit = 1
deinitCapture(deviceno)
Debug "deinitCapture"
EndIf
EndIf
EndIf
EndIf
If *fps > 0
FreeMemory(*fps)
EndIf
If *namebuffer > 0
FreeMemory(*namebuffer)
EndIf
If *pImage > 0
FreeMemory(*pImage)
EndIf
EndProcedure
If OpenWindow_Window_0()
StickyWindow(#Window_0, 1)
capture01TH = CreateThread(@capture(), 0)
; capture02TH = CreateThread(@capture(), 1)
;- Event loop
Repeat
Event = WaitWindowEvent(100)
EventGadget = EventGadget()
EventType = EventType()
EventWindow = EventWindow()
Select Event
Case #PB_Event_Gadget
Select EventGadget
Case #Image_0
Case #Image_1
EndSelect
Case #PB_Event_CloseWindow
quit = 1
EndSelect
q1 = IsThread(capture01TH)
q2 = IsThread(capture02TH)
Until quit = 1 And q1 = 0 And q2 = 0
EndIf
;- escapiClose
escapiClose()
End
Code: Alles auswählen
EnableExplicit
IncludeFile "escapi.pbi"
IncludeFile "avifil32.pbi"
UsePNGImageDecoder()
UseTGAImageDecoder()
If escapiOpen() = 0
MessageRequester("Kamera", "DLL 'escapi.dll' nicht vorhanden!")
End
EndIf
Structure TGA_HEADER
imageid.a
colourmaptype.a
imagetype.a
colourmapstart.u
colourmaplength.u
colourmapbits.a
xstart.u
ystart.u
width.u
height.u
pixeldepth.a
descriptor.a
EndStructure
Structure tgax
tga.TGA_HEADER
EndStructure
Structure fps_struc
fps_soll.i
fps_delay.i
fps_counter.i
fps_timer.i
fps_res.i
EndStructure
;{ Enumerations
;Fenster
Enumeration
#Video_Gadget1
#Video_Gadget2
#Window_0
#Window_1
#list
#buttonOK
#buttonNew
#buttonDelete
#menu
#new_buttonImage
#open_buttonImage
#delete_buttonImage
#play_buttonImage
#pause_buttonImage
#stop_buttonImage
#next_buttonImage
#previous_buttonImage
#record_buttonImage
#new_ico
#open_ico
#delete_ico
#play_ico
#pause_ico
#stop_ico
#next_ico
#previous_ico
#record_ico
#video_Image1
#video_Image2
#new_menuitem
#open_menuitem
#delete_menuitem
#close_menuitem
#settings_menuitem
EndEnumeration
Enumeration
#streamtypeAUDIO = $73647561
#streamtypeVIDEO = $73646976
#ICMF_CHOOSE_KEYFRAME=1
#ICMF_CHOOSE_DATARATE=2
#AVIERR_OK=0
#AVIIF_KEYFRAME=$10
#configFile
#tempDir
#newDir
EndEnumeration
;}
Global quit.i = #False, quitThread = -1, restartCapture = -1, recording = #False
Global width.l, height.l, testwidth.l, testheight.l
Global changeSettings = #False
Global currentFile.s, spieler.s, verein.s
Global i
Procedure setupProgramm()
If Not OpenFile(#configFile,GetCurrentDirectory()+"config")
MessageRequester("Fehler","Konnte Einstellungsdatei nicht öffnen")
End
EndIf
If Not ExamineDirectory(#tempDir,GetCurrentDirectory()+"temp","*.*")
If Not CreateDirectory(GetCurrentDirectory()+"temp")
MessageRequester("Fehler","Das temporäre Verzeichnis konnte nicht erstellt werden!")
End
EndIf
Else
FinishDirectory(#tempDir)
EndIf
If Not ExamineDirectory(#tempDir,GetCurrentDirectory()+"Vereine","*.*")
If Not CreateDirectory(GetCurrentDirectory()+"Vereine")
MessageRequester("Fehler","Das Vereins-Verzeichnis konnte nicht erstellt werden!")
End
EndIf
Else
FinishDirectory(#tempDir)
EndIf
EndProcedure
Procedure capture(deviceno.i)
Protected image.i, *pImage.i
Protected count.l, *namebuffer.i, bufferlength.l, name$
Protected tgaheader.TGA_HEADER, scp.SimpleCapParams
Protected t1.q, t2.q, time.q
Protected frame = 0
Protected aviStreamInfo.AVISTREAMINFO, opts.AVICOMPRESSOPTIONS
Protected error.b, tga.TGA_HEADER
Protected ppfile.l, ppavi.l, pAVICompressed.l, psi.AVISTREAMINFO
Protected drawnText.s = "Bitte legen Sie eine neue Aufnahmedatei an, oder öffnen Sie eine vorhandene."
Protected *fps.fps_struc
*fps.fps_struc = AllocateMemory(SizeOf(fps_struc))
If *fps > 0
*fps\fps_soll = 30
*fps\fps_delay = 1000 / *fps\fps_soll
image = CreateImage(#PB_Any, width, height, 24)
SetGadgetState(deviceno, ImageID(image))
initCOM()
count = countCaptureDevices()
If count > 0
tgaHeader\imageid = 0
tgaHeader\colourmaptype = 0
tgaheader\imagetype = 2
tgaHeader\colourmapstart = 0
tgaHeader\colourmaplength = 0
tgaheader\width = width
tgaheader\height = height
tgaHeader\xstart = 0
tgaHeader\ystart = 0
tgaheader\pixeldepth = 32
tgaheader\descriptor = % 11110100
*pImage = AllocateMemory(width * height * 4 + SizeOf(TGA_HEADER))
If *pImage > 0
CopyMemory(@tgaheader, *pImage, SizeOf(TGA_HEADER))
scp\mWidth = width
scp\mHeight = height
scp\mTargetBuf = *pImage + SizeOf(TGA_HEADER)
If initCapture(deviceno, @scp)
AVIFileInit()
If AVIFileOpen(@ppfile,GetCurrentDirectory()+"temp\cam"+Str(deviceno)+".avi",#OF_CREATE,#Null)
End
Else
aviStreamInfo\fccType = #streamtypeVIDEO
aviStreamInfo\fccHandler\a = $6D
aviStreamInfo\fccHandler\b = $73
aviStreamInfo\fccHandler\c = $76
aviStreamInfo\fccHandler\d = $63
aviStreamInfo\dwScale = 1
aviStreamInfo\dwRate = 4
aviStreamInfo\dwSuggestedBufferSize = MemorySize(*pImage)
If SetRect_(@aviStreamInfo\rcFrame, 0, 0, tgaheader\width, tgaheader\height) <>0
If AVIFileCreateStream(ppfile,@ppavi,@aviStreamInfo)
AVIFileRelease(ppfile)
End
Else
opts.AVICOMPRESSOPTIONS
Dim aopts(0)
aopts(0)=@opts
If AVISaveOptions(0, #ICMF_CHOOSE_KEYFRAME | #ICMF_CHOOSE_DATARATE, 1, @ppavi, @aopts(0)) <> 1
MessageRequester("Fehler", "Fehler beim Ändern der AVI-Einstellungen aufgetreten")
EndIf
If Not AVIMakeCompressedStream(@pAVICompressed, ppavi, aopts(0), 0)=#AVIERR_OK
MessageRequester("Fehler","Ein Fehler ist beim Komprimieren der AVI aufgetreten!")
End
EndIf
error = AVIStreamSetFormat(pAVICompressed, 0, @tga, SizeOf(TGA_HEADER))
If error
MessageRequester("Fehler","Fehler "+Str(error)+" ist beim Konfigurieren des AVI-Formats aufgetreten!")
End
EndIf
EndIf
Else
End
EndIf
EndIf
Repeat
If spieler And verein And quit = #False
If restartCapture <> deviceno
t1 = timeGetTime_()
If *fps\fps_timer < t1
*fps\fps_res = *fps\fps_counter
*fps\fps_timer = t1 + 1000
*fps\fps_counter = 0
Else
*fps\fps_counter + 1
EndIf
doCapture(deviceno)
;
; While isCaptureDone(deviceno) = 0
; If quit = 1
; Break
; EndIf
; Delay(1)
; Wend
If CatchImage(deviceno, *pImage)
If recording = #False
If frame <> 0
frame = 0
AVIStreamRelease(pAVICompressed)
AVIStreamRelease(ppavi)
AVIFileRelease(ppfile)
EndIf
StartDrawing(ImageOutput(image))
DrawImage(ImageID(deviceno), 0, 0)
DrawText(10, 10, "FPS: " + Str(*fps\fps_res), RGB(255, 0, 0))
StopDrawing()
SetGadgetState(deviceno, ImageID(image))
Else
If AVIStreamWrite(pAVICompressed,frame,1,*pImage,MemorySize(*pImage),#AVIIF_KEYFRAME,#Null,#Null)
frame+1
EndIf
EndIf
EndIf
t2 = timeGetTime_()
time = t2 - t1
If time < *fps\fps_delay
Delay(*fps\fps_delay - time)
Else
Delay(1)
EndIf
Else
deinitCapture(deviceno)
Repeat
Delay(100)
Until initCapture(deviceno, @scp)
restartCapture = -1
EndIf
Else
StartDrawing(ImageOutput(image))
Box(0,0,width,height,#Black)
DrawText(width/2-TextWidth(drawnText)/2,height/2-TextHeight(drawnText)/2,drawnText)
StopDrawing()
SetGadgetState(#Video_Gadget1,ImageID(image))
SetGadgetState(#Video_Gadget2,ImageID(image))
Delay(1000)
EndIf
Until quit = #True Or quitThread = deviceno
deinitCapture(deviceno)
Else
MessageRequester("Fehler","Es ist ein Fehler beim Starten der Webcams aufgetreten!")
End
EndIf
EndIf
EndIf
EndIf
If *fps > 0
FreeMemory(*fps)
EndIf
If *namebuffer > 0
FreeMemory(*namebuffer)
EndIf
If *pImage > 0
FreeMemory(*pImage)
EndIf
EndProcedure
Procedure getVideoFormat()
ExamineDesktops()
testwidth = DesktopWidth(0)-150
testheight = DesktopHeight(0)-225
Repeat
width + 16
height + 9
Until width >= testwidth Or height >= testheight /2
width-16
height-9
EndProcedure
Procedure LoadImages()
CatchImage(#new_ico,?new)
ResizeImage(#new_ico,75,75)
CatchImage(#open_ico,?open)
ResizeImage(#open_ico,75,75)
CatchImage(#delete_ico,?del)
ResizeImage(#delete_ico,75,75)
CatchImage(#play_ico,?play)
CatchImage(#pause_ico,?pause)
CatchImage(#stop_ico,?stop)
CatchImage(#next_ico,?nex)
CatchImage(#previous_ico,?previous)
CatchImage(#record_ico,?record)
ResizeImage(#record_ico,25,25)
EndProcedure
Procedure OpenWindow_0()
If OpenWindow(#Window_0,0,0,width+200,height*2+150,"Kegelcam",#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_MinimizeGadget)
ButtonImageGadget(#new_buttonImage,25,DesktopHeight(0)/2-150-175/2,75,75,ImageID(#new_ico))
GadgetToolTip(#new_buttonImage,"Neue Aufnahmedatei erstellen")
ButtonImageGadget(#open_buttonImage,25,DesktopHeight(0)/2-50-175/2,75,75,ImageID(#open_ico))
GadgetToolTip(#open_buttonImage,"Bestehende Aufnahmedatei öffnen")
ButtonImageGadget(#delete_buttonImage,25,DesktopHeight(0)/2+50-175/2,75,75,ImageID(#delete_ico))
GadgetToolTip(#delete_buttonImage,"Momentane Aufnahmedatei löschen")
ButtonImageGadget(#previous_buttonImage,width/2-150+125,height*2+200-137.5,50,50,ImageID(#previous_ico))
ButtonImageGadget(#play_buttonImage,width/2-90+125,height*2+200-137.5,50,50,ImageID(#play_ico))
ButtonImageGadget(#stop_buttonImage,width/2-30+125,height*2+200-137.5,50,50,ImageID(#stop_ico))
ButtonImageGadget(#record_buttonImage,width/2+30+125,height*2+200-137.5,50,50,ImageID(#record_ico),#PB_Button_Toggle)
ButtonImageGadget(#next_buttonImage,width/2+90+125,height*2+200-137.5,50,50,ImageID(#next_ico))
ImageGadget(#Video_Gadget1,DesktopWidth(0)-(DesktopWidth(0)-125),DesktopHeight(0)-(DesktopHeight(0)-25),width,height, 0)
GadgetToolTip(#Video_Gadget1,"Doppelklick zum Aktualisieren")
ImageGadget(#Video_Gadget2,DesktopWidth(0)-(DesktopWidth(0)-125),DesktopHeight(0)-(DesktopHeight(0)-25)+25+height,width,height, 0)
GadgetToolTip(#Video_Gadget2,"Doppelklick zum Aktualisieren")
If CreateMenu(#menu,WindowID(#Window_0))
MenuTitle("Datei")
MenuItem(#new_menuitem, "Neu")
MenuItem(#open_menuitem, "Öffnen")
MenuItem(#delete_menuitem, "Löschen")
MenuBar()
MenuItem(#close_menuitem, "Beenden")
MenuTitle("Einstellungen")
MenuItem(#settings_menuitem,"AVI Kompressionseinstellungen")
Else
MessageRequester("Error","Fenster konnte nicht geladen werden!")
End
EndIf
Else
MessageRequester("Error","Fenster konnte nicht geladen werden!")
End
EndIf
EndProcedure
Procedure OpenWindow_1(usage.s)
If OpenWindow(#Window_1,0,0,300,400,"Bitte "+usage+" wählen",#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_MaximizeGadget)
ListViewGadget(#list,10,10,280,325)
If usage = "Verein"
If ExamineDirectory(#newDir,GetCurrentDirectory()+"Vereine\","*.*")
While NextDirectoryEntry(#newDir)
If DirectoryEntryType(#newDir) = #PB_DirectoryEntry_Directory And DirectoryEntryName(#newDir) <> "." And DirectoryEntryName(#newDir) <> ".."
AddGadgetItem(#list,-1,DirectoryEntryName(#newDir))
EndIf
Wend
EndIf
Else
If ExamineDirectory(#newDir,GetCurrentDirectory()+"Vereine\"+verein+"\","*.*")
While NextDirectoryEntry(#newDir)
If DirectoryEntryType(#newDir) = #PB_DirectoryEntry_Directory And DirectoryEntryName(#newDir) <> "." And DirectoryEntryName(#newDir) <> ".."
AddGadgetItem(#list,-1,DirectoryEntryName(#newDir))
EndIf
Wend
EndIf
EndIf
ButtonGadget(#buttonOK,10,345,80,45,"OK")
ButtonGadget(#buttonNew,110,345,80,45,"Neu")
ButtonGadget(#buttonDelete,210,345,80,45,"Löschen")
EndIf
EndProcedure
Procedure windowHandler()
Protected capture01TH,capture02TH, q1, q2
Protected eventGadget, eventType, eventMenu
Protected window1Usage.s
Protected tempString.s
capture01TH = CreateThread(@capture(), 0)
capture02TH = CreateThread(@capture(), 1)
Repeat
If quit = #False
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventGadget()
;--Window0
Case #new_buttonImage
If spieler And verein
If MessageRequester("","Mit dem erstellen einer neuen Aufnahmedatei wird die momentane Aufnahme von "+spieler+"("+Verein+") verworfen."+#CRLF$+"Wollen Sie fortfahren?",#PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes
window1Usage = "Verein"
OpenWindow_1(window1Usage)
StickyWindow(#Window_1,1)
EndIf
Else
window1Usage = "Verein"
OpenWindow_1(window1Usage)
StickyWindow(#Window_1,1)
EndIf
Case #open_buttonImage
If spieler And verein
currentFile = OpenFileRequester(spieler+" ("+verein+")",GetCurrentDirectory()+"Vereine\"+verein+"\"+spieler+"\","Kegelcam Aufnahmedatei (*.kcf)|*.kcf",0)
Else
MessageRequester("Fehler","Es muss erst ein Spieler initialisiert werden um eine Aufnahmedatei zu öffnen!")
window1Usage = "Verein"
OpenWindow_1(window1Usage)
StickyWindow(#Window_1,1)
EndIf
Case #delete_buttonImage
If currentFile
If MessageRequester("Löschen","Sind sie sich sicher, dass sie die momentane Aufnahmedatei löschen wollen?",#PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes
DeleteFile(currentFile)
currentFile = ""
EndIf
EndIf
Case #Video_Gadget1
Select EventType()
Case #PB_EventType_LeftDoubleClick
restartCapture = 0
EndSelect
Case #Video_Gadget2
Select EventType()
Case #PB_EventType_LeftDoubleClick
restartCapture = 1
EndSelect
Case #record_buttonImage
Select EventType()
Case #PB_EventType_LeftClick
If spieler And verein
If recording = #False
recording = #True
Else
recording = #False
If MessageRequester("","Möchten sie die Aufnahme endgültig abspeichern?",#PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes
EndIf
EndIf
Else
SetGadgetState(#record_buttonImage,0)
EndIf
EndSelect
;--Window1
Case #buttonOK
If window1Usage = "Verein"
verein = GetGadgetText(#list)
CloseWindow(#window_1)
If verein
window1Usage = "Spieler"
OpenWindow_1(window1Usage)
EndIf
Else
spieler = GetGadgetText(#list)
CloseWindow(#Window_1)
If spieler And verein
SetWindowTitle(#Window_0,"Kegelcam - "+spieler+" ("+verein+")")
EndIf
EndIf
Case #buttonNew
tempString = InputRequester("Neu","Geben Sie den Namen des neuen "+window1Usage+"s ein","")
If tempString
AddGadgetItem(#list,-1,tempString)
If window1Usage = "Verein"
If Not ExamineDirectory(#newDir,GetCurrentDirectory()+"Vereine\"+tempString,"*.*")
If Not CreateDirectory(GetCurrentDirectory()+"Vereine\"+tempString)
MessageRequester("Fehler","Fehler beim erstellen des Vereins")
EndIf
Else
FinishDirectory(#newDir)
EndIf
Else
If Not ExamineDirectory(#newDir,GetCurrentDirectory()+"Vereine\"+verein+"\"+tempString,"*.*")
If Not CreateDirectory(GetCurrentDirectory()+"Vereine\"+verein+"\"+tempString)
MessageRequester("Fehler","Fehler beim erstellen des Spielers")
EndIf
Else
FinishDirectory(#newDir)
EndIf
EndIf
EndIf
Case #buttonDelete
If GetGadgetState(#list) > -1
If MessageRequester("Löschen","Sind Sie sich sicher, dass sie den "+window1Usage+" "+GetGadgetText(#list)+" aus der Liste entfernen wollen?"+#CRLF$+"Durch das Löschen gehen alle gespeicherten Aufnahmedateien ebenfalls verloren!",#PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes
RemoveGadgetItem(#list,GetGadgetState(#list))
If window1Usage = "Verein"
DeleteDirectory(GetCurrentDirectory()+"Vereine\"+verein,"")
Else
DeleteDirectory(GetCurrentDirectory()+"Vereine\"+verein+"\"+spieler,"")
EndIf
EndIf
EndIf
EndSelect
Case #PB_Event_Menu
Select EventMenu()
Case #settings_menuitem
MessageRequester("Fehler","Funktion noch nicht implementiert!")
EndSelect
Case #PB_Event_CloseWindow
If EventWindow() = #Window_0
If recording
If MessageRequester("","Es wird zur Zeit ein Video aufgenommen."+#CRLF$+"Wollen sie wirklich beenden?",#PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes
CloseWindow(#Window_0)
If IsWindow(#Window_1)
CloseWindow(#Window_1)
EndIf
quit = #True
EndIf
Else
CloseWindow(#Window_0)
If IsWindow(#Window_1)
CloseWindow(#Window_1)
EndIf
quit = #True
EndIf
Else
CloseWindow(#Window_1)
EndIf
EndSelect
EndIf
q1 = IsThread(capture01TH)
q2 = IsThread(capture02TH)
Until quit = 1 And q1 = 0 And q2 = 0
EndProcedure
Procedure main()
setupProgramm()
getVideoFormat()
LoadImages()
OpenWindow_0()
windowHandler()
AVIFileExit()
escapiClose()
EndProcedure
main()
;{ datasection
End
DataSection
new: IncludeBinary "Neu.png"
open: IncludeBinary "Öffnen.png"
del: IncludeBinary "Löschen.png"
play: IncludeBinary "play.png"
pause: IncludeBinary "pause.png"
stop: IncludeBinary "stop.png"
nex: IncludeBinary "next.png"
previous: IncludeBinary "previous.png"
record: IncludeBinary "record.png"
EndDataSection
;}