~ubuntu-branches/ubuntu/wily/bluez/wily

« back to all changes in this revision

Viewing changes to audio/gsta2dpsink.c

ImportĀ upstreamĀ versionĀ 4.81

Show diffs side-by-side

added added

removed removed

Lines of Context:
2
2
 *
3
3
 *  BlueZ - Bluetooth protocol stack for Linux
4
4
 *
5
 
 *  Copyright (C) 2004-2009  Marcel Holtmann <marcel@holtmann.org>
 
5
 *  Copyright (C) 2004-2010  Marcel Holtmann <marcel@holtmann.org>
6
6
 *
7
7
 *
8
8
 *  This library is free software; you can redistribute it and/or
28
28
#include <unistd.h>
29
29
#include <pthread.h>
30
30
 
 
31
#include "gstpragma.h"
31
32
#include "gsta2dpsink.h"
32
33
 
33
34
GType gst_avdtp_sink_get_type(void);
43
44
enum {
44
45
        PROP_0,
45
46
        PROP_DEVICE,
46
 
        PROP_AUTOCONNECT
 
47
        PROP_AUTOCONNECT,
 
48
        PROP_TRANSPORT
47
49
};
48
50
 
49
51
GST_BOILERPLATE(GstA2dpSink, gst_a2dp_sink, GstBin, GST_TYPE_BIN);
143
145
        return NULL;
144
146
 
145
147
cleanup_and_fail:
146
 
        if (element != NULL)
147
 
                g_object_unref(G_OBJECT(element));
 
148
        g_object_unref(G_OBJECT(element));
148
149
 
149
150
        return NULL;
150
151
}
175
176
                self->device = g_value_dup_string(value);
176
177
                break;
177
178
 
 
179
        case PROP_TRANSPORT:
 
180
                if (self->sink != NULL)
 
181
                        gst_avdtp_sink_set_transport(self->sink,
 
182
                                g_value_get_string(value));
 
183
 
 
184
                if (self->transport != NULL)
 
185
                        g_free(self->transport);
 
186
                self->transport = g_value_dup_string(value);
 
187
                break;
 
188
 
178
189
        case PROP_AUTOCONNECT:
179
190
                self->autoconnect = g_value_get_boolean(value);
180
191
 
193
204
                                        GValue *value, GParamSpec *pspec)
194
205
{
195
206
        GstA2dpSink *self = GST_A2DP_SINK(object);
196
 
        gchar *device;
 
207
        gchar *device, *transport;
197
208
 
198
209
        switch (prop_id) {
199
210
        case PROP_DEVICE:
210
221
 
211
222
                g_value_set_boolean(value, self->autoconnect);
212
223
                break;
 
224
        case PROP_TRANSPORT:
 
225
                if (self->sink != NULL) {
 
226
                        transport = gst_avdtp_sink_get_transport(self->sink);
 
227
                        if (transport != NULL)
 
228
                                g_value_take_string(value, transport);
 
229
                }
 
230
                break;
213
231
        default:
214
232
                G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
215
233
                break;
285
303
                        gst_avdtp_sink_set_device(self->sink,
286
304
                                        self->device);
287
305
 
 
306
                if (self->transport != NULL)
 
307
                        gst_avdtp_sink_set_transport(self->sink,
 
308
                                        self->transport);
 
309
 
288
310
                g_object_set(G_OBJECT(self->sink), "auto-connect",
289
311
                                        self->autoconnect, NULL);
290
312
 
365
387
                        "Automatically attempt to connect to device",
366
388
                        DEFAULT_AUTOCONNECT, G_PARAM_READWRITE));
367
389
 
 
390
        g_object_class_install_property(object_class, PROP_TRANSPORT,
 
391
                        g_param_spec_string("transport", "Transport",
 
392
                        "Use configured transport",
 
393
                        NULL, G_PARAM_READWRITE));
 
394
 
368
395
        GST_DEBUG_CATEGORY_INIT(gst_a2dp_sink_debug, "a2dpsink", 0,
369
396
                                "A2DP sink element");
370
397
}
437
464
        self->sink = GST_AVDTP_SINK(sink);
438
465
        self->sink_is_in_bin = TRUE;
439
466
        g_object_set(G_OBJECT(self->sink), "device", self->device, NULL);
 
467
        g_object_set(G_OBJECT(self->sink), "transport", self->transport, NULL);
440
468
 
441
469
        gst_element_set_state(sink, GST_STATE_PAUSED);
442
470
 
674
702
        self->fakesink = NULL;
675
703
        self->rtp = NULL;
676
704
        self->device = NULL;
 
705
        self->transport = NULL;
677
706
        self->autoconnect = DEFAULT_AUTOCONNECT;
678
707
        self->capsfilter = NULL;
679
708
        self->newseg_event = NULL;
698
727
gboolean gst_a2dp_sink_plugin_init(GstPlugin *plugin)
699
728
{
700
729
        return gst_element_register(plugin, "a2dpsink",
701
 
                        GST_RANK_PRIMARY, GST_TYPE_A2DP_SINK);
 
730
                        GST_RANK_MARGINAL, GST_TYPE_A2DP_SINK);
702
731
}
703
732