diff --git a/libavcodec/aac.h b/libavcodec/aac.h
index 9ceccf89096156440fbb61a2ddfdd32c50f65c90..32fbbc48c3a5751ce2ff6d21c718d9ad4ad671e7 100644
--- a/libavcodec/aac.h
+++ b/libavcodec/aac.h
@@ -309,8 +309,7 @@ typedef struct AACContext {
      * @name Japanese DTV specific extension
      * @{
      */
-    int enable_jp_dmono; ///< enable japanese DTV specific 'dual mono'
-    int dmono_mode;      ///< select the channel to decode in dual mono.
+    int dmono_mode;      ///< 0->not dmono, 1->use first channel, 2->use second channel
     /** @} */
 
     DECLARE_ALIGNED(32, float, temp)[128];
diff --git a/libavcodec/aacdec.c b/libavcodec/aacdec.c
index 0454bd49f0252abbf69c1a9118014e17baef35fc..2a9d6954fb64ca4677037fccba0f8ccd88bfb0b3 100644
--- a/libavcodec/aacdec.c
+++ b/libavcodec/aacdec.c
@@ -2435,7 +2435,7 @@ static int parse_adts_frame_header(AACContext *ac, GetBitContext *gb)
              * WITHOUT specifying PCE.
              *  thus, set dual mono as default.
              */
-            if (ac->enable_jp_dmono && ac->oc[0].status == OC_NONE) {
+            if (ac->dmono_mode && ac->oc[0].status == OC_NONE) {
                 layout_map_tags = 2;
                 layout_map[0][0] = layout_map[1][0] = TYPE_SCE;
                 layout_map[0][2] = layout_map[1][2] = AAC_CHANNEL_FRONT;
@@ -2588,7 +2588,7 @@ static int aac_decode_frame_int(AVCodecContext *avctx, void *data,
     multiplier = (ac->oc[1].m4ac.sbr == 1) ? ac->oc[1].m4ac.ext_sample_rate > ac->oc[1].m4ac.sample_rate : 0;
     samples <<= multiplier;
     /* for dual-mono audio (SCE + SCE) */
-    is_dmono = ac->enable_jp_dmono && sce_count == 2 &&
+    is_dmono = ac->dmono_mode && sce_count == 2 &&
                ac->oc[1].channel_layout == (AV_CH_FRONT_LEFT | AV_CH_FRONT_RIGHT);
 
     if (samples) {
@@ -2598,9 +2598,9 @@ static int aac_decode_frame_int(AVCodecContext *avctx, void *data,
     *got_frame_ptr = !!samples;
 
     if (is_dmono) {
-        if (ac->dmono_mode == 0)
+        if (ac->dmono_mode == 1)
             ((AVFrame *)data)->data[1] =((AVFrame *)data)->data[0];
-        else if (ac->dmono_mode == 1)
+        else if (ac->dmono_mode == 2)
             ((AVFrame *)data)->data[0] =((AVFrame *)data)->data[1];
     }
 
@@ -2658,10 +2658,9 @@ static int aac_decode_frame(AVCodecContext *avctx, void *data,
         }
     }
 
-    ac->enable_jp_dmono = !!jp_dualmono;
     ac->dmono_mode = 0;
     if (jp_dualmono && jp_dualmono_size > 0)
-        ac->dmono_mode = *jp_dualmono;
+        ac->dmono_mode =  1 + *jp_dualmono;
 
     init_get_bits(&gb, buf, buf_size * 8);