mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-11-05 13:29:57 -05:00
* modify pa_channel_map_init_auto() to take an extra argument specifying the standard to use (ALSA, AIFF, ...)
* add some more validity checks to pa_source_new(),pa_sink_new(),pa_sink_input_new(),pa_source_output_new() git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@888 fefdeb5f-60dc-0310-8127-8f9354f1896f
This commit is contained in:
parent
c63cc7bb79
commit
4b6ab291a7
27 changed files with 237 additions and 191 deletions
|
|
@ -29,6 +29,7 @@
|
|||
#include <stdio.h>
|
||||
|
||||
#include <polyp/introspect.h>
|
||||
|
||||
#include <polypcore/sink-input.h>
|
||||
#include <polypcore/namereg.h>
|
||||
#include <polypcore/util.h>
|
||||
|
|
@ -36,29 +37,46 @@
|
|||
#include <polypcore/xmalloc.h>
|
||||
#include <polypcore/core-subscribe.h>
|
||||
#include <polypcore/log.h>
|
||||
#include <polypcore/utf8.h>
|
||||
|
||||
#include "sink.h"
|
||||
|
||||
#define MAX_MIX_CHANNELS 32
|
||||
|
||||
#define CHECK_VALIDITY_RETURN_NULL(condition) \
|
||||
do {\
|
||||
if (!(condition)) \
|
||||
return NULL; \
|
||||
} while (0)
|
||||
|
||||
pa_sink* pa_sink_new(
|
||||
pa_core *core,
|
||||
const char *driver,
|
||||
const char *name,
|
||||
int fail,
|
||||
const pa_sample_spec *spec,
|
||||
const pa_channel_map *map) {
|
||||
pa_core *core,
|
||||
const char *driver,
|
||||
const char *name,
|
||||
int fail,
|
||||
const pa_sample_spec *spec,
|
||||
const pa_channel_map *map) {
|
||||
|
||||
pa_sink *s;
|
||||
char *n = NULL;
|
||||
char st[256];
|
||||
int r;
|
||||
pa_channel_map tmap;
|
||||
|
||||
assert(core);
|
||||
assert(name);
|
||||
assert(*name);
|
||||
assert(spec);
|
||||
|
||||
CHECK_VALIDITY_RETURN_NULL(pa_sample_spec_valid(spec));
|
||||
|
||||
if (!map)
|
||||
map = pa_channel_map_init_auto(&tmap, spec->channels, PA_CHANNEL_MAP_DEFAULT);
|
||||
|
||||
CHECK_VALIDITY_RETURN_NULL(map && pa_channel_map_valid(map));
|
||||
CHECK_VALIDITY_RETURN_NULL(map->channels == spec->channels);
|
||||
CHECK_VALIDITY_RETURN_NULL(!driver || pa_utf8_valid(driver));
|
||||
CHECK_VALIDITY_RETURN_NULL(pa_utf8_valid(name) && *name);
|
||||
|
||||
s = pa_xnew(pa_sink, 1);
|
||||
|
||||
if (!(name = pa_namereg_register(core, name, PA_NAMEREG_SINK, s, fail))) {
|
||||
|
|
@ -75,10 +93,7 @@ pa_sink* pa_sink_new(
|
|||
s->owner = NULL;
|
||||
|
||||
s->sample_spec = *spec;
|
||||
if (map)
|
||||
s->channel_map = *map;
|
||||
else
|
||||
pa_channel_map_init_auto(&s->channel_map, spec->channels);
|
||||
s->channel_map = *map;
|
||||
|
||||
s->inputs = pa_idxset_new(NULL, NULL);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue