void shutdown(Context *ctx) { unsigned int i; imx_vpu_dec_close(ctx->vpudec); free(ctx->framebuffers); for (i = 0; i < ctx->num_framebuffers; ++i) imx_vpu_dma_buffer_deallocate(ctx->fb_dmabuffers[i]); free(ctx->fb_dmabuffers); imx_vpu_dma_buffer_deallocate(ctx->bitstream_buffer); imx_vpu_dec_unload(); free(ctx); }
ImxVpuDecReturnCodes imx_vpu_jpeg_dec_close(ImxVpuJPEGDecoder *jpeg_decoder) { assert(jpeg_decoder != NULL); assert(jpeg_decoder->decoder != NULL); imx_vpu_dec_close(jpeg_decoder->decoder); imx_vpu_jpeg_dec_deallocate_framebuffers(jpeg_decoder); if (jpeg_decoder->bitstream_buffer != NULL) imx_vpu_dma_buffer_deallocate(jpeg_decoder->bitstream_buffer); IMX_VPU_FREE(jpeg_decoder, sizeof(ImxVpuJPEGDecoder)); return IMX_VPU_DEC_RETURN_CODE_OK; }