static int libdirac_encode_close(AVCodecContext *avccontext) { FfmpegDiracEncoderParams* p_dirac_params = avccontext->priv_data; /* close the encoder */ dirac_encoder_close(p_dirac_params->p_encoder ); /* free data in the output frame queue */ ff_dirac_schro_queue_free(&p_dirac_params->enc_frame_queue, DiracFreeFrame); /* free the input frame buffer */ av_freep(&p_dirac_params->p_in_frame_buf); return 0 ; }
/***************************************************************************** * CloseEncoder: dirac encoder destruction *****************************************************************************/ static void CloseEncoder( vlc_object_t *p_this ) { encoder_t *p_enc = (encoder_t *)p_this; encoder_sys_t *p_sys = p_enc->p_sys; /* Free the encoder resources */ if( p_sys->p_dirac ) dirac_encoder_close( p_sys->p_dirac ); free( p_sys->p_buffer_in ); free( p_sys->p_buffer_out ); if( p_sys->p_dts_fifo ) block_FifoRelease( p_sys->p_dts_fifo ); block_ChainRelease( p_sys->p_chain ); free( p_sys ); }