Giter VIP home page Giter VIP logo

Comments (21)

GoogleCodeExporter avatar GoogleCodeExporter commented on September 13, 2024
suspect the output thread is spinning faster than necessary - can you enable -d 
output=sdebug to see what the log messages are?

Original comment by [email protected] on 3 Jul 2013 at 9:06

from squeezelite.

GoogleCodeExporter avatar GoogleCodeExporter commented on September 13, 2024
[deleted comment]

from squeezelite.

GoogleCodeExporter avatar GoogleCodeExporter commented on September 13, 2024
I did now compile squeezelite from the sources, but I still see the same effect.
Attached you will find two logfiles for two different audio outputs that I 
generated using the binary download from 
https://code.google.com/p/squeezelite/downloads/list running
./squeezelite-x86-64 -o sysdefault:CARD=PCH -n "cS.x121e" -d output=sdebug -f 
debug1.log
and
./squeezelite-x86-64 -o default -n "cS.x121e" -d output=sdebug -f debug2.log

As you will see from the logfiles I did start and stop the playback using the 
Squeezbox Server interface a couple of times.

Thank you for this great program!

Original comment by [email protected] on 3 Jul 2013 at 9:40

Attachments:

from squeezelite.

GoogleCodeExporter avatar GoogleCodeExporter commented on September 13, 2024
Looks like at least one of those cases is doing sample rate conversion in the 
alsa layer.  Could you try with hw:CARD=PCH as the output?  Does this work at 
the rate of your source files?

Original comment by [email protected] on 3 Jul 2013 at 9:48

from squeezelite.

GoogleCodeExporter avatar GoogleCodeExporter commented on September 13, 2024
./squeezelite-x86-64 -o hw:CARD=PCH -n "cS.x121e" -d output=sdebug -f debug3.log
gave me the log file that I attached. The file that I played back was a 44100Hz 
FLAC file.

I was just wondering why the output thread has to do something even when there 
is silence.

Original comment by [email protected] on 3 Jul 2013 at 10:26

Attachments:

from squeezelite.

GoogleCodeExporter avatar GoogleCodeExporter commented on September 13, 2024
Squeezelite sends silence to the output device when not playing anything - this 
prevents clicks and pops opening and closing the device.  So I would expect to 
see the cpu load from the output thread to be constant - however 10% is a high 
value - what is the processor - is it always resampling?

Original comment by [email protected] on 4 Jul 2013 at 8:12

from squeezelite.

GoogleCodeExporter avatar GoogleCodeExporter commented on September 13, 2024
The processor is just a slow AMD E-350. Again, I was not trying to tell you 
about the 10%, but about the fact that the load does not change when paused. 
E.g. I am thinking about running squeezelite on a 24/7 machine, that acts as 
XBMC and squeezebox machine. However I want it to almost idle when not used, 
and squeezelite should not steal power from XMBC when not used at all.

Thank you very much for looking into my comment in such detail!

Original comment by [email protected] on 8 Jul 2013 at 7:04

from squeezelite.

GoogleCodeExporter avatar GoogleCodeExporter commented on September 13, 2024
If you make the alsa buffer values bigger eg "-a 200" then it may reduce the 
cpu load in the output thread as it will wake less often.  However it will 
still keep the output device open and send silence to it, so will still needs 
some cpu (normally this registers as very little)

Original comment by [email protected] on 8 Jul 2013 at 8:55

from squeezelite.

GoogleCodeExporter avatar GoogleCodeExporter commented on September 13, 2024
I had the same issue on a MK802 arm device running linaro while sending the 
output to hw or plughw. After re-routing the output to dmix, the cpu usage went 
down to below 5%.

Original comment by [email protected] on 21 Aug 2013 at 3:01

from squeezelite.

GoogleCodeExporter avatar GoogleCodeExporter commented on September 13, 2024
I had similar issue running on raspberry pi, squeezeplug version 6 (raspbian 
hard float). While paused squeezelite uses ~20% CPU usage. I've tried with both 
0.98 shipped with squeezeplug dist and latest 1.3 version of squeezelite.
Setting output to dmix seems to solve the issue (-o dmix). CPU usage is ~2-3% 
with dmix.

Turning the player off always drops CPU usage down to 0-1%.

Original comment by [email protected] on 7 Oct 2013 at 9:50

from squeezelite.

GoogleCodeExporter avatar GoogleCodeExporter commented on September 13, 2024
DMIX output worked for me, but it resulted in a playback that was too fast on 
an armhf platform similar to the raspberry pi. After much testing, I found that 
some cheap USB based sound cards have a chipset.

For example, the following device (lsusb) was playing too fast on dmix
0c76:1607 JMTek, LLC. audio controller

while the following didn't and is playing perfectly well
0d8c:000e C-Media Electronics, Inc. Audio Adapter (Planet UP-100, Genius G-Talk)


Original comment by [email protected] on 23 Oct 2013 at 8:26

