PKG_CHECK_MODULES(INIPARSER, iniparser)
AC_SUBST(INIPARSER_CFLAGS)
AC_SUBST(INIPARSER_LIBS)
-
+
PKG_CHECK_MODULES(VCONF, vconf)
AC_SUBST(VCONF_CFLAGS)
AC_SUBST(VCONF_LIBS)
-dnl use samsung policy module --------------------------------------------------------
-AC_ARG_ENABLE(samsung-policy, AC_HELP_STRING([--enable-samsung-policy], [using samsung-policy]),
-[
- case "${enableval}" in
- yes) USE_SAMSUNG_POLICY=yes ;;
- no) USE_SAMSUNG_POLICY=no ;;
- *) AC_MSG_ERROR(bad value ${enableval} for --enable-samsung_policy) ;;
- esac
- ],[USE_SAMSUNG_POLICY=no])
-
-if test "x$USE_SAMSUNG_POLICY" = "xyes"; then
- PKG_CHECK_MODULES(VCONF, vconf)
- AC_SUBST(VCONF_CFLAGS)
- AC_SUBST(VCONF_LIBS)
-fi
-AM_CONDITIONAL(USE_SAMSUNG_POLICY, test "x$USE_SAMSUNG_POLICY" = "xyes")
-dnl end --------------------------------------------------------------------
-
dnl use dlog --------------------------------------------------------------------------
AC_ARG_ENABLE(dlog, AC_HELP_STRING([--enable-dlog], [using dlog]),
[
AS_IF([test "x$HAVE_GCOV" = "x1"], ENABLE_GCOV=yes, ENABLE_GCOV=no)
AS_IF([test "x$HAVE_LIBCHECK" = "x1"], ENABLE_TESTS=yes, ENABLE_TESTS=no)
AS_IF([test "x$enable_legacy_database_entry_format" != "xno"], ENABLE_LEGACY_DATABASE_ENTRY_FORMAT=yes, ENABLE_LEGACY_DATABASE_ENTRY_FORMAT=no)
-AS_IF([test "x$USE_SAMSUNG_POLICY" = "x1"], ENABLE_SAMSUNG_POLICY=yes, ENABLE_SAMSUNG_POLICY=no)
AS_IF([test "x$USE_DLOG" = "x1"], ENABLE_DLOG=yes, ENABLE_DLOG=no)
AS_IF([test "x$USE_PM_LOCK" = "x1"], ENABLE_PM_LOCK=yes, ENABLE_PM_LOCK=no)
AS_IF([test "x$USE_BT_PROFILE_SET" = "x1"], ENABLE_BT_PROFILE_SET=yes, ENABLE_BT_PROFILE_SET=no)
Legacy Database Entry Support: ${ENABLE_LEGACY_DATABASE_ENTRY_FORMAT}
Tizen
- samsung policy: ${ENABLE_SAMSUNG_POLICY}
dlog: ${ENABLE_DLOG}
pmapi: ${ENABLE_PM_LOCK}
bluetooth profile set: ${ENABLE_BT_PROFILE_SET}
%bcond_with pulseaudio_bt_profile_set
%bcond_without pulseaudio_udev_with_usb_only
%bcond_with pulseaudio_with_bluez5
-%bcond_with pulseaudio_samsung_policy
%bcond_with x
%define udev_dir %{_prefix}/lib/udev
Name: pulseaudio
Summary: Improved Linux sound server
Version: 5.0
-Release: 43
+Release: 44
Group: Multimedia/Audio
License: GPL-2.0+ and LGPL-2.1+
URL: http://pulseaudio.org
%if %{with pulseaudio_udev_with_usb_only}
--enable-udev-with-usb-only \
%endif
-%if %{with pulseaudio_samsung_policy}
- --enable-samsung-policy \
-%endif
--with-udev-rules-dir=%{udev_dir}/rules.d \
--with-system-user=pulse \
--with-system-group=pulse \
pulse/volume.h \
pulse/xmalloc.h
-if USE_SAMSUNG_POLICY
-pulseinclude_HEADERS += \
- pulse/ext-policy.h
-endif
-
lib_LTLIBRARIES = \
libpulse.la \
libpulse-simple.la
pulse/volume.c pulse/volume.h \
pulse/xmalloc.c pulse/xmalloc.h
-if USE_SAMSUNG_POLICY
-libpulse_la_SOURCES += \
- pulse/ext-policy.c pulse/ext-policy.h
-endif
-
libpulse_la_CFLAGS = $(AM_CFLAGS) $(DBUS_CFLAGS) $(LIBJSON_CFLAGS)
libpulse_la_LIBADD = $(AM_LIBADD) $(WINSOCK_LIBS) $(LTLIBICONV) $(LIBJSON_LIBS) libpulsecommon-@PA_MAJORMINOR@.la
libpulse_la_LDFLAGS = $(AM_LDFLAGS) $(VERSIONING_LDFLAGS) -version-info $(LIBPULSE_VERSION_INFO)
pa_ext_stream_restore_subscribe;
pa_ext_stream_restore_test;
pa_ext_stream_restore_write;
-pa_ext_policy_test;
pa_ext_echo_cancel_set_volume;
pa_ext_echo_cancel_set_device;
-pa_ext_policy_get_volume_level;
-pa_ext_policy_set_volume_level;
-pa_ext_policy_get_mute
-pa_ext_policy_set_mute;
pa_ext_node_manager_test;
pa_ext_node_manager_read_nodes;
pa_ext_node_manager_connect_nodes;
USA.
***/
-/* FIXME : This file should be separated from PA in future */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdint.h>
-
-#define AUDIO_REVISION 1
/* Error code */
-
#define AUDIO_IS_ERROR(ret) (ret < 0)
-
typedef enum audio_return {
AUDIO_RET_OK = 0,
AUDIO_ERR_UNDEFINED = (int32_t)0x80001000,
AUDIO_ERR_NOT_IMPLEMENTED = (int32_t)0x80001004,
} audio_return_t ;
-
-/* Session */
-typedef enum audio_session {
- AUDIO_SESSION_MEDIA,
- AUDIO_SESSION_VOICECALL,
- AUDIO_SESSION_VIDEOCALL,
- AUDIO_SESSION_VOIP,
- AUDIO_SESSION_FMRADIO,
- AUDIO_SESSION_CAMCORDER,
- AUDIO_SESSION_NOTIFICATION,
- AUDIO_SESSION_ALARM,
- AUDIO_SESSION_EMERGENCY,
- AUDIO_SESSION_VOICE_RECOGNITION,
- AUDIO_SESSION_MAX
-} audio_session_t;
-
-/* Sub session */
-typedef enum audio_subsession {
- AUDIO_SUBSESSION_NONE,
- AUDIO_SUBSESSION_VOICE,
- AUDIO_SUBSESSION_RINGTONE,
- AUDIO_SUBSESSION_MEDIA,
- AUDIO_SUBSESSION_INIT,
- AUDIO_SUBSESSION_VR_NORMAL,
- AUDIO_SUBSESSION_VR_DRIVE,
- AUDIO_SUBSESSION_STEREO_REC,
- AUDIO_SUBSESSION_MONO_REC,
- AUDIO_SUBSESSION_MAX
-} audio_subsession_t;
-
-/* Session command */
-typedef enum audio_session_command {
- AUDIO_SESSION_CMD_START,
- AUDIO_SESSION_CMD_SUBSESSION,
- AUDIO_SESSION_CMD_END,
-} audio_session_command_t;
-
-
/* Direction */
typedef enum audio_direction {
AUDIO_DIRECTION_IN, /**< Capture */
AUDIO_DIRECTION_OUT, /**< Playback */
} audio_direction_t;
-
-/* Device */
-
-typedef enum audio_device_in {
- AUDIO_DEVICE_IN_NONE,
- AUDIO_DEVICE_IN_MIC, /**< Device builtin mic. */
- AUDIO_DEVICE_IN_WIRED_ACCESSORY, /**< Wired input devices */
- AUDIO_DEVICE_IN_BT_SCO, /**< Bluetooth SCO device */
- AUDIO_DEVICE_IN_MAX,
-} audio_device_in_t;
-
-typedef enum audio_device_out {
- AUDIO_DEVICE_OUT_NONE,
- AUDIO_DEVICE_OUT_SPEAKER, /**< Device builtin speaker */
- AUDIO_DEVICE_OUT_RECEIVER, /**< Device builtin receiver */
- AUDIO_DEVICE_OUT_WIRED_ACCESSORY, /**< Wired output devices such as headphone, headset, and so on. */
- AUDIO_DEVICE_OUT_BT_SCO, /**< Bluetooth SCO device */
- AUDIO_DEVICE_OUT_BT_A2DP, /**< Bluetooth A2DP device */
- AUDIO_DEVICE_OUT_DOCK, /**< DOCK device */
- AUDIO_DEVICE_OUT_HDMI, /**< HDMI device */
- AUDIO_DEVICE_OUT_MIRRORING, /**< MIRRORING device */
- AUDIO_DEVICE_OUT_USB_AUDIO, /**< USB Audio device */
- AUDIO_DEVICE_OUT_MULTIMEDIA_DOCK, /**< Multimedia DOCK device */
- AUDIO_DEVICE_OUT_MAX,
-} audio_device_out_t;
-
-typedef enum audio_route_flag {
- AUDIO_ROUTE_FLAG_NONE = 0,
- AUDIO_ROUTE_FLAG_MUTE_POLICY = 0x00000001,
- AUDIO_ROUTE_FLAG_DUAL_OUT = 0x00000002,
- AUDIO_ROUTE_FLAG_NOISE_REDUCTION = 0x00000010,
- AUDIO_ROUTE_FLAG_EXTRA_VOL = 0x00000020,
- AUDIO_ROUTE_FLAG_NETWORK_WB = 0x00000040,
- AUDIO_ROUTE_FLAG_BT_WB = 0x00000100,
- AUDIO_ROUTE_FLAG_BT_NREC = 0x00000200,
- AUDIO_ROUTE_FLAG_VOICE_COMMAND = 0x00040000,
-} audio_route_flag_t;
-
-typedef enum audio_device_api {
- AUDIO_DEVICE_API_UNKNOWN,
- AUDIO_DEVICE_API_ALSA,
- AUDIO_DEVICE_API_BLUEZ,
-} audio_device_api_t;
-
-typedef enum audio_device_param {
- AUDIO_DEVICE_PARAM_NONE,
- AUDIO_DEVICE_PARAM_CHANNELS,
- AUDIO_DEVICE_PARAM_SAMPLERATE,
- AUDIO_DEVICE_PARAM_FRAGMENT_SIZE,
- AUDIO_DEVICE_PARAM_FRAGMENT_NB,
- AUDIO_DEVICE_PARAM_START_THRESHOLD,
- AUDIO_DEVICE_PARAM_USE_MMAP,
- AUDIO_DEVICE_PARAM_USE_TSCHED,
- AUDIO_DEVICE_PARAM_TSCHED_BUF_SIZE,
- AUDIO_DEVICE_PARAM_SUSPEND_TIMEOUT,
- AUDIO_DEVICE_PARAM_ALTERNATE_RATE,
- AUDIO_DEVICE_PARAM_MAX,
-} audio_device_param_t;
-
-/*
-enum audio_device_type {
- AUDIO_DEVICE_NONE,
- AUDIO_DEVICE_BUILTIN_SPEAKER,
- AUDIO_DEVICE_BUILTIN_RECEIVER,
- AUDIO_DEVICE_BUILTIN_MIC,
- AUDIO_DEVICE_AUDIO_JACK,
- AUDIO_DEVICE_BT,
- AUDIO_DEVICE_HDMI,
- AUDIO_DEVICE_AUX,
- AUDIO_DEVICE_MAX
-};
-
-enum audio_device_direction_type{
- AUDIO_DEVICE_DIRECTION_IN,
- AUDIO_DEVICE_DIRECTION_OUT
-};
-*/
-
-typedef struct audio_device_param_info {
- audio_device_param_t param;
- union {
- int64_t s64_v;
- uint64_t u64_v;
- int32_t s32_v;
- uint32_t u32_v;
- };
-} audio_device_param_info_t;
-
-typedef struct audio_device_alsa_info {
- char *card_name;
- uint32_t card_idx;
- uint32_t device_idx;
-} audio_device_alsa_info_t;
-
-typedef struct audio_device_bluz_info {
- char *protocol;
- uint32_t nrec;
-} audio_device_bluez_info_t;
-
-typedef struct audio_device_info {
- audio_device_api_t api;
- audio_direction_t direction;
- char *name;
- uint8_t is_default_device;
- union {
- audio_device_alsa_info_t alsa;
- audio_device_bluez_info_t bluez;
- };
-} audio_device_info_t;
-
typedef struct device_info {
char *type;
uint32_t direction;
uint32_t idx;
} audio_stream_info_t ;
-/* Stream */
-
-typedef enum audio_volume {
- AUDIO_VOLUME_TYPE_SYSTEM, /**< System volume type */
- AUDIO_VOLUME_TYPE_NOTIFICATION, /**< Notification volume type */
- AUDIO_VOLUME_TYPE_ALARM, /**< Alarm volume type */
- AUDIO_VOLUME_TYPE_RINGTONE, /**< Ringtone volume type */
- AUDIO_VOLUME_TYPE_MEDIA, /**< Media volume type */
- AUDIO_VOLUME_TYPE_CALL, /**< Call volume type */
- AUDIO_VOLUME_TYPE_VOIP, /**< VOIP volume type */
- AUDIO_VOLUME_TYPE_VOICE, /**< Voice volume type */
- AUDIO_VOLUME_TYPE_FIXED, /**< Volume type for fixed acoustic level */
- AUDIO_VOLUME_TYPE_MAX, /**< Volume type count */
-} audio_volume_t;
-
-typedef enum audio_gain {
- AUDIO_GAIN_TYPE_DEFAULT,
- AUDIO_GAIN_TYPE_DIALER,
- AUDIO_GAIN_TYPE_TOUCH,
- AUDIO_GAIN_TYPE_AF,
- AUDIO_GAIN_TYPE_SHUTTER1,
- AUDIO_GAIN_TYPE_SHUTTER2,
- AUDIO_GAIN_TYPE_CAMCODING,
- AUDIO_GAIN_TYPE_MIDI,
- AUDIO_GAIN_TYPE_BOOTING,
- AUDIO_GAIN_TYPE_VIDEO,
- AUDIO_GAIN_TYPE_TTS,
- AUDIO_GAIN_TYPE_MAX,
-} audio_gain_t;
-
-/* audio format */
-typedef enum audio_sample_format {
- AUDIO_SAMPLE_U8,
- AUDIO_SAMPLE_ALAW,
- AUDIO_SAMPLE_ULAW,
- AUDIO_SAMPLE_S16LE,
- AUDIO_SAMPLE_S16BE,
- AUDIO_SAMPLE_FLOAT32LE,
- AUDIO_SAMPLE_FLOAT32BE,
- AUDIO_SAMPLE_S32LE,
- AUDIO_SAMPLE_S32BE,
- AUDIO_SAMPLE_S24LE,
- AUDIO_SAMPLE_S24BE,
- AUDIO_SAMPLE_S24_32LE,
- AUDIO_SAMPLE_S24_32BE,
- AUDIO_SAMPLE_MAX,
- AUDIO_SAMPLE_INVALID = -1
-} audio_sample_format_t;
-
-/* stream latency */
-static const char* AUDIO_LATENCY_LOW = "low";
-static const char* AUDIO_LATENCY_MID = "mid";
-static const char* AUDIO_LATENCY_HIGH = "high";
-static const char* AUDIO_LATENCY_VOIP = "voip";
-
/* Overall */
-
-typedef struct audio_cb_interface {
- audio_return_t (*load_device)(void *platform_data, audio_device_info_t *device_info, audio_device_param_info_t *params);
- audio_return_t (*open_device)(void *platform_data, audio_device_info_t *device_info, audio_device_param_info_t *params);
- audio_return_t (*close_all_devices)(void *platform_data);
- audio_return_t (*close_device)(void *platform_data, audio_device_info_t *device_info);
- audio_return_t (*unload_device)(void *platform_data, audio_device_info_t *device_info);
-} audio_cb_interface_t;
-
typedef struct audio_interface {
audio_return_t (*init)(void **userdata, void *platform_data);
audio_return_t (*deinit)(void **userdata);
- audio_return_t (*reset_volume)(void **userdata);
audio_return_t (*get_volume_level_max)(void *userdata, audio_volume_info_t *info, uint32_t *level);
audio_return_t (*get_volume_level)(void *userdata, audio_volume_info_t *info, uint32_t *level);
audio_return_t (*set_volume_level)(void *userdata, audio_volume_info_t *info, uint32_t level);
audio_return_t (*pcm_close)(void *userdata, void *pcm_handle);
audio_return_t (*pcm_avail)(void *pcm_handle);
audio_return_t (*pcm_write)(void *pcm_handle, const void *buffer, uint32_t frames);
- audio_return_t (*get_buffer_attr)(void *userdata, uint32_t direction, const char *latency, uint32_t samplerate, audio_sample_format_t format, uint32_t channels, uint32_t *maxlength, uint32_t *tlength, uint32_t *prebuf, uint32_t* minreq, uint32_t *fragsize);
- audio_return_t (*set_session)(void *userdata, uint32_t session, uint32_t subsession, uint32_t cmd);
+ audio_return_t (*get_buffer_attr)(void *userdata, uint32_t direction, const char *latency, uint32_t samplerate, int format, uint32_t channels, uint32_t *maxlength, uint32_t *tlength, uint32_t *prebuf, uint32_t* minreq, uint32_t *fragsize);
audio_return_t (*set_route)(void *userdata, uint32_t session, uint32_t subsession, uint32_t device_in, uint32_t device_out, uint32_t route_flag);
- audio_return_t (*set_callback)(void *userdata, audio_cb_interface_t *cb_interface);
} audio_interface_t;
-int audio_get_revision (void);
audio_return_t audio_init (void **userdata, void *platform_data);
audio_return_t audio_deinit (void **userdata);
-audio_return_t audio_reset_volume (void **userdata);
audio_return_t audio_get_volume_level_max (void *userdata, audio_volume_info_t *info, uint32_t *level);
audio_return_t audio_get_volume_level (void *userdata, audio_volume_info_t *info, uint32_t *level);
audio_return_t audio_set_volume_level (void *userdata, audio_volume_info_t *info, uint32_t level);
audio_return_t audio_pcm_close (void *userdata, void *pcm_handle);
audio_return_t audio_pcm_avail(void *pcm_handle);
audio_return_t audio_pcm_write(void *pcm_handle, const void *buffer, uint32_t frames);
-audio_return_t audio_get_buffer_attr(void *userdata, uint32_t direction, const char *latency, uint32_t samplerate, audio_sample_format_t format, uint32_t channels, uint32_t *maxlength, uint32_t *tlength, uint32_t *prebuf, uint32_t* minreq, uint32_t *fragsize);
-audio_return_t audio_set_session (void *userdata, uint32_t session, uint32_t subsession, uint32_t cmd);
+audio_return_t audio_get_buffer_attr(void *userdata, uint32_t direction, const char *latency, uint32_t samplerate, int format, uint32_t channels, uint32_t *maxlength, uint32_t *tlength, uint32_t *prebuf, uint32_t* minreq, uint32_t *fragsize);
audio_return_t audio_set_route (void *userdata, uint32_t session, uint32_t subsession, uint32_t device_in, uint32_t device_out, uint32_t route_flag);
-audio_return_t audio_set_callback (void *userdata, audio_cb_interface_t *cb_interface);
#endif
+++ /dev/null
-/***
- This file is part of PulseAudio.
-
- PulseAudio is free software; you can redistribute it and/or modify
- it under the terms of the GNU Lesser General Public License as published
- by the Free Software Foundation; either version 2.1 of the License,
- or (at your option) any later version.
-
- PulseAudio is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public License
- along with PulseAudio; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- USA.
-***/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <pulse/context.h>
-#include <pulse/gccmacro.h>
-#include <pulse/xmalloc.h>
-
-#include <pulsecore/macro.h>
-#include <pulsecore/pstream-util.h>
-
-#include "internal.h"
-#include "operation.h"
-#include "fork-detect.h"
-
-#include "ext-policy.h"
-
-enum {
- SUBCOMMAND_TEST,
- SUBCOMMAND_GET_VOLUME_LEVEL,
- SUBCOMMAND_SET_VOLUME_LEVEL,
- SUBCOMMAND_GET_MUTE,
- SUBCOMMAND_SET_MUTE,
-};
-
-static void ext_policy_test_cb(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_tagstruct *t, void *userdata) {
- pa_operation *o = userdata;
- uint32_t version = PA_INVALID_INDEX;
-
- pa_assert(pd);
- pa_assert(o);
- pa_assert(PA_REFCNT_VALUE(o) >= 1);
-
- if (!o->context)
- goto finish;
-
- if (command != PA_COMMAND_REPLY) {
- if (pa_context_handle_error(o->context, command, t, FALSE) < 0)
- goto finish;
-
- } else if (pa_tagstruct_getu32(t, &version) < 0 ||
- !pa_tagstruct_eof(t)) {
-
- pa_context_fail(o->context, PA_ERR_PROTOCOL);
- goto finish;
- }
-
- if (o->callback) {
- pa_ext_policy_test_cb_t cb = (pa_ext_policy_test_cb_t) o->callback;
- cb(o->context, version, o->userdata);
- }
-
-finish:
- pa_operation_done(o);
- pa_operation_unref(o);
-}
-
-pa_operation *pa_ext_policy_test(
- pa_context *c,
- pa_ext_device_manager_test_cb_t cb,
- void *userdata) {
-
- uint32_t tag;
- pa_operation *o;
- pa_tagstruct *t;
-
- pa_assert(c);
- pa_assert(PA_REFCNT_VALUE(c) >= 1);
-
- PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
- PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
- PA_CHECK_VALIDITY_RETURN_NULL(c, c->version >= 14, PA_ERR_NOTSUPPORTED);
-
- o = pa_operation_new(c, NULL, (pa_operation_cb_t) cb, userdata);
-
- t = pa_tagstruct_command(c, PA_COMMAND_EXTENSION, &tag);
- pa_tagstruct_putu32(t, PA_INVALID_INDEX);
- pa_tagstruct_puts(t, "module-policy");
- pa_tagstruct_putu32(t, SUBCOMMAND_TEST);
- pa_pstream_send_tagstruct(c->pstream, t);
- pa_pdispatch_register_reply(c->pdispatch, tag, DEFAULT_TIMEOUT, ext_policy_test_cb, pa_operation_ref(o), (pa_free_cb_t) pa_operation_unref);
-
- return o;
-}
-
-static void ext_policy_get_volume_level_cb(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_tagstruct *t, void *userdata)
-{
- pa_operation *o = userdata;
- uint32_t volume_level = 0;
-
- pa_assert(pd);
- pa_assert(o);
- pa_assert(PA_REFCNT_VALUE(o) >= 1);
-
- if (!o->context)
- goto finish;
-
- if (command != PA_COMMAND_REPLY) {
- if (pa_context_handle_error(o->context, command, t, FALSE) < 0)
- goto finish;
-
- } else {
- while (!pa_tagstruct_eof(t)) {
- if (pa_tagstruct_getu32(t, &volume_level) < 0) {
- pa_context_fail(o->context, PA_ERR_PROTOCOL);
- pa_log_error("get_volume_level : context fail");
- goto finish;
- }
- }
- }
-
- if (o->callback) {
- pa_ext_policy_get_volume_level_cb_t cb = (pa_ext_policy_get_volume_level_cb_t) o->callback;
- cb(o->context, volume_level, o->userdata);
- }
-
-finish:
- pa_operation_done(o);
- pa_operation_unref(o);
-}
-
-pa_operation *pa_ext_policy_get_volume_level (
- pa_context *c,
- uint32_t stream_idx,
- uint32_t volume_type,
- pa_ext_policy_get_volume_level_cb_t cb,
- void *userdata) {
-
- uint32_t tag;
- pa_operation *o = NULL;
- pa_tagstruct *t = NULL;
-
- pa_assert(c);
- pa_assert(PA_REFCNT_VALUE(c) >= 1);
-
- PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
- PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
- PA_CHECK_VALIDITY_RETURN_NULL(c, c->version >= 14, PA_ERR_NOTSUPPORTED);
-
- o = pa_operation_new(c, NULL, (pa_operation_cb_t) cb, userdata);
-
- t = pa_tagstruct_command(c, PA_COMMAND_EXTENSION, &tag);
- pa_tagstruct_putu32(t, PA_INVALID_INDEX);
- pa_tagstruct_puts(t, "module-policy");
- pa_tagstruct_putu32(t, SUBCOMMAND_GET_VOLUME_LEVEL);
-
- pa_tagstruct_putu32(t, stream_idx);
- pa_tagstruct_putu32(t, volume_type);
-
- pa_pstream_send_tagstruct(c->pstream, t);
- pa_pdispatch_register_reply(c->pdispatch, tag, DEFAULT_TIMEOUT, ext_policy_get_volume_level_cb, pa_operation_ref(o), (pa_free_cb_t) pa_operation_unref);
-
- return o;
-}
-
-pa_operation *pa_ext_policy_set_volume_level (
- pa_context *c,
- uint32_t stream_idx,
- uint32_t volume_type,
- uint32_t volume_level,
- pa_context_success_cb_t cb,
- void *userdata) {
-
- uint32_t tag;
- pa_operation *o = NULL;
- pa_tagstruct *t = NULL;
-
- pa_assert(c);
- pa_assert(PA_REFCNT_VALUE(c) >= 1);
-
- PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
- PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
- PA_CHECK_VALIDITY_RETURN_NULL(c, c->version >= 14, PA_ERR_NOTSUPPORTED);
-
- o = pa_operation_new(c, NULL, (pa_operation_cb_t) cb, userdata);
-
- t = pa_tagstruct_command(c, PA_COMMAND_EXTENSION, &tag);
- pa_tagstruct_putu32(t, PA_INVALID_INDEX);
- pa_tagstruct_puts(t, "module-policy");
- pa_tagstruct_putu32(t, SUBCOMMAND_SET_VOLUME_LEVEL);
-
- pa_tagstruct_putu32(t, stream_idx);
- pa_tagstruct_putu32(t, volume_type);
- pa_tagstruct_putu32(t, volume_level);
-
- pa_pstream_send_tagstruct(c->pstream, t);
- pa_pdispatch_register_reply(c->pdispatch, tag, DEFAULT_TIMEOUT, pa_context_simple_ack_callback, pa_operation_ref(o), (pa_free_cb_t) pa_operation_unref);
-
- return o;
-}
-
-static void ext_policy_get_mute_cb(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_tagstruct *t, void *userdata)
-{
- pa_operation *o = userdata;
- uint32_t mute = 0;
-
- pa_assert(pd);
- pa_assert(o);
- pa_assert(PA_REFCNT_VALUE(o) >= 1);
-
- if (!o->context)
- goto finish;
-
- if (command != PA_COMMAND_REPLY) {
- if (pa_context_handle_error(o->context, command, t, FALSE) < 0)
- goto finish;
-
- } else {
- while (!pa_tagstruct_eof(t)) {
- if (pa_tagstruct_getu32(t, &mute) < 0) {
- pa_context_fail(o->context, PA_ERR_PROTOCOL);
- pa_log_error("get_mute : context fail");
- goto finish;
- }
- }
- }
-
- if (o->callback) {
- pa_ext_policy_get_mute_cb_t cb = (pa_ext_policy_get_mute_cb_t) o->callback;
- cb(o->context, mute, o->userdata);
- }
-
-finish:
- pa_operation_done(o);
- pa_operation_unref(o);
-}
-
-pa_operation *pa_ext_policy_get_mute (
- pa_context *c,
- uint32_t stream_idx,
- uint32_t volume_type,
- uint32_t direction,
- pa_ext_policy_get_mute_cb_t cb,
- void *userdata) {
-
- uint32_t tag;
- pa_operation *o = NULL;
- pa_tagstruct *t = NULL;
-
- pa_assert(c);
- pa_assert(PA_REFCNT_VALUE(c) >= 1);
-
- PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
- PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
- PA_CHECK_VALIDITY_RETURN_NULL(c, c->version >= 14, PA_ERR_NOTSUPPORTED);
-
- o = pa_operation_new(c, NULL, (pa_operation_cb_t) cb, userdata);
-
- t = pa_tagstruct_command(c, PA_COMMAND_EXTENSION, &tag);
- pa_tagstruct_putu32(t, PA_INVALID_INDEX);
- pa_tagstruct_puts(t, "module-policy");
- pa_tagstruct_putu32(t, SUBCOMMAND_GET_MUTE);
-
- pa_tagstruct_putu32(t, stream_idx);
- pa_tagstruct_putu32(t, volume_type);
- pa_tagstruct_putu32(t, direction);
-
- pa_pstream_send_tagstruct(c->pstream, t);
- pa_pdispatch_register_reply(c->pdispatch, tag, DEFAULT_TIMEOUT, ext_policy_get_mute_cb, pa_operation_ref(o), (pa_free_cb_t) pa_operation_unref);
-
- return o;
-}
-
-pa_operation *pa_ext_policy_set_mute (
- pa_context *c,
- uint32_t stream_idx,
- uint32_t volume_type,
- uint32_t direction,
- uint32_t mute,
- pa_context_success_cb_t cb,
- void *userdata) {
-
- uint32_t tag;
- pa_operation *o = NULL;
- pa_tagstruct *t = NULL;
-
- pa_assert(c);
- pa_assert(PA_REFCNT_VALUE(c) >= 1);
-
- PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
- PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
- PA_CHECK_VALIDITY_RETURN_NULL(c, c->version >= 14, PA_ERR_NOTSUPPORTED);
-
- o = pa_operation_new(c, NULL, (pa_operation_cb_t) cb, userdata);
-
- t = pa_tagstruct_command(c, PA_COMMAND_EXTENSION, &tag);
- pa_tagstruct_putu32(t, PA_INVALID_INDEX);
- pa_tagstruct_puts(t, "module-policy");
- pa_tagstruct_putu32(t, SUBCOMMAND_SET_MUTE);
-
- pa_tagstruct_putu32(t, stream_idx);
- pa_tagstruct_putu32(t, volume_type);
- pa_tagstruct_putu32(t, direction);
- pa_tagstruct_putu32(t, mute);
-
- pa_pstream_send_tagstruct(c->pstream, t);
- pa_pdispatch_register_reply(c->pdispatch, tag, DEFAULT_TIMEOUT, pa_context_simple_ack_callback, pa_operation_ref(o), (pa_free_cb_t) pa_operation_unref);
-
- return o;
-}
-
+++ /dev/null
-#ifndef foopulseextpolicyhfoo
-#define foopulseextpolicyhfoo
-
-/***
- This file is part of PulseAudio.
-
- PulseAudio is free software; you can redistribute it and/or modify
- it under the terms of the GNU Lesser General Public License as published
- by the Free Software Foundation; either version 2.1 of the License,
- or (at your option) any later version.
-
- PulseAudio is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public License
- along with PulseAudio; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- USA.
-***/
-
-#include <pulse/context.h>
-#include <pulse/version.h>
-
-/** \file
- *
- * Routines for controlling module-policy
- */
-
-PA_C_DECL_BEGIN
-
-typedef enum {
- PA_TIZEN_SESSION_MEDIA,
- PA_TIZEN_SESSION_VOICECALL,
- PA_TIZEN_SESSION_VIDEOCALL,
- PA_TIZEN_SESSION_VOIP,
- PA_TIZEN_SESSION_FMRADIO,
- PA_TIZEN_SESSION_CAMCORDER,
- PA_TIZEN_SESSION_NOTIFICATION,
- PA_TIZEN_SESSION_ALARM,
- PA_TIZEN_SESSION_EMERGENCY,
- PA_TIZEN_SESSION_VOICE_RECOGNITION,
- PA_TIZEN_SESSION_MAX
-} pa_tizen_session_t;
-
-typedef enum {
- PA_TIZEN_SUBSESSION_NONE,
- PA_TIZEN_SUBSESSION_VOICE,
- PA_TIZEN_SUBSESSION_RINGTONE,
- PA_TIZEN_SUBSESSION_MEDIA,
- PA_TIZEN_SUBSESSION_VR_INIT,
- PA_TIZEN_SUBSESSION_VR_NORMAL,
- PA_TIZEN_SUBSESSION_VR_DRIVE,
- PA_TIZEN_SUBSESSION_STEREO_REC,
- PA_TIZEN_SUBSESSION_MONO_REC,
- PA_TIZEN_SUBSESSION_MAX
-} pa_tizen_subsession_t;
-
-typedef enum {
- PA_TIZEN_DEVICE_IN_NONE,
- PA_TIZEN_DEVICE_IN_MIC, /**< Device builtin mic. */
- PA_TIZEN_DEVICE_IN_WIRED_ACCESSORY, /**< Wired input devices */
- PA_TIZEN_DEVICE_IN_BT_SCO, /**< Bluetooth SCO device */
-} pa_tizen_device_in_t;
-
-typedef enum pa_tizen_device_out {
- PA_TIZEN_DEVICE_OUT_NONE,
- PA_TIZEN_DEVICE_OUT_SPEAKER, /**< Device builtin speaker */
- PA_TIZEN_DEVICE_OUT_RECEIVER, /**< Device builtin receiver */
- PA_TIZEN_DEVICE_OUT_WIRED_ACCESSORY, /**< Wired output devices such as headphone, headset, and so on. */
- PA_TIZEN_DEVICE_OUT_BT_SCO, /**< Bluetooth SCO device */
- PA_TIZEN_DEVICE_OUT_BT_A2DP, /**< Bluetooth A2DP device */
- PA_TIZEN_DEVICE_OUT_DOCK, /**< DOCK device */
- PA_TIZEN_DEVICE_OUT_HDMI, /**< HDMI device */
- PA_TIZEN_DEVICE_OUT_MIRRORING, /**< MIRRORING device */
- PA_TIZEN_DEVICE_OUT_USB_AUDIO, /**< USB Audio device */
- PA_TIZEN_DEVICE_OUT_MULTIMEDIA_DOCK, /**< Multimedia DOCK device */
-} pa_tizen_device_out_t;
-
-typedef enum pa_tizen_volume_type {
- PA_TIZEN_VOLUME_TYPE_SYSTEM, /**< System volume type */
- PA_TIZEN_VOLUME_TYPE_NOTIFICATION, /**< Notification volume type */
- PA_TIZEN_VOLUME_TYPE_ALARM, /**< Alarm volume type */
- PA_TIZEN_VOLUME_TYPE_RINGTONE, /**< Ringtone volume type */
- PA_TIZEN_VOLUME_TYPE_MEDIA, /**< Media volume type */
- PA_TIZEN_VOLUME_TYPE_CALL, /**< Call volume type */
- PA_TIZEN_VOLUME_TYPE_VOIP, /**< VOIP volume type */
- PA_TIZEN_VOLUME_TYPE_VOICE, /**< VOICE volume type */
- PA_TIZEN_VOLUME_TYPE_FIXED, /**< Volume type for fixed acoustic level */
- PA_TIZEN_VOLUME_TYPE_MAX, /**< Volume type count */
- PA_TIZEN_VOLUME_TYPE_DEFAULT = PA_TIZEN_VOLUME_TYPE_SYSTEM,
-} pa_tizen_volume_type_t;
-
-typedef enum pa_tizen_gain_type {
- PA_TIZEN_GAIN_TYPE_DEFAULT,
- PA_TIZEN_GAIN_TYPE_DIALER,
- PA_TIZEN_GAIN_TYPE_TOUCH,
- PA_TIZEN_GAIN_TYPE_AF,
- PA_TIZEN_GAIN_TYPE_SHUTTER1,
- PA_TIZEN_GAIN_TYPE_SHUTTER2,
- PA_TIZEN_GAIN_TYPE_CAMCODING,
- PA_TIZEN_GAIN_TYPE_MIDI,
- PA_TIZEN_GAIN_TYPE_BOOTING,
- PA_TIZEN_GAIN_TYPE_VIDEO,
- PA_TIZEN_GAIN_TYPE_MAX,
-} pa_tizen_gain_type_t;
-
-#define PA_TIZEN_VOLUME_TYPE_LEVEL_MAX 15
-
-/** Callback prototype for pa_ext_policy_test(). \since 0.9.21 */
-typedef void (*pa_ext_policy_test_cb_t)(
- pa_context *c,
- uint32_t version,
- void *userdata);
-
-/** Test if this extension module is available in the server. \since 0.9.21 */
-pa_operation *pa_ext_policy_test(
- pa_context *c,
- pa_ext_policy_test_cb_t cb,
- void *userdata);
-
-/** Callback prototype for pa_ext_policy_get_volume_level(). \since 0.9.21 */
-typedef void (*pa_ext_policy_get_volume_level_cb_t)(
- pa_context *c,
- uint32_t volume_level,
- void *userdata);
-
-pa_operation *pa_ext_policy_get_volume_level (
- pa_context *c,
- uint32_t stream_idx,
- uint32_t volume_type,
- pa_ext_policy_get_volume_level_cb_t cb,
- void *userdata);
-
-pa_operation *pa_ext_policy_set_volume_level (
- pa_context *c,
- uint32_t stream_idx,
- uint32_t volume_type,
- uint32_t volume_level,
- pa_context_success_cb_t cb,
- void *userdata);
-
-/** Callback prototype for pa_ext_policy_get_mute(). \since 0.9.21 */
-typedef void (*pa_ext_policy_get_mute_cb_t)(
- pa_context *c,
- uint32_t mute,
- void *userdata);
-
-pa_operation *pa_ext_policy_get_mute (
- pa_context *c,
- uint32_t stream_idx,
- uint32_t volume_type,
- uint32_t direction,
- pa_ext_policy_get_mute_cb_t cb,
- void *userdata);
-
-pa_operation *pa_ext_policy_set_mute (
- pa_context *c,
- uint32_t stream_idx,
- uint32_t volume_type,
- uint32_t direction,
- uint32_t mute,
- pa_context_success_cb_t cb,
- void *userdata);
-
-PA_C_DECL_END
-
-#endif
#include <stdlib.h>
#ifdef __TIZEN__
#include <time.h>
-#include "tizen-audio.h"
#endif
#include <pulse/utf8.h>