|
|
Missing API:
|
|
|
- wrapping an existing data packet;
|
|
|
- API to apply filmgrain to an image in software;
|
|
|
- export filmgrain (maybe also sequence header and frame header) along with picture;
|
|
|
- get_buffer callback.
|
|
|
|
|
|
Missing bitstream features:
|
|
|
- apply filmgrain in software;
|
|
|
- 12-bits/component decoding (without massively increasing the binary size).
|
|
|
|
|
|
Missing weird header bit support:
|
|
|
- disable_cdf_update;
|
|
|
- OBU without length field;
|
|
|
- superres;
|
|
|
- tile_ext;
|
|
|
- scalable references;
|
|
|
- frame_ref_short signaling.
|
|
|
|
|
|
Missing software features:
|
|
|
- error resilience (drop a frame, don't die);
|
|
|
- any soft of error handling, really.
|
|
|
|
|
|
Performance optimizations:
|
|
|
- run multiple deblock/cdef blocks per call (up to one sb128 wide [or high, for vert deblock] per call);
|
|
|
- simd;
|
|
|
- move emu_edge to dsp for simd;
|
|
|
- move dequant from `decode_coeffs()` to itx;
|
|
|
- make palette typed `pixel` instead of `uint16_t`;
|
|
|
- order_palette() to dsp for simd;
|
|
|
- change coef contexting (hi/lo_ctx) to be diagonal-oriented for dsp/simd;
|
|
|
- change multi-symbol coding `read_symbol()` symbol discovery loop to be simd'ed;
|
|
|
- postfilter threading;
|
|
|
- threading can become a generic worker queue (one tile_sbrow symbol parsing/recon, one sbrow postfilter(s)) and then use a generic single threadpool instead of separate tile/frame[/postfilter?] ones.
|
|
|
|
|
|
Cleanups:
|
|
|
- make `ipred.c` object file smaller by removing per-txsz wrappers;
|
|
|
- LR/MC intermediate 2d buffers in C dsp can be reduced by doing windowed like in SIMD;
|
|
|
- ubsan warnings about -2 underflow (on unsigned, so not undefined) in `env.h`, change to `^2` would fix it;
|
|
|
- run cfl per-plane (and integrate dc_pred?) so it can be run per-plane and do nothing if sign=0;
|
|
|
- cdef: noskip_mask resolution can be 8x8;
|
|
|
- ref_mvs: non-cur frame MVs can be at 8x8 resolution, only direct neighbours need to be 4x4;
|
|
|
- tests for bitstream/simd compliance;
|
|
|
- lfmask and l/a ctx zero can be done in tile instead of frame context for better distribution.
|
|
|
|
|
|
Reimplement:
|
|
|
- `msac.c`;
|
|
|
- `ref_mvs.c`;
|
|
|
- `cdef.c`. |
|
|
\ No newline at end of file |