Nog bezig met het Wengo omzetten. Nu aan de gang met het video gedeelte. Het instant message gedeelte duurde toch veel langer dan ik verwacht had.
Het lukte mij ook niet om een nieuwe Wengo account aan te maken. Zie ook [ubuntu] Wengophone, anyone? [Archive] - Ubuntu Forums De truck die hierin beschreven wordt is om via een ander SIP netwerk Wengo te gaan gebruiken voor ip uitwisseling. Heb al een account op ekiga.net aangemaakt. Ekiga werkt wel minder goed dan Wengo. Ga mij nog wel verdiepen in hoe we zo´n SIP netwerk zelf kunnen maken. Hoe de geluidspakketten tussen twee peers achter firewall naar elkaar toe worden gezonden wil ik nog beter uitzoeken. Lijkt mij niet dat deze geluidpakketten via publieke derde peer gaan.
Het is mij gelukt om de Wengo source te compileren , zonder dat hij meer klaagt op het kunnen vinden van unresolved variabelen. Ik zie op internet dat ffmpeg source nog niet met Visual Studio (VS) is gecompileerd. Wat ze m.i. wel doen is het compileren met een andere compiler en dan de lib files mee gaan linken met VS. Zie ook http://www.codeproject.com/KB/cpp/Using_FFMpeg.aspx Alle ffmpeg code die Wengo gebruikt is m.i. wel om te zetten in VS.
Alleen als ik het programma opstart crasht hij, zonder dat hij het hoofdprogramma uit gaat voeren. Crasht op malloc in visual studio’s new.cpp op “ while ((p = malloc(size)) == 0)” met unhandled exception.
Ik ga nu proberen om van 0 naar alle Wengo “include.cpp files” te gaan. Compileren en checken of het hoofdprogramma werkt. Een integratie van 24 (include.cpp) files is al gelukt, nu nog 26 er bij compileren. Probleem bij die 26 files is dat de ‘procedures’ vaak verwijzen naar andere ‘procedures’ in andere nog te compileren (“26”) files.
Kortom de compilatie volgorde is van belang. Probeer elke keer een file te pakken met minst afhankelijkheden en als er wel afhankelijkheden in zitten dan deze in de file gaan zetten door uit andere files code te gaan halen. Dit om te kunnen checken of het hoofdprogramma wel of niet meer werkt.
Een andere vraag. Als ik de derde partij wil zijn, moet je dan de STUN server routine van de STUN source gaan draaien. Deze code staat normaliter niet aan.
Ik kon Wengo in één source file ‘compileren’, echter als ik hem wilde opstarten crasht hij zonder in het hoofdprogramma op te gaan starten. Ik heb nu zo veel mogelijk source code in een library gedaan en de rest in een ander project met deze library weer aangekoppeld. Dit werkt m.i. wel. Want ik krijg nu 397 “unresolved external symbol” errors. Momenteel ben ik bezig om deze fouten weg te werken. Ik moet nu nog 78 errors wegwerken. Ik ben ook overgegaan naar Visual Studio 2008, echter ik zie dat ik 8 errors krijg op de boost library, dus ga weer terug naar Visual Studio 2005.
Ik probeer Wengo zo snel mogelijk aan de praat te krijgen, dan kan ik zien hoe het werkt en daarbij het telefoonboek op de foondump database gaan zetten.
Mijn source rip van Wengo compileert nu, alleen hij gaat stuk als ik hem opstart. Dit ligt m.i. aan niet goede dll “Qtsvgd4.dll”.
Ik zie dat hij stuk gaat op de dll “Qtsvgd4.dll”. Ik heb dll vervangen door een nieuwere, echter dan gaat hij verder. Op http://www1.cs.columbia.edu/~salman/peer/src/0_1/wengo-compile-instr.txt staat hoe je orgineel zou kunnen compileren. Ik heb nu opnieuw QT aan het compileren, want zal wel goede dll van de juiste versie moeten hebben. Had dll al vervangen door nieuwere, echter je krijgt dan verderop dat hij een beginpunt van dll niet kan vinden.
De Wengo rip kan ik nu compileren, echter ben nu in een “Visual Studio 2005 DLL Hell” beland, zie ook Tim Anderson's IT Writing | Tech Writing Heb nu fout R6034 bij het opstarten.
Heb ook de wengophone-2.1.2-source m.b.v. http://www1.cs.columbia.edu/~salman/peer/src/0_1/wengo-compile-instr.txt geconfigueerd en gecompileerd. Hij geeft aan dat hij dshow.h niet kan vinden. Dshow.h is onderdeel van "Microsoft Windows SDK for Windows server 2008 (6001.18000.367). Ik zal het path “E:\Program Files\Microsoft SDKs\Windows\v6.1\Include” er in moeten prutsen.
Ben nog niet van de DLL hell van Wengo af. Ik zie Yate ( http://yate.null.ro/pmwiki/ ) wel als alternatief voor Wengo om proberen aan de praat te krijgen. Indien ik meer ervaring heb krijg ik Wengo ook wel aan de praat met of zonder Boost/QT. Zie voor de architectuur http://yate.null.ro/yate-diagram_12.png
Afgelopen weekend met Yate zitten prutsen om het werkend te krijgen. Je moet zaken die je niet gebruikt er uit gooien zoals de Postgress koppeling. Deel van de code van Wengo er in aanbrengen. Ik had speex.h toegevoegd echter kreeg veel foutmeldingen. Dit geeft aan dat niet alle speex source in Yate zit.
Vanavond/morgen ga ik verder met Yate.
De hartelijke groet Jan Marco
P.S. Mijn bedoeling is om op het telefoonboekje in SQLyog een belfunctie in te ‘programmeren’.
Het is mij gelukt om Yate hoofdprogramma te compileren en op te starten. Ik ben nu van de DLL hell af, want het zat in mijn configuratiefout van mijn rip-Yate Visual Studio project. Zelfde probleem had ik bij mijn Wengo-rip programma. Het programma (programma.exe) zal je met compiler optie Multi-threaded Debug DLL (/MDd) moeten aanzetten. Hierna in linker Advanced optie “mainCRTStartup” invoeren. Hierna start hij wel in main() op, zonder dat je in een DLL-Hell belandt --)
De opbouw van Yate is vrij simpel. Je hebt hoofdprogramma die 48 Yate-dll’s laadt, waarvan h323chan.yate m.i. de moeilijkste afhankelijkheden heeft, namelijk PTLibsd.lib, ptclibd.lib en OpenH323sd.lib. Deze libraries zijn weer afhankelijk van andere projecten (cyrus-sasl-2.1.22, openldap-2.1.17, etc).
Ik ga eerst met de officiële Yate programma tussen mijn twee internet verbindingen bellen. Hierna kan ik met mijn Yate-rip gaan experimenteren. Alle officiële dll’s er onderhangen. Waarna je elke dll kan vervangen door eigen versie. Ook ga ik proberen de Yate source in het project te trekken door DLL’s te verwijderen. Mijn bedoeling is programma goed te begrijpen, dat je het zonder QT laat werken en dan de routines in SQLYog gaan inbouwen,
Ben nu druk bezig om het VOIP-telefoneren via (de officiële distributie van)Yate en ekiga.net proberen aan te praat te krijgen via mijn twee Internetverbindingen. Lukt niet zo goed. Mogelijk heeft het met firewal te maken. Moet nog verder uitzoeken. Ik forward port 5060 wel naar de windowssystemen.
Ik ga nu proberen om voip tussen mijn twee verbindingen werkend gaan maken. Bij Yate moet je wel poort 5060 forwarden naar je pc, dus vanuit internet bereikbaar zijn. Geluid werkt nog niet bij mij. Ga ook de opvolger van Wengo ( http://www.qutecom.org/ ) testen.
Het is mij nu gelukt om te bellen tussen mijn twee internet verbindingen met Qutecom. Ik moest Account → Log Off… → Modify → Advanced → server/proxy beiden “iptel.org” invullen op mijn ene peer. Op mijn andere peer is dit “ekiga.net”. Moet nog beter uitzoeken welke poorten (5060, 60, etc) geforward moeten worden.
Een ander punt is het goed zetten van de geluidskanalen op de geluidskaart(en) met Tools → Configuration → Audio → Input device/Output device/Ringing device.
Om QT te kunnen compileren met vs2005 zou je volgens Internet hotfix http://support.microsoft.com/kb/930198 moeten installeren na het installeren van de servicepack van Visualstudio2005.
Ben nu bezig om Yate en Qutecom (voorheen Wengo genoemd) op een apart XP-systeem te compileren met de QT-versie (en alleen voor Qutecom van belang Boost 1_34_1-versie), die de officiële( binary) distributies ook gebruiken. Ik zie nu dat bij het compileren van QT QtAssistantClientd.lib niet wordt aangemaakt, dus nog een keer nmake op de QT-source uitvoeren. Nmake utivoeren duurt wel erg lang… Ik denk dat QtAssistantClientd.lib ook niet echt wordt gebruikt in de (Yate/Qutecom) applicaties, dus hopelijk geen ‘show-stopper’.
Ik ga dus de source van de executables van Yate en Qutecom compileren en in begin alle dll’s van de officiële( binary) distributies er bij kopiëren. Hierna de dll’s stuk voor stuk weghalen door mijn eigen Wengo-rip er in toe te voegen. In mijn beeld gebruiken verschillende VOIP-programma’s onderliggend dezelfde routines. Hierna mijn rip in de SQLYog programma gaan hangen. Je kan dan met rechter muistoets in bepaald tabel iemand gaan bellen via VOIP.
De hartelijke groet Jan Marco
P.S. Gelijktijdig ben ik op een ander systeem bezig om mijn Wengo-rip te ontdoen van dubbele source-declaraties, dus ik werk naar zo weinig mogelijk onafhankelijke source code.
Het lukt mij nu wel om Chrome op XP werkend te krijgen. Al gelukt op twee pc’s. Alle (200) projecten succesvol gecompileerd! Het lukt nog nog niet op Vista. Wel of niet goed compileren zit hem in de environment waarin je het compileert.
Momenteel ben ik bezig om Qutecom (Wengo) de officiele versie op XP te compileren en linken. Ik krijg foutmelding bij opstarten. Het compileren lukt mij alleen op 1 langzame pc met IDE harddisk. Ben nog aan het nadenken of ik deze schijf in mijn nieuw testsysteem ga stoppen. Het executeren werkt nog niet op XP, want zit routines in die alleen in de Vista DLL zitten. Heb deze routines wel uitgezet, echter zit met libraries aan elkaar. Heb nu alle libraries weggegooid om het opnieuw op te gaan bouwen. Sommige libraries zijn van derden, dus die weer teruggekopieerd. Hopelijk zit daar niet de Vista afhankelijkheid in. Denk aan avformat-51.lib, glib.lib, etc. als libs van derden.
Het is mij net gelukt om Qutecom (voorheen Wengo genaamd) te compileren en succesvol op te starten op XP en Vista. Ik moet nog testen of het bellen tussen mijn twee internetverbindingen ook echt werkt.
Het is mij gelukt om te bellen met VOIP over twee peers met een door mij gecompileerde en gelinkte Qutecom versie. Ik ga nog twee webcams aansluiten en mogelijk ook het “instant message” gedeelte testen. Dit doe ik omdat ik als ik het ga omzetten te blijven checken of ik de functionaliteit onderweg niet aan het ‘kwijtraken’ ben. De gelinkte versie werkt wel in debug mode. Je kan in een apart dos scherm welke meldingen hij afgeeft, zoals (geluids)buffer over flow/under flow.
Van het weekend ook weer beginnen met database synchronisatie. Eerst weer even concentreren op het synchroniseren van het ‘telefoonboekje’. Om te synchroniseren moet ik eerst de tabellen opbouwen en dan loop je weer tegen andere uitdagingen aan, zoals de records checken met de plaats-tabel en de postcode tabel, etc. Ik weet van vorige keer dat ik hier mee bezig was ik de thread-technieken redelijk goed werkend had. In mijn beeld lijkt database synchronisatie redelijk wel op “OS-programmeren”. Denk aan starten, stoppen, tijdelijk stoppen van processen die in bepaalde prioriteit werken. Het mooie van Chrome is dat de applicatie uit meerdere processen bestaat. Je kan dan ook de processen in verschillende niveau’s (real time, normal, batch, etc) laten werken. De prioriteit in Windows wordt m.i. bepaald door de prioriteit van het proces en de prioriteit van de thread, welke onder dat proces hangt.
Het is mij net gelukt om de officiele Qutecom QT source in eigen programma te compilere/linken en op te starten. Wel de onderliggende source als libraries mee laten linken. Nu ga ik het programma testen en daarna de libraries (1 voor 1) weg proberen te werken.
Momenteel ben ik bezig om mijn nieuwe pc in te gaan richten. Basis is een 64-bit Linux-PC met Vmware. In Vmware heb ik een XP machine aangemaakt met alle software (compiler 2005 en een geactiveerde virus scanner, etc). Hierna maak ik verschillende clonen aan van deze systeem.
Voor elke toepassingsgebied maak ik dus 1 pc aan. Denk hierbij aan Qutecom (Wengo), Chrome, SQLyog, opbouw van de tabellen, databasesync, etc.
Alle source code kopieer ik op een NTFS schijf in een dataserver-pc. Elke pc kan je dan via een share gaan koppelen aan de dataserver-pc. Het lukte mij niet om de data te migreren van het oud systeem naar de nieuwe. Elke keer ging er iets fout zoals bestandsnaam te groot of tweemaal een netwerkhik.
Na de migratie wil ik nieuwe schijven in het oud systeem (vervangen of er bij) zetten om de systemen onderling te kunnen spiegelen. Bieden zitten op andere internet verbinding, dus beter om VOIP en database synchronisatie te gaan testen.
RGJ, In mijn beeld kan ik alle programma’s die ik wil veranderen compileren en opstarten.
Iemand op codeproject heeft hetzelfde idee als wat ik in het verleden had. Zie ook BasicAdmin - Personal Organizer - CodeProject Later is mijn gedachte veranderd om acties in een database browser als sqlyog (www.sqlyog.com) te gaan implementeren. De acties die je kan uitvoeren afhankelijk maken van welk database/tabel je op klikt. Een beetje anders geformuleerd: BasicAdminCP.aspx gebruikt veel routines die ook al in Sqlyog zitten en zou m.i. beter op SQLyog kunnen verder bouwen.
Indien in een blobveld in sqlyog een pdf bestandje zou zitten dan zou je met de sumatrapdf code (geinclude in sqlyog) het kunnen gaan viewen. Zie ook Free PDF Reader - Sumatra PDF voor de source code. In mijn beeld is het dus zaak om de juiste source code te gaan ‘sprokkelen’ en het gaan voortbrengen in een framework.
Momenteel ben ik bezig om de juiste infrastructuur op te zetten om goed te kunnen werken. Ik loop nu tegen aan dat mijn webcam van Logitech niet werkt. N.B. Een paar euro webcam van lidl werkt wel onder vmware xp!