Commit Graph

63 Commits

Author SHA1 Message Date
Pankaj Bharadiya 9698d03a63 mixer: Add support for TLV RW access check api
Tinyalsa doesn't expose an api to check TLV RW access

Add mixer_ctl_is_access_tlv_rw().

This api will get used by tinymix and audio HALs for checking TLV RW
access before managing the byte related mixer controls.

Change-Id: Ib5707fabf479de638e1c7abd4cd149e7637ff9c2
Signed-off-by: Pankaj Bharadiya <pankaj.laxminarayan.bharadiya@intel.com>
2017-01-10 13:50:39 +05:30
Ricardo Biehl Pasquali c848ea519f corrected (over/under)run definition in pcm.h
overrun is in capture and underrun is in playback.
Look:

'+' has data / '-' hasn't data

overrun (capture):

 You should have
 read until here
                v
        |+++++++|++     <- buffer over(run/flow)

underrun (playback):

 You should have
 written until here
                   v
           |+++++++|--  <- buffer under(run/flow)
2016-12-28 14:42:18 -02:00
Taylor Holberton c6f908ee87 Added pcm_open_by_name()
This function parses a PCM name similar to the ALSA library.
This is done so that the differences between alsa-lib and tinyalsa
are a little more transparent to the user.
2016-12-24 20:33:33 -08:00
Taylor Holberton 558e594ba2 Added pcm_link and pcm_unlink functions
The link function is necessary for time sychronization between multiple PCMs.
2016-12-04 13:42:28 -08:00
Richard Fitzgerald fd3290357e mixer: add ability to update control list with new controls
New controls could appear during runtime, for example if a
new firmware is downloaded to a DSP. Since ALSA drivers are
not supposed to delete or renumber existing controls we can
assume that any new controls will be after any controls we
already know about. We can use this to enable extending our
current list of controls, which is more efficient than
closing the mixer session and recreating it.

Signed-off-by: Richard Fitzgerald <rf@opensource.wolfsonmicro.com>
2016-12-02 16:39:38 +00:00
Taylor Holberton ead42d87ff bumped minor version 2016-12-01 21:20:06 -08:00
Taylor Holberton d7b140a5d9 Using frame counts in pcm_readi and pcm_writei
pcm_readi and pcm_writei now use a frame count to specify the
buffer length instead of using a byte count.
2016-12-01 20:43:28 -08:00
Taylor Holberton f9834eef24 Added pcm_readi and pcm_writei functions
Added these functions to replace pcm_read and pcm_write, which don't return the number of frames actually transferred.

On GCC-like compilers, pcm_read and pcm_write have been marked as deprecated

On doxygen documentation, they have been marked as deprecated as well.
2016-12-01 20:25:41 -08:00
Taylor Holberton 77979a8855 Added format related getters for PCM
Added functions:
 - pcm_get_channels
 - pcm_get_rate
 - pcm_get_format

These were added since they're required for iterating samples and frames.
2016-12-01 20:04:04 -08:00
Taylor Holberton 94c7c83c01 Added function, mixer_get_num_ctls_by_name
This function is used to get the number of mixer controls by a given name.
It was added for use with mixer_get_ctl_by_name_and_index so that client code
can expect the last valid index to pass.
2016-12-01 18:35:24 -08:00
Taylor Holberton a94295b6cf Added mixer_get_ctl_const
This function was added to make available a mixer control accessor
in a function that does not modify its value.
2016-12-01 18:23:16 -08:00
Taylor Holberton cac43a208d Added const specifier for several mixer functions
Functions changed are:
 - mixer_get_name
 - mixer_get_num_ctls
 - mixer_ctl_get_id
 - mixer_ctl_get_name
 - mixer_ctl_get_type
 - mixer_ctl_get_type_string
 - mixer_ctl_get_num_values
 - mixer_ctl_get_num_enums
 - mixer_ctl_get_enum_string
 - mixer_ctl_get_percent
 - mixer_ctl_get_value
 - mixer_ctl_get_array
 - mixer_ctl_get_range_min
 - mixer_ctl_get_range_max
2016-12-01 18:11:24 -08:00
Taylor Holberton 147d7adec6 Added const specifier in several functions
pcm_get_file_descriptor
pcm_get_error
pcm_get_buffer_size
pcm_frames_to_bytes
pcm_bytes_to_frames
pcm_get_subdevice
2016-12-01 17:50:31 -08:00
Taylor Holberton 15d58481e7 added const specifier in function, pcm_is_ready 2016-12-01 17:46:29 -08:00
Taylor Holberton ba285cfbf4 Added const specifier in pcm_open
The const specifier was added to the struct pcm_config argument.
2016-12-01 16:06:29 -08:00
Taylor Holberton 5b9db5b888 Added const specifier to params functions
Funtions changed are:
 - pcm_params_get_mask
 - pcm_params_get_min
 - pcm_params_get_max
