[vlc-commits] vout: add vout_Stop()
Rémi Denis-Courmont
git at videolan.org
Fri Jan 18 22:13:03 CET 2019
vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Fri Jan 18 22:49:35 2019 +0200| [a46a9cbf5a75a7553de76e9e6e0e8fa19f277984] | committer: Rémi Denis-Courmont
vout: add vout_Stop()
This stops a vout but leaves it for reuse. So far, this was handled
by vout_Request() with a NULL format.
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=a46a9cbf5a75a7553de76e9e6e0e8fa19f277984
---
src/video_output/video_output.c | 16 ++++++++++++++++
src/video_output/vout_internal.h | 7 +++++++
2 files changed, 23 insertions(+)
diff --git a/src/video_output/video_output.c b/src/video_output/video_output.c
index 853ed00619..d83c828216 100644
--- a/src/video_output/video_output.c
+++ b/src/video_output/video_output.c
@@ -259,6 +259,22 @@ vout_thread_t *vout_Request(vlc_object_t *object,
return VoutCreate(object, cfg, input);
}
+void vout_Stop(vout_thread_t *vout)
+{
+ if (vout->p->input != NULL) {
+ spu_Detach(vout->p->spu);
+ vout->p->input = NULL;
+ }
+
+ vout_control_cmd_t cmd;
+ vout_configuration_t cfg = { .fmt = NULL };
+
+ vout_control_cmd_Init(&cmd, VOUT_CONTROL_REINIT);
+ cmd.cfg = &cfg;
+ vout_control_Push(&vout->p->control, &cmd);
+ vout_control_WaitEmpty(&vout->p->control);
+}
+
void vout_Close(vout_thread_t *vout)
{
assert(vout);
diff --git a/src/video_output/vout_internal.h b/src/video_output/vout_internal.h
index 21ae108c6c..991fc695a9 100644
--- a/src/video_output/vout_internal.h
+++ b/src/video_output/vout_internal.h
@@ -166,6 +166,13 @@ vout_thread_t * vout_Request( vlc_object_t *object, const vout_configuration_t *
#define vout_Request(a,b,c) vout_Request(VLC_OBJECT(a),b,c)
/**
+ * Disables a vout.
+ *
+ * This disables a vout, but keeps it for later reuse.
+ */
+void vout_Stop(vout_thread_t *);
+
+/**
* Destroys a vout.
*
* This function closes and releases a vout created by vout_Request().
More information about the vlc-commits
mailing list