Beiträge von FoLLgoTT

    Erstmal danke für den Bericht.

    Wohlgemerkt im Cinemascope Format. Umgerechnet auf einen 16/9 Projektor wären das 7500 Lumen.

    Was mich etwas wundert: die CS-Version nutzt ja anscheinend denselben DMD wie die 16/9-Version und hat dadurch 1,33 mal weniger Lichtstrom, weil unten und oben einfach etwas ungenutzt bleibt. Warum ist die horizontale Auflösung dann nicht identisch? Die nutzen doch beide SSP (oder Pixel Shift), richtig? Genaue Informationen konnte ich leider nicht finden.

    Ich habe bei mir einen ähnlichen Ansatz implementiert und beschreibe den hier mal. Vielleicht ergeben sich daraus sinnvolle Anforderungen für dich.

    Danke für die detaillierte Beschreibung! Das ähnelt meinem Beispiel weiter oben ja sehr stark. Nur stellst du sogar noch die Lautstärke anhand der Kanalanzahl ein. An sowas hatte ich bisher nicht gedacht. Wäre aber prinzipiell auch kein Problem. :)

    Pause/Player wird bei mir übrigens beim MPC-HC über EventGhost gemacht, der mit dem Player verbunden ist und dann ein Event bekommt. Bei MPV habe ich das im LUA-Script realisiert. Solche Player-Ereignisse sind auch das Einzige, was der MovieStarter nicht abdecken würde. Dafür braucht man also eine andere Lösung.


    Ich bin inzwischen ein bisschen weiter und habe mal eine Bedingung und neue Variablen implementiert. Das sieht dann z.B. so aus:



    Hier sende ich z.B. das Seitenverhältnis an EventGhost, wenn es ungleich dem konfigurierten Standard ist. Und ändere die Auflösung/Refreshrate, wenn sie ungleich dem Standard ist. Für letzteres sind getrennte Aufrufe für den Start und das Ende des Films konfiguriert.


    Bisher gibt es folgende Metadaten, auf die man prüfen kann:

    • Seitenverhältnis
    • Bildrate
    • EOTF
    • Auflösung

    Dann gibt es folgende Operatoren: =, !=, <, <=, > und >=.


    Und weiterhin kann man mit festen Werten oder mit einigen konfigurierten Werten vergleichen. Die Variablen für die Leinwand könnte ich noch hinzufügen.


    Grundsätzlich könnte ich mehrere Bedingungen unterstützen, die dann mit UND/ODER verknüpft werden. Das ist natürlich etwas Aufwand. Und die Frage ist, ob das notwendig ist, denn mit EventGhost, FHEM oder OpenHAB kann man beliebig komplexe Szenarien implementieren, wenn man sich in einem Rutsch alle Metadaten schicken lässt. Also möchte ich hier auch nicht mehr Arbeit reinstecken als notwendig.

    Und wie lange dauert das Scannen aller Informationen vor dem Film?

    Das dauert ca. 7 - 20 s. Je nach Format (UHD/HD/SD) und Anzahl der Stichproben. Beim nächsten Mal, wenn die Metadaten abgelegt sind, ist das quasi verzögerungsfrei.

    Wahrscheinlich legst Du die "Zusatzdaten" je Film ab?

    Ja genau. Wobei ich mein eigenes Format habe und andere hier im Forum es im Dateinamen verstecken.

    ich finde das extrem beachtlich und gut was Du da „mal eben so“ nebenbei programmierst.

    Danke! :sbier:

    Das Projekt lebt ja schon seit Jahren. Ich habe nur mal wieder die Muße gefunden, mich darum zu kümmern.


    Es funktioniert so, dass die Datei zunächst ausgewertet wird?! Beispiel AR. Das Programm schaut in die Datei und analysiert das Seitenverhältnis und gibt entsprechende Befehle aus. Korrekt? Wenn ja, was passiert wenn sich was ändert? Insbesondere denke ich an Multiformatfilme. Angenommen zu Anfang habe ich Scope Format und später wechselt es auf 16:9. Dann wird auf scope maskiert. Was passiert, wenn der Film auf 16:9 springt? Genau so auch umgekehrt.

    Genau, der Film wird vor dem Start mit dem AspectRatio-Detector von All-Ex analysiert. Der analysiert den Film mit einer konfigurierbaren Anzahl an Stichproben und gibt dann das Seitenverhältnis zurück. Bei Multiformatfilmen kann man z.B. einstellen, dass das breitere zurückgeliefert wird. Dann ist man sicher. Man kann die gültigen Seitenverhältnisse konfigurieren, auf die dann gerundet wird. Ganz exakt sind die wenigsten Filme abgelegt.


    Ich hatte mal mein gesamtes Archiv analysieren lassen und es gab nur einen Fehler, der sich durch die Erhöhung der Stichprobenanzahl sicherlich umgehen lässt. Das ganze ist also sehr zuverlässig. Und vor allem sitzt alles schon vor dem Film und z.B. nicht erst, wenn man nach dem schwarzen Intro die Balken erkennen kann. :)

    Ich bin gerade dabei, Bedingungen zu implementieren. Ich denke, das ist der richtige Weg.


    Hier noch mal ein umfangreiches Beispiel, was der MovieStarter machen könnte.




    Jetzt denkt man erstmal: das kann meine Scriptumgebung zum Großteil auch.

    Ja, aber eben nur zum Großteil. Denn der MovieStarter analysiert ja auch das Seitenverhältnis und somit werden sogar Multiformatfilme immer korrekt angesteuert. Und zum anderen stellen die Metadaten eine sogenannte "Single Source of Truth". Das ist ein Begriff aus der Softwaretechnik, der besagt, dass die Wahrheit genau nur an einer Stelle definiert und somit nicht redundant vorhanden ist. Es ist daher egal, aus welchem Frontend der Film gestartet und (sofern unterstützt), welcher Player benutzt wird. Man muss die Metadaten auch nicht mehr pflegen, weil das beim Start automatisch passiert (und ggf. für einen schnelleren Zugriff abgelegt wird). Und ganz wichtig: alles ist playergetrieben. Es braucht keine externe Steuerung, die nicht weiß, wann der Player gestartet wird. Der Vorgang des Filmstarts erledigt alles und setzt es dann wieder zurück. Ich denke, das Konzept kann man daher als 100%-Lösung bezeichnen. Ziel ist, es immer richtig zu machen.


    Mit dem MovieStarter kann man auch die Konfiguration im Nachhinein relativ einfach ändern, wenn man mal die Leinwand, Projektor oder den Anamorphoten tauscht usw. Und man muss sich letztendlich nicht mehr um kryptische Zoom-Parameter oder fummelige Skripte kümmern.


    Soweit die Vision. Der Großteil funktioniert bereits. Wie gesagt, spezielle Anforderungen sind willkommen. :)

    So, der _ARxxx-Tag im Dateinamen des AspectRatio-Detectors wird jetzt auch berücksichtigt. :)


    Habt ihr Anwendungsfälle, bestimmte Dinge nur beim Start oder nur beim Beenden auszuführen?


    Ich vermute, es wird für einige notwendig sein, dass man Bedingungen formulieren können muss, z.B.

    • wenn Seitenverhältnis > 1,78 dann führe Regel aus

    Damit könnte man feste Befehle zu bestimmten Bedingungen ausführen. Also Lens Memory ansteuern, Lampenmodus bei HDR wechseln oder auch sowas wie der lange Code von wobix.

    So, OpenHAB ist per REST-API kein Problem. Man kann einem String-Item (oder direkt Number) den Wert des Seitenverhältnisses schicken lassen. Per Rule kann man den dann auswerten und an die individuelle Maskierung anpassen. Ich denke, damit ist man flexibel genug. :)




    Die Frage hatte ich übersehen:

    D.h. Du nutzt den Player, um das Bild vorzuverzerren? Ist die Bildqualität dadurch besser, als wenn der Projektor dieses vorverzerrt?

    Ja, genau. Der Player (z.B. MPC-HC) übergibt die Bildposition und die Zoomfaktoren an madVR und der wendet sie dann an. Das heißt, die Qualität der Skalierung hängt von dem in madVR eingestellten Algorithmus ab. Bei MPV natürlich genauso. Also ja, im Zweifelsfall lasse ich lieber den Renderer/Player skalieren als den Projektor. Und vor allem ist es viel einfacher anzusteuern, da man beim Start nur diese Dezimalwerte übergibt und das war's. Und das eben komplett stufenlos. Alle Zwischenwerte sind möglich.


    Dazu kommt ja noch, dass die Player bei mir noch die Entzerrung der gekrümmten Leinwand vornehmen. Auch das passiert per Shader in der Grafikkarte.

    FoLLgoTT mein Interesse hast du, Nils. Ich verwende derzeit die Kombination MPC-BE mit TinyMedia an einem CIH Setup wie du weißt.

    Wie schaltest du dann den Zoom um?



    Wow, schickes Werkzeug! Leider habe ich das meiste schon auf anderen Wegen gelöst (ARD hat schon alle Infos abgelegt, Aktoren werden per OpenHAB angesteuert).

    Wie wertest du das aus und wer steuert ObenHAB an?


    OpenHab habe ich übrigens auch im Einsatz. Ist ja per REST-API leicht anzusteuern und wäre wohl problemlos für den MovieStarter machbar. :)



    Sehr cooles Tool hast du da gebaut, wie funktioniert die Einbindung anhand der Dateiendung? Anstatt des Players wird dann das Tool gestartet, führt alle möglichen Sachen aus und das Tool startet dann den Player?

    Genau. Der MovieStarter bekommt derzeit als Parameter die Filmdatei übergeben, analysiert, fährt die Maskierung an usw. und startet dann den konfigurierten Player. Nach dem Beenden setzt er wieder alles zurück.


    Dementsprechend fände ich eine Ansteuerung über einen HTTP Request interessant, dann könnte das Tool dem Lightmanager direkt darüber mitteilen, was er dem Beamer sagen soll.

    So sähe ein typischer HTTP Request für Infrarot aus, den ich im Moment über meine Smart Home Steuerung an den Lightmanager schicken kann, der hier z.B. um bei meinem AVR die Quelle auf PC zu wechseln.

    Das sollte auch machbar sein. Derzeit ist allerdings nur vorgesehen, dass das Seitenverhältnis per HTTP gesendet wird. Also z.B. die Zeichenkette "2.4:1". Was derzeit fehlt, ist, dass man die Befehle pro Seitenverhältnis vordefiniert und der MovieStarter dann den richtigen Aufruf macht. Dein Befehl enthält das Seitenverhältnis als Zahl ja gar nicht. Ich denke, das wäre für dich genau das Richtige.


    Alternativ kann der MovieStarter jetzt schon ein Event in EventGhost auslösen. Das Event sieht dann z.B. so aus:


    "HTTP.MovieManager.AR_2.40"


    Darauf kann man reagieren und im Prinzip alles machen. EventGhost unterstützt Python-Scripts, die auch HTTP, TCP oder UDP senden können. Man kann den String parsen und für verschiedene Seitenverhältnisse verschiedene Dinge auslösen. Da wäre man komplett frei. Das habe ich auch jahrelang so betrieben. :)

    Ich habe die Logik in meinen MovieManager so gekapselt, dass ich sie problemlos aus einem anderen Kontext heraus nutzen kann. Ich habe einen Prototypen entwickelt, der direkt einen Film samt Analyse und Auswertung von Metadaten starten kann. Den Prototypen könnte man also beliebig irgendwo einbinden oder ihn direkt aus dem Explorer starten, wenn er mit den Dateiendungen der Filme verknüpft ist.


    Das sind die Features bisher:

    • Analyse von Seitenverhältnis (AspectRatio-Detector), Bildrate usw. vor dem Filmstart
      • Ablegen dieser Informationen am Film für schnelleren Start in der Zukunft
    • Senden der Pan&Scan-Parameter für eine konstante Bildhöhe (CIH). Unter Berücksichtigung von:
      • Seitenverhältnis des Panels
      • Anamorphot
      • Seitenverhältnis der Leinwand
      • Verschieben, wenn das Seitenverhältnis des Films größer als das der Leinwand ist
    • Ansteuerung von Aktoren, wie z.B. einer Maskierung oder Lens Memory
    • Ändern der Refreshrate (und Auflösung) vor dem Filmstart und danach (inklusive Wartezeit für HDMI-Synchronisation des Projektors)
    • Alles über Dialog konfigurierbar, so dass bisher nur der Film als einziger Parameter notwendig ist



    Nun meine Frage: gibt es generell Interesse an sowas oder braucht das außer mir keiner? Und wenn ja, welche Anforderungen hättet ihr?

    "Ich seh, Ich seh" (2014) - Ein eher ruhiger, österreichischer Psychohorror der seichteren Sorte. Der Film lebt von seinen schönen Bildern, der kindlichen Perspektive und erzeugt eine interessante Atmosphäre, die mich gut gepackt hat. Der Film hängt jedenfalls noch ein wenig nach. Was ich von dem 08/15-Hollywoodkrempel nicht behaupten kann...

    Native 16:9-Filme mit UHD-Auflösung werden mit 3.840 x 2.160 Pixel vom Bragi CS via XPR-Shift projiziert.

    Da echte (anamorphe) Cinemascope-Filme (in 35 mm) breiter sind als 16:9 (oder Spielfilme in 1,85:1) bei identischer Bildhöhe, ist die höhere horizontale Auflösung mit 5.120 x 2.160 Pixel genau richtig - und vor allem konsequent von Barco bemessen.

    Eigentlich wäre 5184x2160 sinnvoller gewesen, denn 2,35:1 wurde im Laufe der Jahre von 2,4:1 abgelöst. Praktisch alle neuen Cinemascope-Filme nutzen 2,4:1.


    Kann der Bragi eigentlich die Balken erkennen und skaliert dann korrekt oder muss man per Hand umschalten?

    Für eine konstante Höhe braucht ja für alle Seitenverhältnisse zwischen 16 / 9 und 2,4:1 einen anderen Zoomfaktor.

    Hardwaretechnisch gibt es nichts neues, dafür softwaretechnisch. Nach langer Faulheit habe ich meinen MovieManager endlich mal wieder auf den neusten Stand gebracht. Die Anbindung an OFDb funktionierte nicht mehr, also habe ich TMDb als Scraper implementiert.

    Weiterhin werden alle relevanten Metadaten jetzt mit dem AspectRatio-Detector (danke All-Ex! :sbier:) und FFPROBE erkannt und automatisch abgelegt. Das macht die Filmpflege sehr viel einfacher.


    Ich habe ja viel mit MPV als Player experimentiert. Leider hat der immer noch Probleme mit sehr hellen Szenen in HDR, daher bin ich zurück auf MPC-HC (der übrigens immer noch gepflegt wird). Allerdings habe ich die Möglichkeit eingebaut, die Filme auch mit einen Zweitplayer (nämlich MPV) zu starten. Somit kann ich auf Knopfdruck wählen, welcher Player es denn nun sein soll.



    Seitenverhältnis-Management


    Als letztes habe ich das komplette Seitenverhältnis-Management überarbeitet. Der MovieManager steuerte ja seit jeher meine Maskierung über die Metadaten an den Filmen. Ab jetzt gibt er auch dem Player die Position und die horizontale/vertikale Verzerrung des Bildes vor. Dafür musste ich den MPC-HC anpassen, da der das nicht konnte (nur umständlich über Profile). Der Pull Request ist allerdings noch nicht durch.



    Was heißt das genau?


    Ich habe ja ein sogenanntes CIH-Setup (Constant Image Height). Das heißt, meine Leinwand besitzt ein Seitenverhältnis größer 16 / 9 (genauer: 2,4:1) und die seitliche Maskierung lässt sich stufenlos (und linear) zwischen 16 / 9 und 2,4:1 anfahren. Bei so einem Setup gibt es mehrere Seitenverhältnisse, die übereinandergelegt werden müssen:

    1. Panel (+Anamorphot)
    2. Leinwand
    3. Film

    Oder in Worten: ein Projektor projiziert sein natives Seitenverhältnis auf eine Leinwand mit einem anderen Seitenverhältnis und zeigt einen Film mit wieder einem anderen Seitenverhältnis! :blush:


    Der MovieManager rechnet nun aus, wie das Bild verkleinert und ggf. anamorphisch vorverzerrt werden muss. Das heißt, Filme mit weniger als 2,4:1 werden verkleinert. Filme mit mehr als 2,4:1 können optional an den oberen oder unteren Rand der Leinwand platziert werden. Und das alles komplett stufenlos und abhängig von der Konfiguration. Beliebige Seitenverhältnisse sind möglich.


    Es ist auch kein Problem einen beliebigen Anamorphoten (oder gar keinen) mit einem beliebigen Panel zu kombinieren. Der Zoom, Vorverzerrung und Position werden automatisch korrekt berechnet und dem jeweiligen Player beim Start übergeben. Die Maskierung fährt dann in die gewünschte Position und wird wieder zurückgesetzt, wenn der Player beendet wird. Wenn Anamorphot und Panel nicht exakt passen, bleiben entweder oben/unten oder links/rechts kleine schwarze Balken, die dann in der Maskierung verschwinden sollten. Wichtig ist: das Bild passt immer so in die Leinwand, dass die Höhe konstant ist.


    Ich habe sowas für CIH immer in den Playern vermisst. Man musste sich das alles selbst mühevoll konfigurieren und auf Presets legen. Mein Ansatz ist dagegen komplett generisch und basiert auf den Eingaben und Formeln. Vor allem sind die Eingaben verständliche Parameter und nicht irgendwelche kryptischen Dezimalzahlen, die bei jedem Player anders sein müssen. Das ist alles in Software gekapselt. Falls ich also den Projektor oder den Anamorphoten wechsle, muss ich nicht mehr umständlich irgendwelche Skripte anpassen, sondern einfach nur diese zentralen Parameter. :)


    Ich erhoffe mir dadurch auch einen stabileren Betrieb und die Notwendigkeit, im Film den Zoom/Maskierung nachzuregeln, auf Null zu reduzieren.

    Aber auch bei der Erstellung einer 3D-LUT sollte man das richtige Equipment und vor allem die Kompetenz haben. Oder es sich aneignen. Nicht alle wollen/können das.

    Genau. Wenn man mit den falschen Grundeinstellungen oder Voraussetzungen misst (Farbprofile, Bias/Gain, Videolevels, Gamma usw.), dann kann eine 3D LUT das Bild sogar verschlechtern. Von zu langen Messsitzungen mit viel Drift ganz zu schweigen. Also auch hier sind die Fehlermöglichkeiten mannigfaltig. Man sollte sich schon intensiv damit beschäftigen und das Ergebnis auch danach ordentlich validieren (z.B. Banding usw.). Insofern gebe ich dir völlig Recht. Nur das Messprogramm bedienen zu können, reicht nicht. :)

    Da ich mich seit zwei Jahren nicht damit auseinandergesetzt habe und das Ganze nun auf einer anderen Projektor-Kombi laufen soll, kann mir evtl. noch einmal jemand kurz erklären, was die HDR-Parameter hier bewirken und wie da so der aktuelle Konsens ist?

    Hier hatte ich mal die wichtigsten mit Screenshots beschrieben.


    Einen Konsens über die "besten" Einstellungen gibt es aber nicht. Jeder macht, was er will. :zwinker2:

    Puh, jetzt habe ich "Matrix Resurrections" auch hinter mir. Gut, dass der endlich zu Ende ist. :blush:


    Ich muss cat54 komplett zustimmen. Trotz niedriger Erwartungen wurde ich enttäuscht. Alleine diese ständigen Rückblenden machen klar, dass da Null Kreativität am Werk war. Es wirkt so, als ob zwanghaft versucht wurde, an einen Film festzuhalten, von dem es nie eine Fortsetzung hätte geben dürfen. Langweilige Geschichte, von "Brain Fuck" keine Spur (dafür wird der Begriff aber umso öfter erwähnt), belanglose Charaktere und viele lächerliche Technikwörter, die anscheinend krampfhaft cool wirken sollten. Irgendwie scheinen späte Fortsetzungen einen Hang zur Peinlichkeit zu haben.


    Es gibt einfach Filme, die für sich alleinstehend perfekt sind. Und jede Fortsetzung, die man sich anschaut, macht das erschaffene Universum ein Stück weit kaputt. Ich hoffe ja inständig, dass nie versucht wird, "Fight Club" oder "Inception" fortzusetzen...

    Ich tue mir mit Deinen KEF einfach schwer.

    Warum?


    Einen in eine Dimension stark richtenden Lautsprecher halte ich an der Decke auch für unsinnig. Die Winkel zu allen Sitzplätzen sind viel zu groß als dass man überall einen möglichst einheitlichen Amplitudengang realisieren könnte. Man bedenke, dass ein Hochtöner wie der TPL-150 vertikal >5 kHz weniger als 40° Abstrahlwinkel erzeugt. Darüber sind dann unter dem Winkel kaum noch Höhen enthalten.



    Man müsste die Kiste also stark anwinkeln und dann verschenkt man kostbare Deckenhöhe.