int va_FoolCreateConfig( VADisplay dpy, VAProfile profile, VAEntrypoint entrypoint, VAConfigAttrib *attrib_list, int num_attribs, VAConfigID *config_id /* out */ ) { DPY2FOOLCTX(dpy); fool_ctx->entrypoint = entrypoint; /* * check fool_codec to align with current context * e.g. fool_codec = decode then for encode, the * vaBegin/vaRender/vaEnd also run into fool path * which is not desired */ if (((fool_codec & VA_FOOL_FLAG_DECODE) && (entrypoint == VAEntrypointVLD)) || ((fool_codec & VA_FOOL_FLAG_JPEG) && (entrypoint == VAEntrypointEncPicture))) fool_ctx->enabled = 1; else if ((fool_codec & VA_FOOL_FLAG_ENCODE) && (entrypoint == VAEntrypointEncSlice)) { /* H264 is desired */ if (((profile == VAProfileH264Baseline || profile == VAProfileH264Main || profile == VAProfileH264High || profile == VAProfileH264ConstrainedBaseline)) && strstr(fool_ctx->fn_enc, "h264")) fool_ctx->enabled = 1; /* vp8 is desired */ if ((profile == VAProfileVP8Version0_3) && strstr(fool_ctx->fn_enc, "vp8")) fool_ctx->enabled = 1; } if (fool_ctx->enabled) va_infoMessage("FOOL is enabled for this context\n"); else va_infoMessage("FOOL is not enabled for this context\n"); return 0; /* continue */ }
int va_FoolEnd(VADisplay dpy) { int i; DPY2FOOLCTX(dpy); for (i = 0; i < VABufferTypeMax; i++) {/* free memory */ if (fool_ctx->fool_buf[i]) free(fool_ctx->fool_buf[i]); } if (fool_ctx->segbuf_enc) free(fool_ctx->segbuf_enc); if (fool_ctx->segbuf_jpg) free(fool_ctx->segbuf_jpg); if (fool_ctx->fn_enc) free(fool_ctx->fn_enc); if (fool_ctx->fn_jpg) free(fool_ctx->fn_jpg); free(fool_ctx); ((VADisplayContextP)dpy)->vafool = NULL; return 0; }