Changeset bee5349 in mainline


Ignore:
Timestamp:
2013-04-11T21:32:28Z (11 years ago)
Author:
Jan Vesely <jano.vesely@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
4eff63c
Parents:
d1f144a
Message:

hound: add data available callback

Location:
uspace/srv/audio/hound
Files:
6 edited

Legend:

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

    rd1f144a rbee5349  
    8383
    8484        audio_sink_init(&dev->sink, name, dev, device_sink_connection_callback,
    85             device_check_format, &AUDIO_FORMAT_ANY);
     85            device_check_format, NULL, &AUDIO_FORMAT_ANY);
    8686        audio_source_init(&dev->source, name, dev,
    8787            device_source_connection_callback, NULL, &AUDIO_FORMAT_ANY);
  • uspace/srv/audio/hound/audio_sink.c

    rd1f144a rbee5349  
    4949 * @param sink The structure to initialize.
    5050 * @param name string identifier
    51  * @param private_data backa
     51 * @param private_data backend data
     52 * @param connection_change connect/disconnect callback
     53 * @param check_format format testing callback
     54 * @param data_available trigger data prcoessing
     55 * @param f sink format
     56 * @return Error code.
    5257 */
    53 int audio_sink_init(audio_sink_t *sink, const char *name,
    54     void *private_data, int (*connection_change)(audio_sink_t *, bool),
    55     int (*check_format)(audio_sink_t *sink), const pcm_format_t *f)
     58int audio_sink_init(audio_sink_t *sink, const char *name, void *private_data,
     59    int (*connection_change)(audio_sink_t *, bool),
     60    int (*check_format)(audio_sink_t *), int (*data_available)(audio_sink_t *),
     61    const pcm_format_t *f)
    5662{
    5763        assert(sink);
     
    6773        sink->connection_change = connection_change;
    6874        sink->check_format = check_format;
     75        sink->data_available = data_available;
    6976        log_verbose("Initialized sink (%p) '%s'", sink, sink->name);
    7077        return EOK;
  • uspace/srv/audio/hound/audio_sink.h

    rd1f144a rbee5349  
    6363        /** Backend callback to check data */
    6464        int (*check_format)(audio_sink_t *);
     65        /** new data notifier */
     66        int (*data_available)(audio_sink_t *);
    6567};
    6668
     
    7577}
    7678
    77 int audio_sink_init(audio_sink_t *sink, const char *name,
    78     void *private_data, int (*connection_change)(audio_sink_t *, bool),
    79     int (*check_format)(audio_sink_t *), const pcm_format_t *f);
     79int audio_sink_init(audio_sink_t *sink, const char *name, void *private_data,
     80    int (*connection_change)(audio_sink_t *, bool),
     81    int (*check_format)(audio_sink_t *), int (*data_available)(audio_sink_t *),
     82    const pcm_format_t *f);
    8083
    8184void audio_sink_fini(audio_sink_t *sink);
  • uspace/srv/audio/hound/connection.c

    rd1f144a rbee5349  
    123123        return ret > 0 ? EOK : ret;
    124124}
     125/**
     126 * Add new data to the connection buffer.
     127 * @param connection Target conneciton.
     128 * @aparam adata Reference counted audio data buffer.
     129 * @return Error code.
     130 */
     131int connection_push_data(connection_t *connection,
     132    audio_data_t *adata)
     133{
     134        assert(connection);
     135        assert(adata);
     136        const int ret = audio_pipe_push(&connection->fifo, adata);
     137        if (ret == EOK && connection->sink->data_available)
     138                connection->sink->data_available(connection->sink);
     139        return ret;
     140}
    125141
    126142/**
  • uspace/srv/audio/hound/connection.h

    rd1f144a rbee5349  
    9797    size_t size, pcm_format_t format);
    9898
    99 /**
    100  * Add new data to the connection buffer.
    101  * @param connection Target conneciton.
    102  * @aparam adata Reference counted audio data buffer.
    103  * @return Error code.
    104  */
    105 static inline int connection_push_data(connection_t *connection,
    106     audio_data_t *adata)
    107 {
    108         assert(connection);
    109         assert(adata);
    110         return audio_pipe_push(&connection->fifo, adata);
    111 }
     99int connection_push_data(connection_t *connection, audio_data_t *adata);
    112100
    113101/**
  • uspace/srv/audio/hound/hound_ctx.c

    rd1f144a rbee5349  
    6767                // TODO provide sink functions
    6868                const int ret = audio_sink_init(ctx->sink, name, ctx, NULL,
    69                     NULL, &AUDIO_FORMAT_DEFAULT);
     69                    NULL, NULL, &AUDIO_FORMAT_DEFAULT);
    7070                if (ret != EOK) {
    7171                        free(ctx->sink);
Note: See TracChangeset for help on using the changeset viewer.