Merge remote-tracking branch 'origin/stable' into dev

Change-Id: I48a140d1bbe82ab65e54683d77aea8c97c06ec80
This commit is contained in:
Frederik Gladhorn
2013-06-27 13:00:02 +02:00
30 changed files with 119 additions and 54 deletions

38
dist/changes-5.1.0 vendored Normal file
View File

@@ -0,0 +1,38 @@
Qt 5.1 introduces many new features and improvements as well as bugfixes
over the 5.0.x series. For more details, refer to the online documentation
included in this distribution. The documentation is also available online:
http://qt-project.org/doc/qt-5.1
The Qt version 5.1 series is binary compatible with the 5.0.x series.
Applications compiled for 5.0 will continue to run with 5.1.
Some of the changes listed in this file include issue tracking numbers
corresponding to tasks in the Qt Bug Tracker:
http://bugreports.qt-project.org/
Each of these identifiers can be entered in the bug tracker to obtain more
information about a particular change.
****************************************************************************
* General *
****************************************************************************
- Fixed signal not being emitted in QDeclarativeCameraFocus.
- Decouple qmediametadata.h from qmultimedia.h
- Reset VideoSurface pointer when deleted
- Fix crash on idle status change with 64 bit architectures.
- Add support for m3u8 playlist formats
- Fix calculation bug in QWaveDecoder.
- [QTBUG-28047] Make directshow-plugin available.
- [QTBUG-28589] Add error handling in image capturing in camera
- [QTBUG-30411] AVFoundation: Emit error when media fails to load
Qt for Android
--------------
- Add libQt5MultimediaQuick_p to the list of dependencies.
- Fixed crash when resetting the video surface.
- Add MediaPlayer support for Android

View File

@@ -132,10 +132,10 @@ int main(int argc, char *argv[])
QUrl videoPath; QUrl videoPath;
const QStringList moviesLocation = QStandardPaths::standardLocations(QStandardPaths::MoviesLocation); const QStringList moviesLocation = QStandardPaths::standardLocations(QStandardPaths::MoviesLocation);
if (moviesLocation.isEmpty()) { if (moviesLocation.isEmpty()) {
QUrl appPath(QString("file:///%1").arg(app.applicationDirPath())); QUrl appPath(QString("file://%1").arg(app.applicationDirPath()));
videoPath = appPath.resolved(QUrl("./")); videoPath = appPath.resolved(QUrl("./"));
} else } else
videoPath = QString("file:///%1").arg(moviesLocation.first()); videoPath = QString("file://%1").arg(moviesLocation.first());
viewer.rootContext()->setContextProperty("videoPath", videoPath); viewer.rootContext()->setContextProperty("videoPath", videoPath);
QMetaObject::invokeMethod(rootObject, "init"); QMetaObject::invokeMethod(rootObject, "init");

View File

