Archiwa tagu: C/C++

Dekodowanie wideo z ffmpegiem

 
W tym wpisie przedstawię podstawy użycia bibliotek, na których opiera się słynny program ffmpeg. Nie będę tu prezentował przykładów użycia ffmpega jako aplikacji. Przedstawię za to pewien minimalny kod, umożliwiający wydobycie i zdekodowanie do bitmapy  każdej klatki dowolnego wspieranego przez ffmpega pliku zawierającego wideo.

Czytaj dalej Dekodowanie wideo z ffmpegiem

Przed i po main()

 
“Mr. Death, is there an after-life?” – Monty Python’s The Meaning of Life
Funkcja main() jest umownym punktem wejścia dla programów w języku C i C++. Jednak wykonanie programu wcale nie zaczyna się w pierwszej linijce maina i wcale nie kończy się za ostatnią linijką. Wiedza o tym, co dzieje się przed i po mainie w sumie nie jest programiście niezbędna jednak czasem można ją pomysłowo wykorzystać.
Czytaj dalej Przed i po main()

Debugowanie deadlocków z gdb

 
W programowaniu wielowątkowym zdarza się bardzo wiele problemów, wynikających z tego, że program wykonuje się współbieżnie w wielu wątkach naraz i niestety istnieje potrzeba dostępu do współdzielonych zasobów oraz sygnalizacji pewnych zdarzeń. Deadlockami straszą rozmaite podręczniki o programowaniu a za nimi wykładowcy zajęć z programowania wielowątkowego czy systemów operacyjnych. Zupełnie niepotrzebnie, bo w programowaniu wielowątkowym dużo poważniejsze problemy powodują rozmaite wyścigi, jeśli programista zapomniał o umieszczeniu gdzieś sekcji krytycznej, albo tzw. lockouty, wynikające często z braku (lub błędu) sygnalizacji, a na deser pozostają problemy powstałe przez nieodpowiedzialne pląsanie po stercie procesu, współdzielonej przecież przez wszystkie wątki, czyli heap corruption. Deadlock w katalogu wszystkich bugów wydaje się najmniejszym zmartwieniem. Tutaj z reguły wystarczającym rozwiązaniem jest uruchomienie debuggera i skorzystanie z oczu.

Czytaj dalej Debugowanie deadlocków z gdb