diff options
author | Andreas Huber <andih@google.com> | 2009-09-10 14:13:30 -0700 |
---|---|---|
committer | Andreas Huber <andih@google.com> | 2009-09-10 14:43:36 -0700 |
commit | e6c409632f773e41f33188272a0072be9fcb783f (patch) | |
tree | 228c0d88ce6818974b8bab7062e9fef05f3ba250 /cmds | |
parent | d9ca6a79c6ac9cc8790aabbb42fe2ce579001528 (diff) | |
download | frameworks_base-e6c409632f773e41f33188272a0072be9fcb783f.zip frameworks_base-e6c409632f773e41f33188272a0072be9fcb783f.tar.gz frameworks_base-e6c409632f773e41f33188272a0072be9fcb783f.tar.bz2 |
Media MIME types now have corresponding constants in MediaDefs.h, new codec enumeration API.
Diffstat (limited to 'cmds')
-rw-r--r-- | cmds/stagefright/JPEGSource.cpp | 3 | ||||
-rw-r--r-- | cmds/stagefright/SineSource.cpp | 3 | ||||
-rw-r--r-- | cmds/stagefright/record.cpp | 10 | ||||
-rw-r--r-- | cmds/stagefright/stagefright.cpp | 58 |
4 files changed, 67 insertions, 7 deletions
diff --git a/cmds/stagefright/JPEGSource.cpp b/cmds/stagefright/JPEGSource.cpp index 4e9ca4e..25c772f 100644 --- a/cmds/stagefright/JPEGSource.cpp +++ b/cmds/stagefright/JPEGSource.cpp @@ -23,6 +23,7 @@ #include <media/stagefright/DataSource.h> #include <media/stagefright/MediaBufferGroup.h> #include <media/stagefright/MediaDebug.h> +#include <media/stagefright/MediaDefs.h> #include <media/stagefright/MediaErrors.h> #include <media/stagefright/MetaData.h> @@ -99,7 +100,7 @@ status_t JPEGSource::stop() { sp<MetaData> JPEGSource::getFormat() { sp<MetaData> meta = new MetaData; - meta->setCString(kKeyMIMEType, "image/jpeg"); + meta->setCString(kKeyMIMEType, MEDIA_MIMETYPE_IMAGE_JPEG); meta->setInt32(kKeyWidth, mWidth); meta->setInt32(kKeyHeight, mHeight); meta->setInt32(kKeyMaxInputSize, mSize); diff --git a/cmds/stagefright/SineSource.cpp b/cmds/stagefright/SineSource.cpp index 3c25a7f..e5a6ccb 100644 --- a/cmds/stagefright/SineSource.cpp +++ b/cmds/stagefright/SineSource.cpp @@ -4,6 +4,7 @@ #include <media/stagefright/MediaBufferGroup.h> #include <media/stagefright/MediaDebug.h> +#include <media/stagefright/MediaDefs.h> #include <media/stagefright/MetaData.h> namespace android { @@ -48,7 +49,7 @@ status_t SineSource::stop() { sp<MetaData> SineSource::getFormat() { sp<MetaData> meta = new MetaData; - meta->setCString(kKeyMIMEType, "audio/raw"); + meta->setCString(kKeyMIMEType, MEDIA_MIMETYPE_AUDIO_RAW); meta->setInt32(kKeyChannelCount, mNumChannels); meta->setInt32(kKeySampleRate, mSampleRate); diff --git a/cmds/stagefright/record.cpp b/cmds/stagefright/record.cpp index 4751580..323d448 100644 --- a/cmds/stagefright/record.cpp +++ b/cmds/stagefright/record.cpp @@ -21,6 +21,7 @@ #include <media/stagefright/CameraSource.h> #include <media/stagefright/MediaBufferGroup.h> #include <media/stagefright/MediaDebug.h> +#include <media/stagefright/MediaDefs.h> #include <media/stagefright/MetaData.h> #include <media/stagefright/MPEG4Extractor.h> #include <media/stagefright/MPEG4Writer.h> @@ -45,7 +46,7 @@ public: sp<MetaData> meta = new MetaData; meta->setInt32(kKeyWidth, mWidth); meta->setInt32(kKeyHeight, mHeight); - meta->setCString(kKeyMIMEType, "video/raw"); + meta->setCString(kKeyMIMEType, MEDIA_MIMETYPE_VIDEO_RAW); return meta; } @@ -149,8 +150,8 @@ int main(int argc, char **argv) { #endif sp<MetaData> enc_meta = new MetaData; - // enc_meta->setCString(kKeyMIMEType, "video/3gpp"); - enc_meta->setCString(kKeyMIMEType, "video/mp4v-es"); + // enc_meta->setCString(kKeyMIMEType, MEDIA_MIMETYPE_VIDEO_H263); + enc_meta->setCString(kKeyMIMEType, MEDIA_MIMETYPE_VIDEO_MPEG4); enc_meta->setInt32(kKeyWidth, width); enc_meta->setInt32(kKeyHeight, height); @@ -228,7 +229,8 @@ int main(int argc, char **argv) { #endif sp<MetaData> encMeta = new MetaData; - encMeta->setCString(kKeyMIMEType, 1 ? "audio/amr-wb" : "audio/mp4a-latm"); + 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); diff --git a/cmds/stagefright/stagefright.cpp b/cmds/stagefright/stagefright.cpp index a0b83fb..d1926b4 100644 --- a/cmds/stagefright/stagefright.cpp +++ b/cmds/stagefright/stagefright.cpp @@ -26,6 +26,7 @@ #include <media/stagefright/CachingDataSource.h> #include <media/stagefright/HTTPDataSource.h> #include <media/stagefright/MediaDebug.h> +#include <media/stagefright/MediaDefs.h> #include <media/stagefright/MediaPlayerImpl.h> #include <media/stagefright/MediaExtractor.h> #include <media/stagefright/MediaSource.h> @@ -126,6 +127,7 @@ static void usage(const char *me) { fprintf(stderr, " -l(ist) components\n"); fprintf(stderr, " -m max-number-of-frames-to-decode in each pass\n"); fprintf(stderr, " -b bug to reproduce\n"); + fprintf(stderr, " -p(rofiles) dump decoder profiles supported\n"); } int main(int argc, char **argv) { @@ -133,12 +135,13 @@ int main(int argc, char **argv) { bool audioOnly = false; bool listComponents = false; + bool dumpProfiles = false; gNumRepetitions = 1; gMaxNumFrames = 0; gReproduceBug = -1; int res; - while ((res = getopt(argc, argv, "han:lm:b:")) >= 0) { + while ((res = getopt(argc, argv, "han:lm:b:p")) >= 0) { switch (res) { case 'a': { @@ -174,6 +177,12 @@ int main(int argc, char **argv) { break; } + case 'p': + { + dumpProfiles = true; + break; + } + case '?': case 'h': default: @@ -188,6 +197,53 @@ int main(int argc, char **argv) { argc -= optind; argv += optind; + if (dumpProfiles) { + sp<IServiceManager> sm = defaultServiceManager(); + sp<IBinder> binder = sm->getService(String16("media.player")); + sp<IMediaPlayerService> service = + interface_cast<IMediaPlayerService>(binder); + + CHECK(service.get() != NULL); + + sp<IOMX> omx = service->createOMX(); + CHECK(omx.get() != NULL); + + const char *kMimeTypes[] = { + MEDIA_MIMETYPE_VIDEO_AVC, MEDIA_MIMETYPE_VIDEO_MPEG4, + MEDIA_MIMETYPE_VIDEO_H263 + }; + + for (size_t k = 0; k < sizeof(kMimeTypes) / sizeof(kMimeTypes[0]); + ++k) { + printf("type '%s':\n", kMimeTypes[k]); + + Vector<CodecCapabilities> results; + CHECK_EQ(QueryCodecs(omx, kMimeTypes[k], + true, // queryDecoders + &results), OK); + + for (size_t i = 0; i < results.size(); ++i) { + printf(" decoder '%s' supports ", + results[i].mComponentName.string()); + + if (results[i].mProfileLevels.size() == 0) { + printf("NOTHING.\n"); + continue; + } + + for (size_t j = 0; j < results[i].mProfileLevels.size(); ++j) { + const CodecProfileLevel &profileLevel = + results[i].mProfileLevels[j]; + + printf("%s%ld/%ld", j > 0 ? ", " : "", + profileLevel.mProfile, profileLevel.mLevel); + } + + printf("\n"); + } + } + } + if (listComponents) { sp<IServiceManager> sm = defaultServiceManager(); sp<IBinder> binder = sm->getService(String16("media.player")); |