Qt Multimedia: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
 
m (Remove category (There are no other pages in that category))
 
(6 intermediate revisions by 4 users not shown)
Line 1: Line 1:
=Qt Multimedia (Qt 5)=
{{LangSwitch}}


__TOC__
The purpose of this page is to give an overview of the current state of Qt Multimedia in Qt 5 and propose a roadmap for future releases.
The purpose of this page is to give an overview of the current state of Qt Multimedia in Qt 5 and propose a roadmap for future releases.


For an <span class="caps">API</span> overview, please see [http://doc.qt.io/qt-5.0/qtmultimedia/multimediaoverview.html Qt Multimedia Overview] ''[qt.io]''
For an API overview, please see [http://doc.qt.io/qt-5.0/qtmultimedia/multimediaoverview.html Qt Multimedia Overview]


For an overview of what is currently supported by each multimedia backend, see [[Qt Multimedia Backends]]
For an overview of what is currently supported by each multimedia backend, see [[Qt Multimedia Backends]]


===Planning===
== Planning ==


====High priority====
=== High priority ===


* Improve documentation.
* Improve documentation.  


Some classes have incomplete documentation and out of date code snippets. It would also be nice to add <span class="caps">QML</span> demos showing MediaPlayer and Camera features.
Some classes have incomplete documentation and out of date code snippets. It would also be nice to add QML demos showing MediaPlayer and Camera features.


* Improve auto-tests.
* Improve auto-tests.  


Most backend auto-tests are marked as insignificant and are not run on the CI system. These tests should make sure Qt Multimedia behaves consistently across all backends.
Most backend auto-tests are marked as insignificant and are not run on the CI system. These tests should make sure Qt Multimedia behaves consistently across all backends.


* Port the GStreamer backend to GStreamer 1.0 (currently 0.10).
=== Normal priority ===


This would allow to get out-of-the-box support for HW-accelerated video decoding with VA-<span class="caps">API</span>. Some work has to be done to benefit from this in QtQuick.
* Add missing APIs to QML Multimedia Items
 
* Add camera support in the <span class="caps">WMF</span> plugin
 
Qt Multimedia currently falls back to the DirectShow plugin for camera support on Windows, but that plugin has an incomplete implementation and DirectShow is being gradually deprecated by Microsoft anyway.
 
* Make the <span class="caps">WMF</span> plugin compile with MinGW.
 
The Media Foundation headers are incomplete in MinGW, making it impossible to build the plugin. The DirectShow plugin is built instead when using MinGW. We should probably generate these headers ourselves and include them in Qt.
 
* Deprecate QuickTime 7 plugin
 
<span class="caps">AVF</span>oundation is available since MacOS 10.7. Deprecate the QuickTime 7 plugin for 5.2.
 
====Normal priority====
 
* Add missing <span class="caps">API</span>s to <span class="caps">QML</span> Multimedia Items
** Playlist support
** Playlist support
** QAudioRecorder has no <span class="caps">QML</span> equivalent
** QAudioRecorder has no QML equivalent
** There is no way to select which physical camera to use with the Camera item
** Add a way to query supported values for camera parameters such as capture resolution, ISO, flash modes and so on…
** Add a way to query supported values for camera parameters such as capture resolution, <span class="caps">ISO</span>, flash modes and so on…
 
* Fullscreen video window support in <span class="caps">QML</span>
 
Multimedia backends often have optimizations for rendering video inside a window or a fullscreen window (rather than in a texture or in main memory; especially true on mobile platforms). There could be an <span class="caps">API</span> in the VideoOutput item to enable fullscreen but also to choose the kind of surface the video should be rendered into. The implementation is already partly done as a fallback for backends that don’t support rendering to a texture or to main memory. Currently this fallback always puts the video window on top of the <span class="caps">QML</span> scene, there should be a way to have the window behind the <span class="caps">QML</span> scene as well.


* Backend <span class="caps">API</span> cleanup
* Fullscreen video window support in QML


Several control classes, such as QCameraFeedbackControl or QMediaGaplessPlaybackControl, exist but are not used anywhere. Should we remove these or should we use them where needed.<br /> Additionally, some controls have missing signals and missing virtual destructors…
Multimedia backends often have optimizations for rendering video inside a window or a fullscreen window (rather than in a texture or in main memory; especially true on mobile platforms). There could be an API in the VideoOutput item to enable fullscreen but also to choose the kind of surface the video should be rendered into. The implementation is already partly done as a fallback for backends that don't support rendering to a texture or to main memory. Currently this fallback always puts the video window on top of the QML scene, there should be a way to have the window behind the QML scene as well.


* What to do with the DirectShow plugin?
* Backend API cleanup


It is the only multimedia backend available on Windows XP. Additionally DirectShow has virtually support for any existing codec (through third-party codecs). Media Foundation lacks this extensive codec support. It probably can’t go away for now, should it be improved or left as is?<br /> It could be shipped together with the <span class="caps">WMF</span> plugin and the right plugin would be selected at run-time depending on the needed codec.
Several control classes, such as QCameraFeedbackControl or QMediaGaplessPlaybackControl, exist but are not used anywhere. Should we remove these or should we use them where needed.
Additionally, some controls have missing signals and missing virtual destructors…


====Unprioritized====
=== Unprioritized ===


* Single cross-platform backend
* Single cross-platform backend
Line 67: Line 48:
** We have QAudioDecoder, in a similar fashion we could have QVideoDecoder
** We have QAudioDecoder, in a similar fashion we could have QVideoDecoder
** New QAudioEncoder and QVideoEncoder classes
** New QAudioEncoder and QVideoEncoder classes
** Video thumbnail <span class="caps">API</span>
** Video thumbnail API
** Audio effects <span class="caps">API</span>. e.g. equalizer, bass boost, reverb, etc…
** Audio effects API. e.g. equalizer, bass boost, reverb, etc…
** Media Resource Management <span class="caps">API</span>. e.g. acquiring and releasing audio devices. Particularly relevant on mobile platforms. There is already support for this but it’s only used in (and tied to) the GStreamer plugin on Meego.
 
===Categories:===
 
* [[:Category:Developing Qt|Developing_Qt]]
** [[:Category:Developing Qt::Qt Multimedia|Qt_Multimedia]]

Latest revision as of 03:28, 20 April 2016

En Ar Bg De El Es Fa Fi Fr Hi Hu It Ja Kn Ko Ms Nl Pl Pt Ru Sq Th Tr Uk Zh

The purpose of this page is to give an overview of the current state of Qt Multimedia in Qt 5 and propose a roadmap for future releases.

For an API overview, please see Qt Multimedia Overview

For an overview of what is currently supported by each multimedia backend, see Qt Multimedia Backends

Planning

High priority

  • Improve documentation.

Some classes have incomplete documentation and out of date code snippets. It would also be nice to add QML demos showing MediaPlayer and Camera features.

  • Improve auto-tests.

Most backend auto-tests are marked as insignificant and are not run on the CI system. These tests should make sure Qt Multimedia behaves consistently across all backends.

Normal priority

  • Add missing APIs to QML Multimedia Items
    • Playlist support
    • QAudioRecorder has no QML equivalent
    • Add a way to query supported values for camera parameters such as capture resolution, ISO, flash modes and so on…
  • Fullscreen video window support in QML

Multimedia backends often have optimizations for rendering video inside a window or a fullscreen window (rather than in a texture or in main memory; especially true on mobile platforms). There could be an API in the VideoOutput item to enable fullscreen but also to choose the kind of surface the video should be rendered into. The implementation is already partly done as a fallback for backends that don't support rendering to a texture or to main memory. Currently this fallback always puts the video window on top of the QML scene, there should be a way to have the window behind the QML scene as well.

  • Backend API cleanup

Several control classes, such as QCameraFeedbackControl or QMediaGaplessPlaybackControl, exist but are not used anywhere. Should we remove these or should we use them where needed. Additionally, some controls have missing signals and missing virtual destructors…

Unprioritized

  • Single cross-platform backend

Instead of having a different backend for each platform, we could use a single cross-platform backend. It would eliminate inconsistencies across platforms and reduce code maintenance. The single backend could be GStreamer (might not perform well everywhere) or libVLC (legal issues with codecs?).

  • New features
    • Subtitle support
    • Multiple tracks (or streams) support in QMediaPlayer. Some media containers can have multiple video, audio and subtitle tracks. Add a way to list them and select the active one.
    • QMediaPlayer playback loops
    • We have QAudioDecoder, in a similar fashion we could have QVideoDecoder
    • New QAudioEncoder and QVideoEncoder classes
    • Video thumbnail API
    • Audio effects API. e.g. equalizer, bass boost, reverb, etc…