Pidgin z rozmowami wideo wreszcie dla Windowsa

Właśnie skończyłem kolejną długo oczekiwaną funkcję Pidgina: Wideokonferencje działające pod Windowsem. Już wcześniej podejmowano próby w tym kierunku, ale nie były doprowadzane do końca, lub nawet nie były publikowane – w przypadku mojej, zmiany są już w repozytorium Pidgina, więc to tylko kwestia czasu, kiedy zostaną wydane (wystarczy poczekać na wersję 3.0.0). Jeżeli nie chcesz czekać, możesz zawsze pobrać wersję testową.

Wideokonferencja w Pidginie pod Windowsem

Dość długo grzebałem w Pidginie i bibliotekach, z których korzysta (GStreamer i inne), ale w końcu chyba wszystko działa. Trudność, w odróżnieniu do próby Eiona, występowała we wtyczkach GStreamera do przechwytywania obrazu z kamery – DirectShow oraz WinKS. Pierwsza nie jest nawet kompilowalna w nowszych wydaniach gst-plugins-bad (przynajmniej pod mingw), druga ma błędy. Wybrałem pracę nad WinKS: główny problem z tą wtyczką polegał na błędach w obsłudze różnych rozdzielczości przechwytywanego obrazu (zgaduję, że stare kamery nie wspierały tego, więc dzięki temu działały). Wiele godzin debugowania zaowocowało prostą łatką, która usuwała wadliwą funkcję. Drugi problem występował w samym Pidginie: nie było możliwości wyboru kamery, z której chcemy korzystać, ponieważ winks używał innej metody szukania urządzeń, niż ta którą wspierał Pidgin.

Przy okazji testowania rozmów wideo pod Windowsem, wpadłem na prosty pomysł: niektórzy użytkownicy nie chcą pokazywać obrazu ze swojej kamery, ale chcą widzieć innych. W związku z tym, zaimplementowałem nowe, wirtualne urządzenie: wyłączone. W zależności od wyboru użytkownika, wyświetla ono czarny ekran, lub szum jak w TV. Proste, ale pożyteczne.

Wyłączony obraz kamery

Testowanie pod Windowsem ukazało również parę błędów, które były cieżko zauważalne wcześniej: zawieszanie się przy podglądzie video, wyświetlanie obrazu z kamery w osobnym oknie. Poza nimi, poprawiłem kilka wycieków pamięci i innych drobnych rzeczy.

Kod źródłowy jest dostępny bezpośrednio z repozytorium oraz projektu openSUSE Build Service (dla bibliotek zewnętrznych). Jeżeli chcesz po prostu wypróbować funkcję rozmów wideo pod Windowsem, możesz pobrać instalator wersji testowej.

