diff options
author | Andreas Huber <andih@google.com> | 2009-09-02 14:01:43 -0700 |
---|---|---|
committer | Andreas Huber <andih@google.com> | 2009-09-02 14:01:43 -0700 |
commit | e5adbeee3401915ff8e1a983396ce3554436b11c (patch) | |
tree | b87c6bf50a10502ce2aa5878b9ebb9ffd73edd1f /cmds/stagefright/record.cpp | |
parent | bc327427531dddd3de2e55c093641207c013f0dd (diff) | |
download | frameworks_av-e5adbeee3401915ff8e1a983396ce3554436b11c.zip frameworks_av-e5adbeee3401915ff8e1a983396ce3554436b11c.tar.gz frameworks_av-e5adbeee3401915ff8e1a983396ce3554436b11c.tar.bz2 |
Some work to make audio encoding work.
Diffstat (limited to 'cmds/stagefright/record.cpp')
-rw-r--r-- | cmds/stagefright/record.cpp | 63 |
1 files changed, 62 insertions, 1 deletions
diff --git a/cmds/stagefright/record.cpp b/cmds/stagefright/record.cpp index 4b44761..c049594 100644 --- a/cmds/stagefright/record.cpp +++ b/cmds/stagefright/record.cpp @@ -14,7 +14,10 @@ * limitations under the License. */ +#include "SineSource.h" + #include <binder/ProcessState.h> +#include <media/stagefright/AudioPlayer.h> #include <media/stagefright/CameraSource.h> #include <media/stagefright/MediaBufferGroup.h> #include <media/stagefright/MediaDebug.h> @@ -24,9 +27,11 @@ #include <media/stagefright/MmapSource.h> #include <media/stagefright/OMXClient.h> #include <media/stagefright/OMXCodec.h> +#include <media/MediaPlayerInterface.h> using namespace android; +#if 0 class DummySource : public MediaSource { public: DummySource(int width, int height) @@ -158,7 +163,7 @@ int main(int argc, char **argv) { OMXCodec::Create( client.interface(), enc_meta, true /* createEncoder */, decoder); -#if 1 +#if 0 sp<MPEG4Writer> writer = new MPEG4Writer("/sdcard/output.mp4"); writer->addSource(enc_meta, encoder); writer->start(); @@ -204,4 +209,60 @@ int main(int argc, char **argv) { return 0; } +#endif + +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 ? "audio/3gpp" : "audio/mp4a-latm"); + 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 == 10000) { + break; + } + } + printf("$\n"); + + encoder->stop(); + + client.disconnect(); + + return 0; +} |