summaryrefslogtreecommitdiffstats
path: root/btif/include/btif_av_api.h
blob: 86cd40b399275c32c4c448b1c8670bc8941fa41a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
/******************************************************************************
 *
 *  Copyright (C) 2009-2012 Broadcom Corporation
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at:
 *
 *  http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 *
 ******************************************************************************/

/*****************************************************************************
 **
 **  Name:           btif_av_api.h
 **
 **  Description:    This is the public interface file for the advanced
 **                  audio/video streaming (AV) subsystem of BTIF, Broadcom's
 **                  Bluetooth application layer for mobile phones.
 **
 *****************************************************************************/

#ifndef BTIF_AV_API_H
#define BTIF_AV_API_H

#include "bt_target.h"
#include "bta_av_api.h"
#include "uipc.h"

#include "btif_media.h"
#include "a2d_api.h"
#include "a2d_sbc.h"


/*****************************************************************************
 **  Constants and data types
 *****************************************************************************/

/* Codec type */
#define BTIF_AV_CODEC_NONE       0xFF
#define BTIF_AV_CODEC_SBC        A2D_MEDIA_CT_SBC        /* SBC media codec type */

#define BTIF_AV_CODEC_PCM        0x5                     /* Raw PCM */

typedef UINT8 tBTIF_AV_CODEC_ID;

/* AV features masks */
#define BTIF_AV_FEAT_RCTG        BTA_AV_FEAT_RCTG      /* remote control target */
#define BTIF_AV_FEAT_RCCT        BTA_AV_FEAT_RCCT      /* remote control controller */
#define BTIF_AV_FEAT_METADATA    BTA_AV_FEAT_METADATA  /* remote control Metadata Transfer command/response */

typedef UINT16 tBTIF_AV_FEAT;

/* AV channel values */
#define BTIF_AV_CHNL_MSK         BTA_AV_CHNL_MSK
#define BTIF_AV_CHNL_AUDIO       BTA_AV_CHNL_AUDIO       /* audio channel */
#define BTIF_AV_CHNL_VIDEO       BTA_AV_CHNL_VIDEO       /* video channel */
typedef UINT8 tBTIF_AV_CHNL;

typedef UINT8 tBTIF_AV_HNDL;

/* Operation id list for BTIF_AvRemoteCmd */
#define BTIF_AV_ID_SELECT      0x00    /* select */
#define BTIF_AV_ID_UP          0x01    /* up */
#define BTIF_AV_ID_DOWN        0x02    /* down */
#define BTIF_AV_ID_LEFT        0x03    /* left */
#define BTIF_AV_ID_RIGHT       0x04    /* right */
#define BTIF_AV_ID_RIGHT_UP    0x05    /* right-up */
#define BTIF_AV_ID_RIGHT_DOWN  0x06    /* right-down */
#define BTIF_AV_ID_LEFT_UP     0x07    /* left-up */
#define BTIF_AV_ID_LEFT_DOWN   0x08    /* left-down */
#define BTIF_AV_ID_ROOT_MENU   0x09    /* root menu */
#define BTIF_AV_ID_SETUP_MENU  0x0A    /* setup menu */
#define BTIF_AV_ID_CONT_MENU   0x0B    /* contents menu */
#define BTIF_AV_ID_FAV_MENU    0x0C    /* favorite menu */
#define BTIF_AV_ID_EXIT        0x0D    /* exit */
#define BTIF_AV_ID_0           0x20    /* 0 */
#define BTIF_AV_ID_1           0x21    /* 1 */
#define BTIF_AV_ID_2           0x22    /* 2 */
#define BTIF_AV_ID_3           0x23    /* 3 */
#define BTIF_AV_ID_4           0x24    /* 4 */
#define BTIF_AV_ID_5           0x25    /* 5 */
#define BTIF_AV_ID_6           0x26    /* 6 */
#define BTIF_AV_ID_7           0x27    /* 7 */
#define BTIF_AV_ID_8           0x28    /* 8 */
#define BTIF_AV_ID_9           0x29    /* 9 */
#define BTIF_AV_ID_DOT         0x2A    /* dot */
#define BTIF_AV_ID_ENTER       0x2B    /* enter */
#define BTIF_AV_ID_CLEAR       0x2C    /* clear */
#define BTIF_AV_ID_CHAN_UP     0x30    /* channel up */
#define BTIF_AV_ID_CHAN_DOWN   0x31    /* channel down */
#define BTIF_AV_ID_PREV_CHAN   0x32    /* previous channel */
#define BTIF_AV_ID_SOUND_SEL   0x33    /* sound select */
#define BTIF_AV_ID_INPUT_SEL   0x34    /* input select */
#define BTIF_AV_ID_DISP_INFO   0x35    /* display information */
#define BTIF_AV_ID_HELP        0x36    /* help */
#define BTIF_AV_ID_PAGE_UP     0x37    /* page up */
#define BTIF_AV_ID_PAGE_DOWN   0x38    /* page down */
#define BTIF_AV_ID_POWER       0x40    /* power */
#define BTIF_AV_ID_VOL_UP      0x41    /* volume up */
#define BTIF_AV_ID_VOL_DOWN    0x42    /* volume down */
#define BTIF_AV_ID_MUTE        0x43    /* mute */
#define BTIF_AV_ID_PLAY        0x44    /* play */
#define BTIF_AV_ID_STOP        0x45    /* stop */
#define BTIF_AV_ID_PAUSE       0x46    /* pause */
#define BTIF_AV_ID_RECORD      0x47    /* record */
#define BTIF_AV_ID_REWIND      0x48    /* rewind */
#define BTIF_AV_ID_FAST_FOR    0x49    /* fast forward */
#define BTIF_AV_ID_EJECT       0x4A    /* eject */
#define BTIF_AV_ID_FORWARD     0x4B    /* forward */
#define BTIF_AV_ID_BACKWARD    0x4C    /* backward */
#define BTIF_AV_ID_ANGLE       0x50    /* angle */
#define BTIF_AV_ID_SUBPICT     0x51    /* subpicture */
#define BTIF_AV_ID_F1          0x71    /* F1 */
#define BTIF_AV_ID_F2          0x72    /* F2 */
#define BTIF_AV_ID_F3          0x73    /* F3 */
#define BTIF_AV_ID_F4          0x74    /* F4 */
#define BTIF_AV_ID_F5          0x75    /* F5 */
#define BTIF_AV_ID_VENDOR      0x7E    /* vendor unique */
#define BTIF_AV_KEYPRESSED_RELEASE 0x80