2016-12-01 15:57:09 -08:00
Taylor Holberton da1bc31c9c fixed function reference in doc 2016-11-23 13:18:34 -08:00
Taylor Holberton eb54eabdde added missing asterisk for doc 2016-11-23 10:56:24 -08:00
Taylor Holberton 474ab24467 added tinyalsa version header 2016-11-19 10:41:31 -08:00
Taylor Holberton 8e1b1029b2 renamed doxygen group, tinyalsa-pcm to libtinyalsa-pcm 2016-11-19 10:34:50 -08:00
Taylor Holberton 1f29de96f3 origanized and added some documentation 2016-11-19 10:33:50 -08:00
Taylor Holberton 7c8b20a6fe added some documentation to mixer interface 2016-10-01 19:25:19 -04:00
Taylor Holberton 6d58e01d30 added basic pcm documentation 2016-10-01 18:32:30 -04:00
Taylor Holberton 93b544ec2a seperated pcm and mixer APIs 2016-10-01 12:45:22 -04:00
Taylor Holberton c01d4a386c added support for more signed types 2016-10-01 12:22:43 -04:00
Taylor Holberton 7687f0fa2a Merge branch 'address-duplicate-control-names' of https://github.com/dawagner/tinyalsa into dawagner-address-duplicate-control-names 2016-09-16 09:22:18 -04:00
Taylor Holberton bb402603a9 Added get_file_descriptor() 2016-08-03 10:15:46 -04:00
Simon Wilson 33fe27c809 Merge pull request #48 from vinodkoul/wait_delay
Wait delay
2015-09-15 11:36:00 -07:00
Richard Fitzgerald 57a877495e mixer: Add mixer_ctl_get_id
Add a function to get an id of a control that can be
passed to mixer_get_ctl(). This can be used to lookup
a control by name and store its id for later use rather
than have the overhead of name lookup each time it is
used. Lookup by id is quick and avoids the disadvantage
that storing a pointer to the mixer_ctl object creates
a client with a dependency on the address of the internal
control array.

Signed-off-by: Richard Fitzgerald <rf@opensource.wolfsonmicro.com>
2014-09-09 16:54:52 +01:00
David Wagner 4cddf19dfc tinyalsa: add pcm_get_subdevice()
The users of tinyalsa had no way of knowing on which subdevice a stream had
been created.  A new API, "unsigned int pcm_get_subdevice(struct *pcm)" returns
it.  This information is filled during the pcm_open()

Change-Id: Ie866e10e06ce6691ede09e2ca46a24441723ea8b
Signed-off-by: David Wagner <david.wagner@intel.com>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
2014-08-12 14:04:32 +05:30
Hardik T Shah 9ecb93fb6b Tinyalsa: add pcm_delay()
ALSA supports reporting of pcm_delay, make that availble to the users of
tinyalsa too

Change-Id: Ic460f5c55137d263fdf7b142503d3bd52c4b7ebd
Signed-off-by: Hardik T Shah <hardik.t.shah@intel.com>
Signed-off-by: Apelete Seketeli <apeletex.seketeli@intel.com>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
2014-08-12 14:01:38 +05:30
Andy Hung ad80762a3b Update tinypcminfo to display format information
Change-Id: I0e6a04da5a4b122a3748b16c7eb01c4a224c3d84
Signed-off-by: Andy Hung <hunga@google.com>
2014-06-03 12:56:15 -07:00
Simon Wilson 2516c01cfc Merge pull request #34 from elaurent/master
add support for mmap read
2014-06-03 12:46:06 -07:00
Simon Wilson ac6b1b9d9d Merge pull request #33 from gkasten/CL_avsync
pcm_get_htimestamp can now use CLOCK_MONOTONIC
2014-05-08 07:51:30 -07:00
Simon Wilson b03563bb9a Merge pull request #23 from roml/cleanup
Clean up asoundlib.h header file
2014-05-06 06:55:19 -07:00
Omair Mohammed Abdullah c9032a07de tinyalsa: add separate call for pcm prepare
Tinyalsa combines PREPARE and START calls to the driver in the pcm_start()
function.  Typically, this is needed for making a driver allocating hardware
resources that are not related to a PCM stream.

