imcold
24th July 2010, 20:49
Fevh264 is a very simple baseline h.264 encoder. I'm releasing it in hope that somebody finds it useful if he decides to learn about h.264 encoding process and as a base for experiments; it's not a serious competition to "real" h.264 encoders. It's written in Pascal (Freepascal) with some hand-written assembly and shouldn't be hard to understand.
It uses the command line interface (see fevh264_cli -h for switches). Input is restricted to raw YUV 4:2:0 (width and height requied), yuv4mpeg or Avisynth scripts; output is raw .264 (AnnexB) file.
Update:
-added simple ratecontrol for 2 pass avg. bitrate encoding
-added multiref support
-GUI frontend with visualization support, on-the-fly QP change support. Screenshot (windows, linux):
http://i266.photobucket.com/albums/ii260/imcoldz/prog/983027c1.png http://i266.photobucket.com/albums/ii260/imcoldz/prog/th_236842f5.png (http://s266.photobucket.com/albums/ii260/imcoldz/prog/236842f5.png)
Limitations:
-won't work on cpu without sse2 support, also the asm is 32bit only
-can't be build as a library currently
-all files set to 25 fps
Missing useful baseline stuff, to be added later:
-inter mb partitions
-deblock
Sample (parkjoy, using older version of encoder): http://www.mediafire.com/?cyk53kqx88tcc10
Source, binaries: https://sourceforge.net/projects/fevh264/
Compilation:
Win32 and Linux 32bit are supported. You'll need Yasm and Freepascal 2.x + Lazarus IDE.
1. go to frontend subdirectory, run build_asm.bat/.sh to compile asm files
2. open fevh264_cli.lpi / fevh264_gui.lpi through Lazarus IDE and build
If you find any bugs (crashes, unplayable output files), let me know.
It uses the command line interface (see fevh264_cli -h for switches). Input is restricted to raw YUV 4:2:0 (width and height requied), yuv4mpeg or Avisynth scripts; output is raw .264 (AnnexB) file.
Update:
-added simple ratecontrol for 2 pass avg. bitrate encoding
-added multiref support
-GUI frontend with visualization support, on-the-fly QP change support. Screenshot (windows, linux):
http://i266.photobucket.com/albums/ii260/imcoldz/prog/983027c1.png http://i266.photobucket.com/albums/ii260/imcoldz/prog/th_236842f5.png (http://s266.photobucket.com/albums/ii260/imcoldz/prog/236842f5.png)
Limitations:
-won't work on cpu without sse2 support, also the asm is 32bit only
-can't be build as a library currently
-all files set to 25 fps
Missing useful baseline stuff, to be added later:
-inter mb partitions
-deblock
Sample (parkjoy, using older version of encoder): http://www.mediafire.com/?cyk53kqx88tcc10
Source, binaries: https://sourceforge.net/projects/fevh264/
Compilation:
Win32 and Linux 32bit are supported. You'll need Yasm and Freepascal 2.x + Lazarus IDE.
1. go to frontend subdirectory, run build_asm.bat/.sh to compile asm files
2. open fevh264_cli.lpi / fevh264_gui.lpi through Lazarus IDE and build
If you find any bugs (crashes, unplayable output files), let me know.