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

Commit e3c01832 authored by Andreas Huber's avatar Andreas Huber
Browse files

Squashed commit of the following:

commit 35cc68814a9537c31fde146e171e7b0bbdfe211e
Author: Andreas Huber <andih@google.com>
Date:   Mon Aug 16 08:48:42 2010 -0700

    Only enable support for yuv to yuv conversion on passion, where it's available, use the slower yuv->rgb565 path everywhere else.

commit d8ac5a8814103e60d11d2acf61997fc31a1dc58d
Author: Andreas Huber <andih@google.com>
Date:   Fri Aug 13 13:56:44 2010 -0700

    The software renderer takes over all rendering, converting from yuv to yuv if possible and rgb565 otherwise.

commit 684972074b74318bdcb826ed9b5b0864d2d2e273
Author: Andreas Huber <andih@google.com>
Date:   Fri Aug 13 09:34:35 2010 -0700

    A first shot at supporting the new rendering APIs.

Change-Id: Iea9b32856da46950501f1a700f616b5feac710fd
parent ed23e3b8
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ namespace android {

class Parcel;
class ISurface;
class Surface;

class IMediaPlayer: public IInterface
{
@@ -33,7 +34,8 @@ public:

    virtual void            disconnect() = 0;

    virtual status_t        setVideoSurface(const sp<ISurface>& surface) = 0;
    virtual status_t        setVideoISurface(const sp<ISurface>& surface) = 0;
    virtual status_t        setVideoSurface(const sp<Surface>& surface) = 0;
    virtual status_t        prepareAsync() = 0;
    virtual status_t        start() = 0;
    virtual status_t        stop() = 0;
+3 −1
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ namespace android {

class Parcel;
class ISurface;
class Surface;

template<typename T> class SortedVector;

@@ -104,7 +105,8 @@ public:
            const KeyedVector<String8, String8> *headers = NULL) = 0;

    virtual status_t    setDataSource(int fd, int64_t offset, int64_t length) = 0;
    virtual status_t    setVideoSurface(const sp<ISurface>& surface) = 0;
    virtual status_t    setVideoISurface(const sp<ISurface>& surface) = 0;
    virtual status_t    setVideoSurface(const sp<Surface>& surface) = 0;
    virtual status_t    prepare() = 0;
    virtual status_t    prepareAsync() = 0;
    virtual status_t    start() = 0;
+2 −1
Original line number Diff line number Diff line
@@ -43,7 +43,8 @@ public:
            const char *url, const KeyedVector<String8, String8> *headers);

    virtual status_t    setDataSource(int fd, int64_t offset, int64_t length);
    virtual status_t    setVideoSurface(const sp<ISurface>& surface);
    virtual status_t    setVideoISurface(const sp<ISurface>& surface);
    virtual status_t    setVideoSurface(const sp<Surface>& surface);
    virtual status_t    prepare();
    virtual status_t    prepareAsync();
    virtual status_t    start();
+1 −0
Original line number Diff line number Diff line
@@ -178,6 +178,7 @@ private:
    // MediaPlayer needs access to ISurface for display
    friend class MediaPlayer;
    friend class IOMX;
    friend class SoftwareRenderer;
    // this is just to be able to write some unit tests
    friend class Test;

+19 −2
Original line number Diff line number Diff line
@@ -22,12 +22,14 @@

#include <media/IMediaPlayer.h>
#include <surfaceflinger/ISurface.h>
#include <surfaceflinger/Surface.h>

namespace android {

enum {
    DISCONNECT = IBinder::FIRST_CALL_TRANSACTION,
    SET_VIDEO_SURFACE,
    SET_VIDEO_ISURFACE,
    PREPARE_ASYNC,
    START,
    STOP,
@@ -65,11 +67,20 @@ public:
        remote()->transact(DISCONNECT, data, &reply);
    }

    status_t setVideoSurface(const sp<ISurface>& surface)
    status_t setVideoISurface(const sp<ISurface>& surface)
    {
        Parcel data, reply;
        data.writeInterfaceToken(IMediaPlayer::getInterfaceDescriptor());
        data.writeStrongBinder(surface->asBinder());
        remote()->transact(SET_VIDEO_ISURFACE, data, &reply);
        return reply.readInt32();
    }

    status_t setVideoSurface(const sp<Surface>& surface)
    {
        Parcel data, reply;
        data.writeInterfaceToken(IMediaPlayer::getInterfaceDescriptor());
        Surface::writeToParcel(surface, &data);
        remote()->transact(SET_VIDEO_SURFACE, data, &reply);
        return reply.readInt32();
    }
@@ -256,9 +267,15 @@ status_t BnMediaPlayer::onTransact(
            disconnect();
            return NO_ERROR;
        } break;
        case SET_VIDEO_SURFACE: {
        case SET_VIDEO_ISURFACE: {
            CHECK_INTERFACE(IMediaPlayer, data, reply);
            sp<ISurface> surface = interface_cast<ISurface>(data.readStrongBinder());
            reply->writeInt32(setVideoISurface(surface));
            return NO_ERROR;
        } break;
        case SET_VIDEO_SURFACE: {
            CHECK_INTERFACE(IMediaPlayer, data, reply);
            sp<Surface> surface = Surface::readFromParcel(data);
            reply->writeInt32(setVideoSurface(surface));
            return NO_ERROR;
        } break;
Loading