[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