Change-Id: Ic83fad784936bbebab28e8e425debd449182db88
Signed-off-by: Omair Mohammed Abdullah <omair.m.abdullah@linux.intel.com>
Signed-off-by: David Wagner <david.wagner@intel.com>
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
Signed-off-by: Jack Ren <jack.ren@intel.com>
Author-Tracking-BZ: 73509
2014-04-29 16:36:56 +02:00
Frédéric Boisnard 9e2c240f20 Add a function to disambiguate duplicate control names
Control names are not unique and can be shared by multiple mixers controls.
When this happens, there is no way of accessing the mixer using its control
name, because mixer_get_ctl_by_name() always returns the first match. The only
way of accessing the mixer is through its control number, i.e. using
mixer_get_ctl().

This patch adds the function mixer_get_ctl_by_name_and_index() to offer the
possibility to retrieve a control through its name and index.  This index
corresponds to the nth occurence of the control name in the global supported
controls names list.

Change-Id: Ie29bf2a949ecf69f106bbe359155cdbfbe98928c
Signed-off-by: Frédéric Boisnard <fredericx.boisnard@intel.com>
Signed-off-by: David Wagner <david.wagner@intel.com>
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
Signed-off-by: Jack Ren <jack.ren@intel.com>
Author-Tracking-BZ: 139255
2014-04-22 15:29:24 +02:00
Eric Laurent bb7c5dfd95 add support for mmap read 2013-09-27 09:51:38 -07:00
Glenn Kasten 8101240412 pcm_get_htimestamp can now use CLOCK_MONOTONIC
Previously the timebase was not documented.  Now a new pcm_open flag
can be used to specify the clock.  If flag PCM_MONOTONIC is specified,
then pcm_open uses SNDRV_PCM_IOCTL_TTSTAMP with parameter
SNDRV_PCM_TSTAMP_TYPE_MONOTONIC to request timestamps in CLOCK_MONOTONIC.

Change-Id: I40ce359cb38d686cbb2521fb0602a8a17ab4f925
2013-09-03 11:11:10 -07:00
Simon Wilson 7136cf7c86 pcm: support S24_LE format
S24_LE is 24 bit audio in a 32 bit sample size. Also
make the pcm_format_to_bits() function part of the API
since it will be required for tinycap.
2013-07-17 11:08:46 -07:00
Simon Wilson ec281392bb mixer: add mixer_get_name() API 2013-06-28 16:23:55 -07:00
Simon Wilson 710df882fa mixer: add mixer_ctl_update() API
Some sound cards update their controls due to external
events, such as HDMI EDID byte data changing when an
HDMI cable is connected. This API allows the count of
elements to be updated.
2013-06-28 16:17:53 -07:00
Simon Wilson 38f87f3be4 mixer: add get/set_array API
This replaces (and extends) the existing get/set_bytes
API, which is no longer required.
2013-05-07 10:15:20 -07:00
Rom Lemarchand bd791a5f5f Clean up asoundlib.h header file
Remove unused constants and unimplemented functions.
2012-12-18 11:25:24 -08:00
Simon Wilson 43544884f4 pcm: add pcm_get_params API
This enables the capabilities of any given PCM to be queried.

Created with input from Priyesh Bisla and Gabriel Beddingfield.
2012-12-03 10:31:44 -08:00
Dimitris Papastamos f51c05bfaa mixer: Add mixer_ctl_{set,get}_bytes()
For binary controls we don't want to go through
mixer_ctl_{set,get}_value() as that will trigger many calls to our
get()/put() callback in the kernel.  Set the entire payload at once
and trigger the get()/put() callback once.

Signed-off-by: Dimitris Papastamos <dp@opensource.wolfsonmicro.com>
2012-10-24 10:42:13 +01:00
Gabriel M. Beddingfield 3d62222391 Add pcm_wait() to the tinyalsa API. 2012-10-22 17:00:27 -07:00
Gabriel M. Beddingfield 2a274a18b0 pcm: Add support for S8 and S24LE formats. 2012-10-22 16:58:13 -07:00
John Grossman b6db70a160 pcm: Add PCM_NORESTART flag
Add a flag which can be passed to pcm_open (called PCM_NORESTART).
When set on a playback stream, calls to pcm_write will not
automatically attempt to restart an ALSA device in the case of an
underflow.  Instead, it will propagate the first EPIPE error up to the
application to allow it to handle the underflow situation.  Subsequent
calls to pcm_write will attempt to start the pipeline.
2012-05-04 16:33:59 -07:00
Simon Wilson b29ac1ab6b mixer: simplify string get APIs
Just like the pcm_get_error() API, simplify the mixer API
functions to return pointers to constant strings instead
of making copies of strings.
2012-03-08 10:27:40 -08:00