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 (1835-1867):
-
Really fix gcc win32 misalignment crash. gcc's -fno-zero-initialized-in-bss only works if an explicit initializer (e.g. = {0}) is used.;
-
Fix compile error with high bit depth and disable-asm;
-
Fix satd predictors with high bit depth. Resulted in odd CRF-mode results with --no-mbtree, as well as suboptimal VBV handling.;
-
Fix memory leak in lavf demuxer. Leak only occurred with input files that have more than one video stream;
-
Fix some possible overflows in VFR ratecontrol with extreme timebases;
-
Fix overflow in SSIM calculation in 10-bit;
-
Fix bug with negative lookahead mb costs in high bit depth;
-
Fix broken YV12 handling in the resize filter;
-
Fix checkasm test for quant in high bit depth. Eliminate some spurious failures.;
-
Use cross_prefix for strings in endian test and as test;
-
Fix redundant linebreaks in statsfile with weightp;
-
Fix typo in documentation;
-
Add missing space to parameter SEI;
-
Write --crop-rect and --frame-packing options to x264 SEI;
-
Shut up some incorrect gcc uninitialized variable warnings;
-
MMX/SSE2 high bit depth deinterleave functions. Patch from Google Code-In;
-
MMX/SSE2 high bit depth avg functions. Patch from Google Code-In.;
-
MMX/SSE2 high bit depth interleave functions. Patch from Google Code-In. ;
-
SSSE3 high bit depth sad_aligned functions.;
-
Faster x86 predict_8x8c_dc, MMX/SSE2 high bit depth versions;
-
MMX version of high bit depth plane_copy. And various cosmetics. Patch from Google Code-In ;
-
MMX/SSE2 high bit depth 8x8c intra predict functions. Patch from Google Code-In.;
-
SSE2 high bit depth 8x8 intra predict functions. DDL, DDR, VR, HU, and HD directions, as well as the 8x8 filter. Also make 8-bit MMX VR faster, by backporting the optimizations from the high bit depth version. Patch from Google Code-In.;
-
MMX high bit depth 4x4 intra predict functions. DDR and HD directions, as well as making HU faster. Also enable some SSE2 versions of high bit depth functions that were added but not properly enabled. Patch from Google Code-In.;
-
MMX/SSE2/SSSE3 high bit depth frame_init_lowres functions. Patch from Google Code-In.;
-
SSE2 high bit depth zigzag_interleave_cavlc. Patch from Google Code-In.;
-
MMX high bit depth coeff_last4. Patch from Google Code-In.;
-
SSE2 high bit depth intra_predict_(8x8c|16x16)_p. Patch from Google Code-In.;
-
SSE2 high bit depth SSIM functions. Patch from Google Code-In.;
-
Check an extra offset during weightp analysis. Up to 0.1 - 0.6 dB gain on some fade-ins with --weightp 1, less with --weightp 2.;
-
Cosmetics: fref0/1 -> fref[2] and i_ref0/1 -> i_ref[2]. A much-needed refactoring, plus makes the next patch easier.;
-
Improve reference ordering in interleaved 3D video. Provides a decent compression improvement when encoding interleaved 3D content (--frame-packing 5). Helps more without B-frames and at lower bitrates. Note that x264 will not do this optimization unless --frame-packing 5 is used to tell x264 that the source is interleaved 3D. Tests consistently show that interleaved frame packing is by far the best way to compress 3D content. It gives a ~35-50% compression benefit over separate streams or top/bottom or left/right coding. Also finally add support for L1 reference reordering (in B-frames). Also add support for reordered ref0 in L0 and L1 lists; could be useful in the future for other things.;
-
VFR/framerate-aware ratecontrol, part 2. MB-tree and qcomp complexity estimation now consider the duration of a frame in their calculations. This is very important for visual optimizations, as frames that last longer are inherently more important quality-wise. Improves VFR-aware PSNR as much as 1-2db on extreme test cases, ~0.5db on more ordinary VFR clips (e.g. deduped anime episodes). WARNING: This change redefines x264's internal quality measurement. x264 will now scale its quality based on the framerate of the video due to the aforementioned frame duration logic. That is, --crf X will give lower quality per frame for a 60fps video than for a 30fps one. This will make --crf closer to constant perceptual quality than previously. The "center" for this change is 25fps: that is, videos lower than 25fps will go up in quality at the same CRF and videos above will go down. This choice is completely arbitrary. Note that to take full advantage of this, x264 must encode your video at the correct framerate, with the correct timestamps.
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%-ое снижение битрэйта без потери качества.
-
Фильтр деблокирования: показывает видимые блоки во время кодирования (гораздо лучший метод по сравнению с пост-процессингом). Отличный метод для кодирования с использованием низкого битрэйта.
Unpatched, fprofiled, GCC 4.5.3: (svn rev. 168607, Pre-Release , 2011.01.09); (avs input, lavf input, ffms input, mp4 output.); (ffmpeg svn.26306, ffms2 svn.409, pthreads cvs.2.9.0, gpac svn.2595, all static).:
|