static void func_destroy(IJKFF_Pipenode *node) { if (!node || !node->opaque) return; IJKFF_Pipenode_Opaque *opaque = node->opaque; SDL_DestroyCondP(&opaque->acodec_cond); SDL_DestroyMutexP(&opaque->acodec_mutex); SDL_DestroyCondP(&opaque->acodec_first_dequeue_output_cond); SDL_DestroyMutexP(&opaque->acodec_first_dequeue_output_mutex); SDL_AMediaCodec_decreaseReferenceP(&opaque->acodec); SDL_AMediaFormat_deleteP(&opaque->input_aformat); SDL_AMediaFormat_deleteP(&opaque->output_aformat); #if AMC_USE_AVBITSTREAM_FILTER av_freep(&opaque->orig_extradata); #endif ffp_packet_queue_destroy(&opaque->fake_pictq); if (opaque->bsfc) { av_bitstream_filter_close(opaque->bsfc); opaque->bsfc = NULL; } JNIEnv *env = NULL; if (JNI_OK == SDL_JNI_SetupThreadEnv(&env)) { SDL_JNI_DeleteGlobalRefP(env, &opaque->jsurface); } }
static void aout_free_l(SDL_Aout *aout) { SDLTRACE("%s\n", __func__); if (!aout) return; aout_close_audio(aout); SDL_Aout_Opaque *opaque = aout->opaque; if (opaque->slOutputMixObject) { (*opaque->slOutputMixObject)->Destroy(opaque->slOutputMixObject); opaque->slOutputMixObject = NULL; } opaque->slEngine = NULL; if (opaque->slObject) { (*opaque->slObject)->Destroy(opaque->slObject); opaque->slObject = NULL; } SDL_DestroyCondP(&opaque->wakeup_cond); SDL_DestroyMutexP(&opaque->wakeup_mutex); SDL_Aout_FreeInternal(aout); }
void SDL_AMediaCodec_FakeFifo_destroy(SDL_AMediaCodec_FakeFifo *fifo) { if (!fifo) return; if (fifo->mutex) SDL_AMediaCodec_FakeFifo_abort(fifo); SDL_DestroyMutexP(&fifo->mutex); SDL_DestroyCondP(&fifo->wakeup_enqueue_cond); SDL_DestroyCondP(&fifo->wakeup_dequeue_cond); memset(fifo, 0, sizeof(SDL_AMediaCodec_FakeFifo)); }
void ffpipenode_free(AirStashFF_Pipenode *node) { if (!node) return; if (node->func_destroy) { node->func_destroy(node); } SDL_DestroyMutexP(&node->mutex); free(node->opaque); memset(node, 0, sizeof(AirStashFF_Pipenode)); free(node); }
static void func_destroy(IJKFF_Pipeline *pipeline) { IJKFF_Pipeline_Opaque *opaque = pipeline->opaque; JNIEnv *env = NULL; SDL_DestroyMutexP(&opaque->surface_mutex); if (JNI_OK != SDL_JNI_SetupThreadEnv(&env)) { ALOGE("amediacodec-pipeline:destroy: SetupThreadEnv failed\n"); goto fail; } SDL_JNI_DeleteGlobalRefP(env, &opaque->jsurface); fail: return; }
void ijkmeta_destroy(IjkMediaMeta *meta) { if (!meta) return; if (meta->dict) { av_dict_free(&meta->dict); } if (meta->children) { for(int i = 0; i < meta->children_count; ++i) { IjkMediaMeta *child = meta->children[i]; if (child) { ijkmeta_destroy(child); } } free(meta->children); meta->children = NULL; } SDL_DestroyMutexP(&meta->mutex); }