[vlc-devel] patch to convert the duplicate module from single threaded to multithreaded

Ilkka Ollakka ileoo at porogrammer.org
Sun Sep 2 18:55:55 CEST 2012

On Sat, Sep 01, 2012 at 06:54:54PM +0200, Sergio M. Ammirata, Ph.D. wrote:
> The following patch will change the behavior of the duplicate module of the
> stream output chain so that each output is on a different thread. This
> solves the problem that happens when you have two outputs and one of them
> calls a blocking network call for example, i.e. the other one is blocked as
> well.

Hi, thanks for sending this, few questions inline

> +static void *Thread(void *data)
> +{
> +    const struct duplicate *d = data;
> +    for (;;) {
> +        const size_t s = sizeof(void*);
> +        block_t *block = block_FifoGet(d->fifo);
> +        if (!block)
> +            break;

> +        void **sid = (void**)(((uintptr_t)block->p_buffer + block->i_buffer + s) & ~s);
> +        sout_stream_id_t *id = *sid;

Is this really good way to get sout_stream_id_t ? If I read this correctly,
you use only one thread to handle StreamIdSend-stuff? Why not own thread for 
every duplicate. And why not pass that id in struct duplicate then.

Ilkka Ollakka

More information about the vlc-devel mailing list