a2dp_sbc_encoder.h revision f66f4e95f2b4bc8d36033f2d65b387e32601fcd8
19768ca48f57aaf035f508a473421d210b5145e99Greg Hartman/****************************************************************************** 2d059297112922cabb0c674840589be8db821fd9aAdam Langley * 3d059297112922cabb0c674840589be8db821fd9aAdam Langley * Copyright (C) 2016 The Android Open Source Project 4d059297112922cabb0c674840589be8db821fd9aAdam Langley * Copyright (C) 2009-2012 Broadcom Corporation 5d059297112922cabb0c674840589be8db821fd9aAdam Langley * 6d059297112922cabb0c674840589be8db821fd9aAdam Langley * Licensed under the Apache License, Version 2.0 (the "License"); 7d059297112922cabb0c674840589be8db821fd9aAdam Langley * you may not use this file except in compliance with the License. 8d059297112922cabb0c674840589be8db821fd9aAdam Langley * You may obtain a copy of the License at: 9d059297112922cabb0c674840589be8db821fd9aAdam Langley * 10d059297112922cabb0c674840589be8db821fd9aAdam Langley * http://www.apache.org/licenses/LICENSE-2.0 11d059297112922cabb0c674840589be8db821fd9aAdam Langley * 12d059297112922cabb0c674840589be8db821fd9aAdam Langley * Unless required by applicable law or agreed to in writing, software 139768ca48f57aaf035f508a473421d210b5145e99Greg Hartman * distributed under the License is distributed on an "AS IS" BASIS, 14d059297112922cabb0c674840589be8db821fd9aAdam Langley * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15d059297112922cabb0c674840589be8db821fd9aAdam Langley * See the License for the specific language governing permissions and 16d059297112922cabb0c674840589be8db821fd9aAdam Langley * limitations under the License. 17d059297112922cabb0c674840589be8db821fd9aAdam Langley * 18d059297112922cabb0c674840589be8db821fd9aAdam Langley ******************************************************************************/ 19d059297112922cabb0c674840589be8db821fd9aAdam Langley 20d059297112922cabb0c674840589be8db821fd9aAdam Langley// 21d059297112922cabb0c674840589be8db821fd9aAdam Langley// Interface to the A2DP SBC Encoder 22d059297112922cabb0c674840589be8db821fd9aAdam Langley// 23d059297112922cabb0c674840589be8db821fd9aAdam Langley 24d059297112922cabb0c674840589be8db821fd9aAdam Langley#ifndef A2DP_SBC_ENCODER_H 25d059297112922cabb0c674840589be8db821fd9aAdam Langley#define A2DP_SBC_ENCODER_H 26d059297112922cabb0c674840589be8db821fd9aAdam Langley 27d059297112922cabb0c674840589be8db821fd9aAdam Langley#include "osi/include/time.h" 28d059297112922cabb0c674840589be8db821fd9aAdam Langley#include "a2dp_api.h" 29d059297112922cabb0c674840589be8db821fd9aAdam Langley 30d059297112922cabb0c674840589be8db821fd9aAdam Langley#ifdef __cplusplus 31d059297112922cabb0c674840589be8db821fd9aAdam Langleyextern "C" { 32d059297112922cabb0c674840589be8db821fd9aAdam Langley#endif 33d059297112922cabb0c674840589be8db821fd9aAdam Langley 34d059297112922cabb0c674840589be8db821fd9aAdam Langley// Initialize the A2DP SBC encoder. 35d059297112922cabb0c674840589be8db821fd9aAdam Langley// If |is_peer_edr| is true, the A2DP peer device supports EDR. 36d059297112922cabb0c674840589be8db821fd9aAdam Langley// If |peer_supports_3mbps| is true, the A2DP peer device supports 3Mbps EDR. 37// The encoder initialization parameters are in |p_init_params|. 38// |enqueue_callback} is the callback for enqueueing the encoded audio data. 39void a2dp_sbc_encoder_init(bool is_peer_edr, bool peer_supports_3mbps, 40 const tA2DP_ENCODER_INIT_PARAMS *p_init_params, 41 a2dp_source_read_callback_t read_callback, 42 a2dp_source_enqueue_callback_t enqueue_callback); 43 44// Update the A2DP SBC encoder. 45// The encoder update parameters are in |p_update_params|. 46void a2dp_sbc_encoder_update(const tA2DP_ENCODER_UPDATE_PARAMS *p_update_params); 47 48// Cleanup the A2DP SBC encoder. 49void a2dp_sbc_encoder_cleanup(void); 50 51// Initialize the feeding for the A2DP SBC encoder. 52// The feeding initialization parameters are in |p_feeding_params|. 53void a2dp_sbc_feeding_init(const tA2DP_FEEDING_PARAMS *p_feeding_params); 54 55// Reset the feeding for the A2DP SBC encoder. 56void a2dp_sbc_feeding_reset(void); 57 58// Flush the feeding for the A2DP SBC encoder. 59void a2dp_sbc_feeding_flush(void); 60 61// Get the A2DP SBC encoder interval (in milliseconds). 62period_ms_t a2dp_sbc_get_encoder_interval_ms(void); 63 64// Prepare and send A2DP SBC encoded frames. 65// |timestamp_us| is the current timestamp (in microseconds). 66void a2dp_sbc_send_frames(uint64_t timestamp_us); 67 68// Dump SBC codec-related statistics. 69// |fd| is the file descriptor to use to dump the statistics information 70// in user-friendly test format. 71void a2dp_sbc_debug_codec_dump(int fd); 72 73#ifdef __cplusplus 74} 75#endif 76 77#endif // A2DP_SBC_ENCODER_H 78