]> granicus.if.org Git - esp-idf/commitdiff
component/bt: use macro "BTIF_AV_SRC_INCLUDED" to separate the A2DP source and SBC...
authorwangmengyang <wangmengyang@espressif.com>
Tue, 22 Nov 2016 09:10:23 +0000 (17:10 +0800)
committerwangmengyang <wangmengyang@espressif.com>
Tue, 22 Nov 2016 09:10:23 +0000 (17:10 +0800)
examples/09_a2dp/components/bluedroid_demos/btif/btif_avk.c
examples/09_a2dp/components/bluedroid_demos/btif/btif_media_task.c

index 38916a1ec92e71b375931c5790a3fc52acc6c4b7..a8a8a84eb07d2eecaf2f36fc3be1ad3827dea654 100755 (executable)
@@ -365,7 +365,7 @@ static BOOLEAN btif_av_state_opening_handler(btif_sm_event_t event, void *p_data
             btif_report_connection_state(state, &(btif_av_cb.peer_bda));
             /* change state to open/idle based on the status */
             btif_sm_change_state(btif_av_cb.sm_handle, av_state);
-#if 0
+#if (BTIF_AV_SRC_INCLUDED == TRUE)
             if (btif_av_cb.peer_sep == AVDT_TSEP_SNK)
             {
                 /* if queued PLAY command,  send it now */
@@ -379,7 +379,7 @@ static BOOLEAN btif_av_state_opening_handler(btif_sm_event_t event, void *p_data
                 /* Bring up AVRCP connection too */
                 BTA_AvOpenRc(btif_av_cb.bta_handle);
             }
-#endif /* #if 0*/
+#endif
             btif_queue_advance();
         } break;
 
@@ -460,12 +460,14 @@ static BOOLEAN btif_av_state_closing_handler(btif_sm_event_t event, void *p_data
     switch (event)
     {
         case BTIF_SM_ENTER_EVT:
+#if (BTIF_AV_SRC_INCLUDED == TRUE)
             if (btif_av_cb.peer_sep == AVDT_TSEP_SNK)
             {
                 /* immediately stop transmission of frames */
                 btif_a2dp_set_tx_flush(TRUE);
                 /* wait for audioflinger to stop a2dp */
             }
+#endif /* (BTIF_AV_SRC_INCLUDED == TRUE) */
             if (btif_av_cb.peer_sep == AVDT_TSEP_SRC)
             {
                 btif_a2dp_set_rx_flush(TRUE);
@@ -474,11 +476,13 @@ static BOOLEAN btif_av_state_closing_handler(btif_sm_event_t event, void *p_data
 
         case BTA_AV_STOP_EVT:
         case BTIF_AV_STOP_STREAM_REQ_EVT:
+#if (BTIF_AV_SRC_INCLUDED == TRUE)
             if (btif_av_cb.peer_sep == AVDT_TSEP_SNK)
             {
               /* immediately flush any pending tx frames while suspend is pending */
               btif_a2dp_set_tx_flush(TRUE);
             }
+#endif
             if (btif_av_cb.peer_sep == AVDT_TSEP_SRC)
             {
                 btif_a2dp_set_rx_flush(TRUE);
@@ -549,8 +553,10 @@ static BOOLEAN btif_av_state_opened_handler(btif_sm_event_t event, void *p_data)
             break;
 
         case BTIF_AV_START_STREAM_REQ_EVT:
+#if (BTIF_AV_SRC_INCLUDED == TRUE)
             if (btif_av_cb.peer_sep != AVDT_TSEP_SRC)
                 btif_a2dp_setup_codec();
+#endif
             BTA_AvStart();
             btif_av_cb.flags |= BTIF_AV_FLAG_PENDING_START;
             break;
@@ -563,6 +569,7 @@ static BOOLEAN btif_av_state_opened_handler(btif_sm_event_t event, void *p_data)
             if ((p_av->start.status == BTA_SUCCESS) && (p_av->start.suspending == TRUE))
                 return TRUE;
 
+#if (BTIF_AV_SRC_INCLUDED == TRUE)
             /* if remote tries to start a2dp when DUT is a2dp source
              * then suspend. In case a2dp is sink and call is active
              * then disconnect the AVDTP channel
@@ -586,7 +593,7 @@ static BOOLEAN btif_av_state_opened_handler(btif_sm_event_t event, void *p_data)
                     btif_av_cb.flags &= ~BTIF_AV_FLAG_PENDING_START;
                 }
             }
-
+#endif
             /* remain in open state if status failed */
             if (p_av->start.status != BTA_AV_SUCCESS)
                 return FALSE;
@@ -598,8 +605,10 @@ static BOOLEAN btif_av_state_opened_handler(btif_sm_event_t event, void *p_data)
 
             /* change state to started, send acknowledgement if start is pending */
             if (btif_av_cb.flags & BTIF_AV_FLAG_PENDING_START) {
+#if (BTIF_AV_SRC_INCLUDED == TRUE)
                 if (btif_av_cb.peer_sep == AVDT_TSEP_SNK)
                     btif_a2dp_on_started(NULL, TRUE);
+#endif
                 /* pending start flag will be cleared when exit current state */
             }
             btif_sm_change_state(btif_av_cb.sm_handle, BTIF_AV_STATE_STARTED);
@@ -707,9 +716,11 @@ static BOOLEAN btif_av_state_started_handler(btif_sm_event_t event, void *p_data
             break;
 
         case BTIF_AV_START_STREAM_REQ_EVT:
+#if (BTIF_AV_SRC_INCLUDED == TRUE)
             /* we were remotely started, just ack back the local request */
             if (btif_av_cb.peer_sep == AVDT_TSEP_SNK)
                 btif_a2dp_on_started(NULL, TRUE);
+#endif
             break;
 
         /* fixme -- use suspend = true always to work around issue with BTA AV */
@@ -723,13 +734,13 @@ static BOOLEAN btif_av_state_started_handler(btif_sm_event_t event, void *p_data
             /* if we were remotely suspended but suspend locally, local suspend
                always overrides */
             btif_av_cb.flags &= ~BTIF_AV_FLAG_REMOTE_SUSPEND;
-
+#if (BTIF_AV_SRC_INCLUDED == TRUE)
             if (btif_av_cb.peer_sep == AVDT_TSEP_SNK)
             {
             /* immediately stop transmission of frames while suspend is pending */
                 btif_a2dp_set_tx_flush(TRUE);
             }
-
+#endif
             if (btif_av_cb.peer_sep == AVDT_TSEP_SRC) {
                 btif_a2dp_set_rx_flush(TRUE);
                 btif_a2dp_on_stopped(NULL);
@@ -762,13 +773,14 @@ static BOOLEAN btif_av_state_started_handler(btif_sm_event_t event, void *p_data
             if (p_av->suspend.status != BTA_AV_SUCCESS)
             {
                 btif_av_cb.flags &= ~BTIF_AV_FLAG_LOCAL_SUSPEND_PENDING;
-
+#if (BTIF_AV_SRC_INCLUDED == TRUE)
                if (btif_av_cb.peer_sep == AVDT_TSEP_SNK)
                {
                 /* suspend failed, reset back tx flush state */
                     btif_a2dp_set_tx_flush(FALSE);
                }
-                return FALSE;
+#endif
+              return FALSE;
             }
 
             if (p_av->suspend.initiator != TRUE)
@@ -982,6 +994,7 @@ bt_status_t btif_av_init()
     return BT_STATUS_SUCCESS;
 }
 
+#if (BTIF_AV_SRC_INCLUDED == TRUE)
 /*******************************************************************************
 **
 ** Function         init_src
@@ -1003,6 +1016,7 @@ static bt_status_t init_src(btav_callbacks_t* callbacks)
     return status;
 }
 
+#endif
 /*******************************************************************************
 **
 ** Function         init_sink
@@ -1046,6 +1060,7 @@ static bt_status_t connect_int(bt_bdaddr_t *bd_addr, uint16_t uuid)
     return BT_STATUS_SUCCESS;
 }
 
+#if (BTIF_AV_SRC_INCLUDED == TRUE)
 static bt_status_t src_connect_sink(bt_bdaddr_t *bd_addr)
 {
     BTIF_TRACE_EVENT("%s\n", __FUNCTION__);
@@ -1053,6 +1068,7 @@ static bt_status_t src_connect_sink(bt_bdaddr_t *bd_addr)
 
     return btif_queue_connect(UUID_SERVCLASS_AUDIO_SOURCE, bd_addr, connect_int);
 }
+#endif
 
 static bt_status_t sink_connect_src(bt_bdaddr_t *bd_addr)
 {
@@ -1107,6 +1123,7 @@ static void cleanup(void)
     btif_av_cb.sm_handle = NULL;
 }
 
+#if (BTIF_AV_SRC_INCLUDED == TRUE)
 static void cleanup_src(void) {
     BTIF_TRACE_EVENT("%s\n", __FUNCTION__);
 
@@ -1117,6 +1134,7 @@ static void cleanup_src(void) {
             cleanup();
     }
 }
+#endif
 
 static void cleanup_sink(void) {
     BTIF_TRACE_EVENT("%s\n", __FUNCTION__);
@@ -1129,6 +1147,7 @@ static void cleanup_sink(void) {
     }
 }
 
+#if (BTIF_AV_SRC_INCLUDED == TRUE)
 static const btav_interface_t bt_av_src_interface = {
     sizeof(btav_interface_t),
     init_src,
@@ -1136,6 +1155,7 @@ static const btav_interface_t bt_av_src_interface = {
     disconnect,
     cleanup_src,
 };
+#endif
 
 static const btav_interface_t bt_av_sink_interface = {
     sizeof(btav_interface_t),
@@ -1282,6 +1302,7 @@ bt_status_t btif_av_sink_execute_service(BOOLEAN b_enable)
     return BT_STATUS_SUCCESS;
 }
 
+#if (BTIF_AV_SRC_INCLUDED == TRUE)
 /*******************************************************************************
 **
 ** Function         btif_av_get_src_interface
@@ -1297,6 +1318,7 @@ const btav_interface_t *btif_av_get_src_interface(void)
     return &bt_av_src_interface;
 }
 
+#endif
 /*******************************************************************************
 **
 ** Function         btif_av_get_sink_interface
index e3ba59ac9253a7e14ff829d4f5140dd0c0312ecb..0d6ef77c89aef7ed737ad17dd232e61330c31b96 100644 (file)
@@ -234,10 +234,13 @@ typedef union
 typedef struct
 {
 #if (BTA_AV_INCLUDED == TRUE)
+#if (BTIF_AV_INCLUDED == TRUE)
     BUFFER_Q TxAaQ;
+#endif /* #if (BTIF_AV_INCLUDED == TRUE) */
     BUFFER_Q RxSbcQ;
     BOOLEAN is_tx_timer;
     BOOLEAN is_rx_timer;
+#if (BTIF_AV_INCLUDED == TRUE)
     UINT16 TxAaMtuSize;
     UINT32 timestamp;
     UINT8 TxTranscoding;
@@ -245,10 +248,13 @@ typedef struct
     tBTIF_AV_MEDIA_FEEDINGS media_feeding;
     tBTIF_AV_MEDIA_FEEDINGS_STATE media_feeding_state;
     SBC_ENC_PARAMS encoder;
+#endif /* #if (BTIF_AV_INCLUDED == TRUE) */
     UINT8 busy_level;
     void* av_sm_hdl;
     UINT8 a2dp_cmd_pending; /* we can have max one command pending */
+#if (BTIF_AV_INCLUDED == TRUE)
     BOOLEAN tx_flush; /* discards any outgoing data when true */
+#endif /* #if (BTIF_AV_INCLUDED == TRUE) */
     BOOLEAN rx_flush; /* discards any incoming data when true */
     UINT8 peer_sep;
     BOOLEAN data_channel_open;
@@ -256,7 +262,9 @@ typedef struct
 
     UINT32  sample_rate;
     UINT8   channel_count;
+#if (BTIF_AV_INCLUDED == TRUE)
     osi_alarm_t *media_alarm;
+#endif /* #if (BTIF_AV_INCLUDED == TRUE) */
     osi_alarm_t *decode_alarm;
 #endif
 
@@ -270,11 +278,17 @@ typedef struct {
     long long ts_prev_us;
 } t_stat;
 
+#if (BTIF_AV_SRC_INCLUDED == TRUE)
 static UINT64 last_frame_us = 0;
+#endif /* #if (BTIF_AV_SRC_INCLUDED == TRUE) */
 
 static void btif_a2dp_data_cb(tUIPC_CH_ID ch_id, tUIPC_EVENT event);
 static void btif_a2dp_ctrl_cb(tUIPC_CH_ID ch_id, tUIPC_EVENT event);
+
+#if (BTIF_AV_SRC_INCLUDED == TRUE)
 static void btif_a2dp_encoder_update(void);
+#endif /* #if (BTIF_AV_SRC_INCLUDED == TRUE) */
+
 #if (BTA_AV_SINK_INCLUDED == TRUE)
 extern OI_STATUS OI_CODEC_SBC_DecodeFrame(OI_CODEC_SBC_DECODER_CONTEXT *context,
                                           const OI_BYTE **frameData,
@@ -303,6 +317,7 @@ static void btif_media_task_handle_inc_media(tBT_SBC_HDR*p_msg);
 #endif
 
 #if (BTA_AV_INCLUDED == TRUE)
+#if (BTIF_AV_SRC_INCLUDED == TRUE)
 static void btif_media_send_aa_frame(void);
 static void btif_media_task_feeding_state_reset(void);
 static void btif_media_task_aa_start_tx(void);
@@ -312,6 +327,7 @@ static void btif_media_task_enc_update(BT_HDR *p_msg);
 static void btif_media_task_audio_feeding_init(BT_HDR *p_msg);
 static void btif_media_task_aa_tx_flush(BT_HDR *p_msg);
 static void btif_media_aa_prep_2_send(UINT8 nb_frame);
+#endif /* (BTIF_AV_SRC_INCLUDED == TRUE) */
 #if (BTA_AV_SINK_INCLUDED == TRUE)
 static void btif_media_task_aa_handle_decoder_reset(BT_HDR *p_msg);
 static void btif_media_task_aa_handle_clear_track(void);
@@ -320,7 +336,9 @@ static void btif_media_task_aa_handle_start_decoding(void);
 #endif
 BOOLEAN btif_media_task_clear_track(void);
 static void btif_media_task_handler(void *arg);
+#if (BTIF_AV_SRC_INCLUDED == TRUE)
 static void btif_media_task_aa_handle_timer(UNUSED_ATTR void *context);
+#endif
 static void btif_media_task_avk_handle_timer(UNUSED_ATTR void *context);
 static void btif_media_thread_init(UNUSED_ATTR void *context);
 static void btif_media_thread_cleanup(UNUSED_ATTR void *context);
@@ -346,6 +364,7 @@ BOOLEAN btif_hf_is_call_idle(void)
  **  Misc helper functions
  *****************************************************************************/
 
+#if (BTIF_AV_SRC_INCLUDED == TRUE)
 static UINT64 time_now_us()
 {
     // TODO: implement this function
@@ -360,6 +379,7 @@ static void log_tstamps_us(char *comment)
                 GKI_queue_length(&btif_media_cb.TxAaQ));
     prev_us = now_us;
 }
+#endif /* #if (BTIF_AV_SRC_INCLUDED == TRUE) */
 
 UNUSED_ATTR static const char *dump_media_event(UINT16 event)
 {
@@ -610,6 +630,7 @@ static void btif_a2dp_data_cb(tUIPC_CH_ID ch_id, tUIPC_EVENT event)
             UIPC_Ioctl(UIPC_CH_ID_AV_AUDIO, UIPC_SET_READ_POLL_TMO,
                        (void *)A2DP_DATA_READ_POLL_MS);
 
+#if (BTIF_AV_SRC_INCLUDED == TRUE)
             if (btif_media_cb.peer_sep == AVDT_TSEP_SNK) {
                 /* Start the media task to encode SBC */
                 btif_media_task_start_aa_req();
@@ -617,6 +638,7 @@ static void btif_a2dp_data_cb(tUIPC_CH_ID ch_id, tUIPC_EVENT event)
                 /* make sure we update any changed sbc encoder params */
                 btif_a2dp_encoder_update();
             }
+#endif /* BTIF_AV_SRC_INCLUDED == TRUE */
             btif_media_cb.data_channel_open = TRUE;
 
             /* ack back when media task is fully started */
@@ -638,7 +660,7 @@ static void btif_a2dp_data_cb(tUIPC_CH_ID ch_id, tUIPC_EVENT event)
 /*****************************************************************************
  **  BTIF ADAPTATION
  *****************************************************************************/
-
+#if (BTIF_AV_SRC_INCLUDED == TRUE)
 static UINT16 btif_media_task_get_sbc_rate(void)
 {
     UINT16 rate = DEFAULT_SBC_BITRATE;
@@ -740,6 +762,7 @@ static void btif_a2dp_encoder_update(void)
     btif_media_task_enc_update_req(&msg);
 }
 
+#endif /* #if (BTIF_AV_SRC_INCLUDED == TRUE) */
 
 static void btif_media_task_post(uint32_t sig)
 {
@@ -766,8 +789,10 @@ static void btif_media_task_handler(void *arg)
             case SIG_MEDIA_TASK_AVK_ALARM_TO:
                 btif_media_task_avk_handle_timer(NULL);
                 break;
+#if (BTIF_AV_SRC_INCLUDED == TRUE)
             case SIG_MEDIA_TASK_AA_ALARM_TO:
                 btif_media_task_aa_handle_timer(NULL);
+#endif
                 break;
             case SIG_MEDIA_TASK_CMD_READY:
                 fixed_queue_process(btif_media_cmd_msg_queue);
@@ -835,10 +860,12 @@ void btif_a2dp_stop_media_task(void)
 {
     APPL_TRACE_EVENT("## A2DP STOP MEDIA THREAD ##\n");
 
+#if (BTIF_AV_INCLUDED == TRUE)
     // Stop timer
     osi_alarm_free(btif_media_cb.media_alarm);
     btif_media_cb.media_alarm = NULL;
     btif_media_cb.is_tx_timer = FALSE;
+#endif /* #if (BTIF_AV_INCLUDED == TRUE) */
 
     // Exit thread
     btif_media_task_post(SIG_MEDIA_TASK_CLEAN_UP);
@@ -895,6 +922,8 @@ void btif_a2dp_setup_codec(void)
 
     if (bta_av_co_audio_set_codec(&media_feeding, &status))
     {
+#if (BTIF_AV_SRC_INCLUDED == TRUE)
+
         tBTIF_MEDIA_INIT_AUDIO_FEEDING mfeed;
 
         /* Init the encoding task */
@@ -905,6 +934,7 @@ void btif_a2dp_setup_codec(void)
         mfeed.feeding_mode = BTIF_AV_FEEDING_ASYNCHRONOUS;
         /* Send message to Media task to configure transcoding */
         btif_media_task_audio_feeding_init_req(&mfeed);
+#endif /* #if (BTIF_AV_SRC_INCLUDED == TRUE) */
     }
 
     GKI_enable();
@@ -924,12 +954,14 @@ void btif_a2dp_setup_codec(void)
 void btif_a2dp_on_idle(void)
 {
     APPL_TRACE_EVENT("## ON A2DP IDLE ##\n");
+#if (BTIF_AV_SRC_INCLUDED == TRUE)
     if (btif_media_cb.peer_sep == AVDT_TSEP_SNK)
     {
         /* Make sure media task is stopped */
         btif_media_task_stop_aa_req();
     }
-
+#endif /* #if (BTIF_AV_SRC_INCLUDED == TRUE) */
+    
     bta_av_co_init();
 #if (BTA_AV_SINK_INCLUDED == TRUE)
     if (btif_media_cb.peer_sep == AVDT_TSEP_SRC)
@@ -1123,13 +1155,14 @@ void btif_a2dp_on_stopped(tBTA_AV_SUSPEND *p_av)
         }
     }
 
+#if (BTIF_AV_SRC_INCLUDED == TRUE)
     /* ensure tx frames are immediately suspended */
     btif_media_cb.tx_flush = 1;
 
     /* request to stop media task  */
     btif_media_task_aa_tx_flush_req();
     btif_media_task_stop_aa_req();
-
+#endif /* #if (BTIF_AV_SRC_INCLUDED == TRUE) */
     /* once stream is fully stopped we will ack back */
 }
 
@@ -1163,12 +1196,13 @@ void btif_a2dp_on_suspended(tBTA_AV_SUSPEND *p_av)
     }
 
     /* once stream is fully stopped we will ack back */
-
+#if (BTIF_AV_SRC_INCLUDED == TRUE)
     /* ensure tx frames are immediately flushed */
     btif_media_cb.tx_flush = 1;
 
     /* stop timer tick */
     btif_media_task_stop_aa_req();
+#endif /* #if (BTIF_AV_SRC_INCLUDED == TRUE) */
 }
 
 /* when true media task discards any rx frames */
@@ -1178,13 +1212,14 @@ void btif_a2dp_set_rx_flush(BOOLEAN enable)
     btif_media_cb.rx_flush = enable;
 }
 
+#if (BTIF_AV_SRC_INCLUDED == TRUE)
 /* when true media task discards any tx frames */
 void btif_a2dp_set_tx_flush(BOOLEAN enable)
 {
     APPL_TRACE_EVENT("## DROP TX %d ##\n", enable);
     btif_media_cb.tx_flush = enable;
 }
-
+#endif /* #if (BTIF_AV_SRC_INCLUDED == TRUE) */
 #if (BTA_AV_SINK_INCLUDED == TRUE)
 static void btif_media_task_avk_handle_timer(UNUSED_ATTR void *context)
 {
@@ -1254,6 +1289,7 @@ static void btif_media_task_avk_handle_timer(UNUSED_ATTR void *context)
 static void btif_media_task_avk_handle_timer(UNUSED_ATTR void *context) {}
 #endif
 
+#if (BTIF_AV_SRC_INCLUDED == TRUE)
 static void btif_media_task_aa_handle_timer(UNUSED_ATTR void *context)
 {
     log_tstamps_us("media task tx timer");
@@ -1269,8 +1305,10 @@ static void btif_media_task_aa_handle_timer(UNUSED_ATTR void *context)
     }
 #endif
 }
+#endif /* #if (BTIF_AV_SRC_INCLUDED == TRUE) */
 
 #if (BTA_AV_INCLUDED == TRUE)
+#if (BTIF_AV_SRC_INCLUDED == TRUE)
 static void btif_media_task_aa_handle_uipc_rx_rdy(void)
 {
     /* process all the UIPC data */
@@ -1280,6 +1318,7 @@ static void btif_media_task_aa_handle_uipc_rx_rdy(void)
     LOG_VERBOSE("btif_media_task_aa_handle_uipc_rx_rdy calls bta_av_ci_src_data_ready");
     bta_av_ci_src_data_ready(BTA_AV_CHNL_AUDIO);
 }
+#endif /* #if (BTIF_AV_SRC_INCLUDED == TRUE) */
 #endif
 
 static void btif_media_thread_init(UNUSED_ATTR void *context) {
@@ -1358,6 +1397,7 @@ static void btif_media_thread_handle_cmd(fixed_queue_t *queue)
         switch (p_msg->event)
             {
 #if (BTA_AV_INCLUDED == TRUE)
+#if (BTIF_AV_SRC_INCLUDED == TRUE)
             case BTIF_MEDIA_START_AA_TX:
                 btif_media_task_aa_start_tx();
                 break;
@@ -1379,6 +1419,7 @@ static void btif_media_thread_handle_cmd(fixed_queue_t *queue)
             case BTIF_MEDIA_UIPC_RX_RDY:
                 btif_media_task_aa_handle_uipc_rx_rdy();
                 break;
+#endif /* #if (BTIF_AV_SRC_INCLUDED == TRUE) */
             case BTIF_MEDIA_AUDIO_SINK_CFG_UPDATE:
 #if (BTA_AV_SINK_INCLUDED == TRUE)
                 LOG_ERROR("SINK_CFG_UPDATE: xx\n");
@@ -1462,6 +1503,7 @@ static void btif_media_task_handle_inc_media(tBT_SBC_HDR*p_msg)
 #endif
 
 #if (BTA_AV_INCLUDED == TRUE)
+#if (BTIF_AV_SRC_INCLUDED == TRUE)
 /*******************************************************************************
  **
  ** Function         btif_media_task_enc_init_req
@@ -1598,6 +1640,7 @@ BOOLEAN btif_media_task_stop_aa_req(void)
 
     return TRUE;
 }
+#endif /* #if (BTIF_AV_SRC_INCLUDED == TRUE) */
 /*******************************************************************************
  **
  ** Function         btif_media_task_aa_rx_flush_req
@@ -1626,6 +1669,7 @@ BOOLEAN btif_media_task_aa_rx_flush_req(void)
     return TRUE;
 }
 
+#if (BTIF_AV_SRC_INCLUDED == TRUE)
 /*******************************************************************************
  **
  ** Function         btif_media_task_aa_tx_flush_req
@@ -1661,6 +1705,8 @@ BOOLEAN btif_media_task_aa_tx_flush_req(void)
 
     return TRUE;
 }
+#endif /* #if (BTIF_AV_SRC_INCLUDED == TRUE) */
+
 /*******************************************************************************
  **
  ** Function         btif_media_task_aa_rx_flush
@@ -1678,7 +1724,7 @@ static void btif_media_task_aa_rx_flush(void)
     btif_media_flush_q(&(btif_media_cb.RxSbcQ));
 }
 
-
+#if (BTIF_AV_SRC_INCLUDED == TRUE)
 /*******************************************************************************
  **
  ** Function         btif_media_task_aa_tx_flush
@@ -2009,6 +2055,7 @@ static void btif_media_task_audio_feeding_init(BT_HDR *p_msg)
     }
 }
 
+#endif /* #if (BTIF_AV_SRC_INCLUDED == TRUE) */
 int btif_a2dp_get_track_frequency(UINT8 frequency) {
     int freq = 48000;
     switch (frequency) {
@@ -2225,6 +2272,7 @@ static void btif_media_task_aa_handle_decoder_reset(BT_HDR *p_msg)
 }
 #endif
 
+#if (BTIF_AV_SRC_INCLUDED == TRUE)
 /*******************************************************************************
  **
  ** Function         btif_media_task_feeding_state_reset
@@ -2397,6 +2445,7 @@ static UINT8 btif_get_num_aa_frame(void)
 
     return (UINT8)result;
 }
+#endif /* #if (BTIF_AV_SRC_INCLUDED == TRUE) */
 
 /*******************************************************************************
  **
@@ -2444,6 +2493,7 @@ UINT8 btif_media_sink_enque_buf(BT_HDR *p_pkt)
     return GKI_queue_length(&btif_media_cb.RxSbcQ);
 }
 
+
 /*******************************************************************************
  **
  ** Function         btif_media_aa_readbuf
@@ -2453,11 +2503,19 @@ UINT8 btif_media_sink_enque_buf(BT_HDR *p_pkt)
  **
  ** Returns          void
  *******************************************************************************/
+#if (BTIF_AV_SRC_INCLUDED == TRUE)
 BT_HDR *btif_media_aa_readbuf(void)
 {
     return GKI_dequeue(&(btif_media_cb.TxAaQ));
 }
+#else
+BT_HDR *btif_media_aa_readbuf(void)
+{
+    return NULL;
+}
+#endif /* BTIF_AV_SRC_INCLUDED */
 
+#if (BTIF_AV_SRC_INCLUDED == TRUE)
 /*******************************************************************************
  **
  ** Function         btif_media_aa_read_feeding
@@ -2766,7 +2824,9 @@ static void btif_media_aa_prep_2_send(UINT8 nb_frame)
         break;
     }
 }
+#endif /* #if (BTIF_AV_SRC_INCLUDED == TRUE) */
 
+#if (BTIF_AV_SRC_INCLUDED == TRUE)
 /*******************************************************************************
  **
  ** Function         btif_media_send_aa_frame
@@ -2795,7 +2855,7 @@ static void btif_media_send_aa_frame(void)
 }
 
 #endif /* BTA_AV_INCLUDED == TRUE */
-
+#endif /* #if (BTIF_AV_SRC_INCLUDED == TRUE) */
 /*******************************************************************************
  **
  ** Function         dump_codec_info