Loading cmds/stagefright/AudioPlayer.cpp +18 −7 Original line number Diff line number Diff line Loading @@ -249,8 +249,7 @@ status_t AudioPlayer::start(bool sourceAlreadyStarted) { mAudioTrack = new AudioTrack( AUDIO_STREAM_MUSIC, mSampleRate, AUDIO_FORMAT_PCM_16_BIT, audioMask, 0 /*frameCount*/, AUDIO_OUTPUT_FLAG_NONE, wp<IAudioTrackCallback>::fromExisting(this), 0 /*frameCount*/, AUDIO_OUTPUT_FLAG_NONE, &AudioCallback, this, 0 /*notificationFrames*/); if ((err = mAudioTrack->initCheck()) != OK) { Loading Loading @@ -398,6 +397,10 @@ void AudioPlayer::reset() { mStartPosUs = 0; } // static void AudioPlayer::AudioCallback(int event, void *user, void *info) { static_cast<AudioPlayer *>(user)->AudioCallback(event, info); } bool AudioPlayer::reachedEOS(status_t *finalStatus) { *finalStatus = OK; Loading Loading @@ -452,12 +455,20 @@ size_t AudioPlayer::AudioSinkCallback( return 0; } size_t AudioPlayer::onMoreData(const AudioTrack::Buffer& buffer) { return fillBuffer(buffer.raw, buffer.size); void AudioPlayer::AudioCallback(int event, void *info) { switch (event) { case AudioTrack::EVENT_MORE_DATA: { AudioTrack::Buffer *buffer = (AudioTrack::Buffer *)info; size_t numBytesWritten = fillBuffer(buffer->raw, buffer->size); buffer->size = numBytesWritten; } break; void AudioPlayer::onStreamEnd() { case AudioTrack::EVENT_STREAM_END: mReachedEOS = true; break; } } size_t AudioPlayer::fillBuffer(void *data, size_t size) { Loading cmds/stagefright/AudioPlayer.h +2 −5 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ #define AUDIO_PLAYER_H_ #include <media/AudioResamplerPublic.h> #include <media/AudioTrack.h> #include <media/stagefright/MediaSource.h> #include <media/MediaPlayerInterface.h> #include <media/stagefright/MediaBuffer.h> Loading @@ -27,9 +26,10 @@ namespace android { class AudioTrack; struct AwesomePlayer; class AudioPlayer : AudioTrack::IAudioTrackCallback { class AudioPlayer { public: enum { REACHED_EOS, Loading Loading @@ -66,9 +66,6 @@ public: status_t getPlaybackRate(AudioPlaybackRate *rate /* nonnull */); private: friend sp<AudioPlayer>; size_t onMoreData(const AudioTrack::Buffer& buffer) override; void onStreamEnd() override; sp<MediaSource> mSource; sp<AudioTrack> mAudioTrack; Loading cmds/stagefright/audioloop.cpp +3 −3 Original line number Diff line number Diff line Loading @@ -166,9 +166,9 @@ int main(int argc, char* argv[]) sp<MediaSource> decoder = SimpleDecodingSource::Create(encoder); if (playToSpeaker) { sp<AudioPlayer> player = sp<AudioPlayer>::make(nullptr); player->setSource(decoder); player->start(); AudioPlayer player(NULL); player.setSource(decoder); player.start(); sleep(duration); ALOGI("Line: %d", __LINE__); Loading cmds/stagefright/record.cpp +12 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ #include <media/stagefright/SimpleDecodingSource.h> #include <media/MediaPlayerInterface.h> #include "AudioPlayer.h" using namespace android; Loading Loading @@ -273,6 +274,17 @@ int main(int /* argc */, char ** /* argv */) { 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<AMessage> encMeta = new AMessage; encMeta->setString("mime", 0 ? MEDIA_MIMETYPE_AUDIO_AMR_WB : MEDIA_MIMETYPE_AUDIO_AAC); Loading cmds/stagefright/stagefright.cpp +4 −1 Original line number Diff line number Diff line Loading @@ -220,7 +220,7 @@ static void playSource(sp<MediaSource> &source) { } if (gPlaybackAudio) { sp<AudioPlayer> player = sp<AudioPlayer>::make(nullptr); AudioPlayer *player = new AudioPlayer(NULL); player->setSource(rawSource); rawSource.clear(); Loading @@ -235,6 +235,9 @@ static void playSource(sp<MediaSource> &source) { fprintf(stderr, "unable to start playback err=%d (0x%08x)\n", err, err); } delete player; player = NULL; return; } else if (gReproduceBug >= 3 && gReproduceBug <= 5) { int64_t durationUs; Loading Loading
cmds/stagefright/AudioPlayer.cpp +18 −7 Original line number Diff line number Diff line Loading @@ -249,8 +249,7 @@ status_t AudioPlayer::start(bool sourceAlreadyStarted) { mAudioTrack = new AudioTrack( AUDIO_STREAM_MUSIC, mSampleRate, AUDIO_FORMAT_PCM_16_BIT, audioMask, 0 /*frameCount*/, AUDIO_OUTPUT_FLAG_NONE, wp<IAudioTrackCallback>::fromExisting(this), 0 /*frameCount*/, AUDIO_OUTPUT_FLAG_NONE, &AudioCallback, this, 0 /*notificationFrames*/); if ((err = mAudioTrack->initCheck()) != OK) { Loading Loading @@ -398,6 +397,10 @@ void AudioPlayer::reset() { mStartPosUs = 0; } // static void AudioPlayer::AudioCallback(int event, void *user, void *info) { static_cast<AudioPlayer *>(user)->AudioCallback(event, info); } bool AudioPlayer::reachedEOS(status_t *finalStatus) { *finalStatus = OK; Loading Loading @@ -452,12 +455,20 @@ size_t AudioPlayer::AudioSinkCallback( return 0; } size_t AudioPlayer::onMoreData(const AudioTrack::Buffer& buffer) { return fillBuffer(buffer.raw, buffer.size); void AudioPlayer::AudioCallback(int event, void *info) { switch (event) { case AudioTrack::EVENT_MORE_DATA: { AudioTrack::Buffer *buffer = (AudioTrack::Buffer *)info; size_t numBytesWritten = fillBuffer(buffer->raw, buffer->size); buffer->size = numBytesWritten; } break; void AudioPlayer::onStreamEnd() { case AudioTrack::EVENT_STREAM_END: mReachedEOS = true; break; } } size_t AudioPlayer::fillBuffer(void *data, size_t size) { Loading
cmds/stagefright/AudioPlayer.h +2 −5 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ #define AUDIO_PLAYER_H_ #include <media/AudioResamplerPublic.h> #include <media/AudioTrack.h> #include <media/stagefright/MediaSource.h> #include <media/MediaPlayerInterface.h> #include <media/stagefright/MediaBuffer.h> Loading @@ -27,9 +26,10 @@ namespace android { class AudioTrack; struct AwesomePlayer; class AudioPlayer : AudioTrack::IAudioTrackCallback { class AudioPlayer { public: enum { REACHED_EOS, Loading Loading @@ -66,9 +66,6 @@ public: status_t getPlaybackRate(AudioPlaybackRate *rate /* nonnull */); private: friend sp<AudioPlayer>; size_t onMoreData(const AudioTrack::Buffer& buffer) override; void onStreamEnd() override; sp<MediaSource> mSource; sp<AudioTrack> mAudioTrack; Loading
cmds/stagefright/audioloop.cpp +3 −3 Original line number Diff line number Diff line Loading @@ -166,9 +166,9 @@ int main(int argc, char* argv[]) sp<MediaSource> decoder = SimpleDecodingSource::Create(encoder); if (playToSpeaker) { sp<AudioPlayer> player = sp<AudioPlayer>::make(nullptr); player->setSource(decoder); player->start(); AudioPlayer player(NULL); player.setSource(decoder); player.start(); sleep(duration); ALOGI("Line: %d", __LINE__); Loading
cmds/stagefright/record.cpp +12 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ #include <media/stagefright/SimpleDecodingSource.h> #include <media/MediaPlayerInterface.h> #include "AudioPlayer.h" using namespace android; Loading Loading @@ -273,6 +274,17 @@ int main(int /* argc */, char ** /* argv */) { 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<AMessage> encMeta = new AMessage; encMeta->setString("mime", 0 ? MEDIA_MIMETYPE_AUDIO_AMR_WB : MEDIA_MIMETYPE_AUDIO_AAC); Loading
cmds/stagefright/stagefright.cpp +4 −1 Original line number Diff line number Diff line Loading @@ -220,7 +220,7 @@ static void playSource(sp<MediaSource> &source) { } if (gPlaybackAudio) { sp<AudioPlayer> player = sp<AudioPlayer>::make(nullptr); AudioPlayer *player = new AudioPlayer(NULL); player->setSource(rawSource); rawSource.clear(); Loading @@ -235,6 +235,9 @@ static void playSource(sp<MediaSource> &source) { fprintf(stderr, "unable to start playback err=%d (0x%08x)\n", err, err); } delete player; player = NULL; return; } else if (gReproduceBug >= 3 && gReproduceBug <= 5) { int64_t durationUs; Loading