am 12bc3af0: Merge change I6f6bf3d8 into eclair-mr2
Merge commit '12bc3af0fb4ce17065d0f17982e0a9da52fc093d' into eclair-mr2-plus-aosp * commit '12bc3af0fb4ce17065d0f17982e0a9da52fc093d': Support raw audio sources in stagefright commandline tool.
This commit is contained in:
@@ -55,14 +55,23 @@ static void playSource(OMXClient *client, const sp<MediaSource> &source) {
|
|||||||
int64_t durationUs;
|
int64_t durationUs;
|
||||||
CHECK(meta->findInt64(kKeyDuration, &durationUs));
|
CHECK(meta->findInt64(kKeyDuration, &durationUs));
|
||||||
|
|
||||||
sp<OMXCodec> decoder = OMXCodec::Create(
|
const char *mime;
|
||||||
|
CHECK(meta->findCString(kKeyMIMEType, &mime));
|
||||||
|
|
||||||
|
sp<MediaSource> rawSource;
|
||||||
|
if (!strcasecmp(MEDIA_MIMETYPE_AUDIO_RAW, mime)) {
|
||||||
|
rawSource = source;
|
||||||
|
} else {
|
||||||
|
rawSource = OMXCodec::Create(
|
||||||
client->interface(), meta, false /* createEncoder */, source);
|
client->interface(), meta, false /* createEncoder */, source);
|
||||||
|
|
||||||
if (decoder == NULL) {
|
if (rawSource == NULL) {
|
||||||
return;
|
fprintf(stderr, "Failed to instantiate decoder for '%s'.\n", mime);
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
decoder->start();
|
rawSource->start();
|
||||||
|
|
||||||
if (gReproduceBug >= 3 && gReproduceBug <= 5) {
|
if (gReproduceBug >= 3 && gReproduceBug <= 5) {
|
||||||
status_t err;
|
status_t err;
|
||||||
@@ -70,7 +79,7 @@ static void playSource(OMXClient *client, const sp<MediaSource> &source) {
|
|||||||
MediaSource::ReadOptions options;
|
MediaSource::ReadOptions options;
|
||||||
int64_t seekTimeUs = -1;
|
int64_t seekTimeUs = -1;
|
||||||
for (;;) {
|
for (;;) {
|
||||||
err = decoder->read(&buffer, &options);
|
err = rawSource->read(&buffer, &options);
|
||||||
options.clearSeekTo();
|
options.clearSeekTo();
|
||||||
|
|
||||||
bool shouldSeek = false;
|
bool shouldSeek = false;
|
||||||
@@ -134,7 +143,7 @@ static void playSource(OMXClient *client, const sp<MediaSource> &source) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
decoder->stop();
|
rawSource->stop();
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -151,7 +160,7 @@ static void playSource(OMXClient *client, const sp<MediaSource> &source) {
|
|||||||
MediaBuffer *buffer;
|
MediaBuffer *buffer;
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
status_t err = decoder->read(&buffer, &options);
|
status_t err = rawSource->read(&buffer, &options);
|
||||||
options.clearSeekTo();
|
options.clearSeekTo();
|
||||||
|
|
||||||
if (err != OK) {
|
if (err != OK) {
|
||||||
@@ -193,7 +202,7 @@ static void playSource(OMXClient *client, const sp<MediaSource> &source) {
|
|||||||
options.setSeekTo(0);
|
options.setSeekTo(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
decoder->stop();
|
rawSource->stop();
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
int64_t delay = getNowUs() - startTime;
|
int64_t delay = getNowUs() - startTime;
|
||||||
|
|||||||
Reference in New Issue
Block a user