Changeset 346643c in mainline for uspace/lib/drv


Ignore:
Timestamp:
2012-07-11T12:05:30Z (13 years ago)
Author:
Jan Vesely <jano.vesely@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
039337e8
Parents:
94694a4
Message:

audio: Use enum for sample format.

Location:
uspace/lib/drv
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/drv/generic/remote_audio_pcm.c

    r94694a4 r346643c  
    118118}
    119119
    120 int audio_pcm_start_playback(async_exch_t *exch, unsigned id,
    121     unsigned parts, unsigned sample_rate, uint16_t sample_size,
    122     uint8_t channels, bool sign)
     120int audio_pcm_start_playback(async_exch_t *exch, unsigned id, unsigned parts,
     121    unsigned channels, unsigned sample_rate, pcm_sample_format_t format)
    123122{
    124123        if (!exch)
    125124                return EINVAL;
     125        if (parts > UINT8_MAX || channels > UINT8_MAX)
     126                return EINVAL;
     127        assert((format & UINT16_MAX) == format);
    126128        const sysarg_t packed =
    127             (sample_size << 16) | (channels << 8) |
    128             ((parts & 0x7f) << 1) | (sign ? 1 : 0);
     129            (parts << 24) | (channels << 16) | (format & UINT16_MAX);
    129130        return async_req_4_0(exch, DEV_IFACE_ID(AUDIO_PCM_BUFFER_IFACE),
    130131            IPC_M_AUDIO_PCM_START_PLAYBACK, id, sample_rate, packed);
     
    139140}
    140141
    141 int audio_pcm_start_record(async_exch_t *exch, unsigned id,
    142     unsigned parts, unsigned sample_rate, uint16_t sample_size,
    143     uint8_t channels, bool sign)
     142int audio_pcm_start_record(async_exch_t *exch, unsigned id, unsigned parts,
     143    unsigned channels, unsigned sample_rate, pcm_sample_format_t format)
    144144{
    145145        if (!exch)
    146146                return EINVAL;
    147         sysarg_t packed =
    148             (sample_size << 16) | (channels << 8) |
    149             ((parts & 0x7f) << 1) | (sign ? 1 : 0);
     147        if (parts > UINT8_MAX || channels > UINT8_MAX)
     148                return EINVAL;
     149        assert((format & UINT16_MAX) == format);
     150        const sysarg_t packed =
     151            (parts << 24) | (channels << 16) | (format & UINT16_MAX);
    150152        return async_req_4_0(exch, DEV_IFACE_ID(AUDIO_PCM_BUFFER_IFACE),
    151153            IPC_M_AUDIO_PCM_START_RECORD, id, sample_rate, packed);
     
    309311        const unsigned id = DEV_IPC_GET_ARG1(*call);
    310312        const unsigned rate = DEV_IPC_GET_ARG2(*call);
    311         const unsigned size = DEV_IPC_GET_ARG3(*call) >> 16;
    312         const unsigned channels = (DEV_IPC_GET_ARG3(*call) >> 8) & UINT8_MAX;
    313         const unsigned parts = (DEV_IPC_GET_ARG3(*call) >> 1) & 0x7f;
    314         const bool sign = (bool)(DEV_IPC_GET_ARG3(*call) & 1);
     313        const unsigned parts = (DEV_IPC_GET_ARG3(*call) >> 24) & UINT8_MAX;
     314        const unsigned channels = (DEV_IPC_GET_ARG3(*call) >> 16) & UINT8_MAX;
     315        const pcm_sample_format_t format =DEV_IPC_GET_ARG3(*call) & UINT16_MAX;
    315316
    316317        const int ret = pcm_iface->start_playback
    317             ? pcm_iface->start_playback(fun, id, parts, rate, size, channels, sign)
     318            ? pcm_iface->start_playback(fun, id, parts, channels, rate, format)
    318319            : ENOTSUP;
    319320        async_answer_0(callid, ret);
     
    338339        const unsigned id = DEV_IPC_GET_ARG1(*call);
    339340        const unsigned rate = DEV_IPC_GET_ARG2(*call);
    340         const unsigned size = DEV_IPC_GET_ARG3(*call) >> 16;
    341         const unsigned channels = (DEV_IPC_GET_ARG3(*call) >> 8) & UINT8_MAX;
    342         const unsigned parts = (DEV_IPC_GET_ARG3(*call) >> 1) & 0x7f;
    343         const bool sign = (bool)(DEV_IPC_GET_ARG3(*call) & 1);
     341        const unsigned parts = (DEV_IPC_GET_ARG3(*call) >> 24) & UINT8_MAX;
     342        const unsigned channels = (DEV_IPC_GET_ARG3(*call) >> 16) & UINT8_MAX;
     343        const pcm_sample_format_t format =DEV_IPC_GET_ARG3(*call) & UINT16_MAX;
    344344
    345345        const int ret = pcm_iface->start_record
    346             ? pcm_iface->start_record(fun, id, parts, rate, size, channels, sign)
     346            ? pcm_iface->start_record(fun, id, parts, channels, rate, format)
    347347            : ENOTSUP;
    348348        async_answer_0(callid, ret);
  • uspace/lib/drv/include/audio_pcm_iface.h

    r94694a4 r346643c  
    3939#include <async.h>
    4040#include <bool.h>
     41#include <pcm_sample_format.h>
    4142
    4243#include "ddf/driver.h"
     
    4849
    4950int audio_pcm_start_playback(async_exch_t *, unsigned, unsigned,
    50     unsigned, uint16_t, uint8_t, bool);
     51    unsigned, unsigned, pcm_sample_format_t);
    5152int audio_pcm_stop_playback(async_exch_t *, unsigned);
    5253
    5354int audio_pcm_start_record(async_exch_t *, unsigned, unsigned,
    54     unsigned, uint16_t, uint8_t, bool);
     55    unsigned, unsigned, pcm_sample_format_t);
    5556int audio_pcm_stop_record(async_exch_t *, unsigned);
    5657
     
    6263        int (*set_event_session)(ddf_fun_t *, unsigned, async_sess_t *);
    6364        int (*start_playback)(ddf_fun_t *, unsigned, unsigned,
    64             unsigned, unsigned, unsigned, bool);
     65            unsigned, unsigned, pcm_sample_format_t);
    6566        int (*stop_playback)(ddf_fun_t *, unsigned);
    6667        int (*start_record)(ddf_fun_t *, unsigned, unsigned,
    67             unsigned, unsigned, unsigned, bool);
     68            unsigned, unsigned, pcm_sample_format_t);
    6869        int (*stop_record)(ddf_fun_t *, unsigned);
    6970} audio_pcm_iface_t;
Note: See TracChangeset for help on using the changeset viewer.