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)
|