free internal buffer (or run out of memory)

This commit is contained in:
niels
2012-11-25 09:01:04 +01:00
parent 06b75f4abd
commit 87c3d8f4d3
4 changed files with 10 additions and 13 deletions

View File

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

View File

@@ -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;
}

View File

@@ -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;

View File

@@ -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;
}