Studies
Being a former student of computer science, I generated some small amount of paperwork that may be interesting for some people. That’s why I’m going to publish it here.
Diploma Thesis: »Video Processing for Peer-To-Peer Video Streaming«
The thesis effectively describes a real-time video encoder application that manages to encode two MPEG-4 streams of different resolutions simultaneously from one live DV video source on moderately fast hardware. The core is based on a modified XviD encoder that supports motion vector hinting. This reduces the motion estimation effort for the higher resolution to a very low amount without losing too much coding efficiency.
- DA_paper.pdf (1.5 MB) — the thesis paper (German language!)
- lvstream-distrib-1.0.tar.bz2 (3.4 MB) — the actual implementation
Seminar Paper: »Implementation of a basic H.264/AVC decoder«
This is an implementation of a minimalistic H.264 decoder. It is only capable of decoding the absolute basic feature set, even omitting the in-loop deblocking filter (in other words, it’s hard to find streams that work with the decoder :).
- videocomp.pdf (1.3MB) — a very interesting and detailed presentation (in German language) about all video compression standards from MPEG-1 up to H.264
- SA_paper.pdf (154k) — the seminar paper
- h264-src.tar.gz (711k) — the actual implementation
License
I’ve been somewhat sloppy when it comes to providing licensing information in the files that are available on this page. So I’m going to state the conditions here:
All files, unless stated otherwise, may be used for personal and educational purposes only. Redistribution in unmodified or modified form as well as any kind of commercial use is not permitted unless you ask for it. (This is not a real restriction, however » it’s very unlikely that I reject such a request. I just want to know who uses the code.)

Hi Martin
When I compile lvstream I get this – any ideas about what I am missing?
tps@asus ~/data/data/lvstream-distrib-1.0 $ make bootstrap cd ffmpeg && ./configure --disable-ffserver --disable-ffplay [...] make -C ffmpeg make[1]: Entering directory `/home/tps/data/data/lvstream-distrib-1.0/ffmpeg' make -C libavcodec all make[2]: Entering directory `/home/tps/data/data/lvstream-distrib-1.0/ffmpeg/libavcodec' gcc -O3 -g -Wall -Wno-switch -DHAVE_AV_CONFIG_H -I.. -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE -c -o common.o common.c In file included from avcodec.h:14, from common.c:28: common.h:67: error: array type has incomplete element type common.h:71: error: array type has incomplete element type make[2]: *** [common.o] Error 1 make[2]: Leaving directory `/home/tps/data/data/lvstream-distrib-1.0/ffmpeg/libavcodec' make[1]: *** [lib] Error 2 make[1]: Leaving directory `/home/tps/data/data/lvstream-distrib-1.0/ffmpeg' make: *** [bootstrap] Error 2Thanks
Thomas S
I guess that there’s an incompatibility between the (old) ffmpeg version I used back then and your (probably shiny new) compiler. Anyway, I didn’t change anything in ffmpeg, so you can also use a fresh and current version instead the one that’s in the archive.
hi Martin
I’m learning how to implement h.264.
I’m feeling thanks for your simple source.
then, I think it is a little bug showing below at intra_pred.c,
( @intra 4×4 vertical right prediction )
69c69
else if(zVR
sorry about my mistake…my code was truncated.
69c69
< else if(zVR<0) i=left(0)+2*left(-1)+top(-1)+2;
—
> else if(zVR<0) i=left(0)+2*left(-1)+top(0)+2;
Thanks.
Kenta Wataru
Hi Martin,
I’m trying to compile your h.264 decoder, using “make”, but it appears that main.h is missing? And I guess that the “frame” type is defined in that? Please help.
Thanks,
Daire
Daire: main.h is a symlink to h264.h, so it’s likely a problem with unpacking the archive.