[XviD-devel] minor changes / todo list
suxen_drol
suxen_drol at hotmail.com
Fri Jun 13 00:51:44 CEST 2003
hi,
there are some minor changes i'd like to implement in dev-api-4, however
this may step on the work (or opinions) of others.
- in enc_create() set all ptrs initial to NULL, so we can go:
if (malloc()==NULL) return enc_destroy()
instead of having all those goto's.
- remove XVID_TYPE_S from api, such that encoding applications only deal with
I,P and B frames types.
this means the plugins can assume that data->type is in the range (-infinity,3]
- consider reworking the adapt quant plugin semantics, to specify an arbitrary
"quantization strength" unit for each macroblock, and make the encoder
responsible for converting/normalizing these units into dquants.
the adapt quant plugin currently returns the array of dquants, which i think is bad,
if a plugin later on the the plugins array decides to change the frame quantizer.
- (ed as previously suggested) consider moving "min/max_quant" and
"zones array" to individual plugins, rather than mainting these at the
encoder level (the encoder need not be aware of quantizer restrictions
or zones). though, this will mean the plugins have to allocate their own
zone arrays.
and to keep anyone/everyone updated on xvid progress, ive included my
rough todo list below. ed suggested some time ago a NO_DYNAMIC_FRAMETYPE_DECISION
flag, but resolved the issue by fixing a 2pass2 bug (caused by me...), thanks!
cheers,
-- pete
BUGS
* greyscale mode leaving green smudges?
* xvid decoder upside down in nero vcd encoder?
* RGB->YV12 chroma sampling bug; do not average chroma
* yuv->rgb mmx, yellow line
* custom MPEG quant matrix uses static varibles
* perform extensible bounds checking; valgrind
XVIDCORE
* by default, do not insert multiple VOS,VO,VOL.
* move min_key_frame to xvidcore (or scrap completely?)
* import fast qpel/b-frames from head branch?
* expand user_start_code version info?
* simple at l0 compatiblity: force f_code=1, intra_dc_vlc_threshold=0, toggle acpred.
* move the profiles/level array into xvidcore?
* intra_dc_vlc_threshold
* vbv plugin
* dynamic reduced resolution vops
* bframes cutsom_quant
* bframes lumimasking
* bframes>=2 SMP support
* re-implement internal timer using function ptr wrappers
* encoder struct marshalling, such that we can pause/resume encoding
* XVID_ENC_REENCODE; re-encoded current frame with different quantizer
XVIDCORE/PRE-FILTERS
* XVID_TVOUT; lum_offset = -2
* chroma interpolation (blur chroma plane)
* cartoon mode?
XVIDCORE/DCT
* inter 132 colocated mb refresh
* zero idct coeff clause
* support multiple idcts?
XVIDCORE/IMAGE
* colorspace mmx patches/optimizations; yuv to rgb 15/16 mmx code
* increase precision of yuv to rgb transformation?
* blocked-based edge mirrorring?
XVIDCORE/ME
* full gmc
* optimize getpmv
* investigate "good" field-based motion estimation methods
* dynamic bframes fcode/bcode decision
XVIDCORE/2PASS
* refine 2pass statistics format; make it extendible
* fix /*XXX*/ sections in plugin_2pass2.c
* 2pass qpel decision
* resolve bframes scaling issues.
XVIDCORE/DECODER
* cleanup bframe mb_decoding functions
* proper slice decoding support
XVIDCORE/POSTFILTERING
* post processing; or atleast decoder quant_table[] for mplayer postproc
* video equalizer.
* mmx 16x16,32x32 transfer functions
FRONTENDS/VFW
* cleanup zone stuff; the ui needs fool-proofing
FRONTENDS/DSHOW
* IDirectDrawMedaStream::GetFormat returns E_NO_STREAM
* check xvid dshow again avisynth 2.5x
* directshow encoding filter?
FRONTENDS/QT
* import quicktime frontend into cvs & clean up
* add proper encoding support/gui
More information about the XviD-devel
mailing list