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

Commit db9b87e3 authored by James Dong's avatar James Dong Committed by Android (Google) Code Review
Browse files

Merge "Add external timed text source using a passed file descriptor"

parents 1803c3ae 613c8ae1
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ class MediaSource;
class Parcel;
class TimedTextPlayer;
class TimedTextSource;
class DataSource;

class TimedTextDriver {
public:
@@ -48,7 +49,7 @@ public:
    status_t addOutOfBandTextSource(const char *uri, const char *mimeType);
    // Caller owns the file desriptor and caller is responsible for closing it.
    status_t addOutOfBandTextSource(
            int fd, off64_t offset, size_t length, const char *mimeType);
            int fd, off64_t offset, off64_t length, const char *mimeType);

    void getTrackInfo(Parcel *parcel);

@@ -72,6 +73,8 @@ private:
    // -- End of variables to be guarded by mLock

    status_t selectTrack_l(int32_t index);
    status_t createOutOfBandTextSource(
            const char *mimeType, const sp<DataSource>& dataSource);

    DISALLOW_EVIL_CONSTRUCTORS(TimedTextDriver);
};
+1 −1
Original line number Diff line number Diff line
@@ -2292,7 +2292,7 @@ status_t AwesomePlayer::invoke(const Parcel &request, Parcel *reply) {
            }
            int fd         = request.readFileDescriptor();
            off64_t offset = request.readInt64();
            size_t length  = request.readInt64();
            off64_t length  = request.readInt64();
            String8 mimeType(request.readString16());
            return mTextDriver->addOutOfBandTextSource(
                    fd, offset, length, mimeType);
+21 −10
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@
#include <media/mediaplayer.h>
#include <media/MediaPlayerInterface.h>
#include <media/stagefright/DataSource.h>
#include <media/stagefright/FileSource.h>
#include <media/stagefright/MediaDefs.h>
#include <media/stagefright/MediaErrors.h>
#include <media/stagefright/MediaSource.h>
@@ -161,15 +162,32 @@ status_t TimedTextDriver::addInBandTextSource(

status_t TimedTextDriver::addOutOfBandTextSource(
        const char *uri, const char *mimeType) {
    // TODO: Define "TimedTextSource::CreateFromURI(uri)"
    // and move below lines there..?

    // To support local subtitle file only for now
    if (strncasecmp("file://", uri, 7)) {
        ALOGE("uri('%s') is not a file", uri);
        return ERROR_UNSUPPORTED;
    }

    sp<DataSource> dataSource =
            DataSource::CreateFromURI(uri);
    return createOutOfBandTextSource(mimeType, dataSource);
}

status_t TimedTextDriver::addOutOfBandTextSource(
        int fd, off64_t offset, off64_t length, const char *mimeType) {

    if (fd < 0) {
        ALOGE("Invalid file descriptor: %d", fd);
        return ERROR_UNSUPPORTED;
    }

    sp<DataSource> dataSource = new FileSource(dup(fd), offset, length);
    return createOutOfBandTextSource(mimeType, dataSource);
}

status_t TimedTextDriver::createOutOfBandTextSource(
        const char *mimeType, const sp<DataSource>& dataSource) {

    if (dataSource == NULL) {
        return ERROR_UNSUPPORTED;
    }
@@ -189,13 +207,6 @@ status_t TimedTextDriver::addOutOfBandTextSource(
    return OK;
}

status_t TimedTextDriver::addOutOfBandTextSource(
        int fd, off64_t offset, size_t length, const char *mimeType) {
    // Not supported yet. This requires DataSource::sniff to detect various text
    // formats such as srt/smi/ttml.
    return ERROR_UNSUPPORTED;
}

void TimedTextDriver::getTrackInfo(Parcel *parcel) {
    Mutex::Autolock autoLock(mLock);
    Vector<sp<TimedTextSource> >::const_iterator iter;