from squeezelite.

GoogleCodeExporter avatar GoogleCodeExporter commented on September 13, 2024
If using dmix results in playback that is too fast, using option '-u hLX' 
resamples the audio to the highest rate supported by the card, and still yields 
much lower CPU usage than sending the audio through pulseaudio.

It seems that upsampling with option -u isn't supported on some of the arm or 
mips binaries though. But if option -u does work, IMO it's a cleaner fix to 
have squeezelite resample than it is to get LMS or ALSA to do it.

Original comment by [email protected] on 25 Oct 2013 at 5:15

from squeezelite.

GoogleCodeExporter avatar GoogleCodeExporter commented on September 13, 2024
I could not try -u hLX option as the available squeezelite binary for armhf 
only has the following options enabled:  LINUX ALSA EVENTFD.

Since I could not file libsox for that architecture, I can't compile it 
myself...  

There was an arm version of libsox in the following thread
http://forums.slimdevices.com/showthread.php?97046-Announce-Squeezelite-a-small-
headless-squeezeplay-emulator-for-linux-(alsa-only)&p=752342&viewfull=1#post7523
42

but trying to install it resulted in the following error
dpkg: error processing libsoxr0_0.1.1-1_i386.deb (--install):
 package architecture (i386) does not match system (armhf)
dpkg: error processing libsoxr-dev_0.1.1-1_i386.deb (--install):
 package architecture (i386) does not match system (armhf)
dpkg: error processing libsoxr-lsr0_0.1.1-1_i386.deb (--install):
 package architecture (i386) does not match system (armhf)
Errors were encountered while processing:
 libsoxr0_0.1.1-1_i386.deb
 libsoxr-dev_0.1.1-1_i386.deb
 libsoxr-lsr0_0.1.1-1_i386.deb


I am running this squeezelite on the following release
 sudo cat *-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=12.10
DISTRIB_CODENAME=quantal
DISTRIB_DESCRIPTION="Ubuntu 12.10"
NAME="Ubuntu"
VERSION="12.10, Quantal Quetzal"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu quantal (12.10)"
VERSION_ID="12.10"

Original comment by [email protected] on 27 Oct 2013 at 8:49

from squeezelite.

GoogleCodeExporter avatar GoogleCodeExporter commented on September 13, 2024
I tried also to get around the high idle cpu load (plug is different to dmix 
and is different to route).
But I wasn't able to use dmix, because I'm using a 7.1 usb-soundcard and split 
it to separate channels using the pcm type plug.

Like this: pcm.sound_usb -> dmix -> softvol -> plug -> route

Output plug:  idle is about 12%, playing is not much more.
Output route: idle is 4%, playing is 7%
Output dmix:  idle is only 0-1%

Original comment by [email protected] on 24 Nov 2013 at 1:28

from squeezelite.

GoogleCodeExporter avatar GoogleCodeExporter commented on September 13, 2024
Hi again...
I found a solution for my high cpu idle usage from this night.
I noticed now, the playback speed was too high (and also pitch). I checked the 
asound.conf and I saw, I used a rate of 48000. After changing it to 44100 the 
playback speed was normal and the cpu load is the same as using route.

So now it is: pcm.sound_usb -> dmix -> softvol -> plug
Output route: idle is 4-5%, playing is 8% (each instance; even if 4 players in 
sync)

Original comment by [email protected] on 24 Nov 2013 at 5:14

from squeezelite.

GoogleCodeExporter avatar GoogleCodeExporter commented on September 13, 2024
Tobi, you're awesome!

I just changed the default rate in /usr/share/alsa/alsa.conf to 44100 and now 
dmix has the right pitch and the CPU usage is back to 4% on my little RK3066 
arm processor when idle, even on a cheap dongle.  This solution is very good 
timing as I just received a $15 usb card with SPDIF output that I was planning 
on using, and it was also causing high CPU.

I hope this helps others having the same issue!

Thanks!

Original comment by [email protected] on 4 Dec 2013 at 9:03

from squeezelite.

GoogleCodeExporter avatar GoogleCodeExporter commented on September 13, 2024
Closing as this issue appears to be related to cpu caused by resampling in the 
alsa layer.  The latest 1.4 beta version will give more resampling option if 
libsoxr is installed, but otherwise it is important to make sure that you alsa 
configuration doesn't resample all the time on low performance machines as 
squeezelite will send audio silence all the time it is running.

Original comment by [email protected] on 23 Dec 2013 at 10:47

  • Changed state: WontFix

from squeezelite.

GoogleCodeExporter avatar GoogleCodeExporter commented on September 13, 2024
Tobi, 

Could you post your asound.conf file? I am trying to do the exact same thing 
with splitting an 8 channel sound card into 4 stereo streams. It works fine, 
except for the high CPU use. 

I'm not quite sure how to accomplish this: pcm.sound_usb -> dmix -> softvol -> 
plug

