Beispiel #1
0
static void mls_set_frame_rate_or_disable(void* data, const Rational* frameRate)
{
    MultipleMediaSources* multSource = (MultipleMediaSources*)data;
    MediaSourceElement* ele = &multSource->sources;
    int i;

    while (ele != NULL && ele->source != NULL)
    {
        msc_set_frame_rate_or_disable(ele->source, frameRate);

        /* recalculate disabledStreamCount */
        ele->disabledStreamCount = 0;
        for (i = 0; i < ele->numStreams; i++)
        {
            if (msc_stream_is_disabled(ele->source, i))
            {
                ele->disabledStreamCount++;
            }
        }

        ele = ele->next;
    }

    multSource->maxLength = convert_length(multSource->maxLength, &multSource->maxLengthFrameRate, frameRate);
    multSource->maxLengthFrameRate = *frameRate;
}
Beispiel #2
0
static int append_source(MediaSourceList* sourceList, MediaSource** source)
{
    MediaSourceElement* ele = sourceList;
    MediaSourceElement* newEle = NULL;
    int i;

    /* handle first appended source */
    if (ele->source == NULL)
    {
        ele->source = *source;
        ele->numStreams = msc_get_num_streams(*source);
        *source = NULL;
        return 1;
    }

    /* move to end */
    while (ele->next != NULL)
    {
        ele = ele->next;
    }

    /* create element */
    if ((newEle = (MediaSourceElement*)malloc(sizeof(MediaSourceElement))) == NULL)
    {
        ml_log_error("Failed to allocate memory\n");
        return 0;
    }
    memset(newEle, 0, sizeof(MediaSourceElement));

    /* append source and take ownership */
    ele->next = newEle;
    newEle->source = *source;

    /* get num streams and disabled count */
    newEle->numStreams = msc_get_num_streams(*source);
    newEle->disabledStreamCount = 0;
    for (i = 0; i < newEle->numStreams; i++)
    {
        if (msc_stream_is_disabled(newEle->source, i))
        {
            newEle->disabledStreamCount++;
        }
    }

    *source = NULL;
    return 1;
}
Beispiel #3
0
static int mls_stream_is_disabled(void* data, int streamIndex)
{
    MultipleMediaSources* multSource = (MultipleMediaSources*)data;
    MediaSourceElement* ele = &multSource->sources;
    int maxIndex = 0;
    int minIndex = 0;

    while (ele != NULL && ele->source != NULL)
    {
        maxIndex += ele->numStreams;
        if (streamIndex < maxIndex)
        {
            return msc_stream_is_disabled(ele->source, streamIndex - minIndex);
        }
        minIndex = maxIndex;

        ele = ele->next;
    }

    return 0;
}
Beispiel #4
0
static int cps_stream_is_disabled(void* data, int streamIndex)
{
    ClipSource* clipSource = (ClipSource*)data;

    return msc_stream_is_disabled(clipSource->targetSource, streamIndex);
}