Merge "MediaSync: address API review." into mnc-dev
This commit is contained in:
@@ -15068,8 +15068,8 @@ package android.media {
|
|||||||
method public int getNotificationMarkerPosition();
|
method public int getNotificationMarkerPosition();
|
||||||
method public int getPlayState();
|
method public int getPlayState();
|
||||||
method public int getPlaybackHeadPosition();
|
method public int getPlaybackHeadPosition();
|
||||||
|
method public android.media.PlaybackParams getPlaybackParams();
|
||||||
method public int getPlaybackRate();
|
method public int getPlaybackRate();
|
||||||
method public android.media.PlaybackSettings getPlaybackSettings();
|
|
||||||
method public int getPositionNotificationPeriod();
|
method public int getPositionNotificationPeriod();
|
||||||
method public android.media.AudioDeviceInfo getPreferredOutputDevice();
|
method public android.media.AudioDeviceInfo getPreferredOutputDevice();
|
||||||
method public android.media.AudioDeviceInfo getRoutedDevice();
|
method public android.media.AudioDeviceInfo getRoutedDevice();
|
||||||
@@ -15086,10 +15086,10 @@ package android.media {
|
|||||||
method public int setLoopPoints(int, int, int);
|
method public int setLoopPoints(int, int, int);
|
||||||
method public int setNotificationMarkerPosition(int);
|
method public int setNotificationMarkerPosition(int);
|
||||||
method public int setPlaybackHeadPosition(int);
|
method public int setPlaybackHeadPosition(int);
|
||||||
|
method public void setPlaybackParams(android.media.PlaybackParams);
|
||||||
method public void setPlaybackPositionUpdateListener(android.media.AudioTrack.OnPlaybackPositionUpdateListener);
|
method public void setPlaybackPositionUpdateListener(android.media.AudioTrack.OnPlaybackPositionUpdateListener);
|
||||||
method public void setPlaybackPositionUpdateListener(android.media.AudioTrack.OnPlaybackPositionUpdateListener, android.os.Handler);
|
method public void setPlaybackPositionUpdateListener(android.media.AudioTrack.OnPlaybackPositionUpdateListener, android.os.Handler);
|
||||||
method public int setPlaybackRate(int);
|
method public int setPlaybackRate(int);
|
||||||
method public void setPlaybackSettings(android.media.PlaybackSettings);
|
|
||||||
method public int setPositionNotificationPeriod(int);
|
method public int setPositionNotificationPeriod(int);
|
||||||
method public boolean setPreferredOutputDevice(android.media.AudioDeviceInfo);
|
method public boolean setPreferredOutputDevice(android.media.AudioDeviceInfo);
|
||||||
method protected deprecated void setState(int);
|
method protected deprecated void setState(int);
|
||||||
@@ -16089,9 +16089,9 @@ package android.media {
|
|||||||
method public int getAudioSessionId();
|
method public int getAudioSessionId();
|
||||||
method public int getCurrentPosition();
|
method public int getCurrentPosition();
|
||||||
method public int getDuration();
|
method public int getDuration();
|
||||||
method public android.media.PlaybackSettings getPlaybackSettings();
|
method public android.media.PlaybackParams getPlaybackParams();
|
||||||
method public int getSelectedTrack(int) throws java.lang.IllegalStateException;
|
method public int getSelectedTrack(int) throws java.lang.IllegalStateException;
|
||||||
method public android.media.SyncSettings getSyncSettings();
|
method public android.media.SyncParams getSyncParams();
|
||||||
method public android.media.MediaTimestamp getTimestamp();
|
method public android.media.MediaTimestamp getTimestamp();
|
||||||
method public android.media.MediaPlayer.TrackInfo[] getTrackInfo() throws java.lang.IllegalStateException;
|
method public android.media.MediaPlayer.TrackInfo[] getTrackInfo() throws java.lang.IllegalStateException;
|
||||||
method public int getVideoHeight();
|
method public int getVideoHeight();
|
||||||
@@ -16127,11 +16127,11 @@ package android.media {
|
|||||||
method public void setOnTimedMetaDataListener(android.media.MediaPlayer.OnTimedMetaDataListener);
|
method public void setOnTimedMetaDataListener(android.media.MediaPlayer.OnTimedMetaDataListener);
|
||||||
method public void setOnTimedTextListener(android.media.MediaPlayer.OnTimedTextListener);
|
method public void setOnTimedTextListener(android.media.MediaPlayer.OnTimedTextListener);
|
||||||
method public void setOnVideoSizeChangedListener(android.media.MediaPlayer.OnVideoSizeChangedListener);
|
method public void setOnVideoSizeChangedListener(android.media.MediaPlayer.OnVideoSizeChangedListener);
|
||||||
|
method public void setPlaybackParams(android.media.PlaybackParams);
|
||||||
method public void setPlaybackRate(float, int);
|
method public void setPlaybackRate(float, int);
|
||||||
method public void setPlaybackSettings(android.media.PlaybackSettings);
|
|
||||||
method public void setScreenOnWhilePlaying(boolean);
|
method public void setScreenOnWhilePlaying(boolean);
|
||||||
method public void setSurface(android.view.Surface);
|
method public void setSurface(android.view.Surface);
|
||||||
method public void setSyncSettings(android.media.SyncSettings);
|
method public void setSyncParams(android.media.SyncParams);
|
||||||
method public void setVideoScalingMode(int);
|
method public void setVideoScalingMode(int);
|
||||||
method public void setVolume(float, float);
|
method public void setVolume(float, float);
|
||||||
method public void setWakeMode(android.content.Context, int);
|
method public void setWakeMode(android.content.Context, int);
|
||||||
@@ -16450,18 +16450,18 @@ package android.media {
|
|||||||
ctor public MediaSync();
|
ctor public MediaSync();
|
||||||
method public final android.view.Surface createInputSurface();
|
method public final android.view.Surface createInputSurface();
|
||||||
method public void flush();
|
method public void flush();
|
||||||
method public android.media.PlaybackSettings getPlaybackSettings();
|
method public android.media.PlaybackParams getPlaybackParams();
|
||||||
method public android.media.SyncSettings getSyncSettings();
|
method public android.media.SyncParams getSyncParams();
|
||||||
method public android.media.MediaTimestamp getTimestamp();
|
method public android.media.MediaTimestamp getTimestamp();
|
||||||
method public void queueAudio(java.nio.ByteBuffer, int, int, long);
|
method public void queueAudio(java.nio.ByteBuffer, int, long);
|
||||||
method public final void release();
|
method public final void release();
|
||||||
method public void setAudioTrack(android.media.AudioTrack);
|
method public void setAudioTrack(android.media.AudioTrack);
|
||||||
method public void setCallback(android.media.MediaSync.Callback, android.os.Handler);
|
method public void setCallback(android.media.MediaSync.Callback, android.os.Handler);
|
||||||
method public void setOnErrorListener(android.media.MediaSync.OnErrorListener, android.os.Handler);
|
method public void setOnErrorListener(android.media.MediaSync.OnErrorListener, android.os.Handler);
|
||||||
|
method public void setPlaybackParams(android.media.PlaybackParams);
|
||||||
method public void setPlaybackRate(float, int);
|
method public void setPlaybackRate(float, int);
|
||||||
method public void setPlaybackSettings(android.media.PlaybackSettings);
|
|
||||||
method public void setSurface(android.view.Surface);
|
method public void setSurface(android.view.Surface);
|
||||||
method public void setSyncSettings(android.media.SyncSettings);
|
method public void setSyncParams(android.media.SyncParams);
|
||||||
field public static final int MEDIASYNC_ERROR_AUDIOTRACK_FAIL = 1; // 0x1
|
field public static final int MEDIASYNC_ERROR_AUDIOTRACK_FAIL = 1; // 0x1
|
||||||
field public static final int MEDIASYNC_ERROR_SURFACE_FAIL = 2; // 0x2
|
field public static final int MEDIASYNC_ERROR_SURFACE_FAIL = 2; // 0x2
|
||||||
field public static final int PLAYBACK_RATE_AUDIO_MODE_DEFAULT = 0; // 0x0
|
field public static final int PLAYBACK_RATE_AUDIO_MODE_DEFAULT = 0; // 0x0
|
||||||
@@ -16509,15 +16509,15 @@ package android.media {
|
|||||||
method public abstract void onAudioTrackRouting(android.media.AudioTrack);
|
method public abstract void onAudioTrackRouting(android.media.AudioTrack);
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class PlaybackSettings {
|
public final class PlaybackParams {
|
||||||
ctor public PlaybackSettings();
|
ctor public PlaybackParams();
|
||||||
method public android.media.PlaybackSettings allowDefaults();
|
method public android.media.PlaybackParams allowDefaults();
|
||||||
method public int getAudioFallbackMode();
|
method public int getAudioFallbackMode();
|
||||||
method public float getPitch();
|
method public float getPitch();
|
||||||
method public float getSpeed();
|
method public float getSpeed();
|
||||||
method public android.media.PlaybackSettings setAudioFallbackMode(int);
|
method public android.media.PlaybackParams setAudioFallbackMode(int);
|
||||||
method public android.media.PlaybackSettings setPitch(float);
|
method public android.media.PlaybackParams setPitch(float);
|
||||||
method public android.media.PlaybackSettings setSpeed(float);
|
method public android.media.PlaybackParams setSpeed(float);
|
||||||
field public static final int AUDIO_FALLBACK_MODE_DEFAULT = 0; // 0x0
|
field public static final int AUDIO_FALLBACK_MODE_DEFAULT = 0; // 0x0
|
||||||
field public static final int AUDIO_FALLBACK_MODE_FAIL = 2; // 0x2
|
field public static final int AUDIO_FALLBACK_MODE_FAIL = 2; // 0x2
|
||||||
field public static final int AUDIO_FALLBACK_MODE_MUTE = 1; // 0x1
|
field public static final int AUDIO_FALLBACK_MODE_MUTE = 1; // 0x1
|
||||||
@@ -16708,17 +16708,17 @@ package android.media {
|
|||||||
method public abstract void onLoadComplete(android.media.SoundPool, int, int);
|
method public abstract void onLoadComplete(android.media.SoundPool, int, int);
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class SyncSettings {
|
public final class SyncParams {
|
||||||
ctor public SyncSettings();
|
ctor public SyncParams();
|
||||||
method public android.media.SyncSettings allowDefaults();
|
method public android.media.SyncParams allowDefaults();
|
||||||
method public int getAudioAdjustMode();
|
method public int getAudioAdjustMode();
|
||||||
method public float getFrameRate();
|
method public float getFrameRate();
|
||||||
method public int getSyncSource();
|
method public int getSyncSource();
|
||||||
method public float getTolerance();
|
method public float getTolerance();
|
||||||
method public android.media.SyncSettings setAudioAdjustMode(int);
|
method public android.media.SyncParams setAudioAdjustMode(int);
|
||||||
method public android.media.SyncSettings setFrameRate(float);
|
method public android.media.SyncParams setFrameRate(float);
|
||||||
method public android.media.SyncSettings setSyncSource(int);
|
method public android.media.SyncParams setSyncSource(int);
|
||||||
method public android.media.SyncSettings setTolerance(float);
|
method public android.media.SyncParams setTolerance(float);
|
||||||
field public static final int AUDIO_ADJUST_MODE_DEFAULT = 0; // 0x0
|
field public static final int AUDIO_ADJUST_MODE_DEFAULT = 0; // 0x0
|
||||||
field public static final int AUDIO_ADJUST_MODE_RESAMPLE = 2; // 0x2
|
field public static final int AUDIO_ADJUST_MODE_RESAMPLE = 2; // 0x2
|
||||||
field public static final int AUDIO_ADJUST_MODE_STRETCH = 1; // 0x1
|
field public static final int AUDIO_ADJUST_MODE_STRETCH = 1; // 0x1
|
||||||
|
|||||||
@@ -16290,8 +16290,8 @@ package android.media {
|
|||||||
method public int getNotificationMarkerPosition();
|
method public int getNotificationMarkerPosition();
|
||||||
method public int getPlayState();
|
method public int getPlayState();
|
||||||
method public int getPlaybackHeadPosition();
|
method public int getPlaybackHeadPosition();
|
||||||
|
method public android.media.PlaybackParams getPlaybackParams();
|
||||||
method public int getPlaybackRate();
|
method public int getPlaybackRate();
|
||||||
method public android.media.PlaybackSettings getPlaybackSettings();
|
|
||||||
method public int getPositionNotificationPeriod();
|
method public int getPositionNotificationPeriod();
|
||||||
method public android.media.AudioDeviceInfo getPreferredOutputDevice();
|
method public android.media.AudioDeviceInfo getPreferredOutputDevice();
|
||||||
method public android.media.AudioDeviceInfo getRoutedDevice();
|
method public android.media.AudioDeviceInfo getRoutedDevice();
|
||||||
@@ -16308,10 +16308,10 @@ package android.media {
|
|||||||
method public int setLoopPoints(int, int, int);
|
method public int setLoopPoints(int, int, int);
|
||||||
method public int setNotificationMarkerPosition(int);
|
method public int setNotificationMarkerPosition(int);
|
||||||
method public int setPlaybackHeadPosition(int);
|
method public int setPlaybackHeadPosition(int);
|
||||||
|
method public void setPlaybackParams(android.media.PlaybackParams);
|
||||||
method public void setPlaybackPositionUpdateListener(android.media.AudioTrack.OnPlaybackPositionUpdateListener);
|
method public void setPlaybackPositionUpdateListener(android.media.AudioTrack.OnPlaybackPositionUpdateListener);
|
||||||
method public void setPlaybackPositionUpdateListener(android.media.AudioTrack.OnPlaybackPositionUpdateListener, android.os.Handler);
|
method public void setPlaybackPositionUpdateListener(android.media.AudioTrack.OnPlaybackPositionUpdateListener, android.os.Handler);
|
||||||
method public int setPlaybackRate(int);
|
method public int setPlaybackRate(int);
|
||||||
method public void setPlaybackSettings(android.media.PlaybackSettings);
|
|
||||||
method public int setPositionNotificationPeriod(int);
|
method public int setPositionNotificationPeriod(int);
|
||||||
method public boolean setPreferredOutputDevice(android.media.AudioDeviceInfo);
|
method public boolean setPreferredOutputDevice(android.media.AudioDeviceInfo);
|
||||||
method protected deprecated void setState(int);
|
method protected deprecated void setState(int);
|
||||||
@@ -17312,9 +17312,9 @@ package android.media {
|
|||||||
method public int getAudioSessionId();
|
method public int getAudioSessionId();
|
||||||
method public int getCurrentPosition();
|
method public int getCurrentPosition();
|
||||||
method public int getDuration();
|
method public int getDuration();
|
||||||
method public android.media.PlaybackSettings getPlaybackSettings();
|
method public android.media.PlaybackParams getPlaybackParams();
|
||||||
method public int getSelectedTrack(int) throws java.lang.IllegalStateException;
|
method public int getSelectedTrack(int) throws java.lang.IllegalStateException;
|
||||||
method public android.media.SyncSettings getSyncSettings();
|
method public android.media.SyncParams getSyncParams();
|
||||||
method public android.media.MediaTimestamp getTimestamp();
|
method public android.media.MediaTimestamp getTimestamp();
|
||||||
method public android.media.MediaPlayer.TrackInfo[] getTrackInfo() throws java.lang.IllegalStateException;
|
method public android.media.MediaPlayer.TrackInfo[] getTrackInfo() throws java.lang.IllegalStateException;
|
||||||
method public int getVideoHeight();
|
method public int getVideoHeight();
|
||||||
@@ -17350,11 +17350,11 @@ package android.media {
|
|||||||
method public void setOnTimedMetaDataListener(android.media.MediaPlayer.OnTimedMetaDataListener);
|
method public void setOnTimedMetaDataListener(android.media.MediaPlayer.OnTimedMetaDataListener);
|
||||||
method public void setOnTimedTextListener(android.media.MediaPlayer.OnTimedTextListener);
|
method public void setOnTimedTextListener(android.media.MediaPlayer.OnTimedTextListener);
|
||||||
method public void setOnVideoSizeChangedListener(android.media.MediaPlayer.OnVideoSizeChangedListener);
|
method public void setOnVideoSizeChangedListener(android.media.MediaPlayer.OnVideoSizeChangedListener);
|
||||||
|
method public void setPlaybackParams(android.media.PlaybackParams);
|
||||||
method public void setPlaybackRate(float, int);
|
method public void setPlaybackRate(float, int);
|
||||||
method public void setPlaybackSettings(android.media.PlaybackSettings);
|
|
||||||
method public void setScreenOnWhilePlaying(boolean);
|
method public void setScreenOnWhilePlaying(boolean);
|
||||||
method public void setSurface(android.view.Surface);
|
method public void setSurface(android.view.Surface);
|
||||||
method public void setSyncSettings(android.media.SyncSettings);
|
method public void setSyncParams(android.media.SyncParams);
|
||||||
method public void setVideoScalingMode(int);
|
method public void setVideoScalingMode(int);
|
||||||
method public void setVolume(float, float);
|
method public void setVolume(float, float);
|
||||||
method public void setWakeMode(android.content.Context, int);
|
method public void setWakeMode(android.content.Context, int);
|
||||||
@@ -17675,18 +17675,18 @@ package android.media {
|
|||||||
ctor public MediaSync();
|
ctor public MediaSync();
|
||||||
method public final android.view.Surface createInputSurface();
|
method public final android.view.Surface createInputSurface();
|
||||||
method public void flush();
|
method public void flush();
|
||||||
method public android.media.PlaybackSettings getPlaybackSettings();
|
method public android.media.PlaybackParams getPlaybackParams();
|
||||||
method public android.media.SyncSettings getSyncSettings();
|
method public android.media.SyncParams getSyncParams();
|
||||||
method public android.media.MediaTimestamp getTimestamp();
|
method public android.media.MediaTimestamp getTimestamp();
|
||||||
method public void queueAudio(java.nio.ByteBuffer, int, int, long);
|
method public void queueAudio(java.nio.ByteBuffer, int, long);
|
||||||
method public final void release();
|
method public final void release();
|
||||||
method public void setAudioTrack(android.media.AudioTrack);
|
method public void setAudioTrack(android.media.AudioTrack);
|
||||||
method public void setCallback(android.media.MediaSync.Callback, android.os.Handler);
|
method public void setCallback(android.media.MediaSync.Callback, android.os.Handler);
|
||||||
method public void setOnErrorListener(android.media.MediaSync.OnErrorListener, android.os.Handler);
|
method public void setOnErrorListener(android.media.MediaSync.OnErrorListener, android.os.Handler);
|
||||||
|
method public void setPlaybackParams(android.media.PlaybackParams);
|
||||||
method public void setPlaybackRate(float, int);
|
method public void setPlaybackRate(float, int);
|
||||||
method public void setPlaybackSettings(android.media.PlaybackSettings);
|
|
||||||
method public void setSurface(android.view.Surface);
|
method public void setSurface(android.view.Surface);
|
||||||
method public void setSyncSettings(android.media.SyncSettings);
|
method public void setSyncParams(android.media.SyncParams);
|
||||||
field public static final int MEDIASYNC_ERROR_AUDIOTRACK_FAIL = 1; // 0x1
|
field public static final int MEDIASYNC_ERROR_AUDIOTRACK_FAIL = 1; // 0x1
|
||||||
field public static final int MEDIASYNC_ERROR_SURFACE_FAIL = 2; // 0x2
|
field public static final int MEDIASYNC_ERROR_SURFACE_FAIL = 2; // 0x2
|
||||||
field public static final int PLAYBACK_RATE_AUDIO_MODE_DEFAULT = 0; // 0x0
|
field public static final int PLAYBACK_RATE_AUDIO_MODE_DEFAULT = 0; // 0x0
|
||||||
@@ -17734,15 +17734,15 @@ package android.media {
|
|||||||
method public abstract void onAudioTrackRouting(android.media.AudioTrack);
|
method public abstract void onAudioTrackRouting(android.media.AudioTrack);
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class PlaybackSettings {
|
public final class PlaybackParams {
|
||||||
ctor public PlaybackSettings();
|
ctor public PlaybackParams();
|
||||||
method public android.media.PlaybackSettings allowDefaults();
|
method public android.media.PlaybackParams allowDefaults();
|
||||||
method public int getAudioFallbackMode();
|
method public int getAudioFallbackMode();
|
||||||
method public float getPitch();
|
method public float getPitch();
|
||||||
method public float getSpeed();
|
method public float getSpeed();
|
||||||
method public android.media.PlaybackSettings setAudioFallbackMode(int);
|
method public android.media.PlaybackParams setAudioFallbackMode(int);
|
||||||
method public android.media.PlaybackSettings setPitch(float);
|
method public android.media.PlaybackParams setPitch(float);
|
||||||
method public android.media.PlaybackSettings setSpeed(float);
|
method public android.media.PlaybackParams setSpeed(float);
|
||||||
field public static final int AUDIO_FALLBACK_MODE_DEFAULT = 0; // 0x0
|
field public static final int AUDIO_FALLBACK_MODE_DEFAULT = 0; // 0x0
|
||||||
field public static final int AUDIO_FALLBACK_MODE_FAIL = 2; // 0x2
|
field public static final int AUDIO_FALLBACK_MODE_FAIL = 2; // 0x2
|
||||||
field public static final int AUDIO_FALLBACK_MODE_MUTE = 1; // 0x1
|
field public static final int AUDIO_FALLBACK_MODE_MUTE = 1; // 0x1
|
||||||
@@ -17933,17 +17933,17 @@ package android.media {
|
|||||||
method public abstract void onLoadComplete(android.media.SoundPool, int, int);
|
method public abstract void onLoadComplete(android.media.SoundPool, int, int);
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class SyncSettings {
|
public final class SyncParams {
|
||||||
ctor public SyncSettings();
|
ctor public SyncParams();
|
||||||
method public android.media.SyncSettings allowDefaults();
|
method public android.media.SyncParams allowDefaults();
|
||||||
method public int getAudioAdjustMode();
|
method public int getAudioAdjustMode();
|
||||||
method public float getFrameRate();
|
method public float getFrameRate();
|
||||||
method public int getSyncSource();
|
method public int getSyncSource();
|
||||||
method public float getTolerance();
|
method public float getTolerance();
|
||||||
method public android.media.SyncSettings setAudioAdjustMode(int);
|
method public android.media.SyncParams setAudioAdjustMode(int);
|
||||||
method public android.media.SyncSettings setFrameRate(float);
|
method public android.media.SyncParams setFrameRate(float);
|
||||||
method public android.media.SyncSettings setSyncSource(int);
|
method public android.media.SyncParams setSyncSource(int);
|
||||||
method public android.media.SyncSettings setTolerance(float);
|
method public android.media.SyncParams setTolerance(float);
|
||||||
field public static final int AUDIO_ADJUST_MODE_DEFAULT = 0; // 0x0
|
field public static final int AUDIO_ADJUST_MODE_DEFAULT = 0; // 0x0
|
||||||
field public static final int AUDIO_ADJUST_MODE_RESAMPLE = 2; // 0x2
|
field public static final int AUDIO_ADJUST_MODE_RESAMPLE = 2; // 0x2
|
||||||
field public static final int AUDIO_ADJUST_MODE_STRETCH = 1; // 0x1
|
field public static final int AUDIO_ADJUST_MODE_STRETCH = 1; // 0x1
|
||||||
|
|||||||
@@ -35,7 +35,7 @@
|
|||||||
|
|
||||||
#include "android_media_AudioFormat.h"
|
#include "android_media_AudioFormat.h"
|
||||||
#include "android_media_AudioErrors.h"
|
#include "android_media_AudioErrors.h"
|
||||||
#include "android_media_PlaybackSettings.h"
|
#include "android_media_PlaybackParams.h"
|
||||||
#include "android_media_DeviceCallback.h"
|
#include "android_media_DeviceCallback.h"
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@@ -61,7 +61,7 @@ struct audio_attributes_fields_t {
|
|||||||
};
|
};
|
||||||
static audio_track_fields_t javaAudioTrackFields;
|
static audio_track_fields_t javaAudioTrackFields;
|
||||||
static audio_attributes_fields_t javaAudioAttrFields;
|
static audio_attributes_fields_t javaAudioAttrFields;
|
||||||
static PlaybackSettings::fields_t gPlaybackSettingsFields;
|
static PlaybackParams::fields_t gPlaybackParamsFields;
|
||||||
|
|
||||||
struct audiotrack_callback_cookie {
|
struct audiotrack_callback_cookie {
|
||||||
jclass audioTrack_class;
|
jclass audioTrack_class;
|
||||||
@@ -693,8 +693,8 @@ static jint android_media_AudioTrack_get_playback_rate(JNIEnv *env, jobject thi
|
|||||||
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
static void android_media_AudioTrack_set_playback_settings(JNIEnv *env, jobject thiz,
|
static void android_media_AudioTrack_set_playback_params(JNIEnv *env, jobject thiz,
|
||||||
jobject settings) {
|
jobject params) {
|
||||||
sp<AudioTrack> lpTrack = getAudioTrack(env, thiz);
|
sp<AudioTrack> lpTrack = getAudioTrack(env, thiz);
|
||||||
if (lpTrack == NULL) {
|
if (lpTrack == NULL) {
|
||||||
jniThrowException(env, "java/lang/IllegalStateException",
|
jniThrowException(env, "java/lang/IllegalStateException",
|
||||||
@@ -702,10 +702,10 @@ static void android_media_AudioTrack_set_playback_settings(JNIEnv *env, jobject
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
PlaybackSettings pbs;
|
PlaybackParams pbs;
|
||||||
pbs.fillFromJobject(env, gPlaybackSettingsFields, settings);
|
pbs.fillFromJobject(env, gPlaybackParamsFields, params);
|
||||||
|
|
||||||
ALOGV("setPlaybackSettings: %d:%f %d:%f %d:%u %d:%u",
|
ALOGV("setPlaybackParams: %d:%f %d:%f %d:%u %d:%u",
|
||||||
pbs.speedSet, pbs.audioRate.mSpeed,
|
pbs.speedSet, pbs.audioRate.mSpeed,
|
||||||
pbs.pitchSet, pbs.audioRate.mPitch,
|
pbs.pitchSet, pbs.audioRate.mPitch,
|
||||||
pbs.audioFallbackModeSet, pbs.audioRate.mFallbackMode,
|
pbs.audioFallbackModeSet, pbs.audioRate.mFallbackMode,
|
||||||
@@ -719,8 +719,8 @@ static void android_media_AudioTrack_set_playback_settings(JNIEnv *env, jobject
|
|||||||
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
static jobject android_media_AudioTrack_get_playback_settings(JNIEnv *env, jobject thiz,
|
static jobject android_media_AudioTrack_get_playback_params(JNIEnv *env, jobject thiz,
|
||||||
jobject settings) {
|
jobject params) {
|
||||||
sp<AudioTrack> lpTrack = getAudioTrack(env, thiz);
|
sp<AudioTrack> lpTrack = getAudioTrack(env, thiz);
|
||||||
if (lpTrack == NULL) {
|
if (lpTrack == NULL) {
|
||||||
jniThrowException(env, "java/lang/IllegalStateException",
|
jniThrowException(env, "java/lang/IllegalStateException",
|
||||||
@@ -728,13 +728,13 @@ static jobject android_media_AudioTrack_get_playback_settings(JNIEnv *env, jobj
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
PlaybackSettings pbs;
|
PlaybackParams pbs;
|
||||||
pbs.audioRate = lpTrack->getPlaybackRate();
|
pbs.audioRate = lpTrack->getPlaybackRate();
|
||||||
pbs.speedSet = true;
|
pbs.speedSet = true;
|
||||||
pbs.pitchSet = true;
|
pbs.pitchSet = true;
|
||||||
pbs.audioFallbackModeSet = true;
|
pbs.audioFallbackModeSet = true;
|
||||||
pbs.audioStretchModeSet = true;
|
pbs.audioStretchModeSet = true;
|
||||||
return pbs.asJobject(env, gPlaybackSettingsFields);
|
return pbs.asJobject(env, gPlaybackParamsFields);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1049,12 +1049,12 @@ static JNINativeMethod gMethods[] = {
|
|||||||
"(I)I", (void *)android_media_AudioTrack_set_playback_rate},
|
"(I)I", (void *)android_media_AudioTrack_set_playback_rate},
|
||||||
{"native_get_playback_rate",
|
{"native_get_playback_rate",
|
||||||
"()I", (void *)android_media_AudioTrack_get_playback_rate},
|
"()I", (void *)android_media_AudioTrack_get_playback_rate},
|
||||||
{"native_set_playback_settings",
|
{"native_set_playback_params",
|
||||||
"(Landroid/media/PlaybackSettings;)V",
|
"(Landroid/media/PlaybackParams;)V",
|
||||||
(void *)android_media_AudioTrack_set_playback_settings},
|
(void *)android_media_AudioTrack_set_playback_params},
|
||||||
{"native_get_playback_settings",
|
{"native_get_playback_params",
|
||||||
"()Landroid/media/PlaybackSettings;",
|
"()Landroid/media/PlaybackParams;",
|
||||||
(void *)android_media_AudioTrack_get_playback_settings},
|
(void *)android_media_AudioTrack_get_playback_params},
|
||||||
{"native_set_marker_pos","(I)I", (void *)android_media_AudioTrack_set_marker_pos},
|
{"native_set_marker_pos","(I)I", (void *)android_media_AudioTrack_set_marker_pos},
|
||||||
{"native_get_marker_pos","()I", (void *)android_media_AudioTrack_get_marker_pos},
|
{"native_get_marker_pos","()I", (void *)android_media_AudioTrack_get_marker_pos},
|
||||||
{"native_set_pos_update_period",
|
{"native_set_pos_update_period",
|
||||||
@@ -1144,8 +1144,8 @@ int register_android_media_AudioTrack(JNIEnv *env)
|
|||||||
|
|
||||||
env->DeleteLocalRef(audioAttrClass);
|
env->DeleteLocalRef(audioAttrClass);
|
||||||
|
|
||||||
// initialize PlaybackSettings field info
|
// initialize PlaybackParams field info
|
||||||
gPlaybackSettingsFields.init(env);
|
gPlaybackParamsFields.init(env);
|
||||||
|
|
||||||
return RegisterMethodsOrDie(env, kClassPathName, gMethods, NELEM(gMethods));
|
return RegisterMethodsOrDie(env, kClassPathName, gMethods, NELEM(gMethods));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -908,13 +908,13 @@ public class AudioTrack
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the current playback settings.
|
* Returns the current playback params.
|
||||||
* See {@link #setPlaybackSettings(PlaybackSettings)} to set playback settings
|
* See {@link #setPlaybackParams(PlaybackParams)} to set playback params
|
||||||
* @return current {@link PlaybackSettings}.
|
* @return current {@link PlaybackParams}.
|
||||||
* @throws IllegalStateException if track is not initialized.
|
* @throws IllegalStateException if track is not initialized.
|
||||||
*/
|
*/
|
||||||
public @NonNull PlaybackSettings getPlaybackSettings() {
|
public @NonNull PlaybackParams getPlaybackParams() {
|
||||||
return native_get_playback_settings();
|
return native_get_playback_params();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1294,7 +1294,7 @@ public class AudioTrack
|
|||||||
* playback to last twice as long, but will also result in a pitch shift down by one octave.
|
* playback to last twice as long, but will also result in a pitch shift down by one octave.
|
||||||
* The valid sample rate range is from 1 Hz to twice the value returned by
|
* The valid sample rate range is from 1 Hz to twice the value returned by
|
||||||
* {@link #getNativeOutputSampleRate(int)}.
|
* {@link #getNativeOutputSampleRate(int)}.
|
||||||
* Use {@link #setPlaybackSettings(PlaybackSettings)} for speed control.
|
* Use {@link #setPlaybackParams(PlaybackParams)} for speed control.
|
||||||
* @param sampleRateInHz the sample rate expressed in Hz
|
* @param sampleRateInHz the sample rate expressed in Hz
|
||||||
* @return error code or success, see {@link #SUCCESS}, {@link #ERROR_BAD_VALUE},
|
* @return error code or success, see {@link #SUCCESS}, {@link #ERROR_BAD_VALUE},
|
||||||
* {@link #ERROR_INVALID_OPERATION}
|
* {@link #ERROR_INVALID_OPERATION}
|
||||||
@@ -1311,24 +1311,24 @@ public class AudioTrack
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the playback settings.
|
* Sets the playback params.
|
||||||
* This method returns failure if it cannot apply the playback settings.
|
* This method returns failure if it cannot apply the playback params.
|
||||||
* One possible cause is that the parameters for speed or pitch are out of range.
|
* One possible cause is that the parameters for speed or pitch are out of range.
|
||||||
* Another possible cause is that the <code>AudioTrack</code> is streaming
|
* Another possible cause is that the <code>AudioTrack</code> is streaming
|
||||||
* (see {@link #MODE_STREAM}) and the
|
* (see {@link #MODE_STREAM}) and the
|
||||||
* buffer size is too small. For speeds greater than 1.0f, the <code>AudioTrack</code> buffer
|
* buffer size is too small. For speeds greater than 1.0f, the <code>AudioTrack</code> buffer
|
||||||
* on configuration must be larger than the speed multiplied by the minimum size
|
* on configuration must be larger than the speed multiplied by the minimum size
|
||||||
* {@link #getMinBufferSize(int, int, int)}) to allow proper playback.
|
* {@link #getMinBufferSize(int, int, int)}) to allow proper playback.
|
||||||
* @param settings see {@link PlaybackSettings}. In particular,
|
* @param params see {@link PlaybackParams}. In particular,
|
||||||
* speed, pitch, and audio mode should be set.
|
* speed, pitch, and audio mode should be set.
|
||||||
* @throws IllegalArgumentException if the settings are invalid or not accepted.
|
* @throws IllegalArgumentException if the params are invalid or not accepted.
|
||||||
* @throws IllegalStateException if track is not initialized.
|
* @throws IllegalStateException if track is not initialized.
|
||||||
*/
|
*/
|
||||||
public void setPlaybackSettings(@NonNull PlaybackSettings settings) {
|
public void setPlaybackParams(@NonNull PlaybackParams params) {
|
||||||
if (settings == null) {
|
if (params == null) {
|
||||||
throw new IllegalArgumentException("settings is null");
|
throw new IllegalArgumentException("params is null");
|
||||||
}
|
}
|
||||||
native_set_playback_settings(settings);
|
native_set_playback_params(params);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -2353,8 +2353,8 @@ public class AudioTrack
|
|||||||
private native final int native_set_playback_rate(int sampleRateInHz);
|
private native final int native_set_playback_rate(int sampleRateInHz);
|
||||||
private native final int native_get_playback_rate();
|
private native final int native_get_playback_rate();
|
||||||
|
|
||||||
private native final void native_set_playback_settings(@NonNull PlaybackSettings settings);
|
private native final void native_set_playback_params(@NonNull PlaybackParams params);
|
||||||
private native final @NonNull PlaybackSettings native_get_playback_settings();
|
private native final @NonNull PlaybackParams native_get_playback_params();
|
||||||
|
|
||||||
private native final int native_set_marker_pos(int marker);
|
private native final int native_set_marker_pos(int marker);
|
||||||
private native final int native_get_marker_pos();
|
private native final int native_get_marker_pos();
|
||||||
|
|||||||
@@ -47,12 +47,12 @@ import android.graphics.SurfaceTexture;
|
|||||||
import android.media.AudioManager;
|
import android.media.AudioManager;
|
||||||
import android.media.MediaFormat;
|
import android.media.MediaFormat;
|
||||||
import android.media.MediaTimeProvider;
|
import android.media.MediaTimeProvider;
|
||||||
import android.media.PlaybackSettings;
|
import android.media.PlaybackParams;
|
||||||
import android.media.SubtitleController;
|
import android.media.SubtitleController;
|
||||||
import android.media.SubtitleController.Anchor;
|
import android.media.SubtitleController.Anchor;
|
||||||
import android.media.SubtitleData;
|
import android.media.SubtitleData;
|
||||||
import android.media.SubtitleTrack.RenderingWidget;
|
import android.media.SubtitleTrack.RenderingWidget;
|
||||||
import android.media.SyncSettings;
|
import android.media.SyncParams;
|
||||||
|
|
||||||
import com.android.internal.app.IAppOpsService;
|
import com.android.internal.app.IAppOpsService;
|
||||||
|
|
||||||
@@ -481,7 +481,7 @@ import java.lang.ref.WeakReference;
|
|||||||
* <td>{} </p></td>
|
* <td>{} </p></td>
|
||||||
* <td>This method can be called in any state and calling it does not change
|
* <td>This method can be called in any state and calling it does not change
|
||||||
* the object state. </p></td></tr>
|
* the object state. </p></td></tr>
|
||||||
* <tr><td>setPlaybackSettings</p></td>
|
* <tr><td>setPlaybackParams</p></td>
|
||||||
* <td>any </p></td>
|
* <td>any </p></td>
|
||||||
* <td>{} </p></td>
|
* <td>{} </p></td>
|
||||||
* <td>This method can be called in any state and calling it does not change
|
* <td>This method can be called in any state and calling it does not change
|
||||||
@@ -1408,68 +1408,68 @@ public class MediaPlayer implements SubtitleController.Listener
|
|||||||
* @throws IllegalArgumentException if audioMode is not supported.
|
* @throws IllegalArgumentException if audioMode is not supported.
|
||||||
*/
|
*/
|
||||||
public void setPlaybackRate(float rate, @PlaybackRateAudioMode int audioMode) {
|
public void setPlaybackRate(float rate, @PlaybackRateAudioMode int audioMode) {
|
||||||
PlaybackSettings settings = new PlaybackSettings();
|
PlaybackParams params = new PlaybackParams();
|
||||||
settings.allowDefaults();
|
params.allowDefaults();
|
||||||
switch (audioMode) {
|
switch (audioMode) {
|
||||||
case PLAYBACK_RATE_AUDIO_MODE_DEFAULT:
|
case PLAYBACK_RATE_AUDIO_MODE_DEFAULT:
|
||||||
settings.setSpeed(rate).setPitch(1.0f);
|
params.setSpeed(rate).setPitch(1.0f);
|
||||||
break;
|
break;
|
||||||
case PLAYBACK_RATE_AUDIO_MODE_STRETCH:
|
case PLAYBACK_RATE_AUDIO_MODE_STRETCH:
|
||||||
settings.setSpeed(rate).setPitch(1.0f)
|
params.setSpeed(rate).setPitch(1.0f)
|
||||||
.setAudioFallbackMode(settings.AUDIO_FALLBACK_MODE_FAIL);
|
.setAudioFallbackMode(params.AUDIO_FALLBACK_MODE_FAIL);
|
||||||
break;
|
break;
|
||||||
case PLAYBACK_RATE_AUDIO_MODE_RESAMPLE:
|
case PLAYBACK_RATE_AUDIO_MODE_RESAMPLE:
|
||||||
settings.setSpeed(rate).setPitch(rate);
|
params.setSpeed(rate).setPitch(rate);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
final String msg = "Audio playback mode " + audioMode + " is not supported";
|
final String msg = "Audio playback mode " + audioMode + " is not supported";
|
||||||
throw new IllegalArgumentException(msg);
|
throw new IllegalArgumentException(msg);
|
||||||
}
|
}
|
||||||
setPlaybackSettings(settings);
|
setPlaybackParams(params);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets playback rate using {@link PlaybackSettings}.
|
* Sets playback rate using {@link PlaybackParams}.
|
||||||
*
|
*
|
||||||
* @param settings the playback settings.
|
* @param params the playback params.
|
||||||
*
|
*
|
||||||
* @throws IllegalStateException if the internal player engine has not been
|
* @throws IllegalStateException if the internal player engine has not been
|
||||||
* initialized.
|
* initialized.
|
||||||
* @throws IllegalArgumentException if settings is not supported.
|
* @throws IllegalArgumentException if params is not supported.
|
||||||
*/
|
*/
|
||||||
public native void setPlaybackSettings(@NonNull PlaybackSettings settings);
|
public native void setPlaybackParams(@NonNull PlaybackParams params);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the playback settings, containing the current playback rate.
|
* Gets the playback params, containing the current playback rate.
|
||||||
*
|
*
|
||||||
* @return the playback settings.
|
* @return the playback params.
|
||||||
* @throws IllegalStateException if the internal player engine has not been
|
* @throws IllegalStateException if the internal player engine has not been
|
||||||
* initialized.
|
* initialized.
|
||||||
*/
|
*/
|
||||||
@NonNull
|
@NonNull
|
||||||
public native PlaybackSettings getPlaybackSettings();
|
public native PlaybackParams getPlaybackParams();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets A/V sync mode.
|
* Sets A/V sync mode.
|
||||||
*
|
*
|
||||||
* @param settings the A/V sync settings to apply
|
* @param params the A/V sync params to apply
|
||||||
*
|
*
|
||||||
* @throws IllegalStateException if the internal player engine has not been
|
* @throws IllegalStateException if the internal player engine has not been
|
||||||
* initialized.
|
* initialized.
|
||||||
* @throws IllegalArgumentException if settings are not supported.
|
* @throws IllegalArgumentException if params are not supported.
|
||||||
*/
|
*/
|
||||||
public native void setSyncSettings(@NonNull SyncSettings settings);
|
public native void setSyncParams(@NonNull SyncParams params);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the A/V sync mode.
|
* Gets the A/V sync mode.
|
||||||
*
|
*
|
||||||
* @return the A/V sync settings
|
* @return the A/V sync params
|
||||||
*
|
*
|
||||||
* @throws IllegalStateException if the internal player engine has not been
|
* @throws IllegalStateException if the internal player engine has not been
|
||||||
* initialized.
|
* initialized.
|
||||||
*/
|
*/
|
||||||
@NonNull
|
@NonNull
|
||||||
public native SyncSettings getSyncSettings();
|
public native SyncParams getSyncParams();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Seeks to specified time position.
|
* Seeks to specified time position.
|
||||||
@@ -1507,7 +1507,7 @@ public class MediaPlayer implements SubtitleController.Listener
|
|||||||
return new MediaTimestamp(
|
return new MediaTimestamp(
|
||||||
getCurrentPosition() * 1000L,
|
getCurrentPosition() * 1000L,
|
||||||
System.nanoTime(),
|
System.nanoTime(),
|
||||||
isPlaying() ? getPlaybackSettings().getSpeed() : 0.f);
|
isPlaying() ? getPlaybackParams().getSpeed() : 0.f);
|
||||||
} catch (IllegalStateException e) {
|
} catch (IllegalStateException e) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ import android.annotation.IntDef;
|
|||||||
import android.annotation.NonNull;
|
import android.annotation.NonNull;
|
||||||
import android.annotation.Nullable;
|
import android.annotation.Nullable;
|
||||||
import android.media.AudioTrack;
|
import android.media.AudioTrack;
|
||||||
import android.media.PlaybackSettings;
|
import android.media.PlaybackParams;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.Looper;
|
import android.os.Looper;
|
||||||
import android.os.Message;
|
import android.os.Message;
|
||||||
@@ -62,7 +62,7 @@ import java.util.List;
|
|||||||
* // videoDecoder.releaseOutputBuffer(videoOutputBufferIx, videoPresentationTimeNs);
|
* // videoDecoder.releaseOutputBuffer(videoOutputBufferIx, videoPresentationTimeNs);
|
||||||
* // More details are available as below.
|
* // More details are available as below.
|
||||||
* ...
|
* ...
|
||||||
* sync.queueAudio(audioByteBuffer, bufferIndex, size, audioPresentationTimeUs); // non-blocking.
|
* sync.queueAudio(audioByteBuffer, bufferIndex, audioPresentationTimeUs); // non-blocking.
|
||||||
* // The audioByteBuffer and bufferIndex will be returned via callback.
|
* // The audioByteBuffer and bufferIndex will be returned via callback.
|
||||||
* // More details are available as below.
|
* // More details are available as below.
|
||||||
* ...
|
* ...
|
||||||
@@ -112,7 +112,7 @@ import java.util.List;
|
|||||||
* initial underrun.
|
* initial underrun.
|
||||||
* <p>
|
* <p>
|
||||||
*/
|
*/
|
||||||
final public class MediaSync {
|
public final class MediaSync {
|
||||||
/**
|
/**
|
||||||
* MediaSync callback interface. Used to notify the user asynchronously
|
* MediaSync callback interface. Used to notify the user asynchronously
|
||||||
* of various MediaSync events.
|
* of various MediaSync events.
|
||||||
@@ -170,14 +170,12 @@ final public class MediaSync {
|
|||||||
private static class AudioBuffer {
|
private static class AudioBuffer {
|
||||||
public ByteBuffer mByteBuffer;
|
public ByteBuffer mByteBuffer;
|
||||||
public int mBufferIndex;
|
public int mBufferIndex;
|
||||||
public int mSizeInBytes;
|
|
||||||
long mPresentationTimeUs;
|
long mPresentationTimeUs;
|
||||||
|
|
||||||
public AudioBuffer(@NonNull ByteBuffer byteBuffer, int bufferIndex,
|
public AudioBuffer(@NonNull ByteBuffer byteBuffer, int bufferIndex,
|
||||||
int sizeInBytes, long presentationTimeUs) {
|
long presentationTimeUs) {
|
||||||
mByteBuffer = byteBuffer;
|
mByteBuffer = byteBuffer;
|
||||||
mBufferIndex = bufferIndex;
|
mBufferIndex = bufferIndex;
|
||||||
mSizeInBytes = sizeInBytes;
|
|
||||||
mPresentationTimeUs = presentationTimeUs;
|
mPresentationTimeUs = presentationTimeUs;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -413,18 +411,18 @@ final public class MediaSync {
|
|||||||
* @throws IllegalArgumentException if audioMode is not supported.
|
* @throws IllegalArgumentException if audioMode is not supported.
|
||||||
*/
|
*/
|
||||||
public void setPlaybackRate(float rate, @PlaybackRateAudioMode int audioMode) {
|
public void setPlaybackRate(float rate, @PlaybackRateAudioMode int audioMode) {
|
||||||
PlaybackSettings rateSettings = new PlaybackSettings();
|
PlaybackParams rateParams = new PlaybackParams();
|
||||||
rateSettings.allowDefaults();
|
rateParams.allowDefaults();
|
||||||
switch (audioMode) {
|
switch (audioMode) {
|
||||||
case PLAYBACK_RATE_AUDIO_MODE_DEFAULT:
|
case PLAYBACK_RATE_AUDIO_MODE_DEFAULT:
|
||||||
rateSettings.setSpeed(rate).setPitch(1.0f);
|
rateParams.setSpeed(rate).setPitch(1.0f);
|
||||||
break;
|
break;
|
||||||
case PLAYBACK_RATE_AUDIO_MODE_STRETCH:
|
case PLAYBACK_RATE_AUDIO_MODE_STRETCH:
|
||||||
rateSettings.setSpeed(rate).setPitch(1.0f)
|
rateParams.setSpeed(rate).setPitch(1.0f)
|
||||||
.setAudioFallbackMode(rateSettings.AUDIO_FALLBACK_MODE_FAIL);
|
.setAudioFallbackMode(rateParams.AUDIO_FALLBACK_MODE_FAIL);
|
||||||
break;
|
break;
|
||||||
case PLAYBACK_RATE_AUDIO_MODE_RESAMPLE:
|
case PLAYBACK_RATE_AUDIO_MODE_RESAMPLE:
|
||||||
rateSettings.setSpeed(rate).setPitch(rate);
|
rateParams.setSpeed(rate).setPitch(rate);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
@@ -432,19 +430,19 @@ final public class MediaSync {
|
|||||||
throw new IllegalArgumentException(msg);
|
throw new IllegalArgumentException(msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
setPlaybackSettings(rateSettings);
|
setPlaybackParams(rateParams);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets playback rate using {@link PlaybackSettings}.
|
* Sets playback rate using {@link PlaybackParams}.
|
||||||
* <p>
|
* <p>
|
||||||
* When using MediaSync with {@link AudioTrack}, set playback settings using this
|
* When using MediaSync with {@link AudioTrack}, set playback params using this
|
||||||
* call instead of calling it directly on the track, so that the sync is aware of
|
* call instead of calling it directly on the track, so that the sync is aware of
|
||||||
* the settings change.
|
* the params change.
|
||||||
* <p>
|
* <p>
|
||||||
* This call also works if there is no audio track.
|
* This call also works if there is no audio track.
|
||||||
*
|
*
|
||||||
* @param settings the playback settings to use. {@link PlaybackSettings#getSpeed
|
* @param params the playback params to use. {@link PlaybackParams#getSpeed
|
||||||
* Speed} is the ratio between desired playback rate and normal one. 1.0 means
|
* Speed} is the ratio between desired playback rate and normal one. 1.0 means
|
||||||
* normal playback speed. 0.0 means pause. Value larger than 1.0 means faster playback,
|
* normal playback speed. 0.0 means pause. Value larger than 1.0 means faster playback,
|
||||||
* while value between 0.0 and 1.0 for slower playback. <b>Note:</b> the normal rate
|
* while value between 0.0 and 1.0 for slower playback. <b>Note:</b> the normal rate
|
||||||
@@ -453,11 +451,11 @@ final public class MediaSync {
|
|||||||
*
|
*
|
||||||
* @throws IllegalStateException if the internal sync engine or the audio track has not
|
* @throws IllegalStateException if the internal sync engine or the audio track has not
|
||||||
* been initialized.
|
* been initialized.
|
||||||
* @throws IllegalArgumentException if the settings are not supported.
|
* @throws IllegalArgumentException if the params are not supported.
|
||||||
*/
|
*/
|
||||||
public void setPlaybackSettings(@NonNull PlaybackSettings settings) {
|
public void setPlaybackParams(@NonNull PlaybackParams params) {
|
||||||
synchronized(mAudioLock) {
|
synchronized(mAudioLock) {
|
||||||
mPlaybackRate = native_setPlaybackSettings(settings);;
|
mPlaybackRate = native_setPlaybackParams(params);;
|
||||||
}
|
}
|
||||||
if (mPlaybackRate != 0.0 && mAudioThread != null) {
|
if (mPlaybackRate != 0.0 && mAudioThread != null) {
|
||||||
postRenderAudio(0);
|
postRenderAudio(0);
|
||||||
@@ -465,7 +463,7 @@ final public class MediaSync {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the playback rate using {@link PlaybackSettings}.
|
* Gets the playback rate using {@link PlaybackParams}.
|
||||||
*
|
*
|
||||||
* @return the playback rate being used.
|
* @return the playback rate being used.
|
||||||
*
|
*
|
||||||
@@ -473,40 +471,40 @@ final public class MediaSync {
|
|||||||
* been initialized.
|
* been initialized.
|
||||||
*/
|
*/
|
||||||
@NonNull
|
@NonNull
|
||||||
public native PlaybackSettings getPlaybackSettings();
|
public native PlaybackParams getPlaybackParams();
|
||||||
|
|
||||||
private native float native_setPlaybackSettings(@NonNull PlaybackSettings settings);
|
private native float native_setPlaybackParams(@NonNull PlaybackParams params);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets A/V sync mode.
|
* Sets A/V sync mode.
|
||||||
*
|
*
|
||||||
* @param settings the A/V sync settings to apply
|
* @param params the A/V sync params to apply
|
||||||
*
|
*
|
||||||
* @throws IllegalStateException if the internal player engine has not been
|
* @throws IllegalStateException if the internal player engine has not been
|
||||||
* initialized.
|
* initialized.
|
||||||
* @throws IllegalArgumentException if settings are not supported.
|
* @throws IllegalArgumentException if params are not supported.
|
||||||
*/
|
*/
|
||||||
public void setSyncSettings(@NonNull SyncSettings settings) {
|
public void setSyncParams(@NonNull SyncParams params) {
|
||||||
synchronized(mAudioLock) {
|
synchronized(mAudioLock) {
|
||||||
mPlaybackRate = native_setSyncSettings(settings);;
|
mPlaybackRate = native_setSyncParams(params);;
|
||||||
}
|
}
|
||||||
if (mPlaybackRate != 0.0 && mAudioThread != null) {
|
if (mPlaybackRate != 0.0 && mAudioThread != null) {
|
||||||
postRenderAudio(0);
|
postRenderAudio(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private native float native_setSyncSettings(@NonNull SyncSettings settings);
|
private native float native_setSyncParams(@NonNull SyncParams params);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the A/V sync mode.
|
* Gets the A/V sync mode.
|
||||||
*
|
*
|
||||||
* @return the A/V sync settings
|
* @return the A/V sync params
|
||||||
*
|
*
|
||||||
* @throws IllegalStateException if the internal player engine has not been
|
* @throws IllegalStateException if the internal player engine has not been
|
||||||
* initialized.
|
* initialized.
|
||||||
*/
|
*/
|
||||||
@NonNull
|
@NonNull
|
||||||
public native SyncSettings getSyncSettings();
|
public native SyncParams getSyncParams();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Flushes all buffers from the sync object.
|
* Flushes all buffers from the sync object.
|
||||||
@@ -567,23 +565,20 @@ final public class MediaSync {
|
|||||||
* to the client via registered callback.
|
* to the client via registered callback.
|
||||||
* @param bufferIndex the buffer index used to identify audioData. It will be returned to
|
* @param bufferIndex the buffer index used to identify audioData. It will be returned to
|
||||||
* the client along with audioData. This helps applications to keep track of audioData.
|
* the client along with audioData. This helps applications to keep track of audioData.
|
||||||
* @param sizeInBytes number of bytes to queue.
|
|
||||||
* @param presentationTimeUs the presentation timestamp in microseconds for the first frame
|
* @param presentationTimeUs the presentation timestamp in microseconds for the first frame
|
||||||
* in the buffer.
|
* in the buffer.
|
||||||
* @throws IllegalStateException if audio track is not set or internal configureation
|
* @throws IllegalStateException if audio track is not set or internal configureation
|
||||||
* has not been done correctly.
|
* has not been done correctly.
|
||||||
*/
|
*/
|
||||||
public void queueAudio(
|
public void queueAudio(
|
||||||
@NonNull ByteBuffer audioData, int bufferIndex, int sizeInBytes,
|
@NonNull ByteBuffer audioData, int bufferIndex, long presentationTimeUs) {
|
||||||
long presentationTimeUs) {
|
|
||||||
if (mAudioTrack == null || mAudioThread == null) {
|
if (mAudioTrack == null || mAudioThread == null) {
|
||||||
throw new IllegalStateException(
|
throw new IllegalStateException(
|
||||||
"AudioTrack is NOT set or audio thread is not created");
|
"AudioTrack is NOT set or audio thread is not created");
|
||||||
}
|
}
|
||||||
|
|
||||||
synchronized(mAudioLock) {
|
synchronized(mAudioLock) {
|
||||||
mAudioBuffers.add(new AudioBuffer(
|
mAudioBuffers.add(new AudioBuffer(audioData, bufferIndex, presentationTimeUs));
|
||||||
audioData, bufferIndex, sizeInBytes, presentationTimeUs));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mPlaybackRate != 0.0) {
|
if (mPlaybackRate != 0.0) {
|
||||||
@@ -605,18 +600,19 @@ final public class MediaSync {
|
|||||||
}
|
}
|
||||||
|
|
||||||
AudioBuffer audioBuffer = mAudioBuffers.get(0);
|
AudioBuffer audioBuffer = mAudioBuffers.get(0);
|
||||||
|
int size = audioBuffer.mByteBuffer.remaining();
|
||||||
int sizeWritten = mAudioTrack.write(
|
int sizeWritten = mAudioTrack.write(
|
||||||
audioBuffer.mByteBuffer,
|
audioBuffer.mByteBuffer,
|
||||||
audioBuffer.mSizeInBytes,
|
size,
|
||||||
AudioTrack.WRITE_NON_BLOCKING);
|
AudioTrack.WRITE_NON_BLOCKING);
|
||||||
if (sizeWritten > 0) {
|
if (sizeWritten > 0) {
|
||||||
if (audioBuffer.mPresentationTimeUs != -1) {
|
if (audioBuffer.mPresentationTimeUs != -1) {
|
||||||
native_updateQueuedAudioData(
|
native_updateQueuedAudioData(
|
||||||
audioBuffer.mSizeInBytes, audioBuffer.mPresentationTimeUs);
|
size, audioBuffer.mPresentationTimeUs);
|
||||||
audioBuffer.mPresentationTimeUs = -1;
|
audioBuffer.mPresentationTimeUs = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sizeWritten == audioBuffer.mSizeInBytes) {
|
if (sizeWritten == size) {
|
||||||
postReturnByteBuffer(audioBuffer);
|
postReturnByteBuffer(audioBuffer);
|
||||||
mAudioBuffers.remove(0);
|
mAudioBuffers.remove(0);
|
||||||
if (!mAudioBuffers.isEmpty()) {
|
if (!mAudioBuffers.isEmpty()) {
|
||||||
@@ -624,8 +620,6 @@ final public class MediaSync {
|
|||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
audioBuffer.mSizeInBytes -= sizeWritten;
|
|
||||||
}
|
}
|
||||||
long pendingTimeMs = TimeUnit.MICROSECONDS.toMillis(
|
long pendingTimeMs = TimeUnit.MICROSECONDS.toMillis(
|
||||||
native_getPlayTimeForPendingAudioFrames());
|
native_getPlayTimeForPendingAudioFrames());
|
||||||
|
|||||||
@@ -22,21 +22,21 @@ import java.lang.annotation.RetentionPolicy;
|
|||||||
import android.annotation.IntDef;
|
import android.annotation.IntDef;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Structure for common playback settings.
|
* Structure for common playback params.
|
||||||
*
|
*
|
||||||
* Used by {@link AudioTrack} {@link AudioTrack#getPlaybackSettings()} and
|
* Used by {@link AudioTrack} {@link AudioTrack#getPlaybackParams()} and
|
||||||
* {@link AudioTrack#setPlaybackSettings(PlaybackSettings)}
|
* {@link AudioTrack#setPlaybackParams(PlaybackParams)}
|
||||||
* to control playback behavior.
|
* to control playback behavior.
|
||||||
* <p> <strong>audio fallback mode:</strong>
|
* <p> <strong>audio fallback mode:</strong>
|
||||||
* select out-of-range parameter handling.
|
* select out-of-range parameter handling.
|
||||||
* <ul>
|
* <ul>
|
||||||
* <li> {@link PlaybackSettings#AUDIO_FALLBACK_MODE_DEFAULT}:
|
* <li> {@link PlaybackParams#AUDIO_FALLBACK_MODE_DEFAULT}:
|
||||||
* System will determine best handling. </li>
|
* System will determine best handling. </li>
|
||||||
* <li> {@link PlaybackSettings#AUDIO_FALLBACK_MODE_MUTE}:
|
* <li> {@link PlaybackParams#AUDIO_FALLBACK_MODE_MUTE}:
|
||||||
* Play silence for settings normally out of range.</li>
|
* Play silence for params normally out of range.</li>
|
||||||
* <li> {@link PlaybackSettings#AUDIO_FALLBACK_MODE_FAIL}:
|
* <li> {@link PlaybackParams#AUDIO_FALLBACK_MODE_FAIL}:
|
||||||
* Return {@link java.lang.IllegalArgumentException} from
|
* Return {@link java.lang.IllegalArgumentException} from
|
||||||
* <code>AudioTrack.setPlaybackSettings(PlaybackSettings)</code>.</li>
|
* <code>AudioTrack.setPlaybackParams(PlaybackParams)</code>.</li>
|
||||||
* </ul>
|
* </ul>
|
||||||
* <p> <strong>pitch:</strong> increases or decreases the tonal frequency of the audio content.
|
* <p> <strong>pitch:</strong> increases or decreases the tonal frequency of the audio content.
|
||||||
* It is expressed as a multiplicative factor, where normal pitch is 1.0f.
|
* It is expressed as a multiplicative factor, where normal pitch is 1.0f.
|
||||||
@@ -52,7 +52,7 @@ import android.annotation.IntDef;
|
|||||||
* similar to {@link AudioTrack#setPlaybackRate(int)}.</li>
|
* similar to {@link AudioTrack#setPlaybackRate(int)}.</li>
|
||||||
* </ul>
|
* </ul>
|
||||||
*/
|
*/
|
||||||
public final class PlaybackSettings {
|
public final class PlaybackParams {
|
||||||
/** @hide */
|
/** @hide */
|
||||||
@IntDef(
|
@IntDef(
|
||||||
value = {
|
value = {
|
||||||
@@ -81,14 +81,14 @@ public final class PlaybackSettings {
|
|||||||
/** @hide */
|
/** @hide */
|
||||||
public static final int AUDIO_STRETCH_MODE_VOICE = 1;
|
public static final int AUDIO_STRETCH_MODE_VOICE = 1;
|
||||||
|
|
||||||
// flags to indicate which settings are actually set
|
// flags to indicate which params are actually set
|
||||||
private static final int SET_SPEED = 1 << 0;
|
private static final int SET_SPEED = 1 << 0;
|
||||||
private static final int SET_PITCH = 1 << 1;
|
private static final int SET_PITCH = 1 << 1;
|
||||||
private static final int SET_AUDIO_FALLBACK_MODE = 1 << 2;
|
private static final int SET_AUDIO_FALLBACK_MODE = 1 << 2;
|
||||||
private static final int SET_AUDIO_STRETCH_MODE = 1 << 3;
|
private static final int SET_AUDIO_STRETCH_MODE = 1 << 3;
|
||||||
private int mSet = 0;
|
private int mSet = 0;
|
||||||
|
|
||||||
// settings
|
// params
|
||||||
private int mAudioFallbackMode = AUDIO_FALLBACK_MODE_DEFAULT;
|
private int mAudioFallbackMode = AUDIO_FALLBACK_MODE_DEFAULT;
|
||||||
private int mAudioStretchMode = AUDIO_STRETCH_MODE_DEFAULT;
|
private int mAudioStretchMode = AUDIO_STRETCH_MODE_DEFAULT;
|
||||||
private float mPitch = 1.0f;
|
private float mPitch = 1.0f;
|
||||||
@@ -99,9 +99,9 @@ public final class PlaybackSettings {
|
|||||||
* Otherwise a {@link java.lang.IllegalArgumentException} exception
|
* Otherwise a {@link java.lang.IllegalArgumentException} exception
|
||||||
* is raised when getting those properties
|
* is raised when getting those properties
|
||||||
* which have defaults but have never been set.
|
* which have defaults but have never been set.
|
||||||
* @return this <code>PlaybackSettings</code> instance.
|
* @return this <code>PlaybackParams</code> instance.
|
||||||
*/
|
*/
|
||||||
public PlaybackSettings allowDefaults() {
|
public PlaybackParams allowDefaults() {
|
||||||
mSet |= SET_AUDIO_FALLBACK_MODE | SET_AUDIO_STRETCH_MODE | SET_PITCH | SET_SPEED;
|
mSet |= SET_AUDIO_FALLBACK_MODE | SET_AUDIO_STRETCH_MODE | SET_PITCH | SET_SPEED;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
@@ -109,9 +109,9 @@ public final class PlaybackSettings {
|
|||||||
/**
|
/**
|
||||||
* Sets the audio fallback mode.
|
* Sets the audio fallback mode.
|
||||||
* @param audioFallbackMode
|
* @param audioFallbackMode
|
||||||
* @return this <code>PlaybackSettings</code> instance.
|
* @return this <code>PlaybackParams</code> instance.
|
||||||
*/
|
*/
|
||||||
public PlaybackSettings setAudioFallbackMode(@AudioFallbackMode int audioFallbackMode) {
|
public PlaybackParams setAudioFallbackMode(@AudioFallbackMode int audioFallbackMode) {
|
||||||
mAudioFallbackMode = audioFallbackMode;
|
mAudioFallbackMode = audioFallbackMode;
|
||||||
mSet |= SET_AUDIO_FALLBACK_MODE;
|
mSet |= SET_AUDIO_FALLBACK_MODE;
|
||||||
return this;
|
return this;
|
||||||
@@ -133,9 +133,9 @@ public final class PlaybackSettings {
|
|||||||
* @hide
|
* @hide
|
||||||
* Sets the audio stretch mode.
|
* Sets the audio stretch mode.
|
||||||
* @param audioStretchMode
|
* @param audioStretchMode
|
||||||
* @return this <code>PlaybackSettings</code> instance.
|
* @return this <code>PlaybackParams</code> instance.
|
||||||
*/
|
*/
|
||||||
public PlaybackSettings setAudioStretchMode(@AudioStretchMode int audioStretchMode) {
|
public PlaybackParams setAudioStretchMode(@AudioStretchMode int audioStretchMode) {
|
||||||
mAudioStretchMode = audioStretchMode;
|
mAudioStretchMode = audioStretchMode;
|
||||||
mSet |= SET_AUDIO_STRETCH_MODE;
|
mSet |= SET_AUDIO_STRETCH_MODE;
|
||||||
return this;
|
return this;
|
||||||
@@ -157,9 +157,9 @@ public final class PlaybackSettings {
|
|||||||
/**
|
/**
|
||||||
* Sets the pitch factor.
|
* Sets the pitch factor.
|
||||||
* @param pitch
|
* @param pitch
|
||||||
* @return this <code>PlaybackSettings</code> instance.
|
* @return this <code>PlaybackParams</code> instance.
|
||||||
*/
|
*/
|
||||||
public PlaybackSettings setPitch(float pitch) {
|
public PlaybackParams setPitch(float pitch) {
|
||||||
mPitch = pitch;
|
mPitch = pitch;
|
||||||
mSet |= SET_PITCH;
|
mSet |= SET_PITCH;
|
||||||
return this;
|
return this;
|
||||||
@@ -180,9 +180,9 @@ public final class PlaybackSettings {
|
|||||||
/**
|
/**
|
||||||
* Sets the speed factor.
|
* Sets the speed factor.
|
||||||
* @param speed
|
* @param speed
|
||||||
* @return this <code>PlaybackSettings</code> instance.
|
* @return this <code>PlaybackParams</code> instance.
|
||||||
*/
|
*/
|
||||||
public PlaybackSettings setSpeed(float speed) {
|
public PlaybackParams setSpeed(float speed) {
|
||||||
mSpeed = speed;
|
mSpeed = speed;
|
||||||
mSet |= SET_SPEED;
|
mSet |= SET_SPEED;
|
||||||
return this;
|
return this;
|
||||||
@@ -22,31 +22,31 @@ import java.lang.annotation.RetentionPolicy;
|
|||||||
import android.annotation.IntDef;
|
import android.annotation.IntDef;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Structure for common A/V sync settings.
|
* Structure for common A/V sync params.
|
||||||
*
|
*
|
||||||
* Used by {@link MediaSync} {link MediaSync#getSyncSettings()} and
|
* Used by {@link MediaSync} {link MediaSync#getSyncParams()} and
|
||||||
* {link MediaSync#setSyncSettings(SyncSettings)}
|
* {link MediaSync#setSyncParams(SyncParams)}
|
||||||
* to control A/V sync behavior.
|
* to control A/V sync behavior.
|
||||||
* <p> <strong>audio adjust mode:</strong>
|
* <p> <strong>audio adjust mode:</strong>
|
||||||
* select handling of audio track when changing playback speed due to sync.
|
* select handling of audio track when changing playback speed due to sync.
|
||||||
* <ul>
|
* <ul>
|
||||||
* <li> {@link SyncSettings#AUDIO_ADJUST_MODE_DEFAULT}:
|
* <li> {@link SyncParams#AUDIO_ADJUST_MODE_DEFAULT}:
|
||||||
* System will determine best handling. </li>
|
* System will determine best handling. </li>
|
||||||
* <li> {@link SyncSettings#AUDIO_ADJUST_MODE_STRETCH}:
|
* <li> {@link SyncParams#AUDIO_ADJUST_MODE_STRETCH}:
|
||||||
* Change the speed of audio playback without altering its pitch.</li>
|
* Change the speed of audio playback without altering its pitch.</li>
|
||||||
* <li> {@link SyncSettings#AUDIO_ADJUST_MODE_RESAMPLE}:
|
* <li> {@link SyncParams#AUDIO_ADJUST_MODE_RESAMPLE}:
|
||||||
* Change the speed of audio playback by resampling the audio.</li>
|
* Change the speed of audio playback by resampling the audio.</li>
|
||||||
* </ul>
|
* </ul>
|
||||||
* <p> <strong>sync source:</strong> select
|
* <p> <strong>sync source:</strong> select
|
||||||
* clock source for sync.
|
* clock source for sync.
|
||||||
* <ul>
|
* <ul>
|
||||||
* <li> {@link SyncSettings#SYNC_SOURCE_DEFAULT}:
|
* <li> {@link SyncParams#SYNC_SOURCE_DEFAULT}:
|
||||||
* System will determine best selection.</li>
|
* System will determine best selection.</li>
|
||||||
* <li> {@link SyncSettings#SYNC_SOURCE_SYSTEM_CLOCK}:
|
* <li> {@link SyncParams#SYNC_SOURCE_SYSTEM_CLOCK}:
|
||||||
* Use system clock for sync source.</li>
|
* Use system clock for sync source.</li>
|
||||||
* <li> {@link SyncSettings#SYNC_SOURCE_AUDIO}:
|
* <li> {@link SyncParams#SYNC_SOURCE_AUDIO}:
|
||||||
* Use audio track for sync source.</li>
|
* Use audio track for sync source.</li>
|
||||||
* <li> {@link SyncSettings#SYNC_SOURCE_VSYNC}:
|
* <li> {@link SyncParams#SYNC_SOURCE_VSYNC}:
|
||||||
* Syncronize media to vsync.</li>
|
* Syncronize media to vsync.</li>
|
||||||
* </ul>
|
* </ul>
|
||||||
* <p> <strong>tolerance:</strong> specifies the amount of allowed playback rate
|
* <p> <strong>tolerance:</strong> specifies the amount of allowed playback rate
|
||||||
@@ -55,7 +55,7 @@ import android.annotation.IntDef;
|
|||||||
* <p> <strong>frameRate:</strong> initial hint for video frame rate. Used when
|
* <p> <strong>frameRate:</strong> initial hint for video frame rate. Used when
|
||||||
* sync source is vsync.
|
* sync source is vsync.
|
||||||
*/
|
*/
|
||||||
public final class SyncSettings {
|
public final class SyncParams {
|
||||||
/** @hide */
|
/** @hide */
|
||||||
@IntDef(
|
@IntDef(
|
||||||
value = {
|
value = {
|
||||||
@@ -155,14 +155,14 @@ public final class SyncSettings {
|
|||||||
*/
|
*/
|
||||||
public static final int AUDIO_ADJUST_MODE_RESAMPLE = 2;
|
public static final int AUDIO_ADJUST_MODE_RESAMPLE = 2;
|
||||||
|
|
||||||
// flags to indicate which settings are actually set
|
// flags to indicate which params are actually set
|
||||||
private static final int SET_SYNC_SOURCE = 1 << 0;
|
private static final int SET_SYNC_SOURCE = 1 << 0;
|
||||||
private static final int SET_AUDIO_ADJUST_MODE = 1 << 1;
|
private static final int SET_AUDIO_ADJUST_MODE = 1 << 1;
|
||||||
private static final int SET_TOLERANCE = 1 << 2;
|
private static final int SET_TOLERANCE = 1 << 2;
|
||||||
private static final int SET_FRAME_RATE = 1 << 3;
|
private static final int SET_FRAME_RATE = 1 << 3;
|
||||||
private int mSet = 0;
|
private int mSet = 0;
|
||||||
|
|
||||||
// settings
|
// params
|
||||||
private int mAudioAdjustMode = AUDIO_ADJUST_MODE_STRETCH;
|
private int mAudioAdjustMode = AUDIO_ADJUST_MODE_STRETCH;
|
||||||
private int mSyncSource = SYNC_SOURCE_DEFAULT;
|
private int mSyncSource = SYNC_SOURCE_DEFAULT;
|
||||||
private float mTolerance = 0.f;
|
private float mTolerance = 0.f;
|
||||||
@@ -173,9 +173,9 @@ public final class SyncSettings {
|
|||||||
* Otherwise a {@link java.lang.IllegalArgumentException} exception
|
* Otherwise a {@link java.lang.IllegalArgumentException} exception
|
||||||
* is raised when getting those properties
|
* is raised when getting those properties
|
||||||
* which have defaults but have never been set.
|
* which have defaults but have never been set.
|
||||||
* @return this <code>SyncSettings</code> instance.
|
* @return this <code>SyncParams</code> instance.
|
||||||
*/
|
*/
|
||||||
public SyncSettings allowDefaults() {
|
public SyncParams allowDefaults() {
|
||||||
mSet |= SET_SYNC_SOURCE | SET_AUDIO_ADJUST_MODE | SET_TOLERANCE;
|
mSet |= SET_SYNC_SOURCE | SET_AUDIO_ADJUST_MODE | SET_TOLERANCE;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
@@ -183,9 +183,9 @@ public final class SyncSettings {
|
|||||||
/**
|
/**
|
||||||
* Sets the audio adjust mode.
|
* Sets the audio adjust mode.
|
||||||
* @param audioAdjustMode
|
* @param audioAdjustMode
|
||||||
* @return this <code>SyncSettings</code> instance.
|
* @return this <code>SyncParams</code> instance.
|
||||||
*/
|
*/
|
||||||
public SyncSettings setAudioAdjustMode(@AudioAdjustMode int audioAdjustMode) {
|
public SyncParams setAudioAdjustMode(@AudioAdjustMode int audioAdjustMode) {
|
||||||
mAudioAdjustMode = audioAdjustMode;
|
mAudioAdjustMode = audioAdjustMode;
|
||||||
mSet |= SET_AUDIO_ADJUST_MODE;
|
mSet |= SET_AUDIO_ADJUST_MODE;
|
||||||
return this;
|
return this;
|
||||||
@@ -206,9 +206,9 @@ public final class SyncSettings {
|
|||||||
/**
|
/**
|
||||||
* Sets the sync source.
|
* Sets the sync source.
|
||||||
* @param syncSource
|
* @param syncSource
|
||||||
* @return this <code>SyncSettings</code> instance.
|
* @return this <code>SyncParams</code> instance.
|
||||||
*/
|
*/
|
||||||
public SyncSettings setSyncSource(@SyncSource int syncSource) {
|
public SyncParams setSyncSource(@SyncSource int syncSource) {
|
||||||
mSyncSource = syncSource;
|
mSyncSource = syncSource;
|
||||||
mSet |= SET_SYNC_SOURCE;
|
mSet |= SET_SYNC_SOURCE;
|
||||||
return this;
|
return this;
|
||||||
@@ -231,9 +231,9 @@ public final class SyncSettings {
|
|||||||
* @param tolerance A non-negative number representing
|
* @param tolerance A non-negative number representing
|
||||||
* the maximum deviation of the playback rate from the playback rate
|
* the maximum deviation of the playback rate from the playback rate
|
||||||
* set. ({@code abs(actual_rate - set_rate) / set_rate})
|
* set. ({@code abs(actual_rate - set_rate) / set_rate})
|
||||||
* @return this <code>SyncSettings</code> instance.
|
* @return this <code>SyncParams</code> instance.
|
||||||
*/
|
*/
|
||||||
public SyncSettings setTolerance(float tolerance) {
|
public SyncParams setTolerance(float tolerance) {
|
||||||
mTolerance = tolerance;
|
mTolerance = tolerance;
|
||||||
mSet |= SET_TOLERANCE;
|
mSet |= SET_TOLERANCE;
|
||||||
return this;
|
return this;
|
||||||
@@ -257,9 +257,9 @@ public final class SyncSettings {
|
|||||||
* Sets the video frame rate hint to be used. By default the frame rate is unspecified.
|
* Sets the video frame rate hint to be used. By default the frame rate is unspecified.
|
||||||
* @param frameRate A non-negative number used as an initial hint on
|
* @param frameRate A non-negative number used as an initial hint on
|
||||||
* the video frame rate to be used when using vsync as the sync source.
|
* the video frame rate to be used when using vsync as the sync source.
|
||||||
* @return this <code>SyncSettings</code> instance.
|
* @return this <code>SyncParams</code> instance.
|
||||||
*/
|
*/
|
||||||
public SyncSettings setFrameRate(float frameRate) {
|
public SyncParams setFrameRate(float frameRate) {
|
||||||
mFrameRate = frameRate;
|
mFrameRate = frameRate;
|
||||||
mSet |= SET_FRAME_RATE;
|
mSet |= SET_FRAME_RATE;
|
||||||
return this;
|
return this;
|
||||||
@@ -20,7 +20,7 @@ LOCAL_SRC_FILES:= \
|
|||||||
android_media_MediaScanner.cpp \
|
android_media_MediaScanner.cpp \
|
||||||
android_media_MediaSync.cpp \
|
android_media_MediaSync.cpp \
|
||||||
android_media_ResampleInputStream.cpp \
|
android_media_ResampleInputStream.cpp \
|
||||||
android_media_SyncSettings.cpp \
|
android_media_SyncParams.cpp \
|
||||||
android_media_Utils.cpp \
|
android_media_Utils.cpp \
|
||||||
android_mtp_MtpDatabase.cpp \
|
android_mtp_MtpDatabase.cpp \
|
||||||
android_mtp_MtpDevice.cpp \
|
android_mtp_MtpDevice.cpp \
|
||||||
|
|||||||
@@ -38,8 +38,8 @@
|
|||||||
#include "utils/KeyedVector.h"
|
#include "utils/KeyedVector.h"
|
||||||
#include "utils/String8.h"
|
#include "utils/String8.h"
|
||||||
#include "android_media_MediaDataSource.h"
|
#include "android_media_MediaDataSource.h"
|
||||||
#include "android_media_PlaybackSettings.h"
|
#include "android_media_PlaybackParams.h"
|
||||||
#include "android_media_SyncSettings.h"
|
#include "android_media_SyncParams.h"
|
||||||
#include "android_media_Utils.h"
|
#include "android_media_Utils.h"
|
||||||
|
|
||||||
#include "android_os_Parcel.h"
|
#include "android_os_Parcel.h"
|
||||||
@@ -69,8 +69,8 @@ struct fields_t {
|
|||||||
};
|
};
|
||||||
static fields_t fields;
|
static fields_t fields;
|
||||||
|
|
||||||
static PlaybackSettings::fields_t gPlaybackSettingsFields;
|
static PlaybackParams::fields_t gPlaybackParamsFields;
|
||||||
static SyncSettings::fields_t gSyncSettingsFields;
|
static SyncParams::fields_t gSyncParamsFields;
|
||||||
|
|
||||||
static Mutex sLock;
|
static Mutex sLock;
|
||||||
|
|
||||||
@@ -428,7 +428,7 @@ android_media_MediaPlayer_isPlaying(JNIEnv *env, jobject thiz)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
android_media_MediaPlayer_setPlaybackSettings(JNIEnv *env, jobject thiz, jobject settings)
|
android_media_MediaPlayer_setPlaybackParams(JNIEnv *env, jobject thiz, jobject params)
|
||||||
{
|
{
|
||||||
sp<MediaPlayer> mp = getMediaPlayer(env, thiz);
|
sp<MediaPlayer> mp = getMediaPlayer(env, thiz);
|
||||||
if (mp == NULL) {
|
if (mp == NULL) {
|
||||||
@@ -436,32 +436,32 @@ android_media_MediaPlayer_setPlaybackSettings(JNIEnv *env, jobject thiz, jobject
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
PlaybackSettings pbs;
|
PlaybackParams pbp;
|
||||||
pbs.fillFromJobject(env, gPlaybackSettingsFields, settings);
|
pbp.fillFromJobject(env, gPlaybackParamsFields, params);
|
||||||
ALOGV("setPlaybackSettings: %d:%f %d:%f %d:%u %d:%u",
|
ALOGV("setPlaybackParams: %d:%f %d:%f %d:%u %d:%u",
|
||||||
pbs.speedSet, pbs.audioRate.mSpeed,
|
pbp.speedSet, pbp.audioRate.mSpeed,
|
||||||
pbs.pitchSet, pbs.audioRate.mPitch,
|
pbp.pitchSet, pbp.audioRate.mPitch,
|
||||||
pbs.audioFallbackModeSet, pbs.audioRate.mFallbackMode,
|
pbp.audioFallbackModeSet, pbp.audioRate.mFallbackMode,
|
||||||
pbs.audioStretchModeSet, pbs.audioRate.mStretchMode);
|
pbp.audioStretchModeSet, pbp.audioRate.mStretchMode);
|
||||||
|
|
||||||
AudioPlaybackRate rate;
|
AudioPlaybackRate rate;
|
||||||
status_t err = mp->getPlaybackSettings(&rate);
|
status_t err = mp->getPlaybackSettings(&rate);
|
||||||
if (err == OK) {
|
if (err == OK) {
|
||||||
bool updatedRate = false;
|
bool updatedRate = false;
|
||||||
if (pbs.speedSet) {
|
if (pbp.speedSet) {
|
||||||
rate.mSpeed = pbs.audioRate.mSpeed;
|
rate.mSpeed = pbp.audioRate.mSpeed;
|
||||||
updatedRate = true;
|
updatedRate = true;
|
||||||
}
|
}
|
||||||
if (pbs.pitchSet) {
|
if (pbp.pitchSet) {
|
||||||
rate.mPitch = pbs.audioRate.mPitch;
|
rate.mPitch = pbp.audioRate.mPitch;
|
||||||
updatedRate = true;
|
updatedRate = true;
|
||||||
}
|
}
|
||||||
if (pbs.audioFallbackModeSet) {
|
if (pbp.audioFallbackModeSet) {
|
||||||
rate.mFallbackMode = pbs.audioRate.mFallbackMode;
|
rate.mFallbackMode = pbp.audioRate.mFallbackMode;
|
||||||
updatedRate = true;
|
updatedRate = true;
|
||||||
}
|
}
|
||||||
if (pbs.audioStretchModeSet) {
|
if (pbp.audioStretchModeSet) {
|
||||||
rate.mStretchMode = pbs.audioRate.mStretchMode;
|
rate.mStretchMode = pbp.audioRate.mStretchMode;
|
||||||
updatedRate = true;
|
updatedRate = true;
|
||||||
}
|
}
|
||||||
if (updatedRate) {
|
if (updatedRate) {
|
||||||
@@ -474,7 +474,7 @@ android_media_MediaPlayer_setPlaybackSettings(JNIEnv *env, jobject thiz, jobject
|
|||||||
}
|
}
|
||||||
|
|
||||||
static jobject
|
static jobject
|
||||||
android_media_MediaPlayer_getPlaybackSettings(JNIEnv *env, jobject thiz)
|
android_media_MediaPlayer_getPlaybackParams(JNIEnv *env, jobject thiz)
|
||||||
{
|
{
|
||||||
sp<MediaPlayer> mp = getMediaPlayer(env, thiz);
|
sp<MediaPlayer> mp = getMediaPlayer(env, thiz);
|
||||||
if (mp == NULL) {
|
if (mp == NULL) {
|
||||||
@@ -482,24 +482,24 @@ android_media_MediaPlayer_getPlaybackSettings(JNIEnv *env, jobject thiz)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
PlaybackSettings pbs;
|
PlaybackParams pbp;
|
||||||
AudioPlaybackRate &audioRate = pbs.audioRate;
|
AudioPlaybackRate &audioRate = pbp.audioRate;
|
||||||
process_media_player_call(
|
process_media_player_call(
|
||||||
env, thiz, mp->getPlaybackSettings(&audioRate),
|
env, thiz, mp->getPlaybackSettings(&audioRate),
|
||||||
"java/lang/IllegalStateException", "unexpected error");
|
"java/lang/IllegalStateException", "unexpected error");
|
||||||
ALOGV("getPlaybackSettings: %f %f %d %d",
|
ALOGV("getPlaybackSettings: %f %f %d %d",
|
||||||
audioRate.mSpeed, audioRate.mPitch, audioRate.mFallbackMode, audioRate.mStretchMode);
|
audioRate.mSpeed, audioRate.mPitch, audioRate.mFallbackMode, audioRate.mStretchMode);
|
||||||
|
|
||||||
pbs.speedSet = true;
|
pbp.speedSet = true;
|
||||||
pbs.pitchSet = true;
|
pbp.pitchSet = true;
|
||||||
pbs.audioFallbackModeSet = true;
|
pbp.audioFallbackModeSet = true;
|
||||||
pbs.audioStretchModeSet = true;
|
pbp.audioStretchModeSet = true;
|
||||||
|
|
||||||
return pbs.asJobject(env, gPlaybackSettingsFields);
|
return pbp.asJobject(env, gPlaybackParamsFields);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
android_media_MediaPlayer_setSyncSettings(JNIEnv *env, jobject thiz, jobject settings)
|
android_media_MediaPlayer_setSyncParams(JNIEnv *env, jobject thiz, jobject params)
|
||||||
{
|
{
|
||||||
sp<MediaPlayer> mp = getMediaPlayer(env, thiz);
|
sp<MediaPlayer> mp = getMediaPlayer(env, thiz);
|
||||||
if (mp == NULL) {
|
if (mp == NULL) {
|
||||||
@@ -507,33 +507,33 @@ android_media_MediaPlayer_setSyncSettings(JNIEnv *env, jobject thiz, jobject set
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
SyncSettings scs;
|
SyncParams scp;
|
||||||
scs.fillFromJobject(env, gSyncSettingsFields, settings);
|
scp.fillFromJobject(env, gSyncParamsFields, params);
|
||||||
ALOGV("setSyncSettings: %d:%d %d:%d %d:%f %d:%f",
|
ALOGV("setSyncParams: %d:%d %d:%d %d:%f %d:%f",
|
||||||
scs.syncSourceSet, scs.sync.mSource,
|
scp.syncSourceSet, scp.sync.mSource,
|
||||||
scs.audioAdjustModeSet, scs.sync.mAudioAdjustMode,
|
scp.audioAdjustModeSet, scp.sync.mAudioAdjustMode,
|
||||||
scs.toleranceSet, scs.sync.mTolerance,
|
scp.toleranceSet, scp.sync.mTolerance,
|
||||||
scs.frameRateSet, scs.frameRate);
|
scp.frameRateSet, scp.frameRate);
|
||||||
|
|
||||||
AVSyncSettings avsync;
|
AVSyncSettings avsync;
|
||||||
float videoFrameRate;
|
float videoFrameRate;
|
||||||
status_t err = mp->getSyncSettings(&avsync, &videoFrameRate);
|
status_t err = mp->getSyncSettings(&avsync, &videoFrameRate);
|
||||||
if (err == OK) {
|
if (err == OK) {
|
||||||
bool updatedSync = scs.frameRateSet;
|
bool updatedSync = scp.frameRateSet;
|
||||||
if (scs.syncSourceSet) {
|
if (scp.syncSourceSet) {
|
||||||
avsync.mSource = scs.sync.mSource;
|
avsync.mSource = scp.sync.mSource;
|
||||||
updatedSync = true;
|
updatedSync = true;
|
||||||
}
|
}
|
||||||
if (scs.audioAdjustModeSet) {
|
if (scp.audioAdjustModeSet) {
|
||||||
avsync.mAudioAdjustMode = scs.sync.mAudioAdjustMode;
|
avsync.mAudioAdjustMode = scp.sync.mAudioAdjustMode;
|
||||||
updatedSync = true;
|
updatedSync = true;
|
||||||
}
|
}
|
||||||
if (scs.toleranceSet) {
|
if (scp.toleranceSet) {
|
||||||
avsync.mTolerance = scs.sync.mTolerance;
|
avsync.mTolerance = scp.sync.mTolerance;
|
||||||
updatedSync = true;
|
updatedSync = true;
|
||||||
}
|
}
|
||||||
if (updatedSync) {
|
if (updatedSync) {
|
||||||
err = mp->setSyncSettings(avsync, scs.frameRateSet ? scs.frameRate : -1.f);
|
err = mp->setSyncSettings(avsync, scp.frameRateSet ? scp.frameRate : -1.f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
process_media_player_call(
|
process_media_player_call(
|
||||||
@@ -542,7 +542,7 @@ android_media_MediaPlayer_setSyncSettings(JNIEnv *env, jobject thiz, jobject set
|
|||||||
}
|
}
|
||||||
|
|
||||||
static jobject
|
static jobject
|
||||||
android_media_MediaPlayer_getSyncSettings(JNIEnv *env, jobject thiz)
|
android_media_MediaPlayer_getSyncParams(JNIEnv *env, jobject thiz)
|
||||||
{
|
{
|
||||||
sp<MediaPlayer> mp = getMediaPlayer(env, thiz);
|
sp<MediaPlayer> mp = getMediaPlayer(env, thiz);
|
||||||
if (mp == NULL) {
|
if (mp == NULL) {
|
||||||
@@ -550,30 +550,30 @@ android_media_MediaPlayer_getSyncSettings(JNIEnv *env, jobject thiz)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
SyncSettings scs;
|
SyncParams scp;
|
||||||
scs.frameRate = -1.f;
|
scp.frameRate = -1.f;
|
||||||
process_media_player_call(
|
process_media_player_call(
|
||||||
env, thiz, mp->getSyncSettings(&scs.sync, &scs.frameRate),
|
env, thiz, mp->getSyncSettings(&scp.sync, &scp.frameRate),
|
||||||
"java/lang/IllegalStateException", "unexpected error");
|
"java/lang/IllegalStateException", "unexpected error");
|
||||||
|
|
||||||
ALOGV("getSyncSettings: %d %d %f %f",
|
ALOGV("getSyncSettings: %d %d %f %f",
|
||||||
scs.sync.mSource, scs.sync.mAudioAdjustMode, scs.sync.mTolerance, scs.frameRate);
|
scp.sync.mSource, scp.sync.mAudioAdjustMode, scp.sync.mTolerance, scp.frameRate);
|
||||||
|
|
||||||
// sanity check settings
|
// sanity check params
|
||||||
if (scs.sync.mSource >= AVSYNC_SOURCE_MAX
|
if (scp.sync.mSource >= AVSYNC_SOURCE_MAX
|
||||||
|| scs.sync.mAudioAdjustMode >= AVSYNC_AUDIO_ADJUST_MODE_MAX
|
|| scp.sync.mAudioAdjustMode >= AVSYNC_AUDIO_ADJUST_MODE_MAX
|
||||||
|| scs.sync.mTolerance < 0.f
|
|| scp.sync.mTolerance < 0.f
|
||||||
|| scs.sync.mTolerance >= AVSYNC_TOLERANCE_MAX) {
|
|| scp.sync.mTolerance >= AVSYNC_TOLERANCE_MAX) {
|
||||||
jniThrowException(env, "java/lang/IllegalStateException", NULL);
|
jniThrowException(env, "java/lang/IllegalStateException", NULL);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
scs.syncSourceSet = true;
|
scp.syncSourceSet = true;
|
||||||
scs.audioAdjustModeSet = true;
|
scp.audioAdjustModeSet = true;
|
||||||
scs.toleranceSet = true;
|
scp.toleranceSet = true;
|
||||||
scs.frameRateSet = scs.frameRate >= 0.f;
|
scp.frameRateSet = scp.frameRate >= 0.f;
|
||||||
|
|
||||||
return scs.asJobject(env, gSyncSettingsFields);
|
return scp.asJobject(env, gSyncParamsFields);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -860,8 +860,8 @@ android_media_MediaPlayer_native_init(JNIEnv *env)
|
|||||||
|
|
||||||
env->DeleteLocalRef(clazz);
|
env->DeleteLocalRef(clazz);
|
||||||
|
|
||||||
gPlaybackSettingsFields.init(env);
|
gPlaybackParamsFields.init(env);
|
||||||
gSyncSettingsFields.init(env);
|
gSyncParamsFields.init(env);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -1050,10 +1050,10 @@ static JNINativeMethod gMethods[] = {
|
|||||||
{"_stop", "()V", (void *)android_media_MediaPlayer_stop},
|
{"_stop", "()V", (void *)android_media_MediaPlayer_stop},
|
||||||
{"getVideoWidth", "()I", (void *)android_media_MediaPlayer_getVideoWidth},
|
{"getVideoWidth", "()I", (void *)android_media_MediaPlayer_getVideoWidth},
|
||||||
{"getVideoHeight", "()I", (void *)android_media_MediaPlayer_getVideoHeight},
|
{"getVideoHeight", "()I", (void *)android_media_MediaPlayer_getVideoHeight},
|
||||||
{"setPlaybackSettings", "(Landroid/media/PlaybackSettings;)V", (void *)android_media_MediaPlayer_setPlaybackSettings},
|
{"setPlaybackParams", "(Landroid/media/PlaybackParams;)V", (void *)android_media_MediaPlayer_setPlaybackParams},
|
||||||
{"getPlaybackSettings", "()Landroid/media/PlaybackSettings;", (void *)android_media_MediaPlayer_getPlaybackSettings},
|
{"getPlaybackParams", "()Landroid/media/PlaybackParams;", (void *)android_media_MediaPlayer_getPlaybackParams},
|
||||||
{"setSyncSettings", "(Landroid/media/SyncSettings;)V", (void *)android_media_MediaPlayer_setSyncSettings},
|
{"setSyncParams", "(Landroid/media/SyncParams;)V", (void *)android_media_MediaPlayer_setSyncParams},
|
||||||
{"getSyncSettings", "()Landroid/media/SyncSettings;", (void *)android_media_MediaPlayer_getSyncSettings},
|
{"getSyncParams", "()Landroid/media/SyncParams;", (void *)android_media_MediaPlayer_getSyncParams},
|
||||||
{"seekTo", "(I)V", (void *)android_media_MediaPlayer_seekTo},
|
{"seekTo", "(I)V", (void *)android_media_MediaPlayer_seekTo},
|
||||||
{"_pause", "()V", (void *)android_media_MediaPlayer_pause},
|
{"_pause", "()V", (void *)android_media_MediaPlayer_pause},
|
||||||
{"isPlaying", "()Z", (void *)android_media_MediaPlayer_isPlaying},
|
{"isPlaying", "()Z", (void *)android_media_MediaPlayer_isPlaying},
|
||||||
|
|||||||
@@ -21,8 +21,8 @@
|
|||||||
#include "android_media_MediaSync.h"
|
#include "android_media_MediaSync.h"
|
||||||
|
|
||||||
#include "android_media_AudioTrack.h"
|
#include "android_media_AudioTrack.h"
|
||||||
#include "android_media_PlaybackSettings.h"
|
#include "android_media_PlaybackParams.h"
|
||||||
#include "android_media_SyncSettings.h"
|
#include "android_media_SyncParams.h"
|
||||||
#include "android_runtime/AndroidRuntime.h"
|
#include "android_runtime/AndroidRuntime.h"
|
||||||
#include "android_runtime/android_view_Surface.h"
|
#include "android_runtime/android_view_Surface.h"
|
||||||
#include "jni.h"
|
#include "jni.h"
|
||||||
@@ -49,8 +49,8 @@ struct fields_t {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static fields_t gFields;
|
static fields_t gFields;
|
||||||
static PlaybackSettings::fields_t gPlaybackSettingsFields;
|
static PlaybackParams::fields_t gPlaybackParamsFields;
|
||||||
static SyncSettings::fields_t gSyncSettingsFields;
|
static SyncParams::fields_t gSyncParamsFields;
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
@@ -78,20 +78,20 @@ sp<const MediaClock> JMediaSync::getMediaClock() {
|
|||||||
return mSync->getMediaClock();
|
return mSync->getMediaClock();
|
||||||
}
|
}
|
||||||
|
|
||||||
status_t JMediaSync::setPlaybackSettings(const AudioPlaybackRate& rate) {
|
status_t JMediaSync::setPlaybackParams(const AudioPlaybackRate& rate) {
|
||||||
return mSync->setPlaybackSettings(rate);
|
return mSync->setPlaybackSettings(rate);
|
||||||
}
|
}
|
||||||
|
|
||||||
void JMediaSync::getPlaybackSettings(AudioPlaybackRate* rate /* nonnull */) {
|
void JMediaSync::getPlaybackParams(AudioPlaybackRate* rate /* nonnull */) {
|
||||||
mSync->getPlaybackSettings(rate);
|
mSync->getPlaybackSettings(rate);
|
||||||
}
|
}
|
||||||
|
|
||||||
status_t JMediaSync::setSyncSettings(const AVSyncSettings& syncSettings) {
|
status_t JMediaSync::setSyncParams(const AVSyncSettings& syncParams) {
|
||||||
return mSync->setSyncSettings(syncSettings);
|
return mSync->setSyncSettings(syncParams);
|
||||||
}
|
}
|
||||||
|
|
||||||
void JMediaSync::getSyncSettings(AVSyncSettings* syncSettings /* nonnull */) {
|
void JMediaSync::getSyncParams(AVSyncSettings* syncParams /* nonnull */) {
|
||||||
mSync->getSyncSettings(syncSettings);
|
mSync->getSyncSettings(syncParams);
|
||||||
}
|
}
|
||||||
|
|
||||||
status_t JMediaSync::setVideoFrameRateHint(float rate) {
|
status_t JMediaSync::setVideoFrameRateHint(float rate) {
|
||||||
@@ -308,24 +308,24 @@ static jlong android_media_MediaSync_native_getPlayTimeForPendingAudioFrames(
|
|||||||
return (jlong)playTimeUs;
|
return (jlong)playTimeUs;
|
||||||
}
|
}
|
||||||
|
|
||||||
static jfloat android_media_MediaSync_setPlaybackSettings(
|
static jfloat android_media_MediaSync_setPlaybackParams(
|
||||||
JNIEnv *env, jobject thiz, jobject settings) {
|
JNIEnv *env, jobject thiz, jobject params) {
|
||||||
sp<JMediaSync> sync = getMediaSync(env, thiz);
|
sp<JMediaSync> sync = getMediaSync(env, thiz);
|
||||||
if (sync == NULL) {
|
if (sync == NULL) {
|
||||||
throwExceptionAsNecessary(env, INVALID_OPERATION);
|
throwExceptionAsNecessary(env, INVALID_OPERATION);
|
||||||
return (jfloat)0.f;
|
return (jfloat)0.f;
|
||||||
}
|
}
|
||||||
|
|
||||||
PlaybackSettings pbs;
|
PlaybackParams pbs;
|
||||||
pbs.fillFromJobject(env, gPlaybackSettingsFields, settings);
|
pbs.fillFromJobject(env, gPlaybackParamsFields, params);
|
||||||
ALOGV("setPlaybackSettings: %d:%f %d:%f %d:%u %d:%u",
|
ALOGV("setPlaybackParams: %d:%f %d:%f %d:%u %d:%u",
|
||||||
pbs.speedSet, pbs.audioRate.mSpeed,
|
pbs.speedSet, pbs.audioRate.mSpeed,
|
||||||
pbs.pitchSet, pbs.audioRate.mPitch,
|
pbs.pitchSet, pbs.audioRate.mPitch,
|
||||||
pbs.audioFallbackModeSet, pbs.audioRate.mFallbackMode,
|
pbs.audioFallbackModeSet, pbs.audioRate.mFallbackMode,
|
||||||
pbs.audioStretchModeSet, pbs.audioRate.mStretchMode);
|
pbs.audioStretchModeSet, pbs.audioRate.mStretchMode);
|
||||||
|
|
||||||
AudioPlaybackRate rate;
|
AudioPlaybackRate rate;
|
||||||
sync->getPlaybackSettings(&rate);
|
sync->getPlaybackParams(&rate);
|
||||||
bool updatedRate = false;
|
bool updatedRate = false;
|
||||||
if (pbs.speedSet) {
|
if (pbs.speedSet) {
|
||||||
rate.mSpeed = pbs.audioRate.mSpeed;
|
rate.mSpeed = pbs.audioRate.mSpeed;
|
||||||
@@ -344,7 +344,7 @@ static jfloat android_media_MediaSync_setPlaybackSettings(
|
|||||||
updatedRate = true;
|
updatedRate = true;
|
||||||
}
|
}
|
||||||
if (updatedRate) {
|
if (updatedRate) {
|
||||||
status_t err = sync->setPlaybackSettings(rate);
|
status_t err = sync->setPlaybackParams(rate);
|
||||||
if (err != OK) {
|
if (err != OK) {
|
||||||
throwExceptionAsNecessary(env, err);
|
throwExceptionAsNecessary(env, err);
|
||||||
return (jfloat)0.f;
|
return (jfloat)0.f;
|
||||||
@@ -359,7 +359,7 @@ static jfloat android_media_MediaSync_setPlaybackSettings(
|
|||||||
return (jfloat)mediaClock->getPlaybackRate();
|
return (jfloat)mediaClock->getPlaybackRate();
|
||||||
}
|
}
|
||||||
|
|
||||||
static jobject android_media_MediaSync_getPlaybackSettings(
|
static jobject android_media_MediaSync_getPlaybackParams(
|
||||||
JNIEnv *env, jobject thiz) {
|
JNIEnv *env, jobject thiz) {
|
||||||
sp<JMediaSync> sync = getMediaSync(env, thiz);
|
sp<JMediaSync> sync = getMediaSync(env, thiz);
|
||||||
if (sync == NULL) {
|
if (sync == NULL) {
|
||||||
@@ -367,10 +367,10 @@ static jobject android_media_MediaSync_getPlaybackSettings(
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
PlaybackSettings pbs;
|
PlaybackParams pbs;
|
||||||
AudioPlaybackRate &audioRate = pbs.audioRate;
|
AudioPlaybackRate &audioRate = pbs.audioRate;
|
||||||
sync->getPlaybackSettings(&audioRate);
|
sync->getPlaybackParams(&audioRate);
|
||||||
ALOGV("getPlaybackSettings: %f %f %d %d",
|
ALOGV("getPlaybackParams: %f %f %d %d",
|
||||||
audioRate.mSpeed, audioRate.mPitch, audioRate.mFallbackMode, audioRate.mStretchMode);
|
audioRate.mSpeed, audioRate.mPitch, audioRate.mFallbackMode, audioRate.mStretchMode);
|
||||||
|
|
||||||
pbs.speedSet = true;
|
pbs.speedSet = true;
|
||||||
@@ -378,27 +378,27 @@ static jobject android_media_MediaSync_getPlaybackSettings(
|
|||||||
pbs.audioFallbackModeSet = true;
|
pbs.audioFallbackModeSet = true;
|
||||||
pbs.audioStretchModeSet = true;
|
pbs.audioStretchModeSet = true;
|
||||||
|
|
||||||
return pbs.asJobject(env, gPlaybackSettingsFields);
|
return pbs.asJobject(env, gPlaybackParamsFields);
|
||||||
}
|
}
|
||||||
|
|
||||||
static jfloat android_media_MediaSync_setSyncSettings(
|
static jfloat android_media_MediaSync_setSyncParams(
|
||||||
JNIEnv *env, jobject thiz, jobject settings) {
|
JNIEnv *env, jobject thiz, jobject params) {
|
||||||
sp<JMediaSync> sync = getMediaSync(env, thiz);
|
sp<JMediaSync> sync = getMediaSync(env, thiz);
|
||||||
if (sync == NULL) {
|
if (sync == NULL) {
|
||||||
throwExceptionAsNecessary(env, INVALID_OPERATION);
|
throwExceptionAsNecessary(env, INVALID_OPERATION);
|
||||||
return (jfloat)0.f;
|
return (jfloat)0.f;
|
||||||
}
|
}
|
||||||
|
|
||||||
SyncSettings scs;
|
SyncParams scs;
|
||||||
scs.fillFromJobject(env, gSyncSettingsFields, settings);
|
scs.fillFromJobject(env, gSyncParamsFields, params);
|
||||||
ALOGV("setSyncSettings: %d:%d %d:%d %d:%f %d:%f",
|
ALOGV("setSyncParams: %d:%d %d:%d %d:%f %d:%f",
|
||||||
scs.syncSourceSet, scs.sync.mSource,
|
scs.syncSourceSet, scs.sync.mSource,
|
||||||
scs.audioAdjustModeSet, scs.sync.mAudioAdjustMode,
|
scs.audioAdjustModeSet, scs.sync.mAudioAdjustMode,
|
||||||
scs.toleranceSet, scs.sync.mTolerance,
|
scs.toleranceSet, scs.sync.mTolerance,
|
||||||
scs.frameRateSet, scs.frameRate);
|
scs.frameRateSet, scs.frameRate);
|
||||||
|
|
||||||
AVSyncSettings avsync;
|
AVSyncSettings avsync;
|
||||||
sync->getSyncSettings(&avsync);
|
sync->getSyncParams(&avsync);
|
||||||
bool updatedSync = false;
|
bool updatedSync = false;
|
||||||
status_t err = OK;
|
status_t err = OK;
|
||||||
if (scs.syncSourceSet) {
|
if (scs.syncSourceSet) {
|
||||||
@@ -414,7 +414,7 @@ static jfloat android_media_MediaSync_setSyncSettings(
|
|||||||
updatedSync = true;
|
updatedSync = true;
|
||||||
}
|
}
|
||||||
if (updatedSync) {
|
if (updatedSync) {
|
||||||
err = sync->setSyncSettings(avsync);
|
err = sync->setSyncParams(avsync);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (scs.frameRateSet && err == OK) {
|
if (scs.frameRateSet && err == OK) {
|
||||||
@@ -433,21 +433,21 @@ static jfloat android_media_MediaSync_setSyncSettings(
|
|||||||
return (jfloat)mediaClock->getPlaybackRate();
|
return (jfloat)mediaClock->getPlaybackRate();
|
||||||
}
|
}
|
||||||
|
|
||||||
static jobject android_media_MediaSync_getSyncSettings(JNIEnv *env, jobject thiz) {
|
static jobject android_media_MediaSync_getSyncParams(JNIEnv *env, jobject thiz) {
|
||||||
sp<JMediaSync> sync = getMediaSync(env, thiz);
|
sp<JMediaSync> sync = getMediaSync(env, thiz);
|
||||||
if (sync == NULL) {
|
if (sync == NULL) {
|
||||||
throwExceptionAsNecessary(env, INVALID_OPERATION);
|
throwExceptionAsNecessary(env, INVALID_OPERATION);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
SyncSettings scs;
|
SyncParams scs;
|
||||||
sync->getSyncSettings(&scs.sync);
|
sync->getSyncParams(&scs.sync);
|
||||||
scs.frameRate = sync->getVideoFrameRate();
|
scs.frameRate = sync->getVideoFrameRate();
|
||||||
|
|
||||||
ALOGV("getSyncSettings: %d %d %f %f",
|
ALOGV("getSyncParams: %d %d %f %f",
|
||||||
scs.sync.mSource, scs.sync.mAudioAdjustMode, scs.sync.mTolerance, scs.frameRate);
|
scs.sync.mSource, scs.sync.mAudioAdjustMode, scs.sync.mTolerance, scs.frameRate);
|
||||||
|
|
||||||
// sanity check settings
|
// sanity check params
|
||||||
if (scs.sync.mSource >= AVSYNC_SOURCE_MAX
|
if (scs.sync.mSource >= AVSYNC_SOURCE_MAX
|
||||||
|| scs.sync.mAudioAdjustMode >= AVSYNC_AUDIO_ADJUST_MODE_MAX
|
|| scs.sync.mAudioAdjustMode >= AVSYNC_AUDIO_ADJUST_MODE_MAX
|
||||||
|| scs.sync.mTolerance < 0.f
|
|| scs.sync.mTolerance < 0.f
|
||||||
@@ -461,7 +461,7 @@ static jobject android_media_MediaSync_getSyncSettings(JNIEnv *env, jobject thiz
|
|||||||
scs.toleranceSet = true;
|
scs.toleranceSet = true;
|
||||||
scs.frameRateSet = scs.frameRate >= 0.f;
|
scs.frameRateSet = scs.frameRate >= 0.f;
|
||||||
|
|
||||||
return scs.asJobject(env, gSyncSettingsFields);
|
return scs.asJobject(env, gSyncParamsFields);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void android_media_MediaSync_native_init(JNIEnv *env) {
|
static void android_media_MediaSync_native_init(JNIEnv *env) {
|
||||||
@@ -486,8 +486,8 @@ static void android_media_MediaSync_native_init(JNIEnv *env) {
|
|||||||
env->GetFieldID(clazz.get(), "clockRate", "F");
|
env->GetFieldID(clazz.get(), "clockRate", "F");
|
||||||
CHECK(gFields.mediaTimestampClockRateID != NULL);
|
CHECK(gFields.mediaTimestampClockRateID != NULL);
|
||||||
|
|
||||||
gSyncSettingsFields.init(env);
|
gSyncParamsFields.init(env);
|
||||||
gPlaybackSettingsFields.init(env);
|
gPlaybackParamsFields.init(env);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void android_media_MediaSync_native_setup(JNIEnv *env, jobject thiz) {
|
static void android_media_MediaSync_native_setup(JNIEnv *env, jobject thiz) {
|
||||||
@@ -530,17 +530,17 @@ static JNINativeMethod gMethods[] = {
|
|||||||
|
|
||||||
{ "native_release", "()V", (void *)android_media_MediaSync_release },
|
{ "native_release", "()V", (void *)android_media_MediaSync_release },
|
||||||
|
|
||||||
{ "native_setPlaybackSettings", "(Landroid/media/PlaybackSettings;)F",
|
{ "native_setPlaybackParams", "(Landroid/media/PlaybackParams;)F",
|
||||||
(void *)android_media_MediaSync_setPlaybackSettings },
|
(void *)android_media_MediaSync_setPlaybackParams },
|
||||||
|
|
||||||
{ "getPlaybackSettings", "()Landroid/media/PlaybackSettings;",
|
{ "getPlaybackParams", "()Landroid/media/PlaybackParams;",
|
||||||
(void *)android_media_MediaSync_getPlaybackSettings },
|
(void *)android_media_MediaSync_getPlaybackParams },
|
||||||
|
|
||||||
{ "native_setSyncSettings", "(Landroid/media/SyncSettings;)F",
|
{ "native_setSyncParams", "(Landroid/media/SyncParams;)F",
|
||||||
(void *)android_media_MediaSync_setSyncSettings },
|
(void *)android_media_MediaSync_setSyncParams },
|
||||||
|
|
||||||
{ "getSyncSettings", "()Landroid/media/SyncSettings;",
|
{ "getSyncParams", "()Landroid/media/SyncParams;",
|
||||||
(void *)android_media_MediaSync_getSyncSettings },
|
(void *)android_media_MediaSync_getSyncParams },
|
||||||
|
|
||||||
{ "native_finalize", "()V", (void *)android_media_MediaSync_native_finalize },
|
{ "native_finalize", "()V", (void *)android_media_MediaSync_native_finalize },
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -42,10 +42,10 @@ struct JMediaSync : public RefBase {
|
|||||||
|
|
||||||
status_t getPlayTimeForPendingAudioFrames(int64_t *outTimeUs);
|
status_t getPlayTimeForPendingAudioFrames(int64_t *outTimeUs);
|
||||||
|
|
||||||
status_t setPlaybackSettings(const AudioPlaybackRate& rate);
|
status_t setPlaybackParams(const AudioPlaybackRate& rate);
|
||||||
void getPlaybackSettings(AudioPlaybackRate* rate /* nonnull */);
|
void getPlaybackParams(AudioPlaybackRate* rate /* nonnull */);
|
||||||
status_t setSyncSettings(const AVSyncSettings& syncSettings);
|
status_t setSyncParams(const AVSyncSettings& syncParams);
|
||||||
void getSyncSettings(AVSyncSettings* syncSettings /* nonnull */);
|
void getSyncParams(AVSyncSettings* syncParams /* nonnull */);
|
||||||
status_t setVideoFrameRateHint(float rate);
|
status_t setVideoFrameRateHint(float rate);
|
||||||
float getVideoFrameRate();
|
float getVideoFrameRate();
|
||||||
|
|
||||||
|
|||||||
@@ -14,15 +14,15 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _ANDROID_MEDIA_PLAYBACK_SETTINGS_H_
|
#ifndef _ANDROID_MEDIA_PLAYBACK_PARAMS_H_
|
||||||
#define _ANDROID_MEDIA_PLAYBACK_SETTINGS_H_
|
#define _ANDROID_MEDIA_PLAYBACK_PARAMS_H_
|
||||||
|
|
||||||
#include <media/AudioResamplerPublic.h>
|
#include <media/AudioResamplerPublic.h>
|
||||||
|
|
||||||
namespace android {
|
namespace android {
|
||||||
|
|
||||||
// This entire class is inline as it is used from both core and media
|
// This entire class is inline as it is used from both core and media
|
||||||
struct PlaybackSettings {
|
struct PlaybackParams {
|
||||||
AudioPlaybackRate audioRate;
|
AudioPlaybackRate audioRate;
|
||||||
bool speedSet;
|
bool speedSet;
|
||||||
bool pitchSet;
|
bool pitchSet;
|
||||||
@@ -44,7 +44,7 @@ struct PlaybackSettings {
|
|||||||
jint set_audio_stretch_mode;
|
jint set_audio_stretch_mode;
|
||||||
|
|
||||||
void init(JNIEnv *env) {
|
void init(JNIEnv *env) {
|
||||||
jclass lclazz = env->FindClass("android/media/PlaybackSettings");
|
jclass lclazz = env->FindClass("android/media/PlaybackParams");
|
||||||
if (lclazz == NULL) {
|
if (lclazz == NULL) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -80,14 +80,14 @@ struct PlaybackSettings {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
void fillFromJobject(JNIEnv *env, const fields_t& fields, jobject settings) {
|
void fillFromJobject(JNIEnv *env, const fields_t& fields, jobject params) {
|
||||||
audioRate.mSpeed = env->GetFloatField(settings, fields.speed);
|
audioRate.mSpeed = env->GetFloatField(params, fields.speed);
|
||||||
audioRate.mPitch = env->GetFloatField(settings, fields.pitch);
|
audioRate.mPitch = env->GetFloatField(params, fields.pitch);
|
||||||
audioRate.mFallbackMode =
|
audioRate.mFallbackMode =
|
||||||
(AudioTimestretchFallbackMode)env->GetIntField(settings, fields.audio_fallback_mode);
|
(AudioTimestretchFallbackMode)env->GetIntField(params, fields.audio_fallback_mode);
|
||||||
audioRate.mStretchMode =
|
audioRate.mStretchMode =
|
||||||
(AudioTimestretchStretchMode)env->GetIntField(settings, fields.audio_stretch_mode);
|
(AudioTimestretchStretchMode)env->GetIntField(params, fields.audio_stretch_mode);
|
||||||
int set = env->GetIntField(settings, fields.set);
|
int set = env->GetIntField(params, fields.set);
|
||||||
|
|
||||||
speedSet = set & fields.set_speed;
|
speedSet = set & fields.set_speed;
|
||||||
pitchSet = set & fields.set_pitch;
|
pitchSet = set & fields.set_pitch;
|
||||||
@@ -96,25 +96,25 @@ struct PlaybackSettings {
|
|||||||
}
|
}
|
||||||
|
|
||||||
jobject asJobject(JNIEnv *env, const fields_t& fields) {
|
jobject asJobject(JNIEnv *env, const fields_t& fields) {
|
||||||
jobject settings = env->NewObject(fields.clazz, fields.constructID);
|
jobject params = env->NewObject(fields.clazz, fields.constructID);
|
||||||
if (settings == NULL) {
|
if (params == NULL) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
env->SetFloatField(settings, fields.speed, (jfloat)audioRate.mSpeed);
|
env->SetFloatField(params, fields.speed, (jfloat)audioRate.mSpeed);
|
||||||
env->SetFloatField(settings, fields.pitch, (jfloat)audioRate.mPitch);
|
env->SetFloatField(params, fields.pitch, (jfloat)audioRate.mPitch);
|
||||||
env->SetIntField(settings, fields.audio_fallback_mode, (jint)audioRate.mFallbackMode);
|
env->SetIntField(params, fields.audio_fallback_mode, (jint)audioRate.mFallbackMode);
|
||||||
env->SetIntField(settings, fields.audio_stretch_mode, (jint)audioRate.mStretchMode);
|
env->SetIntField(params, fields.audio_stretch_mode, (jint)audioRate.mStretchMode);
|
||||||
env->SetIntField(
|
env->SetIntField(
|
||||||
settings, fields.set,
|
params, fields.set,
|
||||||
(speedSet ? fields.set_speed : 0)
|
(speedSet ? fields.set_speed : 0)
|
||||||
| (pitchSet ? fields.set_pitch : 0)
|
| (pitchSet ? fields.set_pitch : 0)
|
||||||
| (audioFallbackModeSet ? fields.set_audio_fallback_mode : 0)
|
| (audioFallbackModeSet ? fields.set_audio_fallback_mode : 0)
|
||||||
| (audioStretchModeSet ? fields.set_audio_stretch_mode : 0));
|
| (audioStretchModeSet ? fields.set_audio_stretch_mode : 0));
|
||||||
|
|
||||||
return settings;
|
return params;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace android
|
} // namespace android
|
||||||
|
|
||||||
#endif // _ANDROID_MEDIA_PLAYBACK_SETTINGS_H_
|
#endif // _ANDROID_MEDIA_PLAYBACK_PARAMS_H_
|
||||||
@@ -14,14 +14,14 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "android_media_SyncSettings.h"
|
#include "android_media_SyncParams.h"
|
||||||
|
|
||||||
#include "JNIHelp.h"
|
#include "JNIHelp.h"
|
||||||
|
|
||||||
namespace android {
|
namespace android {
|
||||||
|
|
||||||
void SyncSettings::fields_t::init(JNIEnv *env) {
|
void SyncParams::fields_t::init(JNIEnv *env) {
|
||||||
jclass lclazz = env->FindClass("android/media/SyncSettings");
|
jclass lclazz = env->FindClass("android/media/SyncParams");
|
||||||
if (lclazz == NULL) {
|
if (lclazz == NULL) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -51,17 +51,17 @@ void SyncSettings::fields_t::init(JNIEnv *env) {
|
|||||||
env->DeleteLocalRef(lclazz);
|
env->DeleteLocalRef(lclazz);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SyncSettings::fields_t::exit(JNIEnv *env) {
|
void SyncParams::fields_t::exit(JNIEnv *env) {
|
||||||
env->DeleteGlobalRef(clazz);
|
env->DeleteGlobalRef(clazz);
|
||||||
clazz = NULL;
|
clazz = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SyncSettings::fillFromJobject(JNIEnv *env, const fields_t& fields, jobject settings) {
|
void SyncParams::fillFromJobject(JNIEnv *env, const fields_t& fields, jobject params) {
|
||||||
sync.mSource = (AVSyncSource)env->GetIntField(settings, fields.sync_source);
|
sync.mSource = (AVSyncSource)env->GetIntField(params, fields.sync_source);
|
||||||
sync.mAudioAdjustMode = (AVSyncAudioAdjustMode)env->GetIntField(settings, fields.audio_adjust_mode);
|
sync.mAudioAdjustMode = (AVSyncAudioAdjustMode)env->GetIntField(params, fields.audio_adjust_mode);
|
||||||
sync.mTolerance = env->GetFloatField(settings, fields.tolerance);
|
sync.mTolerance = env->GetFloatField(params, fields.tolerance);
|
||||||
frameRate = env->GetFloatField(settings, fields.frame_rate);
|
frameRate = env->GetFloatField(params, fields.frame_rate);
|
||||||
int set = env->GetIntField(settings, fields.set);
|
int set = env->GetIntField(params, fields.set);
|
||||||
|
|
||||||
syncSourceSet = set & fields.set_sync_source;
|
syncSourceSet = set & fields.set_sync_source;
|
||||||
audioAdjustModeSet = set & fields.set_audio_adjust_mode;
|
audioAdjustModeSet = set & fields.set_audio_adjust_mode;
|
||||||
@@ -69,23 +69,23 @@ void SyncSettings::fillFromJobject(JNIEnv *env, const fields_t& fields, jobject
|
|||||||
frameRateSet = set & fields.set_frame_rate;
|
frameRateSet = set & fields.set_frame_rate;
|
||||||
}
|
}
|
||||||
|
|
||||||
jobject SyncSettings::asJobject(JNIEnv *env, const fields_t& fields) {
|
jobject SyncParams::asJobject(JNIEnv *env, const fields_t& fields) {
|
||||||
jobject settings = env->NewObject(fields.clazz, fields.constructID);
|
jobject params = env->NewObject(fields.clazz, fields.constructID);
|
||||||
if (settings == NULL) {
|
if (params == NULL) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
env->SetIntField(settings, fields.sync_source, (jint)sync.mSource);
|
env->SetIntField(params, fields.sync_source, (jint)sync.mSource);
|
||||||
env->SetIntField(settings, fields.audio_adjust_mode, (jint)sync.mAudioAdjustMode);
|
env->SetIntField(params, fields.audio_adjust_mode, (jint)sync.mAudioAdjustMode);
|
||||||
env->SetFloatField(settings, fields.tolerance, (jfloat)sync.mTolerance);
|
env->SetFloatField(params, fields.tolerance, (jfloat)sync.mTolerance);
|
||||||
env->SetFloatField(settings, fields.frame_rate, (jfloat)frameRate);
|
env->SetFloatField(params, fields.frame_rate, (jfloat)frameRate);
|
||||||
env->SetIntField(
|
env->SetIntField(
|
||||||
settings, fields.set,
|
params, fields.set,
|
||||||
(syncSourceSet ? fields.set_sync_source : 0)
|
(syncSourceSet ? fields.set_sync_source : 0)
|
||||||
| (audioAdjustModeSet ? fields.set_audio_adjust_mode : 0)
|
| (audioAdjustModeSet ? fields.set_audio_adjust_mode : 0)
|
||||||
| (toleranceSet ? fields.set_tolerance : 0)
|
| (toleranceSet ? fields.set_tolerance : 0)
|
||||||
| (frameRateSet ? fields.set_frame_rate : 0));
|
| (frameRateSet ? fields.set_frame_rate : 0));
|
||||||
|
|
||||||
return settings;
|
return params;
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace android
|
} // namespace android
|
||||||
@@ -14,8 +14,8 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _ANDROID_MEDIA_SYNC_SETTINGS_H_
|
#ifndef _ANDROID_MEDIA_SYNC_PARAMS_H_
|
||||||
#define _ANDROID_MEDIA_SYNC_SETTINGS_H_
|
#define _ANDROID_MEDIA_SYNC_PARAMS_H_
|
||||||
|
|
||||||
#include "jni.h"
|
#include "jni.h"
|
||||||
|
|
||||||
@@ -23,7 +23,7 @@
|
|||||||
|
|
||||||
namespace android {
|
namespace android {
|
||||||
|
|
||||||
struct SyncSettings {
|
struct SyncParams {
|
||||||
AVSyncSettings sync;
|
AVSyncSettings sync;
|
||||||
float frameRate;
|
float frameRate;
|
||||||
|
|
||||||
@@ -53,13 +53,13 @@ struct SyncSettings {
|
|||||||
void exit(JNIEnv *env);
|
void exit(JNIEnv *env);
|
||||||
};
|
};
|
||||||
|
|
||||||
// fills this from an android.media.SyncSettings object
|
// fills this from an android.media.SyncParams object
|
||||||
void fillFromJobject(JNIEnv *env, const fields_t& fields, jobject settings);
|
void fillFromJobject(JNIEnv *env, const fields_t& fields, jobject params);
|
||||||
|
|
||||||
// returns this as a android.media.SyncSettings object
|
// returns this as a android.media.SyncParams object
|
||||||
jobject asJobject(JNIEnv *env, const fields_t& fields);
|
jobject asJobject(JNIEnv *env, const fields_t& fields);
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace android
|
} // namespace android
|
||||||
|
|
||||||
#endif // _ANDROID_MEDIA_SYNC_SETTINGS_H_
|
#endif // _ANDROID_MEDIA_SYNC_PARAMS_H_
|
||||||
Reference in New Issue
Block a user