annotate elbg.h @ 8520:a0164882aa38 libavcodec

Generic metadata API. avi is updated as example. No version bump, the API still might change slightly ... No update to ffmpeg.c as requested by aurel.
author michael
date Sun, 04 Jan 2009 18:48:37 +0000
parents c4a4495715dd
children e49a2e1f0020
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
6763
f7cbb7733146 Use full path for #includes from another directory.
diego
parents: 5830
diff changeset
24 #include "libavutil/random.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.
ed41cfae128d Codebook generator using the ELBG algorithm
benoit
parents:
diff changeset
38 * @param rand_state A random number generator state. Should be already initialised by av_init_random.
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,
ed41cfae128d Codebook generator using the ELBG algorithm
benoit
parents:
diff changeset
42 AVRandomState *rand_state);
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,
ed41cfae128d Codebook generator using the ELBG algorithm
benoit
parents:
diff changeset
53 AVRandomState *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 */