diff --git a/include/media/MediaExtractorPluginApi.h b/include/media/MediaExtractorPluginApi.h
index 9caea3e..b071a58 100644
--- a/include/media/MediaExtractorPluginApi.h
+++ b/include/media/MediaExtractorPluginApi.h
@@ -51,7 +51,7 @@
     void *data;
     void (*free)(void *data);
 
-    status_t (*start)(void *data, MetaDataBase *params);
+    status_t (*start)(void *data);
     status_t (*stop)(void *data);
     status_t (*getFormat)(void *data, MetaDataBase &format);
     status_t (*read)(void *data, MediaBufferBase **buffer, uint32_t options, int64_t seekPosUs);
@@ -62,7 +62,7 @@
     void *data;
     void (*free)(void *data);
 
-    status_t (*start)(void *data, AMediaFormat *params);
+    status_t (*start)(void *data);
     status_t (*stop)(void *data);
     status_t (*getFormat)(void *data, AMediaFormat *format);
     status_t (*read)(void *data, MediaBufferBase **buffer, uint32_t options, int64_t seekPosUs);
diff --git a/include/media/MediaExtractorPluginHelper.h b/include/media/MediaExtractorPluginHelper.h
index 2acc2bf..d76d5f8 100644
--- a/include/media/MediaExtractorPluginHelper.h
+++ b/include/media/MediaExtractorPluginHelper.h
@@ -37,7 +37,7 @@
 class MediaTrackHelper {
 public:
     virtual ~MediaTrackHelper() {};
-    virtual status_t start(MetaDataBase *params = NULL) = 0;
+    virtual status_t start() = 0;
     virtual status_t stop() = 0;
     virtual status_t getFormat(MetaDataBase& format) = 0;
 
@@ -82,8 +82,8 @@
     wrapper->free = [](void *data) -> void {
         delete (MediaTrackHelper*)(data);
     };
-    wrapper->start = [](void *data, MetaDataBase *params) -> status_t {
-        return ((MediaTrackHelper*)data)->start(params);
+    wrapper->start = [](void *data) -> status_t {
+        return ((MediaTrackHelper*)data)->start();
     };
     wrapper->stop = [](void *data) -> status_t {
         return ((MediaTrackHelper*)data)->stop();
@@ -106,7 +106,7 @@
 class MediaTrackHelperV2 {
 public:
     virtual ~MediaTrackHelperV2() {};
-    virtual status_t start(AMediaFormat *params = NULL) = 0;
+    virtual status_t start() = 0;
     virtual status_t stop() = 0;
     virtual status_t getFormat(AMediaFormat *format) = 0;
 
@@ -151,8 +151,8 @@
     wrapper->free = [](void *data) -> void {
         delete (MediaTrackHelperV2*)(data);
     };
-    wrapper->start = [](void *data, AMediaFormat *params) -> status_t {
-        return ((MediaTrackHelperV2*)data)->start(params);
+    wrapper->start = [](void *data) -> status_t {
+        return ((MediaTrackHelperV2*)data)->start();
     };
     wrapper->stop = [](void *data) -> status_t {
         return ((MediaTrackHelperV2*)data)->stop();
diff --git a/include/media/MediaTrack.h b/include/media/MediaTrack.h
index 174f4cc..ee3591e 100644
--- a/include/media/MediaTrack.h
+++ b/include/media/MediaTrack.h
@@ -52,7 +52,7 @@
 
     // To be called before any other methods on this object, except
     // getFormat().
-    virtual status_t start(MetaDataBase *params = NULL) = 0;
+    virtual status_t start() = 0;
 
     // Any blocking read call returns immediately with a result of NO_INIT.
     // It is an error to call any methods other than start after this call
@@ -143,7 +143,7 @@
 public:
     explicit MediaTrackCUnwrapper(CMediaTrack *wrapper);
 
-    virtual status_t start(MetaDataBase *params = NULL);
+    virtual status_t start();
     virtual status_t stop();
     virtual status_t getFormat(MetaDataBase& format);
     virtual status_t read(MediaBufferBase **buffer, const ReadOptions *options = NULL);
@@ -161,7 +161,7 @@
 public:
     explicit MediaTrackCUnwrapperV2(CMediaTrackV2 *wrapper);
 
-    virtual status_t start(MetaDataBase *params = NULL);
+    virtual status_t start();
     virtual status_t stop();
     virtual status_t getFormat(MetaDataBase& format);
     virtual status_t read(MediaBufferBase **buffer, const ReadOptions *options = NULL);
