int av_thread_message_queue_alloc(AVThreadMessageQueue **mq,

                                  unsigned nelem,

                                  unsigned elsize)

{

#if HAVE_THREADS

    AVThreadMessageQueue *rmq;

    int ret = 0;



    if (nelem > INT_MAX / elsize)

        return AVERROR(EINVAL);

    if (!(rmq = av_mallocz(sizeof(*rmq))))

        return AVERROR(ENOMEM);

    if ((ret = pthread_mutex_init(&rmq->lock, NULL))) {

        av_free(rmq);

        return AVERROR(ret);

    }

    if ((ret = pthread_cond_init(&rmq->cond, NULL))) {

        pthread_mutex_destroy(&rmq->lock);

        av_free(rmq);

        return AVERROR(ret);

    }

    if (!(rmq->fifo = av_fifo_alloc(elsize * nelem))) {

        pthread_cond_destroy(&rmq->cond);

        pthread_mutex_destroy(&rmq->lock);

        av_free(rmq);

        return AVERROR(ret);

    }

    rmq->elsize = elsize;

    *mq = rmq;

    return 0;

#else

    *mq = NULL;

    return AVERROR(ENOSYS);

#endif /* HAVE_THREADS */

}

int av_thread_message_queue_alloc(AVThreadMessageQueue **mq,

                                  unsigned nelem,

                                  unsigned elsize)

{

#if HAVE_THREADS

    AVThreadMessageQueue *rmq;

    int ret = 0;



    if (nelem > INT_MAX / elsize)

        return AVERROR(EINVAL);

    if (!(rmq = av_mallocz(sizeof(*rmq))))

        return AVERROR(ENOMEM);

    if ((ret = pthread_mutex_init(&rmq->lock, NULL))) {

        av_free(rmq);

        return AVERROR(ret);

    }

    if ((ret = pthread_cond_init(&rmq->cond, NULL))) {

        pthread_mutex_destroy(&rmq->lock);

        av_free(rmq);

        return AVERROR(ret);

    }

    if (!(rmq->fifo = av_fifo_alloc(elsize * nelem))) {

        pthread_cond_destroy(&rmq->cond);

        pthread_mutex_destroy(&rmq->lock);

        av_free(rmq);

        return AVERROR(ret);

    }

    rmq->elsize = elsize;

    *mq = rmq;

    return 0;

#else

    *mq = NULL;

    return AVERROR(ENOSYS);

#endif 

}

    if ((ret = pthread_cond_init(&rmq->cond, NULL))) {         pthread_cond_destroy(&rmq->cond);
int FUNC_0(AVThreadMessageQueue **VAR_0,

                                  unsigned VAR_1,

                                  unsigned VAR_2)

{

#if HAVE_THREADS

    AVThreadMessageQueue *rmq;

    int ret = 0;



    if (VAR_1 > INT_MAX / VAR_2)

        return AVERROR(EINVAL);

    if (!(rmq = av_mallocz(sizeof(*rmq))))

        return AVERROR(ENOMEM);

    if ((ret = pthread_mutex_init(&rmq->lock, NULL))) {

        av_free(rmq);

        return AVERROR(ret);

    }

    if ((ret = pthread_cond_init(&rmq->cond, NULL))) {

        pthread_mutex_destroy(&rmq->lock);

        av_free(rmq);

        return AVERROR(ret);

    }

    if (!(rmq->fifo = av_fifo_alloc(VAR_2 * VAR_1))) {

        pthread_cond_destroy(&rmq->cond);

        pthread_mutex_destroy(&rmq->lock);

        av_free(rmq);

        return AVERROR(ret);

    }

    rmq->VAR_2 = VAR_2;

    *VAR_0 = rmq;

    return 0;

#else

    *VAR_0 = NULL;

    return AVERROR(ENOSYS);

#endif 

}

int FUNC_0(AVThreadMessageQueue **VAR_0,
unsigned VAR_1,
unsigned VAR_2)
{ #if HAVE_THREADS
AVThreadMessageQueue *rmq; int ret = 0; if (VAR_1 > INT_MAX / VAR_2)
return AVERROR(EINVAL); if (!(rmq = av_mallocz(sizeof(*rmq))))
return AVERROR(ENOMEM); if ((ret = pthread_mutex_init(&rmq->lock, NULL))) { av_free(rmq); return AVERROR(ret); } if ((ret = pthread_cond_init(&rmq->cond, NULL))) { pthread_mutex_destroy(&rmq->lock); av_free(rmq); return AVERROR(ret); } if (!(rmq->fifo = av_fifo_alloc(VAR_2 * VAR_1))) { pthread_cond_destroy(&rmq->cond); pthread_mutex_destroy(&rmq->lock); av_free(rmq); return AVERROR(ret); } rmq->VAR_2 = VAR_2; *VAR_0 = rmq; return 0; #else
*VAR_0 = NULL; return AVERROR(ENOSYS); #endif
}