//export webRdpBitmapDecompress func webRdpBitmapDecompress(context *C.rdpContext, bitmap *C.rdpBitmap, data *C.BYTE, width C.int, height C.int, bpp C.int, length C.int, compressed C.BOOL, codecId C.int) C.BOOL { log.Printf("compressed:%d bpp:%d", compressed, bpp) size := width * height * 4 if bitmap.data != nil { C._aligned_free(unsafe.Pointer(bitmap.data)) } bitmap.data = (*C.BYTE)(C._aligned_malloc(C.size_t(size), 16)) if compressed != false { if bpp < 32 { C.freerdp_client_codecs_prepare(context.codecs, C.FREERDP_CODEC_INTERLEAVED) C.interleaved_decompress(context.codecs.interleaved, data, C.UINT32(length), bpp, &(bitmap.data), C.PIXEL_FORMAT_XRGB32, -1, 0, 0, width, height, C.getBYTEpalette(context)) } else { C.freerdp_client_codecs_prepare(context.codecs, C.FREERDP_CODEC_PLANAR) status := C.planar_decompress(context.codecs.planar, data, C.UINT32(length), &(bitmap.data), C.PIXEL_FORMAT_XRGB32, -1, 0, 0, width, height, true) log.Printf("webRdpBitmapDecompress status::::::%d", status) } } else { C.freerdp_image_flip(data, bitmap.data, width, height, bpp) } bitmap.compressed = false bitmap.length = C.UINT32(size) bitmap.bpp = 32 return true }
func (m Aligned) Dealloc(p unsafe.Pointer) bool { C._aligned_free(p) return true }