annotate elbg.h @ 12530:63edd10ad4bc libavcodec tip

Try to fix crashes introduced by r25218 r25218 made assumptions about the existence of past reference frames that weren't necessarily true.
author darkshikari
date Tue, 28 Sep 2010 09:06:22 +0000
parents cb62e27e2c07
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5095
ed41cfae128d Codebook generator using the ELBG algorithm
benoit
parents:
diff changeset
1 /*
5219
661eff5542cb Add my last name to copyright headers
vitor
parents: 5169
diff changeset
2 * Copyright (C) 2007 Vitor Sessak <vitor1001@gmail.com>
5095
ed41cfae128d Codebook generator using the ELBG algorithm
benoit
parents:
diff changeset
3 *
ed41cfae128d Codebook generator using the ELBG algorithm
benoit
parents:
diff changeset
4 * This file is part of FFmpeg.
ed41cfae128d Codebook generator using the ELBG algorithm
benoit
parents:
diff changeset
5 *
ed41cfae128d Codebook generator using the ELBG algorithm
benoit
parents:
diff changeset
6 * FFmpeg is free software; you can redistribute it and/or
ed41cfae128d Codebook generator using the ELBG algorithm
benoit
parents:
diff changeset
7 * modify it under the terms of the GNU Lesser General Public
ed41cfae128d Codebook generator using the ELBG algorithm
benoit
parents:
diff changeset
8 * License as published by the Free Software Foundation; either
ed41cfae128d Codebook generator using the ELBG algorithm
benoit
parents:
diff changeset
9 * version 2.1 of the License, or (at your option) any later version.
ed41cfae128d Codebook generator using the ELBG algorithm
benoit
parents:
diff changeset
10 *
ed41cfae128d Codebook generator using the ELBG algorithm
benoit
parents:
diff changeset
11 * FFmpeg is distributed in the hope that it will be useful,
ed41cfae128d Codebook generator using the ELBG algorithm
benoit
parents:
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
ed41cfae128d Codebook generator using the ELBG algorithm
benoit
parents:
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
ed41cfae128d Codebook generator using the ELBG algorithm
benoit
parents:
diff changeset
14 * Lesser General Public License for more details.
ed41cfae128d Codebook generator using the ELBG algorithm
benoit
parents:
diff changeset
15 *
ed41cfae128d Codebook generator using the ELBG algorithm
benoit
parents:
diff changeset
16 * You should have received a copy of the GNU Lesser General Public
ed41cfae128d Codebook generator using the ELBG algorithm
benoit
parents:
diff changeset
17 * License along with FFmpeg; if not, write to the Free Software
ed41cfae128d Codebook generator using the ELBG algorithm
benoit
parents:
diff changeset
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
ed41cfae128d Codebook generator using the ELBG algorithm
benoit
parents:
diff changeset
19 */
ed41cfae128d Codebook generator using the ELBG algorithm
benoit
parents:
diff changeset
20
7760
c4a4495715dd Globally rename the header inclusion guard names.
stefano
parents: 6763
diff changeset
21 #ifndef AVCODEC_ELBG_H
c4a4495715dd Globally rename the header inclusion guard names.
stefano
parents: 6763
diff changeset
22 #define AVCODEC_ELBG_H
5163
9ecbfc0c82bf add multiple inclusion guards to headers
mru
parents: 5095
diff changeset
23
9195
23138c3326c6 Use correct header for struct AVLFG.
diego
parents: 9154
diff changeset
24 #include "libavutil/lfg.h"
5095
ed41cfae128d Codebook generator using the ELBG algorithm
benoit
parents:
diff changeset
25
ed41cfae128d Codebook generator using the ELBG algorithm
benoit
parents:
diff changeset
26 /**
ed41cfae128d Codebook generator using the ELBG algorithm
benoit
parents:
diff changeset
27 * Implementation of the Enhanced LBG Algorithm
ed41cfae128d Codebook generator using the ELBG algorithm
benoit
parents:
diff changeset
28 * Based on the paper "Neural Networks 14:1219-1237" that can be found in
ed41cfae128d Codebook generator using the ELBG algorithm
benoit
parents:
diff changeset
29 * http://citeseer.ist.psu.edu/patan01enhanced.html .
ed41cfae128d Codebook generator using the ELBG algorithm
benoit
parents:
diff changeset
30 *
ed41cfae128d Codebook generator using the ELBG algorithm
benoit
parents:
diff changeset
31 * @param points Input points.
ed41cfae128d Codebook generator using the ELBG algorithm
benoit
parents:
diff changeset
32 * @param dim Dimension of the points.
ed41cfae128d Codebook generator using the ELBG algorithm
benoit
parents:
diff changeset
33 * @param numpoints Num of points in **points.
ed41cfae128d Codebook generator using the ELBG algorithm
benoit
parents:
diff changeset
34 * @param codebook Pointer to the output codebook. Must be allocated.
ed41cfae128d Codebook generator using the ELBG algorithm
benoit
parents:
diff changeset
35 * @param numCB Number of points in the codebook.
ed41cfae128d Codebook generator using the ELBG algorithm
benoit
parents:
diff changeset
36 * @param num_steps The maximum number of steps. One step is already a good compromise between time and quality.
ed41cfae128d Codebook generator using the ELBG algorithm
benoit
parents:
diff changeset
37 * @param closest_cb Return the closest codebook to each point. Must be allocated.
9220
cb62e27e2c07 Fix reference to av_random_init where av_lfg_init was meant.
diego
parents: 9195
diff changeset
38 * @param rand_state A random number generator state. Should be already initialized by av_lfg_init().
5095
ed41cfae128d Codebook generator using the ELBG algorithm
benoit
parents:
diff changeset
39 */
ed41cfae128d Codebook generator using the ELBG algorithm
benoit
parents:
diff changeset
40 void ff_do_elbg(int *points, int dim, int numpoints, int *codebook,
ed41cfae128d Codebook generator using the ELBG algorithm
benoit
parents:
diff changeset
41 int numCB, int num_steps, int *closest_cb,
9154
aa459306ee59 Use FLG pseudo-random number generator in RoQ and ELBG
vitor
parents: 8628
diff changeset
42 AVLFG *rand_state);
5095
ed41cfae128d Codebook generator using the ELBG algorithm
benoit
parents:
diff changeset
43
ed41cfae128d Codebook generator using the ELBG algorithm
benoit
parents:
diff changeset
44 /**
ed41cfae128d Codebook generator using the ELBG algorithm
benoit
parents:
diff changeset
45 * Initialize the **codebook vector for the elbg algorithm. If you have already
ed41cfae128d Codebook generator using the ELBG algorithm
benoit
parents:
diff changeset
46 * a codebook and you want to refine it, you shouldn't call this function.
ed41cfae128d Codebook generator using the ELBG algorithm
benoit
parents:
diff changeset
47 * If numpoints < 8*numCB this function fills **codebook with random numbers.
ed41cfae128d Codebook generator using the ELBG algorithm
benoit
parents:
diff changeset
48 * If not, it calls ff_do_elbg for a (smaller) random sample of the points in
ed41cfae128d Codebook generator using the ELBG algorithm
benoit
parents:
diff changeset
49 * **points. Get the same parameters as ff_do_elbg.
ed41cfae128d Codebook generator using the ELBG algorithm
benoit
parents:
diff changeset
50 */
ed41cfae128d Codebook generator using the ELBG algorithm
benoit
parents:
diff changeset
51 void ff_init_elbg(int *points, int dim, int numpoints, int *codebook,
ed41cfae128d Codebook generator using the ELBG algorithm
benoit
parents:
diff changeset
52 int numCB, int num_steps, int *closest_cb,
9154
aa459306ee59 Use FLG pseudo-random number generator in RoQ and ELBG
vitor
parents: 8628
diff changeset
53 AVLFG *rand_state);
5163
9ecbfc0c82bf add multiple inclusion guards to headers
mru
parents: 5095
diff changeset
54
7760
c4a4495715dd Globally rename the header inclusion guard names.
stefano
parents: 6763
diff changeset
55 #endif /* AVCODEC_ELBG_H */