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

Commit e7be55d0 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Transcoder: Pass transcoding request parcel by value." into sc-dev

parents ee482708 1cbc22c6
Loading
Loading
Loading
Loading
+7 −4
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@
#include <media/MediaTranscoder.h>
#include <media/NdkCommon.h>
#include <media/TranscoderWrapper.h>
#include <media/TranscodingRequest.h>
#include <utils/Log.h>

#include <thread>
@@ -221,9 +222,10 @@ void TranscoderWrapper::reportError(ClientIdType clientId, SessionIdType session
}

void TranscoderWrapper::start(ClientIdType clientId, SessionIdType sessionId,
                              const TranscodingRequestParcel& request, uid_t callingUid,
                              const TranscodingRequestParcel& requestParcel, uid_t callingUid,
                              const std::shared_ptr<ITranscodingClientCallback>& clientCb) {
    queueEvent(Event::Start, clientId, sessionId, [=, &request] {
    TranscodingRequest request{requestParcel};
    queueEvent(Event::Start, clientId, sessionId, [=] {
        media_status_t err = handleStart(clientId, sessionId, request, callingUid, clientCb);
        if (err != AMEDIA_OK) {
            cleanup();
@@ -255,9 +257,10 @@ void TranscoderWrapper::pause(ClientIdType clientId, SessionIdType sessionId) {
}

void TranscoderWrapper::resume(ClientIdType clientId, SessionIdType sessionId,
                               const TranscodingRequestParcel& request, uid_t callingUid,
                               const TranscodingRequestParcel& requestParcel, uid_t callingUid,
                               const std::shared_ptr<ITranscodingClientCallback>& clientCb) {
    queueEvent(Event::Resume, clientId, sessionId, [=, &request] {
    TranscodingRequest request{requestParcel};
    queueEvent(Event::Resume, clientId, sessionId, [=] {
        media_status_t err = handleResume(clientId, sessionId, request, callingUid, clientCb);
        if (err != AMEDIA_OK) {
            cleanup();
+26 −14
Original line number Diff line number Diff line
@@ -18,11 +18,15 @@
#define ANDROID_MEDIA_TRANSCODING_REQUEST_H

#include <aidl/android/media/TranscodingRequestParcel.h>
#include <android/binder_parcel.h>

namespace android {

using ::aidl::android::media::TranscodingRequestParcel;

// TODO: replace __ANDROID_API_FUTURE__with 31 when it's official (b/178144708)
#define __TRANSCODING_MIN_API__ __ANDROID_API_FUTURE__

// Helper class for duplicating a TranscodingRequestParcel
class TranscodingRequest : public TranscodingRequestParcel {
public:
@@ -36,6 +40,13 @@ public:

private:
    void setTo(const TranscodingRequestParcel& parcel) {
        if (__builtin_available(android __TRANSCODING_MIN_API__, *)) {
            AParcel* p = AParcel_create();
            parcel.writeToParcel(p);
            AParcel_setDataPosition(p, 0);
            readFromParcel(p);
            AParcel_delete(p);
        } else {
            sourceFilePath = parcel.sourceFilePath;
            sourceFd = ndk::ScopedFileDescriptor(dup(parcel.sourceFd.get()));
            destinationFilePath = parcel.destinationFilePath;
@@ -51,6 +62,7 @@ private:
            isForTesting = parcel.isForTesting;
            testConfig = parcel.testConfig;
        }
    }
};

}  // namespace android