diff --git a/services/mediatranscoding/SimulatedTranscoder.cpp b/services/mediatranscoding/SimulatedTranscoder.cpp
index aa397d8..1b68d5c 100644
--- a/services/mediatranscoding/SimulatedTranscoder.cpp
+++ b/services/mediatranscoding/SimulatedTranscoder.cpp
@@ -47,7 +47,8 @@
     mCallback = cb;
 }
 
-void SimulatedTranscoder::start(ClientIdType clientId, JobIdType jobId) {
+void SimulatedTranscoder::start(ClientIdType clientId, JobIdType jobId,
+                                const TranscodingRequestParcel& /*request*/) {
     queueEvent(Event::Start, clientId, jobId);
 }
 
@@ -59,6 +60,10 @@
     queueEvent(Event::Resume, clientId, jobId);
 }
 
+void SimulatedTranscoder::stop(ClientIdType clientId, JobIdType jobId) {
+    queueEvent(Event::Stop, clientId, jobId);
+}
+
 void SimulatedTranscoder::queueEvent(Event::Type type, ClientIdType clientId, JobIdType jobId) {
     ALOGV("%s: job {%lld, %d}: %s", __FUNCTION__, (long long)clientId, jobId, toString(type));
 
@@ -120,12 +125,12 @@
                 if (event.type == Event::Start) {
                     remainingUs = std::chrono::microseconds(kJobDurationUs);
                 }
-            } else if (running && event.type == Event::Pause) {
+            } else if (running && (event.type == Event::Pause || event.type == Event::Stop)) {
                 running = false;
                 remainingUs -= (std::chrono::system_clock::now() - lastRunningTime);
             } else {
                 ALOGW("%s: discarding bad event: job {%lld, %d}: %s", __FUNCTION__,
-                        (long long)event.clientId, event.jobId, toString(event.type));
+                      (long long)event.clientId, event.jobId, toString(event.type));
                 continue;
             }
 
diff --git a/services/mediatranscoding/SimulatedTranscoder.h b/services/mediatranscoding/SimulatedTranscoder.h
index 6e6da64..646ba4e 100644
--- a/services/mediatranscoding/SimulatedTranscoder.h
+++ b/services/mediatranscoding/SimulatedTranscoder.h
@@ -37,7 +37,7 @@
 class SimulatedTranscoder : public TranscoderInterface {
 public:
     struct Event {
-        enum Type { NoEvent, Start, Pause, Resume, Finished, Failed } type;
+        enum Type { NoEvent, Start, Pause, Resume, Stop, Finished, Failed } type;
         ClientIdType clientId;
         JobIdType jobId;
     };
@@ -48,9 +48,11 @@
 
     // TranscoderInterface
     void setCallback(const std::shared_ptr<TranscoderCallbackInterface>& cb) override;
-    void start(ClientIdType clientId, JobIdType jobId) override;
+    void start(ClientIdType clientId, JobIdType jobId,
+               const TranscodingRequestParcel& request) override;
     void pause(ClientIdType clientId, JobIdType jobId) override;
     void resume(ClientIdType clientId, JobIdType jobId) override;
+    void stop(ClientIdType clientId, JobIdType jobId) override;
     // ~TranscoderInterface
 
 private:
