4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
6 * Contact: Jonghyuk Choi <jhchoi.choi@samsung.com>
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
23 #ifndef __MM_MESSAGE_H__
24 #define __MM_MESSAGE_H__
35 * @brief This file declares the messages type of Multimedia framework.
38 * This file declares the messages type of Multimedia framework.
42 * Enumerations of messages type.
46 MM_MESSAGE_UNKNOWN = 0x00, /**< Unknown message type */
47 MM_MESSAGE_ERROR, /**< Error message type */
48 MM_MESSAGE_WARNING, /**< Warning message type */
49 MM_MESSAGE_STATE_CHANGED, /**< State change message type */
50 MM_MESSAGE_STATE_INTERRUPTED, /**< State change by interrupt */
51 MM_MESSAGE_READY_TO_RESUME, /**< Ready to resume message type */
54 MM_MESSAGE_CONNECTING = 0x100, /**< Connecting message type */
55 MM_MESSAGE_CONNECTED, /**< Rtspsrc has successed to connecting to server */
56 MM_MESSAGE_CONNECTION_TIMEOUT, /**< Connection timeout message type */
57 MM_MESSAGE_BUFFERING, /**< Buffering message type */
58 MM_MESSAGE_BEGIN_OF_STREAM, /**< Streaming begin message type */
59 MM_MESSAGE_END_OF_STREAM, /**< End of stream message type */
60 MM_MESSAGE_BLUETOOTH_ON, /**< Bluetooth A2DP Connection ON */
61 MM_MESSAGE_BLUETOOTH_OFF, /**< Bluetooth A2DP Connection OFF */
62 MM_MESSAGE_RESUMED_BY_REW, /**< Resumed by fast rewind message type */
63 MM_MESSAGE_UPDATE_SUBTITLE, /**< Update subtitle type */
64 MM_MESSAGE_RTP_SENDER_REPORT, /**< RTP sender report */
65 MM_MESSAGE_RTP_RECEIVER_REPORT, /**< RTP receiver report */
66 MM_MESSAGE_RTP_SESSION_STATUS, /**< RTP session status */
67 MM_MESSAGE_SENDER_STATE, /**< Sender state */
68 MM_MESSAGE_RECEIVER_STATE, /**< Receiver state */
69 MM_MESSAGE_FILE_NOT_SUPPORTED, /**< Not supported file */
70 MM_MESSAGE_FILE_NOT_FOUND, /**< Not founded file */
71 MM_MESSAGE_DRM_NOT_AUTHORIZED, /**< Not authorized to play the content */
72 MM_MESSAGE_VIDEO_CAPTURED, /**< Video frame has been captured */
73 MM_MESSAGE_VIDEO_NOT_CAPTURED, /**< video capture failed */
74 MM_MESSAGE_SEEK_COMPLETED, /**< Seek completed */
75 MM_MESSAGE_PD_DOWNLOADER_START, /**< PD downloader start message */
76 MM_MESSAGE_PD_DOWNLOADER_END, /**< PD downloader end message */
77 MM_MESSAGE_IMAGE_BUFFER, /**< hls image buffer message type */
78 MM_MESSAGE_DRM_NO_LICENSE, /**< No license */
79 MM_MESSAGE_DRM_EXPIRED, /**< Expired license */
80 MM_MESSAGE_DRM_FUTURE_USE, /**< License for future use */
81 MM_MESSAGE_VIDEO_BIN_CREATED, /**< Video bin is created */
84 MM_MESSAGE_CAMCORDER_STATE_CHANGED = 0x200, /**< State changed.*/
85 MM_MESSAGE_CAMCORDER_STATE_CHANGED_BY_ASM, /**< State change by audio session manager message type */
86 MM_MESSAGE_CAMCORDER_MAX_SIZE, /**< Maximum size, camcorder waits for user's order (cam_commit/cancel).*/
87 MM_MESSAGE_CAMCORDER_NO_FREE_SPACE, /**< No free space, camcorder waits for user's order (cam_commit/cancel).*/
88 MM_MESSAGE_CAMCORDER_TIME_LIMIT, /**< Time limit, camcorder waits for user's order (cam_commit/cancel)*/
89 MM_MESSAGE_CAMCORDER_CAPTURED, /**< Image captured */
90 MM_MESSAGE_CAMCORDER_ERROR, /**< Error occurred.*/
91 MM_MESSAGE_CAMCORDER_FOCUS_CHANGED, /**< Focus changed */
92 MM_MESSAGE_CAMCORDER_CURRENT_VOLUME, /**< Current volume level of real input stream */
93 MM_MESSAGE_CAMCORDER_FIRMWARE_UPDATE, /**< Firmware update */
94 MM_MESSAGE_CAMCORDER_RECORDING_STATUS, /**< Recording status. (Elapsed time, total time, file size(KB))*/
95 MM_MESSAGE_CAMCORDER_STATE_CHANGED_BY_SECURITY, /**< State change by system security(ex:MDM) message type */
96 MM_MESSAGE_CAMCORDER_VIDEO_SNAPSHOT_CAPTURED, /**< Image captured while video recording */
97 MM_MESSAGE_CAMCORDER_HDR_PROGRESS, /**< Progressing percent of HDR capture */
98 MM_MESSAGE_CAMCORDER_FACE_DETECT_INFO, /**< Face detection information */
99 MM_MESSAGE_CAMCORDER_VIDEO_CAPTURED, /**< Video captured */
100 MM_MESSAGE_CAMCORDER_AUDIO_CAPTURED, /**< Audio captured */
101 MM_MESSAGE_CAMCORDER_LOW_LIGHT_STATE, /**< Low light state */
102 MM_MESSAGE_CAMCORDER_CAPTURE_SOUND, /**< Noti to play capture sound - only single capture available */
103 MM_MESSAGE_CAMCORDER_CAPTURE_SOUND_COMPLETED, /**< Noti to play capture sound completed - only single capture available */
106 MM_MESSAGE_RADIO_SCAN_START = 0x300, /**< Radio frequency scanning initiated */
107 MM_MESSAGE_RADIO_SCAN_INFO, /**< Founded radio frequency report. check message parameters */
108 MM_MESSAGE_RADIO_SCAN_FINISH, /**< Radio frequency scanning has finished */
109 MM_MESSAGE_RADIO_SCAN_STOP, /**< Radio frequency scanning has stopped */
110 MM_MESSAGE_RADIO_SEEK_START, /**< Radio seeking has established */
111 MM_MESSAGE_RADIO_SEEK_FINISH, /**< Radio seeking has finished */
112 MM_MESSAGE_RADIO_SET_FREQUENCY, /**< Radio set frequency async*/
113 MM_MESSAGE_RADIO_RDS_PS, /**< Radio RDS Program Service Data has arrived> */
114 MM_MESSAGE_RADIO_RDS_RT, /**< Radio RDS Radio Text Data has arrived> */
118 MM_MESSAGE_MEDIACALL_RESERVED = 0x400, /**< Reserved message for Media Call */
121 MM_MESSAGE_IMAGE_RESERVED = 0x500, /**< Reserved message for Image */
124 MM_MESSAGE_SOUND_PCM_CAPTURE_RESTRICTED = 0x600, /**< Sound pcm capture is restricted by system */
125 MM_MESSAGE_SOUND_PCM_INTERRUPTED, /**< Sound pcm is interrupted by audio system */
128 MM_MESSAGE_FILEINFO_RESERVED = 0x700, /**< Reserved message for File Info */
130 /* STREAM RECORDER */
131 MM_MESSAGE_STREAMRECORDER_ERROR = 0x800,
132 MM_MESSAGE_STREAMRECORDER_CONSUME_COMPLETE,
133 MM_MESSAGE_STREAMRECORDER_STATE_CHANGED,
135 MM_MESSAGE_NUM, /**< The number of the messages */
140 * Union type of 'MMMessageParamType' structure. Please add type when you make new union type of MMMessageParamType
142 enum MMMessageUnionType {
143 MM_MSG_UNION_CODE, /**< Default */
146 MM_MSG_UNION_CONNECTION,
147 MM_MSG_UNION_FIRMWARE,
148 MM_MSG_UNION_RTPSENDER_REPORT,
149 MM_MSG_UNION_RTPRECEIVER_REPORT,
150 MM_MSG_UNION_RTPSESSION_STATUS,
151 MM_MSG_UNION_SUBTITLE,
152 MM_MSG_UNION_RADIO_SCAN,
153 MM_MSG_UNION_RECORDING_STATUS,
154 MM_MSG_UNION_REC_VOLUME_DB,
155 MM_MSG_UNION_CONSUME_RECORDER_BUFFER,
159 * Enumerations of code for MM_MESSAGE_STATE_INTERRUPTED messages type.
161 enum MMMessageInterruptedCode {
162 MM_MSG_CODE_INTERRUPTED_BY_MEDIA = 0,
163 MM_MSG_CODE_INTERRUPTED_BY_CALL_START,
164 MM_MSG_CODE_INTERRUPTED_BY_CALL_END,
165 MM_MSG_CODE_INTERRUPTED_BY_EARJACK_UNPLUG,
166 MM_MSG_CODE_INTERRUPTED_BY_RESOURCE_CONFLICT,
167 MM_MSG_CODE_INTERRUPTED_BY_ALARM_START,
168 MM_MSG_CODE_INTERRUPTED_BY_ALARM_END,
169 MM_MSG_CODE_INTERRUPTED_BY_EMERGENCY_START,
170 MM_MSG_CODE_INTERRUPTED_BY_EMERGENCY_END,
171 MM_MSG_CODE_INTERRUPTED_BY_OTHER_PLAYER_APP,
172 MM_MSG_CODE_INTERRUPTED_BY_RESUMABLE_MEDIA,
173 MM_MSG_CODE_INTERRUPTED_BY_NOTIFICATION_START,
174 MM_MSG_CODE_INTERRUPTED_BY_NOTIFICATION_END,
175 MM_MSG_CODE_INTERRUPTED_BY_RESUMABLE_CANCELED,
179 * Enumerations of code for MM_MESSAGE_SOUND_PCM_CAPTURE_RESTRICTED messages type.
181 enum MMMessagePcmCaptureCode {
182 MM_MSG_CODE_PCM_CAPTURE_RESTRICTED = 0,
183 MM_MSG_CODE_PCM_CAPTURE_ALLOWED,
187 * Message callback function type.
189 typedef int (*MMMessageCallback) (int id, void *param, void *user_param);
195 void *data; /**< Allocated data */
200 int union_type; /**< Type of union. Please refer MMMessageUnionType */
203 int code; /**< Error or warning code */
208 int previous; /**< Previous state */
209 int current; /**< Current state */
210 int code; /**< Error or warning code */
216 unsigned int elapsed; /**< Elapsed time */
217 unsigned int total; /**< Total time */
223 unsigned int buffering; /**< Buffering percent */
230 int state; /**< Update state*/
231 int progress; /**< Update progress percentage */
237 unsigned char is_valid; /**< Structure is valid or not */
238 //int64 ntptime; /**< The NTP timestamp indicates the point of time measured in wall clock time when this report was sent. */ unsigned int rtptime; /**< The RTP timestamp resembles the same time as the NTP timestamp ,but is measured in the same units and with the same random offset as the RTP timestamps in data packets */
239 unsigned long long ntptime; /**< The NTP timestamp indicates the point of time measured in wall clock time when this report was sent. */ unsigned int rtptime; /**< The RTP timestamp resembles the same time as the NTP timestamp ,but is measured in the same units and with the same random offset as the RTP timestamps in data packets */
240 unsigned int packet_count; /**< The sender's packet count totals up the number of RTP data packets transmitted by the sender since joining the RTP session */
241 unsigned int octet_count; /**< The total number of payload octets (i.e., not including the header or any padding) transmitted in RTP data packets by the sender since starting up transmission */
242 } RTPSenderReport; /**< RTPSenderReport message parameter structure. */
247 unsigned char is_valid; /**< Structure is valid or not */
248 unsigned int ssrc; /**< The SSRC identifier of the sender whose reception is reported in this block . who the report is from */
249 unsigned char fractionlost; /**< The sender of the receiver report estimates the fraction of the RTP data packets from source SSRC_n that it assumes to be lost since it sent the previous SR or RR packet.*/
250 unsigned int packetslost; /**< The sender of a receiver report blocks also tries to estimate the total number of RTP data packets from source SSRC_n that have been lost since the beginning of reception. Packets that arrive late are not counted as lost, and the loss may be negative if there are duplicates. */
251 unsigned int exthighestseq; /**< The low 16 bits of the extended highest sequence number contain the highest sequence number received in an RTP data packet from source SSRC_n, and the most significant 16 bits extend that sequence number with the corresponding count of sequence number cycles. */
252 unsigned int jitter; /**< An estimate of the statistical variance of the RTP data packet inter-arrival time, measured in timestamp units and expressed as an unsigned intege */
253 unsigned int lsr; /**< Last SR Timestamp */
254 unsigned int dlsr; /**< Delay since last SR Timestamp */
255 } RTPReceiverReport; /**< RTPReceiverReport message parameter structure. */
260 double bandwidth; /**< Bandwidth Modifier*/
261 double sender_fraction; /**< Fraction of packet loss by sender*/
262 double receiver_fraction; /**< Fraction of packet loss from Receiver*/
263 double rtcp_bandwidth; /**< The total bandwidth that will be used for RTCP packets by all members of this session, in octets per second */
264 double min_interval; /**< Minimum Interval */
265 unsigned int sender_sources; /**< Identifies the synchronization source from sender*/
266 unsigned int active_sources; /**< Identifies the Active source from sender*/
267 unsigned int avg_rtcp_packet_size; /**< Average RTCP packet size */
268 unsigned int bye_members; /**< BYE Packet members */
269 } RTPSessionStatus; /**< RTPSessionStatus message parameter structure. */
274 unsigned long duration; /**< duration */
281 int frequency; /**< detected active frequency with MM_MESSAGE_RADIO_SCAN_INFO */
285 * Radio RDS PS and RT Info
288 int frequency; /**< The frequency at which the RDS data was obtained> */
289 char* rt_ps; /**< the radio text obtained with MM_MESSAGE_RADIO_RDS_PS and MM_MESSAGE_RADIO_RDS_RT */
295 unsigned long long elapsed; /**< Elapsed time (ms) */
296 unsigned long long total; /**< Total time */
297 unsigned long long filesize; /**< Recording File size (KB). An approximate value. */
298 unsigned long long remained_time; /**< Remained time (ms).
299 This is available if time limit is not set or
300 time limit is bigger than estimated remained time. */
304 * Recording volume level - dB
309 void * consumed_buffer;
311 } consumed_mediabuffer;
314 * Video frame capture
317 unsigned int width; /* width of captured image */
318 unsigned int height; /* height of captured image */
319 unsigned int orientation; /* orientation of captured image */
323 int size; /**< Allocated size of 'data' */
325 int reserved; /**< reserved field for future use */
326 } MMMessageParamType;
337 #endif /* __MM_MESSAGE_H__ */