#include "webrtc.h"
#include "webrtc_private.h"
-#include <gst/audio/audio.h>
#define GET_AV_IDX_BY_TYPE(x_media_type) GET_AV_IDX(x_media_type == MEDIA_TYPE_AUDIO)
ELEMENT_FAKESINK
} gst_element_e;
-const char *_get_audio_format_name(media_format_mimetype_e mime_type);
-const char *_get_video_format_name(media_format_mimetype_e mime_type, bool zerocopy_enabled);
const char *_get_source_element(webrtc_s *webrtc, int type);
GstElement *_find_element_in_bin(GstBin *bin, const gchar *name);
bool _is_hw_encoder_used(webrtc_s *webrtc, webrtc_media_source_type_e source_type, media_type_e media_type);
-GstAudioFormat _get_gst_audio_raw_format_from_string(const char *format);
-bool _is_supported_mime_type(media_format_mimetype_e mime_type);
GstCaps *_get_caps_from_encoded_audio_media_type(const char *media_type, int channels, int samplerate);
GstCaps *_get_caps_from_encoded_video_media_type(const char *media_type, int width, int height);
GstCaps *_make_rtp_caps(const gchar *media_type, unsigned int payload_type, webrtc_gst_slot_s *source, GstElement *encoder);
Name: capi-media-webrtc
Summary: A WebRTC library in Tizen Native API
-Version: 0.3.228
+Version: 0.3.229
Release: 0
Group: Multimedia/API
License: Apache-2.0
}
//LCOV_EXCL_STOP
+static const char *__get_audio_format_name(media_format_mimetype_e mime_type)
+{
+ switch (mime_type) {
+ /* RAW formats */
+ case MEDIA_FORMAT_PCM_S16LE:
+ return "S16LE";
+ /* ENCODED formats */
+ case MEDIA_FORMAT_PCMU:
+ return "PCMU";
+ case MEDIA_FORMAT_PCMA:
+ return "PCMA";
+ case MEDIA_FORMAT_OPUS:
+ return "OPUS";
+ case MEDIA_FORMAT_VORBIS:
+ return "VORBIS";
+ default:
+ LOG_ERROR("not supported audio mime_type(0x%x)", mime_type);
+ return NULL;
+ }
+}
+
+static const char *__get_video_format_name(media_format_mimetype_e mime_type, bool zerocopy_enabled)
+{
+ switch (mime_type) {
+ /* RAW formats */
+ case MEDIA_FORMAT_I420:
+ return zerocopy_enabled ? "S420" : "I420";
+ case MEDIA_FORMAT_NV12:
+ return zerocopy_enabled ? "SN12" : "NV12";
+ /* ENCODED formats */
+ case MEDIA_FORMAT_VP8:
+ return "VP8";
+ case MEDIA_FORMAT_VP9:
+ return "VP9";
+ case MEDIA_FORMAT_H264_SP: /* baseline profile */
+ case MEDIA_FORMAT_H264_MP: /* main profile */
+ case MEDIA_FORMAT_H264_HP: /* high profile */
+ return "H264";
+ case MEDIA_FORMAT_MJPEG:
+ return "JPEG";
+ default:
+ LOG_ERROR("not supported video mime_type(0x%x)", mime_type);
+ return NULL;
+ }
+}
+
GstCaps *_make_mediapacketsrc_raw_caps_from_media_format(webrtc_gst_slot_s *source)
{
GstCaps *caps = NULL;
RET_VAL_IF(media_format_get_video_frame_rate(source->media_format, &framerate) != MEDIA_FORMAT_ERROR_NONE,
NULL, "failed to media_format_get_video_frame_rate()");
caps = gst_caps_new_simple(MEDIA_TYPE_VIDEO_RAW,
- "format", G_TYPE_STRING, _get_video_format_name(mime_type, source->zerocopy_enabled),
+ "format", G_TYPE_STRING, __get_video_format_name(mime_type, source->zerocopy_enabled),
"framerate", GST_TYPE_FRACTION, framerate, 1,
"width", G_TYPE_INT, width,
"height", G_TYPE_INT, height,
}
//LCOV_EXCL_STOP
+static bool __is_supported_mime_type(media_format_mimetype_e mime_type)
+{
+ switch (mime_type) {
+ /* AUDIO/RAW formats */
+ case MEDIA_FORMAT_PCM_S16LE:
+ LOG_INFO("[AUDIO][RAW/%s] mime_type[0x%x]", __get_audio_format_name(mime_type), mime_type);
+ return true;
+ /* VIDEO/RAW formats */
+ case MEDIA_FORMAT_I420:
+ case MEDIA_FORMAT_NV12:
+ LOG_INFO("[VIDEO][RAW/%s] mime_type[0x%x]", __get_video_format_name(mime_type, false), mime_type);
+ return true;
+ /* AUDIO/ENCODED formats */
+ case MEDIA_FORMAT_PCMU:
+ case MEDIA_FORMAT_PCMA:
+ case MEDIA_FORMAT_OPUS:
+ case MEDIA_FORMAT_VORBIS:
+ LOG_INFO("[AUDIO][ENCODED/%s] mime_type[0x%x]", __get_audio_format_name(mime_type), mime_type);
+ return true;
+ /* VIDEO/ENCODED formats */
+ case MEDIA_FORMAT_VP8:
+ case MEDIA_FORMAT_VP9:
+ case MEDIA_FORMAT_H264_SP:
+ case MEDIA_FORMAT_H264_MP:
+ case MEDIA_FORMAT_H264_HP:
+ case MEDIA_FORMAT_MJPEG:
+ LOG_INFO("[VIDEO][ENCODED/%s] mime_type[0x%x]", __get_video_format_name(mime_type, false), mime_type);
+ return true;
+ default:
+ LOG_ERROR("not supported mime_type(0x%x)", mime_type);
+ return false;
+ }
+}
+
static int __set_mediapacketsrc_codec_info(webrtc_s *webrtc, webrtc_gst_slot_s *source, media_format_mimetype_e mime_type)
{
RET_VAL_IF(webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL");
} else {
if (source->media_types == MEDIA_TYPE_AUDIO)
- source->av[AV_IDX_AUDIO].codec = _get_audio_format_name(mime_type);
+ source->av[AV_IDX_AUDIO].codec = __get_audio_format_name(mime_type);
else
- source->av[AV_IDX_VIDEO].codec = _get_video_format_name(mime_type, source->zerocopy_enabled);
+ source->av[AV_IDX_VIDEO].codec = __get_video_format_name(mime_type, source->zerocopy_enabled);
}
return WEBRTC_ERROR_INVALID_OPERATION;
}
- RET_VAL_IF(!_is_supported_mime_type(mime_type), WEBRTC_ERROR_INVALID_PARAMETER, "mime_type[0x%x] is not supported", mime_type);
+ RET_VAL_IF(!__is_supported_mime_type(mime_type), WEBRTC_ERROR_INVALID_PARAMETER, "mime_type[0x%x] is not supported", mime_type);
media_format_ref(format);
source->media_format = format;
#include "webrtc_internal.h"
#include "webrtc_private.h"
#include "webrtc_source_private.h"
-
-const char *_get_audio_format_name(media_format_mimetype_e mime_type)
-{
- switch (mime_type) {
- /* RAW formats */
- case MEDIA_FORMAT_PCM_S16LE:
- return "S16LE";
- /* ENCODED formats */
- case MEDIA_FORMAT_PCMU:
- return "PCMU";
- case MEDIA_FORMAT_PCMA:
- return "PCMA";
- case MEDIA_FORMAT_OPUS:
- return "OPUS";
- case MEDIA_FORMAT_VORBIS:
- return "VORBIS";
- default:
- LOG_ERROR("not supported audio mime_type(0x%x)", mime_type);
- return NULL;
- }
-}
-
-const char *_get_video_format_name(media_format_mimetype_e mime_type, bool zerocopy_enabled)
-{
- switch (mime_type) {
- /* RAW formats */
- case MEDIA_FORMAT_I420:
- return zerocopy_enabled ? "S420" : "I420";
- case MEDIA_FORMAT_NV12:
- return zerocopy_enabled ? "SN12" : "NV12";
- /* ENCODED formats */
- case MEDIA_FORMAT_VP8:
- return "VP8";
- case MEDIA_FORMAT_VP9:
- return "VP9";
- case MEDIA_FORMAT_H264_SP: /* baseline profile */
- case MEDIA_FORMAT_H264_MP: /* main profile */
- case MEDIA_FORMAT_H264_HP: /* high profile */
- return "H264";
- case MEDIA_FORMAT_MJPEG:
- return "JPEG";
- default:
- LOG_ERROR("not supported video mime_type(0x%x)", mime_type);
- return NULL;
- }
-}
+#include <gst/audio/audio.h>
static const char *__get_default_source_element(int type)
{
return NULL;
}
-GstAudioFormat _get_gst_audio_raw_format_from_string(const char *format)
+static GstAudioFormat __get_gst_audio_raw_format_from_string(const char *format)
{
RET_VAL_IF(format == NULL, GST_AUDIO_FORMAT_UNKNOWN, "format is NULL");
return GST_AUDIO_FORMAT_UNKNOWN;
}
-bool _is_supported_mime_type(media_format_mimetype_e mime_type)
-{
- switch (mime_type) {
- /* AUDIO/RAW formats */
- case MEDIA_FORMAT_PCM_S16LE:
- LOG_INFO("[AUDIO][RAW/%s] mime_type[0x%x]", _get_audio_format_name(mime_type), mime_type);
- return true;
- /* VIDEO/RAW formats */
- case MEDIA_FORMAT_I420:
- case MEDIA_FORMAT_NV12:
- LOG_INFO("[VIDEO][RAW/%s] mime_type[0x%x]", _get_video_format_name(mime_type, false), mime_type);
- return true;
- /* AUDIO/ENCODED formats */
- case MEDIA_FORMAT_PCMU:
- case MEDIA_FORMAT_PCMA:
- case MEDIA_FORMAT_OPUS:
- case MEDIA_FORMAT_VORBIS:
- LOG_INFO("[AUDIO][ENCODED/%s] mime_type[0x%x]", _get_audio_format_name(mime_type), mime_type);
- return true;
- /* VIDEO/ENCODED formats */
- case MEDIA_FORMAT_VP8:
- case MEDIA_FORMAT_VP9:
- case MEDIA_FORMAT_H264_SP:
- case MEDIA_FORMAT_H264_MP:
- case MEDIA_FORMAT_H264_HP:
- case MEDIA_FORMAT_MJPEG:
- LOG_INFO("[VIDEO][ENCODED/%s] mime_type[0x%x]", _get_video_format_name(mime_type, false), mime_type);
- return true;
- default:
- LOG_ERROR("not supported mime_type(0x%x)", mime_type);
- return false;
- }
-}
-
GstCaps *_make_rtp_caps(const gchar *media_type, unsigned int payload_type, webrtc_gst_slot_s *source, GstElement *encoder)
{
GstCaps *caps;
#ifdef SUPPORT_FILESRC_AUDIO_FORMAT_CHANGE
case WEBRTC_MEDIA_SOURCE_TYPE_FILE:
#endif
- format = _get_gst_audio_raw_format_from_string(_get_raw_format_from_ini(ini, source->type, MEDIA_TYPE_AUDIO));
+ format = __get_gst_audio_raw_format_from_string(_get_raw_format_from_ini(ini, source->type, MEDIA_TYPE_AUDIO));
RET_VAL_IF(format == GST_AUDIO_FORMAT_UNKNOWN, NULL, "not supported raw format");
_get_audio_info_from_ini(ini, source->type, &channels, &samplerate);