Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 42418a3b authored by Atneya Nair's avatar Atneya Nair
Browse files

Revert "Revert "Implement AudioTrack callback in AudioPlayer""

This reverts commit b807582a.

Reason for revert: Issue causing revert was fixed in Ifbf177ae43fa4c2a61027af6c131846961c09cd8

Change-Id: I864e4ea9b186856bc4a204b4dcc33c3cf4635582
Related-To: Ifbf177ae43fa4c2a61027af6c131846961c09cd8
parent 7cb80e51
Loading
Loading
Loading
Loading
+7 −18
Original line number Original line Diff line number Diff line
@@ -249,7 +249,8 @@ status_t AudioPlayer::start(bool sourceAlreadyStarted) {


        mAudioTrack = new AudioTrack(
        mAudioTrack = new AudioTrack(
                AUDIO_STREAM_MUSIC, mSampleRate, AUDIO_FORMAT_PCM_16_BIT, audioMask,
                AUDIO_STREAM_MUSIC, mSampleRate, AUDIO_FORMAT_PCM_16_BIT, audioMask,
                0 /*frameCount*/, AUDIO_OUTPUT_FLAG_NONE, &AudioCallback, this,
                0 /*frameCount*/, AUDIO_OUTPUT_FLAG_NONE,
                wp<IAudioTrackCallback>::fromExisting(this),
                0 /*notificationFrames*/);
                0 /*notificationFrames*/);


        if ((err = mAudioTrack->initCheck()) != OK) {
        if ((err = mAudioTrack->initCheck()) != OK) {
@@ -397,10 +398,6 @@ void AudioPlayer::reset() {
    mStartPosUs = 0;
    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) {
bool AudioPlayer::reachedEOS(status_t *finalStatus) {
    *finalStatus = OK;
    *finalStatus = OK;
@@ -455,20 +452,12 @@ size_t AudioPlayer::AudioSinkCallback(
    return 0;
    return 0;
}
}


void AudioPlayer::AudioCallback(int event, void *info) {
size_t AudioPlayer::onMoreData(const AudioTrack::Buffer& buffer) {
    switch (event) {
    return fillBuffer(buffer.raw, buffer.size);
    case AudioTrack::EVENT_MORE_DATA:
        {
        AudioTrack::Buffer *buffer = (AudioTrack::Buffer *)info;
        size_t numBytesWritten = fillBuffer(buffer->raw, buffer->size);
        buffer->size = numBytesWritten;
}
}
        break;


    case AudioTrack::EVENT_STREAM_END:
void AudioPlayer::onStreamEnd() {
    mReachedEOS = true;
    mReachedEOS = true;
        break;
    }
}
}


size_t AudioPlayer::fillBuffer(void *data, size_t size) {
size_t AudioPlayer::fillBuffer(void *data, size_t size) {
+5 −5
Original line number Original line Diff line number Diff line
@@ -19,6 +19,7 @@
#define AUDIO_PLAYER_H_
#define AUDIO_PLAYER_H_


#include <media/AudioResamplerPublic.h>
#include <media/AudioResamplerPublic.h>
#include <media/AudioTrack.h>
#include <media/stagefright/MediaSource.h>
#include <media/stagefright/MediaSource.h>
#include <media/MediaPlayerInterface.h>
#include <media/MediaPlayerInterface.h>
#include <media/stagefright/MediaBuffer.h>
#include <media/stagefright/MediaBuffer.h>
@@ -26,10 +27,9 @@


namespace android {
namespace android {


class AudioTrack;
struct AwesomePlayer;
struct AwesomePlayer;


class AudioPlayer {
class AudioPlayer : AudioTrack::IAudioTrackCallback {
public:
public:
    enum {
    enum {
        REACHED_EOS,
        REACHED_EOS,
@@ -66,6 +66,9 @@ public:
    status_t getPlaybackRate(AudioPlaybackRate *rate /* nonnull */);
    status_t getPlaybackRate(AudioPlaybackRate *rate /* nonnull */);


private:
private:
    friend sp<AudioPlayer>;
    size_t onMoreData(const AudioTrack::Buffer& buffer) override;
    void onStreamEnd() override;
    sp<MediaSource> mSource;
    sp<MediaSource> mSource;
    sp<AudioTrack> mAudioTrack;
    sp<AudioTrack> mAudioTrack;


@@ -99,9 +102,6 @@ private:
    int64_t mStartPosUs;
    int64_t mStartPosUs;
    const uint32_t mCreateFlags;
    const uint32_t mCreateFlags;


    static void AudioCallback(int event, void *user, void *info);
    void AudioCallback(int event, void *info);

    static size_t AudioSinkCallback(
    static size_t AudioSinkCallback(
            MediaPlayerBase::AudioSink *audioSink,
            MediaPlayerBase::AudioSink *audioSink,
            void *data, size_t size, void *me,
            void *data, size_t size, void *me,
+3 −3
Original line number Original line Diff line number Diff line
@@ -166,9 +166,9 @@ int main(int argc, char* argv[])
        sp<MediaSource> decoder = SimpleDecodingSource::Create(encoder);
        sp<MediaSource> decoder = SimpleDecodingSource::Create(encoder);


        if (playToSpeaker) {
        if (playToSpeaker) {
            AudioPlayer player(NULL);
            sp<AudioPlayer> player = sp<AudioPlayer>::make(nullptr);
            player.setSource(decoder);
            player->setSource(decoder);
            player.start();
            player->start();
            sleep(duration);
            sleep(duration);


ALOGI("Line: %d", __LINE__);
ALOGI("Line: %d", __LINE__);
+0 −12
Original line number Original line Diff line number Diff line
@@ -32,7 +32,6 @@
#include <media/stagefright/SimpleDecodingSource.h>
#include <media/stagefright/SimpleDecodingSource.h>
#include <media/MediaPlayerInterface.h>
#include <media/MediaPlayerInterface.h>


#include "AudioPlayer.h"


using namespace android;
using namespace android;


@@ -274,17 +273,6 @@ int main(int /* argc */, char ** /* argv */) {
    const int32_t kNumChannels = 2;
    const int32_t kNumChannels = 2;
    sp<MediaSource> audioSource = new SineSource(kSampleRate, kNumChannels);
    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;
    sp<AMessage> encMeta = new AMessage;
    encMeta->setString("mime",
    encMeta->setString("mime",
            0 ? MEDIA_MIMETYPE_AUDIO_AMR_WB : MEDIA_MIMETYPE_AUDIO_AAC);
            0 ? MEDIA_MIMETYPE_AUDIO_AMR_WB : MEDIA_MIMETYPE_AUDIO_AAC);
+1 −4
Original line number Original line Diff line number Diff line
@@ -220,7 +220,7 @@ static void playSource(sp<MediaSource> &source) {
    }
    }


    if (gPlaybackAudio) {
    if (gPlaybackAudio) {
        AudioPlayer *player = new AudioPlayer(NULL);
        sp<AudioPlayer> player = sp<AudioPlayer>::make(nullptr);
        player->setSource(rawSource);
        player->setSource(rawSource);
        rawSource.clear();
        rawSource.clear();


@@ -235,9 +235,6 @@ static void playSource(sp<MediaSource> &source) {
            fprintf(stderr, "unable to start playback err=%d (0x%08x)\n", err, err);
            fprintf(stderr, "unable to start playback err=%d (0x%08x)\n", err, err);
        }
        }


        delete player;
        player = NULL;

        return;
        return;
    } else if (gReproduceBug >= 3 && gReproduceBug <= 5) {
    } else if (gReproduceBug >= 3 && gReproduceBug <= 5) {
        int64_t durationUs;
        int64_t durationUs;