---
 libavcodec/ac3.h    | 8 ++++++++
 libavcodec/ac3dec.c | 6 ++++--
 libavcodec/ac3dec.h | 1 +
 3 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/libavcodec/ac3.h b/libavcodec/ac3.h
index 661436a..f0b3b1e 100644
--- a/libavcodec/ac3.h
+++ b/libavcodec/ac3.h
@@ -96,6 +96,14 @@ typedef enum AC3DolbySurroundEXMode {
     AC3_DSUREXMOD_PLIIZ
 } AC3DolbySurroundEXMode;
 
+/** Dolby Headphone mode */
+typedef enum AC3DolbyHeadphoneMode {
+    AC3_DHEADPHONMOD_NOTINDICATED = 0,
+    AC3_DHEADPHONMOD_OFF,
+    AC3_DHEADPHONMOD_ON,
+    AC3_DHEADPHONMOD_RESERVED
+} AC3DolbyHeadphoneMode;
+
 typedef struct AC3BitAllocParameters {
     int sr_code;
     int sr_shift;
diff --git a/libavcodec/ac3dec.c b/libavcodec/ac3dec.c
index fa6ba29..56fc270 100644
--- a/libavcodec/ac3dec.c
+++ b/libavcodec/ac3dec.c
@@ -227,8 +227,9 @@ static int ac3_parse_header(AC3DecodeContext *s)
 
     skip_bits(gbc, 2); //skip copyright bit and original bitstream bit
 
-    /* default dolby surround ex mode */
+    /* default dolby matrix encoding modes */
     s->dolby_surround_ex_mode = AC3_DSUREXMOD_NOTINDICATED;
+    s->dolby_headphone_mode   = AC3_DHEADPHONMOD_NOTINDICATED;
 
     /* skip the timecodes or parse the Alternate Bit Stream Syntax
        TODO: read & use the xbsi1 downmix levels */
@@ -242,7 +243,8 @@ static int ac3_parse_header(AC3DecodeContext *s)
             skip_bits(gbc, 14); //skip xbsi1
         if (get_bits1(gbc)) {
             s->dolby_surround_ex_mode = get_bits(gbc, 2);
-            skip_bits(gbc, 12); // skip dheadphonmod, adconvtyp, xbsi2, encinfo
+            s->dolby_headphone_mode   = get_bits(gbc, 2);
+            skip_bits(gbc, 10); // skip adconvtyp (1), xbsi2 (8), encinfo (1)
         }
     }
 
diff --git a/libavcodec/ac3dec.h b/libavcodec/ac3dec.h
index bba4562..73ca1c3 100644
--- a/libavcodec/ac3dec.h
+++ b/libavcodec/ac3dec.h
@@ -89,6 +89,7 @@ typedef struct AC3DecodeContext {
     int eac3;                               ///< indicates if current frame is 
E-AC-3
     int dolby_surround_mode;                ///< dolby surround mode           
         (dsurmod)
     int dolby_surround_ex_mode;             ///< dolby surround ex mode        
         (dsurexmod)
+    int dolby_headphone_mode;               ///< dolby headphone mode          
         (dheadphonmod)
 ///@}
 
 ///@name Frame syntax parameters
-- 
1.8.3.4 (Apple Git-47)

_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to