Lines Matching defs:a2dp

15 int init_a2dp(struct a2dp_info *a2dp, a2dp_sbc_t *sbc)
69 a2dp->codec = cras_sbc_codec_create(frequency, mode, subbands,
71 if (!a2dp->codec)
75 a2dp->codesize = cras_sbc_get_codesize(a2dp->codec);
76 a2dp->frame_length = cras_sbc_get_frame_length(a2dp->codec);
78 a2dp->a2dp_buf_used = sizeof(struct rtp_header)
80 a2dp->frame_count = 0;
81 a2dp->seq_num = 0;
82 a2dp->samples = 0;
87 void destroy_a2dp(struct a2dp_info *a2dp)
89 cras_sbc_codec_destroy(a2dp->codec);
92 int a2dp_codesize(struct a2dp_info *a2dp)
94 return a2dp->codesize;
97 int a2dp_block_size(struct a2dp_info *a2dp, int a2dp_bytes)
99 return a2dp_bytes / a2dp->frame_length * a2dp->codesize;
102 int a2dp_queued_frames(const struct a2dp_info *a2dp)
104 return a2dp->samples;
107 void a2dp_drain(struct a2dp_info *a2dp)
109 a2dp->a2dp_buf_used = sizeof(struct rtp_header)
111 a2dp->samples = 0;
112 a2dp->seq_num = 0;
113 a2dp->frame_count = 0;
116 static int avdtp_write(int stream_fd, struct a2dp_info *a2dp)
122 header = (struct rtp_header *)a2dp->a2dp_buf;
123 payload = (struct rtp_payload *)(a2dp->a2dp_buf + sizeof(*header));
124 memset(a2dp->a2dp_buf, 0, sizeof(*header) + sizeof(*payload));
126 payload->frame_count = a2dp->frame_count;
129 header->sequence_number = htons(a2dp->seq_num);
130 header->timestamp = htonl(a2dp->nsamples);
133 err = send(stream_fd, a2dp->a2dp_buf, a2dp->a2dp_buf_used,
139 samples = a2dp->samples;
142 a2dp->a2dp_buf_used = sizeof(*header) + sizeof(*payload);
143 a2dp->frame_count = 0;
144 a2dp->samples = 0;
145 a2dp->seq_num++;
150 int a2dp_encode(struct a2dp_info *a2dp, const void *pcm_buf, int pcm_buf_size,
158 if (link_mtu == a2dp->a2dp_buf_used)
161 processed = a2dp->codec->encode(a2dp->codec, pcm_buf, pcm_buf_size,
162 a2dp->a2dp_buf + a2dp->a2dp_buf_used,
163 link_mtu - a2dp->a2dp_buf_used,
166 syslog(LOG_ERR, "a2dp encode error %d", processed);
170 if (a2dp->codesize > 0)
171 a2dp->frame_count += processed / a2dp->codesize;
172 a2dp->a2dp_buf_used += out_encoded;
174 a2dp->samples += processed / format_bytes;
175 a2dp->nsamples += processed / format_bytes;
180 int a2dp_write(struct a2dp_info *a2dp, int stream_fd, size_t link_mtu)
183 if (a2dp->a2dp_buf_used + a2dp->frame_length >
185 return avdtp_write(stream_fd, a2dp);