diff --git a/hal/audio_extn/audio_defs.h b/hal/audio_extn/audio_defs.h
index 3f120d6..eaf9b06 100644
--- a/hal/audio_extn/audio_defs.h
+++ b/hal/audio_extn/audio_defs.h
@@ -173,12 +173,17 @@
    uint64_t        render_we; /* render window end value in microseconds*/
 };
 
+struct audio_out_start_delay_param {
+   uint64_t        start_delay; /* session start delay in microseconds*/
+};
+
 typedef union {
     struct source_tracking_param st_params;
     struct sound_focus_param sf_params;
     struct aptx_dec_param aptx_params;
     struct audio_avt_device_drift_param drift_params;
     struct audio_out_render_window_param render_window_param;
+    struct audio_out_start_delay_param start_delay;
 } audio_extn_param_payload;
 
 typedef enum {
@@ -186,7 +191,8 @@
     AUDIO_EXTN_PARAM_SOUND_FOCUS,
     AUDIO_EXTN_PARAM_APTX_DEC,
     AUDIO_EXTN_PARAM_AVT_DEVICE_DRIFT,
-    AUDIO_EXTN_PARAM_OUT_RENDER_WINDOW /* PARAM to set render window */
+    AUDIO_EXTN_PARAM_OUT_RENDER_WINDOW, /* PARAM to set render window */
+    AUDIO_EXTN_PARAM_OUT_START_DELAY
 } audio_extn_param_id;
 
 #endif /* AUDIO_DEFS_H */
diff --git a/hal/audio_extn/audio_extn.h b/hal/audio_extn/audio_extn.h
index 42f3676..ed7f479 100644
--- a/hal/audio_extn/audio_extn.h
+++ b/hal/audio_extn/audio_extn.h
@@ -838,4 +838,7 @@
 int audio_extn_utils_compress_set_render_window(
             struct stream_out *out,
             struct audio_out_render_window_param *render_window);
+int audio_extn_utils_compress_set_start_delay(
+            struct stream_out *out,
+            struct audio_out_start_delay_param *start_delay_param);
 #endif /* AUDIO_EXTN_H */
diff --git a/hal/audio_extn/utils.c b/hal/audio_extn/utils.c
index 8397b2e..b8be7aa 100644
--- a/hal/audio_extn/utils.c
+++ b/hal/audio_extn/utils.c
@@ -1876,3 +1876,63 @@
     return 0;
 }
 #endif
+
+#ifdef SNDRV_COMPRESS_START_DELAY
+int audio_extn_utils_compress_set_start_delay(
+            struct stream_out *out,
+            struct audio_out_start_delay_param *delay_param)
+{
+    struct snd_compr_metadata metadata;
+    int ret = -EINVAL;
+
+    if(delay_param == NULL) {
+        ALOGE("%s:: Invalid delay_param", __func__);
+        goto exit;
+    }
+
+    ALOGD("%s:: render start delay 0x%"PRIx64" ", __func__,
+          delay_param->start_delay);
+
+    if (!is_offload_usecase(out->usecase)) {
+        ALOGE("%s:: not supported for non offload session", __func__);
+        goto exit;
+    }
+
+   if ((out->render_mode == RENDER_MODE_AUDIO_MASTER) ||
+       (out->render_mode == RENDER_MODE_AUDIO_STC_MASTER)) {
+        /* store it to reconfigure in start_output_stream() */
+        out->delay_param.start_delay = delay_param->start_delay;
+    } else {
+        ALOGD("%s:: only supported in timestamp mode, current "
+              "render mode mode %d", __func__, out->render_mode);
+        goto exit;
+    }
+
+    if (!out->compr) {
+        ALOGW("%s:: offload session not yet opened,"
+               "start delay will be configure later", __func__);
+       goto exit;
+    }
+
+    metadata.key = SNDRV_COMPRESS_START_DELAY;
+    metadata.value[0] = 0xFFFFFFFF & delay_param->start_delay; /* lsb */
+    metadata.value[1] = \
+            (0xFFFFFFFF00000000 & delay_param->start_delay) >> 32; /* msb*/
+
+    ret = compress_set_metadata(out->compr, &metadata);
+    if(ret) {
+        ALOGE("%s::error %s", __func__, compress_get_error(out->compr));
+    }
+
+exit:
+    return ret;
+}
+#else
+int audio_extn_utils_compress_set_start_delay(
+            struct stream_out *out __unused,
+            struct audio_out_start_delay_param *delay_param __unused)
+{
+    ALOGD("%s:: configuring render window not supported", __func__);
+    return 0;
+}
+#endif
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index a13fe8e..2fb471a 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -2193,6 +2193,9 @@
     if (out->devices & AUDIO_DEVICE_OUT_AUX_DIGITAL)
         audio_extn_keep_alive_start();
 
