fourxm->video_stream_index = st->index;
- st->codec->codec_type = AVMEDIA_TYPE_VIDEO;
- st->codec->codec_id = AV_CODEC_ID_4XM;
- st->codec->extradata_size = 4;
- st->codec->extradata = av_malloc(4);
- AV_WL32(st->codec->extradata, AV_RL32(buf + 16));
- st->codec->width = AV_RL32(buf + 36);
- st->codec->height = AV_RL32(buf + 40);
+ st->codecpar->codec_type = AVMEDIA_TYPE_VIDEO;
+ st->codecpar->codec_id = AV_CODEC_ID_4XM;
+
+ st->codecpar->extradata = av_mallocz(4 + AV_INPUT_BUFFER_PADDING_SIZE);
+ if (!st->codecpar->extradata)
+ return AVERROR(ENOMEM);
+ st->codecpar->extradata_size = 4;
+ AV_WL32(st->codecpar->extradata, AV_RL32(buf + 16));
+ st->codecpar->width = AV_RL32(buf + 36);
+ st->codecpar->height = AV_RL32(buf + 40);
return 0;
}
return AVERROR_INVALIDDATA;
track = AV_RL32(buf + 8);
+ if (track < 0)
+ return AVERROR_INVALIDDATA;
if (track + 1 > fourxm->track_count) {
if (av_reallocp_array(&fourxm->tracks, track + 1, sizeof(AudioTrack)))
return AVERROR(ENOMEM);
if (fourxm->tracks[track].channels <= 0 ||
fourxm->tracks[track].sample_rate <= 0 ||
- fourxm->tracks[track].bits < 0) {
+ fourxm->tracks[track].bits <= 0) {
av_log(s, AV_LOG_ERROR, "audio header invalid\n");
return AVERROR_INVALIDDATA;
}
fourxm->tracks[track].stream_index = st->index;
- st->codec->codec_type = AVMEDIA_TYPE_AUDIO;
- st->codec->codec_tag = 0;
- st->codec->channels = fourxm->tracks[track].channels;
- st->codec->sample_rate = fourxm->tracks[track].sample_rate;
- st->codec->bits_per_coded_sample = fourxm->tracks[track].bits;
- st->codec->bit_rate = st->codec->channels *
- st->codec->sample_rate *
- st->codec->bits_per_coded_sample;
- st->codec->block_align = st->codec->channels *
- st->codec->bits_per_coded_sample;
+ st->codecpar->codec_type = AVMEDIA_TYPE_AUDIO;
+ st->codecpar->codec_tag = 0;
+ st->codecpar->channels = fourxm->tracks[track].channels;
+ st->codecpar->sample_rate = fourxm->tracks[track].sample_rate;
+ st->codecpar->bits_per_coded_sample = fourxm->tracks[track].bits;
+ st->codecpar->bit_rate = st->codecpar->channels *
+ st->codecpar->sample_rate *
+ st->codecpar->bits_per_coded_sample;
+ st->codecpar->block_align = st->codecpar->channels *
+ st->codecpar->bits_per_coded_sample;
if (fourxm->tracks[track].adpcm){
- st->codec->codec_id = AV_CODEC_ID_ADPCM_4XM;
- } else if (st->codec->bits_per_coded_sample == 8) {
- st->codec->codec_id = AV_CODEC_ID_PCM_U8;
+ st->codecpar->codec_id = AV_CODEC_ID_ADPCM_4XM;
+ } else if (st->codecpar->bits_per_coded_sample == 8) {
+ st->codecpar->codec_id = AV_CODEC_ID_PCM_U8;
} else
- st->codec->codec_id = AV_CODEC_ID_PCM_S16LE;
+ st->codecpar->codec_id = AV_CODEC_ID_PCM_S16LE;
return 0;
}
ret = avio_read(s->pb, &pkt->data[8], size);
if (ret < 0) {
- av_free_packet(pkt);
+ av_packet_unref(pkt);
} else
packet_read = 1;
break;