@@ -101,7 +101,7 @@ Rectangle {
Rectangle { Rectangle {
id: wrapper id: wrapper
function launch() { function launch() {
var path = "file:///" + filePath; var path = "file://" + filePath;
if (folders.isFolder(index)) if (folders.isFolder(index))
down(path); down(path);
else else

View File

@@ -1,7 +1,7 @@
TEMPLATE = app TEMPLATE = app
TARGET = qmlvideo TARGET = qmlvideo
QT += quick QT += quick multimedia
LOCAL_SOURCES = main.cpp LOCAL_SOURCES = main.cpp
LOCAL_HEADERS = trace.h LOCAL_HEADERS = trace.h

View File

@@ -116,13 +116,13 @@ int main(int argc, char *argv[])
FileReader fileReader; FileReader fileReader;
viewer.rootContext()->setContextProperty("fileReader", &fileReader); viewer.rootContext()->setContextProperty("fileReader", &fileReader);
QUrl appPath(QString("file:///%1").arg(app.applicationDirPath())); QUrl appPath(QString("file://%1").arg(app.applicationDirPath()));
QUrl imagePath; QUrl imagePath;
const QStringList picturesLocation = QStandardPaths::standardLocations(QStandardPaths::PicturesLocation); const QStringList picturesLocation = QStandardPaths::standardLocations(QStandardPaths::PicturesLocation);
if (picturesLocation.isEmpty()) if (picturesLocation.isEmpty())
imagePath = appPath.resolved(QUrl("images")); imagePath = appPath.resolved(QUrl("images"));
else else
imagePath = QString("file:///%1").arg(picturesLocation.first()); imagePath = QString("file://%1").arg(picturesLocation.first());
viewer.rootContext()->setContextProperty("imagePath", imagePath); viewer.rootContext()->setContextProperty("imagePath", imagePath);
QUrl videoPath; QUrl videoPath;
@@ -130,7 +130,7 @@ int main(int argc, char *argv[])
if (moviesLocation.isEmpty()) if (moviesLocation.isEmpty())
videoPath = appPath.resolved(QUrl("./")); videoPath = appPath.resolved(QUrl("./"));
else else
videoPath = QString("file:///%1").arg(moviesLocation.first()); videoPath = QString("file://%1").arg(moviesLocation.first());
viewer.rootContext()->setContextProperty("videoPath", videoPath); viewer.rootContext()->setContextProperty("videoPath", videoPath);
viewer.setTitle("qmlvideofx"); viewer.setTitle("qmlvideofx");

View File

@@ -102,7 +102,7 @@ Rectangle {
Rectangle { Rectangle {
id: wrapper id: wrapper
function launch() { function launch() {
var path = "file:///" + filePath var path = "file://" + filePath
if (folders.isFolder(index)) if (folders.isFolder(index))
down(path); down(path);
else else

View File

@@ -1,7 +1,7 @@
TEMPLATE = app TEMPLATE = app
TARGET = qmlvideofx TARGET = qmlvideofx
QT += quick QT += quick multimedia
SOURCES += filereader.cpp main.cpp SOURCES += filereader.cpp main.cpp
HEADERS += filereader.h trace.h HEADERS += filereader.h trace.h

View File

@@ -469,20 +469,22 @@ QList<QByteArray> QAudioDeviceInfoInternal::availableDevices(QAudio::Mode mode)
QByteArray QAudioDeviceInfoInternal::defaultOutputDevice() QByteArray QAudioDeviceInfoInternal::defaultOutputDevice()
{ {
QList<QByteArray> list = availableDevices(QAudio::AudioOutput); QByteArray defaultDevice;
if (list.size() > 0) QDataStream ds(&defaultDevice, QIODevice::WriteOnly);
return list.at(0); ds << quint32(WAVE_MAPPER) // device ID for default device
else << QStringLiteral("Default Output Device");
return QByteArray();
return defaultDevice;
} }
QByteArray QAudioDeviceInfoInternal::defaultInputDevice() QByteArray QAudioDeviceInfoInternal::defaultInputDevice()
{ {
QList<QByteArray> list = availableDevices(QAudio::AudioInput); QByteArray defaultDevice;
if (list.size() > 0) QDataStream ds(&defaultDevice, QIODevice::WriteOnly);
return list.at(0); ds << quint32(WAVE_MAPPER) // device ID for default device
else << QStringLiteral("Default Input Device");
return QByteArray();
return defaultDevice;
} }
QT_END_NAMESPACE QT_END_NAMESPACE

View File

@@ -127,7 +127,12 @@ void QMediaPluginLoader::loadMetadata()
qDebug() << "QMediaPluginLoader: Inserted index " << i << " into metadata: " << jsonobj; qDebug() << "QMediaPluginLoader: Inserted index " << i << " into metadata: " << jsonobj;
#endif #endif
QJsonArray arr = jsonobj.value(QStringLiteral("Keys")).toArray(); QJsonArray arr = jsonobj.value(QStringLiteral("Services")).toArray();
// Preserve compatibility with older plugins (made before 5.1) in which
// services were declared in the 'Keys' property
if (arr.isEmpty())
arr = jsonobj.value(QStringLiteral("Keys")).toArray();
foreach (QJsonValue value, arr) { foreach (QJsonValue value, arr) {
QString key = value.toString(); QString key = value.toString();

View File

@@ -82,7 +82,7 @@ public class QtAndroidMediaPlayer extends MediaPlayer
try { try {
mApplicationContext = activity.getApplicationContext(); mApplicationContext = activity.getApplicationContext();
} catch(final Exception e) { } catch(final Exception e) {
Log.d(TAG, e.getMessage()); Log.d(TAG, "" + e.getMessage());
} }
} }
@@ -101,7 +101,7 @@ public class QtAndroidMediaPlayer extends MediaPlayer
currentPosition = getCurrentPosition(); currentPosition = getCurrentPosition();
} }
} catch (final InterruptedException e) { } catch (final InterruptedException e) {
Log.d(TAG, e.getMessage()); Log.d(TAG, "" + e.getMessage());
return; return;
} }
} }
@@ -262,7 +262,7 @@ public class QtAndroidMediaPlayer extends MediaPlayer
progressThread.start(); progressThread.start();
} catch (final IllegalStateException e) { } catch (final IllegalStateException e) {
reset(); reset();
Log.d(TAG, e.getMessage()); Log.d(TAG, "" + e.getMessage());
} }
} }
@@ -276,7 +276,7 @@ public class QtAndroidMediaPlayer extends MediaPlayer
super.pause(); super.pause();
} catch (final IllegalStateException e) { } catch (final IllegalStateException e) {
reset(); reset();
Log.d(TAG, e.getMessage()); Log.d(TAG, "" + e.getMessage());
} }
} }
@@ -289,7 +289,7 @@ public class QtAndroidMediaPlayer extends MediaPlayer
try { try {
super.stop(); super.stop();
} catch (final IllegalStateException e) { } catch (final IllegalStateException e) {
Log.d(TAG, e.getMessage()); Log.d(TAG, "" + e.getMessage());
} finally { } finally {
reset(); reset();
} }
@@ -305,7 +305,7 @@ public class QtAndroidMediaPlayer extends MediaPlayer
super.seekTo(msec); super.seekTo(msec);
onMediaPlayerInfoNative(MEDIA_PLAYER_PROGRESS, msec, mID); onMediaPlayerInfoNative(MEDIA_PLAYER_PROGRESS, msec, mID);
} catch (final IllegalStateException e) { } catch (final IllegalStateException e) {
Log.d(TAG, e.getMessage()); Log.d(TAG, "" + e.getMessage());
} }
} }
@@ -320,7 +320,7 @@ public class QtAndroidMediaPlayer extends MediaPlayer
try { try {
playing = super.isPlaying(); playing = super.isPlaying();
} catch (final IllegalStateException e) { } catch (final IllegalStateException e) {
Log.d(TAG, e.getMessage()); Log.d(TAG, "" + e.getMessage());
} }
return playing; return playing;
@@ -345,13 +345,13 @@ public class QtAndroidMediaPlayer extends MediaPlayer
/* MEDIA_ERROR_UNSUPPORTED= */ -1010, /* MEDIA_ERROR_UNSUPPORTED= */ -1010,
mID); mID);
} catch (final IllegalArgumentException e) { } catch (final IllegalArgumentException e) {
Log.d(TAG, e.getMessage()); Log.d(TAG, "" + e.getMessage());
} catch (final SecurityException e) { } catch (final SecurityException e) {
Log.d(TAG, e.getMessage()); Log.d(TAG, "" + e.getMessage());
} catch (final IllegalStateException e) { } catch (final IllegalStateException e) {
Log.d(TAG, e.getMessage()); Log.d(TAG, "" + e.getMessage());
} catch (final NullPointerException e) { } catch (final NullPointerException e) {
Log.d(TAG, e.getMessage()); Log.d(TAG, "" + e.getMessage());
} }
} }
@@ -366,7 +366,7 @@ public class QtAndroidMediaPlayer extends MediaPlayer
try { try {
currentPosition = super.getCurrentPosition(); currentPosition = super.getCurrentPosition();
} catch (final IllegalStateException e) { } catch (final IllegalStateException e) {
Log.d(TAG, e.getMessage()); Log.d(TAG, "" + e.getMessage());
} }
return currentPosition; return currentPosition;
@@ -383,7 +383,7 @@ public class QtAndroidMediaPlayer extends MediaPlayer
try { try {
duration = super.getDuration(); duration = super.getDuration();
} catch (final IllegalStateException e) { } catch (final IllegalStateException e) {
Log.d(TAG, e.getMessage()); Log.d(TAG, "" + e.getMessage());
} }
return duration; return duration;
@@ -415,7 +415,7 @@ public class QtAndroidMediaPlayer extends MediaPlayer
if (!mMuted) if (!mMuted)
mVolume = volume; mVolume = volume;
} catch (final IllegalStateException e) { } catch (final IllegalStateException e) {
Log.d(TAG, e.getMessage()); Log.d(TAG, "" + e.getMessage());
} }
} }

