ERLEDIGT
NEIN
NEIN
ANTWORTEN
12
12
ZUGRIFFE
6749
6749
EMPFEHLEN
-
23.10.06 13:39 #1
Mahlzeit. Also mal wieder Ich. Es ist zum Heulen. Ich sitze in unregelmäßigen Abständen am Visualstudio2005 und versuche meine ersten Schritte in aktuellen Sprachen. Wenn ich doch zumindest eine Source runterladen und einfach kompilieren könnte, wäre zumindest ein kleines Glücksgefühl da.
Nee Nee, so einfach ist das alles nicht #WÜRG# !
Aufgabenstellung:
Unter VS2005 - ob VB oder C# - einfach nur ein Previewfenster des Videoeingangs zeigen.
Also FirewireCam angeschlossen und per WDM oÄ ansprechen.
Sources mit 100% Lösungsansätzen:
http://www.limegreensocks.com/DShow/
http://sourceforge.net/project/showf...roup_id=136334
Nun:
Ich bekomme nicht mal "Capturetest" von der ersten Seite zum Laufen.
Fehler/Warnungen: Directshowlib nicht referenziert.
In der DirectX.Capture ist sie sauber verwiesen, in der Capturetest findet er sie nicht.
Also:
Suche Hilfe. Jemand der mit mir die Capturetest von Anfang bis zum erfolgreichem
Release-Compile durchgeht.
Nebenbei: Bin bereit, zu Donaten, wenn mir jemand die Basics von VB/C#.Net beibringt.
Beispiel: Diese Seite - deren Codesnippets und ihre Anwendung in eigenen Projekten
hinreichend erklären
mfg chmeeGeändert von chmee (23.10.06 um 13:58 Uhr)
Mein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
Benutzt den DANKE-Knopf oder bewertet den Beitrag
"GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
-> Regexp <- -> php <- -> Javascript <-
-
23.10.06 13:59 #2
Warum löscht Du den defekten Verweis nicht und fügst ihn von Hand wieder hinzu?
Könnte sein, dass die Version nicht stimmt oder ähnliche Probleme...
-
23.10.06 14:23 #3
Danke
Das mit dem neu Hinzufügen hat geklappt.
Kommt davon, wenn ich es nicht gewohnt bin, dass ein einfacher Code einen
Riesenunterbau benötigt ( Projektordner, IDE-Einstellungen )
mfg chmeeMein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
Benutzt den DANKE-Knopf oder bewertet den Beitrag
"GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
-> Regexp <- -> php <- -> Javascript <-
-
25.10.06 19:11 #4
Zu guter Erst, Ich kenne es aus den mir innewohnenden Fachgebieten, dass nuub-Fragen
echt ärgerlich sind. Und Meine Antwort ist das diplomatische "Die Welt ist voll von Tuts,
also lerne !" Stehe nun als genau der "N o o b" da
1. Video per Openfiledialog aussuchen - Läuft
2. Graphbuilder erstellen - ?
3. Videowindow initialisieren - ? Wo wird das Video dargestellt ? Form ?
4. Video im Pause Modus auf Frame 0 darstellen UND auslesen können
Ziel: Einzelbilder eines Videos mit Tastendruck durchgehen.
Im Directshowlib2005-Sample(PlayWnd) ist natürlich ein Beispiel drin, aber leider mit so einem
Overhead, dass ich nicht durchblicke.
Nochmal: Ein bisschen unter die Arme greifen täte mir wirklich gut
mfg chmee
Geändert von chmee (25.10.06 um 20:03 Uhr)
Mein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
Benutzt den DANKE-Knopf oder bewertet den Beitrag
"GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
-> Regexp <- -> php <- -> Javascript <-
-
- Sollte selbst für einen n o o b kein Problem darstellen. *fg*

