-
Notifications
You must be signed in to change notification settings - Fork 94
C++ Native API
Haruki Hasegawa edited this page Nov 22, 2014
·
1 revision
This library provides C++ Native API sets. These Native API classes are declared in oslmp
namespace and provide almost the same interface with Java API classes.
API classes and listener interfaces are sub class of android::RefBase
, so we have to handle their instance through android:sp<T>
smart pointer.
Function type | Native API class | Header file |
---|---|---|
Shared context object | OpenSLMediaPlayerContext | oslmp/OpenSLMediaPlayer.hpp |
Factory class | N/A | N/A |
MediaPlayer | OpenSLMediaPlayer | oslmp/OpenSLMediaPlayer.hpp |
BassBoost | OpenSLMediaPlayerBassBoost | oslmp/OpenSLMediaPlayerBassBoost.hpp |
Virtualizer | OpenSLMediaPlayerVirtualizer | oslmp/OpenSLMediaPlayerVirtualizer.hpp |
Equalizer | OpenSLMediaPlayerEqualizer | oslmp/OpenSLMediaPlayerEqualizer.hpp |
LoudnessEnhancer | N/A | N/A |
Visualizer | OpenSLMediaPlayerVisualizer | oslmp/OpenSLMediaPlayerVisualizer.hpp |
EnvironmentalReverb | OpenSLMediaPlayerEnvironmentalReverb | oslmp/OpenSLMediaPlayerEnvironmentalReverb.hpp |
PresetReverb | OpenSLMediaPlayerPresetReverb | oslmp/OpenSLMediaPlayerPresetReverb.hpp |
HQEqualizer | OpenSLMediaPlayerHQEqualizer | oslmp/OpenSLMediaPlayerHQEqualizer.hpp |
PreAmp | OpenSLMediaPlayerPreAmp | oslmp/OpenSLMediaPlayerPreAmp.hpp |
HQVisualizer | OpenSLMediaPlayerHQVisualizer | oslmp/OpenSLMediaPlayerHQVisualizer.hpp |
The basic procedure is as the following:
- Create
OpenSLMediaPlayerContext
object - Create and initialize
OpenSLMediaPlayer
object OpenSLMediaPlayer::setDataSource***()
OpenSLMediaPlayer::prepare()
OpenSLMediaPlayer::start()
OpenSLMediaPlayer::pause()
- delete
OpenSLMediaPlayer
object - delete
OpenSLMediaPlayerContext
object
#include <oslmp/OpenSLMediaPlayer.hpp>
JNIEnv *env = (assign JNIEnv object);
android::sp<oslmp::OpenSLMediaPlayerContext> context;
android::sp<oslmp::OpenSLMediaPlayer> player;
oslmp::OpenSLMediaPlayerContext::create_args_t context_args;
oslmp::OpenSLMediaPlayer::initialize_args_t player_args;
// (0. modify context_args and player_args)
// 1, 2
player_context = oslmp::OpenSLMediaPlayerContext::create(env, conetxt_args);
player = new oslmp::OpenSLMediaPlayer(context);
player->initialize(player_args);
// 3, 4, 5
player->setDataSourcePath("file path");
player->prepare();
player->start();
// now playing
// 6
player->pause();
// 7, 8
player.clear();
player_context.clear();
Please see native-example
.
This example is using these classes;
- OpenSLMediaPlayerContext
- OpenSLMediaPlayer
- OpenSLMediaPlayerHQVisualizer