static BOOL test_ClearDecompressExample(UINT32 nr, const BYTE* pSrcData, const UINT32 SrcSize) { int status; BYTE pDstData[16384]; CLEAR_CONTEXT* clear = clear_context_new(FALSE); if (!clear) return FALSE; status = clear_decompress(clear, pSrcData, SrcSize, 128, 128, pDstData, PIXEL_FORMAT_XRGB32, 0, 1, 1, 128, 128, NULL); printf("clear_decompress example %"PRIu32" status: %d\n", nr, status); fflush(stdout); clear_context_free(clear); #if 0 if (status != 0) return FALSE; #else fprintf(stderr, "%s: TODO Test %"PRIu32" not working!!!\n", __FUNCTION__, nr); #endif return TRUE; }
/** * Function description * * @return 0 on success, otherwise a Win32 error code */ static UINT gdi_SurfaceCommand_ClearCodec(rdpGdi* gdi, RdpgfxClientContext* context, const RDPGFX_SURFACE_COMMAND* cmd) { INT32 rc; UINT status = CHANNEL_RC_OK; gdiGfxSurface* surface; RECTANGLE_16 invalidRect; surface = (gdiGfxSurface*) context->GetSurfaceData(context, cmd->surfaceId); if (!surface) { WLog_ERR(TAG, "%s: unable to retrieve surfaceData for surfaceId=%"PRIu32"", __FUNCTION__, cmd->surfaceId); return ERROR_NOT_FOUND; } rc = clear_decompress(surface->codecs->clear, cmd->data, cmd->length, cmd->width, cmd->height, surface->data, surface->format, surface->scanline, cmd->left, cmd->top, surface->width, surface->height, &gdi->palette); if (rc < 0) { WLog_ERR(TAG, "clear_decompress failure: %"PRId32"", rc); return ERROR_INTERNAL_ERROR; } invalidRect.left = cmd->left; invalidRect.top = cmd->top; invalidRect.right = cmd->right; invalidRect.bottom = cmd->bottom; region16_union_rect(&(surface->invalidRegion), &(surface->invalidRegion), &invalidRect); IFCALL(context->UpdateSurfaceArea, context, surface->surfaceId, 1, &invalidRect); if (!gdi->inGfxFrame) { status = CHANNEL_RC_NOT_INITIALIZED; IFCALLRET(context->UpdateSurfaces, status, context); } return status; }
/** * Function description * * @return 0 on success, otherwise a Win32 error code */ static UINT xf_SurfaceCommand_ClearCodec(xfContext* xfc, RdpgfxClientContext* context, RDPGFX_SURFACE_COMMAND* cmd) { int status; BYTE* DstData = NULL; xfGfxSurface* surface; RECTANGLE_16 invalidRect; surface = (xfGfxSurface*) context->GetSurfaceData(context, cmd->surfaceId); if (!surface) return ERROR_INTERNAL_ERROR; if (!freerdp_client_codecs_prepare(xfc->codecs, FREERDP_CODEC_CLEARCODEC, xfc->settings->DesktopWidth, xfc->settings->DesktopHeight)) return ERROR_INTERNAL_ERROR; DstData = surface->data; status = clear_decompress(xfc->codecs->clear, cmd->data, cmd->length, &DstData, surface->format, surface->scanline, cmd->left, cmd->top, cmd->width, cmd->height); if (status < 0) { WLog_ERR(TAG, "clear_decompress failure: %d", status); return ERROR_INTERNAL_ERROR; } invalidRect.left = cmd->left; invalidRect.top = cmd->top; invalidRect.right = cmd->right; invalidRect.bottom = cmd->bottom; region16_union_rect(&surface->invalidRegion, &surface->invalidRegion, &invalidRect); if (!xfc->inGfxFrame) xf_UpdateSurfaces(xfc); return CHANNEL_RC_OK; }
int test_ClearDecompressExample3() { int status; BYTE* pSrcData; UINT32 SrcSize; UINT32 DstSize; BYTE* pDstData = NULL; CLEAR_CONTEXT* clear; clear = clear_context_new(FALSE); SrcSize = sizeof(TEST_CLEAR_EXAMPLE_3) - 1; pSrcData = (BYTE*) TEST_CLEAR_EXAMPLE_3; status = clear_decompress(clear, pSrcData, SrcSize, &pDstData, &DstSize); printf("clear_decompress example 3 status: %d\n", status); clear_context_free(clear); return 1; }
int xf_SurfaceCommand_ClearCodec(xfContext* xfc, RdpgfxClientContext* context, RDPGFX_SURFACE_COMMAND* cmd) { int status; BYTE* DstData = NULL; xfGfxSurface* surface; RECTANGLE_16 invalidRect; freerdp_client_codecs_prepare(xfc->codecs, FREERDP_CODEC_CLEARCODEC); surface = (xfGfxSurface*) context->GetSurfaceData(context, cmd->surfaceId); if (!surface) return -1; DstData = surface->data; status = clear_decompress(xfc->codecs->clear, cmd->data, cmd->length, &DstData, PIXEL_FORMAT_XRGB32, surface->scanline, cmd->left, cmd->top, cmd->width, cmd->height); if (status < 0) { printf("clear_decompress failure: %d\n", status); return -1; } invalidRect.left = cmd->left; invalidRect.top = cmd->top; invalidRect.right = cmd->right; invalidRect.bottom = cmd->bottom; region16_union_rect(&(xfc->invalidRegion), &(xfc->invalidRegion), &invalidRect); if (!xfc->inGfxFrame) xf_OutputUpdate(xfc); return 1; }
int gdi_SurfaceCommand_ClearCodec(rdpGdi* gdi, RdpgfxClientContext* context, RDPGFX_SURFACE_COMMAND* cmd) { int status; BYTE* DstData = NULL; gdiGfxSurface* surface; RECTANGLE_16 invalidRect; freerdp_client_codecs_prepare(gdi->codecs, FREERDP_CODEC_CLEARCODEC); surface = (gdiGfxSurface*) context->GetSurfaceData(context, cmd->surfaceId); if (!surface) return -1; DstData = surface->data; status = clear_decompress(gdi->codecs->clear, cmd->data, cmd->length, &DstData, surface->format, surface->scanline, cmd->left, cmd->top, cmd->width, cmd->height); if (status < 0) { WLog_ERR(TAG, "clear_decompress failure: %d", status); return -1; } invalidRect.left = cmd->left; invalidRect.top = cmd->top; invalidRect.right = cmd->right; invalidRect.bottom = cmd->bottom; region16_union_rect(&(gdi->invalidRegion), &(gdi->invalidRegion), &invalidRect); if (!gdi->inGfxFrame) gdi_OutputUpdate(gdi); return 1; }
static BOOL test_ClearDecompressExample(UINT32 nr, UINT32 width, UINT32 height, const BYTE* pSrcData, const UINT32 SrcSize) { BOOL rc = FALSE; int status; BYTE* pDstData = calloc(width * height, 4); CLEAR_CONTEXT* clear = clear_context_new(FALSE); if (!clear || !pDstData) goto fail; status = clear_decompress(clear, pSrcData, SrcSize, width, height, pDstData, PIXEL_FORMAT_XRGB32, 0, 0, 0, width, height, NULL); printf("clear_decompress example %"PRIu32" status: %d\n", nr, status); fflush(stdout); rc = (status == 0); fail: clear_context_free(clear); free(pDstData); return rc; }