Example #1
0
bool PlanarFrame::allocSpace(VideoInfo &viInfo)
{
	myalignedfree(planar_4);
	myalignedfree(planar_3);
	myalignedfree(planar_2);
	myalignedfree(planar_1);
	alloc_ok=false;

	grey = viInfo.IsY();
	isRGBPfamily = viInfo.IsPlanarRGB() || viInfo.IsPlanarRGBA();
	isAlphaChannel = viInfo.IsYUVA() || viInfo.IsPlanarRGBA();
	pixelsize = (uint8_t)viInfo.ComponentSize(); // AVS16
	bits_per_pixel = (uint8_t)viInfo.BitsPerComponent();
	
	ypitch = uvpitch = 0;
	ywidth = uvwidth = 0;
	yheight = uvheight = 0;

	int height = viInfo.height;
	int width = viInfo.width;
	if ((height==0) || (width==0)) return(false);
	if (viInfo.Is420())
	{
		ypitch = modnpf((int)pixelsize*(width+MIN_PAD),MIN_ALIGNMENT);
		ywidth = width;
		yheight = height;
		width >>= 1;
		height >>= 1;
		uvpitch = modnpf((int)pixelsize*(width+MIN_PAD),MIN_ALIGNMENT);
		uvwidth = width;
		uvheight = height;
	}
Example #2
0
bool PlanarFrame::allocSpace(VideoInfo &viInfo)
{
	if (y != NULL) { _aligned_free(y); y = NULL; }
	if (u != NULL) { _aligned_free(u); u = NULL; }
	if (v != NULL) { _aligned_free(v); v = NULL; }
	int height = viInfo.height;
	int width = viInfo.width;
	if (viInfo.IsYV12())
	{
		ypitch = modnpf(width+MIN_PAD,MIN_ALIGNMENT);
		ywidth = width;
		yheight = height;
		width >>= 1;
		height >>= 1;
		uvpitch = modnpf(width+MIN_PAD,MIN_ALIGNMENT);
		uvwidth = width;
		uvheight = height;
		y = (unsigned char*)_aligned_malloc(ypitch*yheight,MIN_ALIGNMENT);
		if (y == NULL) return false;
		u = (unsigned char*)_aligned_malloc(uvpitch*uvheight,MIN_ALIGNMENT);
		if (u == NULL) return false;
		v = (unsigned char*)_aligned_malloc(uvpitch*uvheight,MIN_ALIGNMENT);
		if (v == NULL) return false;
		return true;
	}