mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
avcodec/elbg: Increase some fields to 64bit
Fixes: Ticket8312 Fixes: Ticket8321 Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
parent
e2c2872393
commit
c1a49a1264
@ -44,12 +44,12 @@ typedef struct cell_s {
|
|||||||
* ELBG internal data
|
* ELBG internal data
|
||||||
*/
|
*/
|
||||||
typedef struct elbg_data {
|
typedef struct elbg_data {
|
||||||
int error;
|
int64_t error;
|
||||||
int dim;
|
int dim;
|
||||||
int numCB;
|
int numCB;
|
||||||
int *codebook;
|
int *codebook;
|
||||||
cell **cells;
|
cell **cells;
|
||||||
int *utility;
|
int64_t *utility;
|
||||||
int64_t *utility_inc;
|
int64_t *utility_inc;
|
||||||
int *nearest_cb;
|
int *nearest_cb;
|
||||||
int *points;
|
int *points;
|
||||||
@ -264,7 +264,8 @@ static void update_utility_and_n_cb(elbg_data *elbg, int idx, int newutility)
|
|||||||
*/
|
*/
|
||||||
static void try_shift_candidate(elbg_data *elbg, int idx[3])
|
static void try_shift_candidate(elbg_data *elbg, int idx[3])
|
||||||
{
|
{
|
||||||
int j, k, olderror=0, newerror, cont=0;
|
int j, k, cont=0;
|
||||||
|
int64_t olderror=0, newerror;
|
||||||
int newutility[3];
|
int newutility[3];
|
||||||
int *newcentroid[3] = {
|
int *newcentroid[3] = {
|
||||||
elbg->scratchbuf,
|
elbg->scratchbuf,
|
||||||
@ -374,19 +375,20 @@ int avpriv_do_elbg(int *points, int dim, int numpoints, int *codebook,
|
|||||||
int dist;
|
int dist;
|
||||||
elbg_data elbg_d;
|
elbg_data elbg_d;
|
||||||
elbg_data *elbg = &elbg_d;
|
elbg_data *elbg = &elbg_d;
|
||||||
int i, j, k, last_error, steps = 0, ret = 0;
|
int i, j, k, steps = 0, ret = 0;
|
||||||
int *dist_cb = av_malloc_array(numpoints, sizeof(int));
|
int *dist_cb = av_malloc_array(numpoints, sizeof(int));
|
||||||
int *size_part = av_malloc_array(numCB, sizeof(int));
|
int *size_part = av_malloc_array(numCB, sizeof(int));
|
||||||
cell *list_buffer = av_malloc_array(numpoints, sizeof(cell));
|
cell *list_buffer = av_malloc_array(numpoints, sizeof(cell));
|
||||||
cell *free_cells;
|
cell *free_cells;
|
||||||
int best_dist, best_idx = 0;
|
int best_dist, best_idx = 0;
|
||||||
|
int64_t last_error;
|
||||||
|
|
||||||
elbg->error = INT_MAX;
|
elbg->error = INT64_MAX;
|
||||||
elbg->dim = dim;
|
elbg->dim = dim;
|
||||||
elbg->numCB = numCB;
|
elbg->numCB = numCB;
|
||||||
elbg->codebook = codebook;
|
elbg->codebook = codebook;
|
||||||
elbg->cells = av_malloc_array(numCB, sizeof(cell *));
|
elbg->cells = av_malloc_array(numCB, sizeof(cell *));
|
||||||
elbg->utility = av_malloc_array(numCB, sizeof(int));
|
elbg->utility = av_malloc_array(numCB, sizeof(*elbg->utility));
|
||||||
elbg->nearest_cb = closest_cb;
|
elbg->nearest_cb = closest_cb;
|
||||||
elbg->points = points;
|
elbg->points = points;
|
||||||
elbg->utility_inc = av_malloc_array(numCB, sizeof(*elbg->utility_inc));
|
elbg->utility_inc = av_malloc_array(numCB, sizeof(*elbg->utility_inc));
|
||||||
@ -404,7 +406,7 @@ int avpriv_do_elbg(int *points, int dim, int numpoints, int *codebook,
|
|||||||
free_cells = list_buffer;
|
free_cells = list_buffer;
|
||||||
last_error = elbg->error;
|
last_error = elbg->error;
|
||||||
steps++;
|
steps++;
|
||||||
memset(elbg->utility, 0, numCB*sizeof(int));
|
memset(elbg->utility, 0, numCB*sizeof(*elbg->utility));
|
||||||
memset(elbg->cells, 0, numCB*sizeof(cell *));
|
memset(elbg->cells, 0, numCB*sizeof(cell *));
|
||||||
|
|
||||||
elbg->error = 0;
|
elbg->error = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user