static int parse_filename(char *filename, char **representation_id,

                          char **initialization_pattern, char **media_pattern) {

    char *underscore_pos = NULL;

    char *period_pos = NULL;

    char *temp_pos = NULL;

    char *filename_str = av_strdup(filename);

    if (!filename_str) return AVERROR(ENOMEM);

    temp_pos = av_stristr(filename_str, "_");

    while (temp_pos) {

        underscore_pos = temp_pos + 1;

        temp_pos = av_stristr(temp_pos + 1, "_");

    }

    if (!underscore_pos) return -1;

    period_pos = av_stristr(underscore_pos, ".");

    if (!period_pos) return -1;

    *(underscore_pos - 1) = 0;

    if (representation_id) {

        *representation_id = av_malloc(period_pos - underscore_pos + 1);

        if (!(*representation_id)) return AVERROR(ENOMEM);

        av_strlcpy(*representation_id, underscore_pos, period_pos - underscore_pos + 1);

    }

    if (initialization_pattern) {

        *initialization_pattern = av_asprintf("%s_$RepresentationID$.hdr",

                                              filename_str);

        if (!(*initialization_pattern)) return AVERROR(ENOMEM);

    }

    if (media_pattern) {

        *media_pattern = av_asprintf("%s_$RepresentationID$_$Number$.chk",

                                     filename_str);

        if (!(*media_pattern)) return AVERROR(ENOMEM);

    }

    av_free(filename_str);

    return 0;

}

static int parse_filename(char *filename, char **representation_id,

                          char **initialization_pattern, char **media_pattern) {

    char *underscore_pos = NULL;

    char *period_pos = NULL;

    char *temp_pos = NULL;

    char *filename_str = av_strdup(filename);

    if (!filename_str) return AVERROR(ENOMEM);

    temp_pos = av_stristr(filename_str, "_");

    while (temp_pos) {

        underscore_pos = temp_pos + 1;

        temp_pos = av_stristr(temp_pos + 1, "_");

    }

    if (!underscore_pos) return -1;

    period_pos = av_stristr(underscore_pos, ".");

    if (!period_pos) return -1;

    *(underscore_pos - 1) = 0;

    if (representation_id) {

        *representation_id = av_malloc(period_pos - underscore_pos + 1);

        if (!(*representation_id)) return AVERROR(ENOMEM);

        av_strlcpy(*representation_id, underscore_pos, period_pos - underscore_pos + 1);

    }

    if (initialization_pattern) {

        *initialization_pattern = av_asprintf("%s_$RepresentationID$.hdr",

                                              filename_str);

        if (!(*initialization_pattern)) return AVERROR(ENOMEM);

    }

    if (media_pattern) {

        *media_pattern = av_asprintf("%s_$RepresentationID$_$Number$.chk",

                                     filename_str);

        if (!(*media_pattern)) return AVERROR(ENOMEM);

    }

    av_free(filename_str);

    return 0;

}

    if (!underscore_pos) return -1;     if (!period_pos) return -1;
static int FUNC_0(char *VAR_0, char **VAR_1,

                          char **VAR_2, char **VAR_3) {

    char *VAR_4 = NULL;

    char *VAR_5 = NULL;

    char *VAR_6 = NULL;

    char *VAR_7 = av_strdup(VAR_0);

    if (!VAR_7) return AVERROR(ENOMEM);

    VAR_6 = av_stristr(VAR_7, "_");

    while (VAR_6) {

        VAR_4 = VAR_6 + 1;

        VAR_6 = av_stristr(VAR_6 + 1, "_");

    }

    if (!VAR_4) return -1;

    VAR_5 = av_stristr(VAR_4, ".");

    if (!VAR_5) return -1;

    *(VAR_4 - 1) = 0;

    if (VAR_1) {

        *VAR_1 = av_malloc(VAR_5 - VAR_4 + 1);

        if (!(*VAR_1)) return AVERROR(ENOMEM);

        av_strlcpy(*VAR_1, VAR_4, VAR_5 - VAR_4 + 1);

    }

    if (VAR_2) {

        *VAR_2 = av_asprintf("%s_$RepresentationID$.hdr",

                                              VAR_7);

        if (!(*VAR_2)) return AVERROR(ENOMEM);

    }

    if (VAR_3) {

        *VAR_3 = av_asprintf("%s_$RepresentationID$_$Number$.chk",

                                     VAR_7);

        if (!(*VAR_3)) return AVERROR(ENOMEM);

    }

    av_free(VAR_7);

    return 0;

}

static int FUNC_0(char *VAR_0, char **VAR_1,
char **VAR_2, char **VAR_3) { char *VAR_4 = NULL; char *VAR_5 = NULL; char *VAR_6 = NULL; char *VAR_7 = av_strdup(VAR_0); if (!VAR_7) return AVERROR(ENOMEM); VAR_6 = av_stristr(VAR_7, "_"); while (VAR_6) { VAR_4 = VAR_6 + 1; VAR_6 = av_stristr(VAR_6 + 1, "_"); } if (!VAR_4) return -1; VAR_5 = av_stristr(VAR_4, "."); if (!VAR_5) return -1; *(VAR_4 - 1) = 0; if (VAR_1) { *VAR_1 = av_malloc(VAR_5 - VAR_4 + 1); if (!(*VAR_1)) return AVERROR(ENOMEM); av_strlcpy(*VAR_1, VAR_4, VAR_5 - VAR_4 + 1); } if (VAR_2) { *VAR_2 = av_asprintf("%s_$RepresentationID$.hdr",
VAR_7); if (!(*VAR_2)) return AVERROR(ENOMEM); } if (VAR_3) { *VAR_3 = av_asprintf("%s_$RepresentationID$_$Number$.chk",
VAR_7); if (!(*VAR_3)) return AVERROR(ENOMEM); } av_free(VAR_7); return 0; }