static void stop_video(void) { struct obs_core_video *video = &obs->video; void *thread_retval; if (video->video) { video_output_stop(video->video); if (video->thread_initialized) { pthread_join(video->video_thread, &thread_retval); video->thread_initialized = false; } } }
int video_stop (dtvideo_context_t * vctx) { if (vctx->video_status > VIDEO_STATUS_INITED) { dtvideo_output_t *video_out = &vctx->video_out; video_output_stop (video_out); //dtvideo_filter_t *video_filter=&vctx->video_filt; //video_filter_stop(video_filter); dtvideo_decoder_t *video_decoder = &vctx->video_dec; video_decoder_stop (video_decoder); vctx->video_status = VIDEO_STATUS_STOPPED; } return 0; }
void video_output_close(video_t video) { if (!video) return; video_output_stop(video); for (size_t i = 0; i < video->inputs.num; i++) video_input_free(&video->inputs.array[i]); da_free(video->inputs); event_destroy(video->update_event); event_destroy(video->stop_event); pthread_mutex_destroy(&video->data_mutex); pthread_mutex_destroy(&video->input_mutex); bfree(video); }
static void obs_free_video() { struct obs_video *video = &obs->video; if (video->video) { void *thread_retval; video_output_stop(video->video); if (video->thread_initialized) { pthread_join(video->video_thread, &thread_retval); video->thread_initialized = false; } video_output_close(video->video); video->video = NULL; } }
void video_output_close(video_t video) { if (!video) return; video_output_stop(video); if (video->output) { media_remove_output(video->media, video->output); media_output_destroy(video->output); } event_destroy(&video->update_event); event_destroy(&video->stop_event); pthread_mutex_destroy(&video->data_mutex); bfree(video); }
void video_output_close(video_t *video) { if (!video) return; video_output_stop(video); for (size_t i = 0; i < video->inputs.num; i++) video_input_free(&video->inputs.array[i]); da_free(video->inputs); for (size_t i = 0; i < video->info.cache_size; i++) video_frame_free((struct video_frame*)&video->cache[i]); os_sem_destroy(video->update_semaphore); pthread_mutex_destroy(&video->data_mutex); pthread_mutex_destroy(&video->input_mutex); bfree(video); }