--- /dev/null
+/*
+ * Copyright (c) 2021 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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.
+ */
+
+
+#ifndef __TIZEN_MEDIA_WEBRTC_DOC_H__
+#define __TIZEN_MEDIA_WEBRTC_DOC_H__
+
+
+/**
+ * @file webrtc_doc.h
+ * @brief This file contains high level documentation of the WebRTC API.
+ */
+
+/**
+ * @ingroup CAPI_MEDIA_FRAMEWORK
+ * @defgroup CAPI_MEDIA_WEBRTC_MODULE WebRTC
+ * @brief The @ref CAPI_MEDIA_WEBRTC_MODULE API provides functions for real-time communication between peers.
+ *
+ * @section CAPI_MEDIA_WEBRTC_MODULE_HEADER Required Header
+ * \#include <webrtc.h>
+ *
+ * @section CAPI_MEDIA_WEBRTC_OVERVIEW Overview
+ * The WebRTC API provides functions to communicate with the remote peer using multimedia sources and generic data.
+ * The multimedia sources include audio/video stream from microphone, camera or media file.
+ * This API set allows you to:
+ * - add/remove/mute/pause the media source
+ * - create/destroy data channel and send/receive data via the channel
+ * - set display surface to render the received video data
+ * - start/stop the state of the handle
+ * - make negotiation with the remote peer
+ * - query the various states of the handle including session negotiation
+ * - get notified various states changes via callbacks
+ *
+ * @subsection CAPI_MEDIA_WEBRTC_LIFE_CYCLE_STATE_TRANSITIONS State Transitions
+ * <div><table class="doxtable" >
+ * <tr>
+ * <th><b>FUNCTION</b></th>
+ * <th><b>PRE-STATE</b></th>
+ * <th><b>POST-STATE</b></th>
+ * <th><b>SYNC TYPE</b></th>
+ * </tr>
+ * <tr>
+ * <td> webrtc_create() </td>
+ * <td> NONE </td>
+ * <td> IDLE </td>
+ * <td> SYNC </td>
+ * </tr>
+ * <tr>
+ * <td> webrtc_destroy() </td>
+ * <td> IDLE/NEGOTIATING/PLAYING </td>
+ * <td> NONE </td>
+ * <td> SYNC </td>
+ * </tr>
+ * <tr>
+ * <td> webrtc_start() </td>
+ * <td> IDLE </td>
+ * <td> NEGOTIATING </td>
+ * <td> ASYNC </td>
+ * </tr>
+ * <tr>
+ * <td> webrtc_stop() </td>
+ * <td> NEGOTIATING/PLAYING </td>
+ * <td> IDLE </td>
+ * <td> SYNC </td>
+ * </tr>
+ * <tr>
+ * <td> webrtc_set_remote_description() </td>
+ * <td> NEGOTIATING </td>
+ * <td> PLAYING* </td>
+ * <td> ASYNC </td>
+ * </tr>
+ * <tr>
+ * <td> webrtc_set_local_description() </td>
+ * <td> NEGOTIATING </td>
+ * <td> PLAYING* </td>
+ * <td> ASYNC </td>
+ * </tr>
+ * <tr>
+ * <td> webrtc_add_ice_candidate() </td>
+ * <td> NEGOTIATING </td>
+ * <td> PLAYING* </td>
+ * <td> ASYNC </td>
+ * </tr>
+ * </table></div>
+ *
+ * (*) The transition from the NEGOTIATING state to the PLAYING state will be processed after finishing all the negotiation. \n
+ *
+ * @subsection CAPI_MEDIA_WEBRTC_LIFE_CYCLE_CALLBACK_OPERATIONS Callback(Event) Operations
+ * The callback mechanism is used to notify the application about significant webrtc events.
+ * <div><table class="doxtable" >
+ * <tr>
+ * <th><b>REGISTER</b></th>
+ * <th><b>UNREGISTER</b></th>
+ * <th><b>CALLBACK</b></th>
+ * <th><b>DESCRIPTION</b></th>
+ * </tr>
+ * <tr>
+ * <td>webrtc_set_state_changed_cb()</td>
+ * <td>webrtc_unset_state_changed_cb()</td>
+ * <td>webrtc_state_changed_cb()</td>
+ * <td>This callback is used to notify that the WebRTC state has changed</td>
+ * </tr>
+ * <tr>
+ * <td>webrtc_set_error_cb()</td>
+ * <td>webrtc_unset_error_cb()</td>
+ * <td>webrtc_error_cb()</td>
+ * <td>This callback is used to notify that an error has occurred</td>
+ * </tr>
+ * <tr>
+ * <td>webrtc_set_negotiation_needed_cb()</td>
+ * <td>webrtc_unset_negotiation_needed_cb()</td>
+ * <td>webrtc_negotiation_needed_cb()</td>
+ * <td>This callback is used to notify that the WebRTC requires session negotiation</td>
+ * </tr>
+ * <tr>
+ * <td>webrtc_set_peer_connection_state_change_cb()</td>
+ * <td>webrtc_unset_peer_connection_state_change_cb()</td>
+ * <td>webrtc_peer_connection_state_change_cb()</td>
+ * <td>This callback is used to notify that the WebRTC peer connection state has changed</td>
+ * </tr>
+ * <tr>
+ * <td>webrtc_set_signaling_state_change_cb()</td>
+ * <td>webrtc_unset_signaling_state_change_cb()</td>
+ * <td>webrtc_signaling_state_change_cb()</td>
+ * <td>This callback is used to notify that the WebRTC signaling state has changed</td>
+ * </tr>
+ * <tr>
+ * <td>webrtc_set_ice_gathering_state_change_cb()</td>
+ * <td>webrtc_unset_ice_gathering_state_change_cb()</td>
+ * <td>webrtc_ice_gathering_state_change_cb()</td>
+ * <td>This callback is used to notify that the WebRTC ICE gathering state has changed</td>
+ * </tr>
+ * <tr>
+ * <td>webrtc_set_ice_connection_state_change_cb()</td>
+ * <td>webrtc_unset_ice_connection_state_change_cb()</td>
+ * <td>webrtc_ice_connection_state_change_cb()</td>
+ * <td>This callback is used to notify that the WebRTC ICE connection state has changed</td>
+ * </tr>
+ *</table></div>
+ *
+ * @subsection CAPI_MEDIA_WEBRTC_FOREACH_OPERATIONS Foreach Operations
+ * <div><table class="doxtable" >
+ * <tr>
+ * <th><b>FOREACH</b></th>
+ * <th><b>CALLBACK</b></th>
+ * <th><b>DESCRIPTION</b></th>
+ * </tr>
+ * <tr>
+ * <td>webrtc_foreach_turn_server()</td>
+ * <td>webrtc_turn_server_cb()</td>
+ * <td>It retrieves the added TURN server one by one</td>
+ * </tr>
+ *</table></div>
+ *
+ * @section CAPI_MEDIA_WEBRTC_MODULE_FEATURE Related Features
+ * This API is related with the following features:\n
+ * - %http://tizen.org/feature/network.wifi\n
+ * - %http://tizen.org/feature/network.telephony\n
+ * - %http://tizen.org/feature/network.ethernet\n
+ *
+ * It is recommended to design feature related codes in your application for reliability.\n
+ * You can check if a device supports the related features for this API by using @ref CAPI_SYSTEM_SYSTEM_INFO_MODULE, thereby controlling the procedure of your application.\n
+ * To ensure your application is only running on the device with specific features, please define the features in your manifest file using the manifest editor in the SDK.\n
+ * More details on featuring your application can be found from <a href="https://docs.tizen.org/application/tizen-studio/native-tools/manifest-text-editor#feature-element"><b>Feature Element</b>.</a>
+ *
+ */
+
+/**
+ * @ingroup CAPI_MEDIA_WEBRTC_MODULE
+ * @defgroup CAPI_MEDIA_WEBRTC_MEDIA_SOURCE_MODULE Media Source
+ * @brief The @ref CAPI_MEDIA_WEBRTC_MEDIA_SOURCE_MODULE API provides functions to manage media sources to send to the remote peer.
+ * @section CAPI_MEDIA_WEBRTC_MEDIA_SOURCE_MODULE_HEADER Required Header
+ * \#include <webrtc.h>
+ *
+ * @section CAPI_MEDIA_WEBRTC_MEDIA_SOURCE_MODULE_OVERVIEW Overview
+ * The WebRTC Media Source API allows you to:
+ * - add/remove the media source (audiotest, videotest, mic, camera, screen, media file, media packet)
+ * - pause/mute the media source
+ * - get/set the transceiver direction to the media source (sendrecv, sendonly, recvonly)
+ * - set/get the video resolution of the media source
+ * - push a media packet in case of the media packet source
+ *
+ * @section CAPI_MEDIA_WEBRTC_MEDIA_SOURCE_MODULE_FEATURE Related Features
+ * This API is related with the following features:\n
+ * - %http://tizen.org/feature/microphone\n
+ * - %http://tizen.org/feature/camera
+ *
+ * It is recommended to design feature related codes in your application for reliability.\n
+ * You can check if a device supports the related features for this API by using @ref CAPI_SYSTEM_SYSTEM_INFO_MODULE, thereby controlling the procedure of your application.\n
+ * To ensure your application is only running on the device with specific features, please define the features in your manifest file using the manifest editor in the SDK.\n
+ * More details on featuring your application can be found from <a href="https://docs.tizen.org/application/tizen-studio/native-tools/manifest-text-editor#feature-element"><b>Feature Element</b>.</a>
+ *
+*/
+
+/**
+ * @ingroup CAPI_MEDIA_WEBRTC_MODULE
+ * @defgroup CAPI_MEDIA_WEBRTC_MEDIA_RENDER_MODULE Media Render
+ * @brief The @ref CAPI_MEDIA_WEBRTC_MEDIA_RENDER_MODULE API provides functions to render audio or video stream received from the remote peer.
+ * @section CAPI_MEDIA_WEBRTC_MEDIA_RENDER_MODULE_HEADER Required Header
+ * \#include <webrtc.h>
+ *
+ * @section CAPI_MEDIA_WEBRTC_MEDIA_RENDER_MODULE_OVERVIEW Overview
+ * The WebRTC Media Render API allows you to:
+ * - set a sound policy including routing and volume to the audio stream received from the remote peer
+ * - set a display type and a surface to render the video stream received from the remote peer
+ * - choose not to render the audio or video stream itself but forward it via the callback function with media packet.
+ *
+*/
+
+/**
+ * @ingroup CAPI_MEDIA_WEBRTC_MODULE
+ * @defgroup CAPI_MEDIA_WEBRTC_DATA_CHANNEL_MODULE Data Channel
+ * @brief The @ref CAPI_MEDIA_WEBRTC_DATA_CHANNEL_MODULE API provides functions to manage data channels.
+ * @section CAPI_MEDIA_WEBRTC_DATA_CHANNEL_MODULE_HEADER Required Header
+ * \#include <webrtc.h>
+ *
+ * @section CAPI_MEDIA_WEBRTC_DATA_CHANNEL_MODULE_OVERVIEW Overview
+ * The WebRTC Data Channel API allows you to:
+ * - create/destroy the data channel
+ * - send/receive bytes or string data to/from the data channel
+ * - get notified various states of the data channel
+ *
+*/
+
+#endif /* __TIZEN_MEDIA_WEBRTC_DOC_H__ */