Merge "TIF: Pass the playback params as a whole" into mnc-dev

This commit is contained in:
Jae Seo
2015-05-18 18:10:29 +00:00
committed by Android (Google) Code Review
6 changed files with 21 additions and 26 deletions

View File

@@ -18,6 +18,7 @@ package android.media.tv;
import android.content.ComponentName;
import android.graphics.Rect;
import android.media.PlaybackParams;
import android.media.tv.DvbDeviceInfo;
import android.media.tv.ITvInputClient;
import android.media.tv.ITvInputHardware;
@@ -79,7 +80,7 @@ interface ITvInputManager {
void timeShiftPause(in IBinder sessionToken, int userId);
void timeShiftResume(in IBinder sessionToken, int userId);
void timeShiftSeekTo(in IBinder sessionToken, long timeMs, int userId);
void timeShiftSetPlaybackRate(in IBinder sessionToken, float rate, int audioMode, int userId);
void timeShiftSetPlaybackParams(in IBinder sessionToken, in PlaybackParams params, int userId);
void timeShiftEnablePositionTracking(in IBinder sessionToken, boolean enable, int userId);
// For TV input hardware binding

View File

@@ -17,6 +17,7 @@
package android.media.tv;
import android.graphics.Rect;
import android.media.PlaybackParams;
import android.media.tv.TvTrackInfo;
import android.net.Uri;
import android.os.Bundle;
@@ -50,6 +51,6 @@ oneway interface ITvInputSession {
void timeShiftPause();
void timeShiftResume();
void timeShiftSeekTo(long timeMs);
void timeShiftSetPlaybackRate(float rate, int audioMode);
void timeShiftSetPlaybackParams(in PlaybackParams params);
void timeShiftEnablePositionTracking(boolean enable);
}

View File

@@ -62,7 +62,7 @@ public class ITvInputSessionWrapper extends ITvInputSession.Stub implements Hand
private static final int DO_TIME_SHIFT_PAUSE = 14;
private static final int DO_TIME_SHIFT_RESUME = 15;
private static final int DO_TIME_SHIFT_SEEK_TO = 16;
private static final int DO_TIME_SHIFT_SET_PLAYBACK_RATE = 17;
private static final int DO_TIME_SHIFT_SET_PLAYBACK_PARAMS = 17;
private static final int DO_TIME_SHIFT_ENABLE_POSITION_TRACKING = 18;
private final HandlerCaller mCaller;
@@ -172,7 +172,7 @@ public class ITvInputSessionWrapper extends ITvInputSession.Stub implements Hand
mTvInputSessionImpl.timeShiftSeekTo((Long) msg.obj);
break;
}
case DO_TIME_SHIFT_SET_PLAYBACK_RATE: {
case DO_TIME_SHIFT_SET_PLAYBACK_PARAMS: {
PlaybackParams params = new PlaybackParams()
.setSpeed((Float) msg.obj)
.setAudioFallbackMode(msg.arg1);
@@ -293,9 +293,9 @@ public class ITvInputSessionWrapper extends ITvInputSession.Stub implements Hand
}
@Override
public void timeShiftSetPlaybackRate(float rate, int audioMode) {
mCaller.executeOrSendMessage(mCaller.obtainMessageIO(DO_TIME_SHIFT_SET_PLAYBACK_RATE,
audioMode, Float.valueOf(rate)));
public void timeShiftSetPlaybackParams(PlaybackParams params) {
mCaller.executeOrSendMessage(mCaller.obtainMessageO(DO_TIME_SHIFT_SET_PLAYBACK_PARAMS,
params));
}
@Override

View File

@@ -20,6 +20,7 @@ import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.graphics.Rect;
import android.media.PlaybackParams;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
@@ -1747,23 +1748,17 @@ public final class TvInputManager {
}
/**
* Sets playback rate and audio mode.
* Sets playback rate using {@link android.media.PlaybackParams}.
*
* @param rate The ratio between desired playback rate and normal one.
* @param audioMode Audio playback mode. Must be one of the supported audio modes:
* <ul>
* <li> {@link android.media.MediaPlayer#PLAYBACK_RATE_AUDIO_MODE_DEFAULT}
* <li> {@link android.media.MediaPlayer#PLAYBACK_RATE_AUDIO_MODE_STRETCH}
* <li> {@link android.media.MediaPlayer#PLAYBACK_RATE_AUDIO_MODE_RESAMPLE}
* </ul>
* @param params The playback params.
*/
void timeShiftSetPlaybackRate(float rate, int audioMode) {
void timeShiftSetPlaybackParams(PlaybackParams params) {
if (mToken == null) {
Log.w(TAG, "The session has been already released");
return;
}
try {
mService.timeShiftSetPlaybackRate(mToken, rate, audioMode, mUserId);
mService.timeShiftSetPlaybackParams(mToken, params, mUserId);
} catch (RemoteException e) {
throw new RuntimeException(e);
}

View File

@@ -28,7 +28,6 @@ import android.media.PlaybackParams;
import android.media.tv.TvInputManager.Session;
import android.media.tv.TvInputManager.Session.FinishedInputEventCallback;
import android.media.tv.TvInputManager.SessionCallback;
import android.media.tv.TvView.TimeShiftPositionCallback;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
@@ -470,13 +469,13 @@ public class TvView extends ViewGroup {
}
/**
* Sets playback rate using {@link android.media#PlaybackParams}.
* Sets playback rate using {@link android.media.PlaybackParams}.
*
* @param params The playback params.
*/
public void timeShiftSetPlaybackParams(@NonNull PlaybackParams params) {
if (mSession != null) {
mSession.timeShiftSetPlaybackRate(params.getSpeed(), params.getAudioFallbackMode());
mSession.timeShiftSetPlaybackParams(params);
}
}

View File

@@ -39,6 +39,7 @@ import android.content.pm.ServiceInfo;
import android.graphics.Rect;
import android.hardware.hdmi.HdmiControlManager;
import android.hardware.hdmi.HdmiDeviceInfo;
import android.media.PlaybackParams;
import android.media.tv.DvbDeviceInfo;
import android.media.tv.ITvInputClient;
import android.media.tv.ITvInputHardware;
@@ -87,8 +88,6 @@ import java.io.FileDescriptor;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintWriter;
import java.lang.IllegalArgumentException;
import java.lang.Integer;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -1422,19 +1421,19 @@ public final class TvInputManagerService extends SystemService {
}
@Override
public void timeShiftSetPlaybackRate(IBinder sessionToken, float rate, int audioMode,
public void timeShiftSetPlaybackParams(IBinder sessionToken, PlaybackParams params,
int userId) {
final int callingUid = Binder.getCallingUid();
final int resolvedUserId = resolveCallingUserId(Binder.getCallingPid(), callingUid,
userId, "timeShiftSetPlaybackRate");
userId, "timeShiftSetPlaybackParams");
final long identity = Binder.clearCallingIdentity();
try {
synchronized (mLock) {
try {
getSessionLocked(sessionToken, callingUid, resolvedUserId)
.timeShiftSetPlaybackRate(rate, audioMode);
.timeShiftSetPlaybackParams(params);
} catch (RemoteException | SessionNotFoundException e) {
Slog.e(TAG, "error in timeShiftSetPlaybackRate", e);
Slog.e(TAG, "error in timeShiftSetPlaybackParams", e);
}
}
} finally {