+    /*reset delay_param to 0*/
+    out->delay_param.start_delay = 0;
+
     ALOGV("%s: exit: status(%d)", __func__, ret);
     return ret;
 }
@@ -2376,6 +2379,7 @@
         if (out->render_window.render_ws != 0 && out->render_window.render_we != 0)
             audio_extn_utils_compress_set_render_window(out,
                                             &out->render_window);
+        audio_extn_utils_compress_set_start_delay(out, &out->delay_param);
 
         audio_extn_dts_create_state_notifier_node(out->usecase);
         audio_extn_dts_notify_playback_state(out->usecase, 0, out->sample_rate,
diff --git a/hal/audio_hw.h b/hal/audio_hw.h
index eb639c0..68dc91b 100644
--- a/hal/audio_hw.h
+++ b/hal/audio_hw.h
@@ -266,6 +266,7 @@
     uint32_t platform_latency;
     render_mode_t render_mode;
     struct audio_out_render_window_param render_window; /*render winodw*/
+    struct audio_out_start_delay_param delay_param; /*start delay*/
 
     audio_offload_info_t info;
 };
diff --git a/hal/audio_hw_extn_api.c b/hal/audio_hw_extn_api.c
index 708c698..4806149 100644
--- a/hal/audio_hw_extn_api.c
+++ b/hal/audio_hw_extn_api.c
@@ -76,6 +76,10 @@
             ret = audio_extn_utils_compress_set_render_window(out,
                            (struct audio_out_render_window_param *)(payload));
            break;
+        case AUDIO_EXTN_PARAM_OUT_START_DELAY:
+            ret = audio_extn_utils_compress_set_start_delay(out,
+                           (struct audio_out_start_delay_param *)(payload));
+           break;
         default:
             ALOGE("%s:: unsupported param_id %d", __func__, param_id);
             break;
diff --git a/qahw_api/inc/qahw_defs.h b/qahw_api/inc/qahw_defs.h
index 3fe7767..d9231da 100644
--- a/qahw_api/inc/qahw_defs.h
+++ b/qahw_api/inc/qahw_defs.h
@@ -269,12 +269,17 @@
    uint64_t        render_we; /* render window end value microseconds*/
 };
 
+struct qahw_out_start_delay_param {
+   uint64_t       start_delay; /* session start delay in microseconds*/
+};
+
 typedef union {
     struct qahw_source_tracking_param st_params;
     struct qahw_sound_focus_param sf_params;
     struct qahw_aptx_dec_param aptx_params;
     struct qahw_avt_device_drift_param drift_params;
     struct qahw_out_render_window_param render_window_params;
+    struct qahw_out_start_delay_param start_delay;
 } qahw_param_payload;
 
 typedef enum {
@@ -282,7 +287,8 @@
     QAHW_PARAM_SOUND_FOCUS,
     QAHW_PARAM_APTX_DEC,
     QAHW_PARAM_AVT_DEVICE_DRIFT, /* PARAM to query AV timer vs device drift */
-    QAHW_PARAM_OUT_RENDER_WINDOW /* PARAM to set render window */
+    QAHW_PARAM_OUT_RENDER_WINDOW, /* PARAM to set render window */
+    QAHW_PARAM_OUT_START_DELAY /* PARAM to set session start delay*/
 } qahw_param_id;
 
 __END_DECLS
