static int mov_read_stsc(MOVContext *c, ByteIOContext *pb, MOVAtom atom)

{

    AVStream *st = c->fc->streams[c->fc->nb_streams-1];

    MOVStreamContext *sc = st->priv_data;

    unsigned int i, entries;



    get_byte(pb); /* version */

    get_be24(pb); /* flags */



    entries = get_be32(pb);



    dprintf(c->fc, "track[%i].stsc.entries = %i\n", c->fc->nb_streams-1, entries);



    if(entries >= UINT_MAX / sizeof(*sc->stsc_data))

        return -1;

    sc->stsc_data = av_malloc(entries * sizeof(*sc->stsc_data));

    if (!sc->stsc_data)

        return AVERROR(ENOMEM);

    sc->stsc_count = entries;



    for(i=0; i<entries; i++) {

        sc->stsc_data[i].first = get_be32(pb);

        sc->stsc_data[i].count = get_be32(pb);

        sc->stsc_data[i].id = get_be32(pb);

    }

    return 0;

}

static int mov_read_stsc(MOVContext *c, ByteIOContext *pb, MOVAtom atom)

{

    AVStream *st = c->fc->streams[c->fc->nb_streams-1];

    MOVStreamContext *sc = st->priv_data;

    unsigned int i, entries;



    get_byte(pb); 

    get_be24(pb); 



    entries = get_be32(pb);



    dprintf(c->fc, "track[%i].stsc.entries = %i\n", c->fc->nb_streams-1, entries);



    if(entries >= UINT_MAX / sizeof(*sc->stsc_data))

        return -1;

    sc->stsc_data = av_malloc(entries * sizeof(*sc->stsc_data));

    if (!sc->stsc_data)

        return AVERROR(ENOMEM);

    sc->stsc_count = entries;



    for(i=0; i<entries; i++) {

        sc->stsc_data[i].first = get_be32(pb);

        sc->stsc_data[i].count = get_be32(pb);

        sc->stsc_data[i].id = get_be32(pb);

    }

    return 0;

}

static int FUNC_0(MOVContext *VAR_0, ByteIOContext *VAR_1, MOVAtom VAR_2)

{

    AVStream *st = VAR_0->fc->streams[VAR_0->fc->nb_streams-1];

    MOVStreamContext *sc = st->priv_data;

    unsigned int VAR_3, VAR_4;



    get_byte(VAR_1); 

    get_be24(VAR_1); 



    VAR_4 = get_be32(VAR_1);



    dprintf(VAR_0->fc, "track[%VAR_3].stsc.VAR_4 = %VAR_3\n", VAR_0->fc->nb_streams-1, VAR_4);



    if(VAR_4 >= UINT_MAX / sizeof(*sc->stsc_data))

        return -1;

    sc->stsc_data = av_malloc(VAR_4 * sizeof(*sc->stsc_data));

    if (!sc->stsc_data)

        return AVERROR(ENOMEM);

    sc->stsc_count = VAR_4;



    for(VAR_3=0; VAR_3<VAR_4; VAR_3++) {

        sc->stsc_data[VAR_3].first = get_be32(VAR_1);

        sc->stsc_data[VAR_3].count = get_be32(VAR_1);

        sc->stsc_data[VAR_3].id = get_be32(VAR_1);

    }

    return 0;

}

static int FUNC_0(MOVContext *VAR_0, ByteIOContext *VAR_1, MOVAtom VAR_2)
{ AVStream *st = VAR_0->fc->streams[VAR_0->fc->nb_streams-1]; MOVStreamContext *sc = st->priv_data; unsigned int VAR_3, VAR_4; get_byte(VAR_1); get_be24(VAR_1); VAR_4 = get_be32(VAR_1); dprintf(VAR_0->fc, "track[%VAR_3].stsc.VAR_4 = %VAR_3\n", VAR_0->fc->nb_streams-1, VAR_4); if(VAR_4 >= UINT_MAX / sizeof(*sc->stsc_data))
return -1; sc->stsc_data = av_malloc(VAR_4 * sizeof(*sc->stsc_data)); if (!sc->stsc_data)
return AVERROR(ENOMEM); sc->stsc_count = VAR_4; for(VAR_3=0; VAR_3<VAR_4; VAR_3++) { sc->stsc_data[VAR_3].first = get_be32(VAR_1); sc->stsc_data[VAR_3].count = get_be32(VAR_1); sc->stsc_data[VAR_3].id = get_be32(VAR_1); } return 0; }