本文整理汇总了C++中KeyedVector::clear方法的典型用法代码示例。如果您正苦于以下问题:C++ KeyedVector::clear方法的具体用法?C++ KeyedVector::clear怎么用?C++ KeyedVector::clear使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类KeyedVector
的用法示例。
在下文中一共展示了KeyedVector::clear方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: muxing
//.........这里部分代码省略.........
int64_t duration;
CHECK(format->findInt64("durationUs", &duration));
// Since we got the duration now, correct the start time.
if (enableTrim) {
if (trimStartTimeUs > duration) {
fprintf(stderr, "Warning: trimStartTimeUs > duration,"
" reset to 0\n");
trimStartTimeUs = 0;
}
}
ALOGV("selecting track %zu", i);
err = extractor->selectTrack(i);
CHECK_EQ(err, (status_t)OK);
ssize_t newTrackIndex = muxer->addTrack(format);
if (newTrackIndex < 0) {
fprintf(stderr, "%s track (%zu) unsupported by muxer\n",
isAudio ? "audio" : "video",
i);
} else {
trackIndexMap.add(i, newTrackIndex);
}
}
int64_t muxerStartTimeUs = ALooper::GetNowUs();
bool sawInputEOS = false;
size_t trackIndex = -1;
sp<ABuffer> newBuffer = new ABuffer(bufferSize);
muxer->setOrientationHint(rotationDegrees);
muxer->start();
while (!sawInputEOS) {
status_t err = extractor->getSampleTrackIndex(&trackIndex);
if (err != OK) {
ALOGV("saw input eos, err %d", err);
sawInputEOS = true;
break;
} else if (trackIndexMap.indexOfKey(trackIndex) < 0) {
// ALOGV("skipping input from unsupported track %zu", trackIndex);
extractor->advance();
continue;
} else {
// ALOGV("reading sample from track index %zu\n", trackIndex);
err = extractor->readSampleData(newBuffer);
CHECK_EQ(err, (status_t)OK);
int64_t timeUs;
err = extractor->getSampleTime(&timeUs);
CHECK_EQ(err, (status_t)OK);
sp<MetaData> meta;
err = extractor->getSampleMeta(&meta);
CHECK_EQ(err, (status_t)OK);
uint32_t sampleFlags = 0;
int32_t val;
if (meta->findInt32(kKeyIsSyncFrame, &val) && val != 0) {
// We only support BUFFER_FLAG_SYNCFRAME in the flag for now.
sampleFlags |= MediaCodec::BUFFER_FLAG_SYNCFRAME;
// We turn on trimming at the sync frame.
if (enableTrim && timeUs > trimStartTimeUs &&
timeUs <= trimEndTimeUs) {
if (trimStarted == false) {
trimOffsetTimeUs = timeUs;
}
trimStarted = true;
}
}
// Trim can end at any non-sync frame.
if (enableTrim && timeUs > trimEndTimeUs) {
trimStarted = false;
}
if (!enableTrim || (enableTrim && trimStarted)) {
err = muxer->writeSampleData(newBuffer,
trackIndexMap.valueFor(trackIndex),
timeUs - trimOffsetTimeUs, sampleFlags);
}
extractor->advance();
}
}
muxer->stop();
newBuffer.clear();
trackIndexMap.clear();
int64_t elapsedTimeUs = ALooper::GetNowUs() - muxerStartTimeUs;
fprintf(stderr, "SUCCESS: muxer generate the video in %" PRId64 " ms\n",
elapsedTimeUs / 1000);
return 0;
}