예제 #1
0
/**
    \fn getNextFrame
*/
bool         Msharpen::getNextFrame(uint32_t *fn,ADMImage *image)
{
ADMImage *src,*blur,*dst;

    src=vidCache->getImage(nextFrame);
    if(!src)
        return false; // EOF
    
    blur=blurrImg;
    dst=image;

    dst->Pts=src->Pts;
	
    for (int i=0;i<3;i++)
    {
            
            blur_plane(src, blur, i);
            detect_edges(blur, dst,  i);
            if (_param.highq == true)
                detect_edges_HiQ(blur, dst,  i);
            if (!_param.mask) 
                apply_filter(src, blur, dst,  i);
    }

    *fn=nextFrame;
    nextFrame++;
    vidCache->unlockAll();
    return true;
}
/**
    \fn getNextFrame
*/
bool         Msharpen::getNextFrame(uint32_t *fn,ADMImage *image)
{
ADMImage *src,*blur,*dst;
/*
	PVideoFrame src = child->GetFrame(n, env);
	PVideoFrame blur = env->NewVideoFrame(vi);
	PVideoFrame dst = env->NewVideoFrame(vi);
*/
unsigned char *blurp;
unsigned char *dstp;

	dst=image;
	src=vidCache->getImage(nextFrame);
    if(!src)
        return false; // EOF
	blur=blurrImg;
    dst->Pts=src->Pts;
	{
		for (int i=0;i<3;i++)
		{
            blurp=blur->GetReadPtr((ADM_PLANE)i);
			blur_plane(src, blur, blurp ,i);
            dstp=dst->GetWritePtr((ADM_PLANE)i);
			detect_edges(blur, dst, dstp, i);
			if (_param.highq == true)
				detect_edges_HiQ(blur, dst, dstp, i);

			if (!_param.mask) apply_filter(src, blur, dst, dstp, i);
		}
	}
    *fn=nextFrame;
    nextFrame++;
	vidCache->unlockAll();
	return true;
}