Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 68e5a001 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "hal: Increase PCM offload buffering"

parents 87e4624f 2ce25e27
Loading
Loading
Loading
Loading
+3 −18
Original line number Diff line number Diff line
@@ -68,10 +68,7 @@
#define COMPRESS_OFFLOAD_FRAGMENT_SIZE_FOR_AV_STREAMING (2 * 1024)
#define COMPRESS_OFFLOAD_FRAGMENT_SIZE (32 * 1024)
/* Used in calculating fragment size for pcm offload */
#define PCM_OFFLOAD_BUFFER_DURATION_FOR_AV 1000 /* 1 sec */
#define PCM_OFFLOAD_BUFFER_DURATION_FOR_AV_STREAMING 80 /* 80 millisecs */
#define PCM_OFFLOAD_BUFFER_DURATION_FOR_SMALL_BUFFERS 20 /* 20 millisecs */
#define PCM_OFFLOAD_BUFFER_DURATION_MAX 1200  /* 1200 millisecs */
#define PCM_OFFLOAD_BUFFER_DURATION 40 /* 40 millisecs */

/* MAX PCM fragment size cannot be increased  further due
 * to flinger's cblk size of 1mb,and it has to be a multiple of
@@ -3268,25 +3265,13 @@ uint32_t platform_get_pcm_offload_buffer_size(audio_offload_info_t* info)
{
    uint32_t fragment_size = 0;
    uint32_t bits_per_sample = 16;
    uint32_t pcm_offload_time = PCM_OFFLOAD_BUFFER_DURATION_FOR_SMALL_BUFFERS;
    uint32_t pcm_offload_time = PCM_OFFLOAD_BUFFER_DURATION;

    if (info->format == AUDIO_FORMAT_PCM_24_BIT_OFFLOAD) {
        bits_per_sample = 32;
    }

    if (info->use_small_bufs) {
        pcm_offload_time = PCM_OFFLOAD_BUFFER_DURATION_FOR_SMALL_BUFFERS;
    } else {
        if (!info->has_video) {
            pcm_offload_time = PCM_OFFLOAD_BUFFER_DURATION_MAX;
        } else if (info->has_video && info->is_streaming) {
            pcm_offload_time = PCM_OFFLOAD_BUFFER_DURATION_FOR_AV_STREAMING;
        } else if (info->has_video) {
            pcm_offload_time = PCM_OFFLOAD_BUFFER_DURATION_FOR_AV;
        }
    }

    //duration is set to 20 ms worth of stereo data at 48Khz
    //duration is set to 40 ms worth of stereo data at 48Khz
    //with 16 bit per sample, modify this when the channel
    //configuration is different
    fragment_size = (pcm_offload_time
+3 −18
Original line number Diff line number Diff line
@@ -65,10 +65,7 @@
#define COMPRESS_OFFLOAD_FRAGMENT_SIZE (32 * 1024)

/* Used in calculating fragment size for pcm offload */
#define PCM_OFFLOAD_BUFFER_DURATION_FOR_AV 1000 /* 1 sec */
#define PCM_OFFLOAD_BUFFER_DURATION_FOR_AV_STREAMING 80 /* 80 millisecs */
#define PCM_OFFLOAD_BUFFER_DURATION_FOR_SMALL_BUFFERS 20 /* 20 millisecs */
#define PCM_OFFLOAD_BUFFER_DURATION_MAX 1200  /* 1200 millisecs */
#define PCM_OFFLOAD_BUFFER_DURATION 40 /* 40 millisecs */

/* MAX PCM fragment size cannot be increased  further due
 * to flinger's cblk size of 1mb,and it has to be a multiple of
@@ -3174,25 +3171,13 @@ uint32_t platform_get_pcm_offload_buffer_size(audio_offload_info_t* info)
{
    uint32_t fragment_size = 0;
    uint32_t bits_per_sample = 16;
    uint32_t pcm_offload_time = PCM_OFFLOAD_BUFFER_DURATION_FOR_SMALL_BUFFERS;
    uint32_t pcm_offload_time = PCM_OFFLOAD_BUFFER_DURATION;

    if (info->format == AUDIO_FORMAT_PCM_24_BIT_OFFLOAD) {
        bits_per_sample = 32;
    }

    if (info->use_small_bufs) {
        pcm_offload_time = PCM_OFFLOAD_BUFFER_DURATION_FOR_SMALL_BUFFERS;
    } else {
        if (!info->has_video) {
            pcm_offload_time = PCM_OFFLOAD_BUFFER_DURATION_MAX;
        } else if (info->has_video && info->is_streaming) {
            pcm_offload_time = PCM_OFFLOAD_BUFFER_DURATION_FOR_AV_STREAMING;
        } else if (info->has_video) {
            pcm_offload_time = PCM_OFFLOAD_BUFFER_DURATION_FOR_AV;
        }
    }

    //duration is set to 20 ms worth of stereo data at 48Khz
    //duration is set to 40 ms worth of stereo data at 48Khz
    //with 16 bit per sample, modify this when the channel
    //configuration is different
    fragment_size = (pcm_offload_time