Lines Matching refs:hLdacBT
32 HANDLE_LDAC_BT hLdacBT;
33 hLdacBT = (HANDLE_LDAC_BT)malloc( sizeof(STRUCT_LDACBT_HANDLE) );
34 if( hLdacBT == NULL ){ return NULL; }
37 if( (hLdacBT->hLDAC = ldaclib_get_handle()) == NULL ){
38 ldacBT_free_handle( hLdacBT );
42 ldacBT_param_clear( hLdacBT );
43 return hLdacBT;
47 LDACBT_API void ldacBT_free_handle( HANDLE_LDAC_BT hLdacBT )
49 if( hLdacBT == NULL ){ return; }
51 if( hLdacBT->hLDAC != NULL ){
53 if( hLdacBT->proc_mode == LDACBT_PROCMODE_ENCODE ){
54 ldaclib_free_encode( hLdacBT->hLDAC );
57 ldaclib_free_handle( hLdacBT->hLDAC );
58 hLdacBT->hLDAC = NULL;
61 free( hLdacBT );
65 LDACBT_API void ldacBT_close_handle( HANDLE_LDAC_BT hLdacBT )
67 if( hLdacBT == NULL ){ return; }
69 if( hLdacBT->hLDAC != NULL ){
71 if( hLdacBT->proc_mode == LDACBT_PROCMODE_ENCODE ){
72 ldaclib_free_encode( hLdacBT->hLDAC );
75 ldaclib_clear_error_code(hLdacBT->hLDAC);
76 ldaclib_clear_internal_error_code(hLdacBT->hLDAC);
79 ldacBT_param_clear( hLdacBT );
84 LDACBT_API int ldacBT_get_error_code( HANDLE_LDAC_BT hLdacBT )
87 if( hLdacBT == NULL ){return LDACBT_ERR_FATAL_HANDLE<<10;}
88 ldacBT_check_ldaclib_error_code( hLdacBT );
89 if( hLdacBT->error_code_api == LDACBT_GET_LDACLIB_ERROR_CODE ){
90 error_code = LDACBT_ERR_FATAL << 20 | hLdacBT->error_code;
91 }else if( hLdacBT->error_code_api != LDACBT_ERR_NONE ){
92 error_code = hLdacBT->error_code_api << 20 | hLdacBT->error_code;
94 error_code = hLdacBT->error_code_api << 20;
101 LDACBT_API int ldacBT_get_sampling_freq( HANDLE_LDAC_BT hLdacBT )
103 if( hLdacBT == NULL ){
106 if( hLdacBT->proc_mode != LDACBT_PROCMODE_ENCODE )
108 hLdacBT->error_code_api = LDACBT_ERR_HANDLE_NOT_INIT;
111 return hLdacBT->pcm.sf;
115 LDACBT_API int ldacBT_get_bitrate( HANDLE_LDAC_BT hLdacBT )
117 if( hLdacBT == NULL ){
120 if( hLdacBT->proc_mode != LDACBT_PROCMODE_ENCODE )
122 hLdacBT->error_code_api = LDACBT_ERR_HANDLE_NOT_INIT;
125 return hLdacBT->bitrate;
129 LDACBT_API int ldacBT_init_handle_encode( HANDLE_LDAC_BT hLdacBT, int mtu, int eqmid,
139 if( hLdacBT == NULL ){ return LDACBT_E_FAIL; }
140 if( (hLdacBT->error_code_api = ldacBT_assert_mtu( mtu )) != LDACBT_ERR_NONE ){
143 if( (hLdacBT->error_code_api = ldacBT_assert_eqmid( eqmid )) != LDACBT_ERR_NONE ){
146 if( (hLdacBT->error_code_api = ldacBT_assert_cm( cm )) != LDACBT_ERR_NONE ){
149 if( (hLdacBT->error_code_api = ldacBT_assert_sample_format( fmt )) != LDACBT_ERR_NONE ){
152 if( (hLdacBT->error_code_api = ldacBT_assert_pcm_sampling_freq( sf )) != LDACBT_ERR_NONE ){
156 ldacBT_close_handle( hLdacBT );
159 hLdacBT->proc_mode = LDACBT_PROCMODE_ENCODE;
160 hLdacBT->flg_encode_flushed = FALSE;
164 hLdacBT->transport = TRUE;
165 hLdacBT->tx.mtu = mtu;
166 hLdacBT->tx.pkt_hdr_sz = LDACBT_TX_HEADER_SIZE;
167 hLdacBT->tx.tx_size = LDACBT_MTU_REQUIRED;
168 hLdacBT->tx.pkt_type = _2_DH5;
170 hLdacBT->tx.tx_size -= hLdacBT->tx.pkt_hdr_sz;
171 if( hLdacBT->tx.tx_size > (hLdacBT->tx.mtu - hLdacBT->tx.pkt_hdr_sz) ){
173 hLdacBT->tx.tx_size = (hLdacBT->tx.mtu - hLdacBT->tx.pkt_hdr_sz);
178 hLdacBT->cm = cm;
179 hLdacBT->cci = cci;
181 hLdacBT->pcm.ch = a_cci_nch[cci];
182 hLdacBT->pcm.sf = sf;
183 hLdacBT->pcm.fmt = fmt;
184 switch(hLdacBT->pcm.fmt){
186 hLdacBT->pcm.wl = 2;
189 hLdacBT->pcm.wl = 3;
193 hLdacBT->pcm.wl = 4;
197 hLdacBT->pcm.wl = 4;
203 result = ldaclib_get_sampling_rate_index( hLdacBT->pcm.sf, &sfid );
205 hLdacBT->error_code_api = LDACBT_ERR_ILL_SAMPLING_FREQ;
208 hLdacBT->sfid = sfid;
213 hLdacBT->error_code_api = LDACBT_ERR_ILL_SAMPLING_FREQ;
216 hLdacBT->frm_samples = frame_samples;
220 hLdacBT->eqmid = eqmid;
222 pCfg = ldacBT_get_config( hLdacBT->eqmid, hLdacBT->tx.pkt_type );
224 hLdacBT->frmlen_tx = hLdacBT->pcm.ch * pCfg->frmlen_1ch;
225 hLdacBT->frmlen = hLdacBT->frmlen_tx;
226 if (hLdacBT->transport) {
228 hLdacBT->frmlen -= LDACBT_FRMHDRBYTES;
232 hLdacBT->tx.nfrm_in_pkt = hLdacBT->tx.tx_size / hLdacBT->frmlen_tx;
239 hLdacBT->error_code_api = LDACBT_ERR_ILL_PARAM;
244 result = ldaclib_set_config_info( hLdacBT->hLDAC, hLdacBT->sfid, hLdacBT->cci,
245 hLdacBT->frmlen, hLdacBT->frm_status);
247 hLdacBT->error_code_api = LDACBT_GET_LDACLIB_ERROR_CODE;
251 hLdacBT->error_code_api = LDACBT_GET_LDACLIB_ERROR_CODE;
255 result = ldaclib_set_encode_info(hLdacBT->hLDAC, nbasebands, grad_mode,
258 hLdacBT->error_code_api = LDACBT_GET_LDACLIB_ERROR_CODE;
262 hLdacBT->error_code_api = LDACBT_GET_LDACLIB_ERROR_CODE;
266 result = ldaclib_init_encode(hLdacBT->hLDAC);
268 hLdacBT->error_code_api = LDACBT_GET_LDACLIB_ERROR_CODE;
272 hLdacBT->error_code_api = LDACBT_GET_LDACLIB_ERROR_CODE;
276 hLdacBT->tgt_eqmid = hLdacBT->eqmid;
277 hLdacBT->tgt_nfrm_in_pkt = hLdacBT->tx.nfrm_in_pkt;
278 hLdacBT->tgt_frmlen = hLdacBT->frmlen;
279 hLdacBT->stat_alter_op = LDACBT_ALTER_OP__NON;
282 hLdacBT->bitrate = ldacBT_frmlen_to_bitrate( hLdacBT->frmlen, hLdacBT->transport,
283 hLdacBT->pcm.sf, hLdacBT->frm_samples );
285 return (hLdacBT->error_code_api==LDACBT_ERR_NONE?LDACBT_S_OK:LDACBT_E_FAIL);
289 LDACBT_API int ldacBT_set_eqmid( HANDLE_LDAC_BT hLdacBT, int eqmid )
291 if( hLdacBT == NULL ){
294 if( hLdacBT->proc_mode != LDACBT_PROCMODE_ENCODE ){
295 hLdacBT->error_code_api = LDACBT_ERR_HANDLE_NOT_INIT;
299 if( (hLdacBT->error_code_api = ldacBT_assert_eqmid( eqmid )) != LDACBT_ERR_NONE ){
302 ldacBT_set_eqmid_core( hLdacBT, eqmid );
308 LDACBT_API int ldacBT_get_eqmid( HANDLE_LDAC_BT hLdacBT )
310 if( hLdacBT == NULL ){
313 if( hLdacBT->proc_mode != LDACBT_PROCMODE_ENCODE ){
314 hLdacBT->error_code_api = LDACBT_ERR_HANDLE_NOT_INIT;
317 return hLdacBT->tgt_eqmid;
321 LDACBT_API int ldacBT_alter_eqmid_priority( HANDLE_LDAC_BT hLdacBT, int priority )
324 if( hLdacBT == NULL ){ return LDACBT_E_FAIL; }
325 if( hLdacBT->proc_mode != LDACBT_PROCMODE_ENCODE ){
326 hLdacBT->error_code_api = LDACBT_ERR_HANDLE_NOT_INIT;
332 hLdacBT->error_code_api = LDACBT_ERR_ILL_PARAM;
336 target_eqmid = ldacBT_get_altered_eqmid( hLdacBT, priority);
338 hLdacBT->error_code_api = LDACBT_ERR_ALTER_EQMID_LIMITED;
342 ldacBT_set_eqmid_core( hLdacBT, target_eqmid );
347 LDACBT_API int ldacBT_encode( HANDLE_LDAC_BT hLdacBT, void *p_pcm, int *pcm_used,
360 if( hLdacBT == NULL ){
363 if( hLdacBT->hLDAC == NULL ){
366 if( hLdacBT->proc_mode != LDACBT_PROCMODE_ENCODE ){
367 hLdacBT->error_code_api = LDACBT_ERR_HANDLE_NOT_INIT;
371 hLdacBT->error_code_api = LDACBT_ERR_NONE;
372 ldaclib_clear_error_code( hLdacBT->hLDAC );
373 ldaclib_clear_internal_error_code( hLdacBT->hLDAC );
380 hLdacBT->error_code_api = LDACBT_ERR_ILL_PARAM;
388 fmt = hLdacBT->pcm.fmt;
389 ch = hLdacBT->pcm.ch;
390 wl = hLdacBT->pcm.wl;
391 ptfbuf = &hLdacBT->ldac_trns_frm_buf;
392 ppcmring = &hLdacBT->pcmring;
414 if( ppcmring->nsmpl >= hLdacBT->frm_samples )
419 if (hLdacBT->flg_encode_flushed != TRUE){
430 if( (hLdacBT->tgt_eqmid != UNSET) && (hLdacBT->tgt_eqmid != hLdacBT->eqmid) ){
432 ldacBT_update_frmlen( hLdacBT, hLdacBT->tgt_frmlen );
433 hLdacBT->stat_alter_op = LDACBT_ALTER_OP__NON;
435 else if( hLdacBT->tgt_nfrm_in_pkt > hLdacBT->tx.nfrm_in_pkt ){
437 if( !hLdacBT->stat_alter_op ){
438 nFrmToPkt = hLdacBT->tgt_nfrm_in_pkt - ptfbuf->nfrm_in;
440 pCfg = ldacBT_get_config(LDACBT_EQMID_END, hLdacBT->tx.pkt_type);
443 frmlen_adj = (hLdacBT->tx.tx_size - ptfbuf->used) / nFrmToPkt;
444 if( frmlen_adj > hLdacBT->tgt_frmlen ) {
445 frmlen_adj = hLdacBT->tgt_frmlen;
449 if( ldacBT_update_frmlen( hLdacBT, frmlen_adj ) == LDACBT_S_OK ){
450 hLdacBT->stat_alter_op = LDACBT_ALTER_OP__ACTIVE;
456 if( !hLdacBT->stat_alter_op ){
458 hLdacBT->stat_alter_op = LDACBT_ALTER_OP__FLASH;
465 hLdacBT->stat_alter_op = LDACBT_ALTER_OP__STANDBY;
469 else if( hLdacBT->tgt_frmlen != hLdacBT->frmlen ){
471 ldacBT_update_frmlen( hLdacBT, hLdacBT->tgt_frmlen );
472 hLdacBT->stat_alter_op = LDACBT_ALTER_OP__NON;
474 if( hLdacBT->tgt_nfrm_in_pkt == hLdacBT->tx.nfrm_in_pkt ){
475 ldacBT_update_frmlen( hLdacBT, hLdacBT->tgt_frmlen );
476 hLdacBT->stat_alter_op = LDACBT_ALTER_OP__NON;
478 if( hLdacBT->tgt_nfrm_in_pkt > hLdacBT->tx.nfrm_in_pkt ){
480 if( !hLdacBT->stat_alter_op ){
481 nFrmToPkt = hLdacBT->tgt_nfrm_in_pkt - ptfbuf->nfrm_in;
483 hLdacBT->tx.tx_size - ptfbuf->used) / nFrmToPkt;
484 if( frmlen_adj > hLdacBT->tgt_frmlen ) {
485 frmlen_adj = hLdacBT->tgt_frmlen;
487 if( ldacBT_update_frmlen( hLdacBT, frmlen_adj ) == LDACBT_S_OK ){
488 hLdacBT->stat_alter_op = LDACBT_ALTER_OP__ACTIVE;
490 if( !hLdacBT->stat_alter_op ){
492 hLdacBT->stat_alter_op = LDACBT_ALTER_OP__FLASH;
498 hLdacBT->stat_alter_op = LDACBT_ALTER_OP__STANDBY;
505 ldaclib_get_encode_frame_length( hLdacBT->hLDAC, &frmlen );
507 if( (( ptfbuf->used + frmlen + LDACBT_FRMHDRBYTES) > hLdacBT->tx.tx_size) ||
508 (hLdacBT->stat_alter_op == LDACBT_ALTER_OP__FLASH) || /* need to flash streams? */
518 if( hLdacBT->stat_alter_op != LDACBT_ALTER_OP__NON ){
520 ldacBT_update_frmlen( hLdacBT, hLdacBT->tgt_frmlen );
521 hLdacBT->stat_alter_op = LDACBT_ALTER_OP__NON;
530 nsmpl_to_clr = hLdacBT->frm_samples - ppcmring->nsmpl;
549 ldacBT_prepare_pcm_encode( p_pcm_ring_r, hLdacBT->pp_pcm, hLdacBT->frm_samples, ch, fmt );
550 result = ldaclib_encode(hLdacBT->hLDAC, hLdacBT->pp_pcm, (LDAC_SMPL_FMT_T)fmt,
553 ppcmring->rp += hLdacBT->frm_samples * wl * ch;
554 ppcmring->nsmpl -= hLdacBT->frm_samples;
559 result = ldaclib_flush_encode(hLdacBT->hLDAC, (LDAC_SMPL_FMT_T)fmt,
561 hLdacBT->flg_encode_flushed = TRUE;
565 hLdacBT->error_code_api = LDACBT_GET_LDACLIB_ERROR_CODE;
569 hLdacBT->error_code_api = LDACBT_GET_LDACLIB_ERROR_CODE;
573 if( hLdacBT->transport == TRUE ){
577 result = ldaclib_get_config_info(hLdacBT->hLDAC, &hLdacBT->sfid, &hLdacBT->cci,
580 hLdacBT->error_code_api = LDACBT_GET_LDACLIB_ERROR_CODE;
584 hLdacBT->error_code_api = LDACBT_GET_LDACLIB_ERROR_CODE;
588 result = ldaclib_set_frame_header(hLdacBT->hLDAC, a_frm_header, hLdacBT->sfid,
589 hLdacBT->cci, frmlen, frm_status);
591 hLdacBT->error_code_api = LDACBT_GET_LDACLIB_ERROR_CODE;
595 hLdacBT->error_code_api = LDACBT_GET_LDACLIB_ERROR_CODE;
606 if( (( ptfbuf->used + frmlen_wrote) > hLdacBT->tx.tx_size) ||
618 if( hLdacBT->stat_alter_op != LDACBT_ALTER_OP__NON ){
619 ldacBT_update_frmlen( hLdacBT, hLdacBT->tgt_frmlen );
620 hLdacBT->stat_alter_op = LDACBT_ALTER_OP__NON;