This is an autogenerated patch header for a single-debian-patch file. The
delta against upstream is either kept as a single patch, or maintained
in some VCS, and exported as a single patch instead of more manageable
atomic patches.

--- webcamoid-9.0.0.orig/README.md
+++ webcamoid-9.0.0/README.md
@@ -2,7 +2,7 @@
 
 [Webcamoid](https://webcamoid.github.io/) is a full featured and multiplatform webcam suite.
 
-<a target="_blank" href="https://webcamoid.github.io/"><img src="https://webcamoid.github.io/theme/images/screenshots/Main.png" style="height: 240px;" /></a>
+<a target="_blank" href="https://webcamoid.github.io/"><img src="https://webcamoid.github.io/theme/images/screenshots/Main.webp" style="height: 240px;" /></a>
 
 ## Features ##
 
--- webcamoid-9.0.0.orig/StandAlone/DefaultTheme.qrc
+++ webcamoid-9.0.0/StandAlone/DefaultTheme.qrc
@@ -14,6 +14,7 @@
         <file>share/themes/WebcamoidTheme/Drawer.qml</file>
         <file>share/themes/WebcamoidTheme/Frame.qml</file>
         <file>share/themes/WebcamoidTheme/GroupBox.qml</file>
+        <file>share/themes/WebcamoidTheme/HorizontalHeaderView.qml</file>
         <file>share/themes/WebcamoidTheme/ItemDelegate.qml</file>
         <file>share/themes/WebcamoidTheme/Label.qml</file>
         <file>share/themes/WebcamoidTheme/Menu.qml</file>
@@ -35,6 +36,7 @@
         <file>share/themes/WebcamoidTheme/ScrollView.qml</file>
         <file>share/themes/WebcamoidTheme/Slider.qml</file>
         <file>share/themes/WebcamoidTheme/SpinBox.qml</file>
+        <file>share/themes/WebcamoidTheme/SplitView.qml</file>
         <file>share/themes/WebcamoidTheme/StackView.qml</file>
         <file>share/themes/WebcamoidTheme/SwipeDelegate.qml</file>
         <file>share/themes/WebcamoidTheme/SwipeView.qml</file>
@@ -49,6 +51,7 @@
         <file>share/themes/WebcamoidTheme/ToolSeparator.qml</file>
         <file>share/themes/WebcamoidTheme/ToolTip.qml</file>
         <file>share/themes/WebcamoidTheme/Tumbler.qml</file>
+        <file>share/themes/WebcamoidTheme/VerticalHeaderView.qml</file>
         <file>share/themes/WebcamoidTheme/Private/qmldir</file>
         <file>share/themes/WebcamoidTheme/Private/IconLabel.qml</file>
     </qresource>
--- webcamoid-9.0.0.orig/StandAlone/ManPages/CMakeLists.txt
+++ webcamoid-9.0.0/StandAlone/ManPages/CMakeLists.txt
@@ -35,5 +35,5 @@ if (GZIP_TOOL)
                       VERBATIM
                       SOURCES src/webcamoid.1.in)
 
-    install(FILES ${CMAKE_CURRENT_BINARY_DIR}/src/webcamoid.1.gz DESTINATION ${CMAKE_INSTALL_MANDIR})
+    install(FILES ${CMAKE_CURRENT_BINARY_DIR}/src/webcamoid.1.gz DESTINATION ${CMAKE_INSTALL_MANDIR}/man1)
 endif ()
--- webcamoid-9.0.0.orig/StandAlone/share/qml/AboutDialog.qml
+++ webcamoid-9.0.0/StandAlone/share/qml/AboutDialog.qml
@@ -39,7 +39,7 @@ Dialog {
             Layout.fillWidth: true
 
             TabButton {
-                /*: Information of the program, like name, description, vesion,
+                /*: Information of the program, like name, description, version,
                     etc..
                  */
                 text: qsTr("About")
--- webcamoid-9.0.0.orig/StandAlone/share/qml/AudioOutputs.qml
+++ webcamoid-9.0.0/StandAlone/share/qml/AudioOutputs.qml
@@ -63,8 +63,8 @@ ScrollView {
                   devicesList.model.get(index)?
                       devicesList.model.get(index)["description"]:
                       ""
-            anchors.right: parent.right
-            anchors.left: parent.left
+            anchors.right: parent? parent.right: undefined
+            anchors.left: parent? parent.left: undefined
             height: implicitHeight
             highlighted: devicesList.currentItem == this
 
--- webcamoid-9.0.0.orig/StandAlone/share/qml/DialogBox.qml
+++ webcamoid-9.0.0/StandAlone/share/qml/DialogBox.qml
@@ -57,9 +57,9 @@ Rectangle {
         radius: 16
         anchors.bottomMargin: -recDialogBox.markSize * Math.SQRT1_2
         anchors.bottom: recMark.top
-        anchors.top: parent.top
-        anchors.right: parent.right
-        anchors.left: parent.left
+        anchors.top: parent? parent.top: undefined
+        anchors.right: parent? parent.right: undefined
+        anchors.left: parent? parent.left: undefined
         border.width: 4
         border.color: recDialogBox.dialogBorder
 
--- webcamoid-9.0.0.orig/StandAlone/share/qml/OptionList.qml
+++ webcamoid-9.0.0/StandAlone/share/qml/OptionList.qml
@@ -53,8 +53,8 @@ ListView {
               lsvOptionList.textRole?
                   lsvOptionList.model.get(index)[lsvOptionList.textRole]:
                   lsvOptionList.model[index]
-        anchors.right: parent.right
-        anchors.left: parent.left
+        anchors.right: parent? parent.right: undefined
+        anchors.left: parent? parent.left: undefined
         visible: mediaTools.matches(filter, optionValues(index))
         height: visible? implicitHeight: 0
         highlighted: lsvOptionList.currentItem == this
--- webcamoid-9.0.0.orig/StandAlone/share/qml/VideoEffectsList.qml
+++ webcamoid-9.0.0/StandAlone/share/qml/VideoEffectsList.qml
@@ -73,8 +73,8 @@ ScrollView {
                       effectsList.model.get(index)?
                           effectsList.model.get(index)["description"]:
                           ""
-                anchors.right: parent.right
-                anchors.left: parent.left
+                anchors.right: parent? parent.right: undefined
+                anchors.left: parent? parent.left: undefined
                 height: implicitHeight
 
                 onClicked:
--- webcamoid-9.0.0.orig/StandAlone/share/qml/VideoInputAddEdit.qml
+++ webcamoid-9.0.0/StandAlone/share/qml/VideoInputAddEdit.qml
@@ -215,27 +215,7 @@ Dialog {
         title: qsTr("Choose the file to add as source")
         fileMode: LABS.FileDialog.OpenFile
         selectedNameFilter.index: 0
-        nameFilters: [qsTr("All Video Files")
-                      + " (*.3gp *.avi *.flv *.gif *.mkv *.mng  *.mov *.mp4"
-                      + " *.m4v *.mpg *.mpeg *.ogg *.rm *.vob *.webm *.wmv)",
-                      qsTr("3GP Video") + " (*.3gp)",
-                      qsTr("AVI Video") + " (*.avi)",
-                      //: Adobe FLV Flash video
-                      qsTr("Flash Video") + " (*.flv)",
-                      qsTr("Animated GIF") + " (*.gif)",
-                      qsTr("MKV Video") + " (*.mkv)",
-                      qsTr("Animated PNG") + " (*.mng)",
-                      qsTr("QuickTime Video") + " (*.mov)",
-                      qsTr("MP4 Video") + " (*.mp4 *.m4v)",
-                      qsTr("MPEG Video") + " (*.mpg *.mpeg)",
-                      qsTr("Ogg Video") + " (*.ogg)",
-                      //: Don't translate "RealMedia", leave it as is.
-                      qsTr("RealMedia Video") + " (*.rm)",
-                      qsTr("DVD Video") + " (*.vob)",
-                      qsTr("WebM Video") + " (*.webm)",
-                      //: Also known as WMV, is a video file format.
-                      qsTr("Windows Media Video") + " (*.wmv)",
-                      qsTr("All Files") + " (*)"]
+        nameFilters: videoLayer.videoSourceFileFilters
 
         onAccepted: {
             filePath.text = mediaTools.urlToLocalFile(fileDialog.file)
--- webcamoid-9.0.0.orig/StandAlone/share/qml/VideoInputOptions.qml
+++ webcamoid-9.0.0/StandAlone/share/qml/VideoInputOptions.qml
@@ -27,6 +27,7 @@ ScrollView {
     id: view
 
     property string videoInput: ""
+    property int inputType: videoLayer.deviceType(videoInput)
 
     signal openVideoInputAddEditDialog(string videoInput)
     signal videoInputRemoved()
@@ -64,7 +65,8 @@ ScrollView {
                 AkUnit.create(16 * AkTheme.controlScale, "dp").pixels
             Layout.rightMargin:
                 AkUnit.create(16 * AkTheme.controlScale, "dp").pixels
-            visible: videoLayer.deviceType(view.videoInput) == VideoLayer.InputStream
+            visible: view.inputType == VideoLayer.InputStream
+                     || view.inputType == VideoLayer.InputImage
 
             onClicked: view.openVideoInputAddEditDialog(view.videoInput)
         }
@@ -76,7 +78,8 @@ ScrollView {
                 AkUnit.create(16 * AkTheme.controlScale, "dp").pixels
             Layout.rightMargin:
                 AkUnit.create(16 * AkTheme.controlScale, "dp").pixels
-            visible: videoLayer.deviceType(view.videoInput) == VideoLayer.InputStream
+            visible: view.inputType == VideoLayer.InputStream
+                     || view.inputType == VideoLayer.InputImage
 
             onClicked: {
                 videoLayer.removeInterface("itmVideoInputOptions")
--- webcamoid-9.0.0.orig/StandAlone/share/qml/VideoInputs.qml
+++ webcamoid-9.0.0/StandAlone/share/qml/VideoInputs.qml
@@ -113,8 +113,8 @@ ScrollView {
                       devicesList.model.get(index)?
                           devicesList.model.get(index)["description"]:
                           ""
-                anchors.right: parent.right
-                anchors.left: parent.left
+                anchors.right: parent? parent.right: undefined
+                anchors.left: parent? parent.left: undefined
                 height: implicitHeight
                 highlighted: devicesList.currentItem == this
 
--- webcamoid-9.0.0.orig/StandAlone/share/qml/main.qml
+++ webcamoid-9.0.0/StandAlone/share/qml/main.qml
@@ -239,13 +239,16 @@ ApplicationWindow {
             height: AkUnit.create(64 * AkTheme.controlScale, "dp").pixels
             Layout.fillWidth: true
 
+            readonly property real smallButton: AkUnit.create(48 * AkTheme.controlScale, "dp").pixels
+            readonly property real bigButton: AkUnit.create(64 * AkTheme.controlScale, "dp").pixels
+            readonly property real previewSize: AkUnit.create(32 * AkTheme.controlScale, "dp").pixels
             readonly property int animationTime: 200
 
             Image {
                 id: photoPreview
                 source: pathToUrl(recording.lastPhotoPreview)
-                width: AkUnit.create(32 * AkTheme.controlScale, "dp").pixels
-                height: AkUnit.create(32 * AkTheme.controlScale, "dp").pixels
+                width: cameraControls.previewSize
+                height: cameraControls.previewSize
                 sourceSize: Qt.size(width, height)
                 asynchronous: true
                 cache: false
@@ -271,8 +274,8 @@ ApplicationWindow {
             RoundButton {
                 id: photoButton
                 icon.source: "image://icons/photo"
-                width: AkUnit.create(64 * AkTheme.controlScale, "dp").pixels
-                height: AkUnit.create(64 * AkTheme.controlScale, "dp").pixels
+                width: cameraControls.bigButton
+                height: cameraControls.bigButton
                 x: (parent.width - width) / 2
                 y: (parent.height - height) / 2
                 ToolTip.visible: hovered
@@ -320,8 +323,8 @@ ApplicationWindow {
                 icon.source: recording.state == AkElement.ElementStateNull?
                                  "image://icons/video":
                                  "image://icons/record-stop"
-                width: AkUnit.create(48 * AkTheme.controlScale, "dp").pixels
-                height: AkUnit.create(48 * AkTheme.controlScale, "dp").pixels
+                width: cameraControls.smallButton
+                height: cameraControls.smallButton
                 x: parent.width - width
                 y: (parent.height - height) / 2
                 ToolTip.visible: hovered
@@ -382,20 +385,20 @@ ApplicationWindow {
                     }
                     PropertyChanges {
                         target: photoButton
-                        width: AkUnit.create(48 * AkTheme.controlScale, "dp").pixels
-                        height: AkUnit.create(48 * AkTheme.controlScale, "dp").pixels
+                        width: cameraControls.smallButton
+                        height: cameraControls.smallButton
                         x: 0
                     }
                     PropertyChanges {
                         target: videoButton
-                        width: AkUnit.create(64 * AkTheme.controlScale, "dp").pixels
-                        height: AkUnit.create(64 * AkTheme.controlScale, "dp").pixels
+                        width: cameraControls.bigButton
+                        height: cameraControls.bigButton
                         x: (parent.width - width) / 2
                     }
                     PropertyChanges {
                         target: videoPreview
-                        width: AkUnit.create(32 * AkTheme.controlScale, "dp").pixels
-                        height: AkUnit.create(32 * AkTheme.controlScale, "dp").pixels
+                        width: cameraControls.previewSize
+                        height: cameraControls.previewSize
                         visible: true
                     }
                 }
--- webcamoid-9.0.0.orig/StandAlone/share/themes/WebcamoidTheme/ApplicationWindow.qml
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/ApplicationWindow.qml
@@ -19,7 +19,7 @@
 
 import QtQuick 2.12
 import QtQuick.Window 2.12
-import QtQuick.Templates 2.5 as T
+import QtQuick.Templates 2.15 as T
 import Ak 1.0
 
 T.ApplicationWindow {
--- webcamoid-9.0.0.orig/StandAlone/share/themes/WebcamoidTheme/BusyIndicator.qml
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/BusyIndicator.qml
@@ -19,7 +19,7 @@
 
 import QtQuick 2.12
 import QtQuick.Controls 2.5
-import QtQuick.Templates 2.5 as T
+import QtQuick.Templates 2.15 as T
 import Ak 1.0
 
 T.BusyIndicator {
--- webcamoid-9.0.0.orig/StandAlone/share/themes/WebcamoidTheme/Button.qml
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/Button.qml
@@ -19,7 +19,7 @@
 
 import QtQuick 2.12
 import QtQuick.Controls 2.5
-import QtQuick.Templates 2.5 as T
+import QtQuick.Templates 2.15 as T
 import Ak 1.0
 import "Private"
 
--- webcamoid-9.0.0.orig/StandAlone/share/themes/WebcamoidTheme/CheckBox.qml
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/CheckBox.qml
@@ -19,7 +19,7 @@
 
 import QtQuick 2.12
 import QtQuick.Controls 2.5
-import QtQuick.Templates 2.5 as T
+import QtQuick.Templates 2.15 as T
 import Ak 1.0
 import "Private"
 
--- webcamoid-9.0.0.orig/StandAlone/share/themes/WebcamoidTheme/CheckDelegate.qml
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/CheckDelegate.qml
@@ -19,7 +19,7 @@
 
 import QtQuick 2.12
 import QtQuick.Controls 2.5
-import QtQuick.Templates 2.5 as T
+import QtQuick.Templates 2.15 as T
 import Ak 1.0
 import "Private"
 
--- webcamoid-9.0.0.orig/StandAlone/share/themes/WebcamoidTheme/ComboBox.qml
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/ComboBox.qml
@@ -19,7 +19,7 @@
 
 import QtQuick 2.12
 import QtQuick.Controls 2.5
-import QtQuick.Templates 2.5 as T
+import QtQuick.Templates 2.15 as T
 import Ak 1.0
 
 T.ComboBox {
--- webcamoid-9.0.0.orig/StandAlone/share/themes/WebcamoidTheme/DelayButton.qml
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/DelayButton.qml
@@ -19,7 +19,7 @@
 
 import QtQuick 2.12
 import QtQuick.Controls 2.5
-import QtQuick.Templates 2.5 as T
+import QtQuick.Templates 2.15 as T
 import Ak 1.0
 import "Private"
 
--- webcamoid-9.0.0.orig/StandAlone/share/themes/WebcamoidTheme/Dial.qml
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/Dial.qml
@@ -19,7 +19,7 @@
 
 import QtQuick 2.12
 import QtQuick.Controls 2.5
-import QtQuick.Templates 2.5 as T
+import QtQuick.Templates 2.15 as T
 import QtQuick.Shapes 1.12
 import Ak 1.0
 
--- webcamoid-9.0.0.orig/StandAlone/share/themes/WebcamoidTheme/Dialog.qml
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/Dialog.qml
@@ -19,7 +19,7 @@
 
 import QtQuick 2.12
 import QtQuick.Controls 2.5
-import QtQuick.Templates 2.5 as T
+import QtQuick.Templates 2.15 as T
 import Ak 1.0
 
 T.Dialog {
--- webcamoid-9.0.0.orig/StandAlone/share/themes/WebcamoidTheme/DialogButtonBox.qml
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/DialogButtonBox.qml
@@ -19,7 +19,7 @@
 
 import QtQuick 2.12
 import QtQuick.Controls 2.5
-import QtQuick.Templates 2.5 as T
+import QtQuick.Templates 2.15 as T
 import Ak 1.0
 
 T.DialogButtonBox {
--- webcamoid-9.0.0.orig/StandAlone/share/themes/WebcamoidTheme/Drawer.qml
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/Drawer.qml
@@ -19,7 +19,7 @@
 
 import QtQuick 2.12
 import QtQuick.Controls 2.5
-import QtQuick.Templates 2.5 as T
+import QtQuick.Templates 2.15 as T
 import Ak 1.0
 
 T.Drawer {
--- webcamoid-9.0.0.orig/StandAlone/share/themes/WebcamoidTheme/Frame.qml
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/Frame.qml
@@ -19,7 +19,7 @@
 
 import QtQuick 2.12
 import QtQuick.Controls 2.5
-import QtQuick.Templates 2.5 as T
+import QtQuick.Templates 2.15 as T
 import Ak 1.0
 
 T.Frame {
--- webcamoid-9.0.0.orig/StandAlone/share/themes/WebcamoidTheme/GroupBox.qml
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/GroupBox.qml
@@ -19,7 +19,7 @@
 
 import QtQuick 2.12
 import QtQuick.Controls 2.5
-import QtQuick.Templates 2.5 as T
+import QtQuick.Templates 2.15 as T
 import Ak 1.0
 
 T.GroupBox {
--- /dev/null
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/HorizontalHeaderView.qml
@@ -0,0 +1,51 @@
+/* Webcamoid, webcam capture application.
+ * Copyright (C) 2022  Gonzalo Exequiel Pedone
+ *
+ * Webcamoid is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Webcamoid is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Webcamoid. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Web-Site: http://webcamoid.github.io/
+ */
+
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Templates 2.15 as T
+import Ak 1.0
+
+T.HorizontalHeaderView {
+    id: control
+    implicitWidth: syncView? syncView.width: 0
+    implicitHeight: contentHeight
+
+    delegate: Rectangle {
+        implicitWidth: text.implicitWidth + 2 * cellPadding
+        implicitHeight: Math.max(control.height,
+                                 text.implicitHeight + 2 * cellPadding)
+        color: AkTheme.palette.active.window
+
+        readonly property real cellPadding:
+            AkUnit.create(8 * AkTheme.controlScale, "dp").pixels
+
+        Text {
+            id: text
+            text: model[control.textRole]
+            width: parent.width
+            height: parent.height
+            horizontalAlignment: Text.AlignHCenter
+            verticalAlignment: Text.AlignVCenter
+            color: enabled?
+                       AkTheme.palette.active.text:
+                       AkTheme.palette.disabled.text
+        }
+    }
+}
--- webcamoid-9.0.0.orig/StandAlone/share/themes/WebcamoidTheme/ItemDelegate.qml
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/ItemDelegate.qml
@@ -19,7 +19,7 @@
 
 import QtQuick 2.12
 import QtQuick.Controls 2.5
-import QtQuick.Templates 2.5 as T
+import QtQuick.Templates 2.15 as T
 import Ak 1.0
 import "Private"
 
--- webcamoid-9.0.0.orig/StandAlone/share/themes/WebcamoidTheme/Label.qml
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/Label.qml
@@ -19,7 +19,7 @@
 
 import QtQuick 2.12
 import QtQuick.Controls 2.5
-import QtQuick.Templates 2.5 as T
+import QtQuick.Templates 2.15 as T
 import Ak 1.0
 
 T.Label {
--- webcamoid-9.0.0.orig/StandAlone/share/themes/WebcamoidTheme/Menu.qml
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/Menu.qml
@@ -19,7 +19,7 @@
 
 import QtQuick 2.12
 import QtQuick.Controls 2.5
-import QtQuick.Templates 2.5 as T
+import QtQuick.Templates 2.15 as T
 import QtQuick.Window 2.12
 import Ak 1.0
 
--- webcamoid-9.0.0.orig/StandAlone/share/themes/WebcamoidTheme/MenuBar.qml
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/MenuBar.qml
@@ -19,7 +19,7 @@
 
 import QtQuick 2.12
 import QtQuick.Controls 2.5
-import QtQuick.Templates 2.5 as T
+import QtQuick.Templates 2.15 as T
 import Ak 1.0
 
 T.MenuBar {
--- webcamoid-9.0.0.orig/StandAlone/share/themes/WebcamoidTheme/MenuBarItem.qml
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/MenuBarItem.qml
@@ -19,7 +19,7 @@
 
 import QtQuick 2.12
 import QtQuick.Controls 2.5
-import QtQuick.Templates 2.5 as T
+import QtQuick.Templates 2.15 as T
 import Ak 1.0
 import "Private"
 
--- webcamoid-9.0.0.orig/StandAlone/share/themes/WebcamoidTheme/MenuItem.qml
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/MenuItem.qml
@@ -19,7 +19,7 @@
 
 import QtQuick 2.12
 import QtQuick.Controls 2.5
-import QtQuick.Templates 2.5 as T
+import QtQuick.Templates 2.15 as T
 import Ak 1.0
 import "Private"
 
--- webcamoid-9.0.0.orig/StandAlone/share/themes/WebcamoidTheme/MenuSeparator.qml
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/MenuSeparator.qml
@@ -19,7 +19,7 @@
 
 import QtQuick 2.12
 import QtQuick.Controls 2.5
-import QtQuick.Templates 2.5 as T
+import QtQuick.Templates 2.15 as T
 import Ak 1.0
 
 T.MenuSeparator {
--- webcamoid-9.0.0.orig/StandAlone/share/themes/WebcamoidTheme/Page.qml
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/Page.qml
@@ -19,7 +19,7 @@
 
 import QtQuick 2.12
 import QtQuick.Controls 2.5
-import QtQuick.Templates 2.5 as T
+import QtQuick.Templates 2.15 as T
 import Ak 1.0
 
 T.Page {
--- webcamoid-9.0.0.orig/StandAlone/share/themes/WebcamoidTheme/PageIndicator.qml
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/PageIndicator.qml
@@ -19,7 +19,7 @@
 
 import QtQuick 2.12
 import QtQuick.Controls 2.5
-import QtQuick.Templates 2.5 as T
+import QtQuick.Templates 2.15 as T
 import Ak 1.0
 
 T.PageIndicator {
--- webcamoid-9.0.0.orig/StandAlone/share/themes/WebcamoidTheme/Pane.qml
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/Pane.qml
@@ -19,7 +19,7 @@
 
 import QtQuick 2.12
 import QtQuick.Controls 2.5
-import QtQuick.Templates 2.5 as T
+import QtQuick.Templates 2.15 as T
 import Ak 1.0
 
 T.Pane {
--- webcamoid-9.0.0.orig/StandAlone/share/themes/WebcamoidTheme/Popup.qml
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/Popup.qml
@@ -19,7 +19,7 @@
 
 import QtQuick 2.12
 import QtQuick.Controls 2.5
-import QtQuick.Templates 2.5 as T
+import QtQuick.Templates 2.15 as T
 import Ak 1.0
 
 T.Popup {
--- webcamoid-9.0.0.orig/StandAlone/share/themes/WebcamoidTheme/ProgressBar.qml
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/ProgressBar.qml
@@ -19,7 +19,7 @@
 
 import QtQuick 2.12
 import QtQuick.Controls 2.5
-import QtQuick.Templates 2.5 as T
+import QtQuick.Templates 2.15 as T
 import Ak 1.0
 
 T.ProgressBar {
--- webcamoid-9.0.0.orig/StandAlone/share/themes/WebcamoidTheme/RadioButton.qml
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/RadioButton.qml
@@ -19,7 +19,7 @@
 
 import QtQuick 2.12
 import QtQuick.Controls 2.5
-import QtQuick.Templates 2.5 as T
+import QtQuick.Templates 2.15 as T
 import Ak 1.0
 import "Private"
 
--- webcamoid-9.0.0.orig/StandAlone/share/themes/WebcamoidTheme/RadioDelegate.qml
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/RadioDelegate.qml
@@ -19,7 +19,7 @@
 
 import QtQuick 2.12
 import QtQuick.Controls 2.5
-import QtQuick.Templates 2.5 as T
+import QtQuick.Templates 2.15 as T
 import Ak 1.0
 import "Private"
 
--- webcamoid-9.0.0.orig/StandAlone/share/themes/WebcamoidTheme/RangeSlider.qml
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/RangeSlider.qml
@@ -20,7 +20,7 @@
 import QtQuick 2.12
 import QtQuick.Controls 2.5
 import QtQuick.Layouts 1.3
-import QtQuick.Templates 2.5 as T
+import QtQuick.Templates 2.15 as T
 import Ak 1.0
 
 T.RangeSlider {
--- webcamoid-9.0.0.orig/StandAlone/share/themes/WebcamoidTheme/RoundButton.qml
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/RoundButton.qml
@@ -19,7 +19,7 @@
 
 import QtQuick 2.12
 import QtQuick.Controls 2.5
-import QtQuick.Templates 2.5 as T
+import QtQuick.Templates 2.15 as T
 import Ak 1.0
 import "Private"
 
--- webcamoid-9.0.0.orig/StandAlone/share/themes/WebcamoidTheme/ScrollBar.qml
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/ScrollBar.qml
@@ -19,7 +19,7 @@
 
 import QtQuick 2.12
 import QtQuick.Controls 2.5
-import QtQuick.Templates 2.5 as T
+import QtQuick.Templates 2.15 as T
 import Ak 1.0
 
 T.ScrollBar {
--- webcamoid-9.0.0.orig/StandAlone/share/themes/WebcamoidTheme/ScrollIndicator.qml
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/ScrollIndicator.qml
@@ -19,7 +19,7 @@
 
 import QtQuick 2.12
 import QtQuick.Controls 2.5
-import QtQuick.Templates 2.5 as T
+import QtQuick.Templates 2.15 as T
 import Ak 1.0
 
 T.ScrollIndicator {
--- webcamoid-9.0.0.orig/StandAlone/share/themes/WebcamoidTheme/ScrollView.qml
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/ScrollView.qml
@@ -19,7 +19,7 @@
 
 import QtQuick 2.12
 import QtQuick.Controls 2.5
-import QtQuick.Templates 2.5 as T
+import QtQuick.Templates 2.15 as T
 import Ak 1.0
 
 T.ScrollView {
--- webcamoid-9.0.0.orig/StandAlone/share/themes/WebcamoidTheme/Slider.qml
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/Slider.qml
@@ -20,7 +20,7 @@
 import QtQuick 2.12
 import QtQuick.Controls 2.5
 import QtQuick.Layouts 1.3
-import QtQuick.Templates 2.5 as T
+import QtQuick.Templates 2.15 as T
 import Ak 1.0
 
 T.Slider {
--- webcamoid-9.0.0.orig/StandAlone/share/themes/WebcamoidTheme/SpinBox.qml
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/SpinBox.qml
@@ -19,7 +19,7 @@
 
 import QtQuick 2.12
 import QtQuick.Controls 2.5
-import QtQuick.Templates 2.5 as T
+import QtQuick.Templates 2.15 as T
 import Ak 1.0
 
 T.SpinBox {
--- /dev/null
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/SplitView.qml
@@ -0,0 +1,75 @@
+/* Webcamoid, webcam capture application.
+ * Copyright (C) 2022  Gonzalo Exequiel Pedone
+ *
+ * Webcamoid is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Webcamoid is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Webcamoid. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Web-Site: http://webcamoid.github.io/
+ */
+
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Templates 2.15 as T
+import Ak 1.0
+
+T.SplitView {
+    id: control
+    implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset,
+                            implicitContentWidth + leftPadding + rightPadding)
+    implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset,
+                            implicitContentHeight + topPadding + bottomPadding)
+
+    handle: Rectangle {
+        id: handle
+        implicitWidth: control.orientation === Qt.Horizontal?
+            thickness:
+            control.width
+        implicitHeight: control.orientation === Qt.Horizontal?
+            control.height:
+            thickness
+        color: T.SplitHandle.pressed?
+                    AkTheme.palette.active.light:
+               T.SplitHandle.hovered?
+                    AkTheme.palette.active.mid:
+                    AkTheme.palette.active.dark
+
+        readonly property int thickness:
+            AkUnit.create(4 * AkTheme.controlScale, "dp").pixels
+
+        Rectangle {
+            color: AkTheme.palette.active.highlight
+            width: control.orientation === Qt.Horizontal?
+                thickness:
+                length
+            height: control.orientation === Qt.Horizontal?
+                length:
+                thickness
+            radius: thickness
+            x: (parent.width - width) / 2
+            y: (parent.height - height) / 2
+
+            property int length: parent.T.SplitHandle.pressed?
+                handle.thickness / 2:
+                2 * handle.thickness
+            readonly property int thickness: parent.T.SplitHandle.pressed?
+                handle.thickness / 2:
+                handle.thickness / 4
+
+            Behavior on length {
+                NumberAnimation {
+                    duration: 100
+                }
+            }
+        }
+    }
+}
--- webcamoid-9.0.0.orig/StandAlone/share/themes/WebcamoidTheme/StackView.qml
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/StackView.qml
@@ -19,7 +19,7 @@
 
 import QtQuick 2.12
 import QtQuick.Controls 2.5
-import QtQuick.Templates 2.5 as T
+import QtQuick.Templates 2.15 as T
 
 T.StackView {
     id: control
--- webcamoid-9.0.0.orig/StandAlone/share/themes/WebcamoidTheme/SwipeDelegate.qml
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/SwipeDelegate.qml
@@ -19,7 +19,7 @@
 
 import QtQuick 2.12
 import QtQuick.Controls 2.5
-import QtQuick.Templates 2.5 as T
+import QtQuick.Templates 2.15 as T
 import Ak 1.0
 import "Private"
 
--- webcamoid-9.0.0.orig/StandAlone/share/themes/WebcamoidTheme/SwipeView.qml
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/SwipeView.qml
@@ -19,7 +19,7 @@
 
 import QtQuick 2.12
 import QtQuick.Controls 2.5
-import QtQuick.Templates 2.5 as T
+import QtQuick.Templates 2.15 as T
 
 T.SwipeView {
     id: control
--- webcamoid-9.0.0.orig/StandAlone/share/themes/WebcamoidTheme/Switch.qml
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/Switch.qml
@@ -19,7 +19,7 @@
 
 import QtQuick 2.12
 import QtQuick.Controls 2.5
-import QtQuick.Templates 2.5 as T
+import QtQuick.Templates 2.15 as T
 import Ak 1.0
 import "Private"
 
--- webcamoid-9.0.0.orig/StandAlone/share/themes/WebcamoidTheme/SwitchDelegate.qml
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/SwitchDelegate.qml
@@ -19,7 +19,7 @@
 
 import QtQuick 2.12
 import QtQuick.Controls 2.5
-import QtQuick.Templates 2.5 as T
+import QtQuick.Templates 2.15 as T
 import Ak 1.0
 import "Private"
 
--- webcamoid-9.0.0.orig/StandAlone/share/themes/WebcamoidTheme/TabBar.qml
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/TabBar.qml
@@ -19,7 +19,7 @@
 
 import QtQuick 2.12
 import QtQuick.Controls 2.5
-import QtQuick.Templates 2.5 as T
+import QtQuick.Templates 2.15 as T
 import Ak 1.0
 
 T.TabBar {
--- webcamoid-9.0.0.orig/StandAlone/share/themes/WebcamoidTheme/TabButton.qml
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/TabButton.qml
@@ -19,7 +19,7 @@
 
 import QtQuick 2.12
 import QtQuick.Controls 2.5
-import QtQuick.Templates 2.5 as T
+import QtQuick.Templates 2.15 as T
 import Ak 1.0
 import "Private"
 
--- webcamoid-9.0.0.orig/StandAlone/share/themes/WebcamoidTheme/TextArea.qml
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/TextArea.qml
@@ -19,7 +19,7 @@
 
 import QtQuick 2.12
 import QtQuick.Controls 2.5
-import QtQuick.Templates 2.5 as T
+import QtQuick.Templates 2.15 as T
 import Ak 1.0
 
 T.TextArea {
--- webcamoid-9.0.0.orig/StandAlone/share/themes/WebcamoidTheme/TextField.qml
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/TextField.qml
@@ -19,7 +19,7 @@
 
 import QtQuick 2.12
 import QtQuick.Controls 2.5
-import QtQuick.Templates 2.5 as T
+import QtQuick.Templates 2.15 as T
 import Ak 1.0
 
 T.TextField {
--- webcamoid-9.0.0.orig/StandAlone/share/themes/WebcamoidTheme/ToolBar.qml
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/ToolBar.qml
@@ -19,7 +19,7 @@
 
 import QtQuick 2.12
 import QtQuick.Controls 2.5
-import QtQuick.Templates 2.5 as T
+import QtQuick.Templates 2.15 as T
 import Ak 1.0
 
 T.ToolBar {
--- webcamoid-9.0.0.orig/StandAlone/share/themes/WebcamoidTheme/ToolButton.qml
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/ToolButton.qml
@@ -19,7 +19,7 @@
 
 import QtQuick 2.12
 import QtQuick.Controls 2.5
-import QtQuick.Templates 2.5 as T
+import QtQuick.Templates 2.15 as T
 import Ak 1.0
 import "Private"
 
--- webcamoid-9.0.0.orig/StandAlone/share/themes/WebcamoidTheme/ToolSeparator.qml
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/ToolSeparator.qml
@@ -19,7 +19,7 @@
 
 import QtQuick 2.12
 import QtQuick.Controls 2.5
-import QtQuick.Templates 2.5 as T
+import QtQuick.Templates 2.15 as T
 import Ak 1.0
 
 T.ToolSeparator {
--- webcamoid-9.0.0.orig/StandAlone/share/themes/WebcamoidTheme/ToolTip.qml
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/ToolTip.qml
@@ -19,7 +19,7 @@
 
 import QtQuick 2.12
 import QtQuick.Controls 2.5
-import QtQuick.Templates 2.5 as T
+import QtQuick.Templates 2.15 as T
 import Ak 1.0
 
 T.ToolTip {
--- webcamoid-9.0.0.orig/StandAlone/share/themes/WebcamoidTheme/Tumbler.qml
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/Tumbler.qml
@@ -19,7 +19,7 @@
 
 import QtQuick 2.12
 import QtQuick.Controls 2.5
-import QtQuick.Templates 2.5 as T
+import QtQuick.Templates 2.15 as T
 import Ak 1.0
 
 T.Tumbler {
--- /dev/null
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/VerticalHeaderView.qml
@@ -0,0 +1,51 @@
+/* Webcamoid, webcam capture application.
+ * Copyright (C) 2022  Gonzalo Exequiel Pedone
+ *
+ * Webcamoid is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Webcamoid is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Webcamoid. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Web-Site: http://webcamoid.github.io/
+ */
+
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Templates 2.15 as T
+import Ak 1.0
+
+T.VerticalHeaderView {
+    id: control
+    implicitWidth: contentWidth
+    implicitHeight: syncView? syncView.height: 0
+
+    delegate: Rectangle {
+        implicitWidth: Math.max(control.width,
+                                text.implicitWidth + 2 * cellPadding)
+        implicitHeight: text.implicitHeight + 2 * cellPadding
+        color: control.Material.backgroundColor
+
+        readonly property real cellPadding:
+            AkUnit.create(8 * AkTheme.controlScale, "dp").pixels
+
+        Text {
+            id: text
+            text: model[control.textRole]
+            width: parent.width
+            height: parent.height
+            horizontalAlignment: Text.AlignHCenter
+            verticalAlignment: Text.AlignVCenter
+            color: enabled?
+                       AkTheme.palette.active.text:
+                       AkTheme.palette.disabled.text
+        }
+    }
+}
--- webcamoid-9.0.0.orig/StandAlone/share/themes/WebcamoidTheme/qmldir
+++ webcamoid-9.0.0/StandAlone/share/themes/WebcamoidTheme/qmldir
@@ -11,6 +11,7 @@ DialogButtonBox 1.0 DialogButtonBox.qml
 Drawer 1.0 Drawer.qml
 Frame 1.0 Frame.qml
 GroupBox 1.0 GroupBox.qml
+HorizontalHeaderView 1.0 HorizontalHeaderView.qml
 ItemDelegate 1.0 ItemDelegate.qml
 Label 1.0 Label.qml
 Menu 1.0 Menu.qml
@@ -32,6 +33,7 @@ ScrollIndicator 1.0 ScrollIndicator.qml
 ScrollView 1.0 ScrollView.qml
 Slider 1.0 Slider.qml
 SpinBox 1.0 SpinBox.qml
+SplitView 1.0 SplitView.qml
 StackView 1.0 StackView.qml
 SwipeDelegate 1.0 SwipeDelegate.qml
 SwipeView 1.0 SwipeView.qml
@@ -46,3 +48,4 @@ ToolButton 1.0 ToolButton.qml
 ToolSeparator 1.0 ToolSeparator.qml
 ToolTip 1.0 ToolTip.qml
 Tumbler 1.0 Tumbler.qml
+VerticalHeaderView 1.0 VerticalHeaderView.qml
--- webcamoid-9.0.0.orig/StandAlone/share/ts/ca.ts
+++ webcamoid-9.0.0/StandAlone/share/ts/ca.ts
@@ -45,7 +45,7 @@
     <message>
         <location filename="../qml/AboutDialog.qml" line="45"/>
         <source>About</source>
-        <extracomment>Information of the program, like name, description, vesion, etc..</extracomment>
+        <extracomment>Information of the program, like name, description, version, etc..</extracomment>
         <translation type="unfinished">Quant a</translation>
     </message>
     <message>
@@ -359,7 +359,7 @@
 <context>
     <name>PipewireScreenDev</name>
     <message>
-        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="217"/>
+        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="216"/>
         <source>PipeWire Screen</source>
         <translation type="unfinished"></translation>
     </message>
@@ -455,7 +455,7 @@
 <context>
     <name>Recording</name>
     <message>
-        <location filename="../../src/recording.cpp" line="372"/>
+        <location filename="../../src/recording.cpp" line="373"/>
         <source>%1/Video %2.%3</source>
         <translation type="unfinished"></translation>
     </message>
@@ -807,126 +807,216 @@
         <source>Choose the file to add as source</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>VideoInputOptions</name>
+    <message>
+        <location filename="../qml/VideoInputOptions.qml" line="61"/>
+        <source>Edit</source>
+        <translation type="unfinished">Edita</translation>
+    </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="218"/>
-        <source>All Video Files</source>
+        <location filename="../qml/VideoInputOptions.qml" line="74"/>
+        <source>Remove</source>
+        <translation type="unfinished">Suprimeix</translation>
+    </message>
+</context>
+<context>
+    <name>VideoInputs</name>
+    <message>
+        <location filename="../qml/VideoInputs.qml" line="56"/>
+        <source>Add source</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="221"/>
+        <location filename="../qml/VideoInputs.qml" line="67"/>
+        <source>No webcams found</source>
+        <translation type="unfinished">No s’ha trobat cap càmera</translation>
+    </message>
+</context>
+<context>
+    <name>VideoLayer</name>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="137"/>
         <source>3GP Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="222"/>
+        <location filename="../../src/videolayer.cpp" line="138"/>
         <source>AVI Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="224"/>
+        <location filename="../../src/videolayer.cpp" line="139"/>
+        <source>Windows Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="140"/>
+        <source>Microsoft Windows Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="142"/>
         <source>Flash Video</source>
         <extracomment>Adobe FLV Flash video</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="225"/>
+        <location filename="../../src/videolayer.cpp" line="143"/>
         <source>Animated GIF</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="226"/>
+        <location filename="../../src/videolayer.cpp" line="144"/>
+        <source>Graphic Interchange Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="145"/>
+        <source>Apple Icon Image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="146"/>
+        <source>Microsoft Windows Icon</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="147"/>
+        <source>Joint Photographic Experts Group</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="148"/>
         <source>MKV Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="227"/>
+        <location filename="../../src/videolayer.cpp" line="149"/>
         <source>Animated PNG</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="228"/>
+        <location filename="../../src/videolayer.cpp" line="150"/>
+        <source>Multiple-image Network Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="151"/>
         <source>QuickTime Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="229"/>
+        <location filename="../../src/videolayer.cpp" line="152"/>
         <source>MP4 Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="230"/>
+        <location filename="../../src/videolayer.cpp" line="153"/>
         <source>MPEG Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="231"/>
+        <location filename="../../src/videolayer.cpp" line="154"/>
         <source>Ogg Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="233"/>
+        <location filename="../../src/videolayer.cpp" line="155"/>
+        <source>Portable Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="156"/>
+        <source>Portable Graymap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="157"/>
+        <source>Portable Network Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="158"/>
+        <source>Portable Pixmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="160"/>
         <source>RealMedia Video</source>
         <extracomment>Don&apos;t translate &quot;RealMedia&quot;, leave it as is.</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="234"/>
+        <location filename="../../src/videolayer.cpp" line="161"/>
+        <source>Scalable Vector Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="162"/>
+        <source>Truevision TGA</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="163"/>
+        <source>Tagged Image File Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="164"/>
         <source>DVD Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="235"/>
+        <location filename="../../src/videolayer.cpp" line="165"/>
+        <source>Wireless Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="166"/>
         <source>WebM Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="237"/>
-        <source>Windows Media Video</source>
-        <extracomment>Also known as WMV, is a video file format.</extracomment>
+        <location filename="../../src/videolayer.cpp" line="167"/>
+        <source>WebP</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="238"/>
-        <source>All Files</source>
+        <location filename="../../src/videolayer.cpp" line="169"/>
+        <source>Windows Media Video</source>
+        <extracomment>Also known as WMV, is a video file format.</extracomment>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoInputOptions</name>
     <message>
-        <location filename="../qml/VideoInputOptions.qml" line="60"/>
-        <source>Edit</source>
-        <translation type="unfinished">Edita</translation>
+        <location filename="../../src/videolayer.cpp" line="170"/>
+        <source>X11 Bitmap</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputOptions.qml" line="72"/>
-        <source>Remove</source>
-        <translation type="unfinished">Suprimeix</translation>
+        <location filename="../../src/videolayer.cpp" line="171"/>
+        <source>X11 Pixmap</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoInputs</name>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="56"/>
-        <source>Add source</source>
+        <location filename="../../src/videolayer.cpp" line="211"/>
+        <source>All Image and Video Files</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="67"/>
-        <source>No webcams found</source>
-        <translation type="unfinished">No s’ha trobat cap càmera</translation>
+        <location filename="../../src/videolayer.cpp" line="246"/>
+        <source>All Files</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoLayer</name>
     <message>
-        <location filename="../../src/videolayer.cpp" line="261"/>
+        <location filename="../../src/videolayer.cpp" line="388"/>
         <source>No Output</source>
         <extracomment>Disable video output, don&apos;t send the video to the output device.</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/videolayer.cpp" line="593"/>
+        <location filename="../../src/videolayer.cpp" line="723"/>
         <source>Virtual Camera</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1633,6 +1723,7 @@
     </message>
     <message>
         <location filename="../../../libAvKys/Plugins/DesktopCapture/share/qml/main.qml" line="48"/>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="64"/>
         <source>Frame rate</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2642,7 +2733,7 @@ background blur or image below.</source>
         <translation type="unfinished">%1 segons</translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="279"/>
+        <location filename="../qml/main.qml" line="282"/>
         <source>Take a photo</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2657,7 +2748,7 @@ background blur or image below.</source>
         <translation type="unfinished">Compilació diària</translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="328"/>
+        <location filename="../qml/main.qml" line="331"/>
         <source>Record video</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2825,5 +2916,10 @@ duration (seconds)</source>
         <source>Luminance</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="47"/>
+        <source>Force frame rate</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- webcamoid-9.0.0.orig/StandAlone/share/ts/de.ts
+++ webcamoid-9.0.0/StandAlone/share/ts/de.ts
@@ -45,7 +45,7 @@
     <message>
         <location filename="../qml/AboutDialog.qml" line="45"/>
         <source>About</source>
-        <extracomment>Information of the program, like name, description, vesion, etc..</extracomment>
+        <extracomment>Information of the program, like name, description, version, etc..</extracomment>
         <translation type="unfinished">Über</translation>
     </message>
     <message>
@@ -359,7 +359,7 @@
 <context>
     <name>PipewireScreenDev</name>
     <message>
-        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="217"/>
+        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="216"/>
         <source>PipeWire Screen</source>
         <translation type="unfinished"></translation>
     </message>
@@ -455,7 +455,7 @@
 <context>
     <name>Recording</name>
     <message>
-        <location filename="../../src/recording.cpp" line="372"/>
+        <location filename="../../src/recording.cpp" line="373"/>
         <source>%1/Video %2.%3</source>
         <translation>%1/Video %2.%3</translation>
     </message>
@@ -807,126 +807,216 @@
         <source>Choose the file to add as source</source>
         <translation>Datei auswählen, die als Quelle hinzugefügt werden soll</translation>
     </message>
+</context>
+<context>
+    <name>VideoInputOptions</name>
+    <message>
+        <location filename="../qml/VideoInputOptions.qml" line="61"/>
+        <source>Edit</source>
+        <translation>Bearbeiten</translation>
+    </message>
+    <message>
+        <location filename="../qml/VideoInputOptions.qml" line="74"/>
+        <source>Remove</source>
+        <translation>Entfernen</translation>
+    </message>
+</context>
+<context>
+    <name>VideoInputs</name>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="218"/>
-        <source>All Video Files</source>
-        <translation>Alle Videodateien</translation>
+        <location filename="../qml/VideoInputs.qml" line="56"/>
+        <source>Add source</source>
+        <translation>Quelle hinzufügen</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="221"/>
+        <location filename="../qml/VideoInputs.qml" line="67"/>
+        <source>No webcams found</source>
+        <translation>Keine Webcams gefunden</translation>
+    </message>
+</context>
+<context>
+    <name>VideoLayer</name>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="137"/>
         <source>3GP Video</source>
-        <translation>3GP-Video</translation>
+        <translation type="unfinished">3GP-Video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="222"/>
+        <location filename="../../src/videolayer.cpp" line="138"/>
         <source>AVI Video</source>
-        <translation>AVI-Video</translation>
+        <translation type="unfinished">AVI-Video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="224"/>
+        <location filename="../../src/videolayer.cpp" line="139"/>
+        <source>Windows Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="140"/>
+        <source>Microsoft Windows Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="142"/>
         <source>Flash Video</source>
         <extracomment>Adobe FLV Flash video</extracomment>
-        <translation>Flash-Video</translation>
+        <translation type="unfinished">Flash-Video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="225"/>
+        <location filename="../../src/videolayer.cpp" line="143"/>
         <source>Animated GIF</source>
-        <translation>Animiertes GIF</translation>
+        <translation type="unfinished">Animiertes GIF</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="226"/>
+        <location filename="../../src/videolayer.cpp" line="144"/>
+        <source>Graphic Interchange Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="145"/>
+        <source>Apple Icon Image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="146"/>
+        <source>Microsoft Windows Icon</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="147"/>
+        <source>Joint Photographic Experts Group</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="148"/>
         <source>MKV Video</source>
-        <translation>MKV-Video</translation>
+        <translation type="unfinished">MKV-Video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="227"/>
+        <location filename="../../src/videolayer.cpp" line="149"/>
         <source>Animated PNG</source>
-        <translation>Animiertes PNG</translation>
+        <translation type="unfinished">Animiertes PNG</translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="150"/>
+        <source>Multiple-image Network Graphics</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="228"/>
+        <location filename="../../src/videolayer.cpp" line="151"/>
         <source>QuickTime Video</source>
-        <translation>QuickTime-Video</translation>
+        <translation type="unfinished">QuickTime-Video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="229"/>
+        <location filename="../../src/videolayer.cpp" line="152"/>
         <source>MP4 Video</source>
-        <translation>MP4-Video</translation>
+        <translation type="unfinished">MP4-Video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="230"/>
+        <location filename="../../src/videolayer.cpp" line="153"/>
         <source>MPEG Video</source>
-        <translation>MPEG-Video</translation>
+        <translation type="unfinished">MPEG-Video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="231"/>
+        <location filename="../../src/videolayer.cpp" line="154"/>
         <source>Ogg Video</source>
-        <translation>Ogg-Video</translation>
+        <translation type="unfinished">Ogg-Video</translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="155"/>
+        <source>Portable Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="156"/>
+        <source>Portable Graymap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="157"/>
+        <source>Portable Network Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="158"/>
+        <source>Portable Pixmap</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="233"/>
+        <location filename="../../src/videolayer.cpp" line="160"/>
         <source>RealMedia Video</source>
         <extracomment>Don&apos;t translate &quot;RealMedia&quot;, leave it as is.</extracomment>
-        <translation>RealMedia-Video</translation>
+        <translation type="unfinished">RealMedia-Video</translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="161"/>
+        <source>Scalable Vector Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="162"/>
+        <source>Truevision TGA</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="234"/>
+        <location filename="../../src/videolayer.cpp" line="163"/>
+        <source>Tagged Image File Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="164"/>
         <source>DVD Video</source>
-        <translation>DVD-Video</translation>
+        <translation type="unfinished">DVD-Video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="235"/>
+        <location filename="../../src/videolayer.cpp" line="165"/>
+        <source>Wireless Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="166"/>
         <source>WebM Video</source>
-        <translation>WebM-Video</translation>
+        <translation type="unfinished">WebM-Video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="237"/>
+        <location filename="../../src/videolayer.cpp" line="167"/>
+        <source>WebP</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="169"/>
         <source>Windows Media Video</source>
         <extracomment>Also known as WMV, is a video file format.</extracomment>
-        <translation>Windows Media-Video</translation>
+        <translation type="unfinished">Windows Media-Video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="238"/>
-        <source>All Files</source>
-        <translation>Alle Dateien</translation>
-    </message>
-</context>
-<context>
-    <name>VideoInputOptions</name>
-    <message>
-        <location filename="../qml/VideoInputOptions.qml" line="60"/>
-        <source>Edit</source>
-        <translation>Bearbeiten</translation>
+        <location filename="../../src/videolayer.cpp" line="170"/>
+        <source>X11 Bitmap</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputOptions.qml" line="72"/>
-        <source>Remove</source>
-        <translation>Entfernen</translation>
+        <location filename="../../src/videolayer.cpp" line="171"/>
+        <source>X11 Pixmap</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoInputs</name>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="56"/>
-        <source>Add source</source>
-        <translation>Quelle hinzufügen</translation>
+        <location filename="../../src/videolayer.cpp" line="211"/>
+        <source>All Image and Video Files</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="67"/>
-        <source>No webcams found</source>
-        <translation>Keine Webcams gefunden</translation>
+        <location filename="../../src/videolayer.cpp" line="246"/>
+        <source>All Files</source>
+        <translation type="unfinished">Alle Dateien</translation>
     </message>
-</context>
-<context>
-    <name>VideoLayer</name>
     <message>
-        <location filename="../../src/videolayer.cpp" line="261"/>
+        <location filename="../../src/videolayer.cpp" line="388"/>
         <source>No Output</source>
         <extracomment>Disable video output, don&apos;t send the video to the output device.</extracomment>
         <translation>Keine Ausgabe</translation>
     </message>
     <message>
-        <location filename="../../src/videolayer.cpp" line="593"/>
+        <location filename="../../src/videolayer.cpp" line="723"/>
         <source>Virtual Camera</source>
         <translation>Virtuelle Kamera</translation>
     </message>
@@ -1633,6 +1723,7 @@
     </message>
     <message>
         <location filename="../../../libAvKys/Plugins/DesktopCapture/share/qml/main.qml" line="48"/>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="64"/>
         <source>Frame rate</source>
         <translation>Bildwiederholrate</translation>
     </message>
@@ -2642,7 +2733,7 @@ background blur or image below.</source>
         <translation>%1 Sekunden</translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="279"/>
+        <location filename="../qml/main.qml" line="282"/>
         <source>Take a photo</source>
         <translation>Bild aufnehmen</translation>
     </message>
@@ -2657,7 +2748,7 @@ background blur or image below.</source>
         <translation type="unfinished">Täglicher Build</translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="328"/>
+        <location filename="../qml/main.qml" line="331"/>
         <source>Record video</source>
         <translation>Videoaufnahme</translation>
     </message>
@@ -2825,5 +2916,10 @@ duration (seconds)</source>
         <source>Luminance</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="47"/>
+        <source>Force frame rate</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- webcamoid-9.0.0.orig/StandAlone/share/ts/el.ts
+++ webcamoid-9.0.0/StandAlone/share/ts/el.ts
@@ -45,7 +45,7 @@
     <message>
         <location filename="../qml/AboutDialog.qml" line="45"/>
         <source>About</source>
-        <extracomment>Information of the program, like name, description, vesion, etc..</extracomment>
+        <extracomment>Information of the program, like name, description, version, etc..</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
@@ -359,7 +359,7 @@
 <context>
     <name>PipewireScreenDev</name>
     <message>
-        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="217"/>
+        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="216"/>
         <source>PipeWire Screen</source>
         <translation type="unfinished"></translation>
     </message>
@@ -455,7 +455,7 @@
 <context>
     <name>Recording</name>
     <message>
-        <location filename="../../src/recording.cpp" line="372"/>
+        <location filename="../../src/recording.cpp" line="373"/>
         <source>%1/Video %2.%3</source>
         <translation type="unfinished"></translation>
     </message>
@@ -807,126 +807,216 @@
         <source>Choose the file to add as source</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>VideoInputOptions</name>
+    <message>
+        <location filename="../qml/VideoInputOptions.qml" line="61"/>
+        <source>Edit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qml/VideoInputOptions.qml" line="74"/>
+        <source>Remove</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>VideoInputs</name>
+    <message>
+        <location filename="../qml/VideoInputs.qml" line="56"/>
+        <source>Add source</source>
+        <translation type="unfinished"></translation>
+    </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="218"/>
-        <source>All Video Files</source>
+        <location filename="../qml/VideoInputs.qml" line="67"/>
+        <source>No webcams found</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>VideoLayer</name>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="221"/>
+        <location filename="../../src/videolayer.cpp" line="137"/>
         <source>3GP Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="222"/>
+        <location filename="../../src/videolayer.cpp" line="138"/>
         <source>AVI Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="224"/>
+        <location filename="../../src/videolayer.cpp" line="139"/>
+        <source>Windows Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="140"/>
+        <source>Microsoft Windows Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="142"/>
         <source>Flash Video</source>
         <extracomment>Adobe FLV Flash video</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="225"/>
+        <location filename="../../src/videolayer.cpp" line="143"/>
         <source>Animated GIF</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="226"/>
+        <location filename="../../src/videolayer.cpp" line="144"/>
+        <source>Graphic Interchange Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="145"/>
+        <source>Apple Icon Image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="146"/>
+        <source>Microsoft Windows Icon</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="147"/>
+        <source>Joint Photographic Experts Group</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="148"/>
         <source>MKV Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="227"/>
+        <location filename="../../src/videolayer.cpp" line="149"/>
         <source>Animated PNG</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="228"/>
+        <location filename="../../src/videolayer.cpp" line="150"/>
+        <source>Multiple-image Network Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="151"/>
         <source>QuickTime Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="229"/>
+        <location filename="../../src/videolayer.cpp" line="152"/>
         <source>MP4 Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="230"/>
+        <location filename="../../src/videolayer.cpp" line="153"/>
         <source>MPEG Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="231"/>
+        <location filename="../../src/videolayer.cpp" line="154"/>
         <source>Ogg Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="233"/>
+        <location filename="../../src/videolayer.cpp" line="155"/>
+        <source>Portable Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="156"/>
+        <source>Portable Graymap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="157"/>
+        <source>Portable Network Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="158"/>
+        <source>Portable Pixmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="160"/>
         <source>RealMedia Video</source>
         <extracomment>Don&apos;t translate &quot;RealMedia&quot;, leave it as is.</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="234"/>
+        <location filename="../../src/videolayer.cpp" line="161"/>
+        <source>Scalable Vector Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="162"/>
+        <source>Truevision TGA</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="163"/>
+        <source>Tagged Image File Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="164"/>
         <source>DVD Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="235"/>
+        <location filename="../../src/videolayer.cpp" line="165"/>
+        <source>Wireless Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="166"/>
         <source>WebM Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="237"/>
-        <source>Windows Media Video</source>
-        <extracomment>Also known as WMV, is a video file format.</extracomment>
+        <location filename="../../src/videolayer.cpp" line="167"/>
+        <source>WebP</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="238"/>
-        <source>All Files</source>
+        <location filename="../../src/videolayer.cpp" line="169"/>
+        <source>Windows Media Video</source>
+        <extracomment>Also known as WMV, is a video file format.</extracomment>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoInputOptions</name>
     <message>
-        <location filename="../qml/VideoInputOptions.qml" line="60"/>
-        <source>Edit</source>
+        <location filename="../../src/videolayer.cpp" line="170"/>
+        <source>X11 Bitmap</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputOptions.qml" line="72"/>
-        <source>Remove</source>
+        <location filename="../../src/videolayer.cpp" line="171"/>
+        <source>X11 Pixmap</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoInputs</name>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="56"/>
-        <source>Add source</source>
+        <location filename="../../src/videolayer.cpp" line="211"/>
+        <source>All Image and Video Files</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="67"/>
-        <source>No webcams found</source>
+        <location filename="../../src/videolayer.cpp" line="246"/>
+        <source>All Files</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoLayer</name>
     <message>
-        <location filename="../../src/videolayer.cpp" line="261"/>
+        <location filename="../../src/videolayer.cpp" line="388"/>
         <source>No Output</source>
         <extracomment>Disable video output, don&apos;t send the video to the output device.</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/videolayer.cpp" line="593"/>
+        <location filename="../../src/videolayer.cpp" line="723"/>
         <source>Virtual Camera</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1633,6 +1723,7 @@
     </message>
     <message>
         <location filename="../../../libAvKys/Plugins/DesktopCapture/share/qml/main.qml" line="48"/>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="64"/>
         <source>Frame rate</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2642,7 +2733,7 @@ background blur or image below.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="279"/>
+        <location filename="../qml/main.qml" line="282"/>
         <source>Take a photo</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2657,7 +2748,7 @@ background blur or image below.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="328"/>
+        <location filename="../qml/main.qml" line="331"/>
         <source>Record video</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2825,5 +2916,10 @@ duration (seconds)</source>
         <source>Luminance</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="47"/>
+        <source>Force frame rate</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- webcamoid-9.0.0.orig/StandAlone/share/ts/es.ts
+++ webcamoid-9.0.0/StandAlone/share/ts/es.ts
@@ -45,7 +45,7 @@
     <message>
         <location filename="../qml/AboutDialog.qml" line="45"/>
         <source>About</source>
-        <extracomment>Information of the program, like name, description, vesion, etc..</extracomment>
+        <extracomment>Information of the program, like name, description, version, etc..</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
@@ -359,7 +359,7 @@
 <context>
     <name>PipewireScreenDev</name>
     <message>
-        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="217"/>
+        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="216"/>
         <source>PipeWire Screen</source>
         <translation type="unfinished"></translation>
     </message>
@@ -455,7 +455,7 @@
 <context>
     <name>Recording</name>
     <message>
-        <location filename="../../src/recording.cpp" line="372"/>
+        <location filename="../../src/recording.cpp" line="373"/>
         <source>%1/Video %2.%3</source>
         <translation type="unfinished"></translation>
     </message>
@@ -807,126 +807,216 @@
         <source>Choose the file to add as source</source>
         <translation type="unfinished">Elige un archivo para añadir como fuente</translation>
     </message>
+</context>
+<context>
+    <name>VideoInputOptions</name>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="218"/>
-        <source>All Video Files</source>
-        <translation type="unfinished">Todos los archivos de vídeo</translation>
+        <location filename="../qml/VideoInputOptions.qml" line="61"/>
+        <source>Edit</source>
+        <translation type="unfinished">Editar</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="221"/>
+        <location filename="../qml/VideoInputOptions.qml" line="74"/>
+        <source>Remove</source>
+        <translation type="unfinished">Eliminar</translation>
+    </message>
+</context>
+<context>
+    <name>VideoInputs</name>
+    <message>
+        <location filename="../qml/VideoInputs.qml" line="56"/>
+        <source>Add source</source>
+        <translation type="unfinished">Añadir fuente</translation>
+    </message>
+    <message>
+        <location filename="../qml/VideoInputs.qml" line="67"/>
+        <source>No webcams found</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>VideoLayer</name>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="137"/>
         <source>3GP Video</source>
         <translation type="unfinished">Vídeo 3GP</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="222"/>
+        <location filename="../../src/videolayer.cpp" line="138"/>
         <source>AVI Video</source>
         <translation type="unfinished">Vídeo AVI</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="224"/>
+        <location filename="../../src/videolayer.cpp" line="139"/>
+        <source>Windows Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="140"/>
+        <source>Microsoft Windows Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="142"/>
         <source>Flash Video</source>
         <extracomment>Adobe FLV Flash video</extracomment>
         <translation type="unfinished">Vídeo Flash</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="225"/>
+        <location filename="../../src/videolayer.cpp" line="143"/>
         <source>Animated GIF</source>
         <translation type="unfinished">GIF animado</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="226"/>
+        <location filename="../../src/videolayer.cpp" line="144"/>
+        <source>Graphic Interchange Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="145"/>
+        <source>Apple Icon Image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="146"/>
+        <source>Microsoft Windows Icon</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="147"/>
+        <source>Joint Photographic Experts Group</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="148"/>
         <source>MKV Video</source>
         <translation type="unfinished">Vídeo MKV</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="227"/>
+        <location filename="../../src/videolayer.cpp" line="149"/>
         <source>Animated PNG</source>
         <translation type="unfinished">PNG animado</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="228"/>
+        <location filename="../../src/videolayer.cpp" line="150"/>
+        <source>Multiple-image Network Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="151"/>
         <source>QuickTime Video</source>
         <translation type="unfinished">Vídeo QuickTime</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="229"/>
+        <location filename="../../src/videolayer.cpp" line="152"/>
         <source>MP4 Video</source>
         <translation type="unfinished">Vídeo MP4</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="230"/>
+        <location filename="../../src/videolayer.cpp" line="153"/>
         <source>MPEG Video</source>
         <translation type="unfinished">Vídeo MPEG</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="231"/>
+        <location filename="../../src/videolayer.cpp" line="154"/>
         <source>Ogg Video</source>
         <translation type="unfinished">Vídeo Ogg</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="233"/>
+        <location filename="../../src/videolayer.cpp" line="155"/>
+        <source>Portable Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="156"/>
+        <source>Portable Graymap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="157"/>
+        <source>Portable Network Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="158"/>
+        <source>Portable Pixmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="160"/>
         <source>RealMedia Video</source>
         <extracomment>Don&apos;t translate &quot;RealMedia&quot;, leave it as is.</extracomment>
         <translation type="unfinished">Vídeo RealMedia</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="234"/>
+        <location filename="../../src/videolayer.cpp" line="161"/>
+        <source>Scalable Vector Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="162"/>
+        <source>Truevision TGA</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="163"/>
+        <source>Tagged Image File Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="164"/>
         <source>DVD Video</source>
         <translation type="unfinished">Vídeo DVD</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="235"/>
+        <location filename="../../src/videolayer.cpp" line="165"/>
+        <source>Wireless Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="166"/>
         <source>WebM Video</source>
         <translation type="unfinished">Vídeo WebM</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="237"/>
-        <source>Windows Media Video</source>
-        <extracomment>Also known as WMV, is a video file format.</extracomment>
+        <location filename="../../src/videolayer.cpp" line="167"/>
+        <source>WebP</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="238"/>
-        <source>All Files</source>
+        <location filename="../../src/videolayer.cpp" line="169"/>
+        <source>Windows Media Video</source>
+        <extracomment>Also known as WMV, is a video file format.</extracomment>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoInputOptions</name>
     <message>
-        <location filename="../qml/VideoInputOptions.qml" line="60"/>
-        <source>Edit</source>
-        <translation type="unfinished">Editar</translation>
+        <location filename="../../src/videolayer.cpp" line="170"/>
+        <source>X11 Bitmap</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputOptions.qml" line="72"/>
-        <source>Remove</source>
-        <translation type="unfinished">Eliminar</translation>
+        <location filename="../../src/videolayer.cpp" line="171"/>
+        <source>X11 Pixmap</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoInputs</name>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="56"/>
-        <source>Add source</source>
-        <translation type="unfinished">Añadir fuente</translation>
+        <location filename="../../src/videolayer.cpp" line="211"/>
+        <source>All Image and Video Files</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="67"/>
-        <source>No webcams found</source>
+        <location filename="../../src/videolayer.cpp" line="246"/>
+        <source>All Files</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoLayer</name>
     <message>
-        <location filename="../../src/videolayer.cpp" line="261"/>
+        <location filename="../../src/videolayer.cpp" line="388"/>
         <source>No Output</source>
         <extracomment>Disable video output, don&apos;t send the video to the output device.</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/videolayer.cpp" line="593"/>
+        <location filename="../../src/videolayer.cpp" line="723"/>
         <source>Virtual Camera</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1633,6 +1723,7 @@
     </message>
     <message>
         <location filename="../../../libAvKys/Plugins/DesktopCapture/share/qml/main.qml" line="48"/>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="64"/>
         <source>Frame rate</source>
         <translation>Cuadros por segundo</translation>
     </message>
@@ -2642,7 +2733,7 @@ background blur or image below.</source>
         <translation type="unfinished">%1 segundos</translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="279"/>
+        <location filename="../qml/main.qml" line="282"/>
         <source>Take a photo</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2657,7 +2748,7 @@ background blur or image below.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="328"/>
+        <location filename="../qml/main.qml" line="331"/>
         <source>Record video</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2825,5 +2916,10 @@ duration (seconds)</source>
         <source>Luminance</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="47"/>
+        <source>Force frame rate</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- webcamoid-9.0.0.orig/StandAlone/share/ts/et.ts
+++ webcamoid-9.0.0/StandAlone/share/ts/et.ts
@@ -45,7 +45,7 @@
     <message>
         <location filename="../qml/AboutDialog.qml" line="45"/>
         <source>About</source>
-        <extracomment>Information of the program, like name, description, vesion, etc..</extracomment>
+        <extracomment>Information of the program, like name, description, version, etc..</extracomment>
         <translation type="unfinished">Rakenduse teave</translation>
     </message>
     <message>
@@ -359,7 +359,7 @@
 <context>
     <name>PipewireScreenDev</name>
     <message>
-        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="217"/>
+        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="216"/>
         <source>PipeWire Screen</source>
         <translation type="unfinished"></translation>
     </message>
@@ -455,7 +455,7 @@
 <context>
     <name>Recording</name>
     <message>
-        <location filename="../../src/recording.cpp" line="372"/>
+        <location filename="../../src/recording.cpp" line="373"/>
         <source>%1/Video %2.%3</source>
         <translation>%1/video %2.%3</translation>
     </message>
@@ -807,126 +807,216 @@
         <source>Choose the file to add as source</source>
         <translation>Vali fail, mida soovid lisada sisendina</translation>
     </message>
+</context>
+<context>
+    <name>VideoInputOptions</name>
+    <message>
+        <location filename="../qml/VideoInputOptions.qml" line="61"/>
+        <source>Edit</source>
+        <translation>Muuda</translation>
+    </message>
+    <message>
+        <location filename="../qml/VideoInputOptions.qml" line="74"/>
+        <source>Remove</source>
+        <translation>Eemalda</translation>
+    </message>
+</context>
+<context>
+    <name>VideoInputs</name>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="218"/>
-        <source>All Video Files</source>
-        <translation>Kõik videofailid</translation>
+        <location filename="../qml/VideoInputs.qml" line="56"/>
+        <source>Add source</source>
+        <translation>Lisa sisend</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="221"/>
+        <location filename="../qml/VideoInputs.qml" line="67"/>
+        <source>No webcams found</source>
+        <translation>Veebikaameraid ei leidunud</translation>
+    </message>
+</context>
+<context>
+    <name>VideoLayer</name>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="137"/>
         <source>3GP Video</source>
-        <translation>3GP video</translation>
+        <translation type="unfinished">3GP video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="222"/>
+        <location filename="../../src/videolayer.cpp" line="138"/>
         <source>AVI Video</source>
-        <translation>AVI video</translation>
+        <translation type="unfinished">AVI video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="224"/>
+        <location filename="../../src/videolayer.cpp" line="139"/>
+        <source>Windows Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="140"/>
+        <source>Microsoft Windows Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="142"/>
         <source>Flash Video</source>
         <extracomment>Adobe FLV Flash video</extracomment>
-        <translation>Flash video</translation>
+        <translation type="unfinished">Flash video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="225"/>
+        <location filename="../../src/videolayer.cpp" line="143"/>
         <source>Animated GIF</source>
-        <translation>Animeeritud GIF</translation>
+        <translation type="unfinished">Animeeritud GIF</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="226"/>
+        <location filename="../../src/videolayer.cpp" line="144"/>
+        <source>Graphic Interchange Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="145"/>
+        <source>Apple Icon Image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="146"/>
+        <source>Microsoft Windows Icon</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="147"/>
+        <source>Joint Photographic Experts Group</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="148"/>
         <source>MKV Video</source>
-        <translation>MKV video</translation>
+        <translation type="unfinished">MKV video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="227"/>
+        <location filename="../../src/videolayer.cpp" line="149"/>
         <source>Animated PNG</source>
-        <translation>Animeeritud PNG</translation>
+        <translation type="unfinished">Animeeritud PNG</translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="150"/>
+        <source>Multiple-image Network Graphics</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="228"/>
+        <location filename="../../src/videolayer.cpp" line="151"/>
         <source>QuickTime Video</source>
-        <translation>QuickTime video</translation>
+        <translation type="unfinished">QuickTime video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="229"/>
+        <location filename="../../src/videolayer.cpp" line="152"/>
         <source>MP4 Video</source>
-        <translation>MP4 video</translation>
+        <translation type="unfinished">MP4 video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="230"/>
+        <location filename="../../src/videolayer.cpp" line="153"/>
         <source>MPEG Video</source>
-        <translation>MPEG video</translation>
+        <translation type="unfinished">MPEG video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="231"/>
+        <location filename="../../src/videolayer.cpp" line="154"/>
         <source>Ogg Video</source>
-        <translation>Ogg video</translation>
+        <translation type="unfinished">Ogg video</translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="155"/>
+        <source>Portable Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="156"/>
+        <source>Portable Graymap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="157"/>
+        <source>Portable Network Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="158"/>
+        <source>Portable Pixmap</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="233"/>
+        <location filename="../../src/videolayer.cpp" line="160"/>
         <source>RealMedia Video</source>
         <extracomment>Don&apos;t translate &quot;RealMedia&quot;, leave it as is.</extracomment>
-        <translation>RealMedia video</translation>
+        <translation type="unfinished">RealMedia video</translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="161"/>
+        <source>Scalable Vector Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="162"/>
+        <source>Truevision TGA</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="234"/>
+        <location filename="../../src/videolayer.cpp" line="163"/>
+        <source>Tagged Image File Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="164"/>
         <source>DVD Video</source>
-        <translation>DVD video</translation>
+        <translation type="unfinished">DVD video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="235"/>
+        <location filename="../../src/videolayer.cpp" line="165"/>
+        <source>Wireless Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="166"/>
         <source>WebM Video</source>
-        <translation>WebM video</translation>
+        <translation type="unfinished">WebM video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="237"/>
+        <location filename="../../src/videolayer.cpp" line="167"/>
+        <source>WebP</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="169"/>
         <source>Windows Media Video</source>
         <extracomment>Also known as WMV, is a video file format.</extracomment>
-        <translation>Windows Media Video</translation>
+        <translation type="unfinished">Windows Media Video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="238"/>
-        <source>All Files</source>
-        <translation>Kõik failid</translation>
-    </message>
-</context>
-<context>
-    <name>VideoInputOptions</name>
-    <message>
-        <location filename="../qml/VideoInputOptions.qml" line="60"/>
-        <source>Edit</source>
-        <translation>Muuda</translation>
+        <location filename="../../src/videolayer.cpp" line="170"/>
+        <source>X11 Bitmap</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputOptions.qml" line="72"/>
-        <source>Remove</source>
-        <translation>Eemalda</translation>
+        <location filename="../../src/videolayer.cpp" line="171"/>
+        <source>X11 Pixmap</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoInputs</name>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="56"/>
-        <source>Add source</source>
-        <translation>Lisa sisend</translation>
+        <location filename="../../src/videolayer.cpp" line="211"/>
+        <source>All Image and Video Files</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="67"/>
-        <source>No webcams found</source>
-        <translation>Veebikaameraid ei leidunud</translation>
+        <location filename="../../src/videolayer.cpp" line="246"/>
+        <source>All Files</source>
+        <translation type="unfinished">Kõik failid</translation>
     </message>
-</context>
-<context>
-    <name>VideoLayer</name>
     <message>
-        <location filename="../../src/videolayer.cpp" line="261"/>
+        <location filename="../../src/videolayer.cpp" line="388"/>
         <source>No Output</source>
         <extracomment>Disable video output, don&apos;t send the video to the output device.</extracomment>
         <translation>Väljud puudub</translation>
     </message>
     <message>
-        <location filename="../../src/videolayer.cpp" line="593"/>
+        <location filename="../../src/videolayer.cpp" line="723"/>
         <source>Virtual Camera</source>
         <translation>Virtuaalne kaamera</translation>
     </message>
@@ -1633,6 +1723,7 @@
     </message>
     <message>
         <location filename="../../../libAvKys/Plugins/DesktopCapture/share/qml/main.qml" line="48"/>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="64"/>
         <source>Frame rate</source>
         <translation>Kaadrisagedus</translation>
     </message>
@@ -2642,7 +2733,7 @@ background blur or image below.</source>
         <translation>%1 sekundit</translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="279"/>
+        <location filename="../qml/main.qml" line="282"/>
         <source>Take a photo</source>
         <translation>Pildista</translation>
     </message>
@@ -2657,7 +2748,7 @@ background blur or image below.</source>
         <translation type="unfinished">Igapäevane ehitus</translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="328"/>
+        <location filename="../qml/main.qml" line="331"/>
         <source>Record video</source>
         <translation>Salvesta video</translation>
     </message>
@@ -2825,5 +2916,10 @@ duration (seconds)</source>
         <source>Luminance</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="47"/>
+        <source>Force frame rate</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- webcamoid-9.0.0.orig/StandAlone/share/ts/fr.ts
+++ webcamoid-9.0.0/StandAlone/share/ts/fr.ts
@@ -45,7 +45,7 @@
     <message>
         <location filename="../qml/AboutDialog.qml" line="45"/>
         <source>About</source>
-        <extracomment>Information of the program, like name, description, vesion, etc..</extracomment>
+        <extracomment>Information of the program, like name, description, version, etc..</extracomment>
         <translation type="unfinished">À propos</translation>
     </message>
     <message>
@@ -359,7 +359,7 @@
 <context>
     <name>PipewireScreenDev</name>
     <message>
-        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="217"/>
+        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="216"/>
         <source>PipeWire Screen</source>
         <translation type="unfinished"></translation>
     </message>
@@ -455,7 +455,7 @@
 <context>
     <name>Recording</name>
     <message>
-        <location filename="../../src/recording.cpp" line="372"/>
+        <location filename="../../src/recording.cpp" line="373"/>
         <source>%1/Video %2.%3</source>
         <translation type="unfinished"></translation>
     </message>
@@ -807,126 +807,216 @@
         <source>Choose the file to add as source</source>
         <translation>Choisir le fichier à ajouter comme source</translation>
     </message>
+</context>
+<context>
+    <name>VideoInputOptions</name>
+    <message>
+        <location filename="../qml/VideoInputOptions.qml" line="61"/>
+        <source>Edit</source>
+        <translation>Modifier</translation>
+    </message>
+    <message>
+        <location filename="../qml/VideoInputOptions.qml" line="74"/>
+        <source>Remove</source>
+        <translation>Supprimer</translation>
+    </message>
+</context>
+<context>
+    <name>VideoInputs</name>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="218"/>
-        <source>All Video Files</source>
-        <translation>Tous les fichiers vidéo</translation>
+        <location filename="../qml/VideoInputs.qml" line="56"/>
+        <source>Add source</source>
+        <translation>Ajouter une source</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="221"/>
+        <location filename="../qml/VideoInputs.qml" line="67"/>
+        <source>No webcams found</source>
+        <translation>Aucune webcam trouvée</translation>
+    </message>
+</context>
+<context>
+    <name>VideoLayer</name>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="137"/>
         <source>3GP Video</source>
-        <translation>Vidéo 3GP</translation>
+        <translation type="unfinished">Vidéo 3GP</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="222"/>
+        <location filename="../../src/videolayer.cpp" line="138"/>
         <source>AVI Video</source>
-        <translation>Vidéo AVI</translation>
+        <translation type="unfinished">Vidéo AVI</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="224"/>
+        <location filename="../../src/videolayer.cpp" line="139"/>
+        <source>Windows Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="140"/>
+        <source>Microsoft Windows Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="142"/>
         <source>Flash Video</source>
         <extracomment>Adobe FLV Flash video</extracomment>
-        <translation>Vidéo Flash</translation>
+        <translation type="unfinished">Vidéo Flash</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="225"/>
+        <location filename="../../src/videolayer.cpp" line="143"/>
         <source>Animated GIF</source>
-        <translation>GIF animé</translation>
+        <translation type="unfinished">GIF animé</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="226"/>
+        <location filename="../../src/videolayer.cpp" line="144"/>
+        <source>Graphic Interchange Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="145"/>
+        <source>Apple Icon Image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="146"/>
+        <source>Microsoft Windows Icon</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="147"/>
+        <source>Joint Photographic Experts Group</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="148"/>
         <source>MKV Video</source>
-        <translation>Vidéo MKV</translation>
+        <translation type="unfinished">Vidéo MKV</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="227"/>
+        <location filename="../../src/videolayer.cpp" line="149"/>
         <source>Animated PNG</source>
-        <translation>PNG animé</translation>
+        <translation type="unfinished">PNG animé</translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="150"/>
+        <source>Multiple-image Network Graphics</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="228"/>
+        <location filename="../../src/videolayer.cpp" line="151"/>
         <source>QuickTime Video</source>
-        <translation>Vidéo QuickTime</translation>
+        <translation type="unfinished">Vidéo QuickTime</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="229"/>
+        <location filename="../../src/videolayer.cpp" line="152"/>
         <source>MP4 Video</source>
-        <translation>Vidéo MP4</translation>
+        <translation type="unfinished">Vidéo MP4</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="230"/>
+        <location filename="../../src/videolayer.cpp" line="153"/>
         <source>MPEG Video</source>
-        <translation>Vidéo MPEG</translation>
+        <translation type="unfinished">Vidéo MPEG</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="231"/>
+        <location filename="../../src/videolayer.cpp" line="154"/>
         <source>Ogg Video</source>
-        <translation>Vidéo Ogg</translation>
+        <translation type="unfinished">Vidéo Ogg</translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="155"/>
+        <source>Portable Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="156"/>
+        <source>Portable Graymap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="157"/>
+        <source>Portable Network Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="158"/>
+        <source>Portable Pixmap</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="233"/>
+        <location filename="../../src/videolayer.cpp" line="160"/>
         <source>RealMedia Video</source>
         <extracomment>Don&apos;t translate &quot;RealMedia&quot;, leave it as is.</extracomment>
-        <translation>Vidéo RealMedia</translation>
+        <translation type="unfinished">Vidéo RealMedia</translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="161"/>
+        <source>Scalable Vector Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="162"/>
+        <source>Truevision TGA</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="234"/>
+        <location filename="../../src/videolayer.cpp" line="163"/>
+        <source>Tagged Image File Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="164"/>
         <source>DVD Video</source>
-        <translation>Vidéo DVD</translation>
+        <translation type="unfinished">Vidéo DVD</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="235"/>
+        <location filename="../../src/videolayer.cpp" line="165"/>
+        <source>Wireless Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="166"/>
         <source>WebM Video</source>
-        <translation>Vidéo WebM</translation>
+        <translation type="unfinished">Vidéo WebM</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="237"/>
+        <location filename="../../src/videolayer.cpp" line="167"/>
+        <source>WebP</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="169"/>
         <source>Windows Media Video</source>
         <extracomment>Also known as WMV, is a video file format.</extracomment>
-        <translation>Windows Media Video</translation>
+        <translation type="unfinished">Windows Media Video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="238"/>
-        <source>All Files</source>
-        <translation>Tous les fichiers</translation>
-    </message>
-</context>
-<context>
-    <name>VideoInputOptions</name>
-    <message>
-        <location filename="../qml/VideoInputOptions.qml" line="60"/>
-        <source>Edit</source>
-        <translation>Modifier</translation>
+        <location filename="../../src/videolayer.cpp" line="170"/>
+        <source>X11 Bitmap</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputOptions.qml" line="72"/>
-        <source>Remove</source>
-        <translation>Supprimer</translation>
+        <location filename="../../src/videolayer.cpp" line="171"/>
+        <source>X11 Pixmap</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoInputs</name>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="56"/>
-        <source>Add source</source>
-        <translation>Ajouter une source</translation>
+        <location filename="../../src/videolayer.cpp" line="211"/>
+        <source>All Image and Video Files</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="67"/>
-        <source>No webcams found</source>
-        <translation>Aucune webcam trouvée</translation>
+        <location filename="../../src/videolayer.cpp" line="246"/>
+        <source>All Files</source>
+        <translation type="unfinished">Tous les fichiers</translation>
     </message>
-</context>
-<context>
-    <name>VideoLayer</name>
     <message>
-        <location filename="../../src/videolayer.cpp" line="261"/>
+        <location filename="../../src/videolayer.cpp" line="388"/>
         <source>No Output</source>
         <extracomment>Disable video output, don&apos;t send the video to the output device.</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/videolayer.cpp" line="593"/>
+        <location filename="../../src/videolayer.cpp" line="723"/>
         <source>Virtual Camera</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1633,6 +1723,7 @@
     </message>
     <message>
         <location filename="../../../libAvKys/Plugins/DesktopCapture/share/qml/main.qml" line="48"/>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="64"/>
         <source>Frame rate</source>
         <translation>Fréquence d&apos;images</translation>
     </message>
@@ -2642,7 +2733,7 @@ background blur or image below.</source>
         <translation>%1 secondes</translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="279"/>
+        <location filename="../qml/main.qml" line="282"/>
         <source>Take a photo</source>
         <translation>Prendre une photo</translation>
     </message>
@@ -2657,7 +2748,7 @@ background blur or image below.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="328"/>
+        <location filename="../qml/main.qml" line="331"/>
         <source>Record video</source>
         <translation>Enregistrer une vidéo</translation>
     </message>
@@ -2825,5 +2916,10 @@ duration (seconds)</source>
         <source>Luminance</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="47"/>
+        <source>Force frame rate</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- webcamoid-9.0.0.orig/StandAlone/share/ts/gl.ts
+++ webcamoid-9.0.0/StandAlone/share/ts/gl.ts
@@ -45,7 +45,7 @@
     <message>
         <location filename="../qml/AboutDialog.qml" line="45"/>
         <source>About</source>
-        <extracomment>Information of the program, like name, description, vesion, etc..</extracomment>
+        <extracomment>Information of the program, like name, description, version, etc..</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
@@ -359,7 +359,7 @@
 <context>
     <name>PipewireScreenDev</name>
     <message>
-        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="217"/>
+        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="216"/>
         <source>PipeWire Screen</source>
         <translation type="unfinished"></translation>
     </message>
@@ -455,7 +455,7 @@
 <context>
     <name>Recording</name>
     <message>
-        <location filename="../../src/recording.cpp" line="372"/>
+        <location filename="../../src/recording.cpp" line="373"/>
         <source>%1/Video %2.%3</source>
         <translation type="unfinished"></translation>
     </message>
@@ -807,126 +807,216 @@
         <source>Choose the file to add as source</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>VideoInputOptions</name>
+    <message>
+        <location filename="../qml/VideoInputOptions.qml" line="61"/>
+        <source>Edit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qml/VideoInputOptions.qml" line="74"/>
+        <source>Remove</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>VideoInputs</name>
+    <message>
+        <location filename="../qml/VideoInputs.qml" line="56"/>
+        <source>Add source</source>
+        <translation type="unfinished"></translation>
+    </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="218"/>
-        <source>All Video Files</source>
+        <location filename="../qml/VideoInputs.qml" line="67"/>
+        <source>No webcams found</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>VideoLayer</name>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="221"/>
+        <location filename="../../src/videolayer.cpp" line="137"/>
         <source>3GP Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="222"/>
+        <location filename="../../src/videolayer.cpp" line="138"/>
         <source>AVI Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="224"/>
+        <location filename="../../src/videolayer.cpp" line="139"/>
+        <source>Windows Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="140"/>
+        <source>Microsoft Windows Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="142"/>
         <source>Flash Video</source>
         <extracomment>Adobe FLV Flash video</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="225"/>
+        <location filename="../../src/videolayer.cpp" line="143"/>
         <source>Animated GIF</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="226"/>
+        <location filename="../../src/videolayer.cpp" line="144"/>
+        <source>Graphic Interchange Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="145"/>
+        <source>Apple Icon Image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="146"/>
+        <source>Microsoft Windows Icon</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="147"/>
+        <source>Joint Photographic Experts Group</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="148"/>
         <source>MKV Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="227"/>
+        <location filename="../../src/videolayer.cpp" line="149"/>
         <source>Animated PNG</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="228"/>
+        <location filename="../../src/videolayer.cpp" line="150"/>
+        <source>Multiple-image Network Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="151"/>
         <source>QuickTime Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="229"/>
+        <location filename="../../src/videolayer.cpp" line="152"/>
         <source>MP4 Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="230"/>
+        <location filename="../../src/videolayer.cpp" line="153"/>
         <source>MPEG Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="231"/>
+        <location filename="../../src/videolayer.cpp" line="154"/>
         <source>Ogg Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="233"/>
+        <location filename="../../src/videolayer.cpp" line="155"/>
+        <source>Portable Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="156"/>
+        <source>Portable Graymap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="157"/>
+        <source>Portable Network Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="158"/>
+        <source>Portable Pixmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="160"/>
         <source>RealMedia Video</source>
         <extracomment>Don&apos;t translate &quot;RealMedia&quot;, leave it as is.</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="234"/>
+        <location filename="../../src/videolayer.cpp" line="161"/>
+        <source>Scalable Vector Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="162"/>
+        <source>Truevision TGA</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="163"/>
+        <source>Tagged Image File Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="164"/>
         <source>DVD Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="235"/>
+        <location filename="../../src/videolayer.cpp" line="165"/>
+        <source>Wireless Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="166"/>
         <source>WebM Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="237"/>
-        <source>Windows Media Video</source>
-        <extracomment>Also known as WMV, is a video file format.</extracomment>
+        <location filename="../../src/videolayer.cpp" line="167"/>
+        <source>WebP</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="238"/>
-        <source>All Files</source>
+        <location filename="../../src/videolayer.cpp" line="169"/>
+        <source>Windows Media Video</source>
+        <extracomment>Also known as WMV, is a video file format.</extracomment>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoInputOptions</name>
     <message>
-        <location filename="../qml/VideoInputOptions.qml" line="60"/>
-        <source>Edit</source>
+        <location filename="../../src/videolayer.cpp" line="170"/>
+        <source>X11 Bitmap</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputOptions.qml" line="72"/>
-        <source>Remove</source>
+        <location filename="../../src/videolayer.cpp" line="171"/>
+        <source>X11 Pixmap</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoInputs</name>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="56"/>
-        <source>Add source</source>
+        <location filename="../../src/videolayer.cpp" line="211"/>
+        <source>All Image and Video Files</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="67"/>
-        <source>No webcams found</source>
+        <location filename="../../src/videolayer.cpp" line="246"/>
+        <source>All Files</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoLayer</name>
     <message>
-        <location filename="../../src/videolayer.cpp" line="261"/>
+        <location filename="../../src/videolayer.cpp" line="388"/>
         <source>No Output</source>
         <extracomment>Disable video output, don&apos;t send the video to the output device.</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/videolayer.cpp" line="593"/>
+        <location filename="../../src/videolayer.cpp" line="723"/>
         <source>Virtual Camera</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1633,6 +1723,7 @@
     </message>
     <message>
         <location filename="../../../libAvKys/Plugins/DesktopCapture/share/qml/main.qml" line="48"/>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="64"/>
         <source>Frame rate</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2642,7 +2733,7 @@ background blur or image below.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="279"/>
+        <location filename="../qml/main.qml" line="282"/>
         <source>Take a photo</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2657,7 +2748,7 @@ background blur or image below.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="328"/>
+        <location filename="../qml/main.qml" line="331"/>
         <source>Record video</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2825,5 +2916,10 @@ duration (seconds)</source>
         <source>Luminance</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="47"/>
+        <source>Force frame rate</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- webcamoid-9.0.0.orig/StandAlone/share/ts/he.ts
+++ webcamoid-9.0.0/StandAlone/share/ts/he.ts
@@ -45,7 +45,7 @@
     <message>
         <location filename="../qml/AboutDialog.qml" line="45"/>
         <source>About</source>
-        <extracomment>Information of the program, like name, description, vesion, etc..</extracomment>
+        <extracomment>Information of the program, like name, description, version, etc..</extracomment>
         <translation>על אודות</translation>
     </message>
     <message>
@@ -359,7 +359,7 @@
 <context>
     <name>PipewireScreenDev</name>
     <message>
-        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="217"/>
+        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="216"/>
         <source>PipeWire Screen</source>
         <translation>מסך PipeWire</translation>
     </message>
@@ -455,7 +455,7 @@
 <context>
     <name>Recording</name>
     <message>
-        <location filename="../../src/recording.cpp" line="372"/>
+        <location filename="../../src/recording.cpp" line="373"/>
         <source>%1/Video %2.%3</source>
         <translation>%1/סרטון %2.%3</translation>
     </message>
@@ -807,126 +807,216 @@
         <source>Choose the file to add as source</source>
         <translation>נא לבחור את הקובץ שיתווסף כמקור</translation>
     </message>
+</context>
+<context>
+    <name>VideoInputOptions</name>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="218"/>
-        <source>All Video Files</source>
-        <translation>כל קובצי הווידאו</translation>
+        <location filename="../qml/VideoInputOptions.qml" line="61"/>
+        <source>Edit</source>
+        <translation>עריכה</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="221"/>
+        <location filename="../qml/VideoInputOptions.qml" line="74"/>
+        <source>Remove</source>
+        <translation>הסרה</translation>
+    </message>
+</context>
+<context>
+    <name>VideoInputs</name>
+    <message>
+        <location filename="../qml/VideoInputs.qml" line="56"/>
+        <source>Add source</source>
+        <translation>הוספת מקור</translation>
+    </message>
+    <message>
+        <location filename="../qml/VideoInputs.qml" line="67"/>
+        <source>No webcams found</source>
+        <translation>לא נמצאו מצלמות רשת</translation>
+    </message>
+</context>
+<context>
+    <name>VideoLayer</name>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="137"/>
         <source>3GP Video</source>
-        <translation>וידאו 3GP</translation>
+        <translation type="unfinished">וידאו 3GP</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="222"/>
+        <location filename="../../src/videolayer.cpp" line="138"/>
         <source>AVI Video</source>
-        <translation>וידאו AVI</translation>
+        <translation type="unfinished">וידאו AVI</translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="139"/>
+        <source>Windows Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="140"/>
+        <source>Microsoft Windows Cursor</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="224"/>
+        <location filename="../../src/videolayer.cpp" line="142"/>
         <source>Flash Video</source>
         <extracomment>Adobe FLV Flash video</extracomment>
-        <translation>וידאו Flash</translation>
+        <translation type="unfinished">וידאו Flash</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="225"/>
+        <location filename="../../src/videolayer.cpp" line="143"/>
         <source>Animated GIF</source>
-        <translation>GIF מונפש</translation>
+        <translation type="unfinished">GIF מונפש</translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="144"/>
+        <source>Graphic Interchange Format</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="226"/>
+        <location filename="../../src/videolayer.cpp" line="145"/>
+        <source>Apple Icon Image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="146"/>
+        <source>Microsoft Windows Icon</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="147"/>
+        <source>Joint Photographic Experts Group</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="148"/>
         <source>MKV Video</source>
-        <translation>וידאו MKV</translation>
+        <translation type="unfinished">וידאו MKV</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="227"/>
+        <location filename="../../src/videolayer.cpp" line="149"/>
         <source>Animated PNG</source>
-        <translation>PNG מונפש</translation>
+        <translation type="unfinished">PNG מונפש</translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="150"/>
+        <source>Multiple-image Network Graphics</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="228"/>
+        <location filename="../../src/videolayer.cpp" line="151"/>
         <source>QuickTime Video</source>
-        <translation>וידאו QuickTime</translation>
+        <translation type="unfinished">וידאו QuickTime</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="229"/>
+        <location filename="../../src/videolayer.cpp" line="152"/>
         <source>MP4 Video</source>
-        <translation>וידאו MP4</translation>
+        <translation type="unfinished">וידאו MP4</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="230"/>
+        <location filename="../../src/videolayer.cpp" line="153"/>
         <source>MPEG Video</source>
-        <translation>וידאו MPEG</translation>
+        <translation type="unfinished">וידאו MPEG</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="231"/>
+        <location filename="../../src/videolayer.cpp" line="154"/>
         <source>Ogg Video</source>
-        <translation>וידאו Ogg</translation>
+        <translation type="unfinished">וידאו Ogg</translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="155"/>
+        <source>Portable Bitmap</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="233"/>
+        <location filename="../../src/videolayer.cpp" line="156"/>
+        <source>Portable Graymap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="157"/>
+        <source>Portable Network Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="158"/>
+        <source>Portable Pixmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="160"/>
         <source>RealMedia Video</source>
         <extracomment>Don&apos;t translate &quot;RealMedia&quot;, leave it as is.</extracomment>
-        <translation>וידאו RealMedia</translation>
+        <translation type="unfinished">וידאו RealMedia</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="234"/>
+        <location filename="../../src/videolayer.cpp" line="161"/>
+        <source>Scalable Vector Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="162"/>
+        <source>Truevision TGA</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="163"/>
+        <source>Tagged Image File Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="164"/>
         <source>DVD Video</source>
-        <translation>וידאו DVD</translation>
+        <translation type="unfinished">וידאו DVD</translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="165"/>
+        <source>Wireless Bitmap</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="235"/>
+        <location filename="../../src/videolayer.cpp" line="166"/>
         <source>WebM Video</source>
-        <translation>וידאו WebM</translation>
+        <translation type="unfinished">וידאו WebM</translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="167"/>
+        <source>WebP</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="237"/>
+        <location filename="../../src/videolayer.cpp" line="169"/>
         <source>Windows Media Video</source>
         <extracomment>Also known as WMV, is a video file format.</extracomment>
-        <translation>וידאו Windows Media</translation>
+        <translation type="unfinished">וידאו Windows Media</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="238"/>
-        <source>All Files</source>
-        <translation>כל הקבצים</translation>
+        <location filename="../../src/videolayer.cpp" line="170"/>
+        <source>X11 Bitmap</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoInputOptions</name>
     <message>
-        <location filename="../qml/VideoInputOptions.qml" line="60"/>
-        <source>Edit</source>
-        <translation>עריכה</translation>
-    </message>
-    <message>
-        <location filename="../qml/VideoInputOptions.qml" line="72"/>
-        <source>Remove</source>
-        <translation>הסרה</translation>
+        <location filename="../../src/videolayer.cpp" line="171"/>
+        <source>X11 Pixmap</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoInputs</name>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="56"/>
-        <source>Add source</source>
-        <translation>הוספת מקור</translation>
+        <location filename="../../src/videolayer.cpp" line="211"/>
+        <source>All Image and Video Files</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="67"/>
-        <source>No webcams found</source>
-        <translation>לא נמצאו מצלמות רשת</translation>
+        <location filename="../../src/videolayer.cpp" line="246"/>
+        <source>All Files</source>
+        <translation type="unfinished">כל הקבצים</translation>
     </message>
-</context>
-<context>
-    <name>VideoLayer</name>
     <message>
-        <location filename="../../src/videolayer.cpp" line="261"/>
+        <location filename="../../src/videolayer.cpp" line="388"/>
         <source>No Output</source>
         <extracomment>Disable video output, don&apos;t send the video to the output device.</extracomment>
         <translation>ללא פלט</translation>
     </message>
     <message>
-        <location filename="../../src/videolayer.cpp" line="593"/>
+        <location filename="../../src/videolayer.cpp" line="723"/>
         <source>Virtual Camera</source>
         <translation>מצלמה וירטואלית</translation>
     </message>
@@ -1633,6 +1723,7 @@
     </message>
     <message>
         <location filename="../../../libAvKys/Plugins/DesktopCapture/share/qml/main.qml" line="48"/>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="64"/>
         <source>Frame rate</source>
         <translation>קצב שקופיות</translation>
     </message>
@@ -2643,7 +2734,7 @@ background blur or image below.</source>
         <translation>%1 שניות</translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="279"/>
+        <location filename="../qml/main.qml" line="282"/>
         <source>Take a photo</source>
         <translation>צילום תמונה</translation>
     </message>
@@ -2658,7 +2749,7 @@ background blur or image below.</source>
         <translation>מהדורה יומית</translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="328"/>
+        <location filename="../qml/main.qml" line="331"/>
         <source>Record video</source>
         <translation>הקלטת וידאו</translation>
     </message>
@@ -2827,5 +2918,10 @@ duration (seconds)</source>
         <source>Luminance</source>
         <translation>בהירות</translation>
     </message>
+    <message>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="47"/>
+        <source>Force frame rate</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- webcamoid-9.0.0.orig/StandAlone/share/ts/hu.ts
+++ webcamoid-9.0.0/StandAlone/share/ts/hu.ts
@@ -45,7 +45,7 @@
     <message>
         <location filename="../qml/AboutDialog.qml" line="45"/>
         <source>About</source>
-        <extracomment>Information of the program, like name, description, vesion, etc..</extracomment>
+        <extracomment>Information of the program, like name, description, version, etc..</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
@@ -359,7 +359,7 @@
 <context>
     <name>PipewireScreenDev</name>
     <message>
-        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="217"/>
+        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="216"/>
         <source>PipeWire Screen</source>
         <translation type="unfinished"></translation>
     </message>
@@ -455,7 +455,7 @@
 <context>
     <name>Recording</name>
     <message>
-        <location filename="../../src/recording.cpp" line="372"/>
+        <location filename="../../src/recording.cpp" line="373"/>
         <source>%1/Video %2.%3</source>
         <translation type="unfinished"></translation>
     </message>
@@ -807,126 +807,216 @@
         <source>Choose the file to add as source</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>VideoInputOptions</name>
+    <message>
+        <location filename="../qml/VideoInputOptions.qml" line="61"/>
+        <source>Edit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qml/VideoInputOptions.qml" line="74"/>
+        <source>Remove</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>VideoInputs</name>
+    <message>
+        <location filename="../qml/VideoInputs.qml" line="56"/>
+        <source>Add source</source>
+        <translation type="unfinished"></translation>
+    </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="218"/>
-        <source>All Video Files</source>
+        <location filename="../qml/VideoInputs.qml" line="67"/>
+        <source>No webcams found</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>VideoLayer</name>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="221"/>
+        <location filename="../../src/videolayer.cpp" line="137"/>
         <source>3GP Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="222"/>
+        <location filename="../../src/videolayer.cpp" line="138"/>
         <source>AVI Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="224"/>
+        <location filename="../../src/videolayer.cpp" line="139"/>
+        <source>Windows Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="140"/>
+        <source>Microsoft Windows Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="142"/>
         <source>Flash Video</source>
         <extracomment>Adobe FLV Flash video</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="225"/>
+        <location filename="../../src/videolayer.cpp" line="143"/>
         <source>Animated GIF</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="226"/>
+        <location filename="../../src/videolayer.cpp" line="144"/>
+        <source>Graphic Interchange Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="145"/>
+        <source>Apple Icon Image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="146"/>
+        <source>Microsoft Windows Icon</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="147"/>
+        <source>Joint Photographic Experts Group</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="148"/>
         <source>MKV Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="227"/>
+        <location filename="../../src/videolayer.cpp" line="149"/>
         <source>Animated PNG</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="228"/>
+        <location filename="../../src/videolayer.cpp" line="150"/>
+        <source>Multiple-image Network Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="151"/>
         <source>QuickTime Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="229"/>
+        <location filename="../../src/videolayer.cpp" line="152"/>
         <source>MP4 Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="230"/>
+        <location filename="../../src/videolayer.cpp" line="153"/>
         <source>MPEG Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="231"/>
+        <location filename="../../src/videolayer.cpp" line="154"/>
         <source>Ogg Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="233"/>
+        <location filename="../../src/videolayer.cpp" line="155"/>
+        <source>Portable Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="156"/>
+        <source>Portable Graymap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="157"/>
+        <source>Portable Network Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="158"/>
+        <source>Portable Pixmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="160"/>
         <source>RealMedia Video</source>
         <extracomment>Don&apos;t translate &quot;RealMedia&quot;, leave it as is.</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="234"/>
+        <location filename="../../src/videolayer.cpp" line="161"/>
+        <source>Scalable Vector Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="162"/>
+        <source>Truevision TGA</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="163"/>
+        <source>Tagged Image File Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="164"/>
         <source>DVD Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="235"/>
+        <location filename="../../src/videolayer.cpp" line="165"/>
+        <source>Wireless Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="166"/>
         <source>WebM Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="237"/>
-        <source>Windows Media Video</source>
-        <extracomment>Also known as WMV, is a video file format.</extracomment>
+        <location filename="../../src/videolayer.cpp" line="167"/>
+        <source>WebP</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="238"/>
-        <source>All Files</source>
+        <location filename="../../src/videolayer.cpp" line="169"/>
+        <source>Windows Media Video</source>
+        <extracomment>Also known as WMV, is a video file format.</extracomment>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoInputOptions</name>
     <message>
-        <location filename="../qml/VideoInputOptions.qml" line="60"/>
-        <source>Edit</source>
+        <location filename="../../src/videolayer.cpp" line="170"/>
+        <source>X11 Bitmap</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputOptions.qml" line="72"/>
-        <source>Remove</source>
+        <location filename="../../src/videolayer.cpp" line="171"/>
+        <source>X11 Pixmap</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoInputs</name>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="56"/>
-        <source>Add source</source>
+        <location filename="../../src/videolayer.cpp" line="211"/>
+        <source>All Image and Video Files</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="67"/>
-        <source>No webcams found</source>
+        <location filename="../../src/videolayer.cpp" line="246"/>
+        <source>All Files</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoLayer</name>
     <message>
-        <location filename="../../src/videolayer.cpp" line="261"/>
+        <location filename="../../src/videolayer.cpp" line="388"/>
         <source>No Output</source>
         <extracomment>Disable video output, don&apos;t send the video to the output device.</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/videolayer.cpp" line="593"/>
+        <location filename="../../src/videolayer.cpp" line="723"/>
         <source>Virtual Camera</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1633,6 +1723,7 @@
     </message>
     <message>
         <location filename="../../../libAvKys/Plugins/DesktopCapture/share/qml/main.qml" line="48"/>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="64"/>
         <source>Frame rate</source>
         <translation type="unfinished">Képkockasebesség</translation>
     </message>
@@ -2642,7 +2733,7 @@ background blur or image below.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="279"/>
+        <location filename="../qml/main.qml" line="282"/>
         <source>Take a photo</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2657,7 +2748,7 @@ background blur or image below.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="328"/>
+        <location filename="../qml/main.qml" line="331"/>
         <source>Record video</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2825,5 +2916,10 @@ duration (seconds)</source>
         <source>Luminance</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="47"/>
+        <source>Force frame rate</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- webcamoid-9.0.0.orig/StandAlone/share/ts/it.ts
+++ webcamoid-9.0.0/StandAlone/share/ts/it.ts
@@ -45,7 +45,7 @@
     <message>
         <location filename="../qml/AboutDialog.qml" line="45"/>
         <source>About</source>
-        <extracomment>Information of the program, like name, description, vesion, etc..</extracomment>
+        <extracomment>Information of the program, like name, description, version, etc..</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
@@ -359,7 +359,7 @@
 <context>
     <name>PipewireScreenDev</name>
     <message>
-        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="217"/>
+        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="216"/>
         <source>PipeWire Screen</source>
         <translation type="unfinished"></translation>
     </message>
@@ -455,7 +455,7 @@
 <context>
     <name>Recording</name>
     <message>
-        <location filename="../../src/recording.cpp" line="372"/>
+        <location filename="../../src/recording.cpp" line="373"/>
         <source>%1/Video %2.%3</source>
         <translation type="unfinished"></translation>
     </message>
@@ -807,126 +807,216 @@
         <source>Choose the file to add as source</source>
         <translation type="unfinished">Scegli il file da aggiungere come risorsa</translation>
     </message>
+</context>
+<context>
+    <name>VideoInputOptions</name>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="218"/>
-        <source>All Video Files</source>
-        <translation type="unfinished">Tutti i File Video</translation>
+        <location filename="../qml/VideoInputOptions.qml" line="61"/>
+        <source>Edit</source>
+        <translation type="unfinished">Modifica</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="221"/>
+        <location filename="../qml/VideoInputOptions.qml" line="74"/>
+        <source>Remove</source>
+        <translation type="unfinished">Rimuovi</translation>
+    </message>
+</context>
+<context>
+    <name>VideoInputs</name>
+    <message>
+        <location filename="../qml/VideoInputs.qml" line="56"/>
+        <source>Add source</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qml/VideoInputs.qml" line="67"/>
+        <source>No webcams found</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>VideoLayer</name>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="137"/>
         <source>3GP Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="222"/>
+        <location filename="../../src/videolayer.cpp" line="138"/>
         <source>AVI Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="224"/>
+        <location filename="../../src/videolayer.cpp" line="139"/>
+        <source>Windows Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="140"/>
+        <source>Microsoft Windows Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="142"/>
         <source>Flash Video</source>
         <extracomment>Adobe FLV Flash video</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="225"/>
+        <location filename="../../src/videolayer.cpp" line="143"/>
         <source>Animated GIF</source>
         <translation type="unfinished">GIF Animata</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="226"/>
+        <location filename="../../src/videolayer.cpp" line="144"/>
+        <source>Graphic Interchange Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="145"/>
+        <source>Apple Icon Image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="146"/>
+        <source>Microsoft Windows Icon</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="147"/>
+        <source>Joint Photographic Experts Group</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="148"/>
         <source>MKV Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="227"/>
+        <location filename="../../src/videolayer.cpp" line="149"/>
         <source>Animated PNG</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="228"/>
+        <location filename="../../src/videolayer.cpp" line="150"/>
+        <source>Multiple-image Network Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="151"/>
         <source>QuickTime Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="229"/>
+        <location filename="../../src/videolayer.cpp" line="152"/>
         <source>MP4 Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="230"/>
+        <location filename="../../src/videolayer.cpp" line="153"/>
         <source>MPEG Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="231"/>
+        <location filename="../../src/videolayer.cpp" line="154"/>
         <source>Ogg Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="233"/>
+        <location filename="../../src/videolayer.cpp" line="155"/>
+        <source>Portable Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="156"/>
+        <source>Portable Graymap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="157"/>
+        <source>Portable Network Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="158"/>
+        <source>Portable Pixmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="160"/>
         <source>RealMedia Video</source>
         <extracomment>Don&apos;t translate &quot;RealMedia&quot;, leave it as is.</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="234"/>
+        <location filename="../../src/videolayer.cpp" line="161"/>
+        <source>Scalable Vector Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="162"/>
+        <source>Truevision TGA</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="163"/>
+        <source>Tagged Image File Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="164"/>
         <source>DVD Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="235"/>
+        <location filename="../../src/videolayer.cpp" line="165"/>
+        <source>Wireless Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="166"/>
         <source>WebM Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="237"/>
-        <source>Windows Media Video</source>
-        <extracomment>Also known as WMV, is a video file format.</extracomment>
+        <location filename="../../src/videolayer.cpp" line="167"/>
+        <source>WebP</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="238"/>
-        <source>All Files</source>
+        <location filename="../../src/videolayer.cpp" line="169"/>
+        <source>Windows Media Video</source>
+        <extracomment>Also known as WMV, is a video file format.</extracomment>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoInputOptions</name>
     <message>
-        <location filename="../qml/VideoInputOptions.qml" line="60"/>
-        <source>Edit</source>
-        <translation type="unfinished">Modifica</translation>
+        <location filename="../../src/videolayer.cpp" line="170"/>
+        <source>X11 Bitmap</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputOptions.qml" line="72"/>
-        <source>Remove</source>
-        <translation type="unfinished">Rimuovi</translation>
+        <location filename="../../src/videolayer.cpp" line="171"/>
+        <source>X11 Pixmap</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoInputs</name>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="56"/>
-        <source>Add source</source>
+        <location filename="../../src/videolayer.cpp" line="211"/>
+        <source>All Image and Video Files</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="67"/>
-        <source>No webcams found</source>
+        <location filename="../../src/videolayer.cpp" line="246"/>
+        <source>All Files</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoLayer</name>
     <message>
-        <location filename="../../src/videolayer.cpp" line="261"/>
+        <location filename="../../src/videolayer.cpp" line="388"/>
         <source>No Output</source>
         <extracomment>Disable video output, don&apos;t send the video to the output device.</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/videolayer.cpp" line="593"/>
+        <location filename="../../src/videolayer.cpp" line="723"/>
         <source>Virtual Camera</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1633,6 +1723,7 @@
     </message>
     <message>
         <location filename="../../../libAvKys/Plugins/DesktopCapture/share/qml/main.qml" line="48"/>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="64"/>
         <source>Frame rate</source>
         <translation>Frame rate</translation>
     </message>
@@ -2642,7 +2733,7 @@ background blur or image below.</source>
         <translation>%1 secondi</translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="279"/>
+        <location filename="../qml/main.qml" line="282"/>
         <source>Take a photo</source>
         <translation>Scatta una foto</translation>
     </message>
@@ -2657,7 +2748,7 @@ background blur or image below.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="328"/>
+        <location filename="../qml/main.qml" line="331"/>
         <source>Record video</source>
         <translation>Registra video</translation>
     </message>
@@ -2825,5 +2916,10 @@ duration (seconds)</source>
         <source>Luminance</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="47"/>
+        <source>Force frame rate</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- webcamoid-9.0.0.orig/StandAlone/share/ts/ja.ts
+++ webcamoid-9.0.0/StandAlone/share/ts/ja.ts
@@ -45,7 +45,7 @@
     <message>
         <location filename="../qml/AboutDialog.qml" line="45"/>
         <source>About</source>
-        <extracomment>Information of the program, like name, description, vesion, etc..</extracomment>
+        <extracomment>Information of the program, like name, description, version, etc..</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
@@ -359,7 +359,7 @@
 <context>
     <name>PipewireScreenDev</name>
     <message>
-        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="217"/>
+        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="216"/>
         <source>PipeWire Screen</source>
         <translation type="unfinished"></translation>
     </message>
@@ -455,7 +455,7 @@
 <context>
     <name>Recording</name>
     <message>
-        <location filename="../../src/recording.cpp" line="372"/>
+        <location filename="../../src/recording.cpp" line="373"/>
         <source>%1/Video %2.%3</source>
         <translation type="unfinished"></translation>
     </message>
@@ -807,126 +807,216 @@
         <source>Choose the file to add as source</source>
         <translation type="unfinished">ソースとして追加するファイルを選ぶ</translation>
     </message>
+</context>
+<context>
+    <name>VideoInputOptions</name>
+    <message>
+        <location filename="../qml/VideoInputOptions.qml" line="61"/>
+        <source>Edit</source>
+        <translation type="unfinished">エディット</translation>
+    </message>
+    <message>
+        <location filename="../qml/VideoInputOptions.qml" line="74"/>
+        <source>Remove</source>
+        <translation type="unfinished">削除</translation>
+    </message>
+</context>
+<context>
+    <name>VideoInputs</name>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="218"/>
-        <source>All Video Files</source>
-        <translation type="unfinished">すべての動画ファイル</translation>
+        <location filename="../qml/VideoInputs.qml" line="56"/>
+        <source>Add source</source>
+        <translation type="unfinished">ソースの追加</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="221"/>
+        <location filename="../qml/VideoInputs.qml" line="67"/>
+        <source>No webcams found</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>VideoLayer</name>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="137"/>
         <source>3GP Video</source>
         <translation type="unfinished">3GPビデオ</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="222"/>
+        <location filename="../../src/videolayer.cpp" line="138"/>
         <source>AVI Video</source>
         <translation type="unfinished">AVIビデオ</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="224"/>
+        <location filename="../../src/videolayer.cpp" line="139"/>
+        <source>Windows Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="140"/>
+        <source>Microsoft Windows Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="142"/>
         <source>Flash Video</source>
         <extracomment>Adobe FLV Flash video</extracomment>
         <translation type="unfinished">Flashビデオ</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="225"/>
+        <location filename="../../src/videolayer.cpp" line="143"/>
         <source>Animated GIF</source>
         <translation type="unfinished">アニメーションGIF</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="226"/>
+        <location filename="../../src/videolayer.cpp" line="144"/>
+        <source>Graphic Interchange Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="145"/>
+        <source>Apple Icon Image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="146"/>
+        <source>Microsoft Windows Icon</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="147"/>
+        <source>Joint Photographic Experts Group</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="148"/>
         <source>MKV Video</source>
         <translation type="unfinished">MKVビデオ</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="227"/>
+        <location filename="../../src/videolayer.cpp" line="149"/>
         <source>Animated PNG</source>
         <translation type="unfinished">アニメーションPNG</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="228"/>
+        <location filename="../../src/videolayer.cpp" line="150"/>
+        <source>Multiple-image Network Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="151"/>
         <source>QuickTime Video</source>
         <translation type="unfinished">QuickTimeビデオ</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="229"/>
+        <location filename="../../src/videolayer.cpp" line="152"/>
         <source>MP4 Video</source>
         <translation type="unfinished">MP4ビデオ</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="230"/>
+        <location filename="../../src/videolayer.cpp" line="153"/>
         <source>MPEG Video</source>
         <translation type="unfinished">MPEGビデオ</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="231"/>
+        <location filename="../../src/videolayer.cpp" line="154"/>
         <source>Ogg Video</source>
         <translation type="unfinished">Oggビデオ</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="233"/>
+        <location filename="../../src/videolayer.cpp" line="155"/>
+        <source>Portable Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="156"/>
+        <source>Portable Graymap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="157"/>
+        <source>Portable Network Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="158"/>
+        <source>Portable Pixmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="160"/>
         <source>RealMedia Video</source>
         <extracomment>Don&apos;t translate &quot;RealMedia&quot;, leave it as is.</extracomment>
         <translation type="unfinished">RealMediaビデオ</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="234"/>
+        <location filename="../../src/videolayer.cpp" line="161"/>
+        <source>Scalable Vector Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="162"/>
+        <source>Truevision TGA</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="163"/>
+        <source>Tagged Image File Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="164"/>
         <source>DVD Video</source>
         <translation type="unfinished">DVDビデオ</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="235"/>
+        <location filename="../../src/videolayer.cpp" line="165"/>
+        <source>Wireless Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="166"/>
         <source>WebM Video</source>
         <translation type="unfinished">WebMビデオ</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="237"/>
+        <location filename="../../src/videolayer.cpp" line="167"/>
+        <source>WebP</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="169"/>
         <source>Windows Media Video</source>
         <extracomment>Also known as WMV, is a video file format.</extracomment>
         <translation type="unfinished">Windows Mediaビデオ</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="238"/>
-        <source>All Files</source>
-        <translation type="unfinished">すべてのファイル</translation>
-    </message>
-</context>
-<context>
-    <name>VideoInputOptions</name>
-    <message>
-        <location filename="../qml/VideoInputOptions.qml" line="60"/>
-        <source>Edit</source>
-        <translation type="unfinished">エディット</translation>
+        <location filename="../../src/videolayer.cpp" line="170"/>
+        <source>X11 Bitmap</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputOptions.qml" line="72"/>
-        <source>Remove</source>
-        <translation type="unfinished">削除</translation>
+        <location filename="../../src/videolayer.cpp" line="171"/>
+        <source>X11 Pixmap</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoInputs</name>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="56"/>
-        <source>Add source</source>
-        <translation type="unfinished">ソースの追加</translation>
+        <location filename="../../src/videolayer.cpp" line="211"/>
+        <source>All Image and Video Files</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="67"/>
-        <source>No webcams found</source>
-        <translation type="unfinished"></translation>
+        <location filename="../../src/videolayer.cpp" line="246"/>
+        <source>All Files</source>
+        <translation type="unfinished">すべてのファイル</translation>
     </message>
-</context>
-<context>
-    <name>VideoLayer</name>
     <message>
-        <location filename="../../src/videolayer.cpp" line="261"/>
+        <location filename="../../src/videolayer.cpp" line="388"/>
         <source>No Output</source>
         <extracomment>Disable video output, don&apos;t send the video to the output device.</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/videolayer.cpp" line="593"/>
+        <location filename="../../src/videolayer.cpp" line="723"/>
         <source>Virtual Camera</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1633,6 +1723,7 @@
     </message>
     <message>
         <location filename="../../../libAvKys/Plugins/DesktopCapture/share/qml/main.qml" line="48"/>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="64"/>
         <source>Frame rate</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2642,7 +2733,7 @@ background blur or image below.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="279"/>
+        <location filename="../qml/main.qml" line="282"/>
         <source>Take a photo</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2657,7 +2748,7 @@ background blur or image below.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="328"/>
+        <location filename="../qml/main.qml" line="331"/>
         <source>Record video</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2825,5 +2916,10 @@ duration (seconds)</source>
         <source>Luminance</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="47"/>
+        <source>Force frame rate</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- webcamoid-9.0.0.orig/StandAlone/share/ts/kab.ts
+++ webcamoid-9.0.0/StandAlone/share/ts/kab.ts
@@ -45,7 +45,7 @@
     <message>
         <location filename="../qml/AboutDialog.qml" line="45"/>
         <source>About</source>
-        <extracomment>Information of the program, like name, description, vesion, etc..</extracomment>
+        <extracomment>Information of the program, like name, description, version, etc..</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
@@ -359,7 +359,7 @@
 <context>
     <name>PipewireScreenDev</name>
     <message>
-        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="217"/>
+        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="216"/>
         <source>PipeWire Screen</source>
         <translation type="unfinished"></translation>
     </message>
@@ -455,7 +455,7 @@
 <context>
     <name>Recording</name>
     <message>
-        <location filename="../../src/recording.cpp" line="372"/>
+        <location filename="../../src/recording.cpp" line="373"/>
         <source>%1/Video %2.%3</source>
         <translation type="unfinished"></translation>
     </message>
@@ -807,126 +807,216 @@
         <source>Choose the file to add as source</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>VideoInputOptions</name>
+    <message>
+        <location filename="../qml/VideoInputOptions.qml" line="61"/>
+        <source>Edit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qml/VideoInputOptions.qml" line="74"/>
+        <source>Remove</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>VideoInputs</name>
+    <message>
+        <location filename="../qml/VideoInputs.qml" line="56"/>
+        <source>Add source</source>
+        <translation type="unfinished"></translation>
+    </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="218"/>
-        <source>All Video Files</source>
+        <location filename="../qml/VideoInputs.qml" line="67"/>
+        <source>No webcams found</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>VideoLayer</name>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="221"/>
+        <location filename="../../src/videolayer.cpp" line="137"/>
         <source>3GP Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="222"/>
+        <location filename="../../src/videolayer.cpp" line="138"/>
         <source>AVI Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="224"/>
+        <location filename="../../src/videolayer.cpp" line="139"/>
+        <source>Windows Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="140"/>
+        <source>Microsoft Windows Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="142"/>
         <source>Flash Video</source>
         <extracomment>Adobe FLV Flash video</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="225"/>
+        <location filename="../../src/videolayer.cpp" line="143"/>
         <source>Animated GIF</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="226"/>
+        <location filename="../../src/videolayer.cpp" line="144"/>
+        <source>Graphic Interchange Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="145"/>
+        <source>Apple Icon Image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="146"/>
+        <source>Microsoft Windows Icon</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="147"/>
+        <source>Joint Photographic Experts Group</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="148"/>
         <source>MKV Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="227"/>
+        <location filename="../../src/videolayer.cpp" line="149"/>
         <source>Animated PNG</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="228"/>
+        <location filename="../../src/videolayer.cpp" line="150"/>
+        <source>Multiple-image Network Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="151"/>
         <source>QuickTime Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="229"/>
+        <location filename="../../src/videolayer.cpp" line="152"/>
         <source>MP4 Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="230"/>
+        <location filename="../../src/videolayer.cpp" line="153"/>
         <source>MPEG Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="231"/>
+        <location filename="../../src/videolayer.cpp" line="154"/>
         <source>Ogg Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="233"/>
+        <location filename="../../src/videolayer.cpp" line="155"/>
+        <source>Portable Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="156"/>
+        <source>Portable Graymap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="157"/>
+        <source>Portable Network Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="158"/>
+        <source>Portable Pixmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="160"/>
         <source>RealMedia Video</source>
         <extracomment>Don&apos;t translate &quot;RealMedia&quot;, leave it as is.</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="234"/>
+        <location filename="../../src/videolayer.cpp" line="161"/>
+        <source>Scalable Vector Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="162"/>
+        <source>Truevision TGA</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="163"/>
+        <source>Tagged Image File Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="164"/>
         <source>DVD Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="235"/>
+        <location filename="../../src/videolayer.cpp" line="165"/>
+        <source>Wireless Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="166"/>
         <source>WebM Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="237"/>
-        <source>Windows Media Video</source>
-        <extracomment>Also known as WMV, is a video file format.</extracomment>
+        <location filename="../../src/videolayer.cpp" line="167"/>
+        <source>WebP</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="238"/>
-        <source>All Files</source>
+        <location filename="../../src/videolayer.cpp" line="169"/>
+        <source>Windows Media Video</source>
+        <extracomment>Also known as WMV, is a video file format.</extracomment>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoInputOptions</name>
     <message>
-        <location filename="../qml/VideoInputOptions.qml" line="60"/>
-        <source>Edit</source>
+        <location filename="../../src/videolayer.cpp" line="170"/>
+        <source>X11 Bitmap</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputOptions.qml" line="72"/>
-        <source>Remove</source>
+        <location filename="../../src/videolayer.cpp" line="171"/>
+        <source>X11 Pixmap</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoInputs</name>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="56"/>
-        <source>Add source</source>
+        <location filename="../../src/videolayer.cpp" line="211"/>
+        <source>All Image and Video Files</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="67"/>
-        <source>No webcams found</source>
+        <location filename="../../src/videolayer.cpp" line="246"/>
+        <source>All Files</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoLayer</name>
     <message>
-        <location filename="../../src/videolayer.cpp" line="261"/>
+        <location filename="../../src/videolayer.cpp" line="388"/>
         <source>No Output</source>
         <extracomment>Disable video output, don&apos;t send the video to the output device.</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/videolayer.cpp" line="593"/>
+        <location filename="../../src/videolayer.cpp" line="723"/>
         <source>Virtual Camera</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1633,6 +1723,7 @@
     </message>
     <message>
         <location filename="../../../libAvKys/Plugins/DesktopCapture/share/qml/main.qml" line="48"/>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="64"/>
         <source>Frame rate</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2642,7 +2733,7 @@ background blur or image below.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="279"/>
+        <location filename="../qml/main.qml" line="282"/>
         <source>Take a photo</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2657,7 +2748,7 @@ background blur or image below.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="328"/>
+        <location filename="../qml/main.qml" line="331"/>
         <source>Record video</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2825,5 +2916,10 @@ duration (seconds)</source>
         <source>Luminance</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="47"/>
+        <source>Force frame rate</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- webcamoid-9.0.0.orig/StandAlone/share/ts/ko.ts
+++ webcamoid-9.0.0/StandAlone/share/ts/ko.ts
@@ -45,7 +45,7 @@
     <message>
         <location filename="../qml/AboutDialog.qml" line="45"/>
         <source>About</source>
-        <extracomment>Information of the program, like name, description, vesion, etc..</extracomment>
+        <extracomment>Information of the program, like name, description, version, etc..</extracomment>
         <translation type="unfinished">정보</translation>
     </message>
     <message>
@@ -359,7 +359,7 @@
 <context>
     <name>PipewireScreenDev</name>
     <message>
-        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="217"/>
+        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="216"/>
         <source>PipeWire Screen</source>
         <translation type="unfinished"></translation>
     </message>
@@ -455,7 +455,7 @@
 <context>
     <name>Recording</name>
     <message>
-        <location filename="../../src/recording.cpp" line="372"/>
+        <location filename="../../src/recording.cpp" line="373"/>
         <source>%1/Video %2.%3</source>
         <translation>%1/Video %2.%3</translation>
     </message>
@@ -807,126 +807,216 @@
         <source>Choose the file to add as source</source>
         <translation>입력으로 추가할 파일을 선택하세요</translation>
     </message>
+</context>
+<context>
+    <name>VideoInputOptions</name>
+    <message>
+        <location filename="../qml/VideoInputOptions.qml" line="61"/>
+        <source>Edit</source>
+        <translation>수정</translation>
+    </message>
+    <message>
+        <location filename="../qml/VideoInputOptions.qml" line="74"/>
+        <source>Remove</source>
+        <translation>삭제</translation>
+    </message>
+</context>
+<context>
+    <name>VideoInputs</name>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="218"/>
-        <source>All Video Files</source>
-        <translation>모든 비디오 파일</translation>
+        <location filename="../qml/VideoInputs.qml" line="56"/>
+        <source>Add source</source>
+        <translation>입력 추가</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="221"/>
+        <location filename="../qml/VideoInputs.qml" line="67"/>
+        <source>No webcams found</source>
+        <translation>웹캠이 없습니다</translation>
+    </message>
+</context>
+<context>
+    <name>VideoLayer</name>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="137"/>
         <source>3GP Video</source>
-        <translation>3GP 비디오</translation>
+        <translation type="unfinished">3GP 비디오</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="222"/>
+        <location filename="../../src/videolayer.cpp" line="138"/>
         <source>AVI Video</source>
-        <translation>AVI 비디오</translation>
+        <translation type="unfinished">AVI 비디오</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="224"/>
+        <location filename="../../src/videolayer.cpp" line="139"/>
+        <source>Windows Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="140"/>
+        <source>Microsoft Windows Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="142"/>
         <source>Flash Video</source>
         <extracomment>Adobe FLV Flash video</extracomment>
-        <translation>Flash 비디오</translation>
+        <translation type="unfinished">Flash 비디오</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="225"/>
+        <location filename="../../src/videolayer.cpp" line="143"/>
         <source>Animated GIF</source>
-        <translation>움직이는 GIF</translation>
+        <translation type="unfinished">움직이는 GIF</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="226"/>
+        <location filename="../../src/videolayer.cpp" line="144"/>
+        <source>Graphic Interchange Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="145"/>
+        <source>Apple Icon Image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="146"/>
+        <source>Microsoft Windows Icon</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="147"/>
+        <source>Joint Photographic Experts Group</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="148"/>
         <source>MKV Video</source>
-        <translation>MKV 비디오</translation>
+        <translation type="unfinished">MKV 비디오</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="227"/>
+        <location filename="../../src/videolayer.cpp" line="149"/>
         <source>Animated PNG</source>
-        <translation>움직이는 PNG</translation>
+        <translation type="unfinished">움직이는 PNG</translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="150"/>
+        <source>Multiple-image Network Graphics</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="228"/>
+        <location filename="../../src/videolayer.cpp" line="151"/>
         <source>QuickTime Video</source>
-        <translation>QuickTime 비디오</translation>
+        <translation type="unfinished">QuickTime 비디오</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="229"/>
+        <location filename="../../src/videolayer.cpp" line="152"/>
         <source>MP4 Video</source>
-        <translation>MP4 비디오</translation>
+        <translation type="unfinished">MP4 비디오</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="230"/>
+        <location filename="../../src/videolayer.cpp" line="153"/>
         <source>MPEG Video</source>
-        <translation>MPEG 비디오</translation>
+        <translation type="unfinished">MPEG 비디오</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="231"/>
+        <location filename="../../src/videolayer.cpp" line="154"/>
         <source>Ogg Video</source>
-        <translation>Ogg 비디오</translation>
+        <translation type="unfinished">Ogg 비디오</translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="155"/>
+        <source>Portable Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="156"/>
+        <source>Portable Graymap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="157"/>
+        <source>Portable Network Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="158"/>
+        <source>Portable Pixmap</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="233"/>
+        <location filename="../../src/videolayer.cpp" line="160"/>
         <source>RealMedia Video</source>
         <extracomment>Don&apos;t translate &quot;RealMedia&quot;, leave it as is.</extracomment>
-        <translation>RealMedia 비디오</translation>
+        <translation type="unfinished">RealMedia 비디오</translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="161"/>
+        <source>Scalable Vector Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="162"/>
+        <source>Truevision TGA</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="234"/>
+        <location filename="../../src/videolayer.cpp" line="163"/>
+        <source>Tagged Image File Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="164"/>
         <source>DVD Video</source>
-        <translation>DVD 비디오</translation>
+        <translation type="unfinished">DVD 비디오</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="235"/>
+        <location filename="../../src/videolayer.cpp" line="165"/>
+        <source>Wireless Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="166"/>
         <source>WebM Video</source>
-        <translation>WebM 비디오</translation>
+        <translation type="unfinished">WebM 비디오</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="237"/>
+        <location filename="../../src/videolayer.cpp" line="167"/>
+        <source>WebP</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="169"/>
         <source>Windows Media Video</source>
         <extracomment>Also known as WMV, is a video file format.</extracomment>
-        <translation>윈도우 미디어 비디오</translation>
+        <translation type="unfinished">윈도우 미디어 비디오</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="238"/>
-        <source>All Files</source>
-        <translation>모든 파일</translation>
-    </message>
-</context>
-<context>
-    <name>VideoInputOptions</name>
-    <message>
-        <location filename="../qml/VideoInputOptions.qml" line="60"/>
-        <source>Edit</source>
-        <translation>수정</translation>
+        <location filename="../../src/videolayer.cpp" line="170"/>
+        <source>X11 Bitmap</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputOptions.qml" line="72"/>
-        <source>Remove</source>
-        <translation>삭제</translation>
+        <location filename="../../src/videolayer.cpp" line="171"/>
+        <source>X11 Pixmap</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoInputs</name>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="56"/>
-        <source>Add source</source>
-        <translation>입력 추가</translation>
+        <location filename="../../src/videolayer.cpp" line="211"/>
+        <source>All Image and Video Files</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="67"/>
-        <source>No webcams found</source>
-        <translation>웹캠이 없습니다</translation>
+        <location filename="../../src/videolayer.cpp" line="246"/>
+        <source>All Files</source>
+        <translation type="unfinished">모든 파일</translation>
     </message>
-</context>
-<context>
-    <name>VideoLayer</name>
     <message>
-        <location filename="../../src/videolayer.cpp" line="261"/>
+        <location filename="../../src/videolayer.cpp" line="388"/>
         <source>No Output</source>
         <extracomment>Disable video output, don&apos;t send the video to the output device.</extracomment>
         <translation>출력 없음</translation>
     </message>
     <message>
-        <location filename="../../src/videolayer.cpp" line="593"/>
+        <location filename="../../src/videolayer.cpp" line="723"/>
         <source>Virtual Camera</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1633,6 +1723,7 @@
     </message>
     <message>
         <location filename="../../../libAvKys/Plugins/DesktopCapture/share/qml/main.qml" line="48"/>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="64"/>
         <source>Frame rate</source>
         <translation type="unfinished">프레임율</translation>
     </message>
@@ -2642,7 +2733,7 @@ background blur or image below.</source>
         <translation>%1 초</translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="279"/>
+        <location filename="../qml/main.qml" line="282"/>
         <source>Take a photo</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2657,7 +2748,7 @@ background blur or image below.</source>
         <translation type="unfinished">데일리 빌드</translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="328"/>
+        <location filename="../qml/main.qml" line="331"/>
         <source>Record video</source>
         <translation>비디오 녹화</translation>
     </message>
@@ -2825,5 +2916,10 @@ duration (seconds)</source>
         <source>Luminance</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="47"/>
+        <source>Force frame rate</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- webcamoid-9.0.0.orig/StandAlone/share/ts/nb_NO.ts
+++ webcamoid-9.0.0/StandAlone/share/ts/nb_NO.ts
@@ -45,7 +45,7 @@
     <message>
         <location filename="../qml/AboutDialog.qml" line="45"/>
         <source>About</source>
-        <extracomment>Information of the program, like name, description, vesion, etc..</extracomment>
+        <extracomment>Information of the program, like name, description, version, etc..</extracomment>
         <translation type="unfinished">Om</translation>
     </message>
     <message>
@@ -359,7 +359,7 @@
 <context>
     <name>PipewireScreenDev</name>
     <message>
-        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="217"/>
+        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="216"/>
         <source>PipeWire Screen</source>
         <translation>PipeWire-skjerm</translation>
     </message>
@@ -455,7 +455,7 @@
 <context>
     <name>Recording</name>
     <message>
-        <location filename="../../src/recording.cpp" line="372"/>
+        <location filename="../../src/recording.cpp" line="373"/>
         <source>%1/Video %2.%3</source>
         <translation>%1/Video %2.%3</translation>
     </message>
@@ -807,126 +807,216 @@
         <source>Choose the file to add as source</source>
         <translation type="unfinished">Velg fil å legge til som kilde</translation>
     </message>
+</context>
+<context>
+    <name>VideoInputOptions</name>
+    <message>
+        <location filename="../qml/VideoInputOptions.qml" line="61"/>
+        <source>Edit</source>
+        <translation type="unfinished">Rediger</translation>
+    </message>
+    <message>
+        <location filename="../qml/VideoInputOptions.qml" line="74"/>
+        <source>Remove</source>
+        <translation type="unfinished">Fjern</translation>
+    </message>
+</context>
+<context>
+    <name>VideoInputs</name>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="218"/>
-        <source>All Video Files</source>
-        <translation type="unfinished">Alle videofiler</translation>
+        <location filename="../qml/VideoInputs.qml" line="56"/>
+        <source>Add source</source>
+        <translation>Legg til kilde</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="221"/>
+        <location filename="../qml/VideoInputs.qml" line="67"/>
+        <source>No webcams found</source>
+        <translation type="unfinished">Fant ingen nettkamera</translation>
+    </message>
+</context>
+<context>
+    <name>VideoLayer</name>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="137"/>
         <source>3GP Video</source>
         <translation type="unfinished">3GP-video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="222"/>
+        <location filename="../../src/videolayer.cpp" line="138"/>
         <source>AVI Video</source>
         <translation type="unfinished">AVI-video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="224"/>
+        <location filename="../../src/videolayer.cpp" line="139"/>
+        <source>Windows Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="140"/>
+        <source>Microsoft Windows Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="142"/>
         <source>Flash Video</source>
         <extracomment>Adobe FLV Flash video</extracomment>
         <translation type="unfinished">Flash-video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="225"/>
+        <location filename="../../src/videolayer.cpp" line="143"/>
         <source>Animated GIF</source>
         <translation type="unfinished">Animert GIF</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="226"/>
+        <location filename="../../src/videolayer.cpp" line="144"/>
+        <source>Graphic Interchange Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="145"/>
+        <source>Apple Icon Image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="146"/>
+        <source>Microsoft Windows Icon</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="147"/>
+        <source>Joint Photographic Experts Group</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="148"/>
         <source>MKV Video</source>
         <translation type="unfinished">MKV-video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="227"/>
+        <location filename="../../src/videolayer.cpp" line="149"/>
         <source>Animated PNG</source>
         <translation type="unfinished">Animert PNG</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="228"/>
+        <location filename="../../src/videolayer.cpp" line="150"/>
+        <source>Multiple-image Network Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="151"/>
         <source>QuickTime Video</source>
         <translation type="unfinished">QuickTime-video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="229"/>
+        <location filename="../../src/videolayer.cpp" line="152"/>
         <source>MP4 Video</source>
         <translation type="unfinished">MP4-video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="230"/>
+        <location filename="../../src/videolayer.cpp" line="153"/>
         <source>MPEG Video</source>
         <translation type="unfinished">MPEG-video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="231"/>
+        <location filename="../../src/videolayer.cpp" line="154"/>
         <source>Ogg Video</source>
         <translation type="unfinished">Ogg-video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="233"/>
+        <location filename="../../src/videolayer.cpp" line="155"/>
+        <source>Portable Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="156"/>
+        <source>Portable Graymap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="157"/>
+        <source>Portable Network Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="158"/>
+        <source>Portable Pixmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="160"/>
         <source>RealMedia Video</source>
         <extracomment>Don&apos;t translate &quot;RealMedia&quot;, leave it as is.</extracomment>
         <translation type="unfinished">RealMedia-video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="234"/>
+        <location filename="../../src/videolayer.cpp" line="161"/>
+        <source>Scalable Vector Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="162"/>
+        <source>Truevision TGA</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="163"/>
+        <source>Tagged Image File Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="164"/>
         <source>DVD Video</source>
         <translation type="unfinished">DVD-video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="235"/>
+        <location filename="../../src/videolayer.cpp" line="165"/>
+        <source>Wireless Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="166"/>
         <source>WebM Video</source>
         <translation type="unfinished">WebM-video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="237"/>
+        <location filename="../../src/videolayer.cpp" line="167"/>
+        <source>WebP</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="169"/>
         <source>Windows Media Video</source>
         <extracomment>Also known as WMV, is a video file format.</extracomment>
         <translation type="unfinished">Windows Media-video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="238"/>
-        <source>All Files</source>
-        <translation type="unfinished">Alle filer</translation>
-    </message>
-</context>
-<context>
-    <name>VideoInputOptions</name>
-    <message>
-        <location filename="../qml/VideoInputOptions.qml" line="60"/>
-        <source>Edit</source>
-        <translation type="unfinished">Rediger</translation>
+        <location filename="../../src/videolayer.cpp" line="170"/>
+        <source>X11 Bitmap</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputOptions.qml" line="72"/>
-        <source>Remove</source>
-        <translation type="unfinished">Fjern</translation>
+        <location filename="../../src/videolayer.cpp" line="171"/>
+        <source>X11 Pixmap</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoInputs</name>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="56"/>
-        <source>Add source</source>
-        <translation>Legg til kilde</translation>
+        <location filename="../../src/videolayer.cpp" line="211"/>
+        <source>All Image and Video Files</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="67"/>
-        <source>No webcams found</source>
-        <translation type="unfinished">Fant ingen nettkamera</translation>
+        <location filename="../../src/videolayer.cpp" line="246"/>
+        <source>All Files</source>
+        <translation type="unfinished">Alle filer</translation>
     </message>
-</context>
-<context>
-    <name>VideoLayer</name>
     <message>
-        <location filename="../../src/videolayer.cpp" line="261"/>
+        <location filename="../../src/videolayer.cpp" line="388"/>
         <source>No Output</source>
         <extracomment>Disable video output, don&apos;t send the video to the output device.</extracomment>
         <translation>Ingen utdata</translation>
     </message>
     <message>
-        <location filename="../../src/videolayer.cpp" line="593"/>
+        <location filename="../../src/videolayer.cpp" line="723"/>
         <source>Virtual Camera</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1633,6 +1723,7 @@
     </message>
     <message>
         <location filename="../../../libAvKys/Plugins/DesktopCapture/share/qml/main.qml" line="48"/>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="64"/>
         <source>Frame rate</source>
         <translation>Rammetakt</translation>
     </message>
@@ -2642,7 +2733,7 @@ background blur or image below.</source>
         <translation type="unfinished">%1 sekunder</translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="279"/>
+        <location filename="../qml/main.qml" line="282"/>
         <source>Take a photo</source>
         <translation>Knips et bilde</translation>
     </message>
@@ -2657,7 +2748,7 @@ background blur or image below.</source>
         <translation type="unfinished">Dagsbygg</translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="328"/>
+        <location filename="../qml/main.qml" line="331"/>
         <source>Record video</source>
         <translation>Ta opp video</translation>
     </message>
@@ -2825,5 +2916,10 @@ duration (seconds)</source>
         <source>Luminance</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="47"/>
+        <source>Force frame rate</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- webcamoid-9.0.0.orig/StandAlone/share/ts/nl.ts
+++ webcamoid-9.0.0/StandAlone/share/ts/nl.ts
@@ -45,7 +45,7 @@
     <message>
         <location filename="../qml/AboutDialog.qml" line="45"/>
         <source>About</source>
-        <extracomment>Information of the program, like name, description, vesion, etc..</extracomment>
+        <extracomment>Information of the program, like name, description, version, etc..</extracomment>
         <translation>Over</translation>
     </message>
     <message>
@@ -359,7 +359,7 @@
 <context>
     <name>PipewireScreenDev</name>
     <message>
-        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="217"/>
+        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="216"/>
         <source>PipeWire Screen</source>
         <translation>PipeWire-scherm</translation>
     </message>
@@ -455,7 +455,7 @@
 <context>
     <name>Recording</name>
     <message>
-        <location filename="../../src/recording.cpp" line="372"/>
+        <location filename="../../src/recording.cpp" line="373"/>
         <source>%1/Video %2.%3</source>
         <translation>%1/video %2.%3</translation>
     </message>
@@ -807,126 +807,216 @@
         <source>Choose the file to add as source</source>
         <translation>Kies het bestand dat je wilt toevoegen als bron</translation>
     </message>
+</context>
+<context>
+    <name>VideoInputOptions</name>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="218"/>
-        <source>All Video Files</source>
-        <translation>Alle videobestanden</translation>
+        <location filename="../qml/VideoInputOptions.qml" line="61"/>
+        <source>Edit</source>
+        <translation>Bewerken</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="221"/>
+        <location filename="../qml/VideoInputOptions.qml" line="74"/>
+        <source>Remove</source>
+        <translation>Verwijderen</translation>
+    </message>
+</context>
+<context>
+    <name>VideoInputs</name>
+    <message>
+        <location filename="../qml/VideoInputs.qml" line="56"/>
+        <source>Add source</source>
+        <translation>Invoer toevoegen</translation>
+    </message>
+    <message>
+        <location filename="../qml/VideoInputs.qml" line="67"/>
+        <source>No webcams found</source>
+        <translation>Geen webcams aangetroffen</translation>
+    </message>
+</context>
+<context>
+    <name>VideoLayer</name>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="137"/>
         <source>3GP Video</source>
-        <translation>3GP-video</translation>
+        <translation type="unfinished">3GP-video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="222"/>
+        <location filename="../../src/videolayer.cpp" line="138"/>
         <source>AVI Video</source>
-        <translation>AVI-video</translation>
+        <translation type="unfinished">AVI-video</translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="139"/>
+        <source>Windows Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="140"/>
+        <source>Microsoft Windows Cursor</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="224"/>
+        <location filename="../../src/videolayer.cpp" line="142"/>
         <source>Flash Video</source>
         <extracomment>Adobe FLV Flash video</extracomment>
-        <translation>Flash-video</translation>
+        <translation type="unfinished">Flash-video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="225"/>
+        <location filename="../../src/videolayer.cpp" line="143"/>
         <source>Animated GIF</source>
-        <translation>Bewegend GIF-bestand</translation>
+        <translation type="unfinished">Bewegend GIF-bestand</translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="144"/>
+        <source>Graphic Interchange Format</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="226"/>
+        <location filename="../../src/videolayer.cpp" line="145"/>
+        <source>Apple Icon Image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="146"/>
+        <source>Microsoft Windows Icon</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="147"/>
+        <source>Joint Photographic Experts Group</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="148"/>
         <source>MKV Video</source>
-        <translation>MKV-video</translation>
+        <translation type="unfinished">MKV-video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="227"/>
+        <location filename="../../src/videolayer.cpp" line="149"/>
         <source>Animated PNG</source>
-        <translation>Bewegend PNG-bestand</translation>
+        <translation type="unfinished">Bewegend PNG-bestand</translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="150"/>
+        <source>Multiple-image Network Graphics</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="228"/>
+        <location filename="../../src/videolayer.cpp" line="151"/>
         <source>QuickTime Video</source>
-        <translation>QuickTime-video</translation>
+        <translation type="unfinished">QuickTime-video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="229"/>
+        <location filename="../../src/videolayer.cpp" line="152"/>
         <source>MP4 Video</source>
-        <translation>MP4-video</translation>
+        <translation type="unfinished">MP4-video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="230"/>
+        <location filename="../../src/videolayer.cpp" line="153"/>
         <source>MPEG Video</source>
-        <translation>MPEG-video</translation>
+        <translation type="unfinished">MPEG-video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="231"/>
+        <location filename="../../src/videolayer.cpp" line="154"/>
         <source>Ogg Video</source>
-        <translation>Ogg-video</translation>
+        <translation type="unfinished">Ogg-video</translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="155"/>
+        <source>Portable Bitmap</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="233"/>
+        <location filename="../../src/videolayer.cpp" line="156"/>
+        <source>Portable Graymap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="157"/>
+        <source>Portable Network Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="158"/>
+        <source>Portable Pixmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="160"/>
         <source>RealMedia Video</source>
         <extracomment>Don&apos;t translate &quot;RealMedia&quot;, leave it as is.</extracomment>
-        <translation>RealMedia-video</translation>
+        <translation type="unfinished">RealMedia-video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="234"/>
+        <location filename="../../src/videolayer.cpp" line="161"/>
+        <source>Scalable Vector Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="162"/>
+        <source>Truevision TGA</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="163"/>
+        <source>Tagged Image File Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="164"/>
         <source>DVD Video</source>
-        <translation>DVD-video</translation>
+        <translation type="unfinished">DVD-video</translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="165"/>
+        <source>Wireless Bitmap</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="235"/>
+        <location filename="../../src/videolayer.cpp" line="166"/>
         <source>WebM Video</source>
-        <translation>WebM-video</translation>
+        <translation type="unfinished">WebM-video</translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="167"/>
+        <source>WebP</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="237"/>
+        <location filename="../../src/videolayer.cpp" line="169"/>
         <source>Windows Media Video</source>
         <extracomment>Also known as WMV, is a video file format.</extracomment>
-        <translation>Windows Media Video</translation>
+        <translation type="unfinished">Windows Media Video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="238"/>
-        <source>All Files</source>
-        <translation>Alle bestanden</translation>
+        <location filename="../../src/videolayer.cpp" line="170"/>
+        <source>X11 Bitmap</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoInputOptions</name>
     <message>
-        <location filename="../qml/VideoInputOptions.qml" line="60"/>
-        <source>Edit</source>
-        <translation>Bewerken</translation>
-    </message>
-    <message>
-        <location filename="../qml/VideoInputOptions.qml" line="72"/>
-        <source>Remove</source>
-        <translation>Verwijderen</translation>
+        <location filename="../../src/videolayer.cpp" line="171"/>
+        <source>X11 Pixmap</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoInputs</name>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="56"/>
-        <source>Add source</source>
-        <translation>Invoer toevoegen</translation>
+        <location filename="../../src/videolayer.cpp" line="211"/>
+        <source>All Image and Video Files</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="67"/>
-        <source>No webcams found</source>
-        <translation>Geen webcams aangetroffen</translation>
+        <location filename="../../src/videolayer.cpp" line="246"/>
+        <source>All Files</source>
+        <translation type="unfinished">Alle bestanden</translation>
     </message>
-</context>
-<context>
-    <name>VideoLayer</name>
     <message>
-        <location filename="../../src/videolayer.cpp" line="261"/>
+        <location filename="../../src/videolayer.cpp" line="388"/>
         <source>No Output</source>
         <extracomment>Disable video output, don&apos;t send the video to the output device.</extracomment>
         <translation>Geen uitvoer</translation>
     </message>
     <message>
-        <location filename="../../src/videolayer.cpp" line="593"/>
+        <location filename="../../src/videolayer.cpp" line="723"/>
         <source>Virtual Camera</source>
         <translation>Virtuele camera</translation>
     </message>
@@ -1633,6 +1723,7 @@
     </message>
     <message>
         <location filename="../../../libAvKys/Plugins/DesktopCapture/share/qml/main.qml" line="48"/>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="64"/>
         <source>Frame rate</source>
         <translation>Framerate</translation>
     </message>
@@ -2643,7 +2734,7 @@ aangaande achtergrondvervaging.</transla
         <translation>%1 seconden</translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="279"/>
+        <location filename="../qml/main.qml" line="282"/>
         <source>Take a photo</source>
         <translation>Foto maken</translation>
     </message>
@@ -2658,7 +2749,7 @@ aangaande achtergrondvervaging.</transla
         <translation>Dagelijkse ontwikkelingsversie</translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="328"/>
+        <location filename="../qml/main.qml" line="331"/>
         <source>Record video</source>
         <translation>Video opnemen</translation>
     </message>
@@ -2827,5 +2918,10 @@ duur (in seconden)</translation>
         <source>Luminance</source>
         <translation>Helderheid</translation>
     </message>
+    <message>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="47"/>
+        <source>Force frame rate</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- webcamoid-9.0.0.orig/StandAlone/share/ts/oc.ts
+++ webcamoid-9.0.0/StandAlone/share/ts/oc.ts
@@ -45,7 +45,7 @@
     <message>
         <location filename="../qml/AboutDialog.qml" line="45"/>
         <source>About</source>
-        <extracomment>Information of the program, like name, description, vesion, etc..</extracomment>
+        <extracomment>Information of the program, like name, description, version, etc..</extracomment>
         <translation type="unfinished">A prepaus de</translation>
     </message>
     <message>
@@ -359,7 +359,7 @@
 <context>
     <name>PipewireScreenDev</name>
     <message>
-        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="217"/>
+        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="216"/>
         <source>PipeWire Screen</source>
         <translation type="unfinished"></translation>
     </message>
@@ -455,7 +455,7 @@
 <context>
     <name>Recording</name>
     <message>
-        <location filename="../../src/recording.cpp" line="372"/>
+        <location filename="../../src/recording.cpp" line="373"/>
         <source>%1/Video %2.%3</source>
         <translation type="unfinished"></translation>
     </message>
@@ -807,126 +807,216 @@
         <source>Choose the file to add as source</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>VideoInputOptions</name>
+    <message>
+        <location filename="../qml/VideoInputOptions.qml" line="61"/>
+        <source>Edit</source>
+        <translation>Editar</translation>
+    </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="218"/>
-        <source>All Video Files</source>
+        <location filename="../qml/VideoInputOptions.qml" line="74"/>
+        <source>Remove</source>
+        <translation>Levar</translation>
+    </message>
+</context>
+<context>
+    <name>VideoInputs</name>
+    <message>
+        <location filename="../qml/VideoInputs.qml" line="56"/>
+        <source>Add source</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qml/VideoInputs.qml" line="67"/>
+        <source>No webcams found</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>VideoLayer</name>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="221"/>
+        <location filename="../../src/videolayer.cpp" line="137"/>
         <source>3GP Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="222"/>
+        <location filename="../../src/videolayer.cpp" line="138"/>
         <source>AVI Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="224"/>
+        <location filename="../../src/videolayer.cpp" line="139"/>
+        <source>Windows Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="140"/>
+        <source>Microsoft Windows Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="142"/>
         <source>Flash Video</source>
         <extracomment>Adobe FLV Flash video</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="225"/>
+        <location filename="../../src/videolayer.cpp" line="143"/>
         <source>Animated GIF</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="226"/>
+        <location filename="../../src/videolayer.cpp" line="144"/>
+        <source>Graphic Interchange Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="145"/>
+        <source>Apple Icon Image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="146"/>
+        <source>Microsoft Windows Icon</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="147"/>
+        <source>Joint Photographic Experts Group</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="148"/>
         <source>MKV Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="227"/>
+        <location filename="../../src/videolayer.cpp" line="149"/>
         <source>Animated PNG</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="228"/>
+        <location filename="../../src/videolayer.cpp" line="150"/>
+        <source>Multiple-image Network Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="151"/>
         <source>QuickTime Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="229"/>
+        <location filename="../../src/videolayer.cpp" line="152"/>
         <source>MP4 Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="230"/>
+        <location filename="../../src/videolayer.cpp" line="153"/>
         <source>MPEG Video</source>
-        <translation>Vidèo MPEG</translation>
+        <translation type="unfinished">Vidèo MPEG</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="231"/>
+        <location filename="../../src/videolayer.cpp" line="154"/>
         <source>Ogg Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="233"/>
+        <location filename="../../src/videolayer.cpp" line="155"/>
+        <source>Portable Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="156"/>
+        <source>Portable Graymap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="157"/>
+        <source>Portable Network Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="158"/>
+        <source>Portable Pixmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="160"/>
         <source>RealMedia Video</source>
         <extracomment>Don&apos;t translate &quot;RealMedia&quot;, leave it as is.</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="234"/>
+        <location filename="../../src/videolayer.cpp" line="161"/>
+        <source>Scalable Vector Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="162"/>
+        <source>Truevision TGA</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="163"/>
+        <source>Tagged Image File Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="164"/>
         <source>DVD Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="235"/>
-        <source>WebM Video</source>
+        <location filename="../../src/videolayer.cpp" line="165"/>
+        <source>Wireless Bitmap</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="237"/>
-        <source>Windows Media Video</source>
-        <extracomment>Also known as WMV, is a video file format.</extracomment>
+        <location filename="../../src/videolayer.cpp" line="166"/>
+        <source>WebM Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="238"/>
-        <source>All Files</source>
-        <translation>Totes los fichièrs</translation>
+        <location filename="../../src/videolayer.cpp" line="167"/>
+        <source>WebP</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoInputOptions</name>
     <message>
-        <location filename="../qml/VideoInputOptions.qml" line="60"/>
-        <source>Edit</source>
-        <translation>Editar</translation>
+        <location filename="../../src/videolayer.cpp" line="169"/>
+        <source>Windows Media Video</source>
+        <extracomment>Also known as WMV, is a video file format.</extracomment>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputOptions.qml" line="72"/>
-        <source>Remove</source>
-        <translation>Levar</translation>
+        <location filename="../../src/videolayer.cpp" line="170"/>
+        <source>X11 Bitmap</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoInputs</name>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="56"/>
-        <source>Add source</source>
+        <location filename="../../src/videolayer.cpp" line="171"/>
+        <source>X11 Pixmap</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="67"/>
-        <source>No webcams found</source>
+        <location filename="../../src/videolayer.cpp" line="211"/>
+        <source>All Image and Video Files</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoLayer</name>
     <message>
-        <location filename="../../src/videolayer.cpp" line="261"/>
+        <location filename="../../src/videolayer.cpp" line="246"/>
+        <source>All Files</source>
+        <translation type="unfinished">Totes los fichièrs</translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="388"/>
         <source>No Output</source>
         <extracomment>Disable video output, don&apos;t send the video to the output device.</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/videolayer.cpp" line="593"/>
+        <location filename="../../src/videolayer.cpp" line="723"/>
         <source>Virtual Camera</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1633,6 +1723,7 @@
     </message>
     <message>
         <location filename="../../../libAvKys/Plugins/DesktopCapture/share/qml/main.qml" line="48"/>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="64"/>
         <source>Frame rate</source>
         <translation>Frequéncia d&apos;imatge</translation>
     </message>
@@ -2642,7 +2733,7 @@ background blur or image below.</source>
         <translation>%1 segondas</translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="279"/>
+        <location filename="../qml/main.qml" line="282"/>
         <source>Take a photo</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2657,7 +2748,7 @@ background blur or image below.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="328"/>
+        <location filename="../qml/main.qml" line="331"/>
         <source>Record video</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2825,5 +2916,10 @@ duration (seconds)</source>
         <source>Luminance</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="47"/>
+        <source>Force frame rate</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- webcamoid-9.0.0.orig/StandAlone/share/ts/pl.ts
+++ webcamoid-9.0.0/StandAlone/share/ts/pl.ts
@@ -45,7 +45,7 @@
     <message>
         <location filename="../qml/AboutDialog.qml" line="45"/>
         <source>About</source>
-        <extracomment>Information of the program, like name, description, vesion, etc..</extracomment>
+        <extracomment>Information of the program, like name, description, version, etc..</extracomment>
         <translation type="unfinished">O programie</translation>
     </message>
     <message>
@@ -359,7 +359,7 @@
 <context>
     <name>PipewireScreenDev</name>
     <message>
-        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="217"/>
+        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="216"/>
         <source>PipeWire Screen</source>
         <translation type="unfinished"></translation>
     </message>
@@ -455,7 +455,7 @@
 <context>
     <name>Recording</name>
     <message>
-        <location filename="../../src/recording.cpp" line="372"/>
+        <location filename="../../src/recording.cpp" line="373"/>
         <source>%1/Video %2.%3</source>
         <translation>%1/Wideo %2.%3</translation>
     </message>
@@ -807,126 +807,216 @@
         <source>Choose the file to add as source</source>
         <translation type="unfinished">Wybierz plik, który chcesz dodać jako źródło</translation>
     </message>
+</context>
+<context>
+    <name>VideoInputOptions</name>
+    <message>
+        <location filename="../qml/VideoInputOptions.qml" line="61"/>
+        <source>Edit</source>
+        <translation>Edycja</translation>
+    </message>
+    <message>
+        <location filename="../qml/VideoInputOptions.qml" line="74"/>
+        <source>Remove</source>
+        <translation>Usuń</translation>
+    </message>
+</context>
+<context>
+    <name>VideoInputs</name>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="218"/>
-        <source>All Video Files</source>
-        <translation type="unfinished">Wszystkie pliki wideo</translation>
+        <location filename="../qml/VideoInputs.qml" line="56"/>
+        <source>Add source</source>
+        <translation>Dodaj źródło</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="221"/>
+        <location filename="../qml/VideoInputs.qml" line="67"/>
+        <source>No webcams found</source>
+        <translation>Nie znaleziono kamer internetowych</translation>
+    </message>
+</context>
+<context>
+    <name>VideoLayer</name>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="137"/>
         <source>3GP Video</source>
         <translation type="unfinished">Wideo 3GP</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="222"/>
+        <location filename="../../src/videolayer.cpp" line="138"/>
         <source>AVI Video</source>
         <translation type="unfinished">Wideo AVI</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="224"/>
+        <location filename="../../src/videolayer.cpp" line="139"/>
+        <source>Windows Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="140"/>
+        <source>Microsoft Windows Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="142"/>
         <source>Flash Video</source>
         <extracomment>Adobe FLV Flash video</extracomment>
         <translation type="unfinished">Flash Video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="225"/>
+        <location filename="../../src/videolayer.cpp" line="143"/>
         <source>Animated GIF</source>
         <translation type="unfinished">Animowany GIF</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="226"/>
+        <location filename="../../src/videolayer.cpp" line="144"/>
+        <source>Graphic Interchange Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="145"/>
+        <source>Apple Icon Image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="146"/>
+        <source>Microsoft Windows Icon</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="147"/>
+        <source>Joint Photographic Experts Group</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="148"/>
         <source>MKV Video</source>
         <translation type="unfinished">Wideo MKV</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="227"/>
+        <location filename="../../src/videolayer.cpp" line="149"/>
         <source>Animated PNG</source>
         <translation type="unfinished">Animowany PNG</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="228"/>
+        <location filename="../../src/videolayer.cpp" line="150"/>
+        <source>Multiple-image Network Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="151"/>
         <source>QuickTime Video</source>
         <translation type="unfinished">Wideo QuickTime</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="229"/>
+        <location filename="../../src/videolayer.cpp" line="152"/>
         <source>MP4 Video</source>
         <translation type="unfinished">Wideo MP4</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="230"/>
+        <location filename="../../src/videolayer.cpp" line="153"/>
         <source>MPEG Video</source>
         <translation type="unfinished">Wideo MPEG</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="231"/>
+        <location filename="../../src/videolayer.cpp" line="154"/>
         <source>Ogg Video</source>
         <translation type="unfinished">Wideo Ogg</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="233"/>
+        <location filename="../../src/videolayer.cpp" line="155"/>
+        <source>Portable Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="156"/>
+        <source>Portable Graymap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="157"/>
+        <source>Portable Network Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="158"/>
+        <source>Portable Pixmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="160"/>
         <source>RealMedia Video</source>
         <extracomment>Don&apos;t translate &quot;RealMedia&quot;, leave it as is.</extracomment>
         <translation type="unfinished">Wideo RealMedia</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="234"/>
+        <location filename="../../src/videolayer.cpp" line="161"/>
+        <source>Scalable Vector Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="162"/>
+        <source>Truevision TGA</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="163"/>
+        <source>Tagged Image File Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="164"/>
         <source>DVD Video</source>
         <translation type="unfinished">DVD Video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="235"/>
+        <location filename="../../src/videolayer.cpp" line="165"/>
+        <source>Wireless Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="166"/>
         <source>WebM Video</source>
         <translation type="unfinished">Wideo WebM</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="237"/>
+        <location filename="../../src/videolayer.cpp" line="167"/>
+        <source>WebP</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="169"/>
         <source>Windows Media Video</source>
         <extracomment>Also known as WMV, is a video file format.</extracomment>
         <translation type="unfinished">Windows Media Video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="238"/>
-        <source>All Files</source>
-        <translation type="unfinished">Wszystkie pliki</translation>
-    </message>
-</context>
-<context>
-    <name>VideoInputOptions</name>
-    <message>
-        <location filename="../qml/VideoInputOptions.qml" line="60"/>
-        <source>Edit</source>
-        <translation>Edycja</translation>
+        <location filename="../../src/videolayer.cpp" line="170"/>
+        <source>X11 Bitmap</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputOptions.qml" line="72"/>
-        <source>Remove</source>
-        <translation>Usuń</translation>
+        <location filename="../../src/videolayer.cpp" line="171"/>
+        <source>X11 Pixmap</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoInputs</name>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="56"/>
-        <source>Add source</source>
-        <translation>Dodaj źródło</translation>
+        <location filename="../../src/videolayer.cpp" line="211"/>
+        <source>All Image and Video Files</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="67"/>
-        <source>No webcams found</source>
-        <translation>Nie znaleziono kamer internetowych</translation>
+        <location filename="../../src/videolayer.cpp" line="246"/>
+        <source>All Files</source>
+        <translation type="unfinished">Wszystkie pliki</translation>
     </message>
-</context>
-<context>
-    <name>VideoLayer</name>
     <message>
-        <location filename="../../src/videolayer.cpp" line="261"/>
+        <location filename="../../src/videolayer.cpp" line="388"/>
         <source>No Output</source>
         <extracomment>Disable video output, don&apos;t send the video to the output device.</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/videolayer.cpp" line="593"/>
+        <location filename="../../src/videolayer.cpp" line="723"/>
         <source>Virtual Camera</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1633,6 +1723,7 @@
     </message>
     <message>
         <location filename="../../../libAvKys/Plugins/DesktopCapture/share/qml/main.qml" line="48"/>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="64"/>
         <source>Frame rate</source>
         <translation>Częstotliwość wyświetlania klatek</translation>
     </message>
@@ -2642,7 +2733,7 @@ background blur or image below.</source>
         <translation>%1 sekund</translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="279"/>
+        <location filename="../qml/main.qml" line="282"/>
         <source>Take a photo</source>
         <translation>Zrób zdjęcie</translation>
     </message>
@@ -2657,7 +2748,7 @@ background blur or image below.</source>
         <translation type="unfinished">Codzienna kompilacja</translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="328"/>
+        <location filename="../qml/main.qml" line="331"/>
         <source>Record video</source>
         <translation>Nagraj wideo</translation>
     </message>
@@ -2825,5 +2916,10 @@ duration (seconds)</source>
         <source>Luminance</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="47"/>
+        <source>Force frame rate</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- webcamoid-9.0.0.orig/StandAlone/share/ts/pt.ts
+++ webcamoid-9.0.0/StandAlone/share/ts/pt.ts
@@ -45,7 +45,7 @@
     <message>
         <location filename="../qml/AboutDialog.qml" line="45"/>
         <source>About</source>
-        <extracomment>Information of the program, like name, description, vesion, etc..</extracomment>
+        <extracomment>Information of the program, like name, description, version, etc..</extracomment>
         <translation type="unfinished">Sobre</translation>
     </message>
     <message>
@@ -359,7 +359,7 @@
 <context>
     <name>PipewireScreenDev</name>
     <message>
-        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="217"/>
+        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="216"/>
         <source>PipeWire Screen</source>
         <translation type="unfinished"></translation>
     </message>
@@ -455,7 +455,7 @@
 <context>
     <name>Recording</name>
     <message>
-        <location filename="../../src/recording.cpp" line="372"/>
+        <location filename="../../src/recording.cpp" line="373"/>
         <source>%1/Video %2.%3</source>
         <translation>%1/Vídeo %2.%3</translation>
     </message>
@@ -807,126 +807,216 @@
         <source>Choose the file to add as source</source>
         <translation>Escolher ficheiro para adicionar como fonte</translation>
     </message>
+</context>
+<context>
+    <name>VideoInputOptions</name>
+    <message>
+        <location filename="../qml/VideoInputOptions.qml" line="61"/>
+        <source>Edit</source>
+        <translation>Editar</translation>
+    </message>
+    <message>
+        <location filename="../qml/VideoInputOptions.qml" line="74"/>
+        <source>Remove</source>
+        <translation>Remover</translation>
+    </message>
+</context>
+<context>
+    <name>VideoInputs</name>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="218"/>
-        <source>All Video Files</source>
-        <translation>Todos os Ficheiros de Vídeo</translation>
+        <location filename="../qml/VideoInputs.qml" line="56"/>
+        <source>Add source</source>
+        <translation>Adicionar fonte</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="221"/>
+        <location filename="../qml/VideoInputs.qml" line="67"/>
+        <source>No webcams found</source>
+        <translation>Nenhuma webcam encontrada</translation>
+    </message>
+</context>
+<context>
+    <name>VideoLayer</name>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="137"/>
         <source>3GP Video</source>
-        <translation>Vídeo 3GP</translation>
+        <translation type="unfinished">Vídeo 3GP</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="222"/>
+        <location filename="../../src/videolayer.cpp" line="138"/>
         <source>AVI Video</source>
-        <translation>Vídeo AVI</translation>
+        <translation type="unfinished">Vídeo AVI</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="224"/>
+        <location filename="../../src/videolayer.cpp" line="139"/>
+        <source>Windows Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="140"/>
+        <source>Microsoft Windows Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="142"/>
         <source>Flash Video</source>
         <extracomment>Adobe FLV Flash video</extracomment>
-        <translation>Vídeo Flash</translation>
+        <translation type="unfinished">Vídeo Flash</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="225"/>
+        <location filename="../../src/videolayer.cpp" line="143"/>
         <source>Animated GIF</source>
-        <translation>GIF Animada</translation>
+        <translation type="unfinished">GIF Animada</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="226"/>
+        <location filename="../../src/videolayer.cpp" line="144"/>
+        <source>Graphic Interchange Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="145"/>
+        <source>Apple Icon Image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="146"/>
+        <source>Microsoft Windows Icon</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="147"/>
+        <source>Joint Photographic Experts Group</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="148"/>
         <source>MKV Video</source>
-        <translation>Vídeo MKV</translation>
+        <translation type="unfinished">Vídeo MKV</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="227"/>
+        <location filename="../../src/videolayer.cpp" line="149"/>
         <source>Animated PNG</source>
-        <translation>PNG Animada</translation>
+        <translation type="unfinished">PNG Animada</translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="150"/>
+        <source>Multiple-image Network Graphics</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="228"/>
+        <location filename="../../src/videolayer.cpp" line="151"/>
         <source>QuickTime Video</source>
-        <translation>Vídeo QuickTime</translation>
+        <translation type="unfinished">Vídeo QuickTime</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="229"/>
+        <location filename="../../src/videolayer.cpp" line="152"/>
         <source>MP4 Video</source>
-        <translation>Vídeo MP4</translation>
+        <translation type="unfinished">Vídeo MP4</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="230"/>
+        <location filename="../../src/videolayer.cpp" line="153"/>
         <source>MPEG Video</source>
-        <translation>Vídeo MPEG</translation>
+        <translation type="unfinished">Vídeo MPEG</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="231"/>
+        <location filename="../../src/videolayer.cpp" line="154"/>
         <source>Ogg Video</source>
-        <translation>Vídeo Ogg</translation>
+        <translation type="unfinished">Vídeo Ogg</translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="155"/>
+        <source>Portable Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="156"/>
+        <source>Portable Graymap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="157"/>
+        <source>Portable Network Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="158"/>
+        <source>Portable Pixmap</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="233"/>
+        <location filename="../../src/videolayer.cpp" line="160"/>
         <source>RealMedia Video</source>
         <extracomment>Don&apos;t translate &quot;RealMedia&quot;, leave it as is.</extracomment>
-        <translation>Vídeo RealMedia</translation>
+        <translation type="unfinished">Vídeo RealMedia</translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="161"/>
+        <source>Scalable Vector Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="162"/>
+        <source>Truevision TGA</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="234"/>
+        <location filename="../../src/videolayer.cpp" line="163"/>
+        <source>Tagged Image File Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="164"/>
         <source>DVD Video</source>
-        <translation>Vídeo DVD</translation>
+        <translation type="unfinished">Vídeo DVD</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="235"/>
+        <location filename="../../src/videolayer.cpp" line="165"/>
+        <source>Wireless Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="166"/>
         <source>WebM Video</source>
-        <translation>Vídeo WebM</translation>
+        <translation type="unfinished">Vídeo WebM</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="237"/>
+        <location filename="../../src/videolayer.cpp" line="167"/>
+        <source>WebP</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="169"/>
         <source>Windows Media Video</source>
         <extracomment>Also known as WMV, is a video file format.</extracomment>
-        <translation>Windows Media Video</translation>
+        <translation type="unfinished">Windows Media Video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="238"/>
-        <source>All Files</source>
-        <translation>Todos os ficheiros</translation>
-    </message>
-</context>
-<context>
-    <name>VideoInputOptions</name>
-    <message>
-        <location filename="../qml/VideoInputOptions.qml" line="60"/>
-        <source>Edit</source>
-        <translation>Editar</translation>
+        <location filename="../../src/videolayer.cpp" line="170"/>
+        <source>X11 Bitmap</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputOptions.qml" line="72"/>
-        <source>Remove</source>
-        <translation>Remover</translation>
+        <location filename="../../src/videolayer.cpp" line="171"/>
+        <source>X11 Pixmap</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoInputs</name>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="56"/>
-        <source>Add source</source>
-        <translation>Adicionar fonte</translation>
+        <location filename="../../src/videolayer.cpp" line="211"/>
+        <source>All Image and Video Files</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="67"/>
-        <source>No webcams found</source>
-        <translation>Nenhuma webcam encontrada</translation>
+        <location filename="../../src/videolayer.cpp" line="246"/>
+        <source>All Files</source>
+        <translation type="unfinished">Todos os ficheiros</translation>
     </message>
-</context>
-<context>
-    <name>VideoLayer</name>
     <message>
-        <location filename="../../src/videolayer.cpp" line="261"/>
+        <location filename="../../src/videolayer.cpp" line="388"/>
         <source>No Output</source>
         <extracomment>Disable video output, don&apos;t send the video to the output device.</extracomment>
         <translation>Nenhuma Saída de Vídeo</translation>
     </message>
     <message>
-        <location filename="../../src/videolayer.cpp" line="593"/>
+        <location filename="../../src/videolayer.cpp" line="723"/>
         <source>Virtual Camera</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1633,6 +1723,7 @@
     </message>
     <message>
         <location filename="../../../libAvKys/Plugins/DesktopCapture/share/qml/main.qml" line="48"/>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="64"/>
         <source>Frame rate</source>
         <translation>Fotogramas por segundo</translation>
     </message>
@@ -2642,7 +2733,7 @@ background blur or image below.</source>
         <translation>%1 segundos</translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="279"/>
+        <location filename="../qml/main.qml" line="282"/>
         <source>Take a photo</source>
         <translation>Tirar uma foto</translation>
     </message>
@@ -2657,7 +2748,7 @@ background blur or image below.</source>
         <translation type="unfinished">Compilação diária</translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="328"/>
+        <location filename="../qml/main.qml" line="331"/>
         <source>Record video</source>
         <translation>Gravar vídeo</translation>
     </message>
@@ -2825,5 +2916,10 @@ duration (seconds)</source>
         <source>Luminance</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="47"/>
+        <source>Force frame rate</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- webcamoid-9.0.0.orig/StandAlone/share/ts/pt_BR.ts
+++ webcamoid-9.0.0/StandAlone/share/ts/pt_BR.ts
@@ -45,7 +45,7 @@
     <message>
         <location filename="../qml/AboutDialog.qml" line="45"/>
         <source>About</source>
-        <extracomment>Information of the program, like name, description, vesion, etc..</extracomment>
+        <extracomment>Information of the program, like name, description, version, etc..</extracomment>
         <translation type="unfinished">Sobre</translation>
     </message>
     <message>
@@ -359,7 +359,7 @@
 <context>
     <name>PipewireScreenDev</name>
     <message>
-        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="217"/>
+        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="216"/>
         <source>PipeWire Screen</source>
         <translation type="unfinished"></translation>
     </message>
@@ -455,7 +455,7 @@
 <context>
     <name>Recording</name>
     <message>
-        <location filename="../../src/recording.cpp" line="372"/>
+        <location filename="../../src/recording.cpp" line="373"/>
         <source>%1/Video %2.%3</source>
         <translation type="unfinished"></translation>
     </message>
@@ -807,126 +807,216 @@
         <source>Choose the file to add as source</source>
         <translation>Escolher arquivo para adicionar como fonte</translation>
     </message>
+</context>
+<context>
+    <name>VideoInputOptions</name>
+    <message>
+        <location filename="../qml/VideoInputOptions.qml" line="61"/>
+        <source>Edit</source>
+        <translation>Editar</translation>
+    </message>
+    <message>
+        <location filename="../qml/VideoInputOptions.qml" line="74"/>
+        <source>Remove</source>
+        <translation>Remover</translation>
+    </message>
+</context>
+<context>
+    <name>VideoInputs</name>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="218"/>
-        <source>All Video Files</source>
-        <translation>Todos os Arquivos de Vídeo</translation>
+        <location filename="../qml/VideoInputs.qml" line="56"/>
+        <source>Add source</source>
+        <translation>Adicionar fonte</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="221"/>
+        <location filename="../qml/VideoInputs.qml" line="67"/>
+        <source>No webcams found</source>
+        <translation>Nenhuma webcam encontrada</translation>
+    </message>
+</context>
+<context>
+    <name>VideoLayer</name>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="137"/>
         <source>3GP Video</source>
-        <translation>Vídeo 3GP</translation>
+        <translation type="unfinished">Vídeo 3GP</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="222"/>
+        <location filename="../../src/videolayer.cpp" line="138"/>
         <source>AVI Video</source>
-        <translation>Vídeo AVI</translation>
+        <translation type="unfinished">Vídeo AVI</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="224"/>
+        <location filename="../../src/videolayer.cpp" line="139"/>
+        <source>Windows Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="140"/>
+        <source>Microsoft Windows Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="142"/>
         <source>Flash Video</source>
         <extracomment>Adobe FLV Flash video</extracomment>
-        <translation>Vídeo Flash</translation>
+        <translation type="unfinished">Vídeo Flash</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="225"/>
+        <location filename="../../src/videolayer.cpp" line="143"/>
         <source>Animated GIF</source>
-        <translation>GIF Animada</translation>
+        <translation type="unfinished">GIF Animada</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="226"/>
+        <location filename="../../src/videolayer.cpp" line="144"/>
+        <source>Graphic Interchange Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="145"/>
+        <source>Apple Icon Image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="146"/>
+        <source>Microsoft Windows Icon</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="147"/>
+        <source>Joint Photographic Experts Group</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="148"/>
         <source>MKV Video</source>
-        <translation>Vídeo MKV</translation>
+        <translation type="unfinished">Vídeo MKV</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="227"/>
+        <location filename="../../src/videolayer.cpp" line="149"/>
         <source>Animated PNG</source>
-        <translation>PNG Animada</translation>
+        <translation type="unfinished">PNG Animada</translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="150"/>
+        <source>Multiple-image Network Graphics</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="228"/>
+        <location filename="../../src/videolayer.cpp" line="151"/>
         <source>QuickTime Video</source>
-        <translation>Vídeo QuickTime</translation>
+        <translation type="unfinished">Vídeo QuickTime</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="229"/>
+        <location filename="../../src/videolayer.cpp" line="152"/>
         <source>MP4 Video</source>
-        <translation>Vídeo MP4</translation>
+        <translation type="unfinished">Vídeo MP4</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="230"/>
+        <location filename="../../src/videolayer.cpp" line="153"/>
         <source>MPEG Video</source>
-        <translation>Vídeo MPEG</translation>
+        <translation type="unfinished">Vídeo MPEG</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="231"/>
+        <location filename="../../src/videolayer.cpp" line="154"/>
         <source>Ogg Video</source>
-        <translation>Vídeo Ogg</translation>
+        <translation type="unfinished">Vídeo Ogg</translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="155"/>
+        <source>Portable Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="156"/>
+        <source>Portable Graymap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="157"/>
+        <source>Portable Network Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="158"/>
+        <source>Portable Pixmap</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="233"/>
+        <location filename="../../src/videolayer.cpp" line="160"/>
         <source>RealMedia Video</source>
         <extracomment>Don&apos;t translate &quot;RealMedia&quot;, leave it as is.</extracomment>
-        <translation>Vídeo RealMedia</translation>
+        <translation type="unfinished">Vídeo RealMedia</translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="161"/>
+        <source>Scalable Vector Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="162"/>
+        <source>Truevision TGA</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="234"/>
+        <location filename="../../src/videolayer.cpp" line="163"/>
+        <source>Tagged Image File Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="164"/>
         <source>DVD Video</source>
-        <translation>Vídeo DVD</translation>
+        <translation type="unfinished">Vídeo DVD</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="235"/>
+        <location filename="../../src/videolayer.cpp" line="165"/>
+        <source>Wireless Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="166"/>
         <source>WebM Video</source>
-        <translation>Vídeo WebM</translation>
+        <translation type="unfinished">Vídeo WebM</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="237"/>
+        <location filename="../../src/videolayer.cpp" line="167"/>
+        <source>WebP</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="169"/>
         <source>Windows Media Video</source>
         <extracomment>Also known as WMV, is a video file format.</extracomment>
-        <translation>Windows Media Video</translation>
+        <translation type="unfinished">Windows Media Video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="238"/>
-        <source>All Files</source>
-        <translation>Todos os arquivos</translation>
-    </message>
-</context>
-<context>
-    <name>VideoInputOptions</name>
-    <message>
-        <location filename="../qml/VideoInputOptions.qml" line="60"/>
-        <source>Edit</source>
-        <translation>Editar</translation>
+        <location filename="../../src/videolayer.cpp" line="170"/>
+        <source>X11 Bitmap</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputOptions.qml" line="72"/>
-        <source>Remove</source>
-        <translation>Remover</translation>
+        <location filename="../../src/videolayer.cpp" line="171"/>
+        <source>X11 Pixmap</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoInputs</name>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="56"/>
-        <source>Add source</source>
-        <translation>Adicionar fonte</translation>
+        <location filename="../../src/videolayer.cpp" line="211"/>
+        <source>All Image and Video Files</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="67"/>
-        <source>No webcams found</source>
-        <translation>Nenhuma webcam encontrada</translation>
+        <location filename="../../src/videolayer.cpp" line="246"/>
+        <source>All Files</source>
+        <translation type="unfinished">Todos os arquivos</translation>
     </message>
-</context>
-<context>
-    <name>VideoLayer</name>
     <message>
-        <location filename="../../src/videolayer.cpp" line="261"/>
+        <location filename="../../src/videolayer.cpp" line="388"/>
         <source>No Output</source>
         <extracomment>Disable video output, don&apos;t send the video to the output device.</extracomment>
         <translation>Nenhuma Saída de Vídeo</translation>
     </message>
     <message>
-        <location filename="../../src/videolayer.cpp" line="593"/>
+        <location filename="../../src/videolayer.cpp" line="723"/>
         <source>Virtual Camera</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1633,6 +1723,7 @@
     </message>
     <message>
         <location filename="../../../libAvKys/Plugins/DesktopCapture/share/qml/main.qml" line="48"/>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="64"/>
         <source>Frame rate</source>
         <translation>Taxa de quadros</translation>
     </message>
@@ -2642,7 +2733,7 @@ background blur or image below.</source>
         <translation>%1 segundos</translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="279"/>
+        <location filename="../qml/main.qml" line="282"/>
         <source>Take a photo</source>
         <translation>Tirar uma foto</translation>
     </message>
@@ -2657,7 +2748,7 @@ background blur or image below.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="328"/>
+        <location filename="../qml/main.qml" line="331"/>
         <source>Record video</source>
         <translation>Gravar vídeo</translation>
     </message>
@@ -2825,5 +2916,10 @@ duration (seconds)</source>
         <source>Luminance</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="47"/>
+        <source>Force frame rate</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- webcamoid-9.0.0.orig/StandAlone/share/ts/ru.ts
+++ webcamoid-9.0.0/StandAlone/share/ts/ru.ts
@@ -45,7 +45,7 @@
     <message>
         <location filename="../qml/AboutDialog.qml" line="45"/>
         <source>About</source>
-        <extracomment>Information of the program, like name, description, vesion, etc..</extracomment>
+        <extracomment>Information of the program, like name, description, version, etc..</extracomment>
         <translation type="unfinished">О программе</translation>
     </message>
     <message>
@@ -359,7 +359,7 @@
 <context>
     <name>PipewireScreenDev</name>
     <message>
-        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="217"/>
+        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="216"/>
         <source>PipeWire Screen</source>
         <translation type="unfinished"></translation>
     </message>
@@ -455,7 +455,7 @@
 <context>
     <name>Recording</name>
     <message>
-        <location filename="../../src/recording.cpp" line="372"/>
+        <location filename="../../src/recording.cpp" line="373"/>
         <source>%1/Video %2.%3</source>
         <translation>%1/Видео %2.%3</translation>
     </message>
@@ -807,126 +807,216 @@
         <source>Choose the file to add as source</source>
         <translation>Выберите файл для добавления в качестве источника</translation>
     </message>
+</context>
+<context>
+    <name>VideoInputOptions</name>
+    <message>
+        <location filename="../qml/VideoInputOptions.qml" line="61"/>
+        <source>Edit</source>
+        <translation>Редактировать</translation>
+    </message>
+    <message>
+        <location filename="../qml/VideoInputOptions.qml" line="74"/>
+        <source>Remove</source>
+        <translation>Удалить</translation>
+    </message>
+</context>
+<context>
+    <name>VideoInputs</name>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="218"/>
-        <source>All Video Files</source>
-        <translation>Все Видеофайлы</translation>
+        <location filename="../qml/VideoInputs.qml" line="56"/>
+        <source>Add source</source>
+        <translation>Добавить источник</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="221"/>
+        <location filename="../qml/VideoInputs.qml" line="67"/>
+        <source>No webcams found</source>
+        <translation>Веб-камеры не найдены</translation>
+    </message>
+</context>
+<context>
+    <name>VideoLayer</name>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="137"/>
         <source>3GP Video</source>
-        <translation>Видео 3GP</translation>
+        <translation type="unfinished">Видео 3GP</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="222"/>
+        <location filename="../../src/videolayer.cpp" line="138"/>
         <source>AVI Video</source>
-        <translation>Видео AVI</translation>
+        <translation type="unfinished">Видео AVI</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="224"/>
+        <location filename="../../src/videolayer.cpp" line="139"/>
+        <source>Windows Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="140"/>
+        <source>Microsoft Windows Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="142"/>
         <source>Flash Video</source>
         <extracomment>Adobe FLV Flash video</extracomment>
-        <translation>Flash Video</translation>
+        <translation type="unfinished">Flash Video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="225"/>
+        <location filename="../../src/videolayer.cpp" line="143"/>
         <source>Animated GIF</source>
-        <translation>Анимированный GIF</translation>
+        <translation type="unfinished">Анимированный GIF</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="226"/>
+        <location filename="../../src/videolayer.cpp" line="144"/>
+        <source>Graphic Interchange Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="145"/>
+        <source>Apple Icon Image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="146"/>
+        <source>Microsoft Windows Icon</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="147"/>
+        <source>Joint Photographic Experts Group</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="148"/>
         <source>MKV Video</source>
-        <translation>Видео MKV</translation>
+        <translation type="unfinished">Видео MKV</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="227"/>
+        <location filename="../../src/videolayer.cpp" line="149"/>
         <source>Animated PNG</source>
-        <translation>Анимированный PNG</translation>
+        <translation type="unfinished">Анимированный PNG</translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="150"/>
+        <source>Multiple-image Network Graphics</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="228"/>
+        <location filename="../../src/videolayer.cpp" line="151"/>
         <source>QuickTime Video</source>
-        <translation>Видео QuickTime</translation>
+        <translation type="unfinished">Видео QuickTime</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="229"/>
+        <location filename="../../src/videolayer.cpp" line="152"/>
         <source>MP4 Video</source>
-        <translation>Видео MP4</translation>
+        <translation type="unfinished">Видео MP4</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="230"/>
+        <location filename="../../src/videolayer.cpp" line="153"/>
         <source>MPEG Video</source>
-        <translation>Видео MPEG</translation>
+        <translation type="unfinished">Видео MPEG</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="231"/>
+        <location filename="../../src/videolayer.cpp" line="154"/>
         <source>Ogg Video</source>
-        <translation>Видео Ogg</translation>
+        <translation type="unfinished">Видео Ogg</translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="155"/>
+        <source>Portable Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="156"/>
+        <source>Portable Graymap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="157"/>
+        <source>Portable Network Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="158"/>
+        <source>Portable Pixmap</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="233"/>
+        <location filename="../../src/videolayer.cpp" line="160"/>
         <source>RealMedia Video</source>
         <extracomment>Don&apos;t translate &quot;RealMedia&quot;, leave it as is.</extracomment>
-        <translation>Видео RealMedia</translation>
+        <translation type="unfinished">Видео RealMedia</translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="161"/>
+        <source>Scalable Vector Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="162"/>
+        <source>Truevision TGA</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="234"/>
+        <location filename="../../src/videolayer.cpp" line="163"/>
+        <source>Tagged Image File Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="164"/>
         <source>DVD Video</source>
-        <translation>Видео DVD</translation>
+        <translation type="unfinished">Видео DVD</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="235"/>
+        <location filename="../../src/videolayer.cpp" line="165"/>
+        <source>Wireless Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="166"/>
         <source>WebM Video</source>
-        <translation>Видео WebM</translation>
+        <translation type="unfinished">Видео WebM</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="237"/>
+        <location filename="../../src/videolayer.cpp" line="167"/>
+        <source>WebP</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="169"/>
         <source>Windows Media Video</source>
         <extracomment>Also known as WMV, is a video file format.</extracomment>
-        <translation>Видео Windows Media</translation>
+        <translation type="unfinished">Видео Windows Media</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="238"/>
-        <source>All Files</source>
-        <translation>Все файлы</translation>
-    </message>
-</context>
-<context>
-    <name>VideoInputOptions</name>
-    <message>
-        <location filename="../qml/VideoInputOptions.qml" line="60"/>
-        <source>Edit</source>
-        <translation>Редактировать</translation>
+        <location filename="../../src/videolayer.cpp" line="170"/>
+        <source>X11 Bitmap</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputOptions.qml" line="72"/>
-        <source>Remove</source>
-        <translation>Удалить</translation>
+        <location filename="../../src/videolayer.cpp" line="171"/>
+        <source>X11 Pixmap</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoInputs</name>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="56"/>
-        <source>Add source</source>
-        <translation>Добавить источник</translation>
+        <location filename="../../src/videolayer.cpp" line="211"/>
+        <source>All Image and Video Files</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="67"/>
-        <source>No webcams found</source>
-        <translation>Веб-камеры не найдены</translation>
+        <location filename="../../src/videolayer.cpp" line="246"/>
+        <source>All Files</source>
+        <translation type="unfinished">Все файлы</translation>
     </message>
-</context>
-<context>
-    <name>VideoLayer</name>
     <message>
-        <location filename="../../src/videolayer.cpp" line="261"/>
+        <location filename="../../src/videolayer.cpp" line="388"/>
         <source>No Output</source>
         <extracomment>Disable video output, don&apos;t send the video to the output device.</extracomment>
         <translation>Нет выхода</translation>
     </message>
     <message>
-        <location filename="../../src/videolayer.cpp" line="593"/>
+        <location filename="../../src/videolayer.cpp" line="723"/>
         <source>Virtual Camera</source>
         <translation>Виртуальная камера</translation>
     </message>
@@ -1633,6 +1723,7 @@
     </message>
     <message>
         <location filename="../../../libAvKys/Plugins/DesktopCapture/share/qml/main.qml" line="48"/>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="64"/>
         <source>Frame rate</source>
         <translation>Частота кадров</translation>
     </message>
@@ -2643,7 +2734,7 @@ background blur or image below.</source>
         <translation>%1 секунд</translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="279"/>
+        <location filename="../qml/main.qml" line="282"/>
         <source>Take a photo</source>
         <translation>Сделать фото</translation>
     </message>
@@ -2658,7 +2749,7 @@ background blur or image below.</source>
         <translation>Ежедневная сборка</translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="328"/>
+        <location filename="../qml/main.qml" line="331"/>
         <source>Record video</source>
         <translation>Запись видео</translation>
     </message>
@@ -2827,5 +2918,10 @@ duration (seconds)</source>
         <source>Luminance</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="47"/>
+        <source>Force frame rate</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- webcamoid-9.0.0.orig/StandAlone/share/ts/si.ts
+++ webcamoid-9.0.0/StandAlone/share/ts/si.ts
@@ -45,7 +45,7 @@
     <message>
         <location filename="../qml/AboutDialog.qml" line="45"/>
         <source>About</source>
-        <extracomment>Information of the program, like name, description, vesion, etc..</extracomment>
+        <extracomment>Information of the program, like name, description, version, etc..</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
@@ -359,7 +359,7 @@
 <context>
     <name>PipewireScreenDev</name>
     <message>
-        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="217"/>
+        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="216"/>
         <source>PipeWire Screen</source>
         <translation type="unfinished"></translation>
     </message>
@@ -455,7 +455,7 @@
 <context>
     <name>Recording</name>
     <message>
-        <location filename="../../src/recording.cpp" line="372"/>
+        <location filename="../../src/recording.cpp" line="373"/>
         <source>%1/Video %2.%3</source>
         <translation type="unfinished"></translation>
     </message>
@@ -807,126 +807,216 @@
         <source>Choose the file to add as source</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>VideoInputOptions</name>
+    <message>
+        <location filename="../qml/VideoInputOptions.qml" line="61"/>
+        <source>Edit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qml/VideoInputOptions.qml" line="74"/>
+        <source>Remove</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>VideoInputs</name>
+    <message>
+        <location filename="../qml/VideoInputs.qml" line="56"/>
+        <source>Add source</source>
+        <translation type="unfinished"></translation>
+    </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="218"/>
-        <source>All Video Files</source>
+        <location filename="../qml/VideoInputs.qml" line="67"/>
+        <source>No webcams found</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>VideoLayer</name>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="221"/>
+        <location filename="../../src/videolayer.cpp" line="137"/>
         <source>3GP Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="222"/>
+        <location filename="../../src/videolayer.cpp" line="138"/>
         <source>AVI Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="224"/>
+        <location filename="../../src/videolayer.cpp" line="139"/>
+        <source>Windows Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="140"/>
+        <source>Microsoft Windows Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="142"/>
         <source>Flash Video</source>
         <extracomment>Adobe FLV Flash video</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="225"/>
+        <location filename="../../src/videolayer.cpp" line="143"/>
         <source>Animated GIF</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="226"/>
+        <location filename="../../src/videolayer.cpp" line="144"/>
+        <source>Graphic Interchange Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="145"/>
+        <source>Apple Icon Image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="146"/>
+        <source>Microsoft Windows Icon</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="147"/>
+        <source>Joint Photographic Experts Group</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="148"/>
         <source>MKV Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="227"/>
+        <location filename="../../src/videolayer.cpp" line="149"/>
         <source>Animated PNG</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="228"/>
+        <location filename="../../src/videolayer.cpp" line="150"/>
+        <source>Multiple-image Network Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="151"/>
         <source>QuickTime Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="229"/>
+        <location filename="../../src/videolayer.cpp" line="152"/>
         <source>MP4 Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="230"/>
+        <location filename="../../src/videolayer.cpp" line="153"/>
         <source>MPEG Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="231"/>
+        <location filename="../../src/videolayer.cpp" line="154"/>
         <source>Ogg Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="233"/>
+        <location filename="../../src/videolayer.cpp" line="155"/>
+        <source>Portable Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="156"/>
+        <source>Portable Graymap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="157"/>
+        <source>Portable Network Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="158"/>
+        <source>Portable Pixmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="160"/>
         <source>RealMedia Video</source>
         <extracomment>Don&apos;t translate &quot;RealMedia&quot;, leave it as is.</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="234"/>
+        <location filename="../../src/videolayer.cpp" line="161"/>
+        <source>Scalable Vector Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="162"/>
+        <source>Truevision TGA</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="163"/>
+        <source>Tagged Image File Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="164"/>
         <source>DVD Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="235"/>
+        <location filename="../../src/videolayer.cpp" line="165"/>
+        <source>Wireless Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="166"/>
         <source>WebM Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="237"/>
-        <source>Windows Media Video</source>
-        <extracomment>Also known as WMV, is a video file format.</extracomment>
+        <location filename="../../src/videolayer.cpp" line="167"/>
+        <source>WebP</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="238"/>
-        <source>All Files</source>
+        <location filename="../../src/videolayer.cpp" line="169"/>
+        <source>Windows Media Video</source>
+        <extracomment>Also known as WMV, is a video file format.</extracomment>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoInputOptions</name>
     <message>
-        <location filename="../qml/VideoInputOptions.qml" line="60"/>
-        <source>Edit</source>
+        <location filename="../../src/videolayer.cpp" line="170"/>
+        <source>X11 Bitmap</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputOptions.qml" line="72"/>
-        <source>Remove</source>
+        <location filename="../../src/videolayer.cpp" line="171"/>
+        <source>X11 Pixmap</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoInputs</name>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="56"/>
-        <source>Add source</source>
+        <location filename="../../src/videolayer.cpp" line="211"/>
+        <source>All Image and Video Files</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="67"/>
-        <source>No webcams found</source>
+        <location filename="../../src/videolayer.cpp" line="246"/>
+        <source>All Files</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoLayer</name>
     <message>
-        <location filename="../../src/videolayer.cpp" line="261"/>
+        <location filename="../../src/videolayer.cpp" line="388"/>
         <source>No Output</source>
         <extracomment>Disable video output, don&apos;t send the video to the output device.</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/videolayer.cpp" line="593"/>
+        <location filename="../../src/videolayer.cpp" line="723"/>
         <source>Virtual Camera</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1633,6 +1723,7 @@
     </message>
     <message>
         <location filename="../../../libAvKys/Plugins/DesktopCapture/share/qml/main.qml" line="48"/>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="64"/>
         <source>Frame rate</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2642,7 +2733,7 @@ background blur or image below.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="279"/>
+        <location filename="../qml/main.qml" line="282"/>
         <source>Take a photo</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2657,7 +2748,7 @@ background blur or image below.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="328"/>
+        <location filename="../qml/main.qml" line="331"/>
         <source>Record video</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2825,5 +2916,10 @@ duration (seconds)</source>
         <source>Luminance</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="47"/>
+        <source>Force frame rate</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- webcamoid-9.0.0.orig/StandAlone/share/ts/sv.ts
+++ webcamoid-9.0.0/StandAlone/share/ts/sv.ts
@@ -45,7 +45,7 @@
     <message>
         <location filename="../qml/AboutDialog.qml" line="45"/>
         <source>About</source>
-        <extracomment>Information of the program, like name, description, vesion, etc..</extracomment>
+        <extracomment>Information of the program, like name, description, version, etc..</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
@@ -359,7 +359,7 @@
 <context>
     <name>PipewireScreenDev</name>
     <message>
-        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="217"/>
+        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="216"/>
         <source>PipeWire Screen</source>
         <translation type="unfinished"></translation>
     </message>
@@ -455,7 +455,7 @@
 <context>
     <name>Recording</name>
     <message>
-        <location filename="../../src/recording.cpp" line="372"/>
+        <location filename="../../src/recording.cpp" line="373"/>
         <source>%1/Video %2.%3</source>
         <translation type="unfinished"></translation>
     </message>
@@ -807,126 +807,216 @@
         <source>Choose the file to add as source</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>VideoInputOptions</name>
+    <message>
+        <location filename="../qml/VideoInputOptions.qml" line="61"/>
+        <source>Edit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qml/VideoInputOptions.qml" line="74"/>
+        <source>Remove</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>VideoInputs</name>
+    <message>
+        <location filename="../qml/VideoInputs.qml" line="56"/>
+        <source>Add source</source>
+        <translation type="unfinished"></translation>
+    </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="218"/>
-        <source>All Video Files</source>
+        <location filename="../qml/VideoInputs.qml" line="67"/>
+        <source>No webcams found</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>VideoLayer</name>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="221"/>
+        <location filename="../../src/videolayer.cpp" line="137"/>
         <source>3GP Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="222"/>
+        <location filename="../../src/videolayer.cpp" line="138"/>
         <source>AVI Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="224"/>
+        <location filename="../../src/videolayer.cpp" line="139"/>
+        <source>Windows Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="140"/>
+        <source>Microsoft Windows Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="142"/>
         <source>Flash Video</source>
         <extracomment>Adobe FLV Flash video</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="225"/>
+        <location filename="../../src/videolayer.cpp" line="143"/>
         <source>Animated GIF</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="226"/>
+        <location filename="../../src/videolayer.cpp" line="144"/>
+        <source>Graphic Interchange Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="145"/>
+        <source>Apple Icon Image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="146"/>
+        <source>Microsoft Windows Icon</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="147"/>
+        <source>Joint Photographic Experts Group</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="148"/>
         <source>MKV Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="227"/>
+        <location filename="../../src/videolayer.cpp" line="149"/>
         <source>Animated PNG</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="228"/>
+        <location filename="../../src/videolayer.cpp" line="150"/>
+        <source>Multiple-image Network Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="151"/>
         <source>QuickTime Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="229"/>
+        <location filename="../../src/videolayer.cpp" line="152"/>
         <source>MP4 Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="230"/>
+        <location filename="../../src/videolayer.cpp" line="153"/>
         <source>MPEG Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="231"/>
+        <location filename="../../src/videolayer.cpp" line="154"/>
         <source>Ogg Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="233"/>
+        <location filename="../../src/videolayer.cpp" line="155"/>
+        <source>Portable Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="156"/>
+        <source>Portable Graymap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="157"/>
+        <source>Portable Network Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="158"/>
+        <source>Portable Pixmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="160"/>
         <source>RealMedia Video</source>
         <extracomment>Don&apos;t translate &quot;RealMedia&quot;, leave it as is.</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="234"/>
+        <location filename="../../src/videolayer.cpp" line="161"/>
+        <source>Scalable Vector Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="162"/>
+        <source>Truevision TGA</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="163"/>
+        <source>Tagged Image File Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="164"/>
         <source>DVD Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="235"/>
+        <location filename="../../src/videolayer.cpp" line="165"/>
+        <source>Wireless Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="166"/>
         <source>WebM Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="237"/>
-        <source>Windows Media Video</source>
-        <extracomment>Also known as WMV, is a video file format.</extracomment>
+        <location filename="../../src/videolayer.cpp" line="167"/>
+        <source>WebP</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="238"/>
-        <source>All Files</source>
+        <location filename="../../src/videolayer.cpp" line="169"/>
+        <source>Windows Media Video</source>
+        <extracomment>Also known as WMV, is a video file format.</extracomment>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoInputOptions</name>
     <message>
-        <location filename="../qml/VideoInputOptions.qml" line="60"/>
-        <source>Edit</source>
+        <location filename="../../src/videolayer.cpp" line="170"/>
+        <source>X11 Bitmap</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputOptions.qml" line="72"/>
-        <source>Remove</source>
+        <location filename="../../src/videolayer.cpp" line="171"/>
+        <source>X11 Pixmap</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoInputs</name>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="56"/>
-        <source>Add source</source>
+        <location filename="../../src/videolayer.cpp" line="211"/>
+        <source>All Image and Video Files</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="67"/>
-        <source>No webcams found</source>
+        <location filename="../../src/videolayer.cpp" line="246"/>
+        <source>All Files</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoLayer</name>
     <message>
-        <location filename="../../src/videolayer.cpp" line="261"/>
+        <location filename="../../src/videolayer.cpp" line="388"/>
         <source>No Output</source>
         <extracomment>Disable video output, don&apos;t send the video to the output device.</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/videolayer.cpp" line="593"/>
+        <location filename="../../src/videolayer.cpp" line="723"/>
         <source>Virtual Camera</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1645,6 +1735,7 @@
     </message>
     <message>
         <location filename="../../../libAvKys/Plugins/DesktopCapture/share/qml/main.qml" line="48"/>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="64"/>
         <source>Frame rate</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2770,12 +2861,12 @@ duration (seconds)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="279"/>
+        <location filename="../qml/main.qml" line="282"/>
         <source>Take a photo</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="328"/>
+        <location filename="../qml/main.qml" line="331"/>
         <source>Record video</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2825,5 +2916,10 @@ duration (seconds)</source>
         <source>Luminance</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="47"/>
+        <source>Force frame rate</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- webcamoid-9.0.0.orig/StandAlone/share/ts/tr.ts
+++ webcamoid-9.0.0/StandAlone/share/ts/tr.ts
@@ -45,7 +45,7 @@
     <message>
         <location filename="../qml/AboutDialog.qml" line="45"/>
         <source>About</source>
-        <extracomment>Information of the program, like name, description, vesion, etc..</extracomment>
+        <extracomment>Information of the program, like name, description, version, etc..</extracomment>
         <translation>Hakkında</translation>
     </message>
     <message>
@@ -359,7 +359,7 @@
 <context>
     <name>PipewireScreenDev</name>
     <message>
-        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="217"/>
+        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="216"/>
         <source>PipeWire Screen</source>
         <translation>PipeWire Ekranı</translation>
     </message>
@@ -455,7 +455,7 @@
 <context>
     <name>Recording</name>
     <message>
-        <location filename="../../src/recording.cpp" line="372"/>
+        <location filename="../../src/recording.cpp" line="373"/>
         <source>%1/Video %2.%3</source>
         <translation>%1/Video %2.%3</translation>
     </message>
@@ -807,126 +807,216 @@
         <source>Choose the file to add as source</source>
         <translation>Kaynak olarak eklenecek dosyayı seç</translation>
     </message>
+</context>
+<context>
+    <name>VideoInputOptions</name>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="218"/>
-        <source>All Video Files</source>
-        <translation>Tüm Video Dosyaları</translation>
+        <location filename="../qml/VideoInputOptions.qml" line="61"/>
+        <source>Edit</source>
+        <translation>Düzenle</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="221"/>
+        <location filename="../qml/VideoInputOptions.qml" line="74"/>
+        <source>Remove</source>
+        <translation>Kaldır</translation>
+    </message>
+</context>
+<context>
+    <name>VideoInputs</name>
+    <message>
+        <location filename="../qml/VideoInputs.qml" line="56"/>
+        <source>Add source</source>
+        <translation>Kaynak ekle</translation>
+    </message>
+    <message>
+        <location filename="../qml/VideoInputs.qml" line="67"/>
+        <source>No webcams found</source>
+        <translation>Web kamerası bulunamadı</translation>
+    </message>
+</context>
+<context>
+    <name>VideoLayer</name>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="137"/>
         <source>3GP Video</source>
-        <translation>3GP Video</translation>
+        <translation type="unfinished">3GP Video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="222"/>
+        <location filename="../../src/videolayer.cpp" line="138"/>
         <source>AVI Video</source>
-        <translation>AVI Video</translation>
+        <translation type="unfinished">AVI Video</translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="139"/>
+        <source>Windows Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="140"/>
+        <source>Microsoft Windows Cursor</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="224"/>
+        <location filename="../../src/videolayer.cpp" line="142"/>
         <source>Flash Video</source>
         <extracomment>Adobe FLV Flash video</extracomment>
-        <translation>Flash Video</translation>
+        <translation type="unfinished">Flash Video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="225"/>
+        <location filename="../../src/videolayer.cpp" line="143"/>
         <source>Animated GIF</source>
-        <translation>Hareketli GIF</translation>
+        <translation type="unfinished">Hareketli GIF</translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="144"/>
+        <source>Graphic Interchange Format</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="226"/>
+        <location filename="../../src/videolayer.cpp" line="145"/>
+        <source>Apple Icon Image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="146"/>
+        <source>Microsoft Windows Icon</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="147"/>
+        <source>Joint Photographic Experts Group</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="148"/>
         <source>MKV Video</source>
-        <translation>MKV Video</translation>
+        <translation type="unfinished">MKV Video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="227"/>
+        <location filename="../../src/videolayer.cpp" line="149"/>
         <source>Animated PNG</source>
-        <translation>Hareketli PNG</translation>
+        <translation type="unfinished">Hareketli PNG</translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="150"/>
+        <source>Multiple-image Network Graphics</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="228"/>
+        <location filename="../../src/videolayer.cpp" line="151"/>
         <source>QuickTime Video</source>
-        <translation>QuickTime Video</translation>
+        <translation type="unfinished">QuickTime Video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="229"/>
+        <location filename="../../src/videolayer.cpp" line="152"/>
         <source>MP4 Video</source>
-        <translation>MP4 Video</translation>
+        <translation type="unfinished">MP4 Video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="230"/>
+        <location filename="../../src/videolayer.cpp" line="153"/>
         <source>MPEG Video</source>
-        <translation>MPEG Video</translation>
+        <translation type="unfinished">MPEG Video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="231"/>
+        <location filename="../../src/videolayer.cpp" line="154"/>
         <source>Ogg Video</source>
-        <translation>Ogg Video</translation>
+        <translation type="unfinished">Ogg Video</translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="155"/>
+        <source>Portable Bitmap</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="233"/>
+        <location filename="../../src/videolayer.cpp" line="156"/>
+        <source>Portable Graymap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="157"/>
+        <source>Portable Network Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="158"/>
+        <source>Portable Pixmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="160"/>
         <source>RealMedia Video</source>
         <extracomment>Don&apos;t translate &quot;RealMedia&quot;, leave it as is.</extracomment>
-        <translation>RealMedia Video</translation>
+        <translation type="unfinished">RealMedia Video</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="234"/>
+        <location filename="../../src/videolayer.cpp" line="161"/>
+        <source>Scalable Vector Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="162"/>
+        <source>Truevision TGA</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="163"/>
+        <source>Tagged Image File Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="164"/>
         <source>DVD Video</source>
-        <translation>DVD Video</translation>
+        <translation type="unfinished">DVD Video</translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="165"/>
+        <source>Wireless Bitmap</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="235"/>
+        <location filename="../../src/videolayer.cpp" line="166"/>
         <source>WebM Video</source>
-        <translation>WebM Video</translation>
+        <translation type="unfinished">WebM Video</translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="167"/>
+        <source>WebP</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="237"/>
+        <location filename="../../src/videolayer.cpp" line="169"/>
         <source>Windows Media Video</source>
         <extracomment>Also known as WMV, is a video file format.</extracomment>
-        <translation>Windows Ortam Videosu</translation>
+        <translation type="unfinished">Windows Ortam Videosu</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="238"/>
-        <source>All Files</source>
-        <translation>Tüm Dosyalar</translation>
+        <location filename="../../src/videolayer.cpp" line="170"/>
+        <source>X11 Bitmap</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoInputOptions</name>
     <message>
-        <location filename="../qml/VideoInputOptions.qml" line="60"/>
-        <source>Edit</source>
-        <translation>Düzenle</translation>
-    </message>
-    <message>
-        <location filename="../qml/VideoInputOptions.qml" line="72"/>
-        <source>Remove</source>
-        <translation>Kaldır</translation>
+        <location filename="../../src/videolayer.cpp" line="171"/>
+        <source>X11 Pixmap</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoInputs</name>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="56"/>
-        <source>Add source</source>
-        <translation>Kaynak ekle</translation>
+        <location filename="../../src/videolayer.cpp" line="211"/>
+        <source>All Image and Video Files</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="67"/>
-        <source>No webcams found</source>
-        <translation>Web kamerası bulunamadı</translation>
+        <location filename="../../src/videolayer.cpp" line="246"/>
+        <source>All Files</source>
+        <translation type="unfinished">Tüm Dosyalar</translation>
     </message>
-</context>
-<context>
-    <name>VideoLayer</name>
     <message>
-        <location filename="../../src/videolayer.cpp" line="261"/>
+        <location filename="../../src/videolayer.cpp" line="388"/>
         <source>No Output</source>
         <extracomment>Disable video output, don&apos;t send the video to the output device.</extracomment>
         <translation>Çıktı Yok</translation>
     </message>
     <message>
-        <location filename="../../src/videolayer.cpp" line="593"/>
+        <location filename="../../src/videolayer.cpp" line="723"/>
         <source>Virtual Camera</source>
         <translation>Sanal Kamera</translation>
     </message>
@@ -1633,6 +1723,7 @@
     </message>
     <message>
         <location filename="../../../libAvKys/Plugins/DesktopCapture/share/qml/main.qml" line="48"/>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="64"/>
         <source>Frame rate</source>
         <translation>Kare hızı</translation>
     </message>
@@ -2643,7 +2734,7 @@ için gelişmiş yüz alanı ayarları.<
         <translation>%1 saniye</translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="279"/>
+        <location filename="../qml/main.qml" line="282"/>
         <source>Take a photo</source>
         <translation>Fotoğraf çek</translation>
     </message>
@@ -2658,7 +2749,7 @@ için gelişmiş yüz alanı ayarları.<
         <translation>Günlük Yapım</translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="328"/>
+        <location filename="../qml/main.qml" line="331"/>
         <source>Record video</source>
         <translation>Video kaydet</translation>
     </message>
@@ -2827,5 +2918,10 @@ süresi (saniye)</translation>
         <source>Luminance</source>
         <translation>Parlaklık</translation>
     </message>
+    <message>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="47"/>
+        <source>Force frame rate</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- webcamoid-9.0.0.orig/StandAlone/share/ts/uk.ts
+++ webcamoid-9.0.0/StandAlone/share/ts/uk.ts
@@ -45,7 +45,7 @@
     <message>
         <location filename="../qml/AboutDialog.qml" line="45"/>
         <source>About</source>
-        <extracomment>Information of the program, like name, description, vesion, etc..</extracomment>
+        <extracomment>Information of the program, like name, description, version, etc..</extracomment>
         <translation type="unfinished">Про нас</translation>
     </message>
     <message>
@@ -359,7 +359,7 @@
 <context>
     <name>PipewireScreenDev</name>
     <message>
-        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="217"/>
+        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="216"/>
         <source>PipeWire Screen</source>
         <translation type="unfinished"></translation>
     </message>
@@ -455,7 +455,7 @@
 <context>
     <name>Recording</name>
     <message>
-        <location filename="../../src/recording.cpp" line="372"/>
+        <location filename="../../src/recording.cpp" line="373"/>
         <source>%1/Video %2.%3</source>
         <translation>%1/Відео %2.%3</translation>
     </message>
@@ -807,126 +807,216 @@
         <source>Choose the file to add as source</source>
         <translation>Виберіть файл, який потрібно додати як джерело</translation>
     </message>
+</context>
+<context>
+    <name>VideoInputOptions</name>
+    <message>
+        <location filename="../qml/VideoInputOptions.qml" line="61"/>
+        <source>Edit</source>
+        <translation>Правити</translation>
+    </message>
+    <message>
+        <location filename="../qml/VideoInputOptions.qml" line="74"/>
+        <source>Remove</source>
+        <translation>Видалити</translation>
+    </message>
+</context>
+<context>
+    <name>VideoInputs</name>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="218"/>
-        <source>All Video Files</source>
-        <translation>Усі відеофайли</translation>
+        <location filename="../qml/VideoInputs.qml" line="56"/>
+        <source>Add source</source>
+        <translation>Додати джерело</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="221"/>
+        <location filename="../qml/VideoInputs.qml" line="67"/>
+        <source>No webcams found</source>
+        <translation>Веб-камери не знайдено</translation>
+    </message>
+</context>
+<context>
+    <name>VideoLayer</name>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="137"/>
         <source>3GP Video</source>
-        <translation>Відео 3GP</translation>
+        <translation type="unfinished">Відео 3GP</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="222"/>
+        <location filename="../../src/videolayer.cpp" line="138"/>
         <source>AVI Video</source>
-        <translation>Відео AVI</translation>
+        <translation type="unfinished">Відео AVI</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="224"/>
+        <location filename="../../src/videolayer.cpp" line="139"/>
+        <source>Windows Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="140"/>
+        <source>Microsoft Windows Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="142"/>
         <source>Flash Video</source>
         <extracomment>Adobe FLV Flash video</extracomment>
-        <translation>Флешвідео</translation>
+        <translation type="unfinished">Флешвідео</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="225"/>
+        <location filename="../../src/videolayer.cpp" line="143"/>
         <source>Animated GIF</source>
-        <translation>Анімована GIF</translation>
+        <translation type="unfinished">Анімована GIF</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="226"/>
+        <location filename="../../src/videolayer.cpp" line="144"/>
+        <source>Graphic Interchange Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="145"/>
+        <source>Apple Icon Image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="146"/>
+        <source>Microsoft Windows Icon</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="147"/>
+        <source>Joint Photographic Experts Group</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="148"/>
         <source>MKV Video</source>
-        <translation>Відео MKV</translation>
+        <translation type="unfinished">Відео MKV</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="227"/>
+        <location filename="../../src/videolayer.cpp" line="149"/>
         <source>Animated PNG</source>
-        <translation>Анімований png</translation>
+        <translation type="unfinished">Анімований png</translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="150"/>
+        <source>Multiple-image Network Graphics</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="228"/>
+        <location filename="../../src/videolayer.cpp" line="151"/>
         <source>QuickTime Video</source>
-        <translation>Відео QuickTime</translation>
+        <translation type="unfinished">Відео QuickTime</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="229"/>
+        <location filename="../../src/videolayer.cpp" line="152"/>
         <source>MP4 Video</source>
-        <translation>Відео MP4</translation>
+        <translation type="unfinished">Відео MP4</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="230"/>
+        <location filename="../../src/videolayer.cpp" line="153"/>
         <source>MPEG Video</source>
-        <translation>Відео MPEG</translation>
+        <translation type="unfinished">Відео MPEG</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="231"/>
+        <location filename="../../src/videolayer.cpp" line="154"/>
         <source>Ogg Video</source>
-        <translation>Відео Ogg</translation>
+        <translation type="unfinished">Відео Ogg</translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="155"/>
+        <source>Portable Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="156"/>
+        <source>Portable Graymap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="157"/>
+        <source>Portable Network Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="158"/>
+        <source>Portable Pixmap</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="233"/>
+        <location filename="../../src/videolayer.cpp" line="160"/>
         <source>RealMedia Video</source>
         <extracomment>Don&apos;t translate &quot;RealMedia&quot;, leave it as is.</extracomment>
-        <translation>Відео RealMedia</translation>
+        <translation type="unfinished">Відео RealMedia</translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="161"/>
+        <source>Scalable Vector Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="162"/>
+        <source>Truevision TGA</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="234"/>
+        <location filename="../../src/videolayer.cpp" line="163"/>
+        <source>Tagged Image File Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="164"/>
         <source>DVD Video</source>
-        <translation>Відео DVD</translation>
+        <translation type="unfinished">Відео DVD</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="235"/>
+        <location filename="../../src/videolayer.cpp" line="165"/>
+        <source>Wireless Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="166"/>
         <source>WebM Video</source>
-        <translation>Відео WebM</translation>
+        <translation type="unfinished">Відео WebM</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="237"/>
+        <location filename="../../src/videolayer.cpp" line="167"/>
+        <source>WebP</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="169"/>
         <source>Windows Media Video</source>
         <extracomment>Also known as WMV, is a video file format.</extracomment>
-        <translation>Відео Windows Media Video (.wmv)</translation>
+        <translation type="unfinished">Відео Windows Media Video (.wmv)</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="238"/>
-        <source>All Files</source>
-        <translation>Усі файли</translation>
-    </message>
-</context>
-<context>
-    <name>VideoInputOptions</name>
-    <message>
-        <location filename="../qml/VideoInputOptions.qml" line="60"/>
-        <source>Edit</source>
-        <translation>Правити</translation>
+        <location filename="../../src/videolayer.cpp" line="170"/>
+        <source>X11 Bitmap</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputOptions.qml" line="72"/>
-        <source>Remove</source>
-        <translation>Видалити</translation>
+        <location filename="../../src/videolayer.cpp" line="171"/>
+        <source>X11 Pixmap</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoInputs</name>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="56"/>
-        <source>Add source</source>
-        <translation>Додати джерело</translation>
+        <location filename="../../src/videolayer.cpp" line="211"/>
+        <source>All Image and Video Files</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="67"/>
-        <source>No webcams found</source>
-        <translation>Веб-камери не знайдено</translation>
+        <location filename="../../src/videolayer.cpp" line="246"/>
+        <source>All Files</source>
+        <translation type="unfinished">Усі файли</translation>
     </message>
-</context>
-<context>
-    <name>VideoLayer</name>
     <message>
-        <location filename="../../src/videolayer.cpp" line="261"/>
+        <location filename="../../src/videolayer.cpp" line="388"/>
         <source>No Output</source>
         <extracomment>Disable video output, don&apos;t send the video to the output device.</extracomment>
         <translation>Немає виходу</translation>
     </message>
     <message>
-        <location filename="../../src/videolayer.cpp" line="593"/>
+        <location filename="../../src/videolayer.cpp" line="723"/>
         <source>Virtual Camera</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1633,6 +1723,7 @@
     </message>
     <message>
         <location filename="../../../libAvKys/Plugins/DesktopCapture/share/qml/main.qml" line="48"/>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="64"/>
         <source>Frame rate</source>
         <translation>Частота кадрів</translation>
     </message>
@@ -2643,7 +2734,7 @@ background blur or image below.</source>
         <translation>%1 секунд</translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="279"/>
+        <location filename="../qml/main.qml" line="282"/>
         <source>Take a photo</source>
         <translation>Зробити світлину</translation>
     </message>
@@ -2658,7 +2749,7 @@ background blur or image below.</source>
         <translation type="unfinished">Денна збірка</translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="328"/>
+        <location filename="../qml/main.qml" line="331"/>
         <source>Record video</source>
         <translation>Записати відео</translation>
     </message>
@@ -2827,5 +2918,10 @@ duration (seconds)</source>
         <source>Luminance</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="47"/>
+        <source>Force frame rate</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- webcamoid-9.0.0.orig/StandAlone/share/ts/vi.ts
+++ webcamoid-9.0.0/StandAlone/share/ts/vi.ts
@@ -45,7 +45,7 @@
     <message>
         <location filename="../qml/AboutDialog.qml" line="45"/>
         <source>About</source>
-        <extracomment>Information of the program, like name, description, vesion, etc..</extracomment>
+        <extracomment>Information of the program, like name, description, version, etc..</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
@@ -359,7 +359,7 @@
 <context>
     <name>PipewireScreenDev</name>
     <message>
-        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="217"/>
+        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="216"/>
         <source>PipeWire Screen</source>
         <translation type="unfinished"></translation>
     </message>
@@ -455,7 +455,7 @@
 <context>
     <name>Recording</name>
     <message>
-        <location filename="../../src/recording.cpp" line="372"/>
+        <location filename="../../src/recording.cpp" line="373"/>
         <source>%1/Video %2.%3</source>
         <translation type="unfinished"></translation>
     </message>
@@ -807,126 +807,216 @@
         <source>Choose the file to add as source</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>VideoInputOptions</name>
+    <message>
+        <location filename="../qml/VideoInputOptions.qml" line="61"/>
+        <source>Edit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qml/VideoInputOptions.qml" line="74"/>
+        <source>Remove</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>VideoInputs</name>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="218"/>
-        <source>All Video Files</source>
-        <translation type="unfinished">Tất cả tệp phim</translation>
+        <location filename="../qml/VideoInputs.qml" line="56"/>
+        <source>Add source</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="221"/>
+        <location filename="../qml/VideoInputs.qml" line="67"/>
+        <source>No webcams found</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>VideoLayer</name>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="137"/>
         <source>3GP Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="222"/>
+        <location filename="../../src/videolayer.cpp" line="138"/>
         <source>AVI Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="224"/>
+        <location filename="../../src/videolayer.cpp" line="139"/>
+        <source>Windows Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="140"/>
+        <source>Microsoft Windows Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="142"/>
         <source>Flash Video</source>
         <extracomment>Adobe FLV Flash video</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="225"/>
+        <location filename="../../src/videolayer.cpp" line="143"/>
         <source>Animated GIF</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="226"/>
+        <location filename="../../src/videolayer.cpp" line="144"/>
+        <source>Graphic Interchange Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="145"/>
+        <source>Apple Icon Image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="146"/>
+        <source>Microsoft Windows Icon</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="147"/>
+        <source>Joint Photographic Experts Group</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="148"/>
         <source>MKV Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="227"/>
+        <location filename="../../src/videolayer.cpp" line="149"/>
         <source>Animated PNG</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="228"/>
+        <location filename="../../src/videolayer.cpp" line="150"/>
+        <source>Multiple-image Network Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="151"/>
         <source>QuickTime Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="229"/>
+        <location filename="../../src/videolayer.cpp" line="152"/>
         <source>MP4 Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="230"/>
+        <location filename="../../src/videolayer.cpp" line="153"/>
         <source>MPEG Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="231"/>
+        <location filename="../../src/videolayer.cpp" line="154"/>
         <source>Ogg Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="233"/>
+        <location filename="../../src/videolayer.cpp" line="155"/>
+        <source>Portable Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="156"/>
+        <source>Portable Graymap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="157"/>
+        <source>Portable Network Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="158"/>
+        <source>Portable Pixmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="160"/>
         <source>RealMedia Video</source>
         <extracomment>Don&apos;t translate &quot;RealMedia&quot;, leave it as is.</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="234"/>
+        <location filename="../../src/videolayer.cpp" line="161"/>
+        <source>Scalable Vector Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="162"/>
+        <source>Truevision TGA</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="163"/>
+        <source>Tagged Image File Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="164"/>
         <source>DVD Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="235"/>
+        <location filename="../../src/videolayer.cpp" line="165"/>
+        <source>Wireless Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="166"/>
         <source>WebM Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="237"/>
-        <source>Windows Media Video</source>
-        <extracomment>Also known as WMV, is a video file format.</extracomment>
+        <location filename="../../src/videolayer.cpp" line="167"/>
+        <source>WebP</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="238"/>
-        <source>All Files</source>
+        <location filename="../../src/videolayer.cpp" line="169"/>
+        <source>Windows Media Video</source>
+        <extracomment>Also known as WMV, is a video file format.</extracomment>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoInputOptions</name>
     <message>
-        <location filename="../qml/VideoInputOptions.qml" line="60"/>
-        <source>Edit</source>
+        <location filename="../../src/videolayer.cpp" line="170"/>
+        <source>X11 Bitmap</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputOptions.qml" line="72"/>
-        <source>Remove</source>
+        <location filename="../../src/videolayer.cpp" line="171"/>
+        <source>X11 Pixmap</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoInputs</name>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="56"/>
-        <source>Add source</source>
+        <location filename="../../src/videolayer.cpp" line="211"/>
+        <source>All Image and Video Files</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="67"/>
-        <source>No webcams found</source>
+        <location filename="../../src/videolayer.cpp" line="246"/>
+        <source>All Files</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoLayer</name>
     <message>
-        <location filename="../../src/videolayer.cpp" line="261"/>
+        <location filename="../../src/videolayer.cpp" line="388"/>
         <source>No Output</source>
         <extracomment>Disable video output, don&apos;t send the video to the output device.</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/videolayer.cpp" line="593"/>
+        <location filename="../../src/videolayer.cpp" line="723"/>
         <source>Virtual Camera</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1633,6 +1723,7 @@
     </message>
     <message>
         <location filename="../../../libAvKys/Plugins/DesktopCapture/share/qml/main.qml" line="48"/>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="64"/>
         <source>Frame rate</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2642,7 +2733,7 @@ background blur or image below.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="279"/>
+        <location filename="../qml/main.qml" line="282"/>
         <source>Take a photo</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2657,7 +2748,7 @@ background blur or image below.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="328"/>
+        <location filename="../qml/main.qml" line="331"/>
         <source>Record video</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2825,5 +2916,10 @@ duration (seconds)</source>
         <source>Luminance</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="47"/>
+        <source>Force frame rate</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- webcamoid-9.0.0.orig/StandAlone/share/ts/zh_CN.ts
+++ webcamoid-9.0.0/StandAlone/share/ts/zh_CN.ts
@@ -45,7 +45,7 @@
     <message>
         <location filename="../qml/AboutDialog.qml" line="45"/>
         <source>About</source>
-        <extracomment>Information of the program, like name, description, vesion, etc..</extracomment>
+        <extracomment>Information of the program, like name, description, version, etc..</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
@@ -359,7 +359,7 @@
 <context>
     <name>PipewireScreenDev</name>
     <message>
-        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="217"/>
+        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="216"/>
         <source>PipeWire Screen</source>
         <translation type="unfinished"></translation>
     </message>
@@ -455,7 +455,7 @@
 <context>
     <name>Recording</name>
     <message>
-        <location filename="../../src/recording.cpp" line="372"/>
+        <location filename="../../src/recording.cpp" line="373"/>
         <source>%1/Video %2.%3</source>
         <translation type="unfinished"></translation>
     </message>
@@ -807,126 +807,216 @@
         <source>Choose the file to add as source</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>VideoInputOptions</name>
+    <message>
+        <location filename="../qml/VideoInputOptions.qml" line="61"/>
+        <source>Edit</source>
+        <translation type="unfinished">编辑</translation>
+    </message>
+    <message>
+        <location filename="../qml/VideoInputOptions.qml" line="74"/>
+        <source>Remove</source>
+        <translation type="unfinished">删除</translation>
+    </message>
+</context>
+<context>
+    <name>VideoInputs</name>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="218"/>
-        <source>All Video Files</source>
+        <location filename="../qml/VideoInputs.qml" line="56"/>
+        <source>Add source</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="221"/>
+        <location filename="../qml/VideoInputs.qml" line="67"/>
+        <source>No webcams found</source>
+        <translation type="unfinished">没有检测到摄像头</translation>
+    </message>
+</context>
+<context>
+    <name>VideoLayer</name>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="137"/>
         <source>3GP Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="222"/>
+        <location filename="../../src/videolayer.cpp" line="138"/>
         <source>AVI Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="224"/>
+        <location filename="../../src/videolayer.cpp" line="139"/>
+        <source>Windows Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="140"/>
+        <source>Microsoft Windows Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="142"/>
         <source>Flash Video</source>
         <extracomment>Adobe FLV Flash video</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="225"/>
+        <location filename="../../src/videolayer.cpp" line="143"/>
         <source>Animated GIF</source>
         <translation type="unfinished">动态GIF</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="226"/>
+        <location filename="../../src/videolayer.cpp" line="144"/>
+        <source>Graphic Interchange Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="145"/>
+        <source>Apple Icon Image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="146"/>
+        <source>Microsoft Windows Icon</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="147"/>
+        <source>Joint Photographic Experts Group</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="148"/>
         <source>MKV Video</source>
         <translation type="unfinished">MKV视频</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="227"/>
+        <location filename="../../src/videolayer.cpp" line="149"/>
         <source>Animated PNG</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="228"/>
+        <location filename="../../src/videolayer.cpp" line="150"/>
+        <source>Multiple-image Network Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="151"/>
         <source>QuickTime Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="229"/>
+        <location filename="../../src/videolayer.cpp" line="152"/>
         <source>MP4 Video</source>
         <translation type="unfinished">MP4视频</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="230"/>
+        <location filename="../../src/videolayer.cpp" line="153"/>
         <source>MPEG Video</source>
         <translation type="unfinished">MPEG视频</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="231"/>
+        <location filename="../../src/videolayer.cpp" line="154"/>
         <source>Ogg Video</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="233"/>
+        <location filename="../../src/videolayer.cpp" line="155"/>
+        <source>Portable Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="156"/>
+        <source>Portable Graymap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="157"/>
+        <source>Portable Network Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="158"/>
+        <source>Portable Pixmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="160"/>
         <source>RealMedia Video</source>
         <extracomment>Don&apos;t translate &quot;RealMedia&quot;, leave it as is.</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="234"/>
+        <location filename="../../src/videolayer.cpp" line="161"/>
+        <source>Scalable Vector Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="162"/>
+        <source>Truevision TGA</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="163"/>
+        <source>Tagged Image File Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="164"/>
         <source>DVD Video</source>
         <translation type="unfinished">DVD视频</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="235"/>
+        <location filename="../../src/videolayer.cpp" line="165"/>
+        <source>Wireless Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="166"/>
         <source>WebM Video</source>
         <translation type="unfinished">WebM视频</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="237"/>
-        <source>Windows Media Video</source>
-        <extracomment>Also known as WMV, is a video file format.</extracomment>
+        <location filename="../../src/videolayer.cpp" line="167"/>
+        <source>WebP</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="238"/>
-        <source>All Files</source>
-        <translation type="unfinished">全部文件</translation>
+        <location filename="../../src/videolayer.cpp" line="169"/>
+        <source>Windows Media Video</source>
+        <extracomment>Also known as WMV, is a video file format.</extracomment>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoInputOptions</name>
     <message>
-        <location filename="../qml/VideoInputOptions.qml" line="60"/>
-        <source>Edit</source>
-        <translation type="unfinished">编辑</translation>
+        <location filename="../../src/videolayer.cpp" line="170"/>
+        <source>X11 Bitmap</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputOptions.qml" line="72"/>
-        <source>Remove</source>
-        <translation type="unfinished">删除</translation>
+        <location filename="../../src/videolayer.cpp" line="171"/>
+        <source>X11 Pixmap</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoInputs</name>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="56"/>
-        <source>Add source</source>
+        <location filename="../../src/videolayer.cpp" line="211"/>
+        <source>All Image and Video Files</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="67"/>
-        <source>No webcams found</source>
-        <translation type="unfinished">没有检测到摄像头</translation>
+        <location filename="../../src/videolayer.cpp" line="246"/>
+        <source>All Files</source>
+        <translation type="unfinished">全部文件</translation>
     </message>
-</context>
-<context>
-    <name>VideoLayer</name>
     <message>
-        <location filename="../../src/videolayer.cpp" line="261"/>
+        <location filename="../../src/videolayer.cpp" line="388"/>
         <source>No Output</source>
         <extracomment>Disable video output, don&apos;t send the video to the output device.</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/videolayer.cpp" line="593"/>
+        <location filename="../../src/videolayer.cpp" line="723"/>
         <source>Virtual Camera</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1633,6 +1723,7 @@
     </message>
     <message>
         <location filename="../../../libAvKys/Plugins/DesktopCapture/share/qml/main.qml" line="48"/>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="64"/>
         <source>Frame rate</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2642,7 +2733,7 @@ background blur or image below.</source>
         <translation type="unfinished">%1秒</translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="279"/>
+        <location filename="../qml/main.qml" line="282"/>
         <source>Take a photo</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2657,7 +2748,7 @@ background blur or image below.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="328"/>
+        <location filename="../qml/main.qml" line="331"/>
         <source>Record video</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2825,5 +2916,10 @@ duration (seconds)</source>
         <source>Luminance</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="47"/>
+        <source>Force frame rate</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- webcamoid-9.0.0.orig/StandAlone/share/ts/zh_TW.ts
+++ webcamoid-9.0.0/StandAlone/share/ts/zh_TW.ts
@@ -45,7 +45,7 @@
     <message>
         <location filename="../qml/AboutDialog.qml" line="45"/>
         <source>About</source>
-        <extracomment>Information of the program, like name, description, vesion, etc..</extracomment>
+        <extracomment>Information of the program, like name, description, version, etc..</extracomment>
         <translation type="unfinished">關於</translation>
     </message>
     <message>
@@ -359,7 +359,7 @@
 <context>
     <name>PipewireScreenDev</name>
     <message>
-        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="217"/>
+        <location filename="../../../libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp" line="216"/>
         <source>PipeWire Screen</source>
         <translation type="unfinished"></translation>
     </message>
@@ -455,7 +455,7 @@
 <context>
     <name>Recording</name>
     <message>
-        <location filename="../../src/recording.cpp" line="372"/>
+        <location filename="../../src/recording.cpp" line="373"/>
         <source>%1/Video %2.%3</source>
         <translation>%1/視訊 %2.%3</translation>
     </message>
@@ -807,126 +807,216 @@
         <source>Choose the file to add as source</source>
         <translation>選擇要新增為來源的檔案</translation>
     </message>
+</context>
+<context>
+    <name>VideoInputOptions</name>
+    <message>
+        <location filename="../qml/VideoInputOptions.qml" line="61"/>
+        <source>Edit</source>
+        <translation>編輯</translation>
+    </message>
+    <message>
+        <location filename="../qml/VideoInputOptions.qml" line="74"/>
+        <source>Remove</source>
+        <translation>移除</translation>
+    </message>
+</context>
+<context>
+    <name>VideoInputs</name>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="218"/>
-        <source>All Video Files</source>
-        <translation>所有影片檔案</translation>
+        <location filename="../qml/VideoInputs.qml" line="56"/>
+        <source>Add source</source>
+        <translation>新增來源</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="221"/>
+        <location filename="../qml/VideoInputs.qml" line="67"/>
+        <source>No webcams found</source>
+        <translation>找不到網路攝影機</translation>
+    </message>
+</context>
+<context>
+    <name>VideoLayer</name>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="137"/>
         <source>3GP Video</source>
-        <translation>3GP 影片</translation>
+        <translation type="unfinished">3GP 影片</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="222"/>
+        <location filename="../../src/videolayer.cpp" line="138"/>
         <source>AVI Video</source>
-        <translation>AVI 影片</translation>
+        <translation type="unfinished">AVI 影片</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="224"/>
+        <location filename="../../src/videolayer.cpp" line="139"/>
+        <source>Windows Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="140"/>
+        <source>Microsoft Windows Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="142"/>
         <source>Flash Video</source>
         <extracomment>Adobe FLV Flash video</extracomment>
-        <translation>Flash 影片</translation>
+        <translation type="unfinished">Flash 影片</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="225"/>
+        <location filename="../../src/videolayer.cpp" line="143"/>
         <source>Animated GIF</source>
-        <translation>GIF 動畫</translation>
+        <translation type="unfinished">GIF 動畫</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="226"/>
+        <location filename="../../src/videolayer.cpp" line="144"/>
+        <source>Graphic Interchange Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="145"/>
+        <source>Apple Icon Image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="146"/>
+        <source>Microsoft Windows Icon</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="147"/>
+        <source>Joint Photographic Experts Group</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="148"/>
         <source>MKV Video</source>
-        <translation>MKV 影片</translation>
+        <translation type="unfinished">MKV 影片</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="227"/>
+        <location filename="../../src/videolayer.cpp" line="149"/>
         <source>Animated PNG</source>
-        <translation>PNG 動畫</translation>
+        <translation type="unfinished">PNG 動畫</translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="150"/>
+        <source>Multiple-image Network Graphics</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="228"/>
+        <location filename="../../src/videolayer.cpp" line="151"/>
         <source>QuickTime Video</source>
-        <translation>QuickTime 影片</translation>
+        <translation type="unfinished">QuickTime 影片</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="229"/>
+        <location filename="../../src/videolayer.cpp" line="152"/>
         <source>MP4 Video</source>
-        <translation>MP4 影片</translation>
+        <translation type="unfinished">MP4 影片</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="230"/>
+        <location filename="../../src/videolayer.cpp" line="153"/>
         <source>MPEG Video</source>
-        <translation>MPEG 影片</translation>
+        <translation type="unfinished">MPEG 影片</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="231"/>
+        <location filename="../../src/videolayer.cpp" line="154"/>
         <source>Ogg Video</source>
-        <translation>Ogg 影片</translation>
+        <translation type="unfinished">Ogg 影片</translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="155"/>
+        <source>Portable Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="156"/>
+        <source>Portable Graymap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="157"/>
+        <source>Portable Network Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="158"/>
+        <source>Portable Pixmap</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="233"/>
+        <location filename="../../src/videolayer.cpp" line="160"/>
         <source>RealMedia Video</source>
         <extracomment>Don&apos;t translate &quot;RealMedia&quot;, leave it as is.</extracomment>
-        <translation>RealMedia 影片</translation>
+        <translation type="unfinished">RealMedia 影片</translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="161"/>
+        <source>Scalable Vector Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="162"/>
+        <source>Truevision TGA</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="234"/>
+        <location filename="../../src/videolayer.cpp" line="163"/>
+        <source>Tagged Image File Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="164"/>
         <source>DVD Video</source>
-        <translation>DVD 影片</translation>
+        <translation type="unfinished">DVD 影片</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="235"/>
+        <location filename="../../src/videolayer.cpp" line="165"/>
+        <source>Wireless Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="166"/>
         <source>WebM Video</source>
-        <translation>WebM 影片</translation>
+        <translation type="unfinished">WebM 影片</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="237"/>
+        <location filename="../../src/videolayer.cpp" line="167"/>
+        <source>WebP</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../src/videolayer.cpp" line="169"/>
         <source>Windows Media Video</source>
         <extracomment>Also known as WMV, is a video file format.</extracomment>
-        <translation>WMV 影片</translation>
+        <translation type="unfinished">WMV 影片</translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputAddEdit.qml" line="238"/>
-        <source>All Files</source>
-        <translation>所有檔案</translation>
-    </message>
-</context>
-<context>
-    <name>VideoInputOptions</name>
-    <message>
-        <location filename="../qml/VideoInputOptions.qml" line="60"/>
-        <source>Edit</source>
-        <translation>編輯</translation>
+        <location filename="../../src/videolayer.cpp" line="170"/>
+        <source>X11 Bitmap</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputOptions.qml" line="72"/>
-        <source>Remove</source>
-        <translation>移除</translation>
+        <location filename="../../src/videolayer.cpp" line="171"/>
+        <source>X11 Pixmap</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>VideoInputs</name>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="56"/>
-        <source>Add source</source>
-        <translation>新增來源</translation>
+        <location filename="../../src/videolayer.cpp" line="211"/>
+        <source>All Image and Video Files</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qml/VideoInputs.qml" line="67"/>
-        <source>No webcams found</source>
-        <translation>找不到網路攝影機</translation>
+        <location filename="../../src/videolayer.cpp" line="246"/>
+        <source>All Files</source>
+        <translation type="unfinished">所有檔案</translation>
     </message>
-</context>
-<context>
-    <name>VideoLayer</name>
     <message>
-        <location filename="../../src/videolayer.cpp" line="261"/>
+        <location filename="../../src/videolayer.cpp" line="388"/>
         <source>No Output</source>
         <extracomment>Disable video output, don&apos;t send the video to the output device.</extracomment>
         <translation>不要輸出</translation>
     </message>
     <message>
-        <location filename="../../src/videolayer.cpp" line="593"/>
+        <location filename="../../src/videolayer.cpp" line="723"/>
         <source>Virtual Camera</source>
         <translation>虛擬攝影機</translation>
     </message>
@@ -1633,6 +1723,7 @@
     </message>
     <message>
         <location filename="../../../libAvKys/Plugins/DesktopCapture/share/qml/main.qml" line="48"/>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="64"/>
         <source>Frame rate</source>
         <translation type="unfinished">幀率</translation>
     </message>
@@ -2642,7 +2733,7 @@ background blur or image below.</source>
         <translation>%1 秒</translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="279"/>
+        <location filename="../qml/main.qml" line="282"/>
         <source>Take a photo</source>
         <translation>照相</translation>
     </message>
@@ -2657,7 +2748,7 @@ background blur or image below.</source>
         <translation type="unfinished">每日構建</translation>
     </message>
     <message>
-        <location filename="../qml/main.qml" line="328"/>
+        <location filename="../qml/main.qml" line="331"/>
         <source>Record video</source>
         <translation>錄影</translation>
     </message>
@@ -2826,5 +2917,10 @@ duration (seconds)</source>
         <source>Luminance</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../../libAvKys/Plugins/ImageSrc/share/qml/main.qml" line="47"/>
+        <source>Force frame rate</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- webcamoid-9.0.0.orig/StandAlone/src/main.cpp
+++ webcamoid-9.0.0/StandAlone/src/main.cpp
@@ -51,12 +51,15 @@ int main(int argc, char *argv[])
 
     // Install translations.
     QTranslator translator;
-    translator.load(QLocale::system().name(), ":/Webcamoid/share/ts");
-    QCoreApplication::installTranslator(&translator);
+
+    if (translator.load(QLocale::system().name(), ":/Webcamoid/share/ts"))
+        QCoreApplication::installTranslator(&translator);
 
     // Set theme.
     QQuickStyle::addStylePath(":/Webcamoid/share/themes");
     QQuickStyle::setStyle("WebcamoidTheme");
+
+    // Set fonts
     QDirIterator fontsDirIterator(":/Webcamoid/share/themes/WebcamoidTheme/fonts",
                                   QStringList() << "*.ttf",
                                   QDir::Files
--- webcamoid-9.0.0.orig/StandAlone/src/mediatools.cpp
+++ webcamoid-9.0.0/StandAlone/src/mediatools.cpp
@@ -519,6 +519,7 @@ void MediaTools::show()
         AkElement::link(this->d->m_videoEffects.data(),
                         videoDisplay,
                         Qt::DirectConnection);
+
         break;
     }
 
--- webcamoid-9.0.0.orig/StandAlone/src/recording.cpp
+++ webcamoid-9.0.0/StandAlone/src/recording.cpp
@@ -22,6 +22,7 @@
 #include <QDir>
 #include <QFile>
 #include <QImage>
+#include <QImageWriter>
 #include <QMutex>
 #include <QQmlApplicationEngine>
 #include <QQmlContext>
@@ -795,9 +796,11 @@ void Recording::thumbnailUpdated(const A
         return;
 
     this->d->m_thumbnail = thumbnail;
-    QtConcurrent::run(&this->d->m_threadPool,
-                      this->d,
-                      &RecordingPrivate::thumbnailReady);
+    auto result =
+            QtConcurrent::run(&this->d->m_threadPool,
+                              this->d,
+                              &RecordingPrivate::thumbnailReady);
+    Q_UNUSED(result)
 }
 
 void Recording::mediaLoaded(const QString &media)
@@ -834,13 +837,44 @@ void Recording::mediaLoaded(const QStrin
 RecordingPrivate::RecordingPrivate(Recording *self):
     self(self)
 {
-    this->m_imageFormats = {
-        {"png", "PNG" },
-        {"jpg", "JPEG"},
-        {"bmp", "BMP" },
-        {"gif", "GIF" },
+    static const QMap<QString, QString> formatsDescription {
+        {"bmp" , "Windows Bitmap (BMP)"                       },
+        {"cur" , "Microsoft Windows Cursor (CUR)"             },
+        {"icns", "Apple Icon Image (ICNS)"                    },
+        {"ico" , "Microsoft Windows Icon (ICO)"               },
+        {"jp2" , "Joint Photographic Experts Group 2000 (JP2)"},
+        {"jpg" , "Joint Photographic Experts Group (JPEG)"    },
+        {"pbm" , "Portable Bitmap (PBM)"                      },
+        {"pgm" , "Portable Graymap (PGM)"                     },
+        {"png" , "Portable Network Graphics (PNG)"            },
+        {"ppm" , "Portable Pixmap (PPM)"                      },
+        {"tiff", "Tagged Image File Format (TIFF)"            },
+        {"wbmp", "Wireless Bitmap (WBMP)"                     },
+        {"webp", "WebP (WEBP)"                                },
+        {"xbm" , "X11 Bitmap (XBM)"                           },
+        {"xpm" , "X11 Pixmap (XPM)"                           },
     };
 
+    static const QMap<QString, QString> formatsMapping {
+        {"jpeg", "jpg" },
+        {"tif" , "tiff"},
+    };
+
+    for (auto &format: QImageWriter::supportedImageFormats()) {
+        QString fmt = format;
+
+        if (formatsMapping.contains(fmt))
+            fmt = formatsMapping[fmt];
+
+        if (this->m_imageFormats.contains(fmt))
+            continue;
+
+        if (formatsDescription.contains(fmt))
+            this->m_imageFormats[fmt] = formatsDescription[fmt];
+        else
+            this->m_imageFormats[fmt] = fmt.toUpper();
+    }
+
     this->m_mediaWriterImpl =
             akPluginManager->defaultPlugin("MultimediaSink/MultiSink/Impl/*",
                                            {"MultiSinkImpl"}).id();
--- webcamoid-9.0.0.orig/StandAlone/src/videodisplay.h
+++ webcamoid-9.0.0/StandAlone/src/videodisplay.h
@@ -38,7 +38,7 @@ class VideoDisplay: public QQuickItem
 
     public:
         VideoDisplay(QQuickItem *parent=nullptr);
-        ~VideoDisplay();
+        ~VideoDisplay() override;
 
         Q_INVOKABLE bool fillDisplay() const;
 
@@ -47,7 +47,7 @@ class VideoDisplay: public QQuickItem
 
     protected:
         QSGNode *updatePaintNode(QSGNode *oldNode,
-                                 UpdatePaintNodeData *updatePaintNodeData);
+                                 UpdatePaintNodeData *updatePaintNodeData) override;
 
     signals:
         void fillDisplayChanged();
--- webcamoid-9.0.0.orig/StandAlone/src/videolayer.cpp
+++ webcamoid-9.0.0/StandAlone/src/videolayer.cpp
@@ -20,6 +20,7 @@
 #include <QDir>
 #include <QFile>
 #include <QFileInfo>
+#include <QImageReader>
 #include <QQmlApplicationEngine>
 #include <QQmlContext>
 #include <QQmlProperty>
@@ -56,11 +57,14 @@ class VideoLayerPrivate
         QString m_videoInput;
         QStringList m_videoOutput;
         QStringList m_inputs;
+        QMap<QString, QString> m_images;
         QMap<QString, QString> m_streams;
+        QStringList m_supportedImageFormats;
         AkAudioCaps m_inputAudioCaps;
         AkVideoCaps m_inputVideoCaps;
         AkElementPtr m_cameraCapture {akPluginManager->create<AkElement>("VideoSource/CameraCapture")};
         AkElementPtr m_desktopCapture {akPluginManager->create<AkElement>("VideoSource/DesktopCapture")};
+        AkElementPtr m_imageCapture {akPluginManager->create<AkElement>("VideoSource/ImageSrc")};
         AkElementPtr m_uriCapture {akPluginManager->create<AkElement>("MultimediaSource/MultiSrc")};
         AkElementPtr m_cameraOutput {akPluginManager->create<AkElement>("VideoSink/VirtualCamera")};
         QString m_vcamDriver;
@@ -127,6 +131,123 @@ VideoLayer::~VideoLayer()
     delete this->d;
 }
 
+QStringList VideoLayer::videoSourceFileFilters() const
+{
+    static const QMap<QString, QString> formatsDescription {
+        {"3gp" , tr("3GP Video")                            },
+        {"avi" , tr("AVI Video")                            },
+        {"bmp" , tr("Windows Bitmap")                       },
+        {"cur" , tr("Microsoft Windows Cursor")             },
+        //: Adobe FLV Flash video
+        {"flv" , tr("Flash Video")                          },
+        {"gif" , tr("Animated GIF")                         },
+        {"gif" , tr("Graphic Interchange Format")           },
+        {"icns", tr("Apple Icon Image")                     },
+        {"ico" , tr("Microsoft Windows Icon")               },
+        {"jpg" , tr("Joint Photographic Experts Group")     },
+        {"mkv" , tr("MKV Video")                            },
+        {"mng" , tr("Animated PNG")                         },
+        {"mng" , tr("Multiple-image Network Graphics")      },
+        {"mov" , tr("QuickTime Video")                      },
+        {"mp4" , tr("MP4 Video")                            },
+        {"mpg" , tr("MPEG Video")                           },
+        {"ogg" , tr("Ogg Video")                            },
+        {"pbm" , tr("Portable Bitmap")                      },
+        {"pgm" , tr("Portable Graymap")                     },
+        {"png" , tr("Portable Network Graphics")            },
+        {"ppm" , tr("Portable Pixmap")                      },
+        //: Don't translate "RealMedia", leave it as is.
+        {"rm"  , tr("RealMedia Video")                      },
+        {"svg" , tr("Scalable Vector Graphics")             },
+        {"tga" , tr("Truevision TGA")                       },
+        {"tiff", tr("Tagged Image File Format")             },
+        {"vob" , tr("DVD Video")                            },
+        {"wbmp", tr("Wireless Bitmap")                      },
+        {"webm", tr("WebM Video")                           },
+        {"webp", tr("WebP")                                 },
+        //: Also known as WMV, is a video file format.
+        {"wmv" , tr("Windows Media Video")                  },
+        {"xbm" , tr("X11 Bitmap")                           },
+        {"xpm" , tr("X11 Pixmap")                           },
+    };
+
+    static const QMap<QString, QString> formatsMapping {
+        {"jp2" , "jpg" },
+        {"jpeg", "jpg" },
+        {"svgz", "svg" },
+        {"tif" , "tiff"},
+        {"m4v" , "mp4" },
+        {"mpeg", "mpg" },
+    };
+
+    static const QStringList supportedVideoFormats {
+        "3gp",
+        "avi",
+        "flv",
+        "gif",
+        "mkv",
+        "mng",
+        "mov",
+        "mp4",
+        "m4v",
+        "mpg",
+        "mpeg",
+        "ogg",
+        "rm",
+        "vob",
+        "webm",
+        "wmv"
+    };
+
+    auto supportedImageFormats = QImageReader::supportedImageFormats();
+    supportedImageFormats.removeAll("pdf");
+    QStringList supportedFormats = supportedVideoFormats
+                                   + QStringList(supportedImageFormats.begin(),
+                                                 supportedImageFormats.end());
+    QString extensions =
+            "*." + supportedFormats.join(" *.");
+
+    QStringList filters;
+    filters << tr("All Image and Video Files")
+               + QString(" (%1)").arg(extensions);
+
+    QStringList formats;
+
+    for (auto &format: supportedFormats) {
+        QString fmt;
+
+        if (formatsMapping.contains(format))
+            fmt = formatsMapping[format];
+        else
+            fmt = format;
+
+        if (!formats.contains(fmt))
+            formats << fmt;
+    }
+
+    QStringList fileFilters;
+
+    for (auto &format: formats) {
+        QString filter;
+        QStringList extensions = QStringList {format}
+                                 + formatsMapping.keys(format);
+        QString extensionsFilter = "*." + extensions.join(" *.");
+
+        if (formatsDescription.contains(format))
+            filter = format.toUpper() + " - " + formatsDescription[format];
+        else
+            filter = format.toUpper();
+
+        fileFilters << filter + QString(" (%1)").arg(extensionsFilter);
+    }
+
+    fileFilters.sort();
+    filters << fileFilters;
+    filters << tr("All Files") + " (*)";
+
+    return filters;
+}
+
 QString VideoLayer::videoInput() const
 {
     return this->d->m_videoInput;
@@ -229,6 +350,9 @@ VideoLayer::InputType VideoLayer::device
     if (this->d->desktops().contains(device))
         return InputDesktop;
 
+    if (this->d->m_images.contains(device))
+        return InputImage;
+
     if (this->d->m_streams.contains(device))
         return InputStream;
 
@@ -244,6 +368,9 @@ QStringList VideoLayer::devicesByType(In
     case InputDesktop:
         return this->d->desktops();
 
+    case InputImage:
+        return this->d->m_images.keys();
+
     case InputStream:
         return this->d->m_streams.keys();
 
@@ -280,6 +407,9 @@ QString VideoLayer::description(const QS
     if (this->d->desktops().contains(device))
         return this->d->desktopDescription(device);
 
+    if (this->d->m_images.contains(device))
+        return this->d->m_images.value(device);
+
     if (this->d->m_streams.contains(device))
         return this->d->m_streams.value(device);
 
@@ -613,7 +743,8 @@ bool VideoLayer::executeVCamInstaller(co
                                     | QFileDevice::ReadOther
                                     | QFileDevice::ExeOther);
 
-    QtConcurrent::run(&this->d->m_threadPool, [this, installer] () {
+    auto result =
+            QtConcurrent::run(&this->d->m_threadPool, [this, installer] () {
         qDebug() << "Executing installer:" << installer;
         int exitCode = -1;
         QString errorString = "Can't execute installer";
@@ -662,6 +793,7 @@ bool VideoLayer::executeVCamInstaller(co
 
         emit this->vcamInstallFinished(exitCode, errorString);
     });
+    Q_UNUSED(result)
 
     return true;
 }
@@ -700,23 +832,37 @@ void VideoLayer::setInputStream(const QS
 {
     if (stream.isEmpty()
         || description.isEmpty()
-        || this->d->m_streams.value(stream) == description)
+        || this->d->m_streams.value(stream) == description
+        || this->d->m_images.value(stream) == description)
         return;
 
-    this->d->m_streams[stream] = description;
+    QFileInfo fileInfo(stream);
+    auto suffix = fileInfo.suffix().toLower();
+
+    if (fileInfo.exists() && this->d->m_supportedImageFormats.contains(suffix))
+        this->d->m_images[stream] = description;
+    else
+        this->d->m_streams[stream] = description;
+
     this->updateInputs();
-    this->d->saveStreams(this->d->m_streams);
+    auto streams = this->d->m_streams;
+    streams.insert(this->d->m_images);
+    this->d->saveStreams(streams);
 }
 
 void VideoLayer::removeInputStream(const QString &stream)
 {
     if (stream.isEmpty()
-        || !this->d->m_streams.contains(stream))
+        || (!this->d->m_images.contains(stream)
+            && !this->d->m_streams.contains(stream)))
         return;
 
+    this->d->m_images.remove(stream);
     this->d->m_streams.remove(stream);
     this->updateInputs();
-    this->d->saveStreams(this->d->m_streams);
+    auto streams = this->d->m_streams;
+    streams.insert(this->d->m_images);
+    this->d->saveStreams(streams);
 }
 
 void VideoLayer::setVideoInput(const QString &videoInput)
@@ -767,6 +913,9 @@ void VideoLayer::setState(AkElement::Ele
         if (this->d->m_desktopCapture)
             this->d->m_desktopCapture->setState(AkElement::ElementStateNull);
 
+        if (this->d->m_imageCapture)
+            this->d->m_imageCapture->setState(AkElement::ElementStateNull);
+
         if (this->d->m_uriCapture)
             this->d->m_uriCapture->setState(AkElement::ElementStateNull);
 
@@ -775,10 +924,24 @@ void VideoLayer::setState(AkElement::Ele
         if (this->d->m_cameraCapture)
             this->d->m_cameraCapture->setState(AkElement::ElementStateNull);
 
+        if (this->d->m_imageCapture)
+            this->d->m_imageCapture->setState(AkElement::ElementStateNull);
+
         if (this->d->m_uriCapture)
             this->d->m_uriCapture->setState(AkElement::ElementStateNull);
 
         source = this->d->m_desktopCapture;
+    } else if (this->d->m_images.contains(this->d->m_videoInput)) {
+        if (this->d->m_cameraCapture)
+            this->d->m_cameraCapture->setState(AkElement::ElementStateNull);
+
+        if (this->d->m_desktopCapture)
+            this->d->m_desktopCapture->setState(AkElement::ElementStateNull);
+
+        if (this->d->m_uriCapture)
+            this->d->m_uriCapture->setState(AkElement::ElementStateNull);
+
+        source = this->d->m_imageCapture;
     } else if (this->d->m_streams.contains(this->d->m_videoInput)) {
         if (this->d->m_cameraCapture)
             this->d->m_cameraCapture->setState(AkElement::ElementStateNull);
@@ -786,6 +949,9 @@ void VideoLayer::setState(AkElement::Ele
         if (this->d->m_desktopCapture)
             this->d->m_desktopCapture->setState(AkElement::ElementStateNull);
 
+        if (this->d->m_imageCapture)
+            this->d->m_imageCapture->setState(AkElement::ElementStateNull);
+
         source = this->d->m_uriCapture;
     }
 
@@ -987,41 +1153,18 @@ void VideoLayer::updateCaps()
 void VideoLayer::updateInputs()
 {
     QStringList inputs;
-    QMap<QString, QString> descriptions;
 
     // Read cameras
     auto cameras = this->d->cameras();
     inputs << cameras;
 
-    for (auto &camera: cameras) {
-        QString description;
-        QMetaObject::invokeMethod(this->d->m_cameraCapture.data(),
-                                  "description",
-                                  Q_RETURN_ARG(QString, description),
-                                  Q_ARG(QString, camera));
-        descriptions[camera] = description;
-    }
-
     // Read desktops
     auto desktops = this->d->desktops();
     inputs << desktops;
 
-    for (auto &desktop: desktops) {
-        QString description;
-        QMetaObject::invokeMethod(this->d->m_desktopCapture.data(),
-                                  "description",
-                                  Q_RETURN_ARG(QString, description),
-                                  Q_ARG(QString, desktop));
-        descriptions[desktop] = description;
-    }
-
     // Read streams
-    inputs << this->d->m_streams.keys();
-
-    for (auto it = this->d->m_streams.begin();
-         it != this->d->m_streams.end();
-         it++)
-        descriptions[it.key()] = it.value();
+    inputs << this->d->m_images.keys()
+           << this->d->m_streams.keys();
 
     // Remove outputs to prevent self blocking.
     if (this->d->m_cameraOutput && !this->d->m_outputsAsInputs) {
@@ -1108,10 +1251,26 @@ void VideoLayerPrivate::connectSignals()
                          SLOT(updateCaps()));
     }
 
+    if (this->m_imageCapture) {
+        QObject::connect(this->m_imageCapture.data(),
+                         SIGNAL(oStream(AkPacket)),
+                         self,
+                         SIGNAL(oStream(AkPacket)),
+                         Qt::DirectConnection);
+        QObject::connect(this->m_imageCapture.data(),
+                         SIGNAL(error(QString)),
+                         self,
+                         SIGNAL(inputErrorChanged(QString)));
+        QObject::connect(this->m_imageCapture.data(),
+                         SIGNAL(streamsChanged(QList<int>)),
+                         self,
+                         SLOT(updateCaps()));
+        this->m_supportedImageFormats =
+                this->m_imageCapture->property("supportedFormats").toStringList();
+    }
+
     if (this->m_uriCapture) {
-        this->m_uriCapture->setProperty("objectName", "uriCapture");
         this->m_uriCapture->setProperty("loop", true);
-        this->m_uriCapture->setProperty("audioAlign", true);
 
         QObject::connect(this->m_uriCapture.data(),
                          SIGNAL(oStream(AkPacket)),
@@ -1166,6 +1325,9 @@ AkElementPtr VideoLayerPrivate::sourceEl
     if (this->desktops().contains(stream))
         return this->m_desktopCapture;
 
+    if (this->m_images.contains(stream))
+        return this->m_imageCapture;
+
     if (this->m_streams.contains(stream))
         return this->m_uriCapture;
 
@@ -1180,6 +1342,9 @@ QString VideoLayerPrivate::sourceId(cons
     if (this->desktops().contains(stream))
         return {"VideoSource/DesktopCapture"};
 
+    if (this->m_images.contains(stream))
+        return {"VideoSource/ImageSrc"};
+
     if (this->m_streams.contains(stream))
         return {"MultimediaSource/MultiSrc"};
 
@@ -1305,7 +1470,14 @@ void VideoLayerPrivate::loadProperties()
         config.setArrayIndex(i);
         auto uri = config.value("uri").toString();
         auto description = config.value("description").toString();
-        this->m_streams[uri] = description;
+
+        QFileInfo fileInfo(uri);
+        auto suffix = fileInfo.suffix().toLower();
+
+        if (fileInfo.exists() && this->m_supportedImageFormats.contains(suffix))
+            this->m_images[uri] = description;
+        else
+            this->m_streams[uri] = description;
     }
 
     config.endArray();
--- webcamoid-9.0.0.orig/StandAlone/src/videolayer.h
+++ webcamoid-9.0.0/StandAlone/src/videolayer.h
@@ -45,6 +45,9 @@ class VideoLayer: public QObject
     Q_PROPERTY(QString outputError
                READ outputError
                NOTIFY outputErrorChanged)
+    Q_PROPERTY(QStringList videoSourceFileFilters
+               READ videoSourceFileFilters
+               CONSTANT)
     Q_PROPERTY(QString videoInput
                READ videoInput
                WRITE setVideoInput
@@ -131,6 +134,7 @@ class VideoLayer: public QObject
             InputUnknown,
             InputCamera,
             InputDesktop,
+            InputImage,
             InputStream
         };
         enum OutputType {
@@ -149,6 +153,7 @@ class VideoLayer: public QObject
                    QObject *parent=nullptr);
         ~VideoLayer();
 
+        Q_INVOKABLE QStringList videoSourceFileFilters() const;
         Q_INVOKABLE QString videoInput() const;
         Q_INVOKABLE QStringList videoOutput() const;
         Q_INVOKABLE QStringList inputs() const;
--- webcamoid-9.0.0.orig/libAvKys/Plugins/AudioDevice/src/alsa/src/audiodevalsa.cpp
+++ webcamoid-9.0.0/libAvKys/Plugins/AudioDevice/src/alsa/src/audiodevalsa.cpp
@@ -18,11 +18,11 @@
  */
 
 #include <cstdarg>
+#include <QFileSystemWatcher>
 #include <QMap>
-#include <QVector>
-#include <QTimer>
 #include <QMutex>
-#include <QFileSystemWatcher>
+#include <QTimer>
+#include <QVector>
 #include <alsa/asoundlib.h>
 #include <alsa/error.h>
 #include <akaudiopacket.h>
--- webcamoid-9.0.0.orig/libAvKys/Plugins/AudioDevice/src/coreaudio/src/audiodevcoreaudio.cpp
+++ webcamoid-9.0.0/libAvKys/Plugins/AudioDevice/src/coreaudio/src/audiodevcoreaudio.cpp
@@ -18,6 +18,7 @@
  */
 
 #include <QMap>
+#include <QMutex>
 #include <QVector>
 #include <QWaitCondition>
 #include <akaudiocaps.h>
--- webcamoid-9.0.0.orig/libAvKys/Plugins/AudioDevice/src/jack/CMakeLists.txt
+++ webcamoid-9.0.0/libAvKys/Plugins/AudioDevice/src/jack/CMakeLists.txt
@@ -42,9 +42,6 @@ set(SOURCES
     ../audiodev.h
     src/audiodevjack.cpp
     src/audiodevjack.h
-    src/jackserver.cpp
-    src/jackserver.h
-    src/jackservertypedefs.h
     src/plugin.cpp
     src/plugin.h
     pspec.json)
--- webcamoid-9.0.0.orig/libAvKys/Plugins/AudioDevice/src/jack/src/audiodevjack.cpp
+++ webcamoid-9.0.0/libAvKys/Plugins/AudioDevice/src/jack/src/audiodevjack.cpp
@@ -27,7 +27,6 @@
 #include <jack/jack.h>
 
 #include "audiodevjack.h"
-#include "jackserver.h"
 
 using JackErrorCodes = QMap<jack_status_t, QString>;
 
--- webcamoid-9.0.0.orig/libAvKys/Plugins/CMakeLists.txt
+++ webcamoid-9.0.0/libAvKys/Plugins/CMakeLists.txt
@@ -26,6 +26,7 @@ add_subdirectory(ACapsConvert)
 add_subdirectory(AudioDevice)
 add_subdirectory(AudioGen)
 add_subdirectory(DesktopCapture)
+add_subdirectory(ImageSrc)
 add_subdirectory(Multiplex)
 add_subdirectory(MultiSink)
 add_subdirectory(MultiSrc)
--- webcamoid-9.0.0.orig/libAvKys/Plugins/Denoise/src/denoiseelement.cpp
+++ webcamoid-9.0.0/libAvKys/Plugins/Denoise/src/denoiseelement.cpp
@@ -275,13 +275,16 @@ AkPacket DenoiseElement::iVideoStream(co
             params->oPixel = oLine + x;
             params->alpha = qAlpha(iLine[x]);
 
-            if (radius >= 20)
-                QtConcurrent::run(&threadPool,
-                                  DenoiseElementPrivate::denoise,
-                                  staticParams,
-                                  params);
-            else
+            if (radius >= 20) {
+                auto result =
+                        QtConcurrent::run(&threadPool,
+                                          DenoiseElementPrivate::denoise,
+                                          staticParams,
+                                          params);
+                Q_UNUSED(result)
+            } else {
                 this->d->denoise(staticParams, params);
+            }
         }
     }
 
--- webcamoid-9.0.0.orig/libAvKys/Plugins/DesktopCapture/src/androidscreen/src/androidscreendev.cpp
+++ webcamoid-9.0.0/libAvKys/Plugins/DesktopCapture/src/androidscreen/src/androidscreendev.cpp
@@ -18,7 +18,6 @@
  */
 
 #include <QApplication>
-#include <QDesktopWidget>
 #include <QFuture>
 #include <QMutex>
 #include <QScreen>
@@ -209,8 +208,13 @@ AkCaps AndroidScreenDev::caps(int stream
         || stream != 0)
         return AkCaps();
 
+    auto curScreen = this->d->m_curScreenNumber;
     auto screens = QGuiApplication::screens();
-    auto screen = screens[this->d->m_curScreenNumber];
+
+    if (curScreen < 0 || curScreen >= screens.size())
+        return {};
+
+    auto screen = screens[curScreen];
 
     if (!screen)
         return {};
--- webcamoid-9.0.0.orig/libAvKys/Plugins/DesktopCapture/src/avfoundation/src/avfoundationscreendev.mm
+++ webcamoid-9.0.0/libAvKys/Plugins/DesktopCapture/src/avfoundation/src/avfoundationscreendev.mm
@@ -18,7 +18,6 @@
  */
 
 #include <QApplication>
-#include <QDesktopWidget>
 #include <QScreen>
 #include <QThreadPool>
 #include <QtConcurrent>
@@ -55,6 +54,7 @@ AVFoundationScreenDev::AVFoundationScree
     for (auto screen: QGuiApplication::screens()) {
         QObject::connect(screen,
                          &QScreen::geometryChanged,
+                         this,
                          [=]() { this->srceenResized(int(i)); });
         i++;
     }
@@ -131,7 +131,13 @@ AkCaps AVFoundationScreenDev::caps(int s
         || stream != 0)
         return {};
 
-    auto screen = QGuiApplication::screens()[this->d->m_curScreenNumber];
+    auto curScreen = this->d->m_curScreenNumber;
+    auto screens = QGuiApplication::screens();
+
+    if (curScreen < 0 || curScreen >= screens.size())
+        return {};
+
+    auto screen = screens[curScreen];
 
     if (!screen)
         return {};
@@ -160,6 +166,7 @@ void AVFoundationScreenDev::frameReceive
     videoPacket.timeBase() = fps.invert();
     videoPacket.index() = 0;
     videoPacket.id() = id;
+    CGImageRelease(image);
 
     emit this->oStream(videoPacket);
 }
@@ -323,6 +330,7 @@ void AVFoundationScreenDev::screenAdded(
         if (screen_ == screen)
             QObject::connect(screen_,
                              &QScreen::geometryChanged,
+                             this,
                              [=]() { this->srceenResized(int(i)); });
 
         i++;
@@ -341,7 +349,15 @@ void AVFoundationScreenDev::screenRemove
 void AVFoundationScreenDev::srceenResized(int screen)
 {
     auto media = QString("screen://%1").arg(screen);
-    auto widget = QGuiApplication::screens()[screen];
+    auto screens = QGuiApplication::screens();
+
+    if (screen < 0 || screen >= screens.size())
+        return;
+
+    auto widget = screens[screen];
+
+    if (!widget)
+        return;
 
     emit this->sizeChanged(media, widget->size());
 }
--- webcamoid-9.0.0.orig/libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp
+++ webcamoid-9.0.0/libAvKys/Plugins/DesktopCapture/src/pipewire/src/pipewirescreendev.cpp
@@ -21,7 +21,6 @@
 #include <QDBusInterface>
 #include <QDBusReply>
 #include <QDBusUnixFileDescriptor>
-#include <QDesktopWidget>
 #include <QFuture>
 #include <QMutex>
 #include <QScreen>
@@ -339,8 +338,15 @@ void PipewireScreenDev::screenRemoved(QS
 void PipewireScreenDev::srceenResized(int screen)
 {
     auto screens = QGuiApplication::screens();
+
+    if (screen < 0 || screen >= screens.size())
+        return;
+
     auto widget = screens[screen];
 
+    if (!widget)
+        return;
+
     emit this->sizeChanged("screen://pipewire", widget->size());
 }
 
--- webcamoid-9.0.0.orig/libAvKys/Plugins/DesktopCapture/src/qtscreen/src/qtscreendev.cpp
+++ webcamoid-9.0.0/libAvKys/Plugins/DesktopCapture/src/qtscreen/src/qtscreendev.cpp
@@ -50,6 +50,7 @@ class QtScreenDevPrivate
         bool m_threadedRead {true};
 
         explicit QtScreenDevPrivate(QtScreenDev *self);
+        void readFrame();
         void sendPacket(const AkPacket &packet);
 };
 
@@ -80,7 +81,9 @@ QtScreenDev::QtScreenDev():
     QObject::connect(&this->d->m_timer,
                      &QTimer::timeout,
                      this,
-                     &QtScreenDev::readFrame);
+                     [this] () {
+        this->d->readFrame();
+    });
 }
 
 QtScreenDev::~QtScreenDev()
@@ -145,8 +148,13 @@ AkCaps QtScreenDev::caps(int stream)
         || stream != 0)
         return AkCaps();
 
+    auto curScreen = this->d->m_curScreenNumber;
     auto screens = QGuiApplication::screens();
-    auto screen = screens[this->d->m_curScreenNumber];
+
+    if (curScreen < 0 || curScreen >= screens.size())
+        return {};
+
+    auto screen = screens[curScreen];
 
     if (!screen)
         return {};
@@ -162,6 +170,66 @@ QtScreenDevPrivate::QtScreenDevPrivate(Q
 {
 }
 
+void QtScreenDevPrivate::readFrame()
+{
+    auto curScreen = this->m_curScreenNumber;
+    auto screens = QGuiApplication::screens();
+
+    if (curScreen < 0 || curScreen >= screens.size())
+        return;
+
+    auto screen = screens[curScreen];
+
+    if (!screen)
+        return;
+
+    this->m_mutex.lock();
+    auto fps = this->m_fps;
+    this->m_mutex.unlock();
+
+    AkVideoPacket packet;
+    packet.caps() = {AkVideoCaps::Format_rgb24,
+                     screen->size().width(),
+                     screen->size().height(),
+                     fps};
+
+    auto frame =
+            screen->grabWindow(QApplication::desktop()->winId(),
+                               screen->geometry().x(),
+                               screen->geometry().y(),
+                               screen->geometry().width(),
+                               screen->geometry().height());
+    auto frameImg = frame.toImage().convertToFormat(QImage::Format_RGB888);
+    packet = AkVideoPacket::fromImage(frameImg, packet);
+
+    if (!packet)
+        return;
+
+    auto pts = qRound64(QTime::currentTime().msecsSinceStartOfDay()
+                        * fps.value() / 1e3);
+
+    packet.setPts(pts);
+    packet.setTimeBase(fps.invert());
+    packet.setIndex(0);
+    packet.setId(this->m_id);
+
+    if (!this->m_threadedRead) {
+        emit self->oStream(packet);
+
+        return;
+    }
+
+    if (!this->m_threadStatus.isRunning()) {
+        this->m_curPacket = packet;
+
+        this->m_threadStatus =
+                QtConcurrent::run(&this->m_threadPool,
+                                  this,
+                                  &QtScreenDevPrivate::sendPacket,
+                                  this->m_curPacket);
+    }
+}
+
 void QtScreenDevPrivate::sendPacket(const AkPacket &packet)
 {
     emit self->oStream(packet);
@@ -245,57 +313,6 @@ bool QtScreenDev::uninit()
     return true;
 }
 
-void QtScreenDev::readFrame()
-{
-    auto screens = QGuiApplication::screens();
-    auto screen = screens[this->d->m_curScreenNumber];
-    this->d->m_mutex.lock();
-    auto fps = this->d->m_fps;
-    this->d->m_mutex.unlock();
-
-    AkVideoPacket packet;
-    packet.caps() = {AkVideoCaps::Format_rgb24,
-                     screen->size().width(),
-                     screen->size().height(),
-                     fps};
-
-    auto frame =
-            screen->grabWindow(QApplication::desktop()->winId(),
-                               screen->geometry().x(),
-                               screen->geometry().y(),
-                               screen->geometry().width(),
-                               screen->geometry().height());
-    auto frameImg = frame.toImage().convertToFormat(QImage::Format_RGB888);
-    packet = AkVideoPacket::fromImage(frameImg, packet);
-
-    if (!packet)
-        return;
-
-    auto pts = qRound64(QTime::currentTime().msecsSinceStartOfDay()
-                        * fps.value() / 1e3);
-
-    packet.setPts(pts);
-    packet.setTimeBase(fps.invert());
-    packet.setIndex(0);
-    packet.setId(this->d->m_id);
-
-    if (!this->d->m_threadedRead) {
-        emit this->oStream(packet);
-
-        return;
-    }
-
-    if (!this->d->m_threadStatus.isRunning()) {
-        this->d->m_curPacket = packet;
-
-        this->d->m_threadStatus =
-                QtConcurrent::run(&this->d->m_threadPool,
-                                  this->d,
-                                  &QtScreenDevPrivate::sendPacket,
-                                  this->d->m_curPacket);
-    }
-}
-
 void QtScreenDev::screenAdded(QScreen *screen)
 {
     Q_UNUSED(screen)
@@ -325,8 +342,15 @@ void QtScreenDev::srceenResized(int scre
 {
     auto media = QString("screen://%1").arg(screen);
     auto screens = QGuiApplication::screens();
+
+    if (screen < 0 || screen >= screens.size())
+        return;
+
     auto widget = screens[screen];
 
+    if (!widget)
+        return;
+
     emit this->sizeChanged(media, widget->size());
 }
 
--- webcamoid-9.0.0.orig/libAvKys/Plugins/DesktopCapture/src/qtscreen/src/qtscreendev.h
+++ webcamoid-9.0.0/libAvKys/Plugins/DesktopCapture/src/qtscreen/src/qtscreendev.h
@@ -82,7 +82,6 @@ class QtScreenDev: public ScreenDev
         bool uninit();
 
     private slots:
-        void readFrame();
         void screenAdded(QScreen *screen);
         void screenRemoved(QScreen *screen);
         void srceenResized(int screen);
--- webcamoid-9.0.0.orig/libAvKys/Plugins/FaceDetect/src/haar/haarcascade.cpp
+++ webcamoid-9.0.0/libAvKys/Plugins/FaceDetect/src/haar/haarcascade.cpp
@@ -308,20 +308,20 @@ bool HaarCascade::load(const QString &fi
         case QXmlStreamReader::StartElement: {
             pathList << haarReader.name().toString();
 
-            if (path.isEmpty() && haarReader.name() != "opencv_storage")
+            if (path.isEmpty() && haarReader.name() != QStringLiteral("opencv_storage"))
                 return false;
 
             if (path == "opencv_storage")
                 this->m_name = haarReader.name().toString();
             else if (path == QString("opencv_storage/%1/stages").arg(this->m_name)
-                     && haarReader.name() == "_") {
+                     && haarReader.name() == QStringLiteral("_")) {
                 this->m_stages << HaarStage();
                 this->m_stages.last().setParentStage(stage - 1);
             } else if (path == QString("opencv_storage/%1/stages/_/trees").arg(this->m_name)
-                && haarReader.name() == "_") {
+                && haarReader.name() == QStringLiteral("_")) {
                 this->m_stages.last().trees() << HaarTree();
             } else if (path == QString("opencv_storage/%1/stages/_/trees/_").arg(this->m_name)
-                && haarReader.name() == "_") {
+                && haarReader.name() == QStringLiteral("_")) {
                 this->m_stages.last().trees().last().features() << HaarFeature();
             }
 
--- webcamoid-9.0.0.orig/libAvKys/Plugins/FaceDetect/src/haar/haardetector.cpp
+++ webcamoid-9.0.0/libAvKys/Plugins/FaceDetect/src/haar/haardetector.cpp
@@ -1210,7 +1210,9 @@ QVector<QRect> HaarDetector::detect(cons
                                           &roi,
                                           &mutex);
 
-        QtConcurrent::run(&threadPool, HaarCascadeHID::run, cascade);
+        auto result =
+                QtConcurrent::run(&threadPool, HaarCascadeHID::run, cascade);
+        Q_UNUSED(result)
     }
 
     threadPool.waitForDone();
--- /dev/null
+++ webcamoid-9.0.0/libAvKys/Plugins/ImageSrc/CMakeLists.txt
@@ -0,0 +1,68 @@
+# Webcamoid, webcam capture application.
+# Copyright (C) 2022  Gonzalo Exequiel Pedone
+#
+# Webcamoid is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Webcamoid is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Webcamoid. If not, see <http://www.gnu.org/licenses/>.
+#
+# Web-Site: http://webcamoid.github.io/
+
+cmake_minimum_required(VERSION 3.16)
+
+project(ImageSrc LANGUAGES CXX)
+
+include(../../cmake/ProjectCommons.cmake)
+
+set(CMAKE_INCLUDE_CURRENT_DIR ON)
+set(CMAKE_AUTOUIC ON)
+set(CMAKE_AUTOMOC ON)
+set(CMAKE_AUTORCC ON)
+
+set(QT_COMPONENTS
+    Concurrent
+    Gui
+    Qml)
+find_package(QT NAMES Qt${QT_VERSION_MAJOR} COMPONENTS
+             ${QT_COMPONENTS}
+             REQUIRED)
+find_package(Qt${QT_VERSION_MAJOR} ${QT_MINIMUM_VERSION} COMPONENTS
+             ${QT_COMPONENTS}
+             REQUIRED)
+add_library(ImageSrc SHARED
+            src/imagesrc.h
+            src/imagesrcelement.h
+            src/imagesrc.cpp
+            src/imagesrcelement.cpp
+            ImageSrc.qrc
+            pspec.json)
+
+if (WIN32)
+    set_target_properties(ImageSrc PROPERTIES
+                          RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/build/${PLUGINSDIR})
+elseif (NOT ANDROID)
+    set_target_properties(ImageSrc PROPERTIES
+                          LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/build/${PLUGINSDIR})
+endif ()
+
+add_dependencies(ImageSrc avkys)
+target_include_directories(ImageSrc
+                           PRIVATE ../../Lib/src)
+target_compile_definitions(ImageSrc PRIVATE AVKYS_PLUGIN_IMAGESRC)
+list(TRANSFORM QT_COMPONENTS PREPEND Qt${QT_VERSION_MAJOR}:: OUTPUT_VARIABLE QT_LIBS)
+target_link_libraries(ImageSrc avkys ${QT_LIBS})
+set(QML_IMPORT_PATH ../../Lib/share/qml)
+
+if (WIN32)
+    install(TARGETS ImageSrc RUNTIME DESTINATION ${PLUGINSDIR})
+elseif (NOT ANDROID)
+    install(TARGETS ImageSrc DESTINATION ${PLUGINSDIR})
+endif ()
--- /dev/null
+++ webcamoid-9.0.0/libAvKys/Plugins/ImageSrc/ImageSrc.qrc
@@ -0,0 +1,5 @@
+<RCC>
+    <qresource prefix="/ImageSrc">
+        <file>share/qml/main.qml</file>
+    </qresource>
+</RCC>
--- /dev/null
+++ webcamoid-9.0.0/libAvKys/Plugins/ImageSrc/pspec.json
@@ -0,0 +1,12 @@
+{
+    "type": "WebcamoidPluginsCollection",
+    "plugins": [
+        {
+            "name": "ImageSrc",
+            "description": "Use a static picture as a source",
+            "id": "VideoSource/ImageSrc",
+            "implements": ["Element"],
+            "type": "qtplugin"
+        }
+    ]
+}
--- /dev/null
+++ webcamoid-9.0.0/libAvKys/Plugins/ImageSrc/share/qml/main.qml
@@ -0,0 +1,99 @@
+/* Webcamoid, webcam capture application.
+ * Copyright (C) 2022  Gonzalo Exequiel Pedone
+ *
+ * Webcamoid is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Webcamoid is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Webcamoid. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Web-Site: http://webcamoid.github.io/
+ */
+
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Layouts 1.3
+import Ak 1.0
+
+GridLayout {
+    columns: 2
+
+    Component.onCompleted: {
+        var fps = AkFrac.create(ImageSrc.fps).value;
+        var q = Infinity;
+        var index = -1;
+
+        for (var i in cbxFps.model) {
+            var diff = Math.abs(cbxFps.model[i] - fps);
+
+            if (diff < q) {
+                index = i;
+                q = diff;
+            }
+        }
+
+        cbxFps.currentIndex = index;
+        ImageSrc.fps = AkFrac.createVariant(cbxFps.model[index], 1);
+    }
+
+    Label {
+        text: qsTr("Force frame rate")
+        visible: ImageSrc.isAnimated
+    }
+    RowLayout {
+        visible: ImageSrc.isAnimated
+
+        Label {
+            Layout.fillWidth: true
+        }
+        Switch {
+            checked: ImageSrc.forceFps
+
+            onCheckedChanged: ImageSrc.forceFps = checked
+        }
+    }
+    Label {
+        id: lblFps
+        text: qsTr("Frame rate")
+        enabled: !ImageSrc.isAnimated
+                 || (ImageSrc.isAnimated && ImageSrc.forceFps)
+    }
+    ComboBox {
+        id: cbxFps
+        currentIndex: 10
+        Layout.fillWidth: true
+        enabled: !ImageSrc.isAnimated
+                 || (ImageSrc.isAnimated && ImageSrc.forceFps)
+        model: [300,
+                240,
+                144,
+                120,
+                100,
+                90,
+                72,
+                60,
+                50,
+                48,
+                30,
+                25,
+                24,
+                20,
+                15,
+                10,
+                5,
+                2,
+                1]
+
+        onCurrentIndexChanged: {
+            if (currentIndex > -1)
+                ImageSrc.fps = AkFrac.createVariant(model[currentIndex], 1);
+        }
+    }
+}
--- /dev/null
+++ webcamoid-9.0.0/libAvKys/Plugins/ImageSrc/src/imagesrc.cpp
@@ -0,0 +1,36 @@
+/* Webcamoid, webcam capture application.
+ * Copyright (C) 2022  Gonzalo Exequiel Pedone
+ *
+ * Webcamoid is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Webcamoid is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Webcamoid. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Web-Site: http://webcamoid.github.io/
+ */
+
+#include "imagesrc.h"
+#include "imagesrcelement.h"
+
+QObject *ImageSrc::create(const QString &key, const QString &specification)
+{
+    Q_UNUSED(key)
+    Q_UNUSED(specification)
+
+    return new ImageSrcElement();
+}
+
+QStringList ImageSrc::keys() const
+{
+    return {};
+}
+
+#include "moc_imagesrc.cpp"
--- /dev/null
+++ webcamoid-9.0.0/libAvKys/Plugins/ImageSrc/src/imagesrc.h
@@ -0,0 +1,36 @@
+/* Webcamoid, webcam capture application.
+ * Copyright (C) 2022  Gonzalo Exequiel Pedone
+ *
+ * Webcamoid is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Webcamoid is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Webcamoid. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Web-Site: http://webcamoid.github.io/
+ */
+
+#ifndef IMAGESRC_H
+#define IMAGESRC_H
+
+#include <akplugin.h>
+
+class ImageSrc: public QObject, public AkPlugin
+{
+    Q_OBJECT
+    Q_INTERFACES(AkPlugin)
+    Q_PLUGIN_METADATA(IID "org.avkys.plugin" FILE "pspec.json")
+
+    public:
+        QObject *create(const QString &key, const QString &specification);
+        QStringList keys() const;
+};
+
+#endif // IMAGESRC_H
--- /dev/null
+++ webcamoid-9.0.0/libAvKys/Plugins/ImageSrc/src/imagesrcelement.cpp
@@ -0,0 +1,422 @@
+/* Webcamoid, webcam capture application.
+ * Copyright (C) 2022  Gonzalo Exequiel Pedone
+ *
+ * Webcamoid is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Webcamoid is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Webcamoid. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Web-Site: http://webcamoid.github.io/
+ */
+
+#include <QFileInfo>
+#include <QImage>
+#include <QImageReader>
+#include <QQmlContext>
+#include <QSettings>
+#include <QtConcurrent>
+#include <ak.h>
+#include <akcaps.h>
+#include <akfrac.h>
+#include <akpacket.h>
+#include <akvideopacket.h>
+
+#include "imagesrcelement.h"
+
+class ImageSrcElementPrivate
+{
+    public:
+        ImageSrcElement *self;
+        AkFrac m_fps {30000, 1001};
+        qint64 m_id {-1};
+        QThreadPool m_threadPool;
+        QFuture<void> m_framesThreadStatus;
+        QFuture<void> m_threadStatus;
+        QImageReader m_imageReader;
+        QReadWriteLock m_fpsMutex;
+        QReadWriteLock m_imageReaderMutex;
+        bool m_forceFps {false};
+        bool m_threadedRead {true};
+        bool m_run {false};
+
+        explicit ImageSrcElementPrivate(ImageSrcElement *self);
+        void readFrame();
+        void sendPacket(const AkPacket &packet);
+};
+
+ImageSrcElement::ImageSrcElement():
+    AkMultimediaSourceElement()
+{
+    this->d = new ImageSrcElementPrivate(this);
+}
+
+ImageSrcElement::~ImageSrcElement()
+{
+    delete this->d;
+}
+
+QStringList ImageSrcElement::medias()
+{
+    QStringList medias;
+    this->d->m_imageReaderMutex.lockForRead();
+
+    if (!this->d->m_imageReader.fileName().isEmpty())
+        medias << this->d->m_imageReader.fileName();
+
+    this->d->m_imageReaderMutex.unlock();
+
+    return medias;
+}
+
+QString ImageSrcElement::media() const
+{
+    this->d->m_imageReaderMutex.lockForRead();
+    auto fileName = this->d->m_imageReader.fileName();
+    this->d->m_imageReaderMutex.unlock();
+
+    return fileName;
+}
+
+QList<int> ImageSrcElement::streams()
+{
+    this->d->m_imageReaderMutex.lockForRead();
+    auto isFileNameEmpty = this->d->m_imageReader.fileName().isEmpty();
+    this->d->m_imageReaderMutex.unlock();
+
+    if (isFileNameEmpty)
+        return {};
+
+    return {0};
+}
+
+int ImageSrcElement::defaultStream(const QString &mimeType)
+{
+    if (mimeType == "video/x-raw")
+        return 0;
+
+    return -1;
+}
+
+QString ImageSrcElement::description(const QString &media)
+{
+    this->d->m_imageReaderMutex.lockForRead();
+    auto fileName = this->d->m_imageReader.fileName();
+    this->d->m_imageReaderMutex.unlock();
+
+    if (media.isEmpty() || fileName != media)
+        return {};
+
+    return QFileInfo(media).baseName();
+}
+
+AkCaps ImageSrcElement::caps(int stream)
+{
+    this->d->m_imageReaderMutex.lockForRead();
+    auto isFileNameEmpty = this->d->m_imageReader.fileName().isEmpty();
+    this->d->m_imageReaderMutex.unlock();
+
+    if (stream != 0 || isFileNameEmpty)
+        return {};
+
+    this->d->m_imageReaderMutex.lockForRead();
+    auto size = this->d->m_imageReader.size();
+    this->d->m_imageReaderMutex.unlock();
+
+    this->d->m_fpsMutex.lockForRead();
+    AkVideoCaps caps(AkVideoCaps::Format_rgb24,
+                     size.width(),
+                     size.height(),
+                     this->d->m_fps);
+    this->d->m_fpsMutex.unlock();
+
+    return caps;
+}
+
+bool ImageSrcElement::isAnimated() const
+{
+    this->d->m_imageReaderMutex.lockForRead();
+    auto supportsAnimation = this->d->m_imageReader.supportsAnimation();
+    this->d->m_imageReaderMutex.unlock();
+
+    return supportsAnimation;
+}
+
+bool ImageSrcElement::forceFps() const
+{
+    return this->d->m_forceFps;
+}
+
+AkFrac ImageSrcElement::fps() const
+{
+    this->d->m_fpsMutex.lockForRead();
+    auto fps = this->d->m_fps;
+    this->d->m_fpsMutex.unlock();
+
+    return fps;
+}
+
+QStringList ImageSrcElement::supportedFormats() const
+{
+    auto formats = QImageReader::supportedImageFormats();
+
+    return QStringList(formats.begin(), formats.end());
+}
+
+QString ImageSrcElement::controlInterfaceProvide(const QString &controlId) const
+{
+    Q_UNUSED(controlId)
+
+    return QString("qrc:/ImageSrc/share/qml/main.qml");
+}
+
+void ImageSrcElement::controlInterfaceConfigure(QQmlContext *context,
+                                                const QString &controlId) const
+{
+    Q_UNUSED(controlId)
+
+    context->setContextProperty("ImageSrc", const_cast<QObject *>(qobject_cast<const QObject *>(this)));
+    context->setContextProperty("controlId", this->objectName());
+}
+
+void ImageSrcElement::setForceFps(bool forceFps)
+{
+    if (this->d->m_forceFps == forceFps)
+        return;
+
+    this->d->m_forceFps = forceFps;
+    emit this->forceFpsChanged(forceFps);
+}
+
+void ImageSrcElement::setFps(const AkFrac &fps)
+{
+    this->d->m_fpsMutex.lockForWrite();
+
+    if (this->d->m_fps == fps) {
+        this->d->m_fpsMutex.unlock();
+
+        return;
+    }
+
+    this->d->m_fps = fps;
+    this->d->m_fpsMutex.unlock();
+
+    QSettings settings;
+    settings.beginGroup("ImageSrc");
+    settings.setValue("fps", fps.toString());
+    settings.endGroup();
+
+    emit this->fpsChanged(fps);
+}
+
+void ImageSrcElement::resetForceFps()
+{
+    this->setForceFps(false);
+}
+
+void ImageSrcElement::resetFps()
+{
+    this->setFps({});
+}
+
+void ImageSrcElement::setMedia(const QString &media)
+{
+    this->d->m_imageReaderMutex.lockForRead();
+    auto fileName = this->d->m_imageReader.fileName();
+    this->d->m_imageReaderMutex.unlock();
+
+    if (fileName == media)
+        return;
+
+    auto state = this->state();
+    this->setState(AkElement::ElementStateNull);
+
+    this->d->m_imageReaderMutex.lockForWrite();
+    auto size = this->d->m_imageReader.size();
+    auto isAnimation = this->d->m_imageReader.supportsAnimation();
+    this->d->m_imageReader.setFileName(media);
+    this->d->m_imageReaderMutex.unlock();
+
+    if (!media.isEmpty())
+        this->setState(state);
+
+    emit this->mediaChanged(media);
+
+    this->d->m_imageReaderMutex.lockForRead();
+    auto curSize = this->d->m_imageReader.size();
+    auto curIsAnimation = this->d->m_imageReader.supportsAnimation();
+    this->d->m_imageReaderMutex.unlock();
+
+    if (size != curSize)
+        emit this->sizeChanged(curSize);
+
+    if (isAnimation != curIsAnimation)
+        emit this->isAnimatedChanged(curIsAnimation);
+}
+
+void ImageSrcElement::resetMedia()
+{
+    this->setMedia({});
+}
+
+bool ImageSrcElement::setState(AkElement::ElementState state)
+{
+    this->d->m_imageReaderMutex.lockForRead();
+    auto isFileNameEmpty = this->d->m_imageReader.fileName().isEmpty();
+    this->d->m_imageReaderMutex.unlock();
+
+    if (isFileNameEmpty)
+        return false;
+
+    auto curState = this->state();
+
+    switch (curState) {
+    case AkElement::ElementStateNull: {
+        switch (state) {
+        case AkElement::ElementStatePaused:
+            return AkElement::setState(state);
+        case AkElement::ElementStatePlaying:
+            this->d->m_id = Ak::id();
+            this->d->m_run = true;
+            this->d->m_framesThreadStatus =
+                    QtConcurrent::run(&this->d->m_threadPool,
+                                      this->d,
+                                      &ImageSrcElementPrivate::readFrame);
+
+            return AkElement::setState(state);
+        case AkElement::ElementStateNull:
+            break;
+        }
+
+        break;
+    }
+    case AkElement::ElementStatePaused: {
+        switch (state) {
+        case AkElement::ElementStateNull:
+            return AkElement::setState(state);
+        case AkElement::ElementStatePlaying:
+            this->d->m_run = true;
+            this->d->m_framesThreadStatus =
+                    QtConcurrent::run(&this->d->m_threadPool,
+                                      this->d,
+                                      &ImageSrcElementPrivate::readFrame);
+
+            return AkElement::setState(state);
+        case AkElement::ElementStatePaused:
+            break;
+        }
+
+        break;
+    }
+    case AkElement::ElementStatePlaying: {
+        switch (state) {
+        case AkElement::ElementStateNull:
+        case AkElement::ElementStatePaused:
+            this->d->m_run = false;
+            this->d->m_framesThreadStatus.waitForFinished();
+
+            return AkElement::setState(state);
+        case AkElement::ElementStatePlaying:
+            break;
+        }
+
+        break;
+    }
+    }
+
+    return false;
+}
+
+ImageSrcElementPrivate::ImageSrcElementPrivate(ImageSrcElement *self):
+    self(self)
+{
+
+}
+
+void ImageSrcElementPrivate::readFrame()
+{
+    qreal delayDiff = 0.0;
+
+    while (this->m_run) {
+        this->m_imageReaderMutex.lockForRead();
+        auto image = this->m_imageReader.read();
+        this->m_imageReaderMutex.unlock();
+
+        if (image.isNull())
+            break;
+
+        this->m_fpsMutex.lockForRead();
+        auto fps = this->m_fps;
+        this->m_fpsMutex.unlock();
+
+        auto pts = qRound64(QTime::currentTime().msecsSinceStartOfDay()
+                            * fps.value() / 1e3);
+        image.convertTo(QImage::Format_RGB888);
+        auto packet = AkVideoPacket::fromImage(image, {});
+        packet.caps().setFps(fps);
+        packet.setPts(pts);
+        packet.setTimeBase(fps.invert());
+        packet.setIndex(0);
+        packet.setId(this->m_id);
+
+        if (!this->m_threadedRead) {
+            emit self->oStream(packet);
+        } else if (!this->m_threadStatus.isRunning()) {
+            this->m_threadStatus =
+                    QtConcurrent::run(&this->m_threadPool,
+                                      this,
+                                      &ImageSrcElementPrivate::sendPacket,
+                                      packet);
+        }
+
+        this->m_imageReaderMutex.lockForRead();
+        auto isLastFrame =
+                this->m_imageReader.currentImageNumber() >= this->m_imageReader.imageCount() - 1;
+        this->m_imageReaderMutex.unlock();
+
+        if (isLastFrame) {
+            this->m_imageReaderMutex.lockForRead();
+            auto supportsAnimation = this->m_imageReader.supportsAnimation();
+            this->m_imageReaderMutex.unlock();
+
+            if (!supportsAnimation) {
+                auto delay = (1000 / fps).value() + delayDiff;
+                delayDiff = delay - qRound(delay);
+                QThread::msleep(qRound(delay));
+            }
+
+            this->m_imageReaderMutex.lockForWrite();
+            auto fileName = this->m_imageReader.fileName();
+            this->m_imageReader.setFileName({});
+            this->m_imageReader.setFileName(fileName);
+            this->m_imageReaderMutex.unlock();
+        } else {
+            if (this->m_forceFps) {
+                auto delay = (1000 / fps).value() + delayDiff;
+                delayDiff = delay - qRound(delay);
+                QThread::msleep(qRound(delay));
+            } else {
+                this->m_imageReaderMutex.lockForRead();
+                auto delay = this->m_imageReader.nextImageDelay();
+                this->m_imageReaderMutex.unlock();
+
+                if (delay > 0)
+                    QThread::msleep(delay);
+            }
+        }
+    }
+}
+
+void ImageSrcElementPrivate::sendPacket(const AkPacket &packet)
+{
+    emit self->oStream(packet);
+}
+
+#include "moc_imagesrcelement.cpp"
--- /dev/null
+++ webcamoid-9.0.0/libAvKys/Plugins/ImageSrc/src/imagesrcelement.h
@@ -0,0 +1,110 @@
+/* Webcamoid, webcam capture application.
+ * Copyright (C) 2022  Gonzalo Exequiel Pedone
+ *
+ * Webcamoid is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Webcamoid is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Webcamoid. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Web-Site: http://webcamoid.github.io/
+ */
+
+#ifndef IMAGESRCELEMENT_H
+#define IMAGESRCELEMENT_H
+
+#include <akmultimediasourceelement.h>
+
+class ImageSrcElementPrivate;
+class AkFrac;
+
+class ImageSrcElement: public AkMultimediaSourceElement
+{
+    Q_OBJECT
+    Q_PROPERTY(QStringList medias
+               READ medias
+               NOTIFY mediasChanged)
+    Q_PROPERTY(QString media
+               READ media
+               WRITE setMedia
+               RESET resetMedia
+               NOTIFY mediaChanged)
+    Q_PROPERTY(QList<int> streams
+               READ streams
+               WRITE setStreams
+               RESET resetStreams
+               NOTIFY streamsChanged)
+    Q_PROPERTY(bool loop
+               READ loop
+               WRITE setLoop
+               RESET resetLoop
+               NOTIFY loopChanged)
+    Q_PROPERTY(bool isAnimated
+               READ isAnimated
+               NOTIFY isAnimatedChanged)
+    Q_PROPERTY(bool forceFps
+               READ forceFps
+               WRITE setForceFps
+               RESET resetForceFps
+               NOTIFY forceFpsChanged)
+    Q_PROPERTY(AkFrac fps
+               READ fps
+               WRITE setFps
+               RESET resetFps
+               NOTIFY fpsChanged)
+    Q_PROPERTY(QStringList supportedFormats
+               READ supportedFormats
+               CONSTANT)
+
+    public:
+        ImageSrcElement();
+        ~ImageSrcElement();
+
+        Q_INVOKABLE QStringList medias();
+        Q_INVOKABLE QString media() const;
+        Q_INVOKABLE QList<int> streams();
+        Q_INVOKABLE int defaultStream(const QString &mimeType);
+        Q_INVOKABLE QString description(const QString &media);
+        Q_INVOKABLE AkCaps caps(int stream);
+        Q_INVOKABLE bool isAnimated() const;
+        Q_INVOKABLE bool forceFps() const;
+        Q_INVOKABLE AkFrac fps() const;
+        Q_INVOKABLE QStringList supportedFormats() const;
+
+    private:
+        ImageSrcElementPrivate *d;
+
+    protected:
+        QString controlInterfaceProvide(const QString &controlId) const;
+        void controlInterfaceConfigure(QQmlContext *context,
+                                       const QString &controlId) const;
+
+    signals:
+        void mediasChanged(const QStringList &medias);
+        void mediaChanged(const QString &media);
+        void streamsChanged(const QList<int> &streams);
+        void loopChanged(bool loop);
+        void isAnimatedChanged(bool isAnimated);
+        void forceFpsChanged(bool forceFps);
+        void fpsChanged(const AkFrac &fps);
+        void sizeChanged(const QSize &size);
+        void error(const QString &message);
+
+    public slots:
+        void setForceFps(bool forceFps);
+        void setFps(const AkFrac &fps);
+        void resetForceFps();
+        void resetFps();
+        void setMedia(const QString &media);
+        void resetMedia();
+        bool setState(AkElement::ElementState state);
+};
+
+#endif // IMAGESRCELEMENT_H
--- webcamoid-9.0.0.orig/libAvKys/Plugins/MultiSink/src/CMakeLists.txt
+++ webcamoid-9.0.0/libAvKys/Plugins/MultiSink/src/CMakeLists.txt
@@ -42,8 +42,6 @@ add_library(MultiSinkSrc SHARED
             multisink.h
             multisinkelement.cpp
             multisinkelement.h
-            multisinkutils.cpp
-            multisinkutils.h
             ../pspec.json)
 set_target_properties(MultiSinkSrc PROPERTIES
                       OUTPUT_NAME MultiSink)
--- webcamoid-9.0.0.orig/libAvKys/Plugins/MultiSink/src/gstreamer/src/mediawritergstreamer.cpp
+++ webcamoid-9.0.0/libAvKys/Plugins/MultiSink/src/gstreamer/src/mediawritergstreamer.cpp
@@ -60,6 +60,7 @@ class MediaWriterGStreamerPrivate
         QThreadPool m_threadPool;
         GstElement *m_pipeline {nullptr};
         GMainLoop *m_mainLoop {nullptr};
+        QFuture<void> m_mainLoopResult;
         guint m_busWatchId {0};
         bool m_isRecording {false};
 
@@ -1682,7 +1683,10 @@ bool MediaWriterGStreamer::init()
 
     // Run the main GStreamer loop.
     this->d->m_mainLoop = g_main_loop_new(nullptr, FALSE);
-    QtConcurrent::run(&this->d->m_threadPool, g_main_loop_run, this->d->m_mainLoop);
+    this->d->m_mainLoopResult =
+            QtConcurrent::run(&this->d->m_threadPool,
+                              g_main_loop_run,
+                              this->d->m_mainLoop);
     gst_element_set_state(this->d->m_pipeline, GST_STATE_PLAYING);
     this->d->m_isRecording = true;
 
--- webcamoid-9.0.0.orig/libAvKys/Plugins/MultiSink/src/multisinkelement.cpp
+++ webcamoid-9.0.0/libAvKys/Plugins/MultiSink/src/multisinkelement.cpp
@@ -26,7 +26,6 @@
 
 #include "multisinkelement.h"
 #include "mediawriter.h"
-#include "multisinkutils.h"
 
 using MediaWriterPtr = QSharedPointer<MediaWriter>;
 
@@ -37,7 +36,6 @@ class MultiSinkElementPrivate
         QString m_location;
         MediaWriterPtr m_mediaWriter;
         QString m_mediaWriterImpl;
-        MultiSinkUtils m_utils;
         QList<int> m_inputStreams;
         QReadWriteLock m_mutex;
 
--- webcamoid-9.0.0.orig/libAvKys/Plugins/MultiSrc/src/ffmpeg/src/mediasourceffmpeg.cpp
+++ webcamoid-9.0.0/libAvKys/Plugins/MultiSrc/src/ffmpeg/src/mediasourceffmpeg.cpp
@@ -18,14 +18,14 @@
  */
 
 #include <QApplication>
-#include <QDesktopWidget>
 #include <QFileInfo>
-#include <QtConcurrent>
-#include <QThreadPool>
-#include <QMutex>
 #include <QFuture>
+#include <QMutex>
+#include <QScreen>
+#include <QThreadPool>
 #include <QWaitCondition>
 #include <QWaitCondition>
+#include <QtConcurrent>
 #include <ak.h>
 #include <akcaps.h>
 
@@ -512,9 +512,10 @@ bool MediaSourceFFmpeg::setState(AkEleme
             this->d->m_run = true;
             this->d->m_paused = state == AkElement::ElementStatePaused;
             this->d->m_eos = false;
-            QtConcurrent::run(&this->d->m_threadPool,
-                              this->d,
-                              &MediaSourceFFmpegPrivate::readPackets);
+            auto result = QtConcurrent::run(&this->d->m_threadPool,
+                                            this->d,
+                                            &MediaSourceFFmpegPrivate::readPackets);
+            Q_UNUSED(result)
             this->d->m_state = state;
             emit this->stateChanged(state);
 
@@ -616,9 +617,10 @@ void MediaSourceFFmpeg::doLoop()
 
 void MediaSourceFFmpeg::packetConsumed()
 {
-    QtConcurrent::run(&this->d->m_threadPool,
-                      this->d,
-                      &MediaSourceFFmpegPrivate::unlockQueue);
+    auto result = QtConcurrent::run(&this->d->m_threadPool,
+                                    this->d,
+                                    &MediaSourceFFmpegPrivate::unlockQueue);
+    Q_UNUSED(result)
 }
 
 void MediaSourceFFmpeg::log()
@@ -686,9 +688,9 @@ bool MediaSourceFFmpeg::initContext()
         inputFormat = av_find_input_format("v4l2");
     } else if (QRegExp(R"(:\d+\.\d+(?:\+\d+,\d+)?)").exactMatch(uri)) {
         inputFormat = av_find_input_format("x11grab");
-
-        int width = this->d->roundDown(QApplication::desktop()->width(), 4);
-        int height = this->d->roundDown(QApplication::desktop()->height(), 4);
+        auto screen = QGuiApplication::primaryScreen();
+        int width = this->d->roundDown(screen->geometry().width(), 4);
+        int height = this->d->roundDown(screen->geometry().height(), 4);
 
         av_dict_set(&inputOptions,
                     "video_size",
--- webcamoid-9.0.0.orig/libAvKys/Plugins/MultiSrc/src/gstreamer/src/mediasourcegstreamer.cpp
+++ webcamoid-9.0.0/libAvKys/Plugins/MultiSrc/src/gstreamer/src/mediasourcegstreamer.cpp
@@ -62,6 +62,7 @@ class MediaSourceGStreamerPrivate
         QThreadPool m_threadPool;
         GstElement *m_pipeline {nullptr};
         GMainLoop *m_mainLoop {nullptr};
+        QFuture<void> m_mainLoopResult;
         qint64 m_audioIndex {-1};
         qint64 m_videoIndex {-1};
         qint64 m_subtitlesIndex {-1};
@@ -533,9 +534,10 @@ bool MediaSourceGStreamer::setState(AkEl
 
             // Run the main GStreamer loop.
             this->d->m_mainLoop = g_main_loop_new(nullptr, FALSE);
-            QtConcurrent::run(&this->d->m_threadPool,
-                              g_main_loop_run,
-                              this->d->m_mainLoop);
+            this->d->m_mainLoopResult =
+                    QtConcurrent::run(&this->d->m_threadPool,
+                                      g_main_loop_run,
+                                      this->d->m_mainLoop);
             GstState gstState = state == AkElement::ElementStatePaused?
                                  GST_STATE_PAUSED: GST_STATE_PLAYING;
             gst_element_set_state(this->d->m_pipeline, gstState);
--- webcamoid-9.0.0.orig/libAvKys/Plugins/MultiSrc/src/ndkmedia/src/mediasourcendkmedia.cpp
+++ webcamoid-9.0.0/libAvKys/Plugins/MultiSrc/src/ndkmedia/src/mediasourcendkmedia.cpp
@@ -403,12 +403,12 @@ bool MediaSourceNDKMedia::setState(AkEle
                 this->d->m_streamsMap[i] = stream;
 
                 QObject::connect(stream.data(),
-                                 SIGNAL(oStream(const AkPacket &)),
+                                 SIGNAL(oStream(AkPacket)),
                                  this,
-                                 SIGNAL(oStream(const AkPacket &)),
+                                 SIGNAL(oStream(AkPacket)),
                                  Qt::DirectConnection);
                 QObject::connect(stream.data(),
-                                 SIGNAL(oStream(const AkPacket &)),
+                                 SIGNAL(oStream(AkPacket)),
                                  this,
                                  SLOT(log()));
                 QObject::connect(stream.data(),
@@ -424,9 +424,11 @@ bool MediaSourceNDKMedia::setState(AkEle
             this->d->m_run = true;
             this->d->m_paused = state == AkElement::ElementStatePaused;
             this->d->m_eos = false;
-            QtConcurrent::run(&this->d->m_threadPool,
-                               this->d,
-                               &MediaSourceNDKMediaPrivate::readPackets);
+            auto result =
+                    QtConcurrent::run(&this->d->m_threadPool,
+                                      this->d,
+                                      &MediaSourceNDKMediaPrivate::readPackets);
+            Q_UNUSED(result)
             this->d->m_state = state;
             emit this->stateChanged(state);
 
--- webcamoid-9.0.0.orig/libAvKys/Plugins/MultiSrc/src/vlc/src/mediasourcevlc.cpp
+++ webcamoid-9.0.0/libAvKys/Plugins/MultiSrc/src/vlc/src/mediasourcevlc.cpp
@@ -734,9 +734,10 @@ void MediaSourceVLCPrivate::mediaPlayerE
 {
     Q_UNUSED(event)
     auto self = reinterpret_cast<MediaSourceVLC *>(userData);
-    QtConcurrent::run(&self->d->m_threadPool, [self] () {
+    auto result = QtConcurrent::run(&self->d->m_threadPool, [self] () {
         self->d->doLoop();
     });
+    Q_UNUSED(result)
 }
 
 void MediaSourceVLCPrivate::mediaPlayerTimeChanged(const libvlc_event_t *event, void *userData)
--- webcamoid-9.0.0.orig/libAvKys/Plugins/VideoCapture/src/capture/avfoundation/src/captureavfoundation.h
+++ webcamoid-9.0.0/libAvKys/Plugins/VideoCapture/src/capture/avfoundation/src/captureavfoundation.h
@@ -47,7 +47,6 @@ class CaptureAvFoundation: public Captur
         Q_INVOKABLE bool setImageControls(const QVariantMap &imageControls);
         Q_INVOKABLE bool resetImageControls();
         Q_INVOKABLE AkPacket readFrame();
-        Q_INVOKABLE quint32 modelId(const QString &webcam) const;
 
         QMutex &mutex();
         QWaitCondition &frameReady();
--- webcamoid-9.0.0.orig/libAvKys/Plugins/VideoCapture/src/capture/avfoundation/src/captureavfoundation.mm
+++ webcamoid-9.0.0/libAvKys/Plugins/VideoCapture/src/capture/avfoundation/src/captureavfoundation.mm
@@ -17,12 +17,12 @@
  * Web-Site: http://webcamoid.github.io/
  */
 
-#include <QtDebug>
 #include <QCoreApplication>
 #include <QMap>
+#include <QMutex>
 #include <QVariant>
 #include <QWaitCondition>
-#include <QMutex>
+#include <QtDebug>
 #include <ak.h>
 #include <akfrac.h>
 #include <akcaps.h>
@@ -54,7 +54,6 @@ class CaptureAvFoundationPrivate
         QString m_device;
         QList<int> m_streams;
         QStringList m_devices;
-        QMap<QString, quint32> m_modelId;
         QMap<QString, QString> m_descriptions;
         QMap<QString, QVariantList> m_devicesCaps;
         int m_nBuffers {32};
@@ -352,11 +351,6 @@ AkPacket CaptureAvFoundation::readFrame(
     return packet;
 }
 
-quint32 CaptureAvFoundation::modelId(const QString &webcam) const
-{
-    return this->d->m_modelId.value(webcam);
-}
-
 QMutex &CaptureAvFoundation::mutex()
 {
     return this->d->m_mutex;
@@ -620,7 +614,6 @@ void CaptureAvFoundation::updateDevices(
         return;
 
     decltype(this->d->m_devices) devices;
-    decltype(this->d->m_modelId) modelId;
     decltype(this->d->m_descriptions) descriptions;
     decltype(this->d->m_devicesCaps) devicesCaps;
 
@@ -637,24 +630,6 @@ void CaptureAvFoundation::updateDevices(
         QString deviceId = camera.uniqueID.UTF8String;
         devices << deviceId;
         descriptions[deviceId] = camera.localizedName.UTF8String;
-        QString modelIdStr = camera.modelID.UTF8String;
-        QRegExp vpMatch("VendorID_(\\d+) ProductID_(\\d+)");
-        quint16 vendorId = 0;
-        quint16 productId = 0;
-        int pos = 0;
-
-        forever {
-            pos = vpMatch.indexIn(modelIdStr, pos);
-
-            if (pos < 0)
-                break;
-
-            vendorId = vpMatch.cap(1).toUShort();
-            productId = vpMatch.cap(2).toUShort();
-            pos += vpMatch.matchedLength();
-        }
-
-        modelId[deviceId] = quint32(vendorId << 16) | productId;
 
         // List supported frame formats.
         for (AVCaptureDeviceFormat *format in camera.formats) {
@@ -686,11 +661,9 @@ void CaptureAvFoundation::updateDevices(
 
     if (devicesCaps.isEmpty()) {
         devices.clear();
-        modelId.clear();
         descriptions.clear();
     }
 
-    this->d->m_modelId = modelId;
     this->d->m_descriptions = descriptions;
     this->d->m_devicesCaps = devicesCaps;
 
--- webcamoid-9.0.0.orig/libAvKys/Plugins/VideoCapture/src/capture/avfoundation/src/deviceobserver.mm
+++ webcamoid-9.0.0/libAvKys/Plugins/VideoCapture/src/capture/avfoundation/src/deviceobserver.mm
@@ -17,6 +17,7 @@
  * Web-Site: http://webcamoid.github.io/
  */
 
+#include <QMutex>
 #include <QWaitCondition>
 
 #include "deviceobserver.h"
--- webcamoid-9.0.0.orig/libAvKys/Plugins/VideoCapture/src/capture/dshow/src/capturedshow.cpp
+++ webcamoid-9.0.0/libAvKys/Plugins/VideoCapture/src/capture/dshow/src/capturedshow.cpp
@@ -480,7 +480,7 @@ AkPacket CaptureDShow::readFrame()
     AkPacket packet;
     auto timestamp = QDateTime::currentMSecsSinceEpoch();
     auto pts =
-            qint64(timestamp
+            qint64(qreal(timestamp)
                    * this->d->m_timeBase.invert().value()
                    / 1e3);
 
@@ -491,7 +491,7 @@ AkPacket CaptureDShow::readFrame()
             this->d->m_waitCondition.wait(&this->d->m_mutex, 1000);
 
         if (!this->d->m_curBuffer.isEmpty()) {
-            int bufferSize = this->d->m_curBuffer.size();
+            auto bufferSize = int(this->d->m_curBuffer.size());
             QByteArray oBuffer(bufferSize, 0);
             memcpy(oBuffer.data(),
                    this->d->m_curBuffer.constData(),
--- webcamoid-9.0.0.orig/libAvKys/Plugins/VideoCapture/src/capture/dshow/src/capturedshow.h
+++ webcamoid-9.0.0/libAvKys/Plugins/VideoCapture/src/capture/dshow/src/capturedshow.h
@@ -42,42 +42,42 @@ class CaptureDShow: public Capture, QAbs
         CaptureDShow(QObject *parent=nullptr);
         ~CaptureDShow();
 
-        Q_INVOKABLE QStringList webcams() const;
-        Q_INVOKABLE QString device() const;
-        Q_INVOKABLE QList<int> streams();
-        Q_INVOKABLE QList<int> listTracks(const QString &mimeType);
-        Q_INVOKABLE QString ioMethod() const;
-        Q_INVOKABLE int nBuffers() const;
-        Q_INVOKABLE QString description(const QString &webcam) const;
-        Q_INVOKABLE QVariantList caps(const QString &webcam) const;
-        Q_INVOKABLE QString capsDescription(const AkCaps &caps) const;
-        Q_INVOKABLE QVariantList imageControls() const;
-        Q_INVOKABLE bool setImageControls(const QVariantMap &imageControls);
-        Q_INVOKABLE bool resetImageControls();
-        Q_INVOKABLE QVariantList cameraControls() const;
-        Q_INVOKABLE bool setCameraControls(const QVariantMap &cameraControls);
-        Q_INVOKABLE bool resetCameraControls();
-        Q_INVOKABLE AkPacket readFrame();
+        Q_INVOKABLE QStringList webcams() const override;
+        Q_INVOKABLE QString device() const override;
+        Q_INVOKABLE QList<int> streams() override;
+        Q_INVOKABLE QList<int> listTracks(const QString &mimeType) override;
+        Q_INVOKABLE QString ioMethod() const override;
+        Q_INVOKABLE int nBuffers() const override;
+        Q_INVOKABLE QString description(const QString &webcam) const override;
+        Q_INVOKABLE QVariantList caps(const QString &webcam) const override;
+        Q_INVOKABLE QString capsDescription(const AkCaps &caps) const override;
+        Q_INVOKABLE QVariantList imageControls() const override;
+        Q_INVOKABLE bool setImageControls(const QVariantMap &imageControls) override;
+        Q_INVOKABLE bool resetImageControls() override;
+        Q_INVOKABLE QVariantList cameraControls() const override;
+        Q_INVOKABLE bool setCameraControls(const QVariantMap &cameraControls) override;
+        Q_INVOKABLE bool resetCameraControls() override;
+        Q_INVOKABLE AkPacket readFrame() override;
 
         bool nativeEventFilter(const QByteArray &eventType,
                                void *message,
-                               long *result);
+                               long *result) override;
 
     private:
         CaptureDShowPrivate *d;
 
     public slots:
-        bool init();
-        void uninit();
-        void setDevice(const QString &device);
-        void setStreams(const QList<int> &streams);
-        void setIoMethod(const QString &ioMethod);
-        void setNBuffers(int nBuffers);
-        void resetDevice();
-        void resetStreams();
-        void resetIoMethod();
-        void resetNBuffers();
-        void reset();
+        bool init() override;
+        void uninit() override;
+        void setDevice(const QString &device) override;
+        void setStreams(const QList<int> &streams) override;
+        void setIoMethod(const QString &ioMethod) override;
+        void setNBuffers(int nBuffers) override;
+        void resetDevice() override;
+        void resetStreams() override;
+        void resetIoMethod() override;
+        void resetNBuffers() override;
+        void reset() override;
 };
 
 #endif // CAPTUREDSHOW_H
--- webcamoid-9.0.0.orig/libAvKys/Plugins/VideoCapture/src/capture/mediafoundation/src/capturemmf.h
+++ webcamoid-9.0.0/libAvKys/Plugins/VideoCapture/src/capture/mediafoundation/src/capturemmf.h
@@ -43,42 +43,42 @@ class CaptureMMF:
         CaptureMMF(QObject *parent=nullptr);
         ~CaptureMMF();
 
-        Q_INVOKABLE QStringList webcams() const;
-        Q_INVOKABLE QString device() const;
-        Q_INVOKABLE QList<int> streams();
-        Q_INVOKABLE QList<int> listTracks(const QString &mimeType);
-        Q_INVOKABLE QString ioMethod() const;
-        Q_INVOKABLE int nBuffers() const;
-        Q_INVOKABLE QString description(const QString &webcam) const;
-        Q_INVOKABLE QVariantList caps(const QString &webcam) const;
-        Q_INVOKABLE QString capsDescription(const AkCaps &caps) const;
-        Q_INVOKABLE QVariantList imageControls() const;
-        Q_INVOKABLE bool setImageControls(const QVariantMap &imageControls);
-        Q_INVOKABLE bool resetImageControls();
-        Q_INVOKABLE QVariantList cameraControls() const;
-        Q_INVOKABLE bool setCameraControls(const QVariantMap &cameraControls);
-        Q_INVOKABLE bool resetCameraControls();
-        Q_INVOKABLE AkPacket readFrame();
+        Q_INVOKABLE QStringList webcams() const override;
+        Q_INVOKABLE QString device() const override;
+        Q_INVOKABLE QList<int> streams() override;
+        Q_INVOKABLE QList<int> listTracks(const QString &mimeType) override;
+        Q_INVOKABLE QString ioMethod() const override;
+        Q_INVOKABLE int nBuffers() const override;
+        Q_INVOKABLE QString description(const QString &webcam) const override;
+        Q_INVOKABLE QVariantList caps(const QString &webcam) const override;
+        Q_INVOKABLE QString capsDescription(const AkCaps &caps) const override;
+        Q_INVOKABLE QVariantList imageControls() const override;
+        Q_INVOKABLE bool setImageControls(const QVariantMap &imageControls) override;
+        Q_INVOKABLE bool resetImageControls() override;
+        Q_INVOKABLE QVariantList cameraControls() const override;
+        Q_INVOKABLE bool setCameraControls(const QVariantMap &cameraControls) override;
+        Q_INVOKABLE bool resetCameraControls() override;
+        Q_INVOKABLE AkPacket readFrame() override;
 
         bool nativeEventFilter(const QByteArray &eventType,
                                void *message,
-                               long *result);
+                               long *result) override;
 
     private:
         CaptureMMFPrivate *d;
 
     public slots:
-        bool init();
-        void uninit();
-        void setDevice(const QString &device);
-        void setStreams(const QList<int> &streams);
-        void setIoMethod(const QString &ioMethod);
-        void setNBuffers(int nBuffers);
-        void resetDevice();
-        void resetStreams();
-        void resetIoMethod();
-        void resetNBuffers();
-        void reset();
+        bool init() override;
+        void uninit() override;
+        void setDevice(const QString &device) override;
+        void setStreams(const QList<int> &streams) override;
+        void setIoMethod(const QString &ioMethod) override;
+        void setNBuffers(int nBuffers) override;
+        void resetDevice() override;
+        void resetStreams() override;
+        void resetIoMethod() override;
+        void resetNBuffers() override;
+        void reset() override;
 };
 
 #endif // CAPTUREMMF_H
--- webcamoid-9.0.0.orig/libAvKys/Plugins/VideoCapture/src/convert/gstreamer/src/convertvideogstreamer.cpp
+++ webcamoid-9.0.0/libAvKys/Plugins/VideoCapture/src/convert/gstreamer/src/convertvideogstreamer.cpp
@@ -106,6 +106,7 @@ class ConvertVideoGStreamerPrivate
         GstElement *m_source {nullptr};
         GstElement *m_sink {nullptr};
         GMainLoop *m_mainLoop {nullptr};
+        QFuture<void> m_mainLoopResult;
         guint m_busWatchId {0};
         qint64 m_id {-1};
         qint64 m_ptsDiff {AkNoPts<qint64>()};
@@ -267,9 +268,10 @@ bool ConvertVideoGStreamer::init(const A
 
     // Run the main GStreamer loop.
     this->d->m_mainLoop = g_main_loop_new(nullptr, FALSE);
-    QtConcurrent::run(&this->d->m_threadPool,
-                      g_main_loop_run,
-                      this->d->m_mainLoop);
+    this->d->m_mainLoopResult =
+            QtConcurrent::run(&this->d->m_threadPool,
+                              g_main_loop_run,
+                              this->d->m_mainLoop);
     gst_element_set_state(this->d->m_pipeline, GST_STATE_PLAYING);
 
     return true;
--- webcamoid-9.0.0.orig/libAvKys/Plugins/VirtualCamera/src/cmio/src/vcamcmio.cpp
+++ webcamoid-9.0.0/libAvKys/Plugins/VirtualCamera/src/cmio/src/vcamcmio.cpp
@@ -1051,12 +1051,14 @@ QVariantList VCamCMIOPrivate::controls(c
         case QXmlStreamReader::StartElement: {
             pathList << xmlInfo.name().toString();
 
-            if (path.isEmpty() && xmlInfo.name() != "info")
+            if (path.isEmpty() && xmlInfo.name() != QStringLiteral("info"))
                 return {};
 
-            if (path == "info/devices" && xmlInfo.name() == "device")
+            if (path == "info/devices"
+                && xmlInfo.name() == QStringLiteral("device"))
                 curDeviceControls.clear();
-            else if (path == "info/devices/device/controls" && xmlInfo.name() == "control")
+            else if (path == "info/devices/device/controls"
+                     && xmlInfo.name() == QStringLiteral("control"))
                 deviceControl = {};
 
             break;
@@ -1245,12 +1247,14 @@ void VCamCMIOPrivate::updateDevices()
         case QXmlStreamReader::StartElement: {
             pathList << xmlInfo.name().toString();
 
-            if (path.isEmpty() && xmlInfo.name() != "info")
+            if (path.isEmpty() && xmlInfo.name() != QStringLiteral("info"))
                 return;
 
-            if (path == "info/devices" && xmlInfo.name() == "device")
+            if (path == "info/devices"
+                && xmlInfo.name() == QStringLiteral("device"))
                 curDeviceCaps.clear();
-            else if (path == "info/devices/device/formats" && xmlInfo.name() == "format")
+            else if (path == "info/devices/device/formats"
+                     && xmlInfo.name() == QStringLiteral("format"))
                 curFormat = {};
 
             break;
--- webcamoid-9.0.0.orig/libAvKys/Plugins/VirtualCamera/src/dshow/src/vcamdshow.cpp
+++ webcamoid-9.0.0/libAvKys/Plugins/VirtualCamera/src/dshow/src/vcamdshow.cpp
@@ -1393,12 +1393,14 @@ QVariantList VCamDShowPrivate::controls(
         case QXmlStreamReader::StartElement: {
             pathList << xmlInfo.name().toString();
 
-            if (path.isEmpty() && xmlInfo.name() != "info")
+            if (path.isEmpty() && xmlInfo.name() != QStringLiteral("info"))
                 return {};
 
-            if (path == "info/devices" && xmlInfo.name() == "device")
+            if (path == "info/devices"
+                && xmlInfo.name() == QStringLiteral("device"))
                 curDeviceControls.clear();
-            else if (path == "info/devices/device/controls" && xmlInfo.name() == "control")
+            else if (path == "info/devices/device/controls"
+                     && xmlInfo.name() == QStringLiteral("control"))
                 deviceControl = {};
 
             break;
@@ -1652,12 +1654,13 @@ void VCamDShowPrivate::updateDevices()
         case QXmlStreamReader::StartElement: {
             pathList << xmlInfo.name().toString();
 
-            if (path.isEmpty() && xmlInfo.name() != "info")
+            if (path.isEmpty() && xmlInfo.name() != QStringLiteral("info"))
                 return;
 
-            if (path == "info/devices" && xmlInfo.name() == "device")
+            if (path == "info/devices" && xmlInfo.name() == QStringLiteral("device"))
                 curDeviceCaps.clear();
-            else if (path == "info/devices/device/formats" && xmlInfo.name() == "format")
+            else if (path == "info/devices/device/formats"
+                     && xmlInfo.name() == QStringLiteral("format"))
                 curFormat = {};
 
             break;
--- webcamoid-9.0.0.orig/libAvKys/cmake/ProjectCommons.cmake
+++ webcamoid-9.0.0/libAvKys/cmake/ProjectCommons.cmake
@@ -120,7 +120,7 @@ if (GIT_BIN)
 endif ()
 
 set(ANDROID_JAVA_VERSION 1.6 CACHE STRING "Mimimum Java version to use in Android")
-set(ANDROID_JAR_DIRECTORY ${ANDROID_SDK}/platforms/android-${ANDROID_NATIVE_API_LEVEL} CACHE INTERNAL "")
+set(ANDROID_JAR_DIRECTORY ${ANDROID_SDK_ROOT}/platforms/android-${ANDROID_NATIVE_API_LEVEL} CACHE INTERNAL "")
 
 # Force prefix and suffix. This fix broken MinGW builds in CI environments.
 if (WIN32 AND NOT MSVC)
--- webcamoid-9.0.0.orig/ports/ci/android/build.sh
+++ webcamoid-9.0.0/ports/ci/android/build.sh
@@ -61,7 +61,7 @@ for arch_ in $(echo "${TARGET_ARCH}" | t
         -DANDROID_ABI="${arch_}" \
         -DANDROID_STL=c++_shared \
         -DCMAKE_FIND_ROOT_PATH="$(qmake -query QT_INSTALL_PREFIX)" \
-        -DANDROID_SDK="${ANDROID_HOME}" \
+        -DANDROID_SDK_ROOT="${ANDROID_HOME}" \
         ${EXTRA_PARAMS} \
         -DDAILY_BUILD="${DAILY_BUILD}"
     cmake --build "${buildDir}" --parallel "${NJOBS}"
