200 likes | 404 Views
Εφαρμογή Αναπαραγωγής Πολυμέσων με χρήση DirectX. Πτυχιακή εργασία του Οδυσσέα Σπανουδάκη (923) Επιβλέπων Δρ. Σ. Καζαρλής. Καθηγητής Αναπλ. Προϊστάμενος. Θεωρητικό υπόβαθρο. DirectX Ιστορία Μέρη DirectDraw Direct3D DXGI Direct2D DirectWrite DirectCompute DirectInput DirectPlay
E N D
Εφαρμογή Αναπαραγωγής Πολυμέσων με χρήση DirectX Πτυχιακή εργασία του Οδυσσέα Σπανουδάκη (923) Επιβλέπων Δρ. Σ. Καζαρλής. Καθηγητής Αναπλ. Προϊστάμενος
Θεωρητικό υπόβαθρο • DirectX • Ιστορία • Μέρη • DirectDraw • Direct3D • DXGI • Direct2D • DirectWrite • DirectCompute • DirectInput • DirectPlay • DirectSound • DirectSound3D • DirectMusic • DirectShow • XACT • Χρήση DirectX API • Sdk’s • Πολυπλοκότητα • Ενσωμάτωση • Com και Com objects • Interfaces • Instantiation • Διαχείριση μνήμης • Κανάλι Alpha • Thread safe objects • Waves, Midi, Wavetables (dls)
Τεχνολογίες και Εργαλεία • Εργαλεία υλοποίησης • Περιβάλλον χρήσης • Προγραμματιστικές μέθοδοι • Templates, generics, reflection, πολυμορφισμός, ATL, design patterns • Διαχείριση project • Τρίτα εργαλεία • Το project σε αριθμούς • 290 κλάσεις, 403 files • Loc 22.490 • C++ 12.655 • C# 9.835
Αρχιτεκτονική σχεδίαση Αναπαραγωγή Περιβάλλον χρήστη IPC με χρήση Sockets Communication Protocol Server Client • Πλεονεκτήματα • Χειρισμός από απόσταση • Εύκολη αλλαγή interface • Full-duplex communication • Πολλοί clients • Μειονεκτήματα • Connection oriented (limited) • Εύκολο sniffing, spoofing
Δομή UltraPlayer • Messages • Communication • Exceptions • Playback • Addon • Environment • Resources • Utilities • Διαχείριση μηνυμάτων • Playback • Παράθυρο • Events Μοντέλο νημάτων Οντότητες Κύριο νήμα Tcp Server
Κεντρικές δομές Ultra Player • PlayerFactory • UltraPlayer • TCPServer • WindowManager • APlayer • PlayerInstructor • IRequestHandler • RequestHandler Selector
Επικοινωνία • TcpServerThread • MessagePipe • WindowManager • RequestHandlerSelector • IRequestHandler {data} CreateRequest NewMessage InPipeEvent SetRequest GetRequest • RequestFactory {wait} GetListener HandleRequest Response SetResponse • RequestFactory GetResponse {data} • MessagePipe • TCPServer
Μηνύματα επικοινωνίας Είδη μηνυμάτων: • Play • Pause • Resume • Stop • SetVolume • Termination • Seek • SetImage • SetText • WindowLayout • VideoLayout • Display Devices Info • SoundFx • Sound3d • MidiProperties • MidiOutput PortInfo • SetMidiOutputPort • SetDls • SetFrequency • SetRate • RequestFactory • ARequest • IStringParser • AMessage • MessageType • ResponseType • AResponse • ResponseFactory
DirectShow και γράφοι • Φίλτρα ως δομικά στοιχεία • Λειτουργίες φίλτρων • Αλυσίδα φίλτρων • Διαχείριση γράφου • GraphManager • Intelligent Connect • Τρίτα φίλτρα • Γεγονότα – events • Χαρακτηριστικά και Vmr9
Multi Video Player • APlayer • Χρήση Vmr9 • Πολλές είσοδοι • Διάρκεια αναπαραγωγής • Ρύθμιση παραθύρου • Ορισμός παραμέτρων • Δυνατότητα μετακίνησης video • ADShowPlayer • MultiVideoPlayer • AGraphManager • MultiVideo GraphManager
Πρόσθετα - Addons Δυνατότητες • Δυναμική • Δημιουργία / ανανέωση • Ανάθεση • Απελευθέρωση • Thread safe • Πολλοί αποδέκτες • AddonType • AAddon • AVisibleAddon • AD3dVisibleAddon • AddonManager • ImageD3dVisibleAddon • AExpandable • TextD3dVisibleAddon
Vmr – Allocator Presenter Υπέρθεση γραφικών • Δομή Vmr9 • Custom Alloc Pres • Direct3d + Vmr9 • Σκηνή 3d • Camera • Ρυθμίσεις Direct3d • Render • Back buffers
Single Video Player Αρχικοποίηση Rendering
Δομές Single Video Player • APlayer • ADShowPlayer • AGraphManager • SingleVideoPlayer • AddonManager • IVMRSurfaceAllocator9 • IVMRFilterConfig9 • SingleVideoGraphManager • IVMRImagePresenter9 • Direct3dVmr9DshowPlayerEnvironment • AllocatorPresenter • AExpandable • PlaneScene • CustomVertex • Position3d
Midi Player • Event messages • Αναπαραγωγή με χρήση DirectMusic • Wavetables &Dls • Παράμετροι • Tempo • Spatialization • Effects • Output port • APlayer • MidiPlayer • MidiWrapper • MidiPortInfo
Αναπαραγωγή Midi • Midi Player • MidiWrapper • IDirectMusicSegment • IDirectMusicPerformance • IDirectMusicLoader Stop SetStartPoint(0) Stop LoadMidi LoadObjectFromFile SetParam GetObject(dlsFile) SetParam(dls) Download(performance) Play() PlaySegmentEx()
Audio Player • APlayer • Αναπαραγωγή κυματομορφών wav • Χρήση • DirectSound, • DirectSound3d • Sound effects • Spatialization • Min, Max volume • Doppler • Frequency/pitch • CSound • WaveFileValidator • AudioPlayer • CSoundManager • SoundFxManager • SoundFxType • ASoundFx • IStringParser • SoundFxFactory • ICopyable • Echo • Compressor • Distortion • Reverb • Gargle • Flanger • ParamEq • Chorus
Αναπαραγωγή Midi • WavefileValidator • SoundFxManager • Audio Player • DirectSound3d Buffer • DirectSound • Buffer • CSound • CSoundManager IsValid(file) SetAllParameters(head relative) Create Play DisableAllFx() Stop Initialize() SetFxEnable() ActivateFx() SetVolume Stop Get3DBufferInterface
Συμπεράσματα • Δυνατότητες DirectX • Μεταφερσιμότητα • Δυσκολία υλοποίησης • Έλλειψη τεκμηρίωσης • Ελλείπεις υποστήριξη format. • DirectX 10 • XACT, XAudio2