国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

藍(lán)牙音頻A2DP(二) -- audio_hw_device結(jié)構(gòu)體

2019-11-06 09:36:46
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

每一個(gè)音頻設(shè)備,都是一個(gè)audio_hw_device結(jié)構(gòu)體的實(shí)現(xiàn),那么對(duì)于audio_hw_device的理解,能夠更好的理解音頻設(shè)備可以做什么,怎么做。

看下audio_hw_device的結(jié)構(gòu)體定義(hardware/libhardware/include/hardware/audio.h,英文就不寫(xiě)了,隨便翻譯一下):

516 struct audio_hw_device {517 /** * 音頻設(shè)備的通用方法,就是記錄下版本好,TAG這些基本信息的, * 雖然沒(méi)啥用,但是每個(gè)audio_hw_device都必須以此開(kāi)頭 */522 struct hw_device_t common;523524 /** * Audio Flinger通過(guò)此函數(shù)查看該audio_hw_device的實(shí)現(xiàn)支持哪些設(shè)備。 * 藍(lán)牙A2DP未提供此函數(shù)實(shí)現(xiàn),也許就是表示啥都支持 */536 uint32_t (*get_supported_devices)(const struct audio_hw_device *dev);537538 /** * 檢查該音頻接口是否已初始化 * 藍(lán)牙似乎沒(méi)檢查,啥都沒(méi)做,直接返回 0(success)541 */542 int (*init_check)(const struct audio_hw_device *dev);543544 /** * 設(shè)置在某一個(gè)設(shè)備上話音數(shù)據(jù)音量,范圍 0.0 - 1.0 */545 int (*set_voice_volume)(struct audio_hw_device *dev, float volume);546547 /** * 設(shè)置該設(shè)備下所有實(shí)體的音量大小,這個(gè)就不止是話音數(shù)據(jù)了 * 范圍 0.0 - 1.0551 */552 int (*set_master_volume)(struct audio_hw_device *dev, float volume); /** * 獲取當(dāng)前整體音量大小,如果HAL支持這個(gè)功能,那么Audio Flinger就要 * 通過(guò)該方法去讀取值,并在Audio Service啟動(dòng)的時(shí)候,以該值為初始值 * 當(dāng)然,也可以不支持,不支持的設(shè)置為NULL * 藍(lán)牙A2DP不支持該方法,將道理的話,PRimary支持就夠了 */561 int (*get_master_volume)(struct audio_hw_device *dev, float *volume);562563 /** * 設(shè)置音頻狀態(tài),主要為: * AUDIO_MODE_NORMAL 正常 * AUDIO_MODE_RINGTONE 鈴音 * AUDIO_MODE_IN_CALL 通話567 */568 int (*set_mode)(struct audio_hw_device *dev, audio_mode_t mode);569570 /* 設(shè)置麥克風(fēng)靜音 */571 int (*set_mic_mute)(struct audio_hw_device *dev, bool state);572 int (*get_mic_mute)(const struct audio_hw_device *dev, bool *state);573574 /* 設(shè)置/獲取 全局音頻參數(shù) */575 int (*set_parameters)(struct audio_hw_device *dev, const char *kv_pairs);581 char * (*get_parameters)(const struct audio_hw_device *dev,582 const char *keys);583584 /* * 獲取輸入buff的長(zhǎng)度 * 藍(lán)牙A2DP不支持該功能,就不糾結(jié)到底是啥子長(zhǎng)度了587 */588 size_t (*get_input_buffer_size)(const struct audio_hw_device *dev,589 const struct audio_config *config);584 /* * 關(guān)鍵的接口,用于創(chuàng)建并打開(kāi)音頻硬件輸出流 * 不同的音頻設(shè)備的address是不一樣的 * Bluetooth: use MAC address of the device "00:11:22:AA:BB:CC" * USB: use ALSA card and device number "card=X;device=Y" * other: a number or other string587 */599 int (*open_output_stream)(struct audio_hw_device *dev,600 audio_io_handle_t handle,601 audio_devices_t devices,602 audio_output_flags_t flags,603 struct audio_config *config,604 struct audio_stream_out **stream_out,605 const char *address);606607 void (*close_output_stream)(struct audio_hw_device *dev,608 struct audio_stream_out* stream_out);609584 /* * 關(guān)鍵的接口,用于創(chuàng)建并打開(kāi)音頻硬件輸入流587 */611 int (*open_input_stream)(struct audio_hw_device *dev,612 audio_io_handle_t handle,613 audio_devices_t devices,614 struct audio_config *config,615 struct audio_stream_in **stream_in,616 audio_input_flags_t flags,617 const char *address,618 audio_source_t source);619620 void (*close_input_stream)(struct audio_hw_device *dev,621 struct audio_stream_in *stream_in);622623 /* * 打印當(dāng)前音頻的狀態(tài) * 藍(lán)牙實(shí)現(xiàn)了,但啥也沒(méi)做 */624 int (*dump)(const struct audio_hw_device *dev, int fd);625626 /* * 后面的接口,藍(lán)牙都沒(méi)用,不看了 */630 int (*set_master_mute)(struct audio_hw_device *dev, bool mute);639 int (*get_master_mute)(struct audio_hw_device *dev, bool *mute);640648 int (*create_audio_patch)(struct audio_hw_device *dev,649 unsigned int num_sources,650 const struct audio_port_config *sources,651 unsigned int num_sinks,652 const struct audio_port_config *sinks,653 audio_patch_handle_t *handle);656 int (*release_audio_patch)(struct audio_hw_device *dev,657 audio_patch_handle_t handle);665 int (*get_audio_port)(struct audio_hw_device *dev,666 struct audio_port *port);669 int (*set_audio_port_config)(struct audio_hw_device *dev,670 const struct audio_port_config *config);從audio的結(jié)構(gòu)體以及藍(lán)牙A2DP對(duì)其的實(shí)現(xiàn)可以看出,藍(lán)牙音頻的主要功能都是包含在output stream 和input stream。 adev->device.open_output_stream = adev_open_output_stream; adev->device.close_output_stream = adev_close_output_stream; adev->device.open_input_stream = adev_open_input_stream; adev->device.close_input_stream = adev_close_input_stream;
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 登封市| 日土县| 罗平县| 广宗县| 岳阳县| 庆云县| 贵州省| 宜春市| 门源| 福建省| 岢岚县| 青海省| 芷江| 鄄城县| 将乐县| 南部县| 安福县| 青神县| 东莞市| 富源县| 怀宁县| 浦东新区| 五莲县| 扎兰屯市| 同江市| 五台县| 怀化市| 兰西县| 永顺县| 呼和浩特市| 漯河市| 济源市| 乡城县| 许昌市| 荆州市| 海晏县| 宿州市| 抚州市| 修文县| 慈利县| 仪征市|