- Benötigte Objekte
Interfaces Öffnen:Code csharp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
IGraphBuilder m_objGraphBuilder = null; IBasicVideo2 m_objBasicVideo2 = null; IBasicAudio m_objBasicAudio = null; IVideoWindow m_objVideoWindow = null; IVideoFrameStep m_objVideoFrameStep = null; IMediaEventEx m_objMediaEventEx = null; //IMediaSeeking m_objMediaSeeking = null; IMediaPosition m_objMediaPosition = null; IMediaControl m_objMediaControl = null; /*-------------------------------------------------------------------------------------------*/ const int WM_APP = 0x8000; const int WM_GRAPHNOTIFY = WM_APP + 1; const int EC_COMPLETE = 0x01; const int WS_CHILD = 0x40000000; const int WS_CLIPCHILDREN = 0x02000000; const int WS_CLIPSIBLINGS = 0x04000000;
Interfaces Schließen:Code csharp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
void GetInterfaces( string clipFile ) { Type comtype = null; object comobj = null; try { try{ comtype = Type.GetTypeFromCLSID( Clsid.FilterGraph ); if ( comtype == null ) throw new NotSupportedException( "DirectX (8.1 or higher) not installed?" ); comobj = Activator.CreateInstance( comtype ); m_objGraphBuilder = (IGraphBuilder) comobj; comobj = null; int hr = m_objGraphBuilder.RenderFile( clipFile, null ); if ( hr < 0 ) Marshal.ThrowExceptionForHR( hr ); m_objMediaControl = (IMediaControl) m_objGraphBuilder; m_objMediaEventEx = (IMediaEventEx) m_objGraphBuilder; //m_objMediaSeeking = (IMediaSeeking) m_objGraphBuilder; m_objMediaPosition = (IMediaPosition) m_objGraphBuilder; m_objVideoWindow = m_objGraphBuilder as IVideoWindow; m_objBasicVideo2 = m_objGraphBuilder as IBasicVideo2; m_objBasicAudio = m_objGraphBuilder as IBasicAudio; } finally { if ( comobj != null ){ Marshal.ReleaseComObject( comobj ); comobj = null; } } } catch ( Exception ex ){ throw new COMException( string.Format( "DirectShow.NET Error!{0}Could not get interfaces. See InnerException for Details!{0}", Environment.NewLine ), ex ); } }
Code csharp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
public int CloseInterfaces() { int hr = 0; try { if ( m_objMediaControl != null ){ hr = m_objMediaControl.StopWhenReady(); m_objMediaControl = null; } if ( m_objMediaEventEx != null ){ hr = m_objMediaEventEx.SetNotifyWindow( IntPtr.Zero, WM_GRAPHNOTIFY, IntPtr.Zero ); m_objMediaEventEx = null; } if ( m_objVideoWindow != null ){ hr = m_objVideoWindow.put_Visible( DsHlp.OAFALSE ); hr = m_objVideoWindow.put_Owner( IntPtr.Zero ); m_objVideoWindow = null; } //m_objMediaSeeking = null; m_objMediaPosition = null; m_objBasicVideo2 = null; m_objVideoFrameStep = null; m_objBasicAudio = null; if ( m_objGraphBuilder != null ) Marshal.ReleaseComObject( m_objGraphBuilder ); m_objGraphBuilder = null; } catch{} return hr; }}
- Input Typ Analysieren:
Video Laden:Code csharp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
internal enum ClipType { None, AudioVideo, VideoOnly, AudioOnly } ClipType clipType; void CheckClipType() { if ( m_objBasicAudio == null ) clipType = ClipType.None; else clipType = ClipType.AudioOnly; if ( (m_objVideoWindow == null) || (m_objBasicVideo2 == null) ) return; int visible; int hr = m_objVideoWindow.get_Visible( out visible ); if ( hr < 0 ) return; else{ if ( m_objBasicAudio == null ) clipType = ClipType.VideoOnly; else clipType = ClipType.AudioVideo; } }
Das videoWindowHandle ist das Handle zu einem Control, in dem das Video "hineingemalt" werden soll.
In der Regel ein Panel
Das notifyWindowHandle ist has Handle zu dem Control an welches die EC_COMPLETE Nachricht gesendet wird.
(Wenn die Wiedergabe abgeschlossen ist)
Dieses Control sollte immer das Parent des Panels sein, in dem Du das Video wieder gibst.
Video Abspielen:Code csharp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
int PrepareToPlayback( out int hr, IntPtr videoWindowHandle, Rectangle videoWindowRectangle, IntPtr notifyWindowHandle ) { hr = -1; CloseInterfaces(); if ( !GetInterfaces( sFileName ) ) return hr; CheckClipType(); if ( clipType == ClipType.None ) return hr; hr = m_objMediaEventEx.SetNotifyWindow( notifyWindowHandle, WM_GRAPHNOTIFY, IntPtr.Zero ); if ( (clipType == ClipType.AudioVideo) || (clipType == ClipType.VideoOnly) ){ m_objVideoWindow.put_Owner( videoWindowHandle ); //Handle des Video Panel's holen m_objVideoWindow.put_WindowStyle( WS_CHILD | WS_CLIPSIBLINGS | WS_CLIPCHILDREN ); m_objVideoWindow.SetWindowPosition( videoWindowRectangle.Left, //VideoFenstergröße dem Video Panel anpassen videoWindowRectangle.Top, videoWindowRectangle.Width, videoWindowRectangle.Height ); } else throw new Exception( "Tartegetfile has only Audio Stream!" ); return hr; }
Ende der Wiedergabe:Code csharp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
public bool Play( IntPtr videoWindowHandle, Rectangle videoWindowRectangle, IntPtr notifyWindowHandle ) { try { int hr; PrepareToPlayback( out hr, videoWindowHandle, videoWindowRectangle, notifyWindowHandle ); else hr = 0; if ( hr >= 0 ) hr = m_objMediaControl.Run(); return hr >= 0; } catch ( Exception ex ){ throw new COMException( string.Format("DirectShow.NET{0}Could not start clip. See InnerException for Details!{0}", Environment.NewLine ), ex ); } }
Um festzustellen wann eine Datei abgespielt wurde, wird die WndProc-Methode des Controls überschrieben,
welches in der Play Funktion als NotifyWindow angegeben wurde, um die EC_COMPLETE Nachricht abzufangen.Code csharp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
DsEvCode DirectShowEventCode; int DirectShowEventParam1, DirectShowEventParam2, DXexec_hr = 0; protected override void WndProc( ref Message m ) { if ( m.Msg == myDirectShowPlayer.WMgraphnotify ) { try { do { v_DXexec_hr = myDirectShowPlayer.objMediaEventEx.GetEvent( out DirectShowEventCode, out DirectShowEventParam1, out DirectShowEventParam2, 0 ); if ( DXexec_hr < 0 ) break; DXexec_hr = myDirectShowPlayer.objMediaEventEx.FreeEventParams( DirectShowEventCode, DirectShowEventParam1, DirectShowEventParam2 ); if ( DirectShowEventCode == DsEvCode.Complete ) myDirectShowPlayer.objMediaControl.Pause(); } while ( DXexec_hr == 0 ); } catch ( Exception ex ) { Trace.WriteLine( ex.ToString() ); } } base.WndProc( ref m ); }
- Video Stoppen und "zurück spulen":
Code csharp:1 2 3 4 5 6 7 8 9 10
public bool Stop() { try { m_objMediaControl.StopWhenReady(); int hr = m_objMediaPosition.put_CurrentPosition( 0 ); return hr >= 0; } catch ( Exception ex ){ throw new COMException( string.Format("DirectShow.NET{0}Could not stop clip. See InnerException for Details!{0}", Environment.NewLine ), ex ); } }
aus denen ich einiges an Statusangaben entfernt und anderen Sachen habe.
Er zeigt Dir lediglich wie man die Interfaces öffnet, den Videotyp prüft, das Video abspielt, stoppt und das Ende der Wiederagabe fest stellt.
Frag wenn Du noch offene Fragen hast.Geändert von Christian Kusmanow (22.01.07 um 10:12 Uhr) Grund: Rückgaberwert bei GetInterfaces auf void geändert (war überflüssig)
MfG,
Christian
Wer sein Problem definiert, hat es schon halb gelöst!
Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.
The Code Project! - C# Programming | C# / VB.NET Pendants
Regeln + Netiquette
Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
und vor allem nicht auf das, was euch die IHK dazu erzählt!
Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...
- Sollte selbst für einen n o o b kein Problem darstellen. *fg*
-
26.10.06 18:20 #6
Erstmal 1000 Dank. Leider komme ich gerade von Arbeit und muss gleich weiter,
habe morgen Zeit, teste damit meine Knowledge und melde mich .
mfg chmee
**EDIT**
zu 1. Doch
Da ist nix Sequentielles mehr.
Mein Problem ist - wie schon mehrmals angedeutet -
dass ich in die OOP-Denke noch nicht reinfinden konnte. Aber dann eben jetzt mit der Brechstange.
2.
Interfaces öffnen - hmm , ok .. Darf man sowas Prozedur oder Funktion nennen ?
Rückgabewert Bool ob oK oder nicht, right ? Warum ist hiervor kein Public ?
Interfaces schließen - auch OK - und warum wird hier ein public gesetzt ?
-- Eine Klammer am Ende zuviel ?
Play - Wozu das Else da drin ?
DSevCode ? Welche Klasse/Verweis ?
ClsId - Woher das und woher Marshal
Werde es jetzt auf meine Bedürfnisse umschreiben bzw. erst mal zum Laufen kriegen.
Trial and Error to learn this Shice
mfg chmeeGeändert von chmee (27.10.06 um 18:45 Uhr)
Mein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
Benutzt den DANKE-Knopf oder bewertet den Beitrag
"GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
-> Regexp <- -> php <- -> Javascript <-
-
Ohh mann, hättest ruhig einen neuen Post erstellen und den alten löschen können.
Hab deine Antort gar net mitbekommen.
- GetInterfaces - Die Methode würde ich eine Funktion nenen, da sie einen Rückgabewert hat.

Die Funktion ist nicht public, da sie nur intern verwendet werden soll. Also nur von den Wiedergabemethoden. - CloseInterfaces - Die Methode ist public damit von aussen her alles abgebrochen werden kann.
Zb bei'm schließen des Programms. Ich würde das sowieso explizit in der Dispose Methode deines Controls aufrufen!
Also das mit der Klammer ist ja mal tragisch.
- Play - Das else ist drinnen, damit hr auf 0 gesetzt wird wenn die Widergabe nicht initialisiert werden konnte.
- DsEvCode ist in der DS Lib vorhanden, ergo musst sie auch referenzieren.
Was Marshal ist, kannst in der MSDN oder in deinem Objektbrowser nachlesen.
MfG,
Christian
Wer sein Problem definiert, hat es schon halb gelöst!
Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.
The Code Project! - C# Programming | C# / VB.NET Pendants
Regeln + Netiquette
Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
und vor allem nicht auf das, was euch die IHK dazu erzählt!
Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...
- GetInterfaces - Die Methode würde ich eine Funktion nenen, da sie einen Rückgabewert hat.
-
14.11.06 13:33 #8
Nicht schlimm.. Musste mich eh n paar Tage damit beschäftigen.
Habe jetzt ne Woche nicht dran gesessen, stand da vor dem Problem, dass ich
den Pause-Modus bzw. frameweises Weitergehen nicht hinbekommen habe.
Danke erstmal, ich merke, dass mir alle Hilfe nichts bringt, wenn ich es nicht restlos
verstanden habe..
mfg chmeeMein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
Benutzt den DANKE-Knopf oder bewertet den Beitrag
"GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
-> Regexp <- -> php <- -> Javascript <-
-
Dann debugge dich durch das Beispiel auf TheCodeProject. Das ist für mein verhältnisse einfach gestrickt und lauffähig.
Ich denke wenn Du dir ein bissel mühe gibst, wirst das schon verstehen.
Ich hab das auch nur mit Hilfe von dem Beispiel von TheCodeProject verstanden.
Für das vor- und zurückspulen verwendest m_objMediaPosition.put_CurrentPosition.
Als Control könntest eine TrackBar verwenden. TrackBar.MaxValue währe dann m_objMediaPosition.get_Duration.MfG,
Christian
Wer sein Problem definiert, hat es schon halb gelöst!
Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.
The Code Project! - C# Programming | C# / VB.NET Pendants
Regeln + Netiquette
Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
und vor allem nicht auf das, was euch die IHK dazu erzählt!
Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...
-
08.01.07 23:32 #10
Hi
Mal wieder die Zeit gefunden, um weiter am Modul Video zu drehen..
Bin im Geiste C# näher gekommen.
Also neue Fragen - nehmen wir den obigen SourceCode als Beispiel.
1. Das videoWindowHandle wäre im Falle des gemeinten Panel also Panel1.Handle ?Code :1
m_objVideoWindow.put_Owner( videoWindowHandle );
( bzw in Deinem Fall ein Panel namens videoWindowRectangle )
Und das WindowNotify-Handle wäre als Parent zB Mainform.Handle ?
2. Was heisst das out hr ?Code :1
PrepareToPlayback( [B]out hr[/B], videoWindowHandle, videoWindowRectangle, notifyWindowHandle );
ist im DShow-SampleCode :1 2
const int WM_APP = 0x8000; const int WM_GRAPHNOTIFY = WM_APP + 1;
3. Ist 0x0400+13=0x8000+1 ? Hex-Kodierung und Dezimal gemischt?Code :1
private const int WMGraphNotify = 0x0400 + 13;
Letzte Frage für Heute:
Ich bekomme trotz meines wachsenden Wissens an jener StelleCode :1 2 3 4 5
hr = mediaEventEx.SetNotifyWindow(Handle, WMGraphNotify, IntPtr.Zero); DsError.ThrowExceptionForHR(hr); [B]hr = videoWindow.put_Owner(this.Handle);[/B] DsError.ThrowExceptionForHR(hr);
immer eine NullReferenceException - Instanz erstellen mit Neu.
Hatte ich übrigens schon mehrere Male, dass ich gutgläubig Methoden
aufgerufen habe ( Bitmap.Clone() ), die mir ein NullRef-Exc geworfen haben.
4. Anfängerfehler ?
Mit besten Grüßen und
erstmal vielen Dank für erste erfolgreiche Schritte in eine neue Welt
chmeeGeändert von chmee (08.01.07 um 23:35 Uhr)
Mein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
Benutzt den DANKE-Knopf oder bewertet den Beitrag
"GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
-> Regexp <- -> php <- -> Javascript <-
-
@Christian: Wieso hast du bei deiner Methode GetInterfaces(string) einen bool als Rückgabewert? Entweder du bekommst eine Exception oder es hat funktioniert. Da brauchst du doch keinen Boolean als Rückgabe.
-
12.01.07 15:36 #12
zu 1. Mit n bissel Trial&Error hab ichs rausgefunden..
zu 2. Wenn eine Funktion mehrere Rückgabevariablen benötigt, nimmt man ein out , Right ?
zu 4. Tja, hatte noch keine Instanz vom graphbuilder IVideoWindow gemacht.
Code :1
this.videoWindow = this.graphBuilder as IVideoWindow;
@Christian:
Habe es soweit am Laufen, versuche gerade die Trackbar für das MediaSeeking
zu mißbrauchen. Wie ändere ich denn die Ausgabe von Get_Duration in Frames ?
ScrollMedia -> Trackbar !
mfg chmeeCode :1 2 3
hr = this.mediaSeeking.SetTimeFormat(TimeFormat.Frame); ScrollMedia.Maximum = this.mediaPosition.get_Duration;
Mein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
Benutzt den DANKE-Knopf oder bewertet den Beitrag
"GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
-> Regexp <- -> php <- -> Javascript <-
-
Indem Du TrackBar.MaxValue entsprechend MediaPosition.StopTime einstellst und dann noch die TrackBar.TickFrequency anpasst. Wie genau Du die TrackBar.TickFrequency einstellst ist Dir überlassen, kannst sie aber immer in Bezug auf die Frames berechnen. Hier mal ein Beispiel, damit man sekündlich vor- und zurückspulen kann:
Code csharp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
double m_stopTime, m_currentPosition // Initialisiert die TrackBar. Sollte immer dann aufrufen werden, // wenn sich das aktuelle Video geändert hat oder die Aufnahme abgeschlossen ist. public void SeekTrackBar_Init() { if( mediaPosition == null ) return; mediaPosition.get_StopTime( out m_stopTime ); mediaPosition.get_CurrentPosition( out m_currentPosition ); seekTrackBar.Maximum = (int) Math.Round( m_stopTime, 0 ); seekTrackBar.Value = (int) Math.Round( m_currentPosition, 0 ); if( m_stopTime > directXCapture.DXcapture.FrameRate ) seekTrackBar.TickFrequency = (int) Math.Round( m_stopTime / capture.FrameRate, 0 ); else seekTrackBar.TickFrequency = 1; } void seekTrackBar_Scroll( object sender, System.EventArgs e ) { if( mediaPosition == null ) return; mediaPosition.put_CurrentPosition( seekTrackBar.Value ); }
@Norbert Eder: Strimmt, der Rückgabewert ist bei GetInterfaces(string) überflüssig.MfG,
Christian
Wer sein Problem definiert, hat es schon halb gelöst!
Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.
The Code Project! - C# Programming | C# / VB.NET Pendants
Regeln + Netiquette
Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
und vor allem nicht auf das, was euch die IHK dazu erzählt!
Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...
Ähnliche Themen
-
Webcam auf Panel anzeigen und Bild/Video Speichern DirectShowLib
Von Topia im Forum .NET Grafik und SoundAntworten: 1Letzter Beitrag: 16.12.08, 11:53 -
FrameSize mit DirectShowLib
Von PeteProgram im Forum .NET Grafik und SoundAntworten: 0Letzter Beitrag: 28.04.08, 16:26 -
C# Directshowlib entfernen der Letterbox
Von inuki im Forum .NET Grafik und SoundAntworten: 0Letzter Beitrag: 24.03.08, 09:21 -
Mehrere dynamisch gefüllte Comboboxen - Performance leidet sehr
Von 10x10 im Forum Flash PlattformAntworten: 7Letzter Beitrag: 24.05.07, 13:50 -
Linux anfänger brauch ma hilfe für STREAMEN unter Linux
Von G-Mein im Forum Linux & UnixAntworten: 9Letzter Beitrag: 03.11.04, 11:57






Zitieren
Login





