get_le16(pb);
blkalign = get_le16(pb);
static int wav_read_header(AVFormatContext *s,                           AVFormatParameters *ap){    int size;    unsigned int tag;    ByteIOContext *pb = &s->pb;    unsigned int id, channels, rate, bit_rate, extra_size, bps;    AVStream *st;    /* check RIFF header */    tag = get_le32(pb);    if (tag != MKTAG('R', 'I', 'F', 'F'))        return -1;    get_le32(pb); /* file size */    tag = get_le32(pb);    if (tag != MKTAG('W', 'A', 'V', 'E'))        return -1;        /* parse fmt header */    size = find_tag(pb, MKTAG('f', 'm', 't', ' '));    if (size < 0)        return -1;    id = get_le16(pb);     channels = get_le16(pb);    rate = get_le32(pb);    bit_rate = get_le32(pb) * 8;    get_le16(pb); /* block align */    bps = get_le16(pb); /* bits per sample */    if (size >= 18) {        /* wav_extra_size */        extra_size = get_le16(pb);         /* skip unused data */        url_fseek(pb, size - 18, SEEK_CUR);    }    size = find_tag(pb, MKTAG('d', 'a', 't', 'a'));    if (size < 0)        return -1;        /* now we are ready: build format streams */    st = av_new_stream(s, 0);    if (!st)        return AVERROR_NOMEM;    st->codec.codec_type = CODEC_TYPE_AUDIO;    st->codec.codec_tag = id;    st->codec.codec_id = wav_codec_get_id(id, bps);    st->codec.channels = channels;    st->codec.sample_rate = rate;    return 0;}