Skip to content
Haruki Hasegawa edited this page Nov 22, 2014 · 1 revision

API Overview (C++ Native)

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

Usage

The basic procedure is as the following:

  1. Create OpenSLMediaPlayerContext object
  2. Create and initialize OpenSLMediaPlayer object
  3. OpenSLMediaPlayer::setDataSource***()
  4. OpenSLMediaPlayer::prepare()
  5. OpenSLMediaPlayer::start()
  6. OpenSLMediaPlayer::pause()
  7. delete OpenSLMediaPlayer object
  8. 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();

Example code

Please see native-example.

This example is using these classes;

  • OpenSLMediaPlayerContext
  • OpenSLMediaPlayer
  • OpenSLMediaPlayerHQVisualizer