summaryrefslogtreecommitdiffstats
path: root/cmds
diff options
context:
space:
mode:
authorAndreas Huber <andih@google.com>2009-11-03 15:59:13 -0800
committerAndreas Huber <andih@google.com>2009-11-03 15:59:13 -0800
commit125ef261deb4efbb50cc41c60902dea48d8d4187 (patch)
tree0f0fecafc3f4b3c05342983cdd9b80a38fe2ecf8 /cmds
parentc0bbcf32ac6ffa76409232d7156250e1092bfa24 (diff)
downloadframeworks_av-125ef261deb4efbb50cc41c60902dea48d8d4187.zip
frameworks_av-125ef261deb4efbb50cc41c60902dea48d8d4187.tar.gz
frameworks_av-125ef261deb4efbb50cc41c60902dea48d8d4187.tar.bz2
Support raw audio sources in stagefright commandline tool.
Diffstat (limited to 'cmds')
-rw-r--r--cmds/stagefright/stagefright.cpp25
1 files changed, 17 insertions, 8 deletions
diff --git a/cmds/stagefright/stagefright.cpp b/cmds/stagefright/stagefright.cpp
index 3b7cece..d26e558 100644
--- a/cmds/stagefright/stagefright.cpp
+++ b/cmds/stagefright/stagefright.cpp
@@ -55,14 +55,23 @@ static void playSource(OMXClient *client, const sp<MediaSource> &source) {
int64_t 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);
- if (decoder == NULL) {
- return;
+ if (rawSource == NULL) {
+ fprintf(stderr, "Failed to instantiate decoder for '%s'.\n", mime);
+ return;
+ }
}
- decoder->start();
+ rawSource->start();
if (gReproduceBug >= 3 && gReproduceBug <= 5) {
status_t err;
@@ -70,7 +79,7 @@ static void playSource(OMXClient *client, const sp<MediaSource> &source) {
MediaSource::ReadOptions options;
int64_t seekTimeUs = -1;
for (;;) {
- err = decoder->read(&buffer, &options);
+ err = rawSource->read(&buffer, &options);
options.clearSeekTo();
bool shouldSeek = false;
@@ -134,7 +143,7 @@ static void playSource(OMXClient *client, const sp<MediaSource> &source) {
}
}
- decoder->stop();
+ rawSource->stop();
return;
}
@@ -151,7 +160,7 @@ static void playSource(OMXClient *client, const sp<MediaSource> &source) {
MediaBuffer *buffer;
for (;;) {
- status_t err = decoder->read(&buffer, &options);
+ status_t err = rawSource->read(&buffer, &options);
options.clearSeekTo();
if (err != OK) {
@@ -193,7 +202,7 @@ static void playSource(OMXClient *client, const sp<MediaSource> &source) {
options.setSeekTo(0);
}
- decoder->stop();
+ rawSource->stop();
printf("\n");
int64_t delay = getNowUs() - startTime;