Niezbyt udane hakowanie Photo Booth
22 października 2006 o godzinie 11:14, w kategorii Jabłka.
Na moim starym imaku Photo Booth nigdy nie działał zbyt żywo. Wprawdzie wersja 1.2 trochę przyspieszyła niemniej w porównaniu z nowymi intelomakami stary dobry G4 wypadał w tej konkurencji raczej blado. Trudno się zresztą dziwić – nakładanie na obraz wideo efektów w czasie rzeczywistym od zawsze było zasobożerne i wymagało „wielkiego mnóstwa” megaherców.
Niemniej nie dawało mi to spokoju bowiem przecież ani obraz z iSighta nie jest zbyt wysokiej rozdzielczości ani oferowane przez program efekty nie są zbyt wyrafinowane. Zwłaszcza, że inne podobne programy działały wyraźnie żwawiej. Ostatecznie o tym, że z fotobudką jest coś nie tak, przekonał mnie program Webcam Tweaker, który praktycznie indentyczne efekty wyświetla wyraźnie szybciej.
Postanowiłem więc trochę pogrzebać w plikach konfiguracyjnych Photo Booth i sprawdzić czy da się ten sympatyczny programik trochę przyspieszyć… I choć nie mam żadnego rozeznania w programowaniu za pomocą Quartz Composera to cała procedura okazała się tak prosta jak przysłowiowy drut. Najpierw wchodzimy do „wnętrza” programu wybierając z menu kontekstowego Show Package Contents.
Potem przechodzimy do katalogu Contents/Resources i klikamy na pliku Video.qtz. Jeżeli macie zainstalowany pakiet Developer Tools pilk otworzy się w programie Quartz Composer. Jeżeli nie macie Developer Tools najlepiej będzie go doinstalować. Pakiet znajdziecie oczywiście na płycie z systemem.
Na początku program wyrzuci informację o kilku błędach ale chwilowo ją zignorujemy wybierając Continue. Pamiętajcie jednak aby przed zapisaniem zmian zrobić sobie kopię oryginalnego pliku – będzie nam jeszcze bardzo potrzebny.
Gdy już Quartz Composer się otworzy klikamy na panelu Video Input (niebieskim), za pomocą ikonki w prawym górnym rogu okna wyświetlamy okienko Inspektora i przechodzimy do zakładki Settings. Odznaczamy Hightest Quality oraz Use YUV Texturing If Avaiable a potem zapisujemy plik za pomocą komendy ⌘+S. I już! Co ciekawe – zauważalne przyspieszenie powoduje odznaczenie teksturowania YUV a nie wyłączenie dostępnej wysokiej jakości.
Po tym prostym zabiegu Photo Booth zyskuje sobie drugą młodość – rezultat widoczny jest gołym okiem. Znikają praktycznie wszystkie opóźnienia przy wyświetlaniu pełnookienkowych efektów choć realny wzrost szybkości wyświetlania liczymy zaledwie w kilku klatach na sekundę więcej. Wbrew pozorom, zupełnie nie widać też utraty jakości wyświetlanego obrazu. Oczywiście przy wyświetlaniu miniaturek z podglądem program nadal krztusi się niemiłosiernie choć i tu można zauważyć drobną poprawę. Żądni przygód lub bardziej wtajemniczeni i mający więcej wolnego czasu czytelnicy mogą też pogrzebać w kompozycji nieco głębiej sprawdzając inne dostępne ustawienia aby wycisnąć jeszcze kilka klatek więcej lub nawet podmienić domyślne efekty programu. Możliwości są bardzo, bardzo duże.
Wydawałoby się, że wszystko mamy pod kontrolą gdyby nie pewien drobny szkopuł. Pamiętacie okienko z błędami o którym wspomniałem nieco wyżej? Otóż, gdy otwieramy plik Video.qtz w Quartz Composerze dostajemy mniej więcej taki komunikat:
> Full Cartoon
Cannot create node of class „QCImageFilter” and identifier „LineOverlay”
> Full Cartoon
Cannot create connection from [„outputImage” @ „neOverlay_2”] to [„inputImage” @ „SourceOverCompositing_2”]
> Full Cartoon
Cannot create connection from [„output” @ „Splitter_2”] to [„inputImage” @ „neOverlay_2”]
> Macro Patch
State restoration failed on node „Patch_3”
> (null)
State restoration failed on
Oznacza to, że Quartz Composer ma kłopoty z poprawnym zinterpretowaniem danych zawartych w otwieranym pliku. W efekcie zerwane zostają niektóre połączenia pomiędzy elementami kompozycji co niestety po zapisaniu wyedytowanego pliku powoduje problemy z działaniem m.in. filtra komiksowego i ogólną stabilnością programu podczas wyświetlania efektów z pierwszej „kolorystycznej” zakładki. Problem jest poważny – powyższe informacje niewiele mi mówią, pogrzebałem oczywiście trochę w sieci szukając rozwiązania ale poza potwierdzeniem, że u innych Quartz Composer też sypie w tym miejscu błędami niczego więcej nie znalazłem. A przecież przez to wszystko bierze w łeb! Cały ten opis, wszystkie dalsze wynalezione zmiany a także sens przyspieszania „trójwymiarowych” efektów z drugiego panelu… No chyba, że nie zależy wam na kolorystycznych efektach – w końcu „krzywe lustra” dają nieco więcej zabawy. Tak czy siak – zachęcam do eksperymentowania! Zawsze można przecież przywrócić oryginalny plik Video.qtz z kopii bezpieczeństwa i wszystko wróci do punktu wyjścia. A może przy tej okazji ktoś z was znajdzie rozwiązanie? Mam nadzieję!