View File

@@ -1,3 +1,4 @@
{ {
"Keys": ["org.qt-project.qt.mediaplayer"] "Keys": ["androidmultimedia"],
"Services": ["org.qt-project.qt.mediaplayer"]
} }

View File

@@ -1,3 +1,4 @@
{ {
"Keys": ["org.qt-project.qt.audiosource"] "Keys": ["audiocapture"],
"Services": ["org.qt-project.qt.audiosource"]
} }

View File

@@ -1,3 +1,4 @@
{ {
"Keys": ["org.qt-project.qt.camera"] "Keys": ["avfoundationcamera"],
"Services": ["org.qt-project.qt.camera"]
} }

View File

@@ -1,3 +1,4 @@
{ {
"Keys": ["org.qt-project.qt.mediaplayer"] "Keys": ["avfoundationmediaplayer"],
"Services": ["org.qt-project.qt.mediaplayer"]
} }

View File

@@ -1,3 +1,4 @@
{ {
"Keys": ["org.qt-project.qt.camera", "org.qt-project.qt.mediaplayer"] "Keys": ["blackberrymultimedia"],
"Services": ["org.qt-project.qt.camera", "org.qt-project.qt.mediaplayer"]
} }

View File

@@ -1,3 +1,4 @@
{ {
"Keys": ["org.qt-project.qt.camera", "org.qt-project.qt.mediaplayer"] "Keys": ["directshow"],
"Services": ["org.qt-project.qt.camera", "org.qt-project.qt.mediaplayer"]
} }