Jak zawsze, czekam na komentarze oraz zgłoszenia błędów.

  1. W tej wersji, tak jak w poprzedniej, nie ma powiadomienia czy ktoś piszę do mnie aktualnie wiadomość („pisze…”) . Tak samo jest w drugą stronę. O dziwo, mimo tego funkcja Tryb jasnowidza działa.

    • Powiadomienie (jak na razie) jest tylko w formie zmiany tytułu aktywnej zakładki na zielony lub szary (to jest problem z nową kontrolką do wyświetlania rozmowy). Co to znaczy „w drugą stronę”?

    • Chyba źle mnie zrozumiałeś. Chodziło mi o to, że znajomy do którego piszę, nie jest powiadamiany w ten sposób: „Hubert pisze…” kiedy piszę do niego w tej chwili wiadomość i tak samo jest w moją stronę.

    • A na pewno masz włączoną opcję „Powiadamianie znajomych o pisaniu”? Jaki protokół? Napisz do mnie na gg:3251322, tak będzie wygodniej to sprawdzić.

  2. Witam, mam do Pana takie pytanie. Jako deweloper programu Pidgin wie Pan więcej niż my zwykli użytkownicy. Kiedy planowane jest wydanie tak długo oczekiwanej wersji 3.0.0?

    Druga sprawa to moje takie gdybanie :) Czy dla Pidgina nie byłoby lepiej gdyby przeszedl z GTK na Qt/QML? Jestem użytkownikiem Linuksa od wielu lat i tak sobie myślę, że pozostanie w chwili obecnej na GTK nie wróży nic dobrego. W końcu kiedyś komunikator ten był podstawowym narzędziem w najpopularniejszym systemie z rodziny Pingwina jakim jest Ubuntu, które samo teraz jest w fazie migracji na Qt/QML.

    • Konkretnych planów wydania 3.0.0 nie ma – były przybliżone, na rok-dwa lata temu. Prawie na pewno wcześniej będą jakieś wersje testowe, więc będzie coś o tym wiadomo z pewnym wyprzedzeniem.

      Interfejs w Qt jest właśnie w trakcie budowy (pod nazwą roboczą Quail/przepiórka), w ramach tegorocznego GSoC – zobaczymy co z tego wyjdzie.

  3. Witam,
    Czy nowa wtyczka GG bedzie obslugiwac formatowanie w oknie rozmowy? np. wieksza czcionka, pogrubienie etc.?

  4. Cześć

    Kiedy ten nowy Pidgin – wersja 3.0.0 ma szansę stać się stabilną wersją? chodzi o planowany orientacyjny termin (jeśli istnieje).

    Testową wersję z HG skompilowałem, ale nie działa zbyt dobrze, nie ma dźwięku, wiesza się czasami okno rozmowy, wtyczek typu OTR, Encryption, gnome-keyring, tlen nie udało mi się do niego skompilować, podobnie autoanswer.
    Być może to wina dosyć niekonwencjonalnego i zarazem trudnego systemu (Gentoo hardened), ale Pidgin-2.10.7 chodzi bez problemu, podobnie, jak wszystkie wcześniejsze wersje.
    Za to ta nowa wersja pokazała sporo „chorób wieku dziecięcego” i ciekaw jestem, kiedy można się spodziewać gotowej wersji.

    Pozdrawiam

    • Planowany orientacyjny termin wydania to jakieś dwa lata temu. Od tamtej pory nikt się porywał na szacowanie daty wydania. Po prostu będzie, jak będzie gotowy. Wcześniej na pewno pojawią się wersje beta, więc będzie wiadomo trochę wcześniej.

      Wersja rozwojowa (nie testowa) z hg u mnie w miarę dobrze działa – wieszanie się okna rozmowy warto by było zdiagnozować, bo nie powinno nic takiego występować. Brak dźwięku to może być równie dobrze wina systemu, jak i Pidgina – też trzeba to sprawdzić.

      W sprawie wtyczek – nad OTR właśnie pracuję: w 3.0.0 będzie to część libpurple. Pidgin-Encryption wydaje się być zbędny przy OTR. Gnome-keyring jest już zbędny, bo (nawet w opublikowanej przeze mnie wersji testowej) nowe libpurple oferuje nawet więcej. A na resztę będzie trzeba pewnie poczekać, aż wydamy wersję finalną.

  5. Wieszanie się okna rozmowy może wynikać z użycia systemu Gentoo i gcc w wersji hardened.
    Do tego kernel z grsecurity/pax to też nie żarty, chociaż formalnie wszystkie pazury paxa z Pidgina testowego zdjąłem.
    W standardowym – 2,10.7 wystarczy wyłączyć MPROTECT, żeby mógł korzystać z biblioteki Gtk (wymaga tego do załadowania opengl/nvidia/lib/libGL.so.325.15 ), i chodzi bez problemu.
    To są dość ciężkie warunki dla eksperymentalnego kodu.
    Dodatkowo, Pidgin zawsze w Gentoo ląduje z łatkami od developerów, które nieco dopasowują komunikator do specyfiki systemu, używanych kompilatorów (np LTO -gold) i latają jakieś drobniutkie błędy.
    Łatki można obejrzeć w całej okazałości tutaj:
    http://data.gpo.zugaina.org/gentoo/net-im/pidgin/

    Pozdrawiam

  6. PS

    Dźwięk mam na Alsie (miksowanie dmix),
    wersje:
    media-libs/alsa-lib-1.0.27.2
    I Gstreamer:
    media-libs/gstreamer-0.10.36
    media-plugins/gst-plugins-alsa-0.10.36
    Stabilny Pidgin śpiewa bez problemu ;)

    Pozdrawiam

  7. Jest postęp.
    Przed chwilą skompilowałem najnowszą wersję z
    http://hg.pidgin.im/pidgin/main
    i conieco w niej działa, można wysyłać/odbierać wiadomości.

    Nie udało się sprawić, żeby pogadał ten 3.0.0-devel ze stabilną wersją, bo chociaż oba odpaliłem z różnych kont użytkownika, to nie mogą działać równocześnie na jednym ekranie X, po włączeniu drugiego wieszają się oba.

    Dźwięki się pojawiły, nie potrafi wysyłać emotek (nie wyświetla w oknie wysyłanej wiadomości i nie da się odpalić wysłania wiadomości z emotką), gadu chodzi, jabber chodzi.
    szyfrowania OTR nigdzie nie zauważyłem na razie w komunikatorze.
    Przesyłania plików i połączeń audio/video nie testowałem na razie
    W każdym razie jest duży postęp, ale coś czuję, że jeszcze jakieś co najmniej pół roku pójdzie na mniejsze lub większe poprawki, aby to była beta, do stabilnego potem też trochę czasu minie.
    Bardzo grzecznie zassał listy kontaktów i z jabbera, i z gadu, w stabilnej wersji kontaktów gadu nie chciał importować.

    Wersja przedstawia się jako:
    (libpurple 3.0.0devel)
    193d8725a3f525e52e7e4e0f2a02700baab26b4b
    Opcje conifigure:
    $ ./configure –disable-avahi –disable-nm –disable-kwallet –with-gtk=2 –enable-cyrus-sasl –enable-cap –enable-nss=yes –with-gstreamer=0.10 –prefix=/opt/pidgin3/
    Kompilator:
    gcc version 4.6.3 (Gentoo Hardened 4.6.3 p1.13, pie-0.5.2)

    Pozdrawiam

    • Łatki które podałeś w jednym z poprzednich komentarzy już są w gałęzi main (z wyjątkiem linkowania do libmath w łatce „gold” – postaram się dowiedzieć, dlaczego tego nikt nie wrzucił). Czy sprawdzałeś, czy Pidgin 3 rzeczywiście wymaga zdjęcia większej liczby zabezpieczeń niż Pidgin 2? Ten kod może i jest rozwojowy, ale staram się go utrzymywać możliwie blisko stanu „gotowego do użytku codziennego”, więc tego typu błędy wolałbym na bieżąco poprawiać. No, może z wyjątkiem wersji dla win32, która się chyba pół godziny kompiluje…

      Rozumiem, że 2 i 3 zainstalowane na jednym systemie działają, ale nie da się ich uruchomić jednocześnie? Ciekawe i warte poprawienia, ale to chyba na później odłożę.

      Czy zamiast emotikon wyświetlają się niebieskie kwadraciki ze znakami zapytania? U mnie tak rzeczywiście jest, nigdy nie używałem tej funkcji, więc nie zwróciłem uwagi. Jeżeli chodzi o wysyłanie wiadomości z samą emotką, albo obrazkiem (bez nawet spacji), to znam ten problem, leży w TODO.

      Nad OTR dopiero zacząłem pracować. Na razie developerzy OTR udostępnili mi do pracy jakieś zamknięte repozytorium gita, więc zanim nie zaimportuje rezultatów do repo Pidgina, to nie będzie czego oglądać.

      W sprawie importu kontaktów GG w stabilnej, to tam to już nigdy nie będzie działało – stary protokół już nie jest wspierany przez usługodawcę, a nowy jest tylko w libpurple 3.

  8. „Czy zamiast emotikon wyświetlają się niebieskie kwadraciki ze znakami zapytania? U mnie tak rzeczywiście jest, nigdy nie używałem tej funkcji, więc nie zwróciłem uwagi. Jeżeli chodzi o wysyłanie wiadomości z samą emotką, albo obrazkiem (bez nawet spacji), to znam ten problem, leży w TODO.”

    Dokładnie tak, idzie emota w tekście, natomiast sama emotka nie przechodzi, jakby nic nie było w oknie.
    W dodatku w oknie wysyłania w ogóle nie widać emotek, (kiedy dodaję z menu emotek) tylko kwadrat z jakimś znaczkiem, u mnie oznaczającym, ze nie ma takiego pliku.
    Wygląda to tak: http://s11.postimg.org/pxdj4vzir/jabber.png

    Jedna uwaga przy okazji do TODO:
    Jak ktoś używa emotek gadu7, których liczba jest dosć spora- i otwiera się okienko z kilkudziesięcioma animowanymi emotami, to Pidgin-2 w większości wersji potrafi na chwilę dostać zadyszki.
    Bardzo fajnie ten problem rozwiązany jest w nowym Kadu, gdzie wyświetla w oknie wyboru wszystkie ikony jako pliki statyczne, ale animuje tylko tą emotę, na którą się najedzie myszką.

    Uważam,że takie rozwiązanie animowanych emotek przydałoby się w Pidginie.

    Zabezpieczenia Paxa? to o tyle nie jest problem, ze 99,99% komputerów z Linuxem nigdy nie będzie miało do czynienia z grsec/pax, warto się tym interesować tylko dlatego, że pomysły z grsec/paxa powoli ale skutecznie wędrują do standardowego kernela, (np ostatnio opcja hidepid w fstab, wcześniej PIE, relro i ASLR).
    W dodatku kompilowane z palca, czy instalowane z binarek programy często potrzebują specjalnej troski, w porównaniu z ich odpowiednikami kompilowanymi przez portage.

    Możliwość uruchomienia równocześnie wersji 2 i 3 na jednym Xserwerze prawdopodobnie jest niemożliwa z powodu jakiegoś konfliktu albo w przestrzeni Xorga albo dbusa.
    Oba się uruchamiają, ale w pewnym momencie, przy dowolnej akcji potrafią się oba zawiesić, i wtedy można je tylko ubić.
    Chyba nie ma się co tym zajmować, Xorg, to jeden wielki koszmar, im wcześniej zastąpi go Wayland, tym lepiej. ;)
    Ostatnio miałem tyle cyrków z Xorgiem 1.13 i 1.14, że nie będę po nim płakał. ;)

    Przyszłość w Linuxie, to Wayland, i ewentualnie w Ubuntu Mir, choć osobiście jestem zdania, że Mir będzie musiał być zgodny z Waylandem – łatwiej jest napisać łatkę na jeden serwer wyświetlania, niż na XXX programów, które mają z niego korzystać, a Connonical, to nie samobójcy.

    • W aktualnej wersji z repozytorium (jeszcze nie ma builda dla niej – patrz komentarz niżej) już nie powinno być żadnych problemów z emotikonkami (więcej we wpisie na blogu z dnia 2014-04-21).

    • W tej chwili nie pracuję nad A/V bezpośrednio, ale ostatnio znowu zająłem się kwestią ogólnej stabilności win32. Planuję za kilka tygodni opublikować nowy build, tym razem jeden zawierający wszystkie dotychczasowo zaimplementowane funkcje.

      Nie sprawdzałem tej wtyczki, ale prawdopodobnie jest ona zbudowana dla libpurple 2.x.y. Gałąź 3.0.0 nie jest (i nie będzie) kompatybilna ze starym API, chociaż zazwyczaj dość łatwo zaktualizować wtyczkę do nowego API. Nie liczyłbym jednak na jakiekolwiek wtyczki zewnętrznych programistów przed wydaniem stabilnej wersji Pidgina 3.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.