Expand description
Codec optimization and tuning suite for OxiMedia.
oximedia-optimize provides advanced optimization techniques for video encoders:
- Rate-Distortion Optimization (RDO) - Advanced mode decision based on rate-distortion curves
- Psychovisual Optimization - Perceptual quality tuning using visual masking models
- Motion Search Tuning - Advanced algorithms (
TZSearch, EPZS, UMH) for motion estimation - Intra Prediction Optimization - RDO-based mode selection for intra frames
- Transform Optimization - Adaptive transform selection (DCT/ADST) and quantization
- Loop Filter Tuning - Deblocking and Sample Adaptive Offset (SAO) optimization
- Partition Selection - Complexity-based block size selection
- Reference Frame Management - Optimal reference frame selection and DPB management
- Adaptive Quantization - Variance and psychovisual-based AQ modes
- Entropy Coding Optimization - Context modeling for CABAC/CAVLC
- ROI Encoding - Region-of-interest based quality allocation via
roi_encode - Temporal AQ - Frame-level QP adaptation based on temporal complexity via
temporal_aq - VMAF Prediction - Lightweight VMAF score estimation from pixel features via
vmaf_predict - Content-Adaptive GOP - GOP structure selection based on content type via
gop_optimizer - Scene-Aware QP - Lookahead-based scene-cut-aware QP adjustment via
scene_encode
§Architecture
The optimization suite is organized into several modules:
rdo- Rate-distortion optimization engine and cost functionspsycho- Psychovisual optimization and masking modelsmotion- Advanced motion search algorithmsintra- Intra mode selection and directional predictiontransform- Transform type selection and quantizationfilter- Loop filter strength tuningpartition- Partition decision treesreference- Reference frame managementaq- Adaptive quantization strategiesentropy- Entropy coding context optimizationroi_encode- Region of interest encoding with per-CTU QP mapstemporal_aq- Temporal adaptive quantization with AQ bridgevmaf_predict- VMAF score prediction from spatial/temporal featuresgop_optimizer- Content-adaptive GOP structure selectionscene_encode- Lookahead-based scene-aware QP adjustment
§Optimization Levels
Different preset levels balance encoding speed vs. quality:
- Fast: Simple SAD-based decisions, limited search patterns
- Medium: SATD-based with moderate RDO
- Slow: Full RDO with extended search patterns
- Placebo: Exhaustive search for maximum quality
§Example
ⓘ
use oximedia_optimize::{OptimizerConfig, OptimizationLevel, Optimizer};
let config = OptimizerConfig {
level: OptimizationLevel::Slow,
enable_psychovisual: true,
enable_aq: true,
lookahead_frames: 40,
..Default::default()
};
let optimizer = Optimizer::new(config)?;
let decision = optimizer.optimize_block(&frame_data, block_info)?;Re-exports§
pub use aq::AqEngine;pub use aq::AqMode;pub use aq::AqResult;pub use benchmark::BenchmarkConfig;pub use benchmark::BenchmarkResult;pub use benchmark::BenchmarkRunner;pub use benchmark::Profiler;pub use decision::DecisionContext;pub use decision::DecisionStrategy;pub use decision::ModeDecision;pub use decision::ReferenceDecision;pub use decision::SplitDecision;pub use entropy::ContextModel;pub use entropy::ContextOptimizer;pub use entropy::EntropyStats;pub use filter::DeblockOptimizer;pub use filter::FilterDecision;pub use filter::SaoOptimizer;pub use gop_optimizer::ContentAdaptiveGop;pub use gop_optimizer::ContentGopDecision;pub use gop_optimizer::GopOptimizer;pub use gop_optimizer::GopPattern;pub use gop_optimizer::GopPlan;pub use intra::AngleOptimizer;pub use intra::IntraModeDecision;pub use intra::ModeOptimizer;pub use lookahead::GopStructure;pub use lookahead::LookaheadAnalyzer;pub use lookahead::LookaheadFrame;pub use motion::BidirectionalOptimizer;pub use motion::MotionOptimizer;pub use motion::MotionSearchResult;pub use motion::MotionVector;pub use motion::MvPredictor;pub use motion::SubpelOptimizer;pub use partition::ComplexityAnalyzer;pub use partition::PartitionDecision;pub use partition::SplitOptimizer;pub use presets::OptimizationPresets;pub use presets::TunePresets;pub use psycho::ContrastSensitivity;pub use psycho::PsychoAnalyzer;pub use psycho::VisualMasking;pub use rdo::CostEstimate;pub use rdo::LambdaCalculator;pub use rdo::RdoEngine;pub use rdo::RdoResult;pub use rdo::RdoqOptimizer;pub use reference::DpbOptimizer;pub use reference::ReferenceSelection;pub use roi_encode::QpDeltaMap;pub use roi_encode::RoiEncoder;pub use roi_encode::RoiEncoderConfig;pub use roi_encode::RoiOptimizeResult;pub use roi_encode::RoiRegion;pub use scene_encode::LookaheadSceneQp;pub use scene_encode::SceneEncodeParams;pub use scene_encode::SceneEncoder;pub use scene_encode::SceneMetrics;pub use strategies::BitrateAllocator;pub use strategies::ContentAdaptiveOptimizer;pub use strategies::OptimizationStrategy;pub use strategies::StrategySelector;pub use strategies::TemporalOptimizer;pub use temporal_aq::CombinedAqResult;pub use temporal_aq::TemporalActivity;pub use temporal_aq::TemporalAqBridge;pub use temporal_aq::TemporalAqEngine;pub use transform::QuantizationOptimizer;pub use transform::TransformSelection;pub use utils::BlockMetrics;pub use utils::FrameMetrics;pub use utils::OptimizationStats;pub use vmaf_predict::BatchVmafPredictor;pub use vmaf_predict::VmafFeatures;pub use vmaf_predict::VmafPrediction;pub use vmaf_predict::VmafPredictor;pub use vmaf_predict::VmafPredictorConfig;
Modules§
- adaptive_
ladder - Adaptive bitrate ladder optimization for streaming workflows.
- aq
- Adaptive quantization module.
- benchmark
- Benchmark and profiling utilities for optimization.
- bitrate_
controller - Advanced bitrate control for video encoding.
- bitrate_
optimizer - Bitrate optimization for video encoding in
OxiMedia. - cache_
opt - Cache optimization strategies for encoder working sets.
- cache_
optimizer - CDN and edge-cache optimization for media asset delivery.
- cache_
strategy - Caching optimization strategies for
OxiMedia. - complexity_
analysis - Content complexity analysis for encoder decisions.
- crf_
sweep - CRF parameter sweep for quality vs. size tradeoff optimization.
- decision
- Mode decision strategies and helpers.
- encode_
preset - Encode preset management for
oximedia-optimize. - encode_
stats - Encoding statistics collection and analysis for multi-pass optimization.
- entropy
- Entropy coding optimization module.
- examples
- Usage examples and common patterns.
- filter
- Loop filter optimization module.
- frame_
budget - Frame-level bit budget allocation and tracking.
- gop_
optimizer - GOP structure optimization and analysis.
- intra
- Intra prediction optimization module.
- lookahead
- Lookahead analysis for temporal optimization.
- media_
optimize - High-level media optimization: profiles, complexity analysis, and adaptive bitrate allocation.
- motion
- Motion estimation optimization module.
- parallel_
strategy - Parallel processing optimization strategies for
OxiMedia. - partition
- Partition optimization module.
- perceptual_
optimization - Perceptual encoding optimization.
- prefetch
- Content prefetching optimization for media delivery pipelines.
- presets
- Optimization presets for different use cases.
- psycho
- Psychovisual optimization module.
- quality_
ladder - Quality ladder generation for adaptive bitrate streaming.
- quality_
metric - Quality metric tracking for
oximedia-optimize. - quantizer_
curve - QP-to-quality curve modeling and analysis.
- rdo
- Rate-distortion optimization module.
- reference
- Reference frame management module.
- roi_
encode - Region of Interest (ROI) encoding optimization.
- scene_
encode - Scene-aware encoding optimization.
- simd_
metrics - SIMD-accelerated block difference metrics (SAD, SATD). SIMD-accelerated block difference metrics for motion estimation.
- strategies
- Advanced optimization strategies.
- temporal_
aq - Temporal adaptive quantization for video encoding.
- transcode_
optimizer - Transcode optimization helpers for
oximedia-optimize. - transform
- Transform optimization module.
- two_
pass - Two-pass encoding optimization.
- utils
- Utility functions and helpers for optimization.
- vmaf_
predict - VMAF score prediction and estimation for encoding optimization.
Structs§
- Optimizer
- Main optimization engine.
- Optimizer
Config - Main optimizer configuration.
Enums§
- Content
Type - Content type hints for adaptive optimization.
- Optimization
Level - Optimization level presets.