Skip to main content

Module hevc

Module hevc 

Source
Expand description

Software HEVC: x265 with the gpl feature, kvazaar without it. Software HEVC: x265 with the gpl feature, kvazaar without it, each at the fastest setting its library offers in real time (ultrafast, wavefront threads, no lookahead, no reordering) with the parameter sets repeated on every key frame. x265 carries 4:4:4 at full range like x264; kvazaar encodes 4:2:0. Neither library lets a session steer what a frame predicts from, so the session names no reference and refuses an invalidation, and the caller codes a key frame instead.

With the patches under patches/x265, x265 encodes a picture laid out as its own frame where it lies (x265_param_input_layout, copy-pic=0), two pictures converted into in turn since it reads one through the encode it is passed to; the blocks the ledger marks still and clean reach it as its constant-block map (constant_blocks, x265_picture.constantBlocks), coded as skips without analysis and keeping their lowres intra estimates; and its per-block quantizer offsets apply without adaptive quantization’s variance pass (qp-offsets). A still 1080p screen took 2.8 ms a frame on eight threads where it took 5.7, and 2560x1600 4.6 where it took 10.8. An x265 a distribution packages copies each picture from plain planes, analyses every block, and weighs the offsets against adaptive quantization. kvazaar converts into the picture it allocates and encodes from.

The constant quality runs uncapped where a caller asks for a capped one (RateSettings::capped). x265’s capped CRF (a VBV at the peak) moves its peak live only within the level and tier it derives from that peak: x265_encoder_reconfig keeps the old VBV, reporting success, where a move changes either (4.2: “Cannot reconfigure rate-control”), so a peak cut from the High tier’s range into the Main one would cost a key frame, as a capped session at a pinned level’s Main tier would cost the picture uncapped content takes past that tier’s rate. kvazaar’s rate control targets a rate and has no capped quality.

Modules§

x265 🔒
x265 through its versioned API table, configured by name so the session reads no field of a parameter structure that moves between releases.

Structs§

Coded 🔒
What a backend answered for one submitted picture, with the quantizer it was coded at.
HevcEncoder
One software HEVC session for one capture.

Constants§

HEVC_REACH_FINER 🔒
HevcEncoder::reach_finer: the predicted frames of either library at a quantizer leave the motion’s coarse blocks as they are. x265’s (4.2) cleanup of 1080p text ended at 45.0-46.3 dB at the paint-over quantizer and at 49.7-52.4 six steps finer at 1 and 2 Mbit/s, where its key frame at the paint-over quantizer decodes at 50.0, on a fifth to three fifths more bytes over a few seconds more (twelve came to 50.4-55.9 over up to 29 s); kvazaar’s at 8 fps 0.5 and 1 Mbit/s at 44.4-45.0 against 47.4-47.9, its rate control settling about the paint-over quantizer at 2 Mbit/s whatever the cleanup asks (44.8-46.8 dB either way).

Functions§

qp_bounds 🔒
The CBR quantizer bounds in HEVC’s domain, zero where the settings name none.
ten_bit
Whether the build’s software HEVC encoder codes 10 bits: x265 where it was built with its 10-bit encoder linked in.