fourcc_tag = BE_32(&header[i]);
fourcc_tag = LE_32(&header[i]);
static int fourxm_read_header(AVFormatContext *s,                             AVFormatParameters *ap){    ByteIOContext *pb = &s->pb;    unsigned int fourcc_tag;    unsigned int size;    int header_size;    FourxmDemuxContext *fourxm = (FourxmDemuxContext *)s->priv_data;    unsigned char *header;    int i;    int current_track = -1;    AVStream *st;    fourxm->track_count = 0;    fourxm->tracks = NULL;    fourxm->selected_track = 0;    /* skip the first 3 32-bit numbers */    url_fseek(pb, 12, SEEK_CUR);    /* check for LIST-HEAD */    GET_LIST_HEADER();    header_size = size - 4;    if (fourcc_tag != HEAD_TAG)        return AVERROR_INVALIDDATA;    /* allocate space for the header and load the whole thing */    header = av_malloc(header_size);    if (!header)        return AVERROR_NOMEM;    if (get_buffer(pb, header, header_size) != header_size)        return AVERROR_IO;    /* take the lazy approach and search for any and all vtrk and strk chunks */    for (i = 0; i < header_size - 8; i++) {        fourcc_tag = BE_32(&header[i]);        size = LE_32(&header[i + 4]);        if (fourcc_tag == vtrk_TAG) {            /* check that there is enough data */            if (size != vtrk_SIZE) {                av_free(header);                return AVERROR_INVALIDDATA;            }            fourxm->width = LE_32(&header[i + 36]);            fourxm->height = LE_32(&header[i + 40]);            i += 8 + size;        } else if (fourcc_tag == strk_TAG) {            /* check that there is enough data */            if (size != strk_SIZE) {                av_free(header);                return AVERROR_INVALIDDATA;            }            current_track = LE_32(&header[i + 8]);            if (current_track + 1 > fourxm->track_count) {                fourxm->track_count = current_track + 1;                fourxm->tracks = av_realloc(fourxm->tracks,                     fourxm->track_count * sizeof(AudioTrack));                if (!fourxm->tracks) {                    av_free(header);                    return AVERROR_NOMEM;                }            }            fourxm->tracks[current_track].channels = LE_32(&header[i + 36]);            fourxm->tracks[current_track].sample_rate = LE_32(&header[i + 40]);            fourxm->tracks[current_track].bits = LE_32(&header[i + 44]);            i += 8 + size;        }    }    av_free(header);    /* skip over the LIST-MOVI chunk (which is where the stream should be */    GET_LIST_HEADER();    if (fourcc_tag != MOVI_TAG)        return AVERROR_INVALIDDATA;    if (current_track > -1) {        st = av_new_stream(s, 0);        if (!st)            return AVERROR_NOMEM;        st->codec.codec_type = CODEC_TYPE_AUDIO;        st->codec.codec_tag = 1;        st->codec.channels = fourxm->tracks[current_track].channels;        st->codec.sample_rate = fourxm->tracks[current_track].sample_rate;        st->codec.bits_per_sample = fourxm->tracks[current_track].bits;        st->codec.bit_rate = st->codec.channels * st->codec.sample_rate *            st->codec.bits_per_sample;        st->codec.block_align = st->codec.channels * st->codec.bits_per_sample;        if (st->codec.bits_per_sample == 8)            st->codec.codec_id = CODEC_ID_PCM_U8;        else            st->codec.codec_id = CODEC_ID_PCM_S16LE;    }    return 0;}