pkgsrc-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[pkgsrc/trunk]: pkgsrc/multimedia/mpv mpv: Rework logic of patch-audio_out_ao...



details:   https://anonhg.NetBSD.org/pkgsrc/rev/905337d7e765
branches:  trunk
changeset: 324574:905337d7e765
user:      leot <leot%pkgsrc.org@localhost>
date:      Tue Oct 23 12:14:54 2018 +0000

description:
mpv: Rework logic of patch-audio_out_ao__oss.c to avoid (mostly) duplicated code

diffstat:

 multimedia/mpv/distinfo                          |   4 +-
 multimedia/mpv/patches/patch-audio_out_ao__oss.c |  41 +++++++++++------------
 2 files changed, 22 insertions(+), 23 deletions(-)

diffs (76 lines):

diff -r 09a130f51b79 -r 905337d7e765 multimedia/mpv/distinfo
--- a/multimedia/mpv/distinfo   Tue Oct 23 12:02:32 2018 +0000
+++ b/multimedia/mpv/distinfo   Tue Oct 23 12:14:54 2018 +0000
@@ -1,8 +1,8 @@
-$NetBSD: distinfo,v 1.43 2018/10/03 09:07:20 leot Exp $
+$NetBSD: distinfo,v 1.44 2018/10/23 12:14:54 leot Exp $
 
 SHA1 (mpv-0.29.1.tar.gz) = 83f2bc0eb5a8bec9a9d5efc7de0e19a442238ac5
 RMD160 (mpv-0.29.1.tar.gz) = 72a4fda3a72ac4fd37ed04435833fa2cf378a012
 SHA512 (mpv-0.29.1.tar.gz) = ec57c9ceaaf2915ee237dd5a1c5ea5d22725d8611e28a9b998e5bb0d8ab5bdf3631d0267fc7b54da31cb1eaa145ef35841e68846bd41c3b9e1024902e92fd086
 Size (mpv-0.29.1.tar.gz) = 3059503 bytes
-SHA1 (patch-audio_out_ao__oss.c) = d7f3a75ab43efe396ce536fb54e6207a7ded3510
+SHA1 (patch-audio_out_ao__oss.c) = b957a3a2cdb58d2c083c7098571485eea3c8f46d
 SHA1 (patch-player_main.c) = e794199990059cc95050032194bca70557c381d7
diff -r 09a130f51b79 -r 905337d7e765 multimedia/mpv/patches/patch-audio_out_ao__oss.c
--- a/multimedia/mpv/patches/patch-audio_out_ao__oss.c  Tue Oct 23 12:02:32 2018 +0000
+++ b/multimedia/mpv/patches/patch-audio_out_ao__oss.c  Tue Oct 23 12:14:54 2018 +0000
@@ -1,16 +1,21 @@
-$NetBSD: patch-audio_out_ao__oss.c,v 1.6 2017/09/13 10:35:58 leot Exp $
+$NetBSD: patch-audio_out_ao__oss.c,v 1.7 2018/10/23 12:14:54 leot Exp $
 
 - ioctl(..., SNDCTL_DSP_CHANNELS, &nchannels) for not supported nchannels does not
   return an error and instead set nchannels to the default value. Instead of
-  failing with no audio, fallback to stereo or mono.
-  Fallback logic inspired by `OSS v3 Programmer's guide', p. 34.
+  failing with no audio, fallbacks to stereo.
 
---- audio/out/ao_oss.c.orig    2017-07-22 17:01:42.955374723 +0000
+--- audio/out/ao_oss.c.orig    2018-10-02 19:03:41.000000000 +0000
 +++ audio/out/ao_oss.c
-@@ -332,13 +332,26 @@ static int reopen_device(struct ao *ao, 
+@@ -336,19 +336,23 @@ static int reopen_device(struct ao *ao, 
+             mp_chmap_sel_add_map(&sel, &oss_layouts[n]);
+         if (!ao_chmap_sel_adjust(ao, &sel, &channels))
+             goto fail;
+-        int reqchannels = channels.num;
++        int nchannels, reqchannels;
++        nchannels = reqchannels = channels.num;
          // We only use SNDCTL_DSP_CHANNELS for >2 channels, in case some drivers don't have it
          if (reqchannels > 2) {
-             int nchannels = reqchannels;
+-            int nchannels = reqchannels;
 -            if (ioctl(p->audio_fd, SNDCTL_DSP_CHANNELS, &nchannels) == -1 ||
 -                nchannels != reqchannels)
 -            {
@@ -19,21 +24,15 @@
                         reqchannels);
                  goto fail;
              }
+         } else {
+-            int c = reqchannels - 1;
++            int c;
 +            if (nchannels != reqchannels) {
-+                // Fallback to stereo or mono
-+                int c;
-+                for (nchannels = c = 2; c >= 1; c--, nchannels--) {
-+                    if (ioctl(p->audio_fd, SNDCTL_DSP_CHANNELS, &c) == -1) {
-+                        MP_ERR(ao, "Failed to set audio device to %d channels.\n", c);
-+                        goto fail;
-+                    }
-+                    if (c == nchannels)
-+                        break;
-+                }
-+                if (!ao_chmap_sel_get_def(ao, &sel, &channels, c))
-+                    goto fail;
-+                MP_WARN(ao, "using %d channels (requested: %d)\n", channels.num, reqchannels);
++                // Fallback to stereo
++                c = 1;
++            } else {
++                c = reqchannels - 1;
 +            }
-         } else {
-             int c = reqchannels - 1;
              if (ioctl(p->audio_fd, SNDCTL_DSP_STEREO, &c) == -1) {
+                 MP_ERR(ao, "Failed to set audio device to %d channels.\n",
+                        reqchannels);



Home | Main Index | Thread Index | Old Index