Wiki

Clone wiki

x265 / TODO

TODO

Be sure to read the wiki page about contributing code back to x265 before starting any work.

Quality/Efficiency TODOs

  • lowres mv in ME - use deblockCU for example cu addr code
  • RD refine for motion vectors - if bestMode is inter (not merge) with residual, do fpel and subpel refine steps measuring (psy) RD cost for each step. RD 5 and 6 only
  • BIDIR refine, subpel (and perhaps fpel) refine steps on L0 and L1 MVs, use subme level to enable subpel, then fpel refine
  • QPRD
  • optimal TMVP coloc selection by using lookahead data
  • emergency denoise when qp > QP_MAX_SPEC
  • --tune psnr and --tune ssim should leave cu-tree effective, re-evaluate strong-intra-filter default

Performance TODOs

  • estimate whether SAO should be used for a frame prior to coding it (using lookahead or slice-type or other data) so we can avoid second encode pass for frames that likely do not need SAO coding.
  • replace floats/doubles with int64 in SAO
  • early out in ME if any cand cost is 0? move candidate mvp selection into motionEstimation()
  • more early-outs in analysis to avoid RDO or splits or modes
  • assembly code to replace remaining intrinsic primitives (mostly large transforms)
  • inline assembly for gcc, and if possible MSVC

Feature TODOs

  • intra-refresh
  • allow user to inject additional SEI at a particular picture
  • zero-latency: dependent slice segments, etc
  • Main12, etc
  • Monochrome
  • ESA motion estimation (x265 has unoptimized full search)

Known Bugs

  • PSNR & SSIM bounds fully respecting conformance window

Steve's TODO list

This is just a paste of my current TODO list

  • multi-pass RC docs
  • crf-min/crf-max docs
  • analyze transform sizes with psy-rd use
  • debug lossless encode paths for inefficiencies
  • sanity_check() error handler (clean aborts)
  • remove _t from internal types
  • add IPB avgQPs to x265_stats
  • fix names and behaviors of stats
  • expose param string table
  • remove all constructors/destructors and use of 'new/delete' operators for exception-free malloc failures in embedded environments. virtual functions and vtables need to be removed to allow memset initialization of all structures.

Updated