本文整理汇总了C++中AudioPlayer::start方法的典型用法代码示例。如果您正苦于以下问题:C++ AudioPlayer::start方法的具体用法?C++ AudioPlayer::start怎么用?C++ AudioPlayer::start使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AudioPlayer
的用法示例。
在下文中一共展示了AudioPlayer::start方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main(int argc, char **argv) {
android::ProcessState::self()->startThreadPool();
OMXClient client;
CHECK_EQ(client.connect(), OK);
const int32_t kSampleRate = 22050;
const int32_t kNumChannels = 2;
sp<MediaSource> audioSource = new SineSource(kSampleRate, kNumChannels);
#if 0
sp<MediaPlayerBase::AudioSink> audioSink;
AudioPlayer *player = new AudioPlayer(audioSink);
player->setSource(audioSource);
player->start();
sleep(10);
player->stop();
#endif
sp<MetaData> encMeta = new MetaData;
encMeta->setCString(kKeyMIMEType,
1 ? MEDIA_MIMETYPE_AUDIO_AMR_WB : MEDIA_MIMETYPE_AUDIO_AAC);
encMeta->setInt32(kKeySampleRate, kSampleRate);
encMeta->setInt32(kKeyChannelCount, kNumChannels);
encMeta->setInt32(kKeyMaxInputSize, 8192);
sp<MediaSource> encoder =
OMXCodec::Create(client.interface(), encMeta, true, audioSource);
encoder->start();
int32_t n = 0;
status_t err;
MediaBuffer *buffer;
while ((err = encoder->read(&buffer)) == OK) {
printf(".");
fflush(stdout);
buffer->release();
buffer = NULL;
if (++n == 100) {
break;
}
}
printf("$\n");
encoder->stop();
client.disconnect();
return 0;
}
示例2: locker
/**
Play a 44100Hz mono 16bit PCM sound
*/
void Audio::playMono16Sound(const QByteArray& data)
{
QMutexLocker locker(&d->audioLock);
if (!d->alOutDev)
d->initOutput(Settings::getInstance().getOutDev());
alSourcef(d->alMainSource, AL_GAIN, d->outputVolume);
AudioPlayer *player = new AudioPlayer(d->alMainSource, data);
connect(player, &AudioPlayer::finished, [=]() {
QMutexLocker locker(&d->audioLock);
if (d->outSources.isEmpty())
d->cleanupOutput();
else
qDebug("Audio output not closed -> there are pending subscriptions.");
});
player->start();
}
示例3: CHECK
int
CPlayerClient::foundMediaFile(const char *path, sp<IMediaExtractor>& pExtractor_in)
{
AUTO_LOG();
CHECK_PTR_EXT(path, BAD_VALUE);
CHECK_PTR_EXT(pExtractor_in, BAD_VALUE);
CHECK_PTR_EXT(m_pSink, BAD_VALUE);
for (size_t i = 0; i < pExtractor_in->countTracks(); ++i) {
sp<MetaData> meta = pExtractor_in->getTrackMetaData(i);
CHECK_PTR_EXT(meta, BAD_VALUE);
const char *_mime;
CHECK(meta->findCString(kKeyMIMEType, &_mime));
CHECK_PTR_EXT(_mime, BAD_VALUE);
String8 mime = String8(_mime);
if (!strncasecmp(mime.string(), "audio/", 6)) {
AudioPlayer *player = new AudioPlayer(m_pSink);
CHECK_PTR_EXT(player, BAD_VALUE);
player->setSource(pExtractor_in->getTrack(i));
player->start(false /* sourceAlreadyStarted */);
//status_t finalStatus;
//while (!player->reachedEOS(&finalStatus)) {
// usleep(100000ll);
//}
delete player;
player = NULL;
}
}
RETURN(OK);
}
示例4: playSource
static void playSource(OMXClient *client, sp<MediaSource> &source) {
sp<MetaData> meta = source->getFormat();
const char *mime;
CHECK(meta->findCString(kKeyMIMEType, &mime));
sp<MediaSource> rawSource;
if (!strcasecmp(MEDIA_MIMETYPE_AUDIO_RAW, mime)) {
rawSource = source;
} else {
int flags = 0;
if (gPreferSoftwareCodec) {
flags |= OMXCodec::kPreferSoftwareCodecs;
}
if (gForceToUseHardwareCodec) {
CHECK(!gPreferSoftwareCodec);
flags |= OMXCodec::kHardwareCodecsOnly;
}
rawSource = OMXCodec::Create(
client->interface(), meta, false /* createEncoder */, source,
NULL /* matchComponentName */,
flags,
gSurface);
if (rawSource == NULL) {
fprintf(stderr, "Failed to instantiate decoder for '%s'.\n", mime);
return;
}
displayAVCProfileLevelIfPossible(meta);
}
source.clear();
status_t err = rawSource->start();
if (err != OK) {
fprintf(stderr, "rawSource returned error %d (0x%08x)\n", err, err);
return;
}
if (gPlaybackAudio) {
AudioPlayer *player = new AudioPlayer(NULL);
player->setSource(rawSource);
rawSource.clear();
player->start(true /* sourceAlreadyStarted */);
status_t finalStatus;
while (!player->reachedEOS(&finalStatus)) {
usleep(100000ll);
}
delete player;
player = NULL;
return;
} else if (gReproduceBug >= 3 && gReproduceBug <= 5) {
int64_t durationUs;
CHECK(meta->findInt64(kKeyDuration, &durationUs));
status_t err;
MediaBuffer *buffer;
MediaSource::ReadOptions options;
int64_t seekTimeUs = -1;
for (;;) {
err = rawSource->read(&buffer, &options);
options.clearSeekTo();
bool shouldSeek = false;
if (err == INFO_FORMAT_CHANGED) {
CHECK(buffer == NULL);
printf("format changed.\n");
continue;
} else if (err != OK) {
printf("reached EOF.\n");
shouldSeek = true;
} else {
int64_t timestampUs;
CHECK(buffer->meta_data()->findInt64(kKeyTime, ×tampUs));
bool failed = false;
if (seekTimeUs >= 0) {
int64_t diff = timestampUs - seekTimeUs;
if (diff < 0) {
diff = -diff;
}
if ((gReproduceBug == 4 && diff > 500000)
|| (gReproduceBug == 5 && timestampUs < 0)) {
printf("wanted: %.2f secs, got: %.2f secs\n",
seekTimeUs / 1E6, timestampUs / 1E6);
printf("ERROR: ");
failed = true;
}
}
//.........这里部分代码省略.........
示例5: main
int main() {
// We only have an AMR-WB encoder on sholes...
static bool outputWBAMR = false;
static const int32_t kSampleRate = outputWBAMR ? 16000 : 8000;
static const int32_t kNumChannels = 1;
android::ProcessState::self()->startThreadPool();
OMXClient client;
CHECK_EQ(client.connect(), (status_t)OK);
#if 0
sp<MediaSource> source = new SineSource(kSampleRate, kNumChannels);
#else
sp<MediaSource> source = new AudioSource(
AUDIO_SOURCE_DEFAULT,
kSampleRate,
audio_channel_in_mask_from_count(kNumChannels));
#endif
sp<MetaData> meta = new MetaData;
meta->setCString(
kKeyMIMEType,
outputWBAMR ? MEDIA_MIMETYPE_AUDIO_AMR_WB
: MEDIA_MIMETYPE_AUDIO_AMR_NB);
meta->setInt32(kKeyChannelCount, kNumChannels);
meta->setInt32(kKeySampleRate, kSampleRate);
int32_t maxInputSize;
if (source->getFormat()->findInt32(kKeyMaxInputSize, &maxInputSize)) {
meta->setInt32(kKeyMaxInputSize, maxInputSize);
}
sp<MediaSource> encoder = OMXCodec::Create(
client.interface(),
meta, true /* createEncoder */,
source);
#if 1
sp<AMRWriter> writer = new AMRWriter("/sdcard/out.amr");
writer->addSource(encoder);
writer->start();
sleep(10);
writer->stop();
#else
sp<MediaSource> decoder = OMXCodec::Create(
client.interface(),
meta, false /* createEncoder */,
encoder);
#if 0
AudioPlayer *player = new AudioPlayer(NULL);
player->setSource(decoder);
player->start();
sleep(10);
player->stop();
delete player;
player = NULL;
#elif 0
CHECK_EQ(decoder->start(), (status_t)OK);
MediaBuffer *buffer;
while (decoder->read(&buffer) == OK) {
// do something with buffer
putchar('.');
fflush(stdout);
buffer->release();
buffer = NULL;
}
CHECK_EQ(decoder->stop(), (status_t)OK);
#endif
#endif
return 0;
}