sdvplayer is mostly coded in C Programming language version c99. C is chosen for its efficiency and simplicity. It is heavily multi-threaded using posix threads. There is a process thread which performs demuxing and decoding, a video-out thread performing video scaling, applying OSD, and schedules output time, a core-control thread which service various action requests one by one generated from user interfaces or internals of the program.
For handling multimedia files, demuxing and decoding sdvplayer is using libavformat and libavcodec from FFmpeg project. Software video scaling is also done with FFmpeg's libswscale. Simple text subtitle files are parsed by sdvplayers own module. OSD text rendering is done with FreeType 2. Video and audio outputs are handled through Simple Directmedia Layer also called SDL a cross platform multimedia frame work. Choosing SDL for output made it easier to port. Currently there is a simple Gtk+ GUI.
There are two dictionary look up modules, one using external command and other incorporates code from sdcv - command line version of stardict. The later could parse stardict dictionary files.