printf("Specific MPEG4 header len=%d\n", len);
av_log(NULL, AV_LOG_DEBUG, "Specific MPEG4 header len=%d\n", len);
static int mov_read_esds(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom){    AVStream *st = c->fc->streams[c->fc->nb_streams-1];    MOVStreamContext *sc = (MOVStreamContext *)st->priv_data;    int64_t start_pos = url_ftell(pb);    int tag, len;    print_atom("esds", atom);    /* Well, broken but suffisant for some MP4 streams */    get_be32(pb); /* version + flags */    len = mov_mp4_read_descr(pb, &tag);    if (tag == MP4ESDescrTag) {	get_be16(pb); /* ID */	get_byte(pb); /* priority */    } else	get_be16(pb); /* ID */    len = mov_mp4_read_descr(pb, &tag);    if (tag == MP4DecConfigDescrTag) {	sc->esds.object_type_id = get_byte(pb);	sc->esds.stream_type = get_byte(pb);	sc->esds.buffer_size_db = get_be24(pb);	sc->esds.max_bitrate = get_be32(pb);	sc->esds.avg_bitrate = get_be32(pb);	len = mov_mp4_read_descr(pb, &tag);	//printf("LEN %d  TAG %d  m:%d a:%d\n", len, tag, sc->esds.max_bitrate, sc->esds.avg_bitrate);	if (tag == MP4DecSpecificDescrTag) {#ifdef DEBUG	    printf("Specific MPEG4 header len=%d\n", len);#endif	    st->codec.extradata = (uint8_t*) av_mallocz(len);	    if (st->codec.extradata) {		get_buffer(pb, st->codec.extradata, len);		st->codec.extradata_size = len;	    }	}    }    /* in any case, skip garbage */    url_fskip(pb, atom.size - ((url_ftell(pb) - start_pos)));    return 0;}