示例#1
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;
}
示例#2
0
int msc_get_id(MediaSource* source, int* sourceId)
{
    const StreamInfo* streamInfo;
    if (msc_get_num_streams(source) <= 0 || !msc_get_stream_info(source, 0, &streamInfo))
    {
        return 0;
    }
    
    *sourceId = streamInfo->sourceId;
    return 1;
}
示例#3
0
static int cps_get_num_streams(void* data)
{
    ClipSource* clipSource = (ClipSource*)data;

    return msc_get_num_streams(clipSource->targetSource);
}