class PlaybackBannerControlGlue extends PlaybackBaseControlGlue<T> {

    @Override
    public long getCurrentPosition() {
        int speed;
        if (mPlaybackSpeed == PlaybackControlGlue.PLAYBACK_SPEED_PAUSED
                || mPlaybackSpeed == PlaybackControlGlue.PLAYBACK_SPEED_NORMAL) {
            // If the adapter is playing/paused, using the position from adapter instead.
            return mPlayerAdapter.getCurrentPosition();
        } else if (mPlaybackSpeed >= PlaybackControlGlue.PLAYBACK_SPEED_FAST_L0) {
            // If fast forward operation is supported in this scenario, current player position
            // can be get from mPlayerAdapter.getCurrentPosition() directly
            if (mIsCustomizedFastForwardSupported) {
                return mPlayerAdapter.getCurrentPosition();
            }
            int index = mPlaybackSpeed - PlaybackControlGlue.PLAYBACK_SPEED_FAST_L0;
            speed = getFastForwardSpeeds()[index];
        } else if (mPlaybackSpeed <= -PlaybackControlGlue.PLAYBACK_SPEED_FAST_L0) {
            // If fast rewind is supported in this scenario, current player position
            // can be get from mPlayerAdapter.getCurrentPosition() directly
            if (mIsCustomizedRewindSupported) {
                return mPlayerAdapter.getCurrentPosition();
            }
            int index = -mPlaybackSpeed - PlaybackControlGlue.PLAYBACK_SPEED_FAST_L0;
            speed = -getRewindSpeeds()[index];
        } else {
            return -1;
        }

        long position = mStartPosition + (System.currentTimeMillis() - mStartTime) * speed;
        if (position > getDuration()) {
            mPlaybackSpeed = PLAYBACK_SPEED_PAUSED;
            position = getDuration();
            mPlayerAdapter.seekTo(position);
            mStartPosition = 0;
            pause();
        } else if (position < 0) {
            mPlaybackSpeed = PLAYBACK_SPEED_PAUSED;
            position = 0;
            mPlayerAdapter.seekTo(position);
            mStartPosition = 0;
            pause();
        }
        return position;
    }

    public  PlaybackBannerControlGlue(Context context,
            int[] seekSpeeds,
            T impl);
    public  PlaybackBannerControlGlue(Context context,
                                    int[] fastForwardSpeeds,
                                    int[] rewindSpeeds,
                                    T impl);

}