1. 27 Sep, 2019 1 commit
    • Axel Mårtensson's avatar
      alsasink: pause/resume · 5d3c9485
      Axel Mårtensson authored
      alsasink can now detect a resume, stop and pause. The sink is now
      properly paused using snd_pcm_pause(), and without losing any data
      5d3c9485
  2. 04 Jun, 2019 1 commit
    • Thibault Saunier's avatar
      alsa: Implement a DeviceProvider · ac5d0f7d
      Thibault Saunier authored
      Removing gstalsadeviceprobe.[ch] as it was a relique from the 0.10
      century.
      
      This doesn't implement device monitoring but only probing, monitoring
      should be implemented in its own commit.
      ac5d0f7d
  3. 13 May, 2019 1 commit
  4. 18 Jan, 2019 2 commits
  5. 26 Sep, 2017 1 commit
  6. 10 Mar, 2017 1 commit
  7. 12 Apr, 2016 1 commit
  8. 24 Mar, 2016 1 commit
  9. 25 Jan, 2016 1 commit
  10. 13 Oct, 2015 1 commit
    • Sebastian Dröge's avatar
      alsa: Use 8 bit pointer type for byte-based pointer arithmetic · 4fe12c1b
      Sebastian Dröge authored
      Usually these loops only run once, so there's no problem here. But sometimes
      they run twice, and by adding the number of bytes to a 16 bit pointer type we
      would advance twice as much as we should.
      
      Also use snd_pcm_frames_to_bytes() in alsasrc to calculate
      the number of bytes to skip, same as we do in alsasink.
      
      Thanks to Lucio A. Hernandez <lucio.a.hernandez@gmail.com> for reporting.
      4fe12c1b
  11. 09 Jun, 2015 1 commit
  12. 10 May, 2015 1 commit
  13. 01 Dec, 2014 1 commit
  14. 24 Nov, 2014 1 commit
  15. 03 Jun, 2014 2 commits
    • Vincent Penquerc'h's avatar
      alsasink: make gst-ident happy · b444d8ba
      Vincent Penquerc'h authored
      b444d8ba
    • Vincent Penquerc'h's avatar
      alsasink: fix occasional crash intersecting invalid values · 3b2d5833
      Vincent Penquerc'h authored
      When a pipeline using alsasink and push mode upstream fails
      to preroll, the following state will be the case:
      - A loop upstream will be PAUSED, pushing a first buffer
      - alsasink will be READY, pending PAUSED, because async
      
      On error, the pipeline will switch to NULL. alsasink is in
      READY, so goes to NULL immediately. It zeroes its cached
      caps. Meanwhile, the upstream loop can cause a caps query,
      conccurent with the state change. This will use those cached
      caps. If the zeroing happens between the NULL test and the
      dereferencing, GStreamer will critical down in the GstValue
      code.
      
      Since it appears that such a gap between states (PAUSED
      and pushing upstream, and NULL downstream) is expected, we
      need to protect the read/write access to the cached caps.
      
      This fixes the critical.
      
      See https://bugzilla.gnome.org/show_bug.cgi?id=731121
      3b2d5833
  16. 19 May, 2014 1 commit
  17. 26 Apr, 2014 1 commit
  18. 09 Oct, 2013 1 commit
  19. 29 May, 2013 1 commit
  20. 24 Jan, 2013 1 commit
    • yanghuolin's avatar
      alsasink: don't use 100% CPU · 67a7b5a9
      yanghuolin authored
      The root cause is that alsa-lib is not thread safe for the same handle.
      There are two threads in the gstreamer accessing alsa-lib not serilized.
      The race condition happens when one thread holds the old framebuffer app_ptr
      position in the kernel, another thread advances the framebuffer app_ptr.
      when the former thread is scheduled to run again, it overwrites the app_ptr
      to old value by copying from kernel.Thus,the app_ptr in the upper
      alsa-lib(pcm_rate) become one period size more advanced than the lower
      alsa-lib(pcm_hw & kernel).
      
      gstreamer uses noblock and poll method to communicate with the alsa-lib.
      The app_ptr unsync situation as described above makes the poll return immediately because
      it concludes there is enough space for the ring-buffer via the low-level alsa-lib.
      The write function returns immediately because it concludes there is not enough
      space for the ring-buffer from the upper-level alsa-lib. Then the loop of poll
      and write runs again and again until another period size is available for
      ring-buffer.This leads to the cpu 100 problem.
      
      delay_lock  is used to avoid the race condition.
      
      Fixes: https://bugzilla.gnome.org/show_bug.cgi?id=690937
      67a7b5a9
  21. 16 Dec, 2012 1 commit
  22. 03 Nov, 2012 1 commit
  23. 20 Oct, 2012 1 commit
  24. 18 Oct, 2012 1 commit
    • Tim-Philipp Müller's avatar
      alsa: fix supported format detection · 1e329bb4
      Tim-Philipp Müller authored
      The format probing code was assuming there'd be one caps
      structure for each separate width/depth combination like
      we did in 0.10 all over the place: for one, we'd query
      unsigned/signed formats together for the same width/height,
      and we'd add the entire current structure to the probed
      caps when we find a format is supported. Now that we have
      all raw formats in a single structure, this is all not going
      to work so well any more. We added the entire structure with
      all possible formats to the caps if we support just one format.
      
      Fix probing so that we only return the list of actually
      supported raw audio formats (with native endianness) from
      get_caps().
      1e329bb4
  25. 19 Sep, 2012 1 commit
  26. 10 Sep, 2012 1 commit
  27. 09 Sep, 2012 1 commit
  28. 18 May, 2012 1 commit
  29. 09 May, 2012 1 commit
  30. 07 May, 2012 1 commit
  31. 13 Apr, 2012 1 commit
  32. 09 Apr, 2012 1 commit
  33. 22 Jan, 2012 1 commit
  34. 16 Jan, 2012 3 commits
  35. 05 Jan, 2012 2 commits