Lines Matching refs:frame

49     DECLARE_ALIGNED(SBC_ALIGN, struct sbc_frame, frame);
54 * Unpacks a SBC frame at the beginning of the stream in data,
55 * which has at most len bytes into frame.
56 * Returns the length in bytes of the packed frame, or a negative
64 static int sbc_unpack_frame(const uint8_t *data, struct sbc_frame *frame,
89 frame->frequency = SBC_FREQ_16000;
90 frame->blocks = MSBC_BLOCKS;
91 frame->allocation = LOUDNESS;
92 frame->mode = MONO;
93 frame->channels = 1;
94 frame->subbands = 8;
95 frame->bitpool = 26;
97 frame->frequency = (data[1] >> 6) & 0x03;
98 frame->blocks = 4 * ((data[1] >> 4) & 0x03) + 4;
99 frame->mode = (data[1] >> 2) & 0x03;
100 frame->channels = frame->mode == MONO ? 1 : 2;
101 frame->allocation = (data[1] >> 1) & 0x01;
102 frame->subbands = data[1] & 0x01 ? 8 : 4;
103 frame->bitpool = data[2];
105 if ((frame->mode == MONO || frame->mode == DUAL_CHANNEL) &&
106 frame->bitpool > 16 * frame->subbands)
109 if ((frame->mode == STEREO || frame->mode == JOINT_STEREO) &&
110 frame->bitpool > 32 * frame->subbands)
120 if (frame->mode == JOINT_STEREO) {
121 if (len * 8 < consumed + frame->subbands)
124 frame->joint = 0x00;
125 for (sb = 0; sb < frame->subbands - 1; sb++)
126 frame->joint |= ((data[4] >> (7 - sb)) & 0x01) << sb;
127 if (frame->subbands == 4)
132 consumed += frame->subbands;
133 crc_pos += frame->subbands;
136 if (len * 8 < consumed + (4 * frame->subbands * frame->channels))
139 for (ch = 0; ch < frame->channels; ch++) {
140 for (sb = 0; sb < frame->subbands; sb++) {
142 frame->scale_factor[ch][sb] =
145 frame->scale_factor[ch][sb] << (4 - (crc_pos & 0x7));
152 if (data[3] != ff_sbc_crc8(frame->crc_ctx, crc_header, crc_pos))
155 ff_sbc_calculate_bits(frame, bits);
157 for (ch = 0; ch < frame->channels; ch++) {
158 for (sb = 0; sb < frame->subbands; sb++)
162 for (blk = 0; blk < frame->blocks; blk++) {
163 for (ch = 0; ch < frame->channels; ch++) {
164 for (sb = 0; sb < frame->subbands; sb++) {
168 frame->sb_sample[blk][ch][sb] = 0;
172 shift = frame->scale_factor[ch][sb] +
186 frame->sb_sample[blk][ch][sb] = (int32_t)
193 if (frame->mode == JOINT_STEREO) {
194 for (blk = 0; blk < frame->blocks; blk++) {
195 for (sb = 0; sb < frame->subbands; sb++) {
196 if (frame->joint & (0x01 << sb)) {
197 temp = frame->sb_sample[blk][0][sb] +
198 frame->sb_sample[blk][1][sb];
199 frame->sb_sample[blk][1][sb] =
200 frame->sb_sample[blk][0][sb] -
201 frame->sb_sample[blk][1][sb];
202 frame->sb_sample[blk][0][sb] = temp;
215 struct sbc_frame *frame,
232 (int)( (unsigned)ff_synmatrix4[i][0] * frame->sb_sample[blk][ch][0] +
233 (unsigned)ff_synmatrix4[i][1] * frame->sb_sample[blk][ch][1] +
234 (unsigned)ff_synmatrix4[i][2] * frame->sb_sample[blk][ch][2] +
235 (unsigned)ff_synmatrix4[i][3] * frame->sb_sample[blk][ch][3] ) >> 15;
258 struct sbc_frame *frame,
275 (int)( (unsigned)ff_synmatrix8[i][0] * frame->sb_sample[blk][ch][0] +
276 (unsigned)ff_synmatrix8[i][1] * frame->sb_sample[blk][ch][1] +
277 (unsigned)ff_synmatrix8[i][2] * frame->sb_sample[blk][ch][2] +
278 (unsigned)ff_synmatrix8[i][3] * frame->sb_sample[blk][ch][3] +
279 (unsigned)ff_synmatrix8[i][4] * frame->sb_sample[blk][ch][4] +
280 (unsigned)ff_synmatrix8[i][5] * frame->sb_sample[blk][ch][5] +
281 (unsigned)ff_synmatrix8[i][6] * frame->sb_sample[blk][ch][6] +
282 (unsigned)ff_synmatrix8[i][7] * frame->sb_sample[blk][ch][7] ) >> 15;
305 struct sbc_frame *frame, AVFrame *output_frame)
309 switch (frame->subbands) {
311 for (ch = 0; ch < frame->channels; ch++)
312 for (blk = 0; blk < frame->blocks; blk++)
313 sbc_synthesize_four(state, frame, ch, blk, output_frame);
317 for (ch = 0; ch < frame->channels; ch++)
318 for (blk = 0; blk < frame->blocks; blk++)
319 sbc_synthesize_eight(state, frame, ch, blk, output_frame);
331 sbc->frame.crc_ctx = av_crc_get_table(AV_CRC_8_EBU);
340 static int sbc_decode_frame(AVCodecContext *avctx, AVFrame *frame,
349 frame_length = sbc_unpack_frame(avpkt->data, &sbc->frame, avpkt->size);
355 avctx->ch_layout.nb_channels = sbc->frame.channels;
357 frame->nb_samples = sbc->frame.blocks * sbc->frame.subbands;
358 if ((ret = ff_get_buffer(avctx, frame, 0)) < 0)
361 sbc_synthesize_audio(&sbc->dsp, &sbc->frame, frame);