static void gst_imx_vpu_encoder_base_close(GstImxVpuEncoderBase *vpu_encoder_base) { ImxVpuEncReturnCodes ret; if (vpu_encoder_base->encoder == NULL) return; GST_DEBUG_OBJECT(vpu_encoder_base, "closing encoder"); if (vpu_encoder_base->internal_input_bufferpool != NULL) { gst_object_unref(vpu_encoder_base->internal_input_bufferpool); vpu_encoder_base->internal_input_bufferpool = NULL; } if (vpu_encoder_base->internal_input_buffer != NULL) { gst_buffer_unref(vpu_encoder_base->internal_input_buffer); vpu_encoder_base->internal_input_buffer = NULL; } if ((ret = imx_vpu_enc_close(vpu_encoder_base->encoder)) != IMX_VPU_ENC_RETURN_CODE_OK) GST_ERROR_OBJECT(vpu_encoder_base, "error while closing encoder: %s", imx_vpu_enc_error_string(ret)); if (vpu_encoder_base->framebuffer_array != NULL) { gst_object_unref(GST_OBJECT(vpu_encoder_base->framebuffer_array)); vpu_encoder_base->framebuffer_array = NULL; } vpu_encoder_base->encoder = NULL; }
static ImxVpuEncReturnCodes imx_vpu_jpeg_enc_close_internal(ImxVpuJPEGEncoder *jpeg_encoder) { assert(jpeg_encoder != NULL); if (jpeg_encoder->encoder != NULL) { imx_vpu_enc_close(jpeg_encoder->encoder); jpeg_encoder->encoder = NULL; } imx_vpu_jpeg_enc_deallocate_framebuffers(jpeg_encoder); return IMX_VPU_ENC_RETURN_CODE_OK; }
void shutdown(Context *ctx) { unsigned int i; imx_vpu_enc_close(ctx->vpuenc); imx_vpu_dma_buffer_deallocate(ctx->input_fb_dmabuffer); imx_vpu_dma_buffer_deallocate(ctx->output_dmabuffer); 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_enc_unload(); free(ctx); }
void shutdown(Context *ctx) { unsigned int i; /* Close the previously opened encoder instance */ imx_vpu_enc_close(ctx->vpuenc); /* Free all allocated memory (both regular and DMA memory) */ imx_vpu_dma_buffer_deallocate(ctx->input_fb_dmabuffer); 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); /* Unload the VPU firmware */ imx_vpu_enc_unload(); free(ctx); }