x264 (x86/x64) - это свободная библиотека программных компонентов для кодирования видеопотоков H.264/MPEG-4 AVC.
x264 (x86/x64) is a free library for encoding H.264/MPEG-4 AVC video streams.
Изменения/Changes (1443-1462):
- Fix I and B-frame QPs with threads. Rounding errors resulted in slightly wrong QPs with threads enabled;
- Fix integer overflow in chroma SSD check. Could cause bad skips at very high quantizers on extreme inputs;
- Fix overread of scratch buffer. Could cause crashes on non-mod16 frames;
- Fix stupid regression in interlaced in r1430. With ref > 8 or b-pyramid, an array over-read could cause slightly incorrect B-frames.;
- Add GPAC version check;
- SimpleBlock requires Matroska Doctype v2;
- Much faster and simpler direct spatial calculation;
- Keep track of macroblock partitions. Allows vastly simpler motion compensation and direct MV calculation;
- Add temporal predictor support to interlaced encoding. 0.5-1% better compression in interlaced mode;
- Much faster and more efficient MVD handling. Store MV deltas as clipped absolute values. This means CABAC no longer has to calculate absolute values in MV context selection. This also lets us cut the memory spent on MVDs by a factor of 2, speeding up cache_mvd and reducing memory usage by 32*threads*(num macroblocks) bytes. On a Core i7 encoding 1080p, this is about 3 megabytes saved;
- Faster, more accurate psy-RD caching. Keep more variants of cached Hadamard scores and only calculate them when necessary. Results in more calculation, but simpler lookups. Slightly more accurate due to internal rounding in SATD and SA8D functions;
- Move presets, tunings, and profiles into libx264. Now any application calling libx264 can use them. Full documentation and guidelines for usage are included in x264.h;
- Make b-pyramid normal the default. Now that b-pyramid works with MB-tree and is spec compliant, there's no real reason not to make it default. Improves compression 0-5% depending on the video. Also allow 0/1/2 to be used as aliases for none/strict/normal (for conciseness);
- Abide by the MinCR level limit. Some Blu-ray analyzers were complaining about this;
- New algorithm for AQ mode 2. Combines the auto-ness of AQ2 with a new var^0.25 instead of log(var) formula. Works better with MB-tree than the old AQ mode 2 and should give higher SSIM;
- Use short startcodes whenever possible. Saves one byte per frame for every slice beyond the first. Only applies to Annex-B output mode;
- Faster probe_skip, 2x2 DC transform handling. Move the 2x2 DC DCT into the dct_dc asm function to avoid some store-to-load forwarding penalties and extra register loads. Use dct_dc as part of the early termination in probe_skip. x86 asm partially by Holger Lubitz. ARM NEON asm by David Conrad;
- Actually error out if preset/tune/profile is invalid. Got lost somewhere in the move to libx264-based presets;
- Fix various silly errors in the previous patches;
- Fix fastfirstpass. Apparently the libx264 preset changes made "fastfirstpass" into "fastsecondpass" inadvertantly.
Encoder features :
- CAVLC/CABAC
- Multi-references
- Intra: all macroblock types (16x16, 8x8, and 4x4 with all predictions)
- Inter P: all partitions (from 16x16 down to 4x4)
- Inter B: partitions from 16x16 down to 8x8 (including skip/direct)
- Ratecontrol: constant quantizer, single or multipass ABR, optional VBV
- Scene cut detection
- Adaptive B-frame placement
- B-frames as references / arbitrary frame order
- 8x8 and 4x4 adaptive spatial transform
- Lossless mode
- Custom quantization matrices
- Parallel encoding of multiple slices
Advanced settings :
- Enabling Cabac: approximately 10% bitrate reduction without loss in quality, but is slow.
- Enabling De-blocking Filter: smooths out visible blocks during an encode (rather than by using post processing to smooth out blocks while decoding). Is a good idea to enable for low bitrate encodes.
Возможности кодека x264:
- Контекстнозависимое Адаптивное Бинарное Арифметическое кодирование (CABAC) и Контекстнозависимое Адаптивное Кодирование с Переменной Длиной Кодового Слова (CAVLC)
- Поддержка нескольких ссылочных кадров
- Все intra типы макроблоков (16x16, 8x8 и 4x4 — 8x8 это часть AVC HP)
- Все inter типы макроблоков P фрейма
- B-Inter типы макроблоков от 16x16 до 8x8
- Оптимизация отношения вносимых искажений к скорости потока
- Несколько режимов работы управления скоростью потока: постоянный квантователь, постоянное качество, одно- или многопроходный ABR с режимом VBV
- Обнаружение смены сцены
- Адаптивная расстановка B-кадров, с возможностью использования B кадров как ссылочных кадров
- 8x8 и 4x4 адаптивное пространственное преобразование (High Profile)
- Режим сжатия без потерь (отклоненный High Profile 4:4:4)
- Произвольные матрицы квантования (High Profile)
- Параллельное кодирование на нескольких CPU
- Поддержка компрессии кадров с чересстрочной разверткой (неадаптивный MBAFF — все макроблоки кодируются в режиме чересстрочных)
Доступные настройки кодека для профессионалов:
- Кодирование Cabac: приблизительно 10%-ое снижение битрэйта без потери качества.
- Фильтр деблокирования: показывает видимые блоки во время кодирования (гораздо лучший метод по сравнению с пост-процессингом). Отличный метод для кодирования с использованием низкого битрэйта.
MinGW GCC 4.5.0 x86_32, fprofiled / MinGW GCC 4.5.0 x86_64, fprofiled)
Скачать / Download:
Patched (x264_NAL-HRD.1.31.r1460.diff), fprofiled, GCC 4.5.0: (svn rev. 157059, experimental, 2010.02.25);(avs input, lavf input, ffms input, mp4 output.); (ffmpeg svn.22047, ffms2 svn.292, pthreads cvs.2.9.0, gpac cvs.20100225 all static).: |
x86: |
x264 Video Codec rev. 1462M x86 (2.14 Мбайт 2010-02-25 08:10:31) (generic)
|
x264 Video Codec rev. 1462M x86 -march=core2 (2.14 Мбайт 2010-02-25 08:11:51) (-march=core2)
|
x264 Video Codec rev. 1462M x86 -march=amdfam10 (2.15 Мбайт 2010-02-25 08:11:11) (-march=amdfam10 (Phenom/Phenom II))
|
x64: |
x264 Video Codec rev. 1462M x64 (2.21 Мбайт 2010-02-25 08:12:39) (generic)
|
x264 Video Codec rev. 1462M x64 -march=amdfam10 (2.2 Мбайт 2010-02-25 08:13:21) (-march=amdfam10 (Phenom/Phenom II)) |
|
Unpatched, fprofiled, GCC 4.5.0: (svn rev. 157059, experimental, 2010.02.25); (avs input, lavf input, ffms input, mp4 output.); (ffmpeg svn.22047, ffms2 svn.292, pthreads cvs.2.9.0, gpac cvs.20100225 all static).: |
x86: |
x264 Video Codec rev. 1462 x86 (2.14 Мбайт 2010-02-25 08:14:18) (generic) |
x264 Video Codec rev. 1462 x86 -march=core2 (2.13 Мбайт 2010-02-25 08:15:46) (-march=core2) |
x264 Video Codec rev. 1462 x86 -march=amdfam10 (2.14 Мбайт 2010-02-25 08:15:03) (-march=amdfam10 (Phenom/Phenom II)) |
x64: |
x264 Video Codec rev. 1462 x64 (2.2 Мбайт 2010-02-25 08:16:30) (generic)
|
x264 Video Codec rev. 1462 x64 -march=amdfam10 (2.2 Мбайт 2010-02-25 08:17:10) (-march=amdfam10 (Phenom/Phenom II)) |
|