diff options
author | Li Sun <sunli@codeaurora.org> | 2015-07-03 15:13:43 +0800 |
---|---|---|
committer | Linux Build Service Account <lnxbuild@localhost> | 2015-10-06 03:24:20 -0600 |
commit | 5a68fc340e5b61ec29d8283433ddb003d6871abc (patch) | |
tree | bae9e41241cac6554c74e76198368bff675d311a /media/libavextensions | |
parent | 502b3cb43aba4eae5928647515fec58a3ed0c70c (diff) | |
download | frameworks_av-5a68fc340e5b61ec29d8283433ddb003d6871abc.zip frameworks_av-5a68fc340e5b61ec29d8283433ddb003d6871abc.tar.gz frameworks_av-5a68fc340e5b61ec29d8283433ddb003d6871abc.tar.bz2 |
RTSP: add RTSP extensions for IPV6 support
Change access modifiers and add overridables in rtsp stack.
Make ARTSPConnection/ARTPConnection extensible for IPV6 support.
Provide default implementations in AVMediaServiceExensions and
AVMediaServiceFactory.
Change-Id: Iaa67070d1832d56e0569dabfd8327c1998f04493
Diffstat (limited to 'media/libavextensions')
4 files changed, 49 insertions, 0 deletions
diff --git a/media/libavextensions/Android.mk b/media/libavextensions/Android.mk index 391edcb..511f13f 100644 --- a/media/libavextensions/Android.mk +++ b/media/libavextensions/Android.mk @@ -67,6 +67,8 @@ LOCAL_C_INCLUDES:= \ $(TOP)/frameworks/av/include/media/ \ $(TOP)/frameworks/av/media/libmediaplayerservice \ $(TOP)/frameworks/av/media/libavextensions \ + $(TOP)/frameworks/av/media/libstagefright/include \ + $(TOP)/frameworks/av/media/libstagefright/rtsp \ $(TOP)/frameworks/native/include/media/hardware \ $(TOP)/frameworks/native/include/media/openmax \ $(TOP)/external/flac/include \ diff --git a/media/libavextensions/mediaplayerservice/AVMediaServiceExtensions.h b/media/libavextensions/mediaplayerservice/AVMediaServiceExtensions.h index 327e0a0..5c31fad 100644 --- a/media/libavextensions/mediaplayerservice/AVMediaServiceExtensions.h +++ b/media/libavextensions/mediaplayerservice/AVMediaServiceExtensions.h @@ -31,11 +31,16 @@ #include <common/AVExtensionsCommon.h> +#include <utils/RefBase.h> #include <utils/String16.h> namespace android { struct StagefrightRecorder; +struct ARTSPConnection; +struct ARTPConnection; +struct AString; +struct MyHandler; /* * Factory to create objects of base-classes in libmediaplayerservice @@ -43,6 +48,10 @@ struct StagefrightRecorder; struct AVMediaServiceFactory { virtual StagefrightRecorder *createStagefrightRecorder(const String16 &); + // RTSP extensions + virtual sp<ARTSPConnection> createARTSPConnection(bool uidValid, uid_t uid); + virtual sp<ARTPConnection> createARTPConnection(); + // ----- NO TRESSPASSING BEYOND THIS LINE ------ DECLARE_LOADABLE_SINGLETON(AVMediaServiceFactory); }; @@ -52,6 +61,13 @@ struct AVMediaServiceFactory { */ struct AVMediaServiceUtils { + // RTSP IPV6 utils + virtual bool pokeAHole(sp<MyHandler> handler, int rtpSocket, int rtcpSocket, + const AString &transport, const AString &sessionHost); + virtual void makePortPair(int *rtpSocket, int *rtcpSocket, unsigned *rtpPort, + bool isIPV6); + virtual const char* parseURL(AString *host); + // ----- NO TRESSPASSING BEYOND THIS LINE ------ DECLARE_LOADABLE_SINGLETON(AVMediaServiceUtils); }; diff --git a/media/libavextensions/mediaplayerservice/AVMediaServiceFactory.cpp b/media/libavextensions/mediaplayerservice/AVMediaServiceFactory.cpp index eb0ebb7..10b66f5 100644 --- a/media/libavextensions/mediaplayerservice/AVMediaServiceFactory.cpp +++ b/media/libavextensions/mediaplayerservice/AVMediaServiceFactory.cpp @@ -32,6 +32,8 @@ #include <media/stagefright/foundation/ADebug.h> #include <media/stagefright/foundation/AMessage.h> +#include "ARTPConnection.h" +#include "ARTSPConnection.h" #include "MediaRecorderClient.h" #include "MediaPlayerService.h" @@ -46,6 +48,15 @@ StagefrightRecorder *AVMediaServiceFactory::createStagefrightRecorder( return new StagefrightRecorder(opPackageName); } +sp<ARTSPConnection> AVMediaServiceFactory::createARTSPConnection( + bool uidValid, uid_t uid) { + return new ARTSPConnection(uidValid, uid); +} + +sp<ARTPConnection> AVMediaServiceFactory::createARTPConnection() { + return new ARTPConnection(); +} + // ----- NO TRESSPASSING BEYOND THIS LINE ------ AVMediaServiceFactory::AVMediaServiceFactory() { } diff --git a/media/libavextensions/mediaplayerservice/AVMediaServiceUtils.cpp b/media/libavextensions/mediaplayerservice/AVMediaServiceUtils.cpp index a3da1df..705ce8a 100644 --- a/media/libavextensions/mediaplayerservice/AVMediaServiceUtils.cpp +++ b/media/libavextensions/mediaplayerservice/AVMediaServiceUtils.cpp @@ -31,11 +31,31 @@ #include <utils/Log.h> #include <media/stagefright/foundation/ADebug.h> +#include "ARTPConnection.h" +#include "MyHandler.h" + #include "common/ExtensionsLoader.hpp" #include "mediaplayerservice/AVMediaServiceExtensions.h" namespace android { +bool AVMediaServiceUtils::pokeAHole(sp<MyHandler> handler, int rtpSocket, int rtcpSocket, + const AString &transport, const AString &/*sessionHost*/) { + if (handler == NULL) { + ALOGW("MyHandler is NULL"); + return false; + } + return handler->pokeAHole(rtpSocket, rtcpSocket, transport); +} + +void AVMediaServiceUtils::makePortPair(int *rtpSocket, int *rtcpSocket, unsigned *rtpPort, + bool /*isIPV6*/) { + return ARTPConnection::MakePortPair(rtpSocket, rtcpSocket, rtpPort); +} + +const char* AVMediaServiceUtils::parseURL(AString *host) { + return strchr(host->c_str(), ':'); +} // ----- NO TRESSPASSING BEYOND THIS LINE ------ AVMediaServiceUtils::AVMediaServiceUtils() { |