mirror of
https://github.com/game-stop/veejay.git
synced 2025-12-17 21:30:02 +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);
|
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 )
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user