diff --git a/FrOSCon26/FrOSCon.26.mm b/FrOSCon26/FrOSCon.26.mm index d24b5a8..aec8bc3 100644 --- a/FrOSCon26/FrOSCon.26.mm +++ b/FrOSCon26/FrOSCon.26.mm @@ -1972,11 +1972,12 @@ - - + + + - + @@ -2185,7 +2186,7 @@ - + @@ -2305,7 +2306,7 @@ - + @@ -2487,6 +2488,199 @@ + + + + + + + + + + +

+ ...so daß es ohne Kontext sofort erkennbar ist +

+ +
+
+ + + + +

+ wer hinten sitzt oder nur den Livestream sieht, bekommt ein stark reduziertes Bild mit schlechtem Kontrast +

+ +
+
+ + + + +

+ Idealerweise sollte man für diese Demo nichts weiter erläutern müssen — und es sollte auf einer anderen Ebene nochmal eine Closure erzeugen. +

+

+ +

+

+ Es handelt sich um einen »Zaubertrick«, erfordert also implizites Framing; beim Vortrag 2025 hat das nicht funktioniert, was m.E. daran lag daß Benny an der Stelle immer so ungeschickt auf der festen Fenstergröße herumgeritten ist, und ich das nicht realisiert und rechtzeitig aufgegriffen habe +

+ +
+
+
+ + + + + +

+ Das halte ich auf verschiedenen Ebenen für sinnvoll. Eine ersichtlich handgemachte  Aufnahme ist »ein Video« im betonten Sinn, es paßt in meinen Rhythmus und Stil, und ich hab trivialerweise die Rechte am Bild (letzteres könnte problematisch sein bei einem öffentlich inszenierten Feuerwerk, d.h. die Aufnahme muß sofort ersichtlich einen dokumentarischen Charakter haben) +

+ +
+
+ + + + +

+ Das war ein ganz selten herausragendes Feuerwerk, und ich erinnere mich daß mir einige sehr gut abgeschlossene Sequenzen gelungen sind +

+ + +
+ + + + + + +

+ nach einem typischen Bouquet brechen an mehreren Stellen hell leuchtende orange-rote Kugeln auf, zuletzt sogar ganz vom Boden her; dabei wird die umgebende Szenerie am Olympiaberg einen Augenblick lang sichtbar. Diese Sequenz ist sehr kurz und kann gelooped werden +

+ +
+
+ + + + +

+ ...das wäre dann aber eine längere Sequenz, beginnend mit den goldgelben Garben am untern Bildrand, und dann ein Bouquet aus großen Kugeln, die ihre Farbe von Blau über Rot entfalten. Klassisches Feuerwerk +

+ + +
+
+
+ + + + + +

+ das ist die charakteristischte und dichteste Sequenz in diesem Feuerwerk gewesen; ein seltener Fall in dem die Kombination »Rot-Grün« überzeugend eingesetzt ist und nicht bloß „bunt“ wirkt +

+ +
+
+ + + + +

+ auch das eine ehr langsame und zeitlose Sequenz; besonders im Zusammenspiel mit den Pulverwolken und Spuren am Ende +

+ + +
+
+
+
+ + + + + + + + + +

+ Wegen dem Recht am Bild. Zwar ist die Rechtslage in Deutschland eindeutig (Panoramafreiheit sowie Geschehen der relativen Zeitgeschichte), jedoch könnte es Ärger geben, wenn jemand erkennbar prominent im Bild ist. Bei der bezeichneten Szene wäre das vor 1:15 der Fall, wo mehrere Leute direkt im Vordergrund Gruppen-Selfies machen; das könnte man m.E. unbesorgt einsetzen, wenn man die Gesamt-Szene zeigt, aber für einen kurzen Ausschnitt sollte ich besser vorsichtig sein. Daher wähle ich die nächste Sequenz, in der selbst in der Gruppe mit den Wunderkerzen keine Gesichter prominent erkennbar sind +

+ + +
+ +
+ + + + +

+ Die Kamera bewegt sich flüssig nach links durch eine gut gelaunte Menschenmenge, eine Gruppe mit Wunderkerzen, eine Steinskulptur, dahinter die Flußbrücke randvoll mit einer Menschenmasse und ein irres Feuerwerk darüber, schon halb im Pulverdampf +

+ + +
+ + +
+
+ + + + +

+ (ich hätte schon eine Menge mehr, aber das hier erfüllt bereits alles, was ich mir im Kontext hier wünsche) +

+ +
+
+ + + + + + + + + +

+ bitrate=972000.0kbits/s video:2373047KiB  ≙ 2.3  GiB +

+ + +
+ +
+ + + + + + + +

+ --vout war notwendig, da der Default (VDPAU) mit anscheinend mit dem Pixelformat nicht zurechtkommt +

+ +
+
+
+ + + +
+
+
+ + +
@@ -2570,7 +2764,7 @@
- + @@ -2582,6 +2776,19 @@ + + + + +

+ Wiedergabe von 972000 kBit/s läuft glatt +

+ +
+ + + +
diff --git a/FrOSCon26/examples/demo-uring.cpp b/FrOSCon26/examples/demo-uring.cpp index 2825873..ba1e98a 100644 --- a/FrOSCon26/examples/demo-uring.cpp +++ b/FrOSCon26/examples/demo-uring.cpp @@ -30,10 +30,10 @@ using std::chrono::operator ""ms; //-----------------hard-coded-config-- const size_t RING_SIZ = 5; const string RAW_VIDEO_INPUT_FILE = "demovideo.raw"; -const uint VIDEO_WIDTH = 320; -const uint VIDEO_HEIGHT = 240; -const size_t START_FRAME = 0; -const size_t MAX_LOOP_FRAME = 30 * 25; +const uint VIDEO_WIDTH = 1200; +const uint VIDEO_HEIGHT = 675; +const size_t START_FRAME = 40; +const size_t MAX_LOOP_FRAME = 960; auto calcSrcFrame = [](size_t runningNr){ return START_FRAME + runningNr % MAX_LOOP_FRAME; }; @@ -147,7 +147,7 @@ UringVideoPlayer::playVideo() // Setup periodic frame beat, firing infinitely const auto TICK_TAG = UINT64_MAX; // special marker for timer events (differs from possible frame numbers) - auto timespec = asKernelTimespec (40ms); // 25fps ≙ 40ms per frame + auto timespec = asKernelTimespec (20ms); // 50fps ≙ 20ms per frame io_uring_sqe* timerSubmission{io_uring_get_sqe (&uRing)}; io_uring_prep_timeout (timerSubmission, ×pec, /*no count limit*/ 0, IORING_TIMEOUT_MULTISHOT); io_uring_sqe_set_data64(timerSubmission, TICK_TAG); @@ -311,6 +311,7 @@ unique_ptr launchPlayer (Gtk::Window& appWindow) { // force minimum size to fit the player... appWindow.set_size_request (VIDEO_WIDTH, VIDEO_HEIGHT); + appWindow.set_title ("powered by io_uring"); appWindow.set_resizable (false); return std::make_unique (appWindow); diff --git a/FrOSCon26/examples/gtk-uring-app.hpp b/FrOSCon26/examples/gtk-uring-app.hpp index ecca33d..2b7845d 100644 --- a/FrOSCon26/examples/gtk-uring-app.hpp +++ b/FrOSCon26/examples/gtk-uring-app.hpp @@ -62,7 +62,9 @@ class GtkUringApp public: GtkUringApp (ustring appID) : Gtk::Application{appID} - { } + { + demoWindow_.set_title (appID); + } using StartTask = std::function(Gtk::Window&)>;