diff options
Diffstat (limited to 'src/android/jar/src/org/qtproject/qt/android/multimedia/QtAndroidMediaPlayer.java')
-rw-r--r-- | src/android/jar/src/org/qtproject/qt/android/multimedia/QtAndroidMediaPlayer.java | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/android/jar/src/org/qtproject/qt/android/multimedia/QtAndroidMediaPlayer.java b/src/android/jar/src/org/qtproject/qt/android/multimedia/QtAndroidMediaPlayer.java index cac26d357..6ddc64dc2 100644 --- a/src/android/jar/src/org/qtproject/qt/android/multimedia/QtAndroidMediaPlayer.java +++ b/src/android/jar/src/org/qtproject/qt/android/multimedia/QtAndroidMediaPlayer.java @@ -12,6 +12,7 @@ import java.io.FileInputStream; import android.content.Context; import android.media.MediaPlayer; import android.media.MediaFormat; +import android.media.PlaybackParams; import android.media.AudioAttributes; import android.media.TimedText; import android.net.Uri; @@ -723,4 +724,28 @@ public class QtAndroidMediaPlayer Log.w(TAG, exception); } } + + public boolean setPlaybackRate(float rate) + { + PlaybackParams playbackParams = mMediaPlayer.getPlaybackParams(); + playbackParams.setSpeed(rate); + // According to discussion under the patch from QTBUG-61115: At least with DirectShow + // and GStreamer, it changes both speed and pitch. (...) need to be consistent + if (rate != 0.0) + playbackParams.setPitch(Math.abs(rate)); + + try { + mMediaPlayer.setPlaybackParams(playbackParams); + } catch (IllegalStateException | IllegalArgumentException e) { + Log.e(TAG, "Cannot set playback rate " + rate + " :" + e.toString()); + return false; + } + + if ((mState & State.Started) == 0 && mMediaPlayer.isPlaying()) { + setState(State.Started); + startProgressWatcher(); + } + + return true; + } } |