diff --git a/src/Lib/Utils.hh b/src/Lib/Utils.hh
index 7e75014ad3010e694ee5170830f9ba958a8014b9..b8dee2bd794a8417373f0369188cc15a1126b179 100644
--- a/src/Lib/Utils.hh
+++ b/src/Lib/Utils.hh
@@ -1,6 +1,10 @@
 #ifndef VIVY_UTILS_H
 #define VIVY_UTILS_H
 
+#ifndef __cplusplus
+#error "This is a C++ header"
+#endif
+
 #include <QString>
 #include <QFileInfo>
 #include <QStringList>
diff --git a/src/UI/DocumentViews/MpvContainer.hh b/src/UI/DocumentViews/MpvContainer.hh
new file mode 100644
index 0000000000000000000000000000000000000000..063670c93782b45c2050a38c1623eb14b1483eee
--- /dev/null
+++ b/src/UI/DocumentViews/MpvContainer.hh
@@ -0,0 +1,27 @@
+#pragma once
+
+#ifndef __cplusplus
+#error "This is a C++ header"
+#endif
+
+#include "../../Lib/Utils.hh"
+
+struct mpv_handle;
+
+namespace Vivy
+{
+class MpvContainer : public QWidget {
+    VIVY_UNMOVABLE_OBJECT(MpvContainer)
+
+private:
+    quint64 wid{ 0 };
+    mpv_handle *mpv{ nullptr };
+
+public:
+    explicit MpvContainer() noexcept;
+    ~MpvContainer() noexcept override;
+
+signals:
+    void mpvEvent();
+};
+}