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