typedef UINT8 tBTIF_AV_RC;

/* State flag for pass through command */
#define BTIF_AV_STATE_PRESS      0    /* key pressed */
#define BTIF_AV_STATE_RELEASE    1  /* key released */

typedef UINT8 tBTIF_AV_STATE;

typedef UINT8 tBTIF_AV_RC_HNDL;

/* Command codes for BTIF_AvVendorCmd */
#define BTIF_AV_CMD_CTRL         0
#define BTIF_AV_CMD_STATUS       1
#define BTIF_AV_CMD_SPEC_INQ     2
#define BTIF_AV_CMD_NOTIF        3
#define BTIF_AV_CMD_GEN_INQ      4

typedef UINT8 tBTIF_AV_CMD;

/* AV callback events */
#define BTIF_AV_OPEN_EVT         0       /* connection opened */
#define BTIF_AV_CLOSE_EVT        1       /* connection closed */
#define BTIF_AV_START_EVT        2       /* stream data transfer started */
#define BTIF_AV_STOP_EVT         3       /* stream data transfer stopped */
#define BTIF_AV_RC_OPEN_EVT      4       /* remote control channel open */
#define BTIF_AV_RC_CLOSE_EVT     5       /* remote control channel closed */
#define BTIF_AV_REMOTE_CMD_EVT   6      /* remote control command */
#define BTIF_AV_REMOTE_RSP_EVT   7      /* remote control response */
#define BTIF_AV_META_MSG_EVT     8      /* metadata messages */

typedef UINT8 tBTIF_AV_EVT;

#define BTIF_AV_FEEDING_ASYNCHRONOUS 0   /* asynchronous feeding, use tx av timer */
#define BTIF_AV_FEEDING_SYNCHRONOUS  1   /* synchronous feeding, no av tx timer */

#define BTIF_AV_MAX_SYNCHRONOUS_LATENCY 80 /* max latency in ms for BTIF_AV_FEEDING_SYNCHRONOUS */
#define BTIF_AV_MIN_SYNCHRONOUS_LATENCY 4 /* min latency in ms for BTIF_AV_FEEDING_SYNCHRONOUS */

typedef UINT8 tBTIF_AV_FEEDING_MODE;

#define BTIF_AV_CHANNEL_MODE_MONO    A2D_SBC_IE_CH_MD_MONO
#define BTIF_AV_CHANNEL_MODE_STEREO  A2D_SBC_IE_CH_MD_STEREO
#define BTIF_AV_CHANNEL_MODE_JOINT   A2D_SBC_IE_CH_MD_JOINT
#define BTIF_AV_CHANNEL_MODE_DUAL    A2D_SBC_IE_CH_MD_DUAL

typedef UINT8 tBTIF_AV_CHANNEL_MODE;

/**
 * Structure used to configure the AV codec capabilities/config
 */
typedef struct
{
    tBTIF_AV_CODEC_ID id;            /* Codec ID (in terms of BTIF) */
    UINT8 info[AVDT_CODEC_SIZE];     /* Codec info (can be config or capabilities) */
} tBTIF_AV_CODEC_INFO;

/**
 * Structure used to configure the AV media feeding
 */
typedef struct
{
    UINT16 sampling_freq;   /* 44100, 48000 etc */
    UINT16 num_channel;     /* 1 for mono or 2 stereo */
    UINT8  bit_per_sample;  /* Number of bits per sample (8, 16) */
} tBTIF_AV_MEDIA_FEED_CFG_PCM;

typedef union
{
    tBTIF_AV_MEDIA_FEED_CFG_PCM pcm;     /* Raw PCM feeding format */
}tBTIF_AV_MEDIA_FEED_CFG;

typedef struct
{
    tBTIF_AV_CODEC_ID format;        /* Media codec identifier */
    tBTIF_AV_MEDIA_FEED_CFG cfg;     /* Media codec configuration */
} tBTIF_AV_MEDIA_FEEDINGS;


#ifdef __cplusplus
}
#endif

#endif /* BTIF_AV_API_H */