Dziękuję, że zgodziłeś się na tę rozmowę. Na początek, czy mógłbyś się przedstawić i powiedzieć czym zajmujesz się w naszej społeczności?
Wydaje mi się, że odpowiedź na to już znasz :)
Masz rację, ale to jest pewnego rodzaju rutynowe pytanie. Obiecuję, że reszta nie będzie już taka stereotypowa (mam przynajmniej nadzieję) ;)
Nazywam się Stephen Fellner i tworzę programy dla AmigaOS 4. Konkretnie są to DvPlayer i WarpView. Jestem również betatesterem i deweloperem AmigaOS 4. Pracowałem m.in. nad Picasso96 oraz sterownikami dla kart ATI Radeon.
Zacznijmy od tego ostatniego elementu. Pracowałeś, tzn. że już nie jesteś zaangażowany w rozwój tych elementów?
Nie, nadal się nimi zajmuję, lecz nie jestem głównym programistą tych komponentów. Wykonuję jedynie konkretne zadania oraz poprawki związane z odtwarzaniem wideo. Dla przykładu, zaimplementowałem potrójne buforowanie dla overlaya z synchronizacją pionową, co jest bardzo ważne dla płynnego odtwarzania obrazu. Pozwala to obejść te drażniące tzw. "raster cuts", które sprawiają, że animowana grafika na PC wygląda tak fatalnie w porównaniu z amigową. W końcu my zawsze mieliśmy podwójne/potrójne buforowanie i synchronizację pionową (synchronizacja animacji do wygaszania pionowego monitora). Dodałem również obsługę kilku nowych modeli barw YUV, co zapewnia szybsze odtwarzanie. Jak dotąd, udało mi się uzyskać około dziesięcioprocentowe przyspieszenie w odtwarzaniu wideo na Sam440, przy wykorzystaniu modelu YUV. Przyczyniłem się również do innych programów dla AmigaOS 4, lecz głównie skupiam się na rzeczach związanych z odtwarzaniem obrazu.
Dzieje się tak głównie dlatego, że jest to obszar Twoich zainteresowań, prawda? Powiedz nam więcej o tym. Kiedy i w jakich okolicznościach zdecydowałeś się tworzyć narzędzia do odtwarzania plików wideo? Czy było to spowodowane brakiem podobnych programów, a może próbowałeś coś komuś lub sobie samemu udowodnić?
Muszę przyznać, że grafika komputerowa to jedno z moich głównych zainteresowań. Programy dla Amigi zacząłem pisać w roku 1998. Wówczas poznałem Laszlo Toroka, autora programu do odtwarzania plików wideo AVid (później przemianowanego na MooVId), który wprowadził mnie w to wszystko. Na początku napisałem kilka procedur renderowania obrazu (chunky-to-planar oraz "Storm" - procedurę renderowania obrazu opartego na trybie HAM w czasie rzeczywistym), które wysłałem do Laszlo, aby dołączył je do MooVida. Jego program spisywał się doskonale odtwarzając pliki w formatach AVI i Quicktime (MOV), ale nie istniało nic, co radziłoby sobie z odtwarzaniem z akceptowalną prędkością plików MPEG. Były jakieś odtwarzacze typu AmiPeg oparte na otwartych źródłach innych programów, lecz były zbyt powolne na średnio rozbudowanych Amigach. Przystąpiłem więc do pracy nad własnym programem, który napisałem w całości w asemblerze. To było spore techniczne wyzwanie i jednocześnie bardzo czasochłonne zajęcie. Nauczyłem się jednak wiele, a Amiga otrzymała naprawdę szybki program do odtwarzania plików MPEG. Szczerze mówiąc jednak, liczyłem na to, że będzie szybszy.
Tak to się właśnie zaczęło.
Dla tych co nie wiedzą, mówisz o programie RiVA - całkiem niezły program do odtwarzania plików MPEG dla Amig klasycznych (może pamiętasz (lub nie), że pomagałem rejestrować ten program u Ciebie osobom z Polski).
Pamiętam :)
Jaki wpływ miał rozwój programu RiVA na Twój kolejny projekt, którym był DvPlayer?
Za czasów RiVY wiele osób pytało o program w wersji dla procesorów PPC. Stworzenie czegoś takiego zajęłoby mi mnóstwo czasu, gdyż całość napisana została w asemblerze 68k. Przepisanie tego na PPC zajęłoby lata, a poza tym nie miałem wówczas karty z procesorem PPC. Poza tym nie byłem zadowolony z faktu, że RiVA nie posiadała GUI i między innymi z tego powodu nie spełniała do końca oczekiwań, jeśli chodzi o nowoczesny program do odtwarzania filmów. Z uwagi na bardzo mocno zoptymalizowaną budowę programu, rozszerzenie go o GUI było rzeczą trudną i czasochłonną. Zdałem sobie sprawę, że zabrnąłem w ślepą uliczkę. Pewnego dnia rozmawiałem z Csaba Simonem (Chip), który pracował nad portem biblioteki avcodec na potrzeby nowej wersji MooVIda. Powiedział mi jak można ją wykorzystać w odtwarzaczach. MooVId miał być wówczas częścią AmigaOS 4. Napisałem więc krótki przykładowy kod, który dekodował kilka klatek z pliku MPEG. Okazało się to zaskakująco proste. Kodek obsługiwał także MPEG2 (RiVA potrafiła odtwarzać jedynie MPEG1), co oznaczało, że poradziłby sobie z SVCD i plikami VOB znajdującymi się na płytach DVD. To wszystko było jeszcze pod WarpOS - nie wydano wtedy jeszcze AmigaOS 4 - tak po prawdzie, to nie sądziłem wówczas, że kiedykolwiek ujrzy on światło dzienne.
W końcu się to udało i co więcej, DvPlayer był tym programem, który był do niego dołączony oraz wyparł MooVIda. Czy było to zamierzone? Spodziewałeś się tego? Co stało się z MooVIdem (bądź co bądź, był dołączony do systemu w wersji pre-release)?
DvPlayer miał uzupełniać MooVIda. Plan był taki, aby MooVId służył do plików AVI/MOV, a DvPlayer do MPEG, VideoCD i DVD oraz być może też innych, z którymi MooVId by sobie nie radził. Jesteśmy z Laszlo (autorem MooVIda) dobrymi przyjaciółmi i nie chcieliśmy ze sobą rywalizować, pracując nad obsługą tych samych formatów. Niestety Laszlo przestał interesować się Amigą, a w związku z tym rozwój MooVIda nie potoczył się tak, jak oryginalnie planowano. Dostrzegłem potrzebę posiadania programu do odtwarzania filmów, który posiadałby GUI oraz radziłby sobie z formatami, których obsługi początkowo nie planowałem. Tak więc DvPlayer obsługuje AVI i WMV, a Quicktime (MOV) i być może FLV zamierzam dodać w przyszłości.
Czy traktujesz MPlayera jako konkurencję dla DvPlayera? Zasadniczo oferuje on to samo, co Twój program. Jest oparty na otwartym kodzie źródłowym, co wielu uważa za zaletę. Jaki jest Twój punkt widzenia w tej kwestii?
MPlayer z całą pewnością stanowi konkurencję. Niemniej jednak uważam, że DvPlayer jest znacznie wygodniejszy i prostszy w obsłudze dla użytkownika. Nie zmienia to jednak faktu, że bardzo się cieszę, iż mamy MPlayera, który umożliwia odtwarzanie formatów, z którymi DvPlayer sobie nie radzi (np. MOV i FLV). Program ten również pomógł mi w pracy nad DvPlayerem. Mając problemy z jakimiś plikami wideo, mogłem je testować właśnie na MPlayerze, aby sprawdzić czy on radził sobie z nimi podobnie. W ten sposób mogłem sprawdzić czy problemem jest uszkodzony plik, czy też musiałem skupić się na odnalezieniu błędu w DvPlayerze.
Ile czasu upłynęło, zanim DvPlayer stał się w pełni użytecznym, niezawodnym w działaniu programem?
Kilka lat z przerwą. Po paru miesiącach od rozpoczęcia prac, zepsuła się moja A4000. Zajęło mi trochę czasu odszukanie osoby, która potrafiłaby ją naprawić. Jeśli dobrze pamiętam, trwało to łącznie dziewięć miesięcy. Gdy dostałem komputer z powrotem, przez kolejnych kilka miesięcy mogłem pracować dalej. Wtedy też nadszedł moment, gdy zostałem betatesterem AmigaOS 4 i mogłem zacząć wykorzystywać jego możliwości. Niestety, sprzęt znowu dał o sobie znać - padła moja karta PPC. Duże wsparcie otrzymałem od Hyperion-Entertainment. Zaoferowali się, że naprawią moją kartę za darmo i wyślą wczesną wersję MicroA1, z której będę mógł w tym czasie korzystać. Okazało się, że karty nie można wskrzesić, więc pozwolono mi zatrzymać MicroA1, która wbrew całej propagandzie związanej z układem Articia, którą wówczas przerabialiśmy, okazała się najbardziej niezawodnym amigowym sprzętem jaki kiedykolwiek miałem. Od tego momentu rozwój DvPlayera postępował bez żadnych problemów.
Czy pracując nad DvPlayerem osiągnąłeś wszystko co chciałeś, czy też jest coś, co po prosto wykracza poza Twoje możliwości lub jest nieosiągalne na amigowym sprzęcie?
Trudno powiedzieć. Sądzę, że osiągnąłem więcej niż pierwotnie zakładałem. Ale jak to bywa ze wszystkimi większymi projektami, świat idzie do przodu, zaczynają obowiązywać nowe standardy, tak więc oglądanie się za siebie i przeglądanie starych założeń nie ma sensu. Trzeba podążać za postępem technologicznym. Obecnie coraz popularniejsze jest High-Definition i na pewno chciałoby się, aby komputer sobie z tym radził bez żadnych problemów. Niemniej jednak, nawet w świecie PC, maszyny low-end nie są wystarczające, aby cieszyć się najnowszymi standardami/kodekami. Najpopularniejszy obecnie kodek h264 wymaga przynajmniej procesora G5 Dual lub Quad Core, aby zapewnić komfort oglądania. W przypadku słabszego procesora niezbędna jest karta graficzna na złączu PCI-Express z funkcją dekodowania h264. Aparat cyfrowy, który zamierzam kupić, nagrywa filmy w rozdzielczości FullHD 1080p w formacie MOV (Quicktime). Będę więc dążył do tego, aby DvPlayer go obsługiwał (planuję to od dłuższego czasu), lecz bez odpowiedniego sprzętu, nie będzie zbytniego pożytku z odtwarzania filmów w takiej rozdzielczości.
Odsuńmy się nieco od DvPlayera i porozmawiajmy o WarpView. Po co kolejna przeglądarka obrazków? Co posiada Twój program, czego nie mają inne?
Pierwotnie WarpView nie miał być przeglądarką obrazków. Kiedyś zgłębiałem tajniki tworzenia silników 3D i w jaki sposób radzą sobie z ograniczeniami sprzętu w przypadku rozmiarów tekstur (rozmiary tekstury muszą być wartością będącą potęgą dwójki, a ponadto mamy górny limit, taki jak na przykład 256 na kartach Voodoo - z tego co pamiętam). Wymyśliłem w jaki sposób podzielić obrazy na mniejsze tekstury i bez widocznego miejsca styku połączyć je ze sobą krawędziami (sztuczka polega na wykorzystaniu bilinearnej interpolacji). Gdy przykładowy program zadziałał prawidłowo, zdałem sobie sprawę, że mogę w ten sposób skalować i obracać obrazy w czasie rzeczywistym. Wszystko to odbywało się bardzo płynnie, praktycznie bez obciążenia procesora. Pomyślałem więc, dlaczego nie wykorzystać tego do zrobienia przeglądarki obrazków, która robiłaby użytek z procesora karty graficznej. No i tak się to zaczęło.
Z tego co wiem, WarpView jest jedyną aplikacją dla AmigaOS, która potrafi coś takiego. Ważną cechą programu jest również obsługa informacji EXIF zaszywanych przez aparaty cyfrowe w zdjęciach. Zdaje się, że poza WarpView, jedynie AmiPhoto to obsługuje. Jestem również bardzo dumny z funkcji zmiany wielkości oraz przycinania obrazów. Algorytm skalowania "Lanczos" zaimplementowany w WarpView jest jednym z najlepszych obecnie dostępnych i chyba nie jest wykorzystywany przez żaden inny program dla AmigaOS. Nawet ImageFX korzysta ze starej metody uśredniania, która traci więcej szczegółów podczas zmniejszania. Spędziłem dużo czasu na optymalizacji tego elementu, a w efekcie otrzymałem coś bardzo szybkiego w działaniu.
Skłaniam się ku rozszerzeniu programu o funkcje przetwarzania obrazu. Większość osób posiada dzisiaj aparat cyfrowy i chciałaby poprawić nieco swoje zdjęcia (zmniejszyć, przyciąć, wyostrzyć). Już istnieje wbudowany w program filtr "Unsharp Mask", który wyostrza obraz. Sporo czasu spędziłem na analizowaniu tematu algorytmów redukcji szumu (ziarnistości), gdyż w świecie fotografii cyfrowej jest to powszechnie występujący problem.
Czy zasadniczo jesteś zadowolony z poziomu sprzedaży WarpView i DvPlayera? Czy obecnie trudno jest sprzedawać programy na licencji shareware?
Amigowy rynek jest niezmiernie mały, tak więc nikt, kto rozwija jakieś oprogramowanie na tę platformę, nie ma wysokich oczekiwań dotyczących sprzedaży. Z pewnością na tym rynku nikt się nie wzbogaci :). Jeśli spojrzę przez pryzmat czasu, jaki poświęciłem na rozwój swoich programów i porównam to z liczbą rejestracji, wówczas można się rozczarować. Te kilka okazjonalnych klientów jednak pomaga mnie zmotywować, choć większe znaczenie ma pozytywny wydźwięk i opinie. Przyjemnie jest poczytać o ludziach zadowolonych i robiących ciekawe rzeczy moimi programami. Muszę przyznać, że właściwie to właśnie to odgrywa dla mnie największą rolę i sprawia, że warto.
Czy pracujesz nad czymś nowym lub masz taki zamiar? Czy mógłbyś podzielić się nieco informacjami z tym związanymi?
Przyglądałem się MiniGL, gdyż planowałem odejść od Warp3D i zrobić z tego użytek w WarpView. W efekcie powstał, tak dla zabawy, prosty silnik gry. Nie miałem jednak jeszcze czasu, aby zamienić go w coś poważnego. Obecnie w systemie mamy kompozycję obrazu i zdaje się, że ta funkcja będzie znacznie bardziej nadawała się do wykorzystania w WarpView niż MiniGL. Zastanawiam się również nad oprogramowaniem do obróbki filmów, lecz to nie jest zadanie dla jednej osoby i prawdopodobnie będzie wymagało pracy jakiegoś zespołu. Poza tym chcę najpierw ukończyć kilka rozpoczętych projektów (np. obsługa plików MOV w DvPlayer) zanim zacznę robić coś tak dużego.
Twoim zdaniem, jaka przyszłość czeka AmigaOS i systemy pochodne?
Moim zdaniem AmigaOS i jemu podobne systemy powinny korzystać ze swoich "niskozasobowych wymagań", które stają się ogromną zaletą na urządzeniach przenośnych, gdzie moc oraz żywotność baterii są ograniczone.
Czy zostaniemy czymś zaskoczeni?
To zależy od oczekiwań. :) Sądzę jednak, że zdarzy się kilka rzeczy, które dla wielu osób będą wielką niespodzianką.
Jakie są Twoje życzenia dotyczące Amigi i AmigaOS?
Chciałbym, aby w naszej społeczności pojawiło się więcej deweloperów, abym mógł odejść na emeryturę. :) Poważnie jednak mówiąc, potrzeba nam więcej ludzi do pisania oprogramowania lub tworzenia portów. Cieszę się, że kilka osób próbuje tego dokonać. Sądzę, że AmigaOS to najlepsza platforma dla deweloperów-hobbystów. Z prostej przyczyny - na tej platformie nawet proste programy są bardzo mile widziane, w przeciwieństwie do systemów wiodących, gdzie są setki różnych aplikacji robiących to samo. Tutaj programiści mogą naprawdę wiele zdziałać, nawet niskim nakładem pracy.
Stephen, było mi naprawdę miło móc z Tobą porozmawiać. Dziękuję za odpowiedzi na wszystkie moje pytania. Życzę Ci powodzenia w pracach nad Twoimi projektami. Czy na zakończenie chciałbyś coś jeszcze powiedzieć, co ładnie by wszystko podsumowało?
Dziękuję. Mnie również było miło. To dobrze, że tacy ludzie jak Ty, których pamięta się ze starych czasów, nadal są z nami. Ostatnie dziesięć lat było trudnym okresem dla Amigi i to w zasadzie cud, że pomimo tylu nieszczęśliwych wydarzeń, udało się tej platformie przetrwać. Rozwój w każdym obszarze (sprzęt, system, oprogramowanie) nadal trwa, a grupa użytkownikom powolutku znowu rośnie. Chciałbym podziękować wszystkim, którzy ciężko pracowali na to, aby Amiga nadal żyła oraz tym, którzy nie stracili wiary i nadziei w najgorszym okresie i nadal są z nami.
Korekta: Konrad Czuba i Aleksander Chyliński