LINUX.ORG.RU

Сообщения wusspuss

 

XMPP-клиент на Tcl/Tk, который заводится даже на Android

 , ,

Делаю десктопный XMPP-клиент на Tcl/Tk 9.

Что уже есть

  • Современный стек XMPP: OMEMO, звонки (совместимые с dino/conversations), отправка файлов, MAM (история на сервере, ленивая подгрузка), MUC, аватары
  • Статичная сборка в один бинарь без внешних зависимостей: всё перечисленное умещается в ~15 МБ, под Linux и под Windows

Чем отличается

Бизнес-логика жёстко отделена от гуя — в отличие от Dino/Gajim/etc, и по аналогии с телеграмным tdlib. Бэкенд может разговаривать по JSON, поэтому к нему можно прикручивать альтернативные фронтенды: в качестве proof of concept я накидал GTK-шный GUI и даже версию на Android.

По охвату даже шире, чем tdlib: в той же либе лежат и звонки с простым API уровня «начать/завершить звонок», так что любой порт получает функционал звонков почти бесплатно.

Как потыкать

Релиз ранний, в живом использовании почти не обкатан, поэтому ожидаемы баги.

wusspuss
()

Ищу работу (десктоп / бэкенд, опенсорс приветствуется)

 , , ,

Всем привет. Ищу работу, рассмотрю почти что угодно — удалёнка предпочтительнее. Грейд особо не загадываю, важнее адекватная задача.

Опыт в основном вокруг XMPP/Jabber и десктопа, и так вышло, что много возился со звонками — с разных сторон:

  • Контрибьютил фичи и багфиксы в десктопный XMPP-клиент на Vala/GTK (форк Dino) — вложения и шифрование, работа с историей и звонками, UI-доводка.
  • Делал аудио/видеозвонки в Gajim (Python, ещё один десктопный XMPP-клиент) — на заказ.
  • С нуля запилил мост для звонков в Jabber<->Telegram гейте (Go) — чтобы из джаббера можно было звонить в телегу. Тут пришлось спуститься низко: напрямую дёргал libopus и возился с rtp-пакетами
  • В веб-клиенте XMPP на JS реализовал поддержку аудиозвонков

По дороге пощупал: Python, C, Go, JavaScript, Jingle, GStreamer, WebRTC, Vala/GTK

Под новый стек/язык готов въезжать. Большая часть опыта как раз про то, чтобы зайти в немаленькую чужую кодовую базу и аккуратно пилить в ней фичи. Детали — в pounceandmiss@proton.me

wusspuss
()

gstreamer rtp через appsrc

 , , ,

Есть один пайплайн:

Gst.parse_launch('udpsrc address=127.0.0.1 port=5000 caps="application/x-rtp" ! queue ! rtppcmudepay ! queue ! autoaudiosink')

шлю ему пакеты rtp по udp и норм. Но нужно убрать лишний шаг udp, и пихать ему пакеты вызовом функции как-то. догуглился до такого:

source = Gst.ElementFactory.make("appsrc", "mysrc")
bin = Gst.parse_launch(f'appsrc caps=application/x-rtp name=mysrc  ! queue  ! rtppcmudepay ! queue ! autoaudiosink')

и пихаю пакеты через

source.emit('push-buffer', Gst.Buffer.new_wrapped(buf)).

но звука уже не слышу. Ошибок тоже не выдаёт. Вижу что график пайплайна отличается:

рабочий: https://i.stack.imgur.com/NIsD1.png

нерабочий: https://i.stack.imgur.com/sSk1d.png

Но причину отличия понять не могу…

wusspuss
()

RSS подписка на новые темы