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

Commit 75671d30 authored by Robert Shih's avatar Robert Shih Committed by android-build-merger
Browse files

Merge "NdkMediaExtractor: per-sample format metadata API" into pi-dev am: 149eb6af

am: 16c3d81d

Change-Id: I07e485cf0ef6504f73c4f6aa68988f673ed253c0
parents 86794be9 16c3d81d
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -111,6 +111,10 @@ static const char *AMediaFormatKeyGroupFloatInt32[] = {
static status_t translateErrorCode(media_status_t err) {
    if (err == AMEDIA_OK) {
        return OK;
    } else if (err == AMEDIA_ERROR_END_OF_STREAM) {
        return ERROR_END_OF_STREAM;
    } else if (err == AMEDIA_ERROR_IO) {
        return ERROR_IO;
    } else if (err == AMEDIACODEC_INFO_TRY_AGAIN_LATER) {
        return -EAGAIN;
    }
@@ -1150,6 +1154,15 @@ int64_t AMediaExtractorWrapper::getSampleTime() {
    return AMediaExtractor_getSampleTime(mAMediaExtractor);
}

status_t AMediaExtractorWrapper::getSampleFormat(sp<AMediaFormatWrapper> &formatWrapper) {
    if (mAMediaExtractor == NULL) {
        return DEAD_OBJECT;
    }
    AMediaFormat *format = AMediaFormat_new();
    formatWrapper = new AMediaFormatWrapper(format);
    return translateErrorCode(AMediaExtractor_getSampleFormat(mAMediaExtractor, format));
}

int64_t AMediaExtractorWrapper::getCachedDuration() {
    if (mAMediaExtractor == NULL) {
        return -1;
+2 −0
Original line number Diff line number Diff line
@@ -313,6 +313,8 @@ struct AMediaExtractorWrapper : public RefBase {

    int64_t getSampleTime();

    status_t getSampleFormat(sp<AMediaFormatWrapper> &formatWrapper);

    int64_t getCachedDuration();

    bool advance();
+2 −2
Original line number Diff line number Diff line
@@ -1239,7 +1239,7 @@ sp<ABuffer> NuPlayer2::GenericSource2::mediaBufferToABuffer(
    }

    if (trackType == MEDIA_TRACK_TYPE_SUBTITLE) {
        meta->setInt32("trackIndex", mSubtitleTrack.mIndex);
        meta->setInt32(AMEDIAFORMAT_KEY_TRACK_INDEX, mSubtitleTrack.mIndex);
    }

    uint32_t dataType; // unused
@@ -1255,7 +1255,7 @@ sp<ABuffer> NuPlayer2::GenericSource2::mediaBufferToABuffer(
    if (mb->meta_data().findData(
            kKeyMpegUserData, &dataType, &mpegUserDataPointer, &mpegUserDataLength)) {
        sp<ABuffer> mpegUserData = ABuffer::CreateAsCopy(mpegUserDataPointer, mpegUserDataLength);
        meta->setBuffer("mpegUserData", mpegUserData);
        meta->setBuffer(AMEDIAFORMAT_KEY_MPEG_USER_DATA, mpegUserData);
    }

    mb->release();
+1 −1
Original line number Diff line number Diff line
@@ -2842,7 +2842,7 @@ void NuPlayer2::onClosedCaptionNotify(const sp<AMessage> &msg) {
void NuPlayer2::sendSubtitleData(const sp<ABuffer> &buffer, int32_t baseIndex) {
    int32_t trackIndex;
    int64_t timeUs, durationUs;
    CHECK(buffer->meta()->findInt32("trackIndex", &trackIndex));
    CHECK(buffer->meta()->findInt32(AMEDIAFORMAT_KEY_TRACK_INDEX, &trackIndex));
    CHECK(buffer->meta()->findInt64("timeUs", &timeUs));
    CHECK(buffer->meta()->findInt64("durationUs", &durationUs));

+3 −2
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@

#include "NuPlayer2CCDecoder.h"

#include <media/NdkMediaFormat.h>
#include <media/stagefright/foundation/ABitReader.h>
#include <media/stagefright/foundation/ABuffer.h>
#include <media/stagefright/foundation/ADebug.h>
@@ -301,7 +302,7 @@ bool NuPlayer2::CCDecoder::parseSEINalUnit(int64_t timeUs, const uint8_t *data,
// returns true if a new CC track is found
bool NuPlayer2::CCDecoder::extractFromMPEGUserData(const sp<ABuffer> &accessUnit) {
    sp<ABuffer> mpegUserData;
    if (!accessUnit->meta()->findBuffer("mpegUserData", &mpegUserData)
    if (!accessUnit->meta()->findBuffer(AMEDIAFORMAT_KEY_MPEG_USER_DATA, &mpegUserData)
            || mpegUserData == NULL) {
        return false;
    }
@@ -538,7 +539,7 @@ void NuPlayer2::CCDecoder::display(int64_t timeUs) {
        dumpBytePair(ccBuf);
#endif

        ccBuf->meta()->setInt32("trackIndex", mSelectedTrack);
        ccBuf->meta()->setInt32(AMEDIAFORMAT_KEY_TRACK_INDEX, mSelectedTrack);
        ccBuf->meta()->setInt64("timeUs", timeUs);
        ccBuf->meta()->setInt64("durationUs", 0ll);

Loading