... | ... | @@ -8,24 +8,24 @@ Missing bitstream features: |
|
|
- apply filmgrain in software;
|
|
|
- 12-bits/component decoding (without massively increasing the binary size).
|
|
|
|
|
|
Missing weird header bit support:
|
|
|
Missing support for weird header bit features:
|
|
|
- disable_cdf_update;
|
|
|
- OBU without length field;
|
|
|
- superres;
|
|
|
- super_res;
|
|
|
- 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.
|
|
|
- error resilience (drop a frame but don't die);
|
|
|
- any sort of error handling.
|
|
|
|
|
|
Performance optimizations:
|
|
|
- run multiple deblock/cdef blocks per call (up to one sb128 wide [or high, for vert deblock] per call);
|
|
|
- simd;
|
|
|
- simd for any function already in a ${anything}DSPContext, for any platform;
|
|
|
- move emu_edge to dsp for simd;
|
|
|
- move dequant from `decode_coeffs()` to itx;
|
|
|
- make palette typed `pixel` instead of `uint16_t`;
|
|
|
- make palette typed `pixel` instead of `uint16_t` so we don't need one extra `packuswb` in each 8-bit simd function call;
|
|
|
- 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;
|
... | ... | @@ -36,13 +36,16 @@ 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;
|
|
|
- ubsan warnings about shift by 32 in `lf_mask.c`, this is done upon loop entry, but the the condition means it will never enter the loop, so if you change the loop from `for(assign; cond; ..){..}` to `if (cond) { assign; do{..} while(..); }`, the warning goes away;
|
|
|
- run cfl per-plane (and integrate dc_pred?) so it can be run per-plane and do nothing (in ac-terms) 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.
|
|
|
- show_existing_frame will be placed in the frame output queue as something keeping a frame thread busy, meaning for such cases, the frame thread will momentarily stall. This is partially required to prevent overflows of the output queue, or growing it to possibly infinite size on garbage input. But for the regular use case, we can make the output buffer queue twice as big, so that each invisible frame can have one matching show_existing_frame, allowing all frame-threads to be active for the worst-"real"-case while still never overflowing on pathological conditions;
|
|
|
- the output queue handling is duplicated in `decode.c`, `lib.c` and `obu.c`, so merge this in one common place.
|
|
|
|
|
|
Reimplement:
|
|
|
- `msac.c`;
|
|
|
- `msac.c` [Rostislav is working on this];
|
|
|
- `ref_mvs.c`;
|
|
|
- `cdef.c`. |
|
|
\ No newline at end of file |
|
|
- `cdef.c` [Luc is working no this]. |
|
|
\ No newline at end of file |