Changeset fa60cd69 in mainline for uspace/srv/audio/hound/audio_sink.c


Ignore:
Timestamp:
2013-04-02T19:06:27Z (11 years ago)
Author:
Jan Vesely <jano.vesely@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
35ab943
Parents:
39c4d1f
Message:

hound: add connection class

This will enable N to M routing in the future

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/audio/hound/audio_sink.c

    r39c4d1f rfa60cd69  
    4141
    4242#include "audio_sink.h"
     43#include "connection.h"
    4344#include "log.h"
    4445
     
    5455        }
    5556        link_initialize(&sink->link);
    56         list_initialize(&sink->sources);
     57        list_initialize(&sink->connections);
    5758        sink->name = str_dup(name);
    5859        sink->private_data = private_data;
     
    6768{
    6869        assert(sink);
     70        assert(list_empty(&sink->connections));
    6971        assert(!sink->private_data);
    7072        free(sink->name);
     
    7274}
    7375
     76#if 0
    7477int audio_sink_add_source(audio_sink_t *sink, audio_source_t *source)
    7578{
     
    9295
    9396        audio_source_connected(source, sink);
    94 
    9597        if (sink->connection_change) {
    9698                log_verbose("Calling connection change");
     
    98100                if (ret != EOK) {
    99101                        log_debug("Connection hook failed.");
    100                         audio_source_connected(source, NULL);
    101                         list_remove(&source->link);
    102                         sink->format = old_format;
     102        //              audio_source_connected(source, NULL);
     103        //              list_remove(&source->link);
     104//                      sink->format = old_format;
    103105                        return ret;
    104106                }
     
    109111        return EOK;
    110112}
     113#endif
    111114
    112115int audio_sink_set_format(audio_sink_t *sink, const pcm_format_t *format)
     
    118121                return EEXISTS;
    119122        }
    120         const pcm_format_t old_format;
     123        const pcm_format_t old_format = sink->format;
    121124
    122125        if (pcm_format_is_any(format)) {
     
    140143}
    141144
     145#if 0
    142146int audio_sink_remove_source(audio_sink_t *sink, audio_source_t *source)
    143147{
     
    157161        return EOK;
    158162}
     163#endif
    159164
    160165
     
    165170
    166171        pcm_format_silence(dest, size, &sink->format);
    167         list_foreach(sink->sources, it) {
    168                 audio_source_t *source = audio_source_list_instance(it);
    169                 const int ret =
    170                     audio_source_add_self(source, dest, size, &sink->format);
     172        list_foreach(sink->connections, it) {
     173                connection_t * conn = connection_from_sink_list(it);
     174                const int ret = connection_add_source_data(
     175                    conn, dest, size, sink->format);
    171176                if (ret != EOK) {
    172                         log_warning("Failed to mix source %s: %s",
    173                             source->name, str_error(ret));
     177                        log_warning("Failed to add source %s: %s",
     178                            connection_source_name(conn), str_error(ret));
    174179                }
    175180        }
Note: See TracChangeset for help on using the changeset viewer.