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

Commit 522d9ace authored by Robert Shih's avatar Robert Shih Committed by android-build-merger
Browse files

HTTPLiveSource: implement getFormatMeta am: a83eebb7 am: 7c55dd0c

am: 8b7065b6

Change-Id: Ia5e9caef1020a81ab5914dcecd787707783938a1
parents 95487711 8b7065b6
Loading
Loading
Loading
Loading
+18 −5
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@
#include <media/stagefright/MediaErrors.h>
#include <media/stagefright/MetaData.h>
#include <media/stagefright/MediaDefs.h>
#include <media/stagefright/Utils.h>

namespace android {

@@ -100,26 +101,38 @@ void NuPlayer::HTTPLiveSource::prepareAsync() {
void NuPlayer::HTTPLiveSource::start() {
}

sp<MetaData> NuPlayer::HTTPLiveSource::getFormatMeta(bool audio) {
    sp<MetaData> meta;
    if (mLiveSession != NULL) {
        mLiveSession->getStreamFormatMeta(
                audio ? LiveSession::STREAMTYPE_AUDIO
                      : LiveSession::STREAMTYPE_VIDEO,
                &meta);
    }

    return meta;
}

sp<AMessage> NuPlayer::HTTPLiveSource::getFormat(bool audio) {
    sp<AMessage> format;
    sp<MetaData> meta;
    status_t err = -EWOULDBLOCK;
    if (mLiveSession != NULL) {
        err = mLiveSession->getStreamFormat(
        err = mLiveSession->getStreamFormatMeta(
                audio ? LiveSession::STREAMTYPE_AUDIO
                      : LiveSession::STREAMTYPE_VIDEO,
                &format);
                &meta);
    }

    sp<AMessage> format;
    if (err == -EWOULDBLOCK) {
        format = new AMessage();
        format->setInt32("err", err);
        return format;
    }

    if (err != OK) {
    if (err != OK || convertMetaDataToMessage(meta, &format) != OK) {
        return NULL;
    }

    return format;
}

+1 −0
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@ struct NuPlayer::HTTPLiveSource : public NuPlayer::Source {
    virtual void start();

    virtual status_t dequeueAccessUnit(bool audio, sp<ABuffer> *accessUnit);
    virtual sp<MetaData> getFormatMeta(bool audio);
    virtual sp<AMessage> getFormat(bool audio);

    virtual status_t feedMoreTSData();
+7 −7
Original line number Diff line number Diff line
@@ -467,28 +467,28 @@ status_t LiveSession::dequeueAccessUnit(
    return err;
}

status_t LiveSession::getStreamFormat(StreamType stream, sp<AMessage> *format) {
status_t LiveSession::getStreamFormatMeta(StreamType stream, sp<MetaData> *meta) {
    if (!(mStreamMask & stream)) {
        return UNKNOWN_ERROR;
    }

    sp<AnotherPacketSource> packetSource = mPacketSources.valueFor(stream);

    sp<MetaData> meta = packetSource->getFormat();
    *meta = packetSource->getFormat();

    if (meta == NULL) {
    if (*meta == NULL) {
        return -EWOULDBLOCK;
    }

    if (stream == STREAMTYPE_AUDIO) {
        // set AAC input buffer size to 32K bytes (256kbps x 1sec)
        meta->setInt32(kKeyMaxInputSize, 32 * 1024);
        (*meta)->setInt32(kKeyMaxInputSize, 32 * 1024);
    } else if (stream == STREAMTYPE_VIDEO) {
        meta->setInt32(kKeyMaxWidth, mMaxWidth);
        meta->setInt32(kKeyMaxHeight, mMaxHeight);
        (*meta)->setInt32(kKeyMaxWidth, mMaxWidth);
        (*meta)->setInt32(kKeyMaxHeight, mMaxHeight);
    }

    return convertMetaDataToMessage(meta, format);
    return OK;
}

sp<HTTPDownloader> LiveSession::getHTTPDownloader() {
+1 −1
Original line number Diff line number Diff line
@@ -75,7 +75,7 @@ struct LiveSession : public AHandler {
    int64_t calculateMediaTimeUs(int64_t firstTimeUs, int64_t timeUs, int32_t discontinuitySeq);
    status_t dequeueAccessUnit(StreamType stream, sp<ABuffer> *accessUnit);

    status_t getStreamFormat(StreamType stream, sp<AMessage> *format);
    status_t getStreamFormatMeta(StreamType stream, sp<MetaData> *meta);

    sp<HTTPDownloader> getHTTPDownloader();