View File

@@ -1,3 +1,4 @@
{ {
"Keys": ["org.qt-project.qt.camera"] "Keys": ["directshow"],
"Services": ["org.qt-project.qt.camera"]
} }

View File

@@ -1,3 +1,4 @@
{ {
"Keys": ["org.qt-project.qt.audiodecode"] "Keys": ["gstreameraudiodecode"],
"Services": ["org.qt-project.qt.audiodecode"]
} }

View File

@@ -1,3 +1,4 @@
{ {
"Keys": ["org.qt-project.qt.camera"] "Keys": ["gstreamercamerabin"],
"Services": ["org.qt-project.qt.camera"]
} }

View File

@@ -1,3 +1,4 @@
{ {
"Keys": ["org.qt-project.qt.mediaplayer", "org.qt-project.qt.audiosource", "org.qt-project.qt.camera", "org.qt-project.qt.audiodecode"] "Keys": ["gstreamer"],
"Services": ["org.qt-project.qt.mediaplayer", "org.qt-project.qt.audiosource", "org.qt-project.qt.camera", "org.qt-project.qt.audiodecode"]
} }

View File

@@ -1,3 +1,4 @@
{ {
"Keys": ["org.qt-project.qt.audiosource"] "Keys": ["gstreamermediacapture"],
"Services": ["org.qt-project.qt.audiosource"]
} }

View File

@@ -1,3 +1,4 @@
{ {
"Keys": ["org.qt-project.qt.audiosource", "org.qt-project.qt.camera"] "Keys": ["gstreamermediacapture"]
"Services": ["org.qt-project.qt.audiosource", "org.qt-project.qt.camera"]
} }

View File

@@ -1,3 +1,4 @@
{ {
"Keys": ["org.qt-project.qt.mediaplayer"] "Keys": ["gstreamermediaplayer"],
"Services": ["org.qt-project.qt.mediaplayer"]
} }

View File

@@ -1,3 +1,4 @@
{ {
"Keys": ["org.qt-project.qt.mediaplayer"] "Keys": ["qt7"],
"Services": ["org.qt-project.qt.mediaplayer"]
} }

View File

@@ -1,3 +1,4 @@
{ {
"Keys": ["org.qt-project.qt.radio"] "Keys": ["v4l"],
"Services": ["org.qt-project.qt.radio"]
} }

View File

@@ -1,3 +1,4 @@
{ {
"Keys": ["org.qt-project.qt.mediaplayer", "org.qt-project.qt.audiodecode"] "Keys": ["windowsmediafoundation"],
"Services": ["org.qt-project.qt.mediaplayer", "org.qt-project.qt.audiodecode"]
} }

View File

@@ -1,3 +1,4 @@
{ {
"Keys": ["org.qt-project.qt.mediaplayer"] "Keys": ["mockserviceplugin1"],
"Services": ["org.qt-project.qt.mediaplayer"]
} }

View File

@@ -1,3 +1,4 @@
{ {
"Keys": ["org.qt-project.qt.mediaplayer", "org.qt-project.qt.radio"] "Keys": ["mockserviceplugin2"],
"Services": ["org.qt-project.qt.mediaplayer", "org.qt-project.qt.radio"]
} }

View File

@@ -1,3 +1,4 @@
{ {
"Keys": ["org.qt-project.qt.mediaplayer", "org.qt-project.qt.audiosource"] "Keys": ["mockserviceplugin3"],
"Services": ["org.qt-project.qt.mediaplayer", "org.qt-project.qt.audiosource"]
} }

View File

@@ -1,3 +1,4 @@
{ {
"Keys": ["org.qt-project.qt.mediaplayer"] "Keys": ["mockserviceplugin4"],
"Services": ["org.qt-project.qt.mediaplayer"]
} }