aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2021-06-14 10:47:40 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2021-06-23 14:28:08 +0000
commit219ff365c9ba09800f0b6a31d8cb3dbabe9cfd5e (patch)
tree07b7d617189b6df8ad49d5a3775b0c9b5c87c44b
parentf7fc13f86a94c24c4e76626ff8ed6c136077daf9 (diff)
PySide6/QtMultiMedia: Adapt to API recent changes
Build against qtmultimedia/a6e014eb088cb9b7bf55bf87c814e75cd4037dc2: - Re-add QAudioInput, QAudioOutput, qtmultimedia/9fd208f11a218d8a8b07fc525258eea3b3596d62 - Rename QCameraImageCapture to QImageCapture, qtmultimedia/83a031c56b74d68fe6d349f78c48a1681e40374e - Remove QImageEncoderSettings, qtmultimedia/d58d93b8e45b2bf62221b104914df771849c007c - Remove QMediaEncoderSettings, qtmultimedia/9c309ede2feb598908b1476062b79d0d23759bf3 - Changes around QMediaEncoder, qtmultimedia/fde5d6f7cce6118cac4ce7b92cd056225737917f qtmultimedia/994bcb23af8399485ddfdd16d2ba34c20326b432 - Comment out QMediaPlaylist, qtmultimedia/5773f7214c7430a98dea3974c0597cb3ee0ea7f5 Change-Id: I9beb96c34ebe6132ad68e3628fcbbf0bc48127ef Reviewed-by: Christian Tismer <tismer@stackless.com> (cherry picked from commit e275299e9aef84fd9ab8401fba54b34873a43af2) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--examples/charts/audio/audio.py6
-rw-r--r--examples/multimedia/audiooutput/audiooutput.py2
-rw-r--r--examples/multimedia/camera/camera.py10
-rw-r--r--examples/multimedia/player/player.py30
-rw-r--r--sources/pyside6/PySide6/QtMultimedia/CMakeLists.txt10
-rw-r--r--sources/pyside6/PySide6/QtMultimedia/typesystem_multimedia.xml46
6 files changed, 51 insertions, 53 deletions
diff --git a/examples/charts/audio/audio.py b/examples/charts/audio/audio.py
index 2d313dd8c..875618377 100644
--- a/examples/charts/audio/audio.py
+++ b/examples/charts/audio/audio.py
@@ -44,8 +44,8 @@
import sys
from PySide6.QtCharts import QChart, QChartView, QLineSeries, QValueAxis
from PySide6.QtCore import QPointF, Slot
-from PySide6.QtMultimedia import (QAudioDeviceInfo, QAudioFormat,
- QAudioInput, QMediaDevices)
+from PySide6.QtMultimedia import (QAudioDevice, QAudioFormat,
+ QAudioSource, QMediaDevices)
from PySide6.QtWidgets import QApplication, QMainWindow, QMessageBox
@@ -80,7 +80,7 @@ class MainWindow(QMainWindow):
format_audio.setChannelCount(1)
format_audio.setSampleFormat(QAudioFormat.UInt8)
- self._audio_input = QAudioInput(device, format_audio, self)
+ self._audio_input = QAudioSource(device, format_audio, self)
self._io_device = self._audio_input.start()
self._io_device.readyRead.connect(self._readyRead)
diff --git a/examples/multimedia/audiooutput/audiooutput.py b/examples/multimedia/audiooutput/audiooutput.py
index d391af76e..67c021acf 100644
--- a/examples/multimedia/audiooutput/audiooutput.py
+++ b/examples/multimedia/audiooutput/audiooutput.py
@@ -48,7 +48,7 @@ from struct import pack
from PySide6.QtCore import (QByteArray, QIODevice, Qt, QSysInfo, QTimer,
qWarning, Slot)
-from PySide6.QtMultimedia import (QAudio, QAudioDeviceInfo, QAudioFormat,
+from PySide6.QtMultimedia import (QAudio, QAudioDevice, QAudioFormat,
QAudioSink, QMediaDevices)
from PySide6.QtWidgets import (QApplication, QComboBox, QHBoxLayout, QLabel,
QMainWindow, QPushButton, QSlider,
diff --git a/examples/multimedia/camera/camera.py b/examples/multimedia/camera/camera.py
index cd1a460a0..c3cfe5384 100644
--- a/examples/multimedia/camera/camera.py
+++ b/examples/multimedia/camera/camera.py
@@ -48,7 +48,7 @@ from PySide6.QtGui import QAction, QGuiApplication, QDesktopServices, QIcon
from PySide6.QtGui import QImage, QPixmap
from PySide6.QtWidgets import (QApplication, QHBoxLayout, QLabel,
QMainWindow, QPushButton, QTabWidget, QToolBar, QVBoxLayout, QWidget)
-from PySide6.QtMultimedia import (QCamera, QCameraImageCapture,
+from PySide6.QtMultimedia import (QCamera, QImageCapture,
QCameraDevice, QMediaCaptureSession,
QMediaDevices)
from PySide6.QtMultimediaWidgets import QVideoWidget
@@ -104,7 +104,7 @@ class MainWindow(QMainWindow):
self._camera_info = available_cameras[0]
self._camera = QCamera(self._camera_info)
self._camera.errorOccurred.connect(self._camera_error)
- self._image_capture = QCameraImageCapture(self._camera)
+ self._image_capture = QImageCapture(self._camera)
self._image_capture.imageCaptured.connect(self.image_captured)
self._image_capture.imageSaved.connect(self.image_saved)
self._image_capture.errorOccurred.connect(self._capture_error)
@@ -141,7 +141,7 @@ class MainWindow(QMainWindow):
self._camera_viewfinder = QVideoWidget()
self._tab_widget.addTab(self._camera_viewfinder, "Viewfinder")
- if self._camera and self._camera.status() != QCamera.UnavailableStatus:
+ if self._camera and self._camera.error() == QCamera.NoError:
name = self._camera_info.description()
self.setWindowTitle(f"PySide6 Camera Example ({name})")
self.show_status_message(f"Starting: '{name}'")
@@ -158,7 +158,7 @@ class MainWindow(QMainWindow):
self.statusBar().showMessage(message, 5000)
def closeEvent(self, event):
- if self._camera and self._camera.status() == QCamera.ActiveStatus:
+ if self._camera and self._camera.isActive():
self._camera.stop()
event.accept()
@@ -190,7 +190,7 @@ class MainWindow(QMainWindow):
self._tab_widget.addTab(image_view, f"Capture #{index}")
self._tab_widget.setCurrentIndex(index)
- @Slot(int, QCameraImageCapture.Error, str)
+ @Slot(int, QImageCapture.Error, str)
def _capture_error(self, id, error, error_string):
print(error_string, file=sys.stderr)
self.show_status_message(error_string)
diff --git a/examples/multimedia/player/player.py b/examples/multimedia/player/player.py
index 5aa31c5bd..3068dab97 100644
--- a/examples/multimedia/player/player.py
+++ b/examples/multimedia/player/player.py
@@ -46,7 +46,8 @@ from PySide6.QtCore import QStandardPaths, Qt, Slot
from PySide6.QtGui import QAction, QIcon, QKeySequence, QScreen
from PySide6.QtWidgets import (QApplication, QDialog, QFileDialog,
QMainWindow, QSlider, QStyle, QToolBar)
-from PySide6.QtMultimedia import QMediaFormat, QMediaPlayer, QMediaPlaylist
+from PySide6.QtMultimedia import (QAudio, QAudioOutput, QMediaFormat,
+ QMediaPlayer)
from PySide6.QtMultimediaWidgets import QVideoWidget
@@ -69,8 +70,12 @@ class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
- self._playlist = QMediaPlaylist()
+ self._playlist = [] # FIXME 6.3: Replace by QMediaPlaylist?
+ self._playlist_index = -1
+ self._audio_output = QAudioOutput()
self._player = QMediaPlayer()
+ self._player.setAudioOutput(self._audio_output)
+
self._player.errorOccurred.connect(self._player_error)
tool_bar = QToolBar()
@@ -125,11 +130,11 @@ class MainWindow(QMainWindow):
self._volume_slider.setMaximum(100)
available_width = self.screen().availableGeometry().width()
self._volume_slider.setFixedWidth(available_width / 10)
- self._volume_slider.setValue(self._player.volume())
+ self._volume_slider.setValue(self._audio_output.volume())
self._volume_slider.setTickInterval(10)
self._volume_slider.setTickPosition(QSlider.TicksBelow)
self._volume_slider.setToolTip("Volume")
- self._volume_slider.valueChanged.connect(self._player.setVolume)
+ self._volume_slider.valueChanged.connect(self._audio_output.setVolume)
tool_bar.addWidget(self._volume_slider)
about_menu = self.menuBar().addMenu("&About")
@@ -158,6 +163,8 @@ class MainWindow(QMainWindow):
self._mime_types = get_supported_mime_types()
if (is_windows and AVI not in self._mime_types):
self._mime_types.append(AVI)
+ elif MP4 not in self._mime_types:
+ self._mime_types.append(MP4)
file_dialog.setMimeTypeFilters(self._mime_types)
@@ -169,7 +176,8 @@ class MainWindow(QMainWindow):
file_dialog.setDirectory(movies_location)
if file_dialog.exec() == QDialog.Accepted:
url = file_dialog.selectedUrls()[0]
- self._playlist.addMedia(url)
+ self._playlist.append(url)
+ self._playlist_index = len(self._playlist) - 1
self._player.setSource(url)
self._player.play()
@@ -182,19 +190,21 @@ class MainWindow(QMainWindow):
def previous_clicked(self):
# Go to previous track if we are within the first 5 seconds of playback
# Otherwise, seek to the beginning.
- if self._player.position() <= 5000:
+ if self._player.position() <= 5000 and self._playlist_index > 0:
+ self._playlist_index -= 1
self._playlist.previous()
- self._player.setSource(self._playlist.currentMedia())
+ self._player.setSource(self._playlist[self._playlist_index])
else:
self._player.setPosition(0)
@Slot()
def next_clicked(self):
- self._playlist.next()
- self._player.setSource(self._playlist.currentMedia())
+ if self._playlist_index < len(self._playlist) - 1:
+ self._playlist_index += 1
+ self._player.setSource(self._playlist[self._playlist_index])
def update_buttons(self, state):
- media_count = self._playlist.mediaCount()
+ media_count = len(self._playlist)
self._play_action.setEnabled(media_count > 0
and state != QMediaPlayer.PlayingState)
self._pause_action.setEnabled(state == QMediaPlayer.PlayingState)
diff --git a/sources/pyside6/PySide6/QtMultimedia/CMakeLists.txt b/sources/pyside6/PySide6/QtMultimedia/CMakeLists.txt
index 72e46a644..5a6f3e38e 100644
--- a/sources/pyside6/PySide6/QtMultimedia/CMakeLists.txt
+++ b/sources/pyside6/PySide6/QtMultimedia/CMakeLists.txt
@@ -5,23 +5,21 @@ ${QtMultimedia_GEN_DIR}/qaudiobuffer_wrapper.cpp
${QtMultimedia_GEN_DIR}/qaudiodecoder_wrapper.cpp
${QtMultimedia_GEN_DIR}/qaudiodevice_wrapper.cpp
${QtMultimedia_GEN_DIR}/qaudioformat_wrapper.cpp
+${QtMultimedia_GEN_DIR}/qaudioinput_wrapper.cpp
+${QtMultimedia_GEN_DIR}/qaudiooutput_wrapper.cpp
${QtMultimedia_GEN_DIR}/qaudiosink_wrapper.cpp
${QtMultimedia_GEN_DIR}/qaudiosource_wrapper.cpp
${QtMultimedia_GEN_DIR}/qaudio_wrapper.cpp
${QtMultimedia_GEN_DIR}/qcameraformat_wrapper.cpp
-${QtMultimedia_GEN_DIR}/qcameraimagecapture_wrapper.cpp
${QtMultimedia_GEN_DIR}/qcameradevice_wrapper.cpp
${QtMultimedia_GEN_DIR}/qcamera_wrapper.cpp
-${QtMultimedia_GEN_DIR}/qimageencodersettings_wrapper.cpp
+${QtMultimedia_GEN_DIR}/qimagecapture_wrapper.cpp
${QtMultimedia_GEN_DIR}/qmediacapturesession_wrapper.cpp
${QtMultimedia_GEN_DIR}/qmediadevices_wrapper.cpp
-${QtMultimedia_GEN_DIR}/qmediaencoderbase_wrapper.cpp
-${QtMultimedia_GEN_DIR}/qmediaencoder_wrapper.cpp
-${QtMultimedia_GEN_DIR}/qmediaencodersettings_wrapper.cpp
${QtMultimedia_GEN_DIR}/qmediaformat_wrapper.cpp
${QtMultimedia_GEN_DIR}/qmediametadata_wrapper.cpp
${QtMultimedia_GEN_DIR}/qmediaplayer_wrapper.cpp
-${QtMultimedia_GEN_DIR}/qmediaplaylist_wrapper.cpp
+# ${QtMultimedia_GEN_DIR}/qmediaplaylist_wrapper.cpp
${QtMultimedia_GEN_DIR}/qmediarecorder_wrapper.cpp
${QtMultimedia_GEN_DIR}/qmediatimerange_wrapper.cpp
${QtMultimedia_GEN_DIR}/qmediatimerange_interval_wrapper.cpp
diff --git a/sources/pyside6/PySide6/QtMultimedia/typesystem_multimedia.xml b/sources/pyside6/PySide6/QtMultimedia/typesystem_multimedia.xml
index 9c8b75568..2e269bbd8 100644
--- a/sources/pyside6/PySide6/QtMultimedia/typesystem_multimedia.xml
+++ b/sources/pyside6/PySide6/QtMultimedia/typesystem_multimedia.xml
@@ -47,7 +47,6 @@
<namespace-type name="QAudio">
<enum-type name="Error"/>
<enum-type name="Mode"/>
- <enum-type name="Role" since="5.6"/>
<enum-type name="State"/>
<enum-type name="VolumeScale" since="5.8"/>
</namespace-type>
@@ -55,12 +54,17 @@
<value-type name="QAudioBuffer"/>
<object-type name="QAudioDecoder">
<enum-type name="Error"/>
- <enum-type name="State"/>
</object-type>
<value-type name="QAudioFormat">
<enum-type name="SampleFormat" since="6.1"/>
+ <enum-type name="ChannelConfig"/>
+ </value-type>
+ <value-type name="QAudioDevice">
+ <enum-type name="Mode"/>
</value-type>
- <value-type name="QAudioDevice"/>
+
+ <object-type name="QAudioInput"/>
+ <object-type name="QAudioOutput"/>
<object-type name="QAudioSource">
<modify-function signature="start()">
@@ -94,7 +98,6 @@
<enum-type name="Feature" flags="Features" since="6.1"/>
<enum-type name="FlashMode" since="6.1"/>
<enum-type name="FocusMode" since="6.1"/>
- <enum-type name="Status"/>
<enum-type name="TorchMode" since="6.1"/>
<enum-type name="WhiteBalanceMode" since="6.1"/>
</object-type>
@@ -102,30 +105,14 @@
<value-type name="QCameraDevice">
<enum-type name="Position" since="6.1"/>
</value-type>
- <object-type name="QCameraImageCapture">
+ <object-type name="QImageCapture">
<enum-type name="Error"/>
+ <enum-type name="FileFormat"/>
+ <enum-type name="Quality"/>
</object-type>
- <value-type name="QImageEncoderSettings">
- <enum-type name="FileFormat" since="6.1"/>
- <enum-type name="Quality" since="6.1"/>
- </value-type>
-
<object-type name="QMediaCaptureSession" since="6.1"/>
- <object-type name="QMediaEncoderBase" since="6.1">
- <enum-type name="Error"/>
- <enum-type name="State"/>
- <enum-type name="Status"/>
- </object-type>
- <object-type name="QMediaEncoder" since="6.1"/>
-
- <value-type name="QMediaEncoderSettings" since="6.1">
- <enum-type name="EncodingMode"/>
- <enum-type name="Quality"/>
- <enum-type name="ResolveFlags"/>
- </value-type>
-
<object-type name="QMediaDevices" since="6.1"/>
<value-type name="QMediaFormat" since="6.1">
@@ -144,12 +131,15 @@
<enum-type name="PlaybackState" since="6.1"/>
<enum-type name="Error"/>
</object-type>
- <object-type name="QMediaPlaylist">
- <enum-type name="PlaybackMode"/>
- <enum-type name="Error"/>
- </object-type>
+ <!-- see qtmultimedia/5773f7214c7430a98dea3974c0597cb3ee0ea7f5 might reappear in 6.3
+ <object-type name="QMediaPlaylist"/>
+ -->
<object-type name="QMediaRecorder">
- <enum-type name="CaptureMode" since="6.1"/>
+ <enum-type name="Error" since="6.1"/>
+ <enum-type name="EncodingMode" since="6.1"/>
+ <enum-type name="RecorderState" since="6.1"/>
+ <enum-type name="Quality" since="6.1"/>
+ <enum-type name="Status" since="6.1"/>
</object-type>
<value-type name="QMediaTimeRange">
<value-type name="Interval"/>