# HG changeset patch # User ib # Date 1395750309 0 # Node ID ef9dea4785bc28c7deb9344f07487de2cda3207e # Parent 5fb43d5efdca625fa1354ba5581b6f7af56080fa Detect audio AC3/DTS pass-through S/PDIF. diff -r 5fb43d5efdca -r ef9dea4785bc gui/interface.c --- a/gui/interface.c Tue Mar 25 00:15:02 2014 +0000 +++ b/gui/interface.c Tue Mar 25 12:25:09 2014 +0000 @@ -48,6 +48,7 @@ #include "input/input.h" #include "libaf/equalizer.h" #include "libavutil/common.h" +#include "libmpcodecs/ad.h" #include "libmpcodecs/dec_audio.h" #include "libmpcodecs/dec_video.h" #include "libmpcodecs/vd.h" @@ -328,6 +329,7 @@ int idata = (intptr_t)data, msg, state; stream_t *stream = NULL; sh_audio_t *sh_audio; + const ad_functions_t *ad; mixer_t *mixer; float l, r, b; plItem *next = NULL; @@ -702,6 +704,9 @@ sh_audio = data; + ad = sh_audio->ad_driver; + guiInfo.AudioPassthrough = (gstrcmp(ad->info->short_name, "hwac3") == 0); + guiInfo.AudioChannels = sh_audio ? sh_audio->channels : 0; if (guiInfo.AudioChannels < 2) diff -r 5fb43d5efdca -r ef9dea4785bc gui/interface.h --- a/gui/interface.h Tue Mar 25 00:15:02 2014 +0000 +++ b/gui/interface.h Tue Mar 25 12:25:09 2014 +0000 @@ -108,6 +108,8 @@ int StreamType; int AudioChannels; + int AudioPassthrough; + int AudioStreams; stream_language_t AudioStream[32]; diff -r 5fb43d5efdca -r ef9dea4785bc gui/ui/actions.c --- a/gui/ui/actions.c Tue Mar 25 00:15:02 2014 +0000 +++ b/gui/ui/actions.c Tue Mar 25 12:25:09 2014 +0000 @@ -707,6 +707,7 @@ guiInfo.VideoWidth = 0; guiInfo.VideoHeight = 0; guiInfo.AudioChannels = 0; + guiInfo.AudioPassthrough = False; guiInfo.RunningTime = 0; if (totals) { diff -r 5fb43d5efdca -r ef9dea4785bc gui/win32/interface.c --- a/gui/win32/interface.c Tue Mar 25 00:15:02 2014 +0000 +++ b/gui/win32/interface.c Tue Mar 25 12:25:09 2014 +0000 @@ -60,6 +60,7 @@ #include "libvo/video_out.h" #include "libao2/audio_out.h" #include "access_mpcontext.h" +#include "libmpcodecs/ad.h" #include "libmpcodecs/vd.h" #include "libmpcodecs/dec_audio.h" #include "gui/ui/actions.h" @@ -561,6 +562,7 @@ int idata = (intptr_t) data; stream_t *stream; sh_audio_t *sh_audio; + const ad_functions_t *ad; #ifdef CONFIG_DVDREAD dvd_priv_t *dvdp; #endif @@ -623,6 +625,8 @@ case GUI_SET_AUDIO: { sh_audio = data; + ad = sh_audio->ad_driver; + guiInfo.AudioPassthrough = (gstrcmp(ad->info->short_name, "hwac3") == 0); guiInfo.AudioChannels = sh_audio ? sh_audio->channels : 0; if (sh_audio && !guiInfo.sh_video) guiInfo.VideoWindow = FALSE; if(IsWindowVisible(mygui->videowindow) && !guiInfo.VideoWindow) @@ -793,6 +797,7 @@ guiInfo.ElapsedTime = 0; guiInfo.Position = 0; guiInfo.AudioChannels = 0; + guiInfo.AudioPassthrough = FALSE; guiInfo.Track = 1; guiInfo.Chapter = 1;