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