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

Commit 3320935a authored by Byeongjo Park's avatar Byeongjo Park Committed by Lajos Molnar
Browse files

VT: SFP: Implements interface for RTP parameters.



RTP parameters will be given to NuPlayer like below.
This is same like how setParameters() working in case of
StagefrightRecorder

 video-param-decoder-profile=1;\
 video-param-decoder-level=512;\
 rtp-param-local-ip=127.0.0.1;\
 rtp-param-local-port=1234;\
 rtp-param-remote-ip=127.0.0.2;\
 rtp-param-remote-port=4321

NuPlayer will create RTPSource.class instance as a part
of a source component of media engine if it gets RTPParams
from application layer.

Merged-in: If04ebb09d4f28d8eeb6a1a920a833129828a6ac4
Change-Id: If04ebb09d4f28d8eeb6a1a920a833129828a6ac4
Signed-off-by: default avatarByeongjo Park <bjo.park@samsung.com>
parent 870c9d6f
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@ enum {
    SET_DATA_SOURCE_FD,
    SET_DATA_SOURCE_STREAM,
    SET_DATA_SOURCE_CALLBACK,
    SET_DATA_SOURCE_RTP,
    SET_BUFFERING_SETTINGS,
    GET_BUFFERING_SETTINGS,
    PREPARE_ASYNC,
@@ -161,6 +162,15 @@ public:
        return reply.readInt32();
    }

    status_t setDataSource(const String8& rtpParams) {
        Parcel data, reply;
        data.writeInterfaceToken(IMediaPlayer::getInterfaceDescriptor());
        data.writeString8(rtpParams);
        remote()->transact(SET_DATA_SOURCE_RTP, data, &reply);

        return reply.readInt32();
    }

    // pass the buffered IGraphicBufferProducer to the media player service
    status_t setVideoSurfaceTexture(const sp<IGraphicBufferProducer>& bufferProducer)
    {
@@ -685,6 +695,12 @@ status_t BnMediaPlayer::onTransact(
            }
            return NO_ERROR;
        }
        case SET_DATA_SOURCE_RTP: {
            CHECK_INTERFACE(IMediaPlayer, data, reply);
            const String8& rtpParams = data.readString8();
            reply->writeInt32(setDataSource(rtpParams));
            return NO_ERROR;
        }
        case SET_VIDEO_SURFACETEXTURE: {
            CHECK_INTERFACE(IMediaPlayer, data, reply);
            sp<IGraphicBufferProducer> bufferProducer =
+1 −0
Original line number Diff line number Diff line
@@ -59,6 +59,7 @@ public:
    virtual status_t        setDataSource(int fd, int64_t offset, int64_t length) = 0;
    virtual status_t        setDataSource(const sp<IStreamSource>& source) = 0;
    virtual status_t        setDataSource(const sp<IDataSource>& source) = 0;
    virtual status_t        setDataSource(const String8& rtpParams) = 0;
    virtual status_t        setVideoSurfaceTexture(
                                    const sp<IGraphicBufferProducer>& bufferProducer) = 0;
    virtual status_t        getBufferingSettings(
+1 −0
Original line number Diff line number Diff line
@@ -219,6 +219,7 @@ public:

            status_t        setDataSource(int fd, int64_t offset, int64_t length);
            status_t        setDataSource(const sp<IDataSource> &source);
            status_t        setDataSource(const String8& rtpParams);
            status_t        setVideoSurfaceTexture(
                                    const sp<IGraphicBufferProducer>& bufferProducer);
            status_t        setListener(const sp<MediaPlayerListener>& listener);
+16 −0
Original line number Diff line number Diff line
@@ -195,6 +195,22 @@ status_t MediaPlayer::setDataSource(const sp<IDataSource> &source)
    return err;
}

status_t MediaPlayer::setDataSource(const String8& rtpParams)
{
    ALOGV("setDataSource(rtpParams)");
    status_t err = UNKNOWN_ERROR;
    const sp<IMediaPlayerService> service(getMediaPlayerService());
    if (service != 0) {
        sp<IMediaPlayer> player(service->create(this, mAudioSessionId));
        if ((NO_ERROR != doSetRetransmitEndpoint(player)) ||
            (NO_ERROR != player->setDataSource(rtpParams))) {
            player.clear();
        }
        err = attachNewPlayer(player);
    }
    return err;
}

status_t MediaPlayer::invoke(const Parcel& request, Parcel *reply)
{
    Mutex::Autolock _l(mLock);
+11 −0
Original line number Diff line number Diff line
@@ -1063,6 +1063,17 @@ status_t MediaPlayerService::Client::setDataSource(
    return mStatus = setDataSource_post(p, p->setDataSource(dataSource));
}

status_t MediaPlayerService::Client::setDataSource(
        const String8& rtpParams) {
    player_type playerType = NU_PLAYER;
    sp<MediaPlayerBase> p = setDataSource_pre(playerType);
    if (p == NULL) {
        return NO_INIT;
    }
    // now set data source
    return mStatus = setDataSource_post(p, p->setDataSource(rtpParams));
}

void MediaPlayerService::Client::disconnectNativeWindow_l() {
    if (mConnectedWindow != NULL) {
        status_t err = nativeWindowDisconnect(
Loading