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); free(tmp);
*/ */
//@ clear distance transform map //@ 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 //@ todo: optimize with mmx
binarify( ud->data, static_bg, frame->data[0], threshold, reverse,len ); 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) if(mode==1)
{ {
//@ show difference image in grayscale //@ show difference image in grayscale
veejay_memcpy( Y, ud->data, len ); vj_frame_copy1( ud->data, Y, len );
veejay_memset( Cb, 128, len ); vj_frame_clear1( Cb, 128, len );
veejay_memset( Cr, 128, len ); vj_frame_clear1( Cr, 128, len );
return; return;
} else if (mode == 2 ) } 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_free_internal_buf();
vj_task_set_sampling(0); vj_task_set_sampling(0);
free(data);
return; return;
} }
@@ -896,6 +897,7 @@ void chroma_subsample(subsample_mode_t mode, VJFrame *frame, uint8_t *ycbcr[] )
vj_task_free_internal_buf(); vj_task_free_internal_buf();
vj_task_set_sampling(0); vj_task_set_sampling(0);
free(data);
return; return;
} }
@@ -951,6 +953,7 @@ void chroma_supersample(subsample_mode_t mode,VJFrame *frame, uint8_t *ycbcr[] )
vj_task_free_internal_buf(); vj_task_free_internal_buf();
vj_task_set_sampling(0); vj_task_set_sampling(0);
free(data);
return; 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) 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)); 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 #ifdef STRICT_CHECKING
assert ( buf != NULL ); assert ( buf != NULL );
@@ -509,7 +509,6 @@ static void vj_perform_free_row(int c)
{ {
if(frame_buffer[c]->Y) if(frame_buffer[c]->Y)
{ {
munlock( frame_buffer[c]->Y,RUP8(helper_frame->len * 3 * 3));
free( frame_buffer[c]->Y ); free( frame_buffer[c]->Y );
} }
frame_buffer[c]->Y = NULL; 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() void vj_task_free_internal_buf()
{ {
if(vj_task_args[0]->priv )
free(vj_task_args[0]->priv);
int n = task_get_workers(); int n = task_get_workers();
int i; int i;
for( i = 0; i < n; i ++ ) { for( int i = 0; i < n; i ++ )
vj_task_arg_t *v = vj_task_args[i]; vj_task_args[0]->priv = NULL;
v->priv = NULL;
}
} }