4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
6 * Contact: JongHyuk Choi <jhchoi.choi@samsung.com>
8 * This library is free software; you can redistribute it and/or modify it under
9 * the terms of the GNU Lesser General Public License as published by the
10 * Free Software Foundation; either version 2.1 of the License, or (at your option)
13 * This library is distributed in the hope that it will be useful, but WITHOUT ANY
14 * WARRANTY; without even the implied warranty of MERCHANTABILITY or
15 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
16 * License for more details.
18 * You should have received a copy of the GNU Lesser General Public License
19 * along with this library; if not, write to the Free Software Foundation, Inc., 51
20 * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
25 #ifndef __GST_AVSYSAUDIOSINK_H__
26 #define __GST_AVSYSAUDIOSINK_H__
29 #include <gst/audio/gstaudiosink.h>
31 #include <avsys-audio.h>
35 #define GST_TYPE_AVSYS_AUDIO_SINK (gst_avsysaudiosink_get_type())
36 #define GST_AVSYS_AUDIO_SINK(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_AVSYS_AUDIO_SINK,GstAvsysAudioSink))
37 #define GST_AVSYS_AUDIO_SINK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_AVSYS_AUDIO_SINK,GstAvsysAudioSinkClass))
38 #define GST_IS_AVSYS_AUDIO_SINK(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_AVSYS_AUDIO_SINK))
39 #define GST_IS_AVSYS_AUDIO_SINK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_AVSYS_AUDIO_SINK))
40 //#define GST_AVSYS_AUDIO_SINK_CAST(obj) ((GstAvsysAudioSink *) (obj))
42 typedef struct _GstAvsysAudioSink GstAvsysAudioSink;
43 typedef struct _GstAvsysAudioSinkClass GstAvsysAudioSinkClass;
45 #define GST_AVSYS_AUDIO_SINK_GET_LOCK(obj) (GST_AVSYS_AUDIO_SINK (obj)->avsys_audio_lock)
46 #define GST_AVSYS_AUDIO_SINK_LOCK(obj) (g_mutex_lock (GST_AVSYS_AUDIO_SINK_GET_LOCK(obj)))
47 #define GST_AVSYS_AUDIO_SINK_UNLOCK(obj) (g_mutex_unlock (GST_AVSYS_AUDIO_SINK_GET_LOCK(obj)))
49 #define GST_AVSYS_AUDIO_SINK_GET_RESET_LOCK(obj) (GST_AVSYS_AUDIO_SINK (obj)->avsys_audio_reset_lock)
50 #define GST_AVSYS_AUDIO_SINK_RESET_LOCK(obj) (g_mutex_lock (GST_AVSYS_AUDIO_SINK_GET_RESET_LOCK(obj)))
51 #define GST_AVSYS_AUDIO_SINK_RESET_UNLOCK(obj) (g_mutex_unlock (GST_AVSYS_AUDIO_SINK_GET_RESET_LOCK(obj)))
55 AVSYSAUDIOSINK_AUDIO_UNMUTE = 0,
56 AVSYSAUDIOSINK_AUDIO_MUTE,
57 AVSYSAUDIOSINK_AUDIO_MUTE_WITH_FADEDOWN_EFFECT,
58 }GstAvsysAudioSinkAudioMute;
62 AVSYSAUDIOSINK_AUDIOROUTE_USE_EXTERNAL_SETTING = -1,
63 AVSYSAUDIOSINK_AUDIOROUTE_PLAYBACK_NORMAL,
64 AVSYSAUDIOSINK_AUDIOROUTE_PLAYBACK_ALERT,
65 AVSYSAUDIOSINK_AUDIOROUTE_PLAYBACK_HEADSET_ONLY
66 }GstAvsysAudioSinkAudioRoutePolicy;
70 AVSYSAUDIOSINK_USERROUTE_AUTO = 0,
71 AVSYSAUDIOSINK_USERROUTE_PHONE
72 }GstAvsysAudioSinkUserRoutePolicy;
75 AVSYSAUDIOSINK_LATENCY_LOW = 0,
76 AVSYSAUDIOSINK_LATENCY_MID,
77 AVSYSAUDIOSINK_LATENCY_HIGH,
78 }GstAvsysAudioSinkLatency;
80 #define GST_AVSYS_AUDIO_SINK_USER_ROUTE (gst_avsysaudiosink_user_route_get_type ())
81 #define GST_AVSYS_AUDIO_SINK_AUDIO_ROUTE (gst_avsysaudiosink_audio_route_get_type ())
82 #define GST_AVSYS_AUDIO_SINK_VOLUME_TABLE (gst_avsysaudiosink_volume_table_get_type ())
83 #define GST_AVSYS_AUDIO_SINK_VOLUME_TYPE (gst_avsysaudiosink_volume_table_get_type ())
84 #define GST_AVSYS_AUDIO_SINK_MUTE (gst_avsysaudiosink_audio_mute_get_type())
85 #define GST_AVSYS_AUDIO_SINK_LATENCY_TYPE (gst_avsysaudiosink_latency_get_type ())
87 //this define if for debugging
88 //#define LPCM_DUMP_SUPPORT
89 struct _GstAvsysAudioSink {
92 avsys_handle_t audio_handle;
93 avsys_audio_param_t audio_param;
96 gint use_fadeup_volume;
97 gint audio_route_policy;
98 gint user_route_policy;
101 GstCaps *cached_caps;
103 GMutex *avsys_audio_lock;
104 GMutex *avsys_audio_reset_lock;
108 gint bytes_per_sample;
111 gboolean (*audio_stream_cb) (void *stream, int stream_size, void *user_param);
115 struct _GstAvsysAudioSinkClass {
116 GstAudioSinkClass parent_class;
119 GType gst_avsysaudiosink_get_type (void);
120 GType gst_avsysaudiosink_audio_route_get_type (void);
121 GType gst_avsysaudiosink_volume_table_get_type (void);
122 GType gst_avsysaudiosink_audio_mute_get_type(void);
123 GType gst_avsysaudiosink_latency_get_type (void);
127 #endif /* __GST_AVSYSAUDIOSINK_H__ */