Skip to content

Develop

nullkey edited this page Mar 4, 2011 · 2 revisions

Developer information

Modules

glc consists of main application (glc), optional support code (glc-support), thread-safe buffer library (packetstream) and a library for doing magic with ELF (elfhacks). glc, packetstream and elfhacks are licenced under zlib-style licence. glc-support has currently code licenced under GPL.

Main application is divided into glc libraries (video capturing, processing and playback library), glc-hook (hook functions for capturing), glc-capture (tool for preloading glc-hook into applications) and glc-play (tool for playing or processing streams).

glc libraries can be used independently for adding video capture or playback support into applications. Headers are installed by default into /usr/include/glc.

Source code

git access

Git is preferred way to acquire source code for development purposes. git clone git://github.com/nullkey/glc.git git clone git://github.com/nullkey/glc-support.git git clone git://github.com/nullkey/packetstream.git git clone git://github.com/nullkey/elfhacks.git

Required libraries

glc requires following libraries:

  • libGL -- At least OpenGL 1.4 -capable rendering library
  • libasound -- Recent ALSA libraries
  • libX11 -- X11
  • libXxf86vm -- X11 video mode extension
  • libpng -- PNG library

Building and installing

cmake is required for building glc, elfhacks and packetstream. Both elfhacks and packetstream must be installed before compiling glc.

cmake supports out-of-source builds. To build and install glc (elfhacks and packetstream are built same way), one could do something like this: tar -xzf glc-release.tar.gz mkdir -p glc/build cd glc/build cmake ..
-DCMAKE_INSTALL_PREFIX:PATH="/usr"
-DCMAKE_BUILD_TYPE:STRING="Release"
-DCMAKE_C_FLAGS_RELEASE:STRING="-O2 -msse -mmmx -fomit-frame-pointer" make && make install

Note: on 64-bit environment a 32-bit versions of glc libraries are required for capturing 32-bit applications. To build 32-bit version create a separate build directory, add -DMLIBDIR="lib32" -DCMAKE_C_FLAGS_RELEASE:STRING="-m32 ..."

to cmake command options and continue build as usual. For example building 64-bit glc: # NOTE build32 mkdir -p glc/build32 cd glc/build32 # NOTE lib32 # -DBINARIES:BOOL=OFF disables compiling glc-capture and glc-play binaries cmake ..
-DCMAKE_INSTALL_PREFIX:PATH="/usr"
-DCMAKE_BUILD_TYPE:STRING="Release"
-DCMAKE_C_FLAGS_RELEASE:STRING="-O2 -msse -mmmx -fomit-frame-pointer -m32"
-DBINARIES:BOOL=OFF
-DMLIBDIR="lib32" make && make install

Licenses

glc has zlib as primary licence. All code in packetstream and elfhacks is under zlib. All mandatory code in glc is under zlib. However there is GPL- and CDDL-licenced code included in glc source package. That code is however optional and can be disabled compile time for binary distributions.

QuickLZ

QuickLZ (altough rewritten and a bit different algorithm, so technically it is just another RLE+LZ) implementation exists in glc/support/quicklz. It is licensed under GPL and can be disabled compile-time by giving cmake option -DQUICKLZ:BOOL=OFF. However author has stated that as long as the QuickLZ part can be easily identified as GPL code and optional at compile-time, it is OK to distribute it.

LZO

LZO implementation exists in glc/support/minilzo. It is licensed under GPL and can be disabled compile-time by giving cmake option -DLZO:BOOL=OFF.

LZJB

LZJB implementation exists in glc/support/lzjb. It is licensed under CDDL and can be disabled compile-time by giving cmake option -DLZJB:BOOL=OFF.

Clone this wiki locally