Loading media/libmediatranscoding/TranscoderWrapper.cpp +23 −17 Original line number Diff line number Diff line Loading @@ -202,9 +202,8 @@ void TranscoderWrapper::reportError(ClientIdType clientId, SessionIdType session void TranscoderWrapper::start(ClientIdType clientId, SessionIdType sessionId, const TranscodingRequestParcel& request, const std::shared_ptr<ITranscodingClientCallback>& clientCb) { queueEvent(Event::Start, clientId, sessionId, [=] { queueEvent(Event::Start, clientId, sessionId, [=, &request] { media_status_t err = handleStart(clientId, sessionId, request, clientCb); if (err != AMEDIA_OK) { cleanup(); reportError(clientId, sessionId, err); Loading Loading @@ -237,9 +236,8 @@ void TranscoderWrapper::pause(ClientIdType clientId, SessionIdType sessionId) { void TranscoderWrapper::resume(ClientIdType clientId, SessionIdType sessionId, const TranscodingRequestParcel& request, const std::shared_ptr<ITranscodingClientCallback>& clientCb) { queueEvent(Event::Resume, clientId, sessionId, [=] { queueEvent(Event::Resume, clientId, sessionId, [=, &request] { media_status_t err = handleResume(clientId, sessionId, request, clientCb); if (err != AMEDIA_OK) { cleanup(); reportError(clientId, sessionId, err); Loading Loading @@ -329,12 +327,18 @@ media_status_t TranscoderWrapper::setupTranscoder( Status status; ::ndk::ScopedFileDescriptor srcFd, dstFd; int srcFdInt = request.sourceFd.get(); if (srcFdInt < 0) { status = clientCb->openFileDescriptor(request.sourceFilePath, "r", &srcFd); if (!status.isOk() || srcFd.get() < 0) { ALOGE("failed to open source"); return AMEDIA_ERROR_IO; } srcFdInt = srcFd.get(); } int dstFdInt = request.destinationFd.get(); if (dstFdInt < 0) { // Open dest file with "rw", as the transcoder could potentially reuse part of it // for resume case. We might want the further differentiate and open with "w" only // for start. Loading @@ -343,6 +347,8 @@ media_status_t TranscoderWrapper::setupTranscoder( ALOGE("failed to open destination"); return AMEDIA_ERROR_IO; } dstFdInt = dstFd.get(); } mCurrentClientId = clientId; mCurrentSessionId = sessionId; Loading @@ -354,7 +360,7 @@ media_status_t TranscoderWrapper::setupTranscoder( return AMEDIA_ERROR_UNKNOWN; } media_status_t err = mTranscoder->configureSource(srcFd.get()); media_status_t err = mTranscoder->configureSource(srcFdInt); if (err != AMEDIA_OK) { ALOGE("failed to configure source: %d", err); return err; Loading Loading @@ -385,7 +391,7 @@ media_status_t TranscoderWrapper::setupTranscoder( } } err = mTranscoder->configureDestination(dstFd.get()); err = mTranscoder->configureDestination(dstFdInt); if (err != AMEDIA_OK) { ALOGE("failed to configure dest: %d", err); return err; Loading media/libmediatranscoding/aidl/android/media/TranscodingRequestParcel.aidl +8 −6 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package android.media; import android.os.ParcelFileDescriptor; import android.media.TranscodingSessionPriority; import android.media.TranscodingTestConfig; import android.media.TranscodingType; Loading @@ -35,10 +36,10 @@ parcelable TranscodingRequestParcel { /* * The filedescrptor of the sourceFilePath. If the source Fd is provided, transcoding service * will use this fd instead of calling back to client side to open the sourceFilePath. * -1 means not available. * will use this fd instead of calling back to client side to open the sourceFilePath. It is * client's responsibility to make sure sourceFd is opened from sourceFilePath. */ int sourceFd = -1; @nullable ParcelFileDescriptor sourceFd; /** * The absolute file path of the destination file. Loading @@ -47,10 +48,11 @@ parcelable TranscodingRequestParcel { /* * The filedescrptor of the destinationFilePath. If the destination Fd is provided, transcoding * service will use this fd instead of calling back to client side to open the sourceFilePath. * -1 means not available. * service will use this fd instead of calling back to client side to open the * destinationFilePath. It is client's responsibility to make sure destinationFd is opened * from destinationFilePath. */ int destinationFd = -1; @nullable ParcelFileDescriptor destinationFd; /** * The UID of the client that this transcoding request is for. Only privileged caller could Loading media/libmediatranscoding/include/media/TranscodingRequest.h +3 −2 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ class TranscodingRequest : public TranscodingRequestParcel { public: TranscodingRequest() = default; TranscodingRequest(const TranscodingRequestParcel& parcel) { setTo(parcel); } TranscodingRequest(const TranscodingRequest& request) { setTo(request); } TranscodingRequest& operator=(const TranscodingRequest& request) { setTo(request); return *this; Loading @@ -36,9 +37,9 @@ public: private: void setTo(const TranscodingRequestParcel& parcel) { sourceFilePath = parcel.sourceFilePath; sourceFd = parcel.sourceFd; sourceFd = ndk::ScopedFileDescriptor(dup(parcel.sourceFd.get())); destinationFilePath = parcel.destinationFilePath; destinationFd = parcel.destinationFd; destinationFd = ndk::ScopedFileDescriptor(dup(parcel.destinationFd.get())); clientUid = parcel.clientUid; clientPid = parcel.clientPid; clientPackageName = parcel.clientPackageName; Loading Loading
media/libmediatranscoding/TranscoderWrapper.cpp +23 −17 Original line number Diff line number Diff line Loading @@ -202,9 +202,8 @@ void TranscoderWrapper::reportError(ClientIdType clientId, SessionIdType session void TranscoderWrapper::start(ClientIdType clientId, SessionIdType sessionId, const TranscodingRequestParcel& request, const std::shared_ptr<ITranscodingClientCallback>& clientCb) { queueEvent(Event::Start, clientId, sessionId, [=] { queueEvent(Event::Start, clientId, sessionId, [=, &request] { media_status_t err = handleStart(clientId, sessionId, request, clientCb); if (err != AMEDIA_OK) { cleanup(); reportError(clientId, sessionId, err); Loading Loading @@ -237,9 +236,8 @@ void TranscoderWrapper::pause(ClientIdType clientId, SessionIdType sessionId) { void TranscoderWrapper::resume(ClientIdType clientId, SessionIdType sessionId, const TranscodingRequestParcel& request, const std::shared_ptr<ITranscodingClientCallback>& clientCb) { queueEvent(Event::Resume, clientId, sessionId, [=] { queueEvent(Event::Resume, clientId, sessionId, [=, &request] { media_status_t err = handleResume(clientId, sessionId, request, clientCb); if (err != AMEDIA_OK) { cleanup(); reportError(clientId, sessionId, err); Loading Loading @@ -329,12 +327,18 @@ media_status_t TranscoderWrapper::setupTranscoder( Status status; ::ndk::ScopedFileDescriptor srcFd, dstFd; int srcFdInt = request.sourceFd.get(); if (srcFdInt < 0) { status = clientCb->openFileDescriptor(request.sourceFilePath, "r", &srcFd); if (!status.isOk() || srcFd.get() < 0) { ALOGE("failed to open source"); return AMEDIA_ERROR_IO; } srcFdInt = srcFd.get(); } int dstFdInt = request.destinationFd.get(); if (dstFdInt < 0) { // Open dest file with "rw", as the transcoder could potentially reuse part of it // for resume case. We might want the further differentiate and open with "w" only // for start. Loading @@ -343,6 +347,8 @@ media_status_t TranscoderWrapper::setupTranscoder( ALOGE("failed to open destination"); return AMEDIA_ERROR_IO; } dstFdInt = dstFd.get(); } mCurrentClientId = clientId; mCurrentSessionId = sessionId; Loading @@ -354,7 +360,7 @@ media_status_t TranscoderWrapper::setupTranscoder( return AMEDIA_ERROR_UNKNOWN; } media_status_t err = mTranscoder->configureSource(srcFd.get()); media_status_t err = mTranscoder->configureSource(srcFdInt); if (err != AMEDIA_OK) { ALOGE("failed to configure source: %d", err); return err; Loading Loading @@ -385,7 +391,7 @@ media_status_t TranscoderWrapper::setupTranscoder( } } err = mTranscoder->configureDestination(dstFd.get()); err = mTranscoder->configureDestination(dstFdInt); if (err != AMEDIA_OK) { ALOGE("failed to configure dest: %d", err); return err; Loading
media/libmediatranscoding/aidl/android/media/TranscodingRequestParcel.aidl +8 −6 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package android.media; import android.os.ParcelFileDescriptor; import android.media.TranscodingSessionPriority; import android.media.TranscodingTestConfig; import android.media.TranscodingType; Loading @@ -35,10 +36,10 @@ parcelable TranscodingRequestParcel { /* * The filedescrptor of the sourceFilePath. If the source Fd is provided, transcoding service * will use this fd instead of calling back to client side to open the sourceFilePath. * -1 means not available. * will use this fd instead of calling back to client side to open the sourceFilePath. It is * client's responsibility to make sure sourceFd is opened from sourceFilePath. */ int sourceFd = -1; @nullable ParcelFileDescriptor sourceFd; /** * The absolute file path of the destination file. Loading @@ -47,10 +48,11 @@ parcelable TranscodingRequestParcel { /* * The filedescrptor of the destinationFilePath. If the destination Fd is provided, transcoding * service will use this fd instead of calling back to client side to open the sourceFilePath. * -1 means not available. * service will use this fd instead of calling back to client side to open the * destinationFilePath. It is client's responsibility to make sure destinationFd is opened * from destinationFilePath. */ int destinationFd = -1; @nullable ParcelFileDescriptor destinationFd; /** * The UID of the client that this transcoding request is for. Only privileged caller could Loading
media/libmediatranscoding/include/media/TranscodingRequest.h +3 −2 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ class TranscodingRequest : public TranscodingRequestParcel { public: TranscodingRequest() = default; TranscodingRequest(const TranscodingRequestParcel& parcel) { setTo(parcel); } TranscodingRequest(const TranscodingRequest& request) { setTo(request); } TranscodingRequest& operator=(const TranscodingRequest& request) { setTo(request); return *this; Loading @@ -36,9 +37,9 @@ public: private: void setTo(const TranscodingRequestParcel& parcel) { sourceFilePath = parcel.sourceFilePath; sourceFd = parcel.sourceFd; sourceFd = ndk::ScopedFileDescriptor(dup(parcel.sourceFd.get())); destinationFilePath = parcel.destinationFilePath; destinationFd = parcel.destinationFd; destinationFd = ndk::ScopedFileDescriptor(dup(parcel.destinationFd.get())); clientUid = parcel.clientUid; clientPid = parcel.clientPid; clientPackageName = parcel.clientPackageName; Loading