diff --git a/media/sfplugin/CCodec.cpp b/media/sfplugin/CCodec.cpp
index b7797dd..321bc21 100644
--- a/media/sfplugin/CCodec.cpp
+++ b/media/sfplugin/CCodec.cpp
@@ -487,8 +487,8 @@
                 {RenderedFrameInfo(mediaTimeUs, renderTimeNs)});
     }
 
-    void onWorkQueued() override {
-        mCodec->onWorkQueued();
+    void onWorkQueued(bool eos) override {
+        mCodec->onWorkQueued(eos);
     }
 
 private:
@@ -1553,20 +1553,19 @@
     mCallback->onError(UNKNOWN_ERROR, ACTION_CODE_FATAL);
 }
 
-void CCodec::onWorkQueued() {
+void CCodec::onWorkQueued(bool eos) {
     ALOGV("queued work count +1 from %d", mQueuedWorkCount.load());
     ++mQueuedWorkCount;
-    Mutexed<NamedTimePoint>::Locked deadline(mQueueDeadline);
-    deadline->set(std::chrono::steady_clock::now() + 3s, "queue");
-    CCodecWatchdog::getInstance()->watch(this);
+    if (eos) {
+        CCodecWatchdog::getInstance()->watch(this);
+        Mutexed<NamedTimePoint>::Locked deadline(mQueueDeadline);
+        deadline->set(std::chrono::steady_clock::now() + 3s, "queue");
+    }
 }
 
 void CCodec::subQueuedWorkCount(uint32_t count) {
     ALOGV("queued work count -%u from %d", count, mQueuedWorkCount.load());
-    if ((mQueuedWorkCount -= count) > 0) {
-        Mutexed<NamedTimePoint>::Locked deadline(mQueueDeadline);
-        deadline->set(std::chrono::steady_clock::now() + 3s, "queue");
-    } else {
+    if ((mQueuedWorkCount -= count) == 0) {
         Mutexed<NamedTimePoint>::Locked deadline(mQueueDeadline);
         deadline->set(TimePoint::max(), "none");
     }
diff --git a/media/sfplugin/CCodec.h b/media/sfplugin/CCodec.h
index 4d075ec..a63cf58 100644
--- a/media/sfplugin/CCodec.h
+++ b/media/sfplugin/CCodec.h
@@ -95,7 +95,7 @@
 
     void setDeadline(const TimePoint &deadline, const char *name);
 
-    void onWorkQueued();
+    void onWorkQueued(bool eos);
     void subQueuedWorkCount(uint32_t count);
 
     enum {
diff --git a/media/sfplugin/CCodecBufferChannel.cpp b/media/sfplugin/CCodecBufferChannel.cpp
index 6b83978..fd3e87d 100644
--- a/media/sfplugin/CCodecBufferChannel.cpp
+++ b/media/sfplugin/CCodecBufferChannel.cpp
@@ -1322,7 +1322,7 @@
     c2_status_t err = mComponent->queue(&items);
 
     if (err == C2_OK && eos && buffer->size() > 0u) {
-        mCCodecCallback->onWorkQueued();
+        mCCodecCallback->onWorkQueued(false);
         work.reset(new C2Work);
         work->input.ordinal.timestamp = timeUs;
         work->input.ordinal.frameIndex = mFrameIndex++;
@@ -1334,7 +1334,7 @@
         err = mComponent->queue(&items);
     }
     if (err == C2_OK) {
-        mCCodecCallback->onWorkQueued();
+        mCCodecCallback->onWorkQueued(eos);
     }
 
     feedInputBufferIfAvailableInternal();
diff --git a/media/sfplugin/CCodecBufferChannel.h b/media/sfplugin/CCodecBufferChannel.h
index 952f3fc..92150f8 100644
--- a/media/sfplugin/CCodecBufferChannel.h
+++ b/media/sfplugin/CCodecBufferChannel.h
@@ -42,7 +42,7 @@
     virtual ~CCodecCallback() = default;
     virtual void onError(status_t err, enum ActionCode actionCode) = 0;
     virtual void onOutputFramesRendered(int64_t mediaTimeUs, nsecs_t renderTimeNs) = 0;
-    virtual void onWorkQueued() = 0;
+    virtual void onWorkQueued(bool eos) = 0;
 };
 
 /**
