about summary refs log tree commit diff
path: root/converter/ppm/ppmtompeg/docs/EXTENSIONS
blob: c683fbf84220d475867bf1ea660b3367251f6df7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
EXTENSIONS
----------

This is a list of things that we'd like to incorporate into the encoder.
If you succeed in implementing any of them, please let us know!

*  better B-frame search technique
*  use DCT-space when computing error terms
*  vary the q-scale according to the error term
*  other motion vector search techniques
*  modify the program to have a finer-grained parallelism option -- we
   can probably encode slices in parallel (this will only be useful if we
   want to do a few B-frames using exhaustive search)
*  include system layer
*  VBV delay with rate control


CREATING YOUR OWN MOTION SEARCH ROUTINES
----------------------------------------

Adding your own special motion search routine is very easy.  We'll explain
adding a P-frame search routine; adding a B-frame routine is similar.

First, edit the procedures PMotionSearch and SetPSearchAlg (both in the
file psearch.c) to recognize your new search routine.  You probably want
to define a constant
    PSEARCH_<your search name> in headers/search.h

Have PMotionSearch call your search procedure just as it calls the other
standard search procedures.  Make sure your procedure follows the guidelines
in the comments for PMotionSearch.

Note:  The encoder uses MAD as its search criterion.  The reason for this:
	"Among the various criteria that can be used as a measure of the
	 match between the two blocks, the mean absolute difference (MAD)
	 is favored because it requires no multiplication and gives
	 similar performance as the mean squared error (MSE)."
	- Liu and Zaccarin,
	  "New Fast Algorithms for the Estimation of Block Motion Vectors,"
	  IEEE Transactions on Circuits and Systems for Video Technology
	  Volume 3 No. 2 (April 1993)