diff --git a/audio_hal/audio_hw.c b/audio_hal/audio_hw.c
index 6ceaf52..c567ad6 100644
--- a/audio_hal/audio_hw.c
+++ b/audio_hal/audio_hw.c
@@ -298,6 +298,7 @@
                                     size_t* mic_count);
 
 static int aml_audio_focus(struct aml_audio_device *adev, bool on);
+static int adev_get_dvb_standards();
 
 #define AML_PARSER_DEBUG "vendor.media.audio.parser.debug"
 static int aml_audio_parser_process_wrapper(struct audio_stream_out *stream,
@@ -4228,6 +4229,20 @@
     }
 
     //add for roku
+    ret = str_parms_get_str(parms,"tuner_type", value , sizeof(value));
+    if (ret >= 0) {
+        AM_LOGI("tuner_type=%s", value);
+        setenv("ro_vendor_platform_digitaltv_standards", value, 1);
+        adev->dvb_standards = adev_get_dvb_standards();
+        /* If ms12 has been initialized, dvb_standards needs to be re-initialized to take effect */
+        if (ms12->dolby_ms12_init_flags) {
+            adev_ms12_cleanup(&adev->hw_device);
+            adev_ms12_prepare(&adev->hw_device);
+            AM_LOGI(" dvb_standards update, need reset ms12");
+        }
+        goto exit;
+    }
+
     ret = str_parms_get_str(parms, "sink_atoms_capability", value, sizeof(value));
     if (ret >= 0) {
         struct aml_arc_hdmi_desc *hdmi_desc = get_arc_hdmi_cap(adev);
@@ -8262,6 +8277,7 @@
     dprintf(fd, "\n");
     dprintf(fd, "[AML_HAL]      hdmi_format     : %10d |  active_outport    :    %s | active_inport: %s\n",
         aml_dev->hdmi_format, outputPort2Str(aml_dev->active_outport), inputPort2Str(get_active_inport(aml_dev)));
+    dprintf(fd, "[AML_HAL]      dvb_standards   : %d\n", aml_dev->dvb_standards);
     dprintf(fd, "[AML_HAL]      injection   : %d\n", aml_dev->injection_enable);
     pthread_mutex_lock(&aml_dev->cap_handle_lock);
     dprintf(fd, "[AML_HAL]      capture enable   : %d\n", aml_dev->capture_handle ? 1 :0);
@@ -8597,7 +8613,7 @@
         }
     }
 
-    AM_LOGI("dtv tuner_type: %d", dtv_type);
+    AM_LOGI("dtv tuner_type: %d(0:DVB 1:ATSC)", dtv_type);
     return dtv_type;
 }
 
@@ -8915,7 +8931,6 @@
     adev->hw_device.get_microphones = adev_get_microphones;
     adev->hw_device.get_audio_port = adev_get_audio_port;
     adev->hw_device.dump = adev_dump;
-    adev->dvb_standards = adev_get_dvb_standards();
     adev->hdmi_format = AUTO;
     adev->is_hdmi_arc_interact_done = false;
     adev->is_netflix_hide = false;
@@ -8986,6 +9001,7 @@
         ALOGE("%s() Audio Config file parsing error\n",__FUNCTION__);
     } else {
         audio_hal_property_list_loading();
+        adev->dvb_standards = adev_get_dvb_standards();
     }
     if (0 != aml_audio_avsync_parser()) {
         ALOGE("%s() Audio Config file parsing error\n",__FUNCTION__);
diff --git a/audio_hal/audio_hw_ms12_v2.c b/audio_hal/audio_hw_ms12_v2.c
index f614555..af2a967 100644
--- a/audio_hal/audio_hw_ms12_v2.c
+++ b/audio_hal/audio_hw_ms12_v2.c
@@ -139,7 +139,8 @@
 
 #define LOUDNESS_PROCESS_VALUES_DB_EUDVB                 (8.0)
 #define LOUDNESS_PROCESS_VALUES_DB                       (7.0)
-#define PRE_ATTENUATION_VALUES_DB                        (-8.0)
+#define PRE_ATTENUATION_VALUES_DB_EUDVB                  (-8.0)
+#define PRE_ATTENUATION_VALUES_DB                        (-7.0)
 
 /*this enum should be same with ms12 lib*/
 typedef enum {
@@ -1486,11 +1487,12 @@
     struct aml_audio_device *adev = aml_out->dev;
     int channels = audio_channel_count_from_out_mask(aml_out->hal_channel_mask);
 
-    aml_out->drc_mode_volume = DbToAmpl(PRE_ATTENUATION_VALUES_DB);
+    /*DVB pre-attenuate -8db, ATSC and DTMB pre-attenuate -7db*/
+    aml_out->drc_mode_volume = DbToAmpl(adev->dvb_standards == DTV_STANDARDS_EUDVB ? PRE_ATTENUATION_VALUES_DB_EUDVB : PRE_ATTENUATION_VALUES_DB);
     apply_volume_fade(aml_out->last_drc_mode_volume, aml_out->drc_mode_volume, buffer, sizeof(uint16_t), channels, bytes);
     if (aml_out->last_drc_mode_volume != aml_out->drc_mode_volume) {
-        ALOGI("[%s:%d](Attenuate 8dB) aml_out=%p cur_volume=%f last_volume=%f channels=%d bytes=%zu",
-            __func__, __LINE__, aml_out, aml_out->drc_mode_volume , aml_out->last_drc_mode_volume, channels, bytes);
+        AM_LOGI("dvb_standards:%d(Attenuate -7db or -8dB) aml_out=%p cur_volume=%f last_volume=%f channels=%d bytes=%zu",
+            adev->dvb_standards, aml_out, aml_out->drc_mode_volume , aml_out->last_drc_mode_volume, channels, bytes);
         aml_out->last_drc_mode_volume = aml_out->drc_mode_volume;
     }
 }
