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 (2.2MB) — a very interesting and detailed presentation (in German language) about all video compression standards from MPEG-1 up to H.265 and beyond. It’s definitely one of the best resources about that topic and it’s kept up-to-date in irregular intervals. (Last update: September 2013)
- 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?
Thanks
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.
Hi, trying to access these download links on this page on my browser (Firefox Quantum) are intercepted and I am being displayed big red warning pages from Google Safe Browsing that those are likely to contain Malware. Some other links to PDFs etc. on this site don’t show this behaviour. You should maybe check this with https://transparencyreport.google.com/safe-browsing/search yourself and make sure if this is a false positive or if somebody really managed to upload Malware to your site.
KH: Yes, that’s a false positive, a collateral damage from the never-ending crusade of the so-called »anti-virus« industry against the demoscene. Unfortunately, there’s no way to report false positives to Google – all you get it help on how to remove an infection, and no information about what to do if there never was an infection in the first place.