DM_DEVICE_CLASS_BT,
DM_DEVICE_CLASS_NULL,
DM_DEVICE_CLASS_ACM,
+#ifdef __TIZEN_TV_BUILTIN_MIC__
+ DM_DEVICE_CLASS_TVMIC,
+#endif
DM_DEVICE_CLASS_MAX,
} dm_device_class_t;
.module_name = { NULL, "module-acm-sink" },
.device_string = "acm",
.custom_device_get_func = NULL
+ },
+#ifdef __TIZEN_TV_BUILTIN_MIC__
+ [DM_DEVICE_CLASS_TVMIC] = {
+ .module_name = { "module-tizentv-builtin-source", NULL },
+ .device_string = "tvmic",
+ .custom_device_get_func = NULL
}
+#endif
};
void simple_device_dump(pa_log_level_t level, const char *prefix, int id, const char *type, const char *name, int direction, int state) {
return DM_DEVICE_CLASS_TIZEN;
else if (device_string == strstr(device_string, "acm"))
return DM_DEVICE_CLASS_ACM;
+#ifdef __TIZEN_TV_BUILTIN_MIC__
+ else if (device_string == strstr(device_string, "tvmic"))
+ return DM_DEVICE_CLASS_TVMIC;
+#endif
return DM_DEVICE_CLASS_NONE;
}
return pa_safe_streq(pa_proplist_gets(prop, PA_PROP_DEVICE_API), DEVICE_API_RTSP);
}
+#ifdef __TIZEN_TV_BUILTIN_MIC__
+static bool pulse_device_is_tvmic(pa_object *pdevice) {
+ if (!pdevice)
+ return false;
+
+ if (pa_sink_isinstance(pdevice))
+ return false;
+
+ return pa_safe_streq(PA_SOURCE(pdevice)->module->name, module_table[DM_DEVICE_CLASS_TVMIC].module_name[0]);
+}
+#endif
+
#ifndef __TIZEN_INTERNAL_BT_SCO__
static bool pulse_device_is_btsco(pa_object *pdevice) {
pa_proplist *prop = pulse_device_get_proplist(pdevice);
return DM_DEVICE_CLASS_BT;
else if (pulse_device_is_acm(pdevice))
return DM_DEVICE_CLASS_ACM;
+#ifdef __TIZEN_TV_BUILTIN_MIC__
+ else if (pulse_device_is_tvmic(pdevice))
+ return DM_DEVICE_CLASS_TVMIC;
+#endif
return DM_DEVICE_CLASS_NONE;
}
pa_assert(params);
pa_assert(target);
- if ((device_class != DM_DEVICE_CLASS_ALSA) &&
- (device_class != DM_DEVICE_CLASS_TIZEN) &&
- (device_class != DM_DEVICE_CLASS_ACM))
- return -1;
-
- if (device_class == DM_DEVICE_CLASS_ACM) {
+ switch (device_class) {
+ case DM_DEVICE_CLASS_ACM:
+#ifdef __TIZEN_TV_BUILTIN_MIC__
+ /* fall-through */
+ case DM_DEVICE_CLASS_TVMIC:
+#endif
snprintf(target, DEVICE_PARAM_STRING_MAX, "%s ", params);
- return 0;
- }
+ break;
+
+ case DM_DEVICE_CLASS_ALSA:
+ /* fall-through */
+ case DM_DEVICE_CLASS_TIZEN:
+ if (device_string_get_name(device_string, device_name) < 0) {
+ pa_log_error("Invalid device string '%s'", device_string);
+ return -1;
+ }
+
+ snprintf(target, DEVICE_PARAM_STRING_MAX, "device=%s%s %s",
+ (device_class == DM_DEVICE_CLASS_ALSA) ? "hw:" : "", device_name, params);
+ break;
- if (device_string_get_name(device_string, device_name) < 0) {
- pa_log_error("Invalid device string '%s'", device_string);
+ default:
+ pa_log_error("unexpected device_class(%d)", device_class);
return -1;
}
- if (device_class == DM_DEVICE_CLASS_ALSA)
- snprintf(target, DEVICE_PARAM_STRING_MAX, "device=hw:%s ", device_name);
- else if (device_class == DM_DEVICE_CLASS_TIZEN)
- snprintf(target, DEVICE_PARAM_STRING_MAX, "device=%s ", device_name);
-
- strncat(target, params, DEVICE_PARAM_STRING_MAX - strlen(target));
-
return 0;
}
pulse_device_set_use_internal_codec(PA_OBJECT(source), false);
handle_bt_pulse_device(PA_OBJECT(source), true, dm);
return PA_HOOK_OK;
- } else if (pulse_device_is_alsa(PA_OBJECT(source)) || pulse_device_is_tizenaudio(PA_OBJECT(source))) {
+ } else if (pulse_device_is_alsa(PA_OBJECT(source)) ||
+#ifdef __TIZEN_TV_BUILTIN_MIC__
+ pulse_device_is_tvmic(PA_OBJECT(source)) ||
+#endif
+ pulse_device_is_tizenaudio(PA_OBJECT(source))) {
pulse_device_set_use_internal_codec(PA_OBJECT(source), true);
handle_internal_pulse_device(PA_OBJECT(source), true, dm);
return PA_HOOK_OK;
pa_log_warn("tunnel but not remote....ignore this");
}
return PA_HOOK_OK;
- } else if (pulse_device_is_alsa(PA_OBJECT(source)) || pulse_device_is_tizenaudio(PA_OBJECT(source))) {
+ } else if (pulse_device_is_alsa(PA_OBJECT(source)) ||
+#ifdef __TIZEN_TV_BUILTIN_MIC__
+ pulse_device_is_tvmic(PA_OBJECT(source)) ||
+#endif
+ pulse_device_is_tizenaudio(PA_OBJECT(source))) {
handle_internal_pulse_device(PA_OBJECT(source), false, dm);
return PA_HOOK_OK;
} else if (pulse_device_is_rtsp(PA_OBJECT(source))) {