diff options
author | Andreas Huber <andih@google.com> | 2014-02-05 17:12:38 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2014-02-05 17:12:38 +0000 |
commit | 412d4744efae64083e4f99a664e3efaba031af48 (patch) | |
tree | 8b139d3c83c554f181e3b4cb93ca4a74e0655c94 /media/libmedia/IMediaPlayerService.cpp | |
parent | 4a25471795b05ffcfcc079e9f9cb5ed549023d14 (diff) | |
parent | 1b86fe063badb5f28c467ade39be0f4008688947 (diff) | |
download | frameworks_av-412d4744efae64083e4f99a664e3efaba031af48.zip frameworks_av-412d4744efae64083e4f99a664e3efaba031af48.tar.gz frameworks_av-412d4744efae64083e4f99a664e3efaba031af48.tar.bz2 |
Merge "FINAL ATTEMPT: HTTP services are now provided from JAVA and made available to media code"
Diffstat (limited to 'media/libmedia/IMediaPlayerService.cpp')
-rw-r--r-- | media/libmedia/IMediaPlayerService.cpp | 30 |
1 files changed, 26 insertions, 4 deletions
diff --git a/media/libmedia/IMediaPlayerService.cpp b/media/libmedia/IMediaPlayerService.cpp index 3c22b4c..190adf2 100644 --- a/media/libmedia/IMediaPlayerService.cpp +++ b/media/libmedia/IMediaPlayerService.cpp @@ -23,6 +23,7 @@ #include <media/ICrypto.h> #include <media/IDrm.h> #include <media/IHDCP.h> +#include <media/IMediaHTTPService.h> #include <media/IMediaPlayerService.h> #include <media/IMediaRecorder.h> #include <media/IOMX.h> @@ -86,12 +87,21 @@ public: return interface_cast<IMediaRecorder>(reply.readStrongBinder()); } - virtual status_t decode(const char* url, uint32_t *pSampleRate, int* pNumChannels, - audio_format_t* pFormat, - const sp<IMemoryHeap>& heap, size_t *pSize) + virtual status_t decode( + const sp<IMediaHTTPService> &httpService, + const char* url, + uint32_t *pSampleRate, + int* pNumChannels, + audio_format_t* pFormat, + const sp<IMemoryHeap>& heap, + size_t *pSize) { Parcel data, reply; data.writeInterfaceToken(IMediaPlayerService::getInterfaceDescriptor()); + data.writeInt32(httpService != NULL); + if (httpService != NULL) { + data.writeStrongBinder(httpService->asBinder()); + } data.writeCString(url); data.writeStrongBinder(heap->asBinder()); status_t status = remote()->transact(DECODE_URL, data, &reply); @@ -222,13 +232,25 @@ status_t BnMediaPlayerService::onTransact( } break; case DECODE_URL: { CHECK_INTERFACE(IMediaPlayerService, data, reply); + sp<IMediaHTTPService> httpService; + if (data.readInt32()) { + httpService = + interface_cast<IMediaHTTPService>(data.readStrongBinder()); + } const char* url = data.readCString(); sp<IMemoryHeap> heap = interface_cast<IMemoryHeap>(data.readStrongBinder()); uint32_t sampleRate; int numChannels; audio_format_t format; size_t size; - status_t status = decode(url, &sampleRate, &numChannels, &format, heap, &size); + status_t status = + decode(httpService, + url, + &sampleRate, + &numChannels, + &format, + heap, + &size); reply->writeInt32(status); if (status == NO_ERROR) { reply->writeInt32(sampleRate); |