79 lines
3.2 KiB
Python
79 lines
3.2 KiB
Python
# Lint as: python2, python3
|
|
# Copyright 2015 The Chromium OS Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
"""This module provides the utilities for USB audio using chameleon."""
|
|
|
|
from __future__ import absolute_import
|
|
from __future__ import division
|
|
from __future__ import print_function
|
|
from six.moves import range
|
|
|
|
|
|
|
|
def set_usb_playback_configs_on_chameleon(widget_link, playback_configs):
|
|
"""Sets the playback configurations for the USB gadget driver on Chameleon.
|
|
|
|
This method also sets the channel map of the link based on the channel
|
|
number specified in the configs dictionary.
|
|
|
|
@param widget_link: The USBWidgetLink object to be handled.
|
|
@param playback_configs: A 4-entry dictionary with following fields:
|
|
'file_type', 'sample_format', 'channel' and 'rate'.
|
|
For e.g.,
|
|
format = {
|
|
'file_type': 'wav',
|
|
'sample_format': 'S16_LE',
|
|
'channel': 2,
|
|
'rate': 48000
|
|
}
|
|
However, the 'file_type' field will be ignored
|
|
since file type for playback is determined by the
|
|
file type of the playback file passed in by user.
|
|
|
|
"""
|
|
channel_number = playback_configs['channel']
|
|
widget_link.channel_map = \
|
|
_convert_channel_number_to_channel_map(channel_number)
|
|
usb_ctrl = widget_link.usb_ctrl
|
|
usb_ctrl.set_playback_configs(playback_configs)
|
|
|
|
|
|
def set_usb_capture_configs_on_chameleon(widget_link, capture_configs):
|
|
"""Sets the capture configurations for the USB gadget driver on Chameleon.
|
|
|
|
This method also sets the channel map of the link based on the channel
|
|
number specified in the configs dictionary.
|
|
|
|
@param widget_link: The USBWidgetLink object to be handled.
|
|
@param capture_configs: A 4-entry dictionary with following fields:
|
|
'file_type', 'sample_format', 'channel' and 'rate'.
|
|
For e.g.,
|
|
format = {
|
|
'file_type': 'wav',
|
|
'sample_format': 'S16_LE',
|
|
'channel': 2,
|
|
'rate': 48000
|
|
}
|
|
'file_type' field is used to specify the file type
|
|
in which captured audio data should be saved.
|
|
|
|
"""
|
|
channel_number = capture_configs['channel']
|
|
widget_link.channel_map = \
|
|
_convert_channel_number_to_channel_map(channel_number)
|
|
usb_ctrl = widget_link.usb_ctrl
|
|
usb_ctrl.set_capture_configs(capture_configs)
|
|
|
|
|
|
def _convert_channel_number_to_channel_map(channel_number):
|
|
"""Converts the channel number passed into a list representing channel map.
|
|
|
|
@param channel_number: A number representing the number of channels.
|
|
|
|
@return: A list representing the corresponding channel map.
|
|
|
|
"""
|
|
return list(range(channel_number))
|