static void ffmpeg_source_deactivate(void *data) { struct ffmpeg_source *s = data; if (s->restart_on_activate) { if (s->media_valid) { mp_media_stop(&s->media); if (s->is_clear_on_media_end) obs_source_output_video(s->source, NULL); } } }
void mp_media_free(mp_media_t *media) { if (!media) return; mp_media_stop(media); mp_kill_thread(media); mp_decode_free(&media->v); mp_decode_free(&media->a); avformat_close_input(&media->fmt); pthread_mutex_destroy(&media->mutex); os_sem_destroy(media->sem); sws_freeContext(media->swscale); av_freep(&media->scale_pic[0]); bfree(media->path); bfree(media->format_name); memset(media, 0, sizeof(*media)); pthread_mutex_init_value(&media->mutex); }