lkml.org 
[lkml]   [2022]   [Sep]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.19 038/192] ALSA: aloop: Fix random zeros in capture data when using jiffies timer
    Date
    From: Pattara Teerapong <pteerapong@chromium.org>

    commit 3e48940abee88b8dbbeeaf8a07e7b2b6be1271b3 upstream.

    In loopback_jiffies_timer_pos_update(), we are getting jiffies twice.
    First time for playback, second time for capture. Jiffies can be updated
    between these two calls and if the capture jiffies is larger, extra zeros
    will be filled in the capture buffer.

    Change to get jiffies once and use it for both playback and capture.

    Signed-off-by: Pattara Teerapong <pteerapong@chromium.org>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20220901144036.4049060-1-pteerapong@chromium.org
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    sound/drivers/aloop.c | 7 ++++---
    1 file changed, 4 insertions(+), 3 deletions(-)

    --- a/sound/drivers/aloop.c
    +++ b/sound/drivers/aloop.c
    @@ -605,17 +605,18 @@ static unsigned int loopback_jiffies_tim
    cable->streams[SNDRV_PCM_STREAM_PLAYBACK];
    struct loopback_pcm *dpcm_capt =
    cable->streams[SNDRV_PCM_STREAM_CAPTURE];
    - unsigned long delta_play = 0, delta_capt = 0;
    + unsigned long delta_play = 0, delta_capt = 0, cur_jiffies;
    unsigned int running, count1, count2;

    + cur_jiffies = jiffies;
    running = cable->running ^ cable->pause;
    if (running & (1 << SNDRV_PCM_STREAM_PLAYBACK)) {
    - delta_play = jiffies - dpcm_play->last_jiffies;
    + delta_play = cur_jiffies - dpcm_play->last_jiffies;
    dpcm_play->last_jiffies += delta_play;
    }

    if (running & (1 << SNDRV_PCM_STREAM_CAPTURE)) {
    - delta_capt = jiffies - dpcm_capt->last_jiffies;
    + delta_capt = cur_jiffies - dpcm_capt->last_jiffies;
    dpcm_capt->last_jiffies += delta_capt;
    }


    \
     
     \ /
      Last update: 2022-09-13 16:12    [W:3.244 / U:0.668 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site