ich hatte vor ein paar Jahren mal mein selbst entwickelten Multi Media Player "Xenorate" vorgestellt.
Da ich das Projekt nun komplett wieder zum Leben erweckt habe will ich natürlich euch das nicht vorenthalten.
Geschichte
Xenorate ist wie manche vielleicht wissen oder auch nicht mein Hauptprojekt, andem ich schon seit 1999 Werkele.
Das ganze ist ein Delphi Projekt welches gedacht ist, alle audio/video/stream usw formate abzuspielen.
Offiziel existiert das Projekt seit 2002 mit dem namen "Xenorate" und wurde seitdem etliche male in einigen Computer PC Zeitschriften vorgestellt.
Dies kann man natürlich auf der offizielen Xenorate Homepage nachlesen, allerdings hat sich da seit vielen Jahren nicht mehr viel "Offiziel" getan.
Schlechte Zeiten
Aber, das letzte Release ist 1 1/2 Jahre her, sowie die letzten news.
Das Forum musste wegen "Spam" gelöscht werden und die Zahl der Downloads der offizielen Version sinkt täglich.
Eigentlich hatte ich das Projekt schon zum sterben verurteilt, erst recht weil es tonnenweise an fehler hatte,
die den genuss von Multimedia trübten.
Käferbeseitigung
Allerdings anfang diesen Jahres hab ich den aktuellen code in ein "Subversion Repository" gepackt
und angefangen die bugs zu Analysieren und beseitigen.
Nach 2 Monaten intensiver Fehlersuche hab ich den Haupt übeltäter und viele kleinere bugs beseitigt.
Da mich es angekotzt habe, das ich keine Japanischen files abspielen kann,
hab ich in einem monat 60% vom code bis auf ein paar ausnahmen komplett auf Unicode umgebaut.
Nach einer gründlichsten überarbeitung der Hauptcode teile lief dann alles rund.
Neue features
Natürlich hab ich nicht nur Fehler beseitigt, sondern auch neue unterstützungen eingebaut wie z.b.
- Mausrad support für (Volume / Media seeking)
- Unicode support (Anzeigen und Abspielen von UTF-16 files)
- Stabiles und Schnelleres Video System
- Vista support
- Besseres Codecpack
- Playlist einträge verschieben
- Neue dateiformate
- Besseres Random
und etliches mehr.
Veränderungen
- Homepage wird auf ein CMS System umgestellt mit neuem Layout
- Neuer Standard Skin
- Bugtracking Portal (Mantis)
Release
Nun ist es so, das die Version von Programmiertechnischer sicht fertig ist, aber ich die Version erst offiziel hochladen will wenn die neue Homepage Online geht.
Seit geraumer Zeit hab ich die überarbeitete Version ausgewählten Tester zur verfügung gestellt und alles sieht bisher sehr gut aus
Wenn alles so weiter läuft wie bisher dann wird es im Sep/Okt ein Release geben
Wer lust hat kann gern die Version von meinem Bugtracking Portal herunterladen und ausprobieren.
Das ganze ist zu finden unter http://tracker.xenorate.com (News/Main sind die links zu finden)
Läuft unter win 2k/xp/vista, es wird wohl nicht mehr auf Win9x systemen laufen da (Unicode)
Xenorate wurde vollständig in Delphi 5 entwickelt.
Mittlerweile bin ich auf Delphi 7 umgestiegen, weil es einigen Komponenten bevorzugen.
Unicode
Um Xenorate Unicode fähig zu bekommen hab ich mich den alten TNTUnicodeControls bedient
und einiges umgeproggt, sowie fast alle String/File routinen nach Unicode umgebaut (Inkl. ID3 Tag reader etc.)
Alles läuft bis auf ein paar ausnahmen mit WideString und PWideChar ab.
Skin Engine
Ist sehr simplel und statisch gelöst.
Jedes control ist basierend auf TImage oder TPaintbox.
Gezeichnet wird also per Canvas bzw. BitBlt.
Selbst die Playlist ist in der art selbst gebaut, was aber auch die meiste Arbeit gekostet hatte zu programmieren.
Für die Verschiebfunktion hab ich 3 tage dran gebaut
Aber im allen ist das ziemlich schnell und tut bisher seinen zweck
Audio Playback
Für Audioplayback wird die BASS library benutzt.
Das funktioniert sehr gut, der CD Modus ist ebenfalls in Bass gelöst.
Bass hat standard mässige unterstützten für einige Streambare Audio formate wie z.b. mp3/wave/ogg.
Da mir das aber nicht genug ist, hab ich bass um einige andere formate erweitert wie AAC/MPC/FLAC usw.
Diese stellt bass als 3rd party ebenfalls zur verfügung.
Für alle anderen weiteren audio formate wird directshow benutzt.
DVD/Video script/playback
Das videoplayback läuft vollständig auf der DirectShow ebene ab und basiert auf den DSPack Multimedia Komponenten.
Da leider DSPack tot ist und es voller bugs war musste ich diese erst beseitigen damit das benutzbar war,
sowie einige direkt anpassungen für Xenorate.
Um sicherzustellen das formate wie avi/mpg/mkv/ogm/ts/mp4 und weitere immer abgespielt werden,
habe ich ein Scriptsystem (Basierend auf Bero Script) entwickelt welches bestimmte Filter Kombinationen benutzt damit der Abspielvorgang unahängig der Automatischen Erkennung von MS abläuft. (Graph.RenderFile)
Das ganze ist mittlerweile ziemlich mächtig geworden und wird auch ständig von mir erweitert.
Ich erhoffe mir damit neue formate (sofern DirectShow filter dafür existieren) problemlos in Xenorate zu integrieren,
ohne eine Zeile code der Haupt Anwendung zu ändern.
Es gibt einiges neues seit der letzten Version, ich habe einige Tickets umgesetzt,
sowie einige Verbesserungen an der Skin Engine durchgeführt.
Das Skin XML Format ist nun fertig, die lade routinen sind gut optimiert, dank eigener simplen XPath Funktion
Neuer Standard Skin ist zu 90% fertig und muss sagen, bis auf ein paar kleinigkeiten und das noch fehlendene "Video Vollbild Steuerungs Fenster" ist alles sauber und sieht gar nicht schlecht aus.
Hier mal nen bild:
Es war gar nicht so leicht, den Skin so umzusetzten wie ich mir das vorgestellt hatte,
musste einiges in der Skin Engine umbauen damit das gepasst hatte:
- Ecken bei Resize forms, können nun unterschiedlich gross sein.
- Time Numbers können nun ebenfalls unterschiedlich gross sein.
Bisher sieht aber alles gut aus, ich hab einer der hoffentlich letzten kritischen bugs der Video Engine gefixed,
welches Xenorate crashen hatte lassen.
Ein wenig da optimiert und da gefixed.
[url]Was noch ansteht ist[/url]
Änderungen:
- Skin pfad überarbeitung (Nutzung von User Application Data)
- Intelligentere Video grössen erkennung
- Screenshot Funktion überarbeiten
- Sprachdateien überarbeiten (Deutsch/English)
New features:
- Ballon tips implementieren (Playstate, Fehlerstati etc.)
- Fehler Management verbessern
- Xenorate fokusieren wenn Video abgespielt wird, falls Xenorate nicht im Minimieren zustand ist.
- Mehr Hotkey funktionen hinzufügen
- Skin Preview implementieren
- Support zur steuerung des Audio Outputs (SPDIF, 5.1 etc.)
Ein Release dieser Version wird noch hoffentlich diese Woche laufen und erste Betatests des neuen Skins
Es gibt ein paar neuerungen seit dem letzten Update.
Ich fass mich diesmal kurz:
Fixes:
- Kritischer video absturz fehler beseitigt (Com schnittstelle stirbt unterwegs)
- Kleinere mini bugs beseitigt
Neuerungen:
- Support für Mehrkern CPUs bei Musik (1 Thread per core)
- Einstellen der Musik abspiel Priorität (Buffer length, Update Period)
- Korrekte erkennung der Streams mit ausgabe von Detail Informationen möglich
- Besseres Fehlermanagement dank Stream erkennung.
Streams wo nicht dekodiert werden können, wird der entsprechende Grund angezeigt.
z.b. "Video codec for format "XVID" not found."
- Einstellen was Xenorate tun soll, falls ein "Fehler" passiert ist: "Nichts", "Nächste datei abspielen"
Preview von Streamerkennung (Media informations)
Alle streams gefunden:
Video decoder nicht gefunden:
Neuer Skin steht zum Download bereit:
Der neue Base2 Skin welcher Standard Skin von Xenorate 2.60.0.0 wird, steht zum Download bereit.
Allerdings ist dieser noch in der Beta Phase, somit ist diese noch nicht ganz fertig.
Das "Videofullscreen Control" Fenster ist noch nicht umgesetzt und ist momentan nur ein Farb misch der Skin datei ;D
Endlich kann ich das machen, wo ich die Ganze zeit machen wollen.
Features einbauen, Runder machen, auf features von Usern eingehen
Deshalb sind noch geplant:
- Verbessertes Fehler Management (Aussagekräftigere Fehlermeldungen)
- Log dateien durch eigenes "Xenorate Trace" tool ersetzten.
- Bessere Explorer integration
- Skin preview in Config Dialog
- Benutzerhandbuch (Suche noch willigen der das machen will, bei bedarf einfach PM an mich!)
- Verbesserung der Video Engine (Support für möglichkeit Video Renderer zu wählen)
- Support für Video Mixing Renderer 7/9
- Support für Enhanced Video Renderer (Vista support)
Es hat sich wieder einiges getan, einige neue sachen sind dazugekommen, sowie paar bugs wurden gefixed.
Das Audiosystem unterstützt nun Mehrkern CPUs, sowie eine einstellung der Abspiel Priorität.
Das Fenster Fokus verhalten wurde verbessert, sollte nun immer korrekt im Vordergrund geholt werden, wenn man ne Datei per Explorer startet
oder man das Hauptfenster anklickt.
Hab das Textlogging durch nen eigenes Trace Tool ersetzt, dies beschleunigt natürlich das logging intern
und gibt mir defintiv mehr Übersicht über Fehler.
Die Notifications wurde verbessert, es gibt nun Format Datenbanken welche die FourCC und AudioCC Codes enthalten.
Leider funktionieren die Balloon tips nur wenn das Tray Icon aktiv ist, eventuell werd ich ne eigene Balloon box implementieren,
damit ich unabhängig von dem Tray Käse bin.
- Auswahl des Video Renderers per Configuration mit Fallback.
Folgende Video Renderer Kombinationen werden umgesetzt:
- Video Renderer
- Overlay Mixer > Video Renderer (Dies benutzt Xenorate momentan)
- Video Mixing Renderer 9
- Enhanced Video Renderer (Vista only)
Durch diese änderung muss einiges dann in der xgraph script engine passieren,
weil dieses momentan auf Overlay Mixer und Video Renderer zugeschnitten ist.
Nach langer zeit auch mal wieder ein Update hier.
Es gab einige veränderungen seit dem letzten Update hier:
- Generelle Stablität erhöht
- Performance verbessert
- Video stabilität verbessert
- Richtiges form docking system implementiert like winamp (Form glue)
- Internet verbindung erkennung bei News verbessert
- Icons in Configuration
- Kleinere Bugfixes
- Support für Fernbedienungen für Windows Media Center
Alle änderungen sind im Xenorate Bugtracker Portal aufgelistet.
Es gibt auch nun eine Roadmap, wo alle Tickets die noch offen sind aufgelistet werden, sowie eine Prozentualer fortschritt.
Mantisei dank
Ich empfehle jedem der Xenorate benutzt oder benutzen will, sich dieses Release zu ziehen. Bisher ist das die stabilste Xenorate Version die jemals erschienen ist
So ich habe nun das erste Release Candidate für Xenorate 2.6 hochgeladen.
Die Version enthält einige Bugfixes, sowie endlich den neuen Standard Skin inkl. "Video Vollbild Steuerung".
Neues commandline handling
Das Commandline Handling ist komplett neugeschrieben worden und arbeitet nun mit Pipes,
welches mir eine integration in andere Anwendungen (z.b. Media Portal) ermöglicht,
sowie eine Remote Steuerung der Anwendung
Dies verbessert natürlich auch die Explorer integration.
Vista support
Es gibt nun auch endlich eine richtige Vista Unterstützung
Die Xenorate Resourcen werden nun per User in den Anwendungsdaten Ordner installiert. (Wenn vista erkannt wurde)
EXE und DLL´s bleiben weiterhin im "Programme\Xenorate" Verzeichnis.
Ich habe dafür gesorgt das alle Funktionen keine Admin rechten mehr benötigen.
Das wurde erreicht indem:
- Nur noch lesend auf LOCAL_MACHINE und CLASSES_ROOT zugegriffen wird.
- Resourcen aus Anwendungsdaten gelesen wird
- Vista Manifest erstellt mit "asInvoker" Rechten, so das keine Admin rechte benötigt werden.
Videosystem verbessert
- Erkennung der Media informationen verbessert
- DVD Modus wieder repariert, da war nen faules ei drin
- Endlich die lästigen "Lila" Balken im Video entfernt, welches durch den Color key vom Overlay Mixer kamen.
- Kleinere performance optimierungen indem ich die video engine aufgeräumt hab
Das Release 2.6 ist somit auch abgeschlossen und wartet im Download bereich auf euch
Es gibt auf der Homepage eine sehr grosse feature liste, die ich immer aktuell halte.
Wer also gern Details über Xenorate Media Player wissen will, der kann sich das gerne durchlesen.
Zukunftsplanung
Ich habe noch viel zu tun, wenn ich mir die Roadmap im Bugtracker angucke -.-
Die Homepage muss noch nach Deutsch übersetzt werden und natürlich auch im CMS zur auswahl stehlen.
Dazu kommen noch kleinere Änderungen an der Homepage und und und.
Hauptsächlich will ich mich aber einem neuen Videosystem widmen, welches verschiedene Video Renderer zur auswahl bietet,
sowie eine eigens entwickelte Codec Erkennung mit Profil system und eine allgemeine Performance Optimierung.
Endlich kommt auch wieder OpenGL ins spiel, da ich auch einen Video Renderer in OpenGL basteln werde.
Es wird auf jedemfall folgende Video Renderer zur auswahl geben:
- Eigener GDI Video Renderer
- Overlay Mixer > Video Renderer (Aktueller weg von Xenorate 2.6)
- Video Mixing Renderer 7
- Video Mixing Renderer 9
- Enhanced Video Renderer (Vista only)
- Eigener OpenGL Video Renderer
Ich hatte ursprünglich vor komplett weg von DSPack (DirectShow Wrapper für Delphi) zu gehen,
da dieses schon seit 2004 nicht mehr aktuallisiert wird und mir immer ein wenig unstabil vorkam.
Da aber DSPack DirectShow Filter als TComponent in die Anwendung integrieren kann,
sofern der komplette Quellcode vorliegt, werd ich mich noch nicht davon verabschieden.
Dateianhänge:
Dateikommentar: Screenshot vom neuen Standard Skin
Ich war fleissig und habe angefangen mir eine neue TCustomControl klasse zu
basteln, die als Video Ausgabe für die nächste Xenorate Version geplant ist.
Dieses teil ist dazu da, verschiedene DirectShow Video Renderer zur nutzen
und dem User die Wahl zu lassen, mit welchem Video Renderer er seine Videos angucken will.
Dazu ist die codebasis sehr flexibel gestaltet, damit ich jeden x-beliebigen video renderer filter
unterstützen kann.
Folgende Video Renderer hab ich schon eingebaut:
- Enhanced Video Renderer (Der ab .NET 3.0 mitgelieferte video renderer, der als standard in vista benutzt wird)
- Video Mixing Renderer 9 (Sehr guter video renderer für XP oder höher)
- Video Mixing Renderer 7 (Existiert seit Windows 2000, aber ist besser als der Overlay Mixer )
- Default Video Renderer (Standard video renderer der seit Windows 95 existiert und kein Overlay kann).
- OpenGL Video Renderer (Eigenens entwickelter video renderer welches OpenGL als ausgabe nutzt)
Das hab ich in erster linie gemacht, damit ich weg von DSVideoWindowEx2 komme,
welches aktuell die Rendering Basis für Xenorate ist, allerdings seit 2003 nicht mehr weiterentwickelt wird
und was am aller wichtigsten ist, weg vom Overlay Mixer.
Dieses ding sorgt dafür, das Vista in den Basic Theme Modus umschaltet,
sobald man ein Video mit Xenorate startet und eine eklige Infobox anzeigt,
das die Anwendung nicht kompatibel mit Vista sei
Download
Ich habe das Projekt mal kompiliert und hochgeladen.
Ihr könnt es gern mal testen und im Xenorate Meinungsforum rückmeldung geben.
Leider macht der noch einige Probleme wenns um Resizen und Parent Handle umschalten geht.
Ich hätte wohl direkt Win32 API programmieren sollen, anstatt nen TForm zu nutzen
Immernoch hab ich das Problem, das der YUV > RGB/BGR konverter sehr langsam ist, und somit HD Videos unanguckbar macht.
Dazu kommt noch, das es auf dem alten OpenGL stiel programmiert ist, welches natürlich keine richtige Overlay unterstützung bietet.
Selbst mit PBO ist es langsam, welches aber auch daran liegen kann, das ich mir das damals zusammengehackt habe,
und froh war das es funktioniert hat.
Wenn ich sowas wie einen Allocator in GL hätte:
- Speicher direkt auf der Graka reservieren
- Bits direkt in den Speicher schreiben, fertig.
- Aktuelles Videobild anzeigen vom Graka speicher
Das wäre genial, aber ich weiss nicht ob es mittlerweile sowas gibt.
Ich müsste das ding fitt machen für GL 2 und Shader nutzen für die Konvertierung von YUV > RGB/BGR.
Leider musste ich letzte Woche feststellen das Xenorate 2.6 im internet irgendwie
keine grosse Positive Resonanz bekommen hat, der grund hierfür ist wohl ein "Buffer Overflow" in meinem XPL Playlist format.
Dieser Buffer Overflow kann es angreifer ermöglichen schadcode in einer speziell angefertigen XPL Playlist auszuführen.
Der Grund dafür war ein Stück Code der das alte Non-Unicode-XPL Format lesen wollte, falls im Header die falsche Version erkannt wurde.
Da sieht man mal wieder, das Abwärtskompabilität nicht immer gut ist
Viele Seiten die ich gefunden habe, haben Xenorate als "Harmful" Player dargestellt.
Natürlich hab ich schnell reagiert und eine 2.6.1 Released welches einen verbesserten XPL Loader enthält.
Zusätzlich hab ich das XPL Format ein wenig umgestellt, das es in Zukunft schwieriger wird "Buffer Overflows" auszunutzen.
Wenn eine XPL Playlist gespeichert wird, wird diese mit einer arg Signierungscode versehen.
Sobald der Signierungscode falsch ist, ist es eine ungültige Playlist.
Ich empfehle also jedem die neue Version von dem Homepage runterzuladen, oder per LiveUpdate zu aktuallisieren.
Ich habe nun meinen neuen Video Renderer mit ich zu verschiedene "DirectShow Video Renderer"
wechseln kann grundlegend fertig und auch sogar endlich in Xenorate selbst integriert.
Mit einfachen virtuellen funktionen die überschrieben werden,
geht wechseln von Video Renderern sehr einfach von der Hand =)
Musste viele Codeteile umbauen und neuschreiben,
was ich hoffe Xenorate eine Stabilitätsstufe höher bringt.
Folgende Video Renderer werden aktuell unterstützt:
- Video Renderer ohne Overlay Mixer
- Video Renderer mit Overlay Mixer (Der alte DSPack, DSVideoWindowEx2 weg)
- Video Mixing Renderer 7
- Video Mixing Renderer 9
- Enhanced Video Renderer
- OpenGL Video Renderer
Man kann auch wieder die Aspektratio umstellen,
sowie in den Vollbild oder Fenster modus umschalten.
Was mir aktuell noch Kopfschmerzen bereitet sind:
- Enhanced Video Renderer Ratio ändern hat komische effekte.
Wenn ich die Ausgabe Grösse vom EVR anpasse, dann wird das meistens nicht richtig übernommen
und es sieht dann sehr komisch aus, wenn da Bildreste die rumwackeln neben dem eigentlichem Video sind.
Bisher kein Plan was ich da tun kann.
Kann ich den nen Resize Ereignis erzwingen mittels WinAPI ?
Das nämlich der Kontext neu gezeichnet werden muss.
- Wie bekomm ich OSD (On-Screen-Display) in allen DirectShow Video Renderer zum laufen.
Im Overlay Mixer, also methode 2 ist es kein Problem da ich hier auf den "ColorKey" zugreifen kann und
muss dann nur noch mit OnPaint drauf zeichen, mit der Hindergrundfarbe des Colorkeys.
Aber für die anderen gibt es das nicht, da gibt es die Alpha Bitmaps (VMR Bitmap),
welche als eigener Layer übers Video gelegt wird, was grundsätzlich gut ist... aber...
der text würde sich immer dem video anpassen und z.b. immer im video sein auch wenn es nicht notwendig ist.
Spiele gerade mit Transparenten Forms rum um zu gucken ob ich nicht eine art Workaround für
finden kann, welche dann auch bei allen läuft.
- Desktop Playback
Dies geht wohl nur mit dem jeweiligen Colorkey und wie ich oben schon geschrieben habe,
unterstützt nur der Overlay Mixer diesen
Aktuell hab ich keinen Plan wie ich das bei den anderen umsetzten kann.
- Color controls (Brightness
Was ich ebenfalls noch nicht implementiert habe, sind Farbsteuerungen.
Dürfte bis auf OpenGL eigentlich sehr einfach sein.
Ich hab bisher kein Plan, wie ich ohne Shader "Helligkeit/Kontrast" etc. simulieren kann in OpenGL ohne
die komplette Gamma von Windows umzustellen
Ich hab mehrere monate verzweifelt versucht meinen neuen video renderer in xenorate zu integrieren. Leider ist es mir nicht gelungen, alles wie ich es will zum laufen zu bringen.
Die wichtigsten video renderer bleiben schwarz (EVR, VMR9) Es gibt krasse resize bugs in allen video rendern. Meine Directshow Script Engine mag die neuen Video Renderer nicht. Ich krieg die zusammenarbeit mit der neuen render architektur einfach nicht hin.
So langsam komm ich auch an ein punkt wo das Projekt zu gross ist und ich den überblick verloren habe. 250.000 zeilen code unstrukturierter code ist einfach unpraktisch.
Man kann sagen ich hab aktuell sämtliche motivation verloren, weil jede änderung an dem programm 100 neue bugs aufreisst
Ich hab mich mal wieder aufgerafft ein bischen was am Xenorate Projekt zu machen. Genaugenommen arbeite ich gerade an dem 2.6.2 bugfix release welches einige nervige Fehler von Xenorate beseitigen soll.
Bisher habe ich folgendes schon umgesetzt:
UAC Elevation Prompt
Ich habe eine COM Klasse erstellt in der alle Funktionen implementiert sind die Administrator Rechte benötigen. Diese COM Klasse enthält ihr eigenes Security Manifest und wird Automatisch installiert über den Installer.
Xenorate benutzt nur noch diese COM klasse zum Zugriff auf folgende Administrator Aufgaben:
- Fileextension-Registrierung - Eintrag im Kontextmenü (Add/Play with xenorate) - Xenorate als Standard Media Player registrieren
Funktionieren tut das sehr gut, jedesmal wenn ich eine dieser Einstellungen ändern muss, wird der UAC Dialog aufgerufen
Ich habe auch es so umgesetzt, das selbst wenn man alle 3 Optionen ändert, nur einmal der UAC Dialog angezeigt wird.
Form position bei Auflösungsänderung verschoben
Dieses Problem habe ich ebenfalls behoben und es kann die Position der Forms nicht mehr verändert werden, wenn die Anwendung den Fokus nicht mehr enthält.
Das hat aber Nachteile, das ich noch dafür sorgen muss, das wenn die Forms ausserhalb des Bildschirms sind, das ich diese z.b. auf den Primary Display Zentrieren muss.
Neue Shortcut zum anzeigen des Mediainfos Ballons
Ist nun ebenfalls implementiert und auf Standard-Taste "I" gelegt.
Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.