Klient SIP (VoIP softphone) dla Windows
Prosty klient SIP oparty o projekt re/rem/baresip udostępniany przez creytiv.com na bardzo liberalnej licencji.
Najnowsze archiwum release: tSIP_0_2_13_bin.zip.
Aplikacja konsolowa
Bezpośredni port baresip dla Turbo C++ 2006 Explorer.
bsip_tc_20111215.7z - tylko kod źródłowy
Aplikacja graficzna
Klient SIP o podstawowej funkcjonalności (minimalny funkcjonalny podzbiór re/rem/baresip) ale pozbawiony zależności od zewnętrznych bibliotek i łatwy do skompilowania. Program jest przenośny i korzysta z ustawień przechowywanych w lokalnym pliku JSON. Pliki programu zajmują ~8,6 MB przestrzeni dyskowej.
- Initial release: Version 0.1
tSIP_0_1_src.7z (435 kB)
- 2012.01.11 Drobne poprawki
tSIP_0_1_1_bin.7z
tSIP_0_1_1_src.7z- zmiana sposobu dowiązania projektów bibliotecznych (#pragma link "re.lib", ścieżka przeszukiwania bibliotek uzależniona od konfiguracji),
- FIXED: błędy typu Access Violation przy uruchamianiu lub restarcie wskutek zmiany konfiguracji,
- dodana brakująca obsługa parametrów transport i expires konfiguracji serwera rejestracyjnego,
- ignorowanie stale=FALSE (traktowanie zawsze jak stale=TRUE) błędnie wysyłanego przez jeden z serwerów testowych z wiadomością SIP/401 i powodującego okresową utratę rejestracji.
- 2012.01.16 tSIP_0_1_2_bin.7z,
tSIP_0_1_2_src.7z
- źródła re/rem/baresip uaktualnione do wersji 0.4,
- winwave.c: usunięty drobny wyciek pamięci,
- dodany moduł baresip portaudio i wymagana biblioteka PortAudio v19/DirectSound linkowana w sposób statyczny; PortAudio jest w tej wersji domyślnym interfejsem audio, WaveIn/WaveOut jest pozostawiony jako alternatywa w konfiguracji,
- skrócenie wyświetlanego URI połączenia i rejestracji (usuwane mało istotne elementy URI).
- 2012.01.28 tSIP_0_1_3_bin.7z,
tSIP_0_1_3_src.7z
- dodany moduł speex i statycznie linkowana biblioteka,
- dodana funkcja logowania wysyłanych i odbieranych wiadomości SIP,
- ua_find(): w przypadku braku możliwości dopasowania przychodzącej wiadomości po nagłówku Contact wykonywane jest także porównanie z AOR ze względu na możliwe problemy z wieloma serwerami (problem jak Nokia: Problems with incoming VoIP 3.x calls).
- 2012.04.28 tSIP_0_1_4_bin.7z,
tSIP_0_1_4_src.7z
- re/rem/baresip uaktualnione do wersji 0.4.1,
- GUI: dodane auth username do konfiguracji,
- GUI: poprawiony problem z chwilowym zamrożeniem interfejsu użytkownika przy otwieraniu okna logowania jeżeli aplikacja pracowała przez długi czas.
- 2012.05.10 tSIP_0_1_5_bin.7z,
tSIP_0_1_5_src.7z
- dodany moduł gsm gsm baresip i statycznie linkowana biblioteka kodeka,
- dodany moduł kodeka G.726-32 i sam kodek ze starszej wersji SpanDSP (copyright Sun Microsystems i Steve Underwood, public domain),
- dodana konfiguracja (włącz/wyłącz) poszczególnych kodeków.
- 2012.07.22 tSIP_0_1_6_bin.7z,
tSIP_0_1_6_src.7z
- dodane ustawienie adresu lokalnego - ekwiwalent ustawienia "sip_listen" baresip, ustawienie może być wymagane na komputerach z więcej niż jednym interfejsem sieciowym dla określenia interfejsu który ma zostać użyty do nasłuchu.
- 2013.11.20 tSIP_0_1_7_bin.7z,
tSIP_0_1_7_src.7z
- wersja programu obsługująca równocześnie wiele kont i wiele połączeń została wydzielona jako osobna aplikacja (mtSIP),
- aktualizacja re (0.4.5), rem (0.4.4), baresip (0.4.6),
- okno logu: dodany zapis do pliku (menu kontekstowe) i ustawienie ciągłego logowania do pliku,
- dodany przycisk re-rejestracji (wymuszenie natychmiastowego ponawiania rejestracji przydatne dla przyspieszenia pracy po restarcie serwera rejestracyjnego),
- usunięte zamrożenie interfejsu użytkownika przy zamykaniu aplikacji w trakcie trwania rejestracji w sytuacji gdy serwer rejestracyjny nie odpowiada,
- funkcja auto-answer z definiowanym kodem odpowiedzi (auto-answer/auto-hangup/DND w jednym),
- historia połączeń (bardzo uproszczona),
- dodany przycisk redial,
- wykonywanie połączeń: założenie, że jeżeli wprowadzono przedrostek "sip:" nie ma potrzeby dodawania domeny uri (poprzednio: brak możliwości dzwonienia na uri typu sip:192.168.1.11).
- 2014.03.19 tSIP_0_1_8_bin.7z,
tSIP_0_1_8_src.7z
- kod baresip przeniesiony do osobnej statycznie linkowanej biblioteki dla uniknięcia problemów z powolną zbędną rekompilacją przez TC++,
- dialpad: dodane tony A, B, C, D,
- dodany przycisk Flash (wysyłający DTMF event),
- dodana funkcja Hold,
- dodana funkcja blind transfer.
- 2014.05.27 tSIP_0_1_9_bin.7z,
tSIP_0_1_9_src.7z
- dodany panel Speed Dial / BLF (subskrypcja application/dialog-info+xml).
- 2014.06.01 tSIP_0_1_10_bin.7z,
tSIP_0_1_10_src.7z
- FIXED: brak wymogu wprowadzania hasła dla konta,
- FIXED: FLASH nie jest już wyświetlany jako R w trakcie wybierania,
- FIXED: niespójny stan aplikacji przy restarcie w trakcie trwania połączenia,
- [Enter] w polu numeru rozpoczyna połączenie,
- automatyczne powtarzanie dla przycisku "backspace".
- 2014.08.07 tSIP_0_1_11_bin.7z,
tSIP_0_1_11_src.7z
Dodany nagłówek Accept do wiadomości SUBSCRIBE. Jakkolwiek nie powinien on być wymagany (RFC6665, 3.1.3), Asterisk 11.9.0 odrzuca takie wiadomości dla Event: dialog z komunikatem: WARNING[14547]: chan_sip.c:27847 handle_request_subscribe: SUBSCRIBE failure: no Accept header: pvt: stateid: -1, laststate: 0, dialogver: 0, subscribecont: '', subscribeuri: ''. Podziękowania dla Barry'ego Mercera za zgłoszenie. - 2014.09.27 tSIP_0_1_12_bin.7z,
tSIP_0_1_12_src.7z
- dodany WebRTC Acoustic Echo Canceller jako biblioteka statyczna,
- wybór AEC: none/Speex/WebRTC,
- poprawiony problem z jakością dźwięku dla wejścia WaveIn (kolejność waveInUnprepareHeader()).
- 2014.10.03 tSIP_0_1_13_bin.7z,
tSIP_0_1_13_src.7z
- niezależny wybór modułu i urządzenia audio dla wejścia audio, wyjścia audio i wyjścia dla sygnałów dzwonienia.
- 2014.10.05 tSIP_0_1_14_bin.7z,
tSIP_0_1_14_src.7z
- prosta książka telefoniczna,
- kod json-cpp przeniesiony do osobnej biblioteki statycznej,
- poprawiony tekst statusu po zmianie konfiguracji na konto bez rejestracji,
- dodane CALL_STATE_OUTGOING, UA_EVENT_CALL_OUTGOING (informacja zwrotna przed kontaktem z drugą stroną przy połączeniu wychodzącym),
- dodane CALL_EVENT_TRYING, UA_EVENT_CALL_TRYING (informacja po otrzymaniu odpowiedzi SIP/100).
- 2014.10.16 tSIP_0_1_15_bin.7z,
tSIP_0_1_15_src.7z
- poprawiony wybór urządzenia wyjściowego audio dla modułu winwave output (otwierane było zawsze urządzenie domyślne),
- tray icon, File/Minimize to tray, "X" minimalizuje do traya,
- ustawienia: Start minimized to tray,
- tekst statusu jako tray hint,
- wyczyszczone: duplikacja kodu Hangup()/CALL_STATE_CLOSED,
- proste okno powiadamiania o nowym połączeniu, dodane powiązane ustawienia.
- 2014.11.02 tSIP_0_1_16_bin.7z,
tSIP_0_1_16_src.7z
- usunięte użycie str_error z odpowiedzi SIP (przy re-INVITE zawierającym wyłącznie media image generowana odpowiedź zawierała "Unknown error" i pustą linię generując błąd składni),
- poprawione drobne błędy kompilacji: nieusunięty nieużywany moduł z webrtc.lib, nie wszystkie podprojekty dołączone do głównej grupy projektów reference to missing module with webrtc, not all projects included in main project group,
- poprawiony brak sygnałów dzwonienia gdy katalog roboczy jest inny niż katalog programu (np. przy uruchomieniu programu z pliku wsadowego poprzez start softphone01\tSIP.exe),
- wyczyszczona ikona BLF po usunięciu subskrypcji BLF dla danego panelu,
- ustawienia: opóźnienie dla auto answer z możliwością ustawienia zakresu z którego losowany jest czas (fuzzing).
- 2014.11.23 tSIP_0_1_17_bin.7z,
tSIP_0_1_17_src.7z
- poprawiona enumeracja urządzeń audio w oknie ustawień,
- skalowanie GUI (główne okno),
- intercom/paging (niezależny wybór urządzenia audio wykorzystywanego przy przychodzącym INVITE z nagłówkiem Call-Info z answer-after),
- winwave: usunięty wyciek uchwytów (wynikający z wywołania waveInUnprepareHeader po waveInClose),
- konfigurowalne przyciski (w podobny sposób do oferowanego np. przez telefony Yealink),
- ustawienia: podwójna szerokość panelu speed dial.
- 2014.11.29 tSIP_0_1_18_1_bin.7z,
tSIP_0_1_18_1_src.7z
- dodatkowa konfiguracja przycisków BLF: niezależny wybór numeru dla dzwonienia i numeru subskrybowanego oraz uzależnienie numeru wybieranego od stanu obiektu; funkcja może być traktowana jako uogólniona funkcja "Call pickup"
- nowa funkcja / typ przycisku: unsolicited MWI
- nowa funkcja / typ przycisku: MUTE
- 2014.12.06 tSIP_0_1_19_bin.7z, tSIP_0_1_19_src.7z
- 2015.01.04 v0.1.21
- poprawka do obsługi linii komend gdy nie została znaleziona poprzednia instancja
- ustawienia: tryb w którym widoczna jest tylko konsola - przewidziany jako uzupełnienie telefonu biurkowego
- domyślny czas rejestracji zmieniony na 0 (brak rejestracji)
- inicjalizacja dzwonka przeniesiona do projektu tSIP.exe (rozwiązuje problem z dzwonkiem słyszalnym przez ułamek sekundy nawet jeżeli auto-answer ma ustawione zerowe opóźnienie
- osobne ustawienia dzwonków dla INVITE z nagłówkiem Alert-Info: info=<Bellcore-dr1> (Bellcore-dr1 ... Bellcore-dr8) i dzwonka domyślnego; ze względu na przenośność pliki wav muszą być umieszczone w katalogu aplikacji
- mute ring (nowa funkcja i typ przycisku)
- ustawienie dla działania przycisku "X" okna głównego: minimalizacja/zamknięcie
- 2015.01.15 tSIP_0_1_22_bin.7z,
tSIP_0_1_22_src.7z
- FIXED: odpowiedź SIP/500 w wersji v0.1.21 przy braku Alert-Info (regresja),
- nowe ustawienie dla przycisku typu BLF: akcja przy wciśnięciu w trakcie rozmowy:
- brak (jak w poprzednich wersjach)
- wysyłanie cyfr DTMF z opcjonalnym dodawanym prefiksem (kodem centrali dla transferu lub R = FLASH)
- blind transfer przy użyciu REFER (ustawienie domyślne)
- (ponownie) więcej kolumn konsoli (do 5 + 1 kolumna "podstawowa") = do 55 przycisków (do 75 po zmniejszeniu wysokości przycisków; drobny refactoring dla ułatwienia przyszłego rozszerzania konsoli,
- informacja o wersji: dodany opis pliku (wykorzystywany np. przez Private Firewall, Process Explorer).
- 2015.01.19 tSIP_0_1_23_bin.7z,
tSIP_0_1_23_src.7z
-
drobne usprawnienia historii połączeń:
- zapisywanie tylko części user z URI połączenia przychodzącego
- rozmiar zwiększony do 1000 wpisów
- usunięte pomijanie zduplikowanych numerów
- zapis czasu trwania połączenia
- ikony reprezentujące kierunek połączenia
-
ustawienia: skróty
- ukrycie aplikacji
- answer/hangup
- ekwiwalent wciśnięcia konfigurowalnego przycisku konsoli
- ustawienia: szerokość kolumny konsoli
-
drobne usprawnienia historii połączeń:
- 2015.01.31 tSIP_0_1_24_bin.7z,
tSIP_0_1_24_src.7z
- naprawione działanie trybu konsoli
- przełączanie do/z trybu konsoli bez restartu
- log: dodane znaczniki czasu do logu treści wysyłanych/odbieranych wiadomości
- globalne (działające także gdy aplikacja nie jest ukryta) skróty klawiszowe; ze względu na możliwe problemy ze znalezieniem unikalnych kombinacji klawiszy wskazane jest użycie skrótów globalnych głównie do podstawowych funkcji jak przywołanie/ukrycie okna i odebranie/zakończenie połączenia
- 2015.02.07 tSIP_0_1_25_src.7z
- opcje kompilacji: zmiana zestawu instrukcji na Pentium Pro dla wszystkich projektów
- TimeCounter.h: narzędzie do pomiaru czasu wykonywania na potrzeby testowe
- przenoszenie focusa na pole edycyjne numeru po uruchomieniu i po przywołaniu aplikacji (np. przy użyciu globalnego skrótu, pozwalając na natychmiastowe wybieranie numeru)
- nowa akcja dla skrótów klawiszowych: redial
- fixed: niezainicjowane ustawienia przy tworzeniu nowego skrótu klawiszowego (często domy?lnie zaznaczony typ globalny skrótu)
- fixed: halt w pętli derejestrującej skróty globalne
- książka telefoniczna: dodane pole notatki
- wyskakujące okno notatki skrótu (przy połączeniu wychodzącym i/lub przychodzącym jeżeli notatka nie jest pusta); zapis rozmiaru i pozycji okna w konfiguracji
- nowy typ przycisku: ręczne wywołanie okna notatki kontaktu
- 2015.02.18 tSIP_0_1_25_1_bin.7z,
tSIP_0_1_25_1_src.7z
- fixed regression (0.1.25): wyjątek "Cannot focus disabled or invisible window" przy włączonym uruchamianiu do traya
- Branding.[h|c] - moduł z nazwą aplikacji i protokołu dla zmniejszenia różnic między gałęziami
- 2015.02.28 tSIP_0_1_26_bin.7z,
tSIP_0_1_26_src.7z
- (bardzo uproszczone) nagrywanie rozmów
- ustawienia: przełącznik on/off (wszystkie połączenia nagrywane automatycznie po włączeniu)
- zapis plików nagrań do podkatalogu \recordings
- dane zawarte w nazwie pliku: data, czas, kierunek połączenia, numer/URI rozmówcy zakodowany w base64
- format zapisu: WAV, oba kierunki zmiksowane do 1 kanału, PCM 8000sps, 16bit (~55MB na godzinę)
- (bardzo uproszczone) nagrywanie rozmów
- 2015.03.04 tSIP_0_1_27_bin.7z,
tSIP_0_1_27_src.7z
- możliwość wyłączenia i całkowitego ukrycia funkcji nagrywania bez rekompilacji poprzez zmianę/usunięcie ciągu "RECORDING_ENABLED" przy użyciu edytora zasobów
- okno ustawień można zamknąć przez wciśnięcie Esc
- nowy typ akcji dla skrótów klawiszowych: dzwonienie na numer zawarty w schowku (możliwowe użycie do integracji np. z przeglądarką poprzez zdefiniowanie skrótu globalnego
- fixed: brak działania skrótów globalnych dla Win Vista i wcześniejszych systemów wskutek użycia flagi MOD_NOREPEAT; eliminacja powtórzeń (timer 1s) dla starszych systemów na poziomie aplikacji
- ustawienia: możliwość przywrócenia zminimalizowanej aplikacji przy połączeniu przychodzącym
- ustawienia: możliwość przywołania okna powiadomienia przy połączeniu wychodzącym (użyteczne przy dzwonieniu z użyciem skrótu globalnego lub linku protokołu skojarzonego z aplikacją
- 2015.04.11 tSIP_0_1_28_bin.7z,
tSIP_0_1_28_src.7z
- implementacja systemu pluginów dla współpracy ze sprzętowymi telefonami; implementacja interfejsu dla telefonu EX-03 (aka @phone), prawdopodobnie kompatybilnego także z modelem EX-02 i kilkoma innymi
- FIXED: niewłaściwy parametr (branding) w linkach protokołu
- protocol handler: dodany parametr "ANSWER"
- 2015.04.16 tSIP_0_1_29_bin.7z,
tSIP_0_1_29_src.7z
- FIXED: chowanie aplikacji do traya przy użyciu przycisku "X" powodowało wyrejestrowanie globalnych skrótów oraz zamknięcie modułu pluginów
- 2015.05.31 tSIP_0_1_30_bin.7z,
tSIP_0_1_30_src.7z
- FIXED: regresja: historia połączeń nie zachowywana przy wyłączaniu komputera (WM_ENDSESSION handler)
- poprawiona obsługa sytuacji usunięcia pluginu który nie został wyłączony
- kontakty: import CSV
- 2015.06.06 tSIP_0_1_31_bin.7z,
tSIP_0_1_31_src.7z
- popup notatki kontaktu i okno edycji kontaktu: rozpoznawanie adresów URL i otwieranie w domyślnej przeglądarce przy kliknięciu
- nagrywanie: możliwość zmiany katalogu z nagraniami na inny niż względny; przykład zastosowania: zapis nagrań we wspólnym katalogu sieciowym
- okno informacji o programie: dodana lokalizacja pliku wykonywalnego, otwarcie katalogu programu po kliknięciu
- dodany czas trwania połączenia w stanie "Connected"
- 2015.07.04 tSIP_0_1_33_bin.7z,
tSIP_0_1_33_src.7z
- nagrywanie: numer/URI w nazwie pliku kodowany z użyciem base64 ze zmienionym alfabetem
- nowy typ przycisku: HTTP query - otwarcie URL (np. wyszukiwarki lub firmowego interfejsu bazy danych) z numerem z ostatniego (lub bieżącego) połączenia przychodzącego przekazywanym jako argument; domyślnie użyte google
- ustawienia: dodana konfiguracja zakresu lokalnych portów RTP/RTCP
- 2015.07.06 RecordViewer - przeglądarka nagrań
- 2015.08.08 tSIP_0_1_34_bin.7z,
tSIP_0_1_34_src.7z
- dodana obsługa subskrypcji presence
- 2015.08.15 tSIP_0_1_35_bin.7z,
tSIP_0_1_35_src.7z
- przycisk/lampka Presence współdzieli z BLF zachowanie dla wciśnięcia w trakcie rozmowy (przekazanie połączenia bez anonsowania lub wybieranie kodu DTMF)
- nowy typ przycisku: UNREGISTER
- nagrywanie: opcja zapisu połączenia jako pliku stereofonicznego - strony połączenie stanowią odrębne kanały; użyteczne m.in. do testów echa oraz opóźnienia; uwaga: podwaja rozmiar wynikowych plików (efektywnie 256kbps, 110MB/h)
- 2015.08.28 tSIP_0_1_36_bin.7z,
tSIP_0_1_36_src.7z
- fixed regression (0.1.35) in single channel call recording
- added baresip aufile (wave file as sound source) adapted to Win32
- presented as another (next to WaveIO and Portaudio) sound module for audio input
- requires S16LE, 1ch, 8kSps wave file, located in application directory
- call is disconnected at the end of file
- allows making call with no system sound device (MB with jack auto detection)
- poor man's voicemail (when combining announcement with silence at the end with call recording and auto answer)
- ACTION_SHOWWINDOW (SHOWWINDOW command line parameter) - bring application from tray
- new setting in "General" page: single instance (bring previous instance to front if already running); uses SHOWWINDOW action and same mechanism as click-to-call
- 2015.09.02 tSIP_0_1_36_1_bin.7z
- FIXED: problem z ustawieniami plików dzwonków i źródła audio (case sensitivity)
- 2015.09.11 tSIP_0_1_36_2_bin.7z
- FIXED: typ urządzenia wejściowego w domyślnej konfiguracji ustawiony był na plik wave podczas gdy właściwy plik nie był wybrany co skutkowało natychmiastowym rozłączaniem połączeń
- FIXED: znaki NUL (0) znajdowały się w logu zapisanym do pliku na końcu każdego wiersza
- 2015.10.24 Plugin umożliwiający uruchamianie prostych skryptów w języku Lua
- 2015.12.05 tSIP_0_1_37_bin.7z,
tSIP_0_1_37_src.7z
- nowy typ przycisku uruchamiający wskazaną aplikację; może być użyty jako skrót do aplikacji RecordViewer lub np. notepada - numer z bieżącego lub poprzedniego połączenia może być przekazany jako składnik linii komend do aplikacji
- 2016.01.23 tSIP_0_1_38_bin.7z, tSIP_0_1_38_src.7z
- nowa funkcja: RTP streaming (paging, tylko strona nadawcza)
- nowy typ przycisku
- adres docelowy: unicast lub multicast (np. 192.168.1.10:4000) w polu Number przycisku
- każdy przycisk uruchamiający strumieniowanie może mieć przypisany osobny plik wave jako >źródło d>więku; jeżeli plik wave nie jest zdefiniowany użyte jest domy?lne >źródło d>więku z konfiguracji (np. mikrofon)
- uwaga: wersja obsługuje strumieniowanie tylko z kodekiem G.711a i musi być on włączony w konfiguraci
- rozszerzony interfejs dla pluginów z zachowaniem wstecznej kompatybilno?ści (funkcje eksportowane opcjonalnie przez biblioteki DLL)
- SetPagingTxCallback - ustawia funkcję do wywołania przez DLL dla uruchomienia strumieniowania
- SetPagingTxState - przekazanie do DLL informacji o rozpoczęciu/zakończeniu strumieniowania
- ustawienia konta: dodane outbound proxy (równoważne parametrowi outbound1 baresip dla konta ale - podobnie jak z serwerem SIP - prefix sip: nie powinien być zawarty)
- drobne uporządkowanie ustawień konta - rozdzielone
- ustawienia podstawowe (serwer, UDP/TCP, user, password i parametr Expires/wyłączenie rejestracji
- ustawienia opcjonalne
- nowa funkcja: RTP streaming (paging, tylko strona nadawcza)
- 2016.02.02 tSIP_0_1_39_bin.7z, tSIP_0_1_39_src.7z
- poprawiona regresja (0.1.34): brak działania MWI
- obsługa NOTIFY z "Event: talk" (zdalne odebranie połączenia dla współpracy z bliżej nieokreślonym systemem CRM używającym AMI asteriska do sterowania softfonem), nowe ustawienie w zakładce "Call"
- 2016.02.13 tSIP_0_1_40_bin.7z, tSIP_0_1_40_src.7z
- konfiguracja programowalnych przycisków przesunięta do osobnego pliku (tSIP_buttons.json) dla uniknięcia przepisywania dużej tablicy JSON przy każdym zamykaniu aplikacji i potencjalnego ułatwienia współdzielenia konfiguracji przycisków między użytkownikami lub instancjami programu
- maksymalna liczba kolumn z programowalnymi przyciskami zwiększona z 5 do 12 - do 132 przycisków programowalnych (przy zmniejszonej wysokości: do 180); wykorzystanie wszystkich 12 kolumn wymaga ekranu o szerokości przynajmniej 1440 px (przy domyślnej szerekości kolumny)
- FIXED: problem przemieszaniem kolumn przy zmianie ilości kolumn bez restartu
- dodany przycisk "Reset all" do okna programowania przycisku
- drobne uporządkowanie okna programowania przycisku; wydzielenie ustawień wizualnych
- dodana konfiguracja koloru tła przycisku dla wizualnego grupowania przycisków
- FIXED: przy kliknięciu przycisku o typie Disabled generowany był log: "Unhandled BTN type = some_big_number"
- przycisk typu SpeedDial podobnie jak BLF i Presence korzysta z ustawień akcji w trakcie połączenia (DTMF lub transfer)
- 2016.02.24 tSIP_0_1_41_bin.7z, tSIP_0_1_41_src.7z
- FIXED: ciało wiadomości przychodzącej nie było wyświetlane przy logowaniu
- dodana akcja (= nowy możliwy skrót klawiaturowy): wł/wył konsoli
- zmodyfikowane okno ustawień (drzewo kategorii)
- wydzielone ustawienia sieciowe (bind address, RTP ports)
- rozpoznawana linia typu "Polycom" Call-Info: Answer-After=X w przychodzącej wiadomości INVITE (obok poprzednio obsługiwanej Call-Info: <uri>;answer-after=X)
- nowe ustawienie konta, "answer any"; po włączeniu konto traktowane jest jako "lokalne" i używane do obsługi wiadomości które normalnie spotkałyby się z odpowiedzią SIP/404 ze względu na brak możliwości dopasowania konta do obsługi; ustawienie przeznaczone głownie do celów testowych jak symulacja centrali obsługującej dowolne połączenie przychodzące
- 2016.03.12 tSIP_0_1_42_bin.7z, tSIP_0_1_42_src.7z
- [Display Name] jest używane jako linia opisu jeżeli numer nie został znaleziony w książce telefonicznej
- nowe ustawienie: pokazuj tylko część user (jeżeli jest obecna) URI jako CLIP
- Contacts: filtrowanie uwzględnia też numery telefonów/URI
- dodane filtrowanie do historii połączeń
- historia połączeń zapisuje display name dla przychodzących połączeń
- historia połączeń wyświetla nazwę kontaktu jeżeli jest dostępna, w drugiej kolejności display name, numer/URI przy braku
- FIXED: memleak: contact_any
- dodany kodek G.722; uwaga: WebRTC AEC jest obecnie nieaktywne dla próbkowania 16kHz
- 2016.05.03 tSIP_0_1_43_bin.zip, tSIP_0_1_43_src.7z
- dodana konfiguracja bufora jittera; zmiana domyślnych ustawień zalecana tylko w przypadkach ekstremalnych jak użycie VoIP poprzez warstwy VPN lub Tor
- nowy typ przycisku: script
- 2016.05.13 tSIP_0_1_44_bin.zip, tSIP_0_1_44_src.7z
- poprawiony problem przy "@" w haśle (błąd dekodowania AOR; zmiana sposobu przekazywania hasła)
- wybór kodeka (PCMA/PCMU/G.722) dla funkcji paging; wybrany kodek musi być włączony w konfiguracji
- dodany (opcjonalny) wybór interfejsu sieciowego (baresip: net.ifname) mogący pomóc przy niewłaściwym adresie w liniach SDP "o" i "c" w konfiguracji z wieloma interfejsami; wymagane jest wpisanie pełnego identyfikatora adaptera, jak widoczny w logu przy starcie, wraz z nawiasami ("{012345678-0123-0123-0123-ABCDEF012345678}")
- 2016.05.22 tSIP_0_1_45_bin.zip, tSIP_0_1_45_src.7z
- moduły DLL (podkatalog "modules"); w tym momencie wspierane tylko moduły kodeków
- szablon modułu kodeka G.729 przeznaczony do kompilacji z użyciem Code::Blocks/MinGW
- zmiana ikony w trayu przy nieodebranym połączeniu lub wiadomości na poczcie (MWI)
- FIXED: możliwy integer overflow i w dalszej kolejności access underrun przy kodowaniu G.711a/u
- 2016.05.29 tSIP_0_1_46_bin.zip, tSIP_0_1_46_src.7z
- drobne poprawki związane ze skalowaniem GUI i obrazkami przycisków programowalnych
- zmiana obsługi obrazków przycisków programowalnych większych niż 16x16
- przezroczystość etykiet opisowych przycisków programowalnych - obrazki mogą być użyte jako tło
- dodany wybór tła (bitmapy) dla dialpada
- wyłączone TabStop dla przycisków dialpada 0...9*#
- FIXED: memleak przy restarcie lub zakończeniu pracy stosu w trakcie gdy uruchomieniony jest paging
- 2016.06.02 tSIP_0_1_46_3_bin.zip, tSIP_0_1_46_3_src.7z
- branding: nazwa aplikacji i domyślna nazwa dla protocol handler ("click-to-call") mogą być zmienione przez edycję zasobów
- FIXED: dla HTTP query używany był pełny SIP URI zamiast numru telefonu
- dodane ustawienie dla HTTP query: możliwość uruchamiania automatycznego przy połączeniu przychodzącym lub po jego odebraniu
- 2016.06.22 tSIP_0_1_47_bin.zip, tSIP_0_1_47_src.7z
- interfejs pluginów: dodana funkcja GetNumberDescription(), (możliwość pobrania opisu z książki telefonicznej dla numeru)
- plugin text-to-speech (mówiący dzwonek)
- 2016.08.24 URL-hit plugin (wysłanie żądania HTTP GET w tle przy przychodzącym połączeniu)
- 2016.09.03 tSIP_0_1_48_bin.zip, tSIP_0_1_48_src.7z
- nowe ustawienie w zakładce "General": "Do not beep when using [Enter] in main window to dial or transfer call" - generowany sygnał dźwiękowy był niezamierzony, ale została pozostawiona możliwość generowania go w charakterze sygnału potwierdzenia
- nowe ustawienie: "History"/"Do not store history to file"
- [BREAKING] ustawienie kodeków z poprzednich wersji nie są zachowywane; PCMU + PCMA ustawiane są jako domyślne po upgrade
- [BREAKING] kodeki z modułów dynamicznych (G.729) wymagają ręcznego włączenia w konfiguracji
- nowy, poprawiony sposób konfigurowania kodeków audio, pozwalający niezależnie włączać/wyłączać kodeki z danego modułu jeżeli moduł ten zarejestrował więcej niż 1 kodek oraz priorytetyzować je
- ustawienie kodeków zostały skojarzone z kontem, ale ze względu na obecne ograniczenie do 1 konta pozostawiona została osobna karta ustawień kodeków w konfiguracji
- przy wyborze kodeka dla funkcji strumieniowania RTP (np. multicastingu) osobne włączenie tego kodeka w ustawieniach nie jest wymagane
- dodany kodek L16 (próbki liniowe)
- L16/44100 dostępny jest na liście kodeków do strumieniowania; uwaga: przy domyślnym ramkowaniu (ptime) 20ms ramki UDP są fragmentowane
- dodane ustawienie ptime do strumieniowania RTP
- RTP timestamps startują od wartości losowej i kilka innych drobnych poprawek z re/rem/baresip
- 2016.10.16 tSIP_0_1_49_bin.zip, tSIP_0_1_49_src.7z
- nowe ustawienie w zakładce "General": własna ikona główna programu (.ico) i bitmapa ikony (.bmp, 16x16) w trayu dla nieodebranego połączenia z podkatalogu /img/; cel: ułatwienie identyfikacji instancji programu przy ich równoczesnej pracy np. w celu obsługi wielu kont
- okno powiadomienia o połączeniu ("Tray Notifier") może mieć przypisaną bitmapę tła
- ustawienia okna powiadomienia przeniesione na osobną stronę ustawień
- nowe ustawienie: "Hide settings" które może być użyte do ograniczenia dostępu użytkownika końcowego do ustawień programu, w szczególności w połączeniu z ograniczeniem praw do zapisu głównego pliku konfiguracji
- 2016.10.23 tSIP_0_1_50_bin.zip, tSIP_0_1_50_src.7z
- obsługa nagłówka Access-URL w przychodzącej wiadomości INVITE - otwieranie strony www o adresie wyspecyfikowanym w wiadomości SIP
- ustawienia ("Integration"): otwieranie ręczne, otwieranie zgodnie z wartością parametru mode w wiadomości, wymuszenie otwierania automatycznego
- nowy typ przycisku: "Access SIP URL" ręczne otwieranie strony
- obsługa nagłówka Access-URL w przychodzącej wiadomości INVITE - otwieranie strony www o adresie wyspecyfikowanym w wiadomości SIP
- 2016.11.05 tSIP_0_1_51_bin.zip, tSIP_0_1_51_src.7z
- RTP timeout (zakładka "Network") - rozłączanie połączeń przy braku odbioru pakietów RTP przez określony czas; poprawiona odporność na problemy sieciowe w przypadku pracy nienadzorowanej aplikacji w trybie auto-answer
- nowe typy przycisków: przełączanie wejścia i wyjścia audio podczas rozmowy ("speakerphone")
- 2016.11.19 tSIP_0_1_52_bin.zip, tSIP_0_1_52_src.7z
- dołączony preprocesor audio z baresip (odszumianie ścieżki mikrofonu bazujące na kodzie speex)
- ustawienia: karta AEC zastąpiona "Audio Processing", łączącą ustawienia AEC i preprocesora audio
- błąd przy dodawaniu filtra do łańcucha nie przerywa dodawania kolejnych filtrów
- onmouseover dla przycisków programowalnych zastąpiony przez onmousedown (zły wygląd na ekranie dotykowym przy niewidocznym kursorze)
- usunięty fokus z przycisków Call/Answer i Hangup buttons
- ustawienia: możliwość wyłączenia menu kontekstowego dla przycisków programowalnych (przypadkowa aktywacja przy pracy z ekranem dotykowym)
- dodane L16/48000 do zestawu kodeków
- ustawienia, logowanie: flush pliku logu przy zapisie, domyślnie wyłączony
- ustawienia, logowanie: limit rozmiaru pliku logu
- ustawienia: dodany przycisk aktualizujący listę pluginów
- 2016.11.26 tSIP_0_1_53_bin.zip, tSIP_0_1_53_src.7z
- FIXED: możliwe dzielenie przez zero w kodzie preprocesora speex
- przełączanie źródła audio działa także z funkcją RTP streaming (paging)
- skrypty Lua (zintegrowane):
- skrypty mogą być wykonywane przy zdarzeniach zmiany stanu połączenia, zmiany stanu pagingu - poprzednio tylko poprzez kliknięcie przycisku z przypisanym skryptem
- nowa strona ustawień z przypisaniem skryptów do zdarzeń
- ScriptExec: mapa kontekstów umożliwiająca równoczesne wykonywanie wielu skryptów
- dodana funkcja SwitchAudioSource (np. SwitchAudioSource("aufile", "test.wav"))
- dodana funkcja SendDtmf (np. SendDtmf("1234*#))
- dodana funkcja BlindTransfer (np. BlindTransfer("123"))
- dodana funkcja GetCallState (zwracająca liczbę zgodną z enum Callback::ua_state_e)
- dodana funkcja IsCallIncoming()
- dodana funkcja GetCallPeer() (zwracająca numer rozmówcy, niezależnie od kierunku połączenia)
- dodana funkcja GetStreamingState() (zwracająca liczbę zgodną z enum Callback::paging_tx_state_e)
- FIXED: dodana brakująca funkcja Sleep(milliseconds)
- dodany zestaw funkcji pozwalający na przekazywanie stanu pomiędzy skryptami lub wykonaniami pojedynczego skrytu:
- SetVariable("name", "value")
- value, isset = GetVariable("name") (zwracająca 2 wartości, isset == 0 jeżeli zmienna o tej nazwie nie została ustawiona)
- ClearVariable("name")
- ClearAllVariables()
- dodane funkcje GetInitialCallTarget() i SetInitialCallTarget(number) pozwalające na użycie softfona do funkcji originate
- settings/Speed Dial: opcja ignorowania notatki presence zwracanej przez serwer
- 2016.12.03 tSIP_0_1_54_bin.zip, tSIP_0_1_54_src.7z
- FIXED: możliwe było wykonanie więcej niż 1 połączenia w tym samym czasie co skutkowało niespójnością stanu aplikacji
- FIXED: konfiguracja WebRTC AEC z pliku ustawień nie była uwzględniana
- Lua: dodana funkcja ShellExecute(), pozwalająca ominąć niedogodność os.execute() polegającą na wyświetlaniu konsoli
- Lua: dodane zdarzenie "on timer"
- 2017.01.06 tSIP_0_1_55_bin.zip, tSIP_0_1_55_src.7z
- możliwość ustawienia własnej wartości nagłówka User-Agent (zakładka "General")
- Lua: dodana funkcja GetRegistrationState() (zwracająca liczbę zgodną z Callback::reg_state_e)
- Lua: dodana funkcja SetTrayIcon("fileFromImgSubdir.bmp"); poprawna obsługa przezroczystości może wymagać poeksperymentowania - w mojej
konfiguracji wymagane były bitmapy o 8-bitowym kolorze
- uwaga: po pierwszym użyciu funkcji tSIP przestaje sterować ikoną automatycznie (zmieniać ją przy połączeniu nieodebranym lub wiadomości na poczcie)
- Lua: dodane zdarzenie "on registration state"
- Lua: zmiana kolejności przeszukiwania ścieżek skryptów dla uniknięcia problemów z CodeGuard w wersji debug
- interfejs pluginów: dodana możliwość ustawiania zmiennych skryptowych przez pluginy
- Lua: dodana funkcja "Answer()"
- Lua: dodana funkcja "MessageBox" - bezpośredni odpowiednik funkcji WinAPI o tej samej nazwie ale z pominiętym parametrem uchwytu do okna
- 2017.01.16 GetIdleTime.zip - plugin ustawiający zmienną "InputIdleTime" dla skryptów Lua, wartość zmiennej odpowiada liczbie sekund braku aktywności użytkownika (brak użycia myszy, klawiatury)
- 2017.01.29 tSIP_0_1_56_bin.zip, tSIP_0_1_56_src.7z
- Lua:
- dodany wybór skryptu "on startup" (uruchamianego jednokrotnie przy starcie)
- dodana funkcja SetButtonCaption(btnId, text)
- dodana funkcja SetButtonDown(btnId, state) - ustawianie stanu wciśnięcia dla przycisku
- dodana funkcja SetButtonImage(btnId, "file.bmp") - ustawienie bitmapy tła przycisku #btnId
- dodana funkcja PluginSendMessageText(dllName, text) - przekazanie parametru/komendy do pluginu
- dodana funkcja srcType, srcTypeIsSet = GetExecSourceType() i srcId, srcIdIsSet = GetExecSourceId(): zestaw funkcji umożliwiający określenie typu i id zdarzenia które spowodowało uruchomienie skryptu; umożliwia użycie jednego pliku skryptu do wielu przycisków i odczyt id przycisku wywołującego w skrypcie
- dodana funkcja InputQuery, dialog umożliwiający wprowadzanie tekstu przez użytkownika, bezpośredni odpowiednik funkcji VCL o tej samej nazwie: text, isAccepted = InputQuery(caption, prompt, defaultText)
- dodana funkcja GetRecordFile() zwracająca nazwę pliku z aktualnym lub ostatnim nagraniem rozmowy
- dodana akcja APP_QUIT dla linii koment ("tsip /tsip=APP_QUIT" możliwe użycie z przeglądarki przez link tsip:APP_QUIT); powoduje zamknięcie poprzedniej instancji programu, ułatwia przeprowadzenie provisioningu poprzez podmianę plików konfiguracyjnych gdy program nie jest uruchomiony
- ukryte etykieta i pole edycyjne "Number" przy edycji przycisku typu "Script"
- Lua:
- 2017.01.29 Plugin CommState - tani konwerter USB-UART jako interfejs łączący softphone ze światem zewnętrznym (GPIO: 2 wyjścia, 4 wejścia dostępne).
- 2017.02.25 tSIP_0_1_56_1_bin.zip: changes for video doorphone function using RTSP network camera
- Lua: aktualizacja do wersji 5.3.4 (ze względu na wsparcie dla operacji bitowych użyteczne przy WinAPI)
- Lua: dodane zdarzenie "on BLF (dialog-info) state" ID (numer) kontaktu który zmienił stan jest przekazywany poprzez GetExecSourceId()
- Lua: dodana funkcja zwracająca numer telefonu i stan BLF kontaktu o danym ID (do użycia w skrypcie zdarzeniowym "on BLF state"): number, state = GetBlfState(contactId)
- Lua: dodany wbudowany moduł "tsip_winapi" grupujący funkcje będące bezpośrednimi odpowiednikami funkcji WinAPI; moduł może zostać zaimportowany przez "require" a zawarte funkcje nie są częścią globalnej przestrzeni nazw
- FindWindow
- SendMessage
- MessageBox (duplikująca w tym momencie identyczną funkcję w przestrzeni globalnej)
- Beep (duplikująca w tym momencie identyczną funkcję w przestrzeni globalnej)
- 2017.03.03 tSIP_0_1_56_2_bin.zip
- [deprecated] dodana opcja uruchamiająca nagrywanie w stanie call progress / early media, dla umożliwienia nagrywania sygnałów i zapowiedzi przekazynych przez operatorów w pasmie
- 2017.03.26 tSIP_0_1_57_bin.zip, tSIP_0_1_57_src.7z
- nowe ustawienie, zastępujące dodane w 0.1.56.2: rozpoczęcie nagrywania może być ustawione jako ręczne (przy użyciu Lua), przy rozpoczęciu rozmowy lub przy early media
- Lua: dodana funkcja ręcznego włączania nagrywania: status = RecordStart(filename, channels), gdzie filename = pełna ścieżka i nazwa pliku wav, channels (1 lub 2) = mono lub stereo (niezależne kanały dla stron rozmowy)
- Lua: dodana funkcja GetExeName(), zwracająca pełną ścieżkę i nazwę pliku aplikacji
- Lua: dodana funkcja GetRecordingState(), pozwalająca sprawdzić czy nagrywanie jest uruchomione
- 2017.04.08 tSIP_0_1_58_bin.zip, tSIP_0_1_58_src.7z
- dodana konfiguracja parametru ptime (zakładka Account tab); zmiana ptime na 10 jest wymagana do uzyskania komunikacji z pjsip/pjsua z użyciem kodowania L16/44100 (ptime = 20 wywołuje PJ_ASSERT_RETURN wewnątrz enkodera L16 pjsip)
- Lua: dodana funkcja ForceDirectories(dir), działająca analogicznie do funkcji VCL o tej samej nazwie ale zwracająca 0 przy powodzeniu - przeznaczona do wywołania przed RecordStart() jeżeli katalog docelowy nie istnieje jeszcze; wymaga pełnej ścieżki, np.: ForceDirectories("D:\\test\\test123")
- okno edycji przycisku może być zamknięte Esc
- usunięty focus, z przycisków dialpadu, i kilku innych elementów (fokus może należeć tylko do elementów edycyjnych)
- cyfry wprowadzane w polu edycyjnym numeru generują znaki DTMF
- usunięta nowa linia po tekscie zwracanym przez strerror()
- linie "Unknown error" w logu np. po normalnym zakończeniu rozmowy przez drugą stronę zamienione na bardziej informacyjne komunikaty
- przyczyna błędu rejestracji (np. 404 Not Found) wyświetlana jest na pasku statusu (może nie mieścić przy długiej nazwie serwera, ale powinna być widzialna gdy konsola jest rozwinięta
- dodany typ zdarzenia skryptu "on dial", skrypt uruchamiany przy wciskaniu klawiszy dialpad lub edycji numeru z użyciem klawiatury; zastosowanie: generowanie lokalnych dźwięków przy wybieraniu
- 2017.06.16 tSIP_0_1_59_bin.zip, tSIP_0_1_59_src.7z
- Lua: dodana funkcja GetCallInitialRxInvite(), przekazująca pełny tekst pierwszego przychodzącego INVITE z połączenia; pozwala na wyodrębnianie z wiadomości linii dowolnego typu w reakcji na połączenie przychodzące w skrypcie "on call state", np. użycie Remote-Party-ID do wyświetlenia dodatkowogo numeru CLIP na jednym z programowalnych paneli/przycisków
- Lua: dodana funkcja description = GetContactName(number) pozwalająca uzyskać opis kontaktu związanego ze wskazanym numerem
- ustawienia: dodana opcja wymuszenia częsci user "Contact" (zamiast domyślnego losowo wyglądającego ciągu)
- Lua: dodana funkcja GetRxDtmf(), zwracająca pojedynczy znak DTMF (lub pusty ciąg) z kolejki odbiorczej; znak jest usuwany z kolejki
- dodana programowa regulacja głośności dla obu kierunków
- 2017.08.27 tSIP_0_1_59_4_bin.zip
- FIXED: inconsistent application state when handling incoming REFER (call being transferred)
- added simplified handler for out-of-dialog REFER - this is supposed to work with ANVEO CTI; as this seems little dangerous this is opt-in feature with new settings in "Calls" tab added; node: depending on setup using "Answer any" account option might be required
- added kiosk mode ("General" tab, later moved to "Locking" tab)
- added new button types: show settings (blocked if "Hide settings" is used), minimize, show log and exit
- increased max value allowed for GUI scaling setting to 500%
- fixed scaling for phonebook and call history list columns width
- added "Hide mouse cursor" option ("General" tab)
- added option to set 2 caption lines for programmable buttons, e.g. description + number for BLF button
- 2017.10.11 tSIP_0_1_60_2_bin.zip, tSIP_0_1_60_2_src.7z
- added separate audio output device selection for ring (incoming call)
- application version is stored in configuration to help with seemless upgrade (now: copying alert sound device to ring sound device for older version)
- 2017.11.01 tSIP_0_1_60_3_bin.zip
- added "nullaudio" input (generating silence) and output (discarding samples) audio device; intended to be used on machines with no audio I/O, e.g. with no microphone connected and autosensing jack, virtual machines or when running as service
- 2017.11.12 tSIP_0_1_60_4_bin.zip
- added "Display"/"Decode Display Name (UTF) to local (ANSI) code page" parameter
- 2017.12.23 tSIP_0_1_61_bin.zip, tSIP_0_1_61_src.7z
- attempt to remove bug related to TCP transport - reported 100% CPU load on disconnection, seemingly fixed by additional conn_close(tc, 0) in tcp.c on recv() error
- Settings/Calls: custom/extra header lines can be added to outgoing INVITEs (e.g. Call-Info with answer-after or Answer-After to make second party answer call automatically)
- 2018.04.06 tSIP_0_1_62_bin.zip, tSIP_0_1_62_src.7z
- removed "tool" line from SDP - suspected to be causing "488 SDP Parameter Error In SIP Request" error when calling using t-mobile.de operator
- settings: added GUI scaling for tray notifier window
- added Lua ShowTrayNotifier(description, uri, incoming) function (mainly for testing)
- neither Answer nor Hangup button is active by default in tray notifier window
- FIXED: bug in limiting tray notifier window position resulting in not restoring previous position if notifier was near the screen right/down edge
- interoperability (supervoip.pl, some other German operator): using username as default contact name if contact name is empty instead of semi-random contact name based on memory address
- "level" label in settings disabled for audio preprocessing
- added hints for volume reset buttons
- settings window moved from desktop center to screen center position
- added Settings/Delete call history menu item (deleting immediately history file content and clearing items from dial combobox)
- Log and "About" windows can be closed with Esc
- if call is closed from reason other than normal disconnection - call state label displays reason (e.g. "488 Not Acceptable Here", "480 Temporarily Unavailable") for 8 seconds
- 2018.05.19 tSIP_0_1_62_4_bin.zip
- added options to hide "View" and "Help" menu (limiting access for the operator together with option to hide settings menu)
- new command line option: PROGRAMMABLE_BTN_xxx (i.e. "tSIP.exe /tsip=PROGRAMMABLE_BTN_023") - simulating programmable button with ID = xxx (0...100+) being pressed
- added Lua GetUserName() function, returning user name from configuration - intended to be used to differentiate instances, e.g. fetch list of numbers to call from shared folder with path depending on user name / login
- FIXED: due to hazard between callback and control queues ring audio might be started after call ended (for calls with CANCEL immediately after INVITE) and not stopped; forcing ring stop on end of call event
- new settings: "Show main form when answering call" and "Hide tray notifier when answering call"
- added "General (2)" settings tab
- 2018.07.21 tSIP_0_1_63_bin.zip, tSIP_0_1_63_src.7z
- Lua: added ProgrammableButtonClick(buttonId) function - simulating clicking on specified button
- numeric code is added to text (quite often meaningless "Unknown error") generated by strerror
- registration client: reduced "failwait" saturation time, i.e. maximum time to retry registration from 1800s to 300s (time is randomized and increases exponentially up to this limit)
- subscription client: removed RESUB_FAILC_MAX limit, added "failwait" similar to registration with 900s limit
- 2018.11.12 tSIP_0_1_64_bin.zip, source: tSIP-0.1.64.zip
- added "logrotate" mechanism; configuration: number of old files to keep (0...5)
- added queues as new mechanism for connecting scripts and plugins (similar to variables)
- added Lua FindWindowByCaptionAndExeName(caption, exeName) function
- added sxmlc library source to re
- BLF buttons can now show remote identity and call direction (number calling / number called) as 2nd line (opt-out)
This feature seems to be supported by FreeSWITCH and with some issues by FreePBX - fixed few error log lines
- 2018.11.12 tSIP_0_1_64_1_bin.zip
- FIXED: BLF interoperability with FreeSWITCH (missing "terminated" icon)
- 2019.01.29 tSIP_0_1_65_bin.zip, source: tSIP_0_1_65_src.7z
- FIXED: nullaudio audio output module not working in release build due to unitialized variable
- FIXED: project dependency on gsm.lib not showing in IDE
- command line: target starting with "sip:" is treated as direct IP call
- FIXED: (repeated) delayed auto-answer on answer error
- added options to set custom application title and main form caption
- added speex resampler to aufile (wave file) audio input module
- added window ("Tools" menu) for script editing / ad hoc scripting based on Scintilla (this is making script plugin obsolete)
- script editor can be used directly from settings window (script assignment) editing existing script or creating new one
- rewritten reading main config and button config file - using previous values as defaults when reading JSON
- added RefreshAudioDevicesList() and GetAudioDevice() Lua functions
- added UpdateSettings(jsonText) Lua function
- 2019.04.14 source: tSIP_0_1_66_src.7z
- separated few settings into "Locking" tab (kiosk mode and other settings disabling functionality)
- added "Hide Tools menu" option
- fixed wrong interpretation of number of console column settings (broken in 0.1.65)
- corrected main window height to match exactly default console buttons height (broken in 0.1.65)
- added Lua WinAPI GetAsyncKeyState() function - allowing to e.g. modify script button action depending on Ctrl/Shift/Alt state
- added options to record only one side of the call (local or remote)
- extended Lua RecordStart(file, channels, side) function; third (optional) argument specifies which side(s) of the call should be recorded (0 = both/mixed, 1 = local, 2 = remote); third parameter applies only to single channel recording (channels = 1), otherwise call parties are recorded in separate left/right channels as previously
- added command line option to specify settings/profile directory; allows sharing single exe by multiple instances or multiple users; example: tSIP.exe /profiledir="E:\zrzut\aa bb"
- added Lua funcion: GetProfileDir()
- added "Hide tray notifier when call is auto-answered" setting
- FIXED: UTF8 decoding not applied to BLF remote identity display name
- added P-Asserted-Identity handling
- added REINVITE event handling (updating CLIP from PAI)
- added BLF settings: "Keep previous remote identity info if remote identity is missing in notification" and "Ignore or clear remote identity if call state is set to terminated"
- added Lua PlaySound() function (WinAPI equivalent in tsip_winapi module)
- script window accepts file drag-and-drop
- added "on programmable button" script event and "SetHandled" Lua function
- added Lua GetButtonType(btnId) and GetButtonNumber(btnId) functions
- 2019.04.15 tSIP_0_1_66_1_bin.zip
- FIXED: missing checking if "on programmable button" event script was set
- 2019.05.25 tSIP_0_1_67_bin.zip, source: tSIP_0_1_67_src.zip
- FIXED: missing checking if "on programmable button" event script was set (problem of 0.1.66)
- added separate width setting for each speed dial column
- added missing onClick handler to label2 of programmable button
- using PAI from 200/OK reply (updating calee number/name after pickup)
- added Help/Troubleshooting function
- added main window height setting
- added option allowing to hide speed dial toggle button
- added option modifying behavior on audio error (not disconnecting call) - Call settings tab
- added "on audio device error" script event
- added audio device error event to plugin interface
- extended plugin interface with capability of running scripts
- extended plugin interface: SetProfileDir(dir) function
- change wav audio source: releasing input file immediately after reading
- FIXED: error handler possibly not being called for resampled aufile
- prevent divide by zero exception if switching to nullaudio before CONFIRMED state
- new plugin: Text-To-Speech input (see github)
- 2019.07.17 tSIP_0_1_68_bin.zip, source: tSIP_0_1_68_src.7z
- added options hiding sensitive account settings
- intended to increase security when using on shared PC
- selected settings are not visible in GUI and not stored in file
- double click on plugin list enables/disables selected plugin
- added math.random() to Lua call loop example
- added setting to not use "sip:" as direct IP call mark from command line
- added "Show main form when making call" option, intended to be used when making call with global shortcut, command line or protocol handler
- moved some code into common.lib project
- Troubleshooting function: added checks for no and too many codecs
- call history: added settings to prefer PAI information for display and for dialing
- scripting: break signal is sent to running scripts before exiting application
- fixed tab order in contact editor window
- added hint with additional info for call history entries
- default configuration / first run: added extra button with hint that buttons can be edited with right-click
- added options hiding sensitive account settings
- 2019.09.07 tSIP_0_1_69_bin.zip, source: tSIP_0_1_69_src.7z
- added option formatting call duration in call history as minutes:seconds
- added codec name to history (hint, opt-out)
- storing history window list column widths in settings
- Lua: added codecName = GetCallCodecName() function
- added hints to software volume constrol sliders
- added scaling to main window height setting (may need manual changing when upgrading if scaling was other than 100%)
- Lua: added PluginEnable(dllName, state) function, e.g. PluginEnable("TTS.dll", 1)
- account settings: added configuration (RFC2833 / SIP INFO) for "DTMF" transmit method
- added configuration for logging window font (default font looked ugly under Wine)
- jsoncpp.lib: added few convenience functions and AnsiString handling
- Lua: added MainMenuShow(state) function (state = 0/1)
- added options ("Locking") hiding main menu and status bar
- FIXED: browser integration: previous window not being found if custom window caption was used
- FIXED: browser integration: commands from links like tsip:HANGUP not working
- scripting: added second timer as event source
- Lua: added SetButtonCaption2(btnId, text) function
- Lua: added state = GetButtonDown(btnId) function (state = 0/1)
- script window: added example determining event source type and id for script
- increased command and callback queues sizes to 1024
- mechanism for sending sustom requests
- Lua: requestId = SendCustomRequest(uri, method, extraHeaderLines), e.g.<br>
- local requestUid = SendCustomRequest("sip:192.168.1.12", "OPTIONS", "Accept: application/sdp\r\nContent-Length: 0\r\n\r\n")
- Lua: ClearCustomRequests() - deleting state of all custom requests
- Lua: DeleteCustomRequest(requestId)
- Lua: uri, method, extraHeaderLines = GetCustomRequest(requestId)
- Lua: haveReply, error, sipStatusCode = GetCustomRequestReply(requestId)
- Lua: replyText = GetCustomRequestReplyText(requestId)
- "on custom request reply" script event
- script window: example for scanning local network with OPTIONS
- some effort to improve aufile work on low-end PC (Atom N270, L16/44100, 10ms framing) - using waitable timer
- some code cleanup and reorganization for tSIP.exe project
- 2019.11.05 tSIP_0_1_70_bin.zip, source: tSIP_0_1_70_src.7z
- added aufile_mm audio source module (wave file with multimedia timer - working better on low end PC)
- Lua:
- added ApplicationClose()
- added SetCallTarget(target) for preprocessing number with "on make call" script event, e.g. removing some of the pasted characters
- added "Do not pass parameters to previous instance" setting (example use: launch application for single call and forget, closing application after the call)
- add button opening recordings folder
- FIXED: plugin profile directory was not updated on plugin reload
- HWND_TOPMOST/HWND_NOTOPMOST trick bringing window to front on incoming call
- Troubleshooting: add checking for Windows private IP
- more convenient network interface selection - interfaces list
- stopping wav playback (e.g. busy.wav) on Hangup button
- added winwave2 module - thread-based
- added simple AGC for RX direction
- added portaudio suggestedLatency settings
- FIXED: problem with tray notifier not closing when application was minimized
- FIXED: wrong call history entry on outgoing unanswered call if PAI was used
- added very basic support for call messaging
- 2020.01.27 tSIP_0_1_71_bin.zip, source: tSIP_0_1_71_src.7z
- using ofNoChangeDir for open/save dialogs, disabled ofHideReadOnly for open dialogs
- Lua: added GetAudioErrorCount() function, returning counter incremented when audio file ends
- Lua: added GetAudioRxSignalLevel() function
- added "Lenny" example
- extracting number from PAI also on outgoing calls
- added button opening script editor for programmable button edit window
- settings window: separed few items from "General" to "Branding" tab
- added Opus codec
- FIXED: no playback for short aufile files
- winwave play: trying to keep audio frame size more consistent
- moved dynamic modules loading before account initialization (fixing problem with G729.dll)
- added option enabling additional aubuf debugging logs
- Lua: added ReadContacts() functions, re-reading whole phonebook from JSON file
- 2020.05.01 tSIP_0_1_72_bin.zip, source: tSIP_0_1_72_src.7z
- file (path) can be assigned to each contact / phonebook entry
- new button type: "Contact file" - opening (using ShellExecute "open") file associated with last contact entry on request
- options to automatically open file associated with contact on incoming / outgoing call
- added "on contact note open" script event and AppendContactNoteText Lua function
- added display name configuration for account
- selected but not found audio device (e.g. detached USB device) is shown on the lists with [NOT FOUND] text
- FIXED: log file size setting
- added Portaudio locking (possible crash if audio devices are enumerated in script e.g. on startup)
- hotkey editor: hidden ID selection if not applicable for particular action type
- FIXED/improved: MESSAGE to window matching for incoming text messages (IM)
- added target display to text message window caption
- added sound played on incoming MESSAGE
- passing back status for sent MESSAGE, displaying in windows if status is other than SIP/200
- FIXED: ringtone files not being updated if edited manually
- added bitmaps/icons from Andi Topp (/img subdirectory, opt-in)
- bitmaps for buttons from main window (backspace, microphone, speaker) are now configurable
- added window for patching settings with JSON - paste part of configuration or drop JSON file to change configuration without looking through settings window
- added new button type: user agent restart
- added new button type: send text message (IM)
- Lua scripting: added SendTextMessage(uri, text, sendImmediately) function
- 2020.06.29 source: tSIP_0_1_73_src.7z
- plugin interface: added function allowing adding tray context menu item from plugin, making tSIP suitable to work as host for general purpose plugins
- plugin interface: added function setting application status
- new plugin: HTTPstatus - showing temperature/humidity/pressure from my sensor as tray hint
- new plugin: SystemShutdown - suspending (S3/S4) or turning off PC at specified time
- added Lua SetAppStatus function
- added inband DTMF generation option
- contact hist and call history: added options to send MESSAGEs
- added Lua example for SendTextMessage
- text editor in JSON configuration patching window changed to Scrintilla
- increased size of account audio codec list to 16
- jsoncpp: added Value::getString()
- handling incoming MESSAGEs: reply code and reason can be specified, softphone can be configured to not reply for incoming MESSAGE, generating timeout
- added Lua example sending single SIP request
- added StaticCheck.h / C++ STATIC_CHECK
- added pause function for recording
- new button types: recording start (starting with default parameters or resuming), recording pause
- new script event: on recording state
- Lua: added GetRecordingState(id) function
- added option to not restore taskbar button (hopefully helping with Windows RDP taskbar mess)
- show received reply status reason text for sent MESSAGE to the user
- minor changes for compatibility with early BDS2006 release, some cleanup, changed the way re compatibility with TC++ is achieved
- 2020.08.11 tSIP_0_1_74_bin.zip, source: tSIP_0_1_74_src.7z
- fixed some WIN32 typos from 0.1.73
- merged some re/rem/baresip updates
- change tray icon if initialization fails
- logging: clearing whole TRichEdit instead of removing oldest content line by line
- added Lua UpdateButtons(json) function
- added window for patching buttons configuration
- automatic restart on initialization error (e.g. temporary problem with network card resulting in bind failure)
- few other minor fixes
- 2020.10.28 tSIP_0_1_75_bin.zip, source: tSIP_0_1_75_src.7z
- contacts: differentiate popup menu depending on contact number/uri count
- added option to not create tray icon
- added option to hide dialpad
- changing tray icon on registration error
- fixed resizing of contact editor window: added constraints, changed anchors, changed labels text
- translation mechanism (only for few base controls at the moment)
- JSON translation files (structure: key -> text) in translations subdirectory
- UTF8 to ANSI conversion - depends on current code page for non-Unicode applications
- translation file selection: "General" settings tab
- added translation to TfrmTrayNotifier
- tray notifier: hide "Answer" button if call is confirmed
- option to start/pause recording from command line (or browser)
- added import of Yealink-like XML phonebook
- added Lua example fetching with curl and loading XML phonebook
- added option to log only first lines of SIP messages
- added option to skip encoding number in recording file with base64
- few other minor fixes and changes
- 2020.12.08 tSIP_0_1_76_bin.zip, source: tSIP_0_1_76_src.7z
- added German translation - thanks to Andi Topp (www.comfine.de)
- added option changing main window layout - call controls in dialpad
- added dialing combobox sorting order setting: by number/time
- added option to do not change tray notifier position
- added new button type: auto answer/DND (depending on SIP code)
- added luacheck integration to scripting window
- made SetHandled(0|1) work for "on make call" script
- added logs with error reasons for calling from command line
- accepting/processing script from command line (/tsip=SCRIPT=xxx) [opt-in]
- FIXED: button configuration not being saved after Lua UpdateButtons()
- restarting UA if needed after updating button settings
- fixed some of the luacheck warnings from script examples
- FIXED: UDP transport being used instead of TCP for some calls
- measuring button configuration read (OutputDebugString at the start) and write times (log)
- 2021.02.07 tSIP_0_2_00_bin.zip, source: tSIP_0_2_00_src.7z
- big changeset focused on GUI customization and kiosk-like applications
- [BREAKING] not all settings are kept when upgrading - please backup tSIP.json and tSIP_buttons.json before updating executable; as there are major changes you might also consider delaying update
- changed overall application layout - console is now main part of the window, main panel (dialpad, etc.) is on top of it
- buttons are now not organized in columns, can be moved and resized freely (context menu)
- two button containers: one small on the main panel ("Redial", etc. in default configuration), holding 15 buttons and large, covering whole window, holding 180 buttons
- button opening/closing console now changes main window size (hiding/uncovering part of the button container) and changes main panel position (allowing to e.g. "expand" console on the left side of main panel)
- new button container context menu
- new simple dialog window for copying button properties
- background bitmap can be assigned to button container
- added multiple new button properties:
- size and position
- visibility
- inactivity
- down/up state
- positioning for caption lines
- positioning for image
- font configuration for two caption lines
- bevel width + option to use custom, flat bevel
- state-depending colors for background, font and bevel
- extended Lua function list, mostly related to new button properties: SetButtonVisible, SetButtonInactive, SetButtonDown, SetButtonImage, SetButtonCaption2
- optimized button configuration saving (mostly affecting Debug/CodeGuard builds) - saving only properties different than default unless "saveAllSettings" option is used
- replaced "SpeedDialOnly" setting with set of "HideCallPanel" + "HideMainPanel"
- call controls panel and Dialpad/Contacts/History panel can be hidden and positioned independently
- new scripting event: "on programmable button mouse up/down", passing button id as source id
- Lua: added GetButtonMouseDown(buttonId) function
- separate background image setting for each button container
- showing button id and type on button popup menu
- 2021.02.23 tSIP_0_2_00_4_bin.zip, source: tSIP_0_2_00_4_src.7z - minor bugfix release
- removed button "noIcon" setting
- added button "labelLeft" setting
- FIXED: do not use initial button settings ("Redial", etc.) if settings exist (problem related to default settings not being stored in file since 0.2)
- added new hotkey action type: answer/hangup depending on call state (intended to be used with single button on BT headset)
- added French translation (thanks to Thierry Pimont)
- added Russian translation (thanks to https://github.com/homedimon)
- 2021.05.11 tSIP_0_2_02_bin.zip, source: tSIP_0_2_02_src.7z
- removed dialpadBackgroundImage - it is not replaced by bitmap for first button container that covers whole dialpad area
- numeric buttons are now configurable; button container covers whole dialpad area
- added configuration of dialpad elements other than programmable buttons (hiding, sizes and position)
- added setting to use ClientWidth/ClientHeight instead of Width/Height for main window
- added tone generator with Lua GenerateTones(ampl, freq); GenerateTones() takes up to 4 amplitude (as a fraction of full scales) + frequency (Hz) pairs; calling GenerateTones with empty parameter lists stops generator; tone generator is placed before softvol
- added setting to loop ring wave file without silence period
- added Lua function: state = GetButtonBlfState(btnId)
- reduced subscriptions retry times to maximum of 3600 s
- added Expires configuration for each dialog-info and presence panel/button
- 2021.05.18 source: tSIP_0_2_03_src.7z - minor bugfix release
- FIXED: missing dialpad keys when upgrading from version < 0.2
- avoid binding to VirtulBox/VMvare/Hyper-V network interface
- 2021.05.25 tSIP_0_2_03_1_bin.zip, source: tSIP_0_2_03_1_src.7z - another bugfix release
- FIXED: bug in pl_advance introduced in 0.2.03, affecting RFC2833 DTMF transmission
- 2021.07.17 tSIP_0_2_04_bin.zip, source: tSIP_0_2_04_src.7z
- added ZRTP support
- added translation mechanism for contacts, history, contact editor
- added Spanish translation
- FIXED: importing numbers #2 and #3 from CSV to contacts
- added note import when importing contacts from CSV
- added "SCRIPT_B64=" command line parameters - sometimes it might be easier to encode script with base64 than to escape it for command line
- increased buffer size for registrar URI, added log if adding account failed
- 2021.08.28 tSIP_0_2_05_bin.zip, source: tSIP_0_2_05_src.7z
- added TLS and SRTP support
- IMPORTANT: libcrypto-1_1.dll and libssl-1_1.dll (OpenSSL libraries) are now parts of the distribution - copy these files from zip if updating executable
- IMPORTANT: libcrypto-1_1.dll and libssl-1_1.dll are requiring installation of Visual Studio 2015 runtime (there is high chance you may have this already installed) or manually adding VCRUNTIME140.dll
- 2021.11.09 tSIP_0_2_05_3_bin.zip, source: tSIP_0_2_05_3_src.7z
- added "SCRIPT_FILE=" command line parameter - starting specified script file from /scripts subfolder
- use GetProcessImageFileName instead of GetModuleFileNameEx for FindWindowByCaptionAndExeName() Lua function (compatibility with 64-bit OS)
- FIXED: missing early media audio when SRTP was enabled
- added vcruntime140.dll to distributed binaries
- 2022.01.10 tSIP_0_2_06_bin.zip, source: tSIP_0_2_06_src.7z
- saving last SIP reply code and reply text in call history, can be added to history list hint
- added Lua GetPreviousCallStatusCode() and GetPreviousCallReplyLine() returning information about last failed call (after this call has ended, e.g. using "on call state" CALL_CLOSED event)
- added 3 extra returned values to GetBlfState(contactId) function: remote identity URI, remote identity display name, call direction
- Lua: added contactId = GetContactId(blfUser) function (number to contact id conversion to be used with GetBlfState() function)
- added new setting: SpeedDial/"Preferred state if multiple dialog elements are received in NOTIFY XML"
- added separate error codes/texts for opening wave files and opening audio devices
- call state label shows also local error information like error opening audio device (when call ends)
- Lua Hangup() takes SIP code and reason text as optional arguments
- added reason text to auto answer configuration, auto answer/DND button configuration and custom hangup button configuration
- added hint/tooltip to contact list (numbers + note)
- showing button ID + description on button editor frame
- exiting button editing (resizing/moving) with Esc
- added window with short (very short at the moment) description for each custom Lua function, accessible from Script window / Help
- 2022.03.08 tSIP_0_2_07_bin.zip, source: tSIP_0_2_07_src.7z
- FIXED: audio devices configuration was reset after config merge
- few minor updates to Lua help window
- log window: added buttons copying all and last 400 lines
- replying with 200 instead of 415 for NOTIFY with terminated/noresource (less mess in logs when working with FreeSWITCH)
- FIXED few bugs related to global hotkeys
- added new main window settings: offset allowing to change window position when switching between "normal" and "expanded" state, e.g. for anchoring window to right side of the desktop
- FIXED exception when in codec selection list codec was moved below last item list
- added option to start audio source early (actually opening it twice) - intended to fight with initial audio delay on Mairdi Bluetooth headset when switching profiles
- 2022.03.13 HidControl.dll
- 2022.04.10 TcpServer.dll
- 2022.04.30 tSIP_0_2_08_bin.zip, source: tSIP_0_2_08_src.7z
- FIXED option clearing BLF remote identity on call disconnection
- changed code responsible for restoring main window and showing tray notification to avoid stealing focus
- link in "About" window is now configurable and default value can be changed by editing resources
- refactored managing of settings pages
- settings pages can now be hidden individually
- settings (fixed/forced) can now be embedded as a resource, allowing e.g. to prevent some settings from editing by the end user by editing JSON file
- scripts can now be assigned to hotkeys directly (without previously needed programmable key middleman)
- added WinAPI keybd_event Lua function (e.g. for simulating Ctrl+C to copy selected text and make call using number from clipboard)
- FIXED "Message" contact popup menu item for contacts with single number
- added Lua HideTrayNotifier() function, fixed unused texts from ShowTrayNotifier()
- Troubleshooting: hints if bitmaps intended for BLF (dialog-info) are left after switching button type to Presence
- FIXED: button image was always centered vertically regardless of configuration
- Lua window: added File/New (mostly for convenience when working with kiosk-like GUI missing main menu)
- button configuration: number setting is not hidden for "Script" button (number may be read by script and then few buttons might use same script)
- FIXED: if main menu was hidden in settings, it was still visible at startup for a short moment
- FIXED: incoherent GUI state after making the call that failed immediately due to no network
- Locking: added separate setting making main window borderless
- added option (SpeedDial tab) to move main window by dragging button container (for semi-kiosk borderless applications)
- 2022.07.05 tSIP_0_2_09_bin.zip, source: tSIP_0_2_09_src.7z
- file format selection for call recording, calls can be now recorder also as Opus/OGG
- libopusenc.lib project is added
- Lua StartRecording(): new optional parameter selecting recording format (0 = WAVE, 1 = Opus/OGG)
- note: selecting very low bitrate for Opus would switch it to mono mode even if recording is configured as stereo
- updated French translation file - thanks to lyonelf
- file format selection for call recording, calls can be now recorder also as Opus/OGG
- 2022.10.25 tSIP_0_2_10_bin.zip, source: tSIP_0_2_10_src.7z
- FIXED: possible buffer overrun / crash in call recording, observed (mainly?) when ending the call with L16/48000/1 codec
- FIXED: confusing missing "Registering" status of startup that should be visible in case of any problems with registration
- added human-readable names to network adapters list (binding to network interface)
- added MessageBox if loading translation from file fails (e.g. due to invalid JSON)
- added MessageBox if file edit button in contact editor was pressed but file was not specified
- updated distributed OpenSSL DLLs to version 1.1.1g
- unified aufile and aufile_mm source, fixing playback of short wave files in aufile_mm
- renamed Settings "Phones" page to "Plugins / phones" and "WaveIn, WaveOut (2) - experimental" to "WaveIn, WaveOut v2"
- few other minor changes
- 2022.11.30 New option for G.729 codec, tSIP-plugin-g729.
- 2022.12.15 tSIP_0_2_11_bin.zip, source: tSIP_0_2_11_src.7z
- FIXED: WebRTC AEC was not working for 16 ksps codecs
- added support for G.711a/u (in addition to S16_LE) wave files playback as audio source (aufile/aufile_mm)
- programmable button config window: added missing handling of aufile_mm audio source module
- call recording: using saturation when recording in mono mode (both sides mixed)
- added access to call recordings from call history context menu
- new setting: History / Show record file in hint
- Help / Troubleshooting: added checking if network interface specified in Settings / Network is missing
- updated some translations
- do not lock "Settings" in main menu when UA is (re)starting
- this was initially added to prevent PortAudio crash when using by two threads at the same time (audio devices were enumerated when settings window was opened), later this problem fixed by adding PortAudioLock
- this fixes missing reenabling for this menu item for APP_START_FAILED state
- added configurable audio (noise) gate for TX direction (from local microphone)
- 2022.12.30 New, separate version with video support.
- 2023.03.23 tSIP_0_2_12_bin.zip, tSIP_0_2_12_video_bin.7z, source: tSIP_0_2_12_src.7z
- splitting binaries into separate "regular" and "video" versions
- "audio only" version should be preferred if you don't need video and don't need avformat audio input capabilities
- video support (moved back from tSIP-video), enabled by compile-time USE_VIDEO switch:
- separate binaries with some drawbacks
- LGPL licensing for FFmpeg
- openh264.dll needs to be downloaded separately from Cisco page due to licensing reasons (download openh264-2.3.1-win32.dll.bz2 and extract it (using e.g. 7-zip), rename openh264-2.3.1-win32.dll to openh264.dll and put it next to application executable)
- larger size (for this version 13 MB more, heavily depending on options used for FFmpeg compilation)
- lots of linked third-party code, not tested at the moment for compatibility with Win98/2000/XP or Wine
- some known issues and limitations, probably more of them unknown
- video source modules:
- DirectShow (regular cameras)
- FFmpeg avformat (common mp4 files with e.g. H.264+AAC, possibly rtsp cameras)
- colorbar generator: two versions, with and without animation
- nullvideo (black screen)
- video output modules:
- SDL, displaying in separate window or on specified programmable button (note that button sizes/layout are customizable)
- nullvideo (discarding received video stream)
- selfview module with picture-in-picture option
- codecs:
- H.264 with packetization modes 0 and 1
- H.263
- MP4V-ES
- new programmable button type, switching video source module and device during the call
- switching between cameras or camera/video file/colorbar generator
- might be used for video "mute" function, switching to e.g. animated colorbar generator
- this button type would be visible also in "audio only" build, but would not take effect
- new Lua function: SwitchVideoSource(module, device)
- FFmpeg avformat module can be also used as audio input, adding support for e.g.:
- mp3 files
- audio from mp4 and other video files
- internet radio stations (http-based, https is not supported with my current FFmpeg build)
- separate binaries with some drawbacks
- "About" window shows whether binary was compiled with or without video support; if video is enabled there are also additional configuration options in settings window
- audio source device/file and newly added video source device/file
- can now be used with relative path (taking precedence) or with absolute path, allowing e.g. to use big mp4 file as video or audio source without copying it to application folder
- audio/video source device does not have to be file now as avformat accepts also http or rtsp protocols, e.g. internet radio link
- default configuration: added "ABC", "DEF", "GHI", etc. letters to "DTMF" buttons
- small change for programmable button labels automatic vertical spacing in situation when button height is smaller than a sum of labels height
- contacts: locale-aware comparing/sorting using AnsiCompareIC (e.g. L and Ł should be next to each other)
- winwave2 is now the default audio input module (due to winwave issue with detaching audio device while this device is in use)
- default configuration: RTP timeout is now enabled with 300 s time
- incoming call: tSIP now responds with 488 instead of accepting "silent" call when there are no common codecs
- removed inline definition for C files, hopefully this would help with related compiler issue
- fixed INT64_MIN/INT64_MAX/UINT64_MAX definitions in TC++ stdint.h (tSIP/_doc folder)
- 2023.03.30 HidPhone.dll
- 2023.04.08 tSIP_0_2_13_bin.zip, tSIP_0_2_13_video_bin.7z, source: tSIP_0_2_13_src.7z
- fixed distorted audio / incorrect audio timing at the start of the call if using AAC internet radio as audio source
- fixed crash when name of the file used as avformat source contained non-ASCII characters
- L16/44100 (and up) no longer should require manual ptime limiting through account settings
- fixed timing and audio buffer sizing for L16 codecs with high sampling rate, low ptime like L16/48000/2
- add volume control (Settings / Audio IO) for alerting and ring audio
- changed start failure handling: faster initial restart, slowing for subsequent errors (better handling of e.g. slow to connect WiFi or detached network cable when starting PC)
- bunch of minor changes and code cleanup
- 2023.05.27 New major function for RecordViewer: transcribing call recordings to text.
RecordViewer.exe - narzędzie do przeglądania nagranych rozmów
Note: tSIP version with video support requires openh264.dll that needs to be downloaded separately from Cisco page due to licensing reasons. Download openh264-2.3.1-win32.dll.bz2 and extract it (using e.g. 7-zip), rename openh264-2.3.1-win32.dll to openh264.dll and put it next to application executable.
tSIP na githubie