diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2021-06-14 10:47:40 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2021-06-23 13:23:28 +0000 |
commit | e275299e9aef84fd9ab8401fba54b34873a43af2 (patch) | |
tree | 6f902f727963acef874a479ed2dd213fcb501e7a | |
parent | 72fff9728579b60643282bf7ccba5659975ca052 (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
Pick-to: 6.1
Change-Id: I9beb96c34ebe6132ad68e3628fcbbf0bc48127ef
Reviewed-by: Christian Tismer <tismer@stackless.com>
-rw-r--r-- | examples/charts/audio/audio.py | 6 | ||||
-rw-r--r-- | examples/multimedia/audiooutput/audiooutput.py | 2 | ||||
-rw-r--r-- | examples/multimedia/camera/camera.py | 10 | ||||
-rw-r--r-- | examples/multimedia/player/player.py | 30 | ||||
-rw-r--r-- | sources/pyside6/PySide6/QtMultimedia/CMakeLists.txt | 10 | ||||
-rw-r--r-- | sources/pyside6/PySide6/QtMultimedia/typesystem_multimedia.xml | 46 |
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"/> |