diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2018-03-15 16:59:37 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2018-03-15 16:59:37 +0000 |
commit | 18cd9b58775e53b2ec1ffe571d165ad8fddfeff4 (patch) | |
tree | d263de39a2b9466fd5c5caa61c0da365c26af38e | |
parent | 8def45966381187013c612c22dcc4efd9682fcdd (diff) | |
parent | 87d12ea5e997a12c9edd5139082aec0feacacb27 (diff) | |
download | av-18cd9b58775e53b2ec1ffe571d165ad8fddfeff4.tar.gz |
Snap for 4603989 from 87d12ea5e997a12c9edd5139082aec0feacacb27 to oc-m2-releaseandroid-8.1.0_r20oreo-m2-release
Change-Id: I3b178a779a03034cb0b2863d64134524bfc2b412
-rw-r--r-- | media/libmedia/omx/1.0/WOmxNode.cpp | 3 | ||||
-rw-r--r-- | media/libmediaplayerservice/MediaPlayerFactory.cpp | 4 | ||||
-rw-r--r-- | media/libmediaplayerservice/MediaPlayerFactory.h | 2 | ||||
-rw-r--r-- | media/libmediaplayerservice/MediaPlayerService.cpp | 11 | ||||
-rw-r--r-- | media/libmediaplayerservice/MediaPlayerService.h | 6 | ||||
-rw-r--r-- | media/libmediaplayerservice/include/MediaPlayerInterface.h | 16 | ||||
-rw-r--r-- | media/libstagefright/avc_utils.cpp | 2 | ||||
-rw-r--r-- | media/libstagefright/httplive/M3UParser.cpp | 7 | ||||
-rw-r--r-- | media/libstagefright/omx/1.0/WOmxNode.cpp | 3 |
9 files changed, 30 insertions, 24 deletions
diff --git a/media/libmedia/omx/1.0/WOmxNode.cpp b/media/libmedia/omx/1.0/WOmxNode.cpp index 0b40e8d467..2cd8b760d1 100644 --- a/media/libmedia/omx/1.0/WOmxNode.cpp +++ b/media/libmedia/omx/1.0/WOmxNode.cpp @@ -151,7 +151,8 @@ status_t LWOmxNode::allocateSecureBuffer( hidl_handle const& outNativeHandle) { fnStatus = toStatusT(status); *buffer = outBuffer; - *native_handle = NativeHandle::create( + *native_handle = outNativeHandle.getNativeHandle() == nullptr ? + nullptr : NativeHandle::create( native_handle_clone(outNativeHandle), true); })); return transStatus == NO_ERROR ? fnStatus : transStatus; diff --git a/media/libmediaplayerservice/MediaPlayerFactory.cpp b/media/libmediaplayerservice/MediaPlayerFactory.cpp index 6da1ec1823..cd0a003668 100644 --- a/media/libmediaplayerservice/MediaPlayerFactory.cpp +++ b/media/libmediaplayerservice/MediaPlayerFactory.cpp @@ -126,7 +126,7 @@ player_type MediaPlayerFactory::getPlayerType(const sp<IMediaPlayer>& client, sp<MediaPlayerBase> MediaPlayerFactory::createPlayer( player_type playerType, - void* cookie, + const wp<IMediaPlayer> &client, notify_callback_f notifyFunc, pid_t pid) { sp<MediaPlayerBase> p; @@ -152,7 +152,7 @@ sp<MediaPlayerBase> MediaPlayerFactory::createPlayer( init_result = p->initCheck(); if (init_result == NO_ERROR) { - p->setNotifyCallback(cookie, notifyFunc); + p->setNotifyCallback(client, notifyFunc); } else { ALOGE("Failed to create player object of type %d, initCheck failed" " (res = %d)", playerType, init_result); diff --git a/media/libmediaplayerservice/MediaPlayerFactory.h b/media/libmediaplayerservice/MediaPlayerFactory.h index e22a56fe6e..6aedeb2ebc 100644 --- a/media/libmediaplayerservice/MediaPlayerFactory.h +++ b/media/libmediaplayerservice/MediaPlayerFactory.h @@ -65,7 +65,7 @@ class MediaPlayerFactory { const sp<DataSource> &source); static sp<MediaPlayerBase> createPlayer(player_type playerType, - void* cookie, + const wp<IMediaPlayer> &client, notify_callback_f notifyFunc, pid_t pid); diff --git a/media/libmediaplayerservice/MediaPlayerService.cpp b/media/libmediaplayerservice/MediaPlayerService.cpp index 3f5068487a..6e17b8d2f9 100644 --- a/media/libmediaplayerservice/MediaPlayerService.cpp +++ b/media/libmediaplayerservice/MediaPlayerService.cpp @@ -1430,12 +1430,13 @@ status_t MediaPlayerService::Client::getRetransmitEndpoint( } void MediaPlayerService::Client::notify( - void* cookie, int msg, int ext1, int ext2, const Parcel *obj) + const wp<IMediaPlayer> &listener, int msg, int ext1, int ext2, const Parcel *obj) { - Client* client = static_cast<Client*>(cookie); - if (client == NULL) { + sp<IMediaPlayer> spListener = listener.promote(); + if (spListener == NULL) { return; } + Client* client = static_cast<Client*>(spListener.get()); sp<IMediaPlayerClient> c; sp<Client> nextClient; @@ -1483,7 +1484,7 @@ void MediaPlayerService::Client::notify( } if (c != NULL) { - ALOGV("[%d] notify (%p, %d, %d, %d)", client->mConnId, cookie, msg, ext1, ext2); + ALOGV("[%d] notify (%p, %d, %d, %d)", client->mConnId, spListener.get(), msg, ext1, ext2); c->notify(msg, ext1, ext2, obj); } } @@ -1541,7 +1542,7 @@ status_t MediaPlayerService::Client::releaseDrm() #if CALLBACK_ANTAGONIZER const int Antagonizer::interval = 10000; // 10 msecs -Antagonizer::Antagonizer(notify_callback_f cb, void* client) : +Antagonizer::Antagonizer(notify_callback_f cb, const wp<IMediaPlayer> &client) : mExit(false), mActive(false), mClient(client), mCb(cb) { createThread(callbackThread, this); diff --git a/media/libmediaplayerservice/MediaPlayerService.h b/media/libmediaplayerservice/MediaPlayerService.h index e35d098d81..f043f32611 100644 --- a/media/libmediaplayerservice/MediaPlayerService.h +++ b/media/libmediaplayerservice/MediaPlayerService.h @@ -51,7 +51,7 @@ class MediaRecorderClient; #if CALLBACK_ANTAGONIZER class Antagonizer { public: - Antagonizer(notify_callback_f cb, void* client); + Antagonizer(notify_callback_f cb, const wp<IMediaPlayer> &client); void start() { mActive = true; } void stop() { mActive = false; } void kill(); @@ -63,7 +63,7 @@ private: Condition mCondition; bool mExit; bool mActive; - void* mClient; + wp<IMediaPlayer> mClient; notify_callback_f mCb; }; #endif @@ -365,7 +365,7 @@ private: status_t setDataSource_post(const sp<MediaPlayerBase>& p, status_t status); - static void notify(void* cookie, int msg, + static void notify(const wp<IMediaPlayer> &cookie, int msg, int ext1, int ext2, const Parcel *obj); pid_t pid() const { return mPid; } diff --git a/media/libmediaplayerservice/include/MediaPlayerInterface.h b/media/libmediaplayerservice/include/MediaPlayerInterface.h index e8d59a7297..34f1fe430d 100644 --- a/media/libmediaplayerservice/include/MediaPlayerInterface.h +++ b/media/libmediaplayerservice/include/MediaPlayerInterface.h @@ -67,7 +67,7 @@ enum player_type { #define AUDIO_SINK_MIN_DEEP_BUFFER_DURATION_US 5000000 // callback mechanism for passing messages to MediaPlayer object -typedef void (*notify_callback_f)(void* cookie, +typedef void (*notify_callback_f)(const wp<IMediaPlayer> &listener, int msg, int ext1, int ext2, const Parcel *obj); // abstract base class - use MediaPlayerInterface @@ -152,7 +152,7 @@ public: virtual sp<VolumeShaper::State> getVolumeShaperState(int id); }; - MediaPlayerBase() : mCookie(0), mNotify(0) {} + MediaPlayerBase() : mClient(0), mNotify(0) {} virtual ~MediaPlayerBase() {} virtual status_t initCheck() = 0; virtual bool hardwareOutput() = 0; @@ -263,22 +263,22 @@ public: }; void setNotifyCallback( - void* cookie, notify_callback_f notifyFunc) { + const wp<IMediaPlayer> &client, notify_callback_f notifyFunc) { Mutex::Autolock autoLock(mNotifyLock); - mCookie = cookie; mNotify = notifyFunc; + mClient = client; mNotify = notifyFunc; } void sendEvent(int msg, int ext1=0, int ext2=0, const Parcel *obj=NULL) { notify_callback_f notifyCB; - void* cookie; + wp<IMediaPlayer> client; { Mutex::Autolock autoLock(mNotifyLock); notifyCB = mNotify; - cookie = mCookie; + client = mClient; } - if (notifyCB) notifyCB(cookie, msg, ext1, ext2, obj); + if (notifyCB) notifyCB(client, msg, ext1, ext2, obj); } virtual status_t dump(int /* fd */, const Vector<String16>& /* args */) const { @@ -297,7 +297,7 @@ private: friend class MediaPlayerService; Mutex mNotifyLock; - void* mCookie; + wp<IMediaPlayer> mClient; notify_callback_f mNotify; }; diff --git a/media/libstagefright/avc_utils.cpp b/media/libstagefright/avc_utils.cpp index a745692ac8..ea2433afc4 100644 --- a/media/libstagefright/avc_utils.cpp +++ b/media/libstagefright/avc_utils.cpp @@ -339,7 +339,7 @@ static sp<ABuffer> FindNAL(const uint8_t *data, size_t size, unsigned nalType) { const uint8_t *nalStart; size_t nalSize; while (getNextNALUnit(&data, &size, &nalStart, &nalSize, true) == OK) { - if ((nalStart[0] & 0x1f) == nalType) { + if (nalSize > 0 && (nalStart[0] & 0x1f) == nalType) { sp<ABuffer> buffer = new ABuffer(nalSize); memcpy(buffer->data(), nalStart, nalSize); return buffer; diff --git a/media/libstagefright/httplive/M3UParser.cpp b/media/libstagefright/httplive/M3UParser.cpp index 8a6482b0f6..214feab115 100644 --- a/media/libstagefright/httplive/M3UParser.cpp +++ b/media/libstagefright/httplive/M3UParser.cpp @@ -658,10 +658,13 @@ status_t M3UParser::parse(const void *_data, size_t size) { } if (!line.startsWith("#")) { + if (itemMeta == NULL) { + ALOGV("itemMeta == NULL"); + return ERROR_MALFORMED; + } if (!mIsVariantPlaylist) { int64_t durationUs; - if (itemMeta == NULL - || !itemMeta->findInt64("durationUs", &durationUs)) { + if (!itemMeta->findInt64("durationUs", &durationUs)) { return ERROR_MALFORMED; } itemMeta->setInt32("discontinuity-sequence", diff --git a/media/libstagefright/omx/1.0/WOmxNode.cpp b/media/libstagefright/omx/1.0/WOmxNode.cpp index 9f822839a6..1dc7c7b6f0 100644 --- a/media/libstagefright/omx/1.0/WOmxNode.cpp +++ b/media/libstagefright/omx/1.0/WOmxNode.cpp @@ -154,7 +154,8 @@ status_t LWOmxNode::allocateSecureBuffer( hidl_handle const& outNativeHandle) { fnStatus = toStatusT(status); *buffer = outBuffer; - *native_handle = NativeHandle::create( + *native_handle = outNativeHandle.getNativeHandle() == nullptr ? + nullptr : NativeHandle::create( native_handle_clone(outNativeHandle), true); })); return transStatus == NO_ERROR ? fnStatus : transStatus; |