User Tools

Site Tools


H.263 Encode Library


In the latter half of year 2002, I took part in a project of remote education system and was responsible for the design of video coding library. After studies and discussions, H.263 recommendation was choosed as the base algorithm, and then there comes two choices: modifying available open source codes from Internet or write the code by ourselves over again. Finally, the latter was adopted considering the future's problem of software maintenance and code optimization. Development works began in November 2002 and was almost over before Spring Festival of 2003. And afterwards only a few modifications was done on it, most work was done on the optimization for Intel x86 and XScale architecture processors. After I began to work for ISCAS in Apral 2004, I found lots of developments was based on the open source codes from Internet, accordingly I distributed this software also.


  • Picture format(size) supported: YUV4:2:0 (SUBQCIF, QCIF, CIF, 4CIF)
  • Quantization level of I,P,B picture can be preset
  • Motion search method can be set as FULLSEARCH of MVFAST
  • Bitstream format supported: ITU-T H.263, ITU-T H.263+, ITU-T H.263++
  • Coding options supported: AP, DF, RPS, B frames
  • GOB is alternate
  • Simple rate control algorithm is provided
  • Three packetization method provided: GOB unit, picture unit and fixed packed size(NEW)

RD Curves:


We thank Chen Hao(, Zhang Jie( and Dr. Song Bin(

Building Problems

Linux: Unpack the tar ball and enter the henclib directive, run “make dep” and “make”. Two macros can be assigned some value, STATIC for generating static library and DEBUG for generating debug infomation. (there are still some problems in static library, it can not be linked correctly during building applications, need help!!!)

Windows: Open file henclib.dsw using Visual C++ 6.0, three projects included: test(test program), WinDll(windows dynamic link library) and henclib(windows static library).

Using HEnclib

Encoding flow:

  1. Get default encoding options(GetOption)
  2. Reset encoding options
  3. Open encoder(EncOpen)
  4. Coding loop(EncOneFrm)
  5. Close encoder(EncClose)


  1. Encoding options can be modified through structure Enc_Option.
  2. A Callback functions must be provided by library user and attached to class CH263Encoder to deal with bits produced by the encoder(write to files or packed)



Better rate control schemes Application to openh323 software(Finished)

Contact: @ for AT)

codec.txt · Last modified: 2014/11/10 07:14 (external edit)