Any help would be greatly appreciated!

Original comment by [email protected] on 29 Sep 2014 at 7:51

from squeezelite.

GoogleCodeExporter avatar GoogleCodeExporter commented on September 13, 2024
Hey, here`s my asound.conf
Note: Perhaps there is some unseless stuff, but it works :-)
------------------------------------------


pcm.sound_internal {
         type hw
         card 0
         device 0
}

ctl.sound_internal {
         type hw
         card 0
         device 0
}



pcm.sound_usb {
        type hw
        card 1
        device 0
}

ctl.sound_usb {
        type hw
        card 1
        device 0
}


pcm.dmixer {
    type dmix
    ipc_key 1024
    ipc_perm 0666
    slave.pcm "sound_usb"
    slave {
        period_time 0
        period_size 1024
        buffer_size 4096
#        rate 96000
#       rate 48000      #was with the use of mpd
        rate 44100      #low cpu-load with squeezelite
        channels 8
    }
    bindings {
        0 0
        1 1
        2 2
        3 3
        4 4
        5 5
        6 6
        7 7
    }
}


################################################
# Hier kommen die Software-Mixer (Room Volume) #
################################################

pcm.softvol_room1 {
    type softvol
    slave.pcm "dmixer"
    control {
        name "Diele"
        card 1
    }
}

pcm.softvol_room2 {
    type softvol
    slave.pcm "dmixer"
    control {
        name "WC"
        card 1
    }
}

pcm.softvol_room3 {
    type softvol
    slave.pcm "dmixer"
    control {
        name "Bad"
        card 1
    }
}

pcm.softvol_room4 {
    type softvol
    slave.pcm "dmixer"
    control {
        name "Wohnzimmer"
        card 1
    }
}




pcm.!default {
    type plug
    slave.pcm "dmixer"
}

pcm.stereo1 {
    type plug
    slave {
        pcm "dmixer"
        channels 8
    }
    ttable.0.0 1
    ttable.1.1 1
}

pcm.stereo2 {
    type plug
    slave {
        pcm "dmixer"
        channels 8
    }
    ttable.0.2 1
    ttable.1.3 1
}

pcm.stereo3 {
    type plug
    slave {
        pcm "dmixer"
        channels 8
    }
    ttable.0.4 1
    ttable.1.5 1
}

pcm.stereo4 {
    type plug
    slave {
        pcm "dmixer"
        channels 8
    }
    ttable.0.6 1
    ttable.1.7 1
}




### My Setup for Mulirooming
#Diele      - room1  - GREEN (Front)            MONO    - left channel
#WC         - room2  - GREEN (Front)            MONO    - right channel
#Bad        - room3  - BLACK  (Surround)        STEREO
#Wohnzimmer - room4  - YELLOW (Bass/Center)     STEREO


#Diele
pcm.room1 {
    type plug
    slave {
       ###pcm "dmixer"
          pcm "softvol_room1"
        channels 8
    }
    ttable.0.0 1        #front left   --> left   100%
    ttable.1.0 1        #front right  --> left   100%
}


#WC
pcm.room2 {
    type plug
    slave {
     ###pcm "dmixer"
        pcm "softvol_room2"
        channels 8
    }
    ttable.0.1 1        #front left   --> right  100%
    ttable.1.1 1        #front right  --> right  100%
}


#Bad
pcm.room3 {
    type plug
    slave {
     ###pcm "dmixer"
        pcm "softvol_room3"
        channels 8
    }
    ttable.0.6 1        #surround left   --> left   100%
    ttable.1.7 1        #surround right  --> right  100%
}

#Wohnzimmer
pcm.room4 {
    type plug
    slave {
     ###pcm "dmixer"
        pcm "softvol_room4"
        channels 8
    }
    ttable.0.2 1        #center   --> left   100%
    ttable.1.3 1        #bass     --> right  100%
}







pcm.dmixer_internal {
    type dmix
    ipc_key 1024
    ipc_perm 0666
    slave.pcm "sound_internal"
    slave {
        period_time 0
        period_size 1024
        buffer_size 4096
        rate 96000
        channels 2
    }
    bindings {
        0 0
        1 1
#        2 2
#        3 3
#        4 4
#        5 5
#        6 6
#        7 7
    }
}

pcm.internal {
    type plug
    slave {
        pcm "dmixer_internal"
        channels 2
    }
   ttable.0.1 1        #front left   --> right  100%
   ttable.1.1 1        #front right  --> right  100%
}


Original comment by [email protected] on 2 Oct 2014 at 5:29

from squeezelite.

GoogleCodeExporter avatar GoogleCodeExporter commented on September 13, 2024
[deleted comment]

from squeezelite.

GoogleCodeExporter avatar GoogleCodeExporter commented on September 13, 2024
Awesome, thanks!

Original comment by [email protected] on 4 Oct 2014 at 7:20

from squeezelite.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.