mirror of
https://github.com/game-stop/veejay.git
synced 2025-12-17 13:20:01 +01:00
free internal buffer (or run out of memory)
This commit is contained in:
@@ -185,7 +185,7 @@ void diff_apply(void *ed, VJFrame *frame,
|
||||
free(tmp);
|
||||
*/
|
||||
//@ clear distance transform map
|
||||
veejay_memset( dt_map, 0 , len * sizeof(uint32_t) );
|
||||
vj_frame_clear1( dt_map, 0 , len * sizeof(uint32_t) );
|
||||
|
||||
//@ todo: optimize with mmx
|
||||
binarify( ud->data, static_bg, frame->data[0], threshold, reverse,len );
|
||||
@@ -196,9 +196,9 @@ void diff_apply(void *ed, VJFrame *frame,
|
||||
if(mode==1)
|
||||
{
|
||||
//@ show difference image in grayscale
|
||||
veejay_memcpy( Y, ud->data, len );
|
||||
veejay_memset( Cb, 128, len );
|
||||
veejay_memset( Cr, 128, len );
|
||||
vj_frame_copy1( ud->data, Y, len );
|
||||
vj_frame_clear1( Cb, 128, len );
|
||||
vj_frame_clear1( Cr, 128, len );
|
||||
|
||||
return;
|
||||
} else if (mode == 2 )
|
||||
|
||||
@@ -850,6 +850,7 @@ void chroma_subsample_cp(subsample_mode_t mode,VJFrame *frame, uint8_t *ycbcr[],
|
||||
|
||||
vj_task_free_internal_buf();
|
||||
vj_task_set_sampling(0);
|
||||
free(data);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -896,6 +897,7 @@ void chroma_subsample(subsample_mode_t mode, VJFrame *frame, uint8_t *ycbcr[] )
|
||||
|
||||
vj_task_free_internal_buf();
|
||||
vj_task_set_sampling(0);
|
||||
free(data);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -951,6 +953,7 @@ void chroma_supersample(subsample_mode_t mode,VJFrame *frame, uint8_t *ycbcr[] )
|
||||
|
||||
vj_task_free_internal_buf();
|
||||
vj_task_set_sampling(0);
|
||||
free(data);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -487,7 +487,7 @@ static int vj_perform_increase_sample_frame(veejay_t * info, long num)
|
||||
static long vj_perform_alloc_row(veejay_t *info, int c, int frame_len)
|
||||
{
|
||||
uint8_t *buf = vj_malloc(sizeof(uint8_t) * RUP8(helper_frame->len * 3 * 3));
|
||||
mlock( buf, RUP8(helper_frame->len * 3 * 3));
|
||||
//mlock( buf, RUP8(helper_frame->len * 3 * 3));
|
||||
|
||||
#ifdef STRICT_CHECKING
|
||||
assert ( buf != NULL );
|
||||
@@ -509,7 +509,6 @@ static void vj_perform_free_row(int c)
|
||||
{
|
||||
if(frame_buffer[c]->Y)
|
||||
{
|
||||
munlock( frame_buffer[c]->Y,RUP8(helper_frame->len * 3 * 3));
|
||||
free( frame_buffer[c]->Y );
|
||||
}
|
||||
frame_buffer[c]->Y = NULL;
|
||||
|
||||
@@ -618,15 +618,10 @@ int vj_task_run(uint8_t **buf1, uint8_t **buf2, uint8_t **buf3, int *strides,int
|
||||
|
||||
void vj_task_free_internal_buf()
|
||||
{
|
||||
if(vj_task_args[0]->priv )
|
||||
free(vj_task_args[0]->priv);
|
||||
|
||||
int n = task_get_workers();
|
||||
int i;
|
||||
|
||||
for( i = 0; i < n; i ++ ) {
|
||||
vj_task_arg_t *v = vj_task_args[i];
|
||||
v->priv = NULL;
|
||||
}
|
||||
for( int i = 0; i < n; i ++ )
|
||||
vj_task_args[0]->priv = NULL;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user