1 /*
2 * Copyright 2023 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17 // Stubbed non-standard codec.
18
19 #include "a2dp_vendor.h"
20 #include "a2dp_vendor_opus.h"
21
A2DP_IsVendorSourceCodecValidOpus(const uint8_t * p_codec_info)22 bool A2DP_IsVendorSourceCodecValidOpus(const uint8_t* p_codec_info) {
23 return false;
24 }
25
A2DP_IsVendorSinkCodecValidOpus(const uint8_t * p_codec_info)26 bool A2DP_IsVendorSinkCodecValidOpus(const uint8_t* p_codec_info) {
27 return false;
28 }
29
A2DP_IsVendorPeerSourceCodecValidOpus(const uint8_t * p_codec_info)30 bool A2DP_IsVendorPeerSourceCodecValidOpus(const uint8_t* p_codec_info) {
31 return false;
32 }
33
A2DP_IsVendorPeerSinkCodecValidOpus(const uint8_t * p_codec_info)34 bool A2DP_IsVendorPeerSinkCodecValidOpus(const uint8_t* p_codec_info) {
35 return false;
36 }
37
A2DP_IsVendorSinkCodecSupportedOpus(const uint8_t * p_codec_info)38 bool A2DP_IsVendorSinkCodecSupportedOpus(const uint8_t* p_codec_info) {
39 return false;
40 }
A2DP_IsPeerSourceCodecSupportedOpus(const uint8_t * p_codec_info)41 bool A2DP_IsPeerSourceCodecSupportedOpus(const uint8_t* p_codec_info) {
42 return false;
43 }
44
A2DP_VendorUsesRtpHeaderOpus(bool content_protection_enabled,const uint8_t * p_codec_info)45 bool A2DP_VendorUsesRtpHeaderOpus(bool content_protection_enabled,
46 const uint8_t* p_codec_info) {
47 return false;
48 }
49
A2DP_VendorCodecNameOpus(const uint8_t * p_codec_info)50 const char* A2DP_VendorCodecNameOpus(const uint8_t* p_codec_info) {
51 return "Opus";
52 }
53
A2DP_VendorCodecTypeEqualsOpus(const uint8_t * p_codec_info_a,const uint8_t * p_codec_info_b)54 bool A2DP_VendorCodecTypeEqualsOpus(const uint8_t* p_codec_info_a,
55 const uint8_t* p_codec_info_b) {
56 return false;
57 }
58
A2DP_VendorCodecEqualsOpus(const uint8_t * p_codec_info_a,const uint8_t * p_codec_info_b)59 bool A2DP_VendorCodecEqualsOpus(const uint8_t* p_codec_info_a,
60 const uint8_t* p_codec_info_b) {
61 return false;
62 }
63
A2DP_VendorGetBitRateOpus(const uint8_t * p_codec_info)64 int A2DP_VendorGetBitRateOpus(const uint8_t* p_codec_info) { return -1; }
65
A2DP_VendorGetTrackSampleRateOpus(const uint8_t * p_codec_info)66 int A2DP_VendorGetTrackSampleRateOpus(const uint8_t* p_codec_info) {
67 return -1;
68 }
69
A2DP_VendorGetTrackBitsPerSampleOpus(const uint8_t * p_codec_info)70 int A2DP_VendorGetTrackBitsPerSampleOpus(const uint8_t* p_codec_info) {
71 return -1;
72 }
73
A2DP_VendorGetTrackChannelCountOpus(const uint8_t * p_codec_info)74 int A2DP_VendorGetTrackChannelCountOpus(const uint8_t* p_codec_info) {
75 return -1;
76 }
77
A2DP_VendorGetSinkTrackChannelTypeOpus(const uint8_t * p_codec_info)78 int A2DP_VendorGetSinkTrackChannelTypeOpus(const uint8_t* p_codec_info) {
79 return -1;
80 }
81
A2DP_VendorGetChannelModeCodeOpus(const uint8_t * p_codec_info)82 int A2DP_VendorGetChannelModeCodeOpus(const uint8_t* p_codec_info) {
83 return -1;
84 }
85
A2DP_VendorGetFrameSizeOpus(const uint8_t * p_codec_info)86 int A2DP_VendorGetFrameSizeOpus(const uint8_t* p_codec_info) { return -1; }
87
A2DP_VendorGetPacketTimestampOpus(const uint8_t * p_codec_info,const uint8_t * p_data,uint32_t * p_timestamp)88 bool A2DP_VendorGetPacketTimestampOpus(const uint8_t* p_codec_info,
89 const uint8_t* p_data,
90 uint32_t* p_timestamp) {
91 return false;
92 }
93
A2DP_VendorBuildCodecHeaderOpus(const uint8_t * p_codec_info,BT_HDR * p_buf,uint16_t frames_per_packet)94 bool A2DP_VendorBuildCodecHeaderOpus(const uint8_t* p_codec_info, BT_HDR* p_buf,
95 uint16_t frames_per_packet) {
96 return false;
97 }
98
A2DP_VendorCodecInfoStringOpus(const uint8_t * p_codec_info)99 std::string A2DP_VendorCodecInfoStringOpus(const uint8_t* p_codec_info) {
100 return "Unsupported codec: Opus";
101 }
102
A2DP_VendorGetEncoderInterfaceOpus(const uint8_t * p_codec_info)103 const tA2DP_ENCODER_INTERFACE* A2DP_VendorGetEncoderInterfaceOpus(
104 const uint8_t* p_codec_info) {
105 return nullptr;
106 }
107
A2DP_VendorGetDecoderInterfaceOpus(const uint8_t * p_codec_info)108 const tA2DP_DECODER_INTERFACE* A2DP_VendorGetDecoderInterfaceOpus(
109 const uint8_t* p_codec_info) {
110 return nullptr;
111 }
112
A2DP_VendorAdjustCodecOpus(uint8_t * p_codec_info)113 bool A2DP_VendorAdjustCodecOpus(uint8_t* p_codec_info) { return false; }
114
A2DP_VendorSourceCodecIndexOpus(const uint8_t * p_codec_info)115 btav_a2dp_codec_index_t A2DP_VendorSourceCodecIndexOpus(
116 const uint8_t* p_codec_info) {
117 return BTAV_A2DP_CODEC_INDEX_MAX;
118 }
119
A2DP_VendorSinkCodecIndexOpus(const uint8_t * p_codec_info)120 btav_a2dp_codec_index_t A2DP_VendorSinkCodecIndexOpus(
121 const uint8_t* p_codec_info) {
122 return BTAV_A2DP_CODEC_INDEX_MAX;
123 }
124
A2DP_VendorCodecIndexStrOpus(void)125 const char* A2DP_VendorCodecIndexStrOpus(void) { return "Opus"; }
126
A2DP_VendorCodecIndexStrOpusSink(void)127 const char* A2DP_VendorCodecIndexStrOpusSink(void) { return "Opus SINK"; }
128
A2DP_VendorInitCodecConfigOpus(AvdtpSepConfig * p_cfg)129 bool A2DP_VendorInitCodecConfigOpus(AvdtpSepConfig* p_cfg) { return false; }
130
A2DP_VendorInitCodecConfigOpusSink(AvdtpSepConfig * p_cfg)131 bool A2DP_VendorInitCodecConfigOpusSink(AvdtpSepConfig* p_cfg) { return false; }
132
A2dpCodecConfigOpusSource(btav_a2dp_codec_priority_t codec_priority)133 A2dpCodecConfigOpusSource::A2dpCodecConfigOpusSource(
134 btav_a2dp_codec_priority_t codec_priority)
135 : A2dpCodecConfigOpusBase(BTAV_A2DP_CODEC_INDEX_SOURCE_OPUS,
136 A2DP_VendorCodecIndexStrOpus(), codec_priority,
137 true) {}
138
~A2dpCodecConfigOpusSource()139 A2dpCodecConfigOpusSource::~A2dpCodecConfigOpusSource() {}
140
init()141 bool A2dpCodecConfigOpusSource::init() { return false; }
142
useRtpHeaderMarkerBit() const143 bool A2dpCodecConfigOpusSource::useRtpHeaderMarkerBit() const { return false; }
144
debug_codec_dump(int fd)145 void A2dpCodecConfigOpusSource::debug_codec_dump(int fd) {}
146
setCodecConfig(const uint8_t * p_peer_codec_info,bool is_capability,uint8_t * p_result_codec_config)147 bool A2dpCodecConfigOpusBase::setCodecConfig(const uint8_t* p_peer_codec_info,
148 bool is_capability,
149 uint8_t* p_result_codec_config) {
150 return false;
151 }
152
setPeerCodecCapabilities(const uint8_t * p_peer_codec_capabilities)153 bool A2dpCodecConfigOpusBase::setPeerCodecCapabilities(
154 const uint8_t* p_peer_codec_capabilities) {
155 return false;
156 }
157
A2dpCodecConfigOpusSink(btav_a2dp_codec_priority_t codec_priority)158 A2dpCodecConfigOpusSink::A2dpCodecConfigOpusSink(
159 btav_a2dp_codec_priority_t codec_priority)
160 : A2dpCodecConfigOpusBase(BTAV_A2DP_CODEC_INDEX_SINK_OPUS,
161 A2DP_VendorCodecIndexStrOpusSink(),
162 codec_priority, false) {}
163
~A2dpCodecConfigOpusSink()164 A2dpCodecConfigOpusSink::~A2dpCodecConfigOpusSink() {}
165
init()166 bool A2dpCodecConfigOpusSink::init() { return false; }
167
useRtpHeaderMarkerBit() const168 bool A2dpCodecConfigOpusSink::useRtpHeaderMarkerBit() const { return false; }
169
updateEncoderUserConfig(const tA2DP_ENCODER_INIT_PEER_PARAMS * p_peer_params,bool * p_restart_input,bool * p_restart_output,bool * p_config_updated)170 bool A2dpCodecConfigOpusSink::updateEncoderUserConfig(
171 const tA2DP_ENCODER_INIT_PEER_PARAMS* p_peer_params, bool* p_restart_input,
172 bool* p_restart_output, bool* p_config_updated) {
173 return false;
174 }
175