Merge commit '9200514ad8717c63f82101dc394f4378854325bf'
* commit '9200514ad8717c63f82101dc394f4378854325bf':
lavf: replace AVStream.codec with AVStream.codecpar
This has been a HUGE effort from:
- Derek Buitenhuis <derek.buitenhuis@gmail.com>
- Hendrik Leppkes <h.leppkes@gmail.com>
- wm4 <nfxjfg@googlemail.com>
- Clément Bœsch <clement@stupeflix.com>
- James Almer <jamrial@gmail.com>
- Michael Niedermayer <michael@niedermayer.cc>
- Rostislav Pehlivanov <atomnuker@gmail.com>
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This commit is contained in:
@@ -42,39 +42,39 @@ static int ads_read_header(AVFormatContext *s)
|
||||
return AVERROR(ENOMEM);
|
||||
|
||||
avio_skip(s->pb, 8);
|
||||
st->codec->codec_type = AVMEDIA_TYPE_AUDIO;
|
||||
st->codecpar->codec_type = AVMEDIA_TYPE_AUDIO;
|
||||
codec = avio_rl32(s->pb);
|
||||
st->codec->sample_rate = avio_rl32(s->pb);
|
||||
if (st->codec->sample_rate <= 0)
|
||||
st->codecpar->sample_rate = avio_rl32(s->pb);
|
||||
if (st->codecpar->sample_rate <= 0)
|
||||
return AVERROR_INVALIDDATA;
|
||||
st->codec->channels = avio_rl32(s->pb);
|
||||
if (st->codec->channels <= 0)
|
||||
st->codecpar->channels = avio_rl32(s->pb);
|
||||
if (st->codecpar->channels <= 0)
|
||||
return AVERROR_INVALIDDATA;
|
||||
align = avio_rl32(s->pb);
|
||||
if (align <= 0 || align > INT_MAX / st->codec->channels)
|
||||
if (align <= 0 || align > INT_MAX / st->codecpar->channels)
|
||||
return AVERROR_INVALIDDATA;
|
||||
|
||||
if (codec == 1)
|
||||
st->codec->codec_id = AV_CODEC_ID_PCM_S16LE_PLANAR;
|
||||
st->codecpar->codec_id = AV_CODEC_ID_PCM_S16LE_PLANAR;
|
||||
else
|
||||
st->codec->codec_id = AV_CODEC_ID_ADPCM_PSX;
|
||||
st->codecpar->codec_id = AV_CODEC_ID_ADPCM_PSX;
|
||||
|
||||
st->codec->block_align = st->codec->channels * align;
|
||||
st->codecpar->block_align = st->codecpar->channels * align;
|
||||
avio_skip(s->pb, 12);
|
||||
size = avio_rl32(s->pb);
|
||||
if (st->codec->codec_id == AV_CODEC_ID_ADPCM_PSX)
|
||||
st->duration = (size - 0x40) / 16 / st->codec->channels * 28;
|
||||
avpriv_set_pts_info(st, 64, 1, st->codec->sample_rate);
|
||||
if (st->codecpar->codec_id == AV_CODEC_ID_ADPCM_PSX)
|
||||
st->duration = (size - 0x40) / 16 / st->codecpar->channels * 28;
|
||||
avpriv_set_pts_info(st, 64, 1, st->codecpar->sample_rate);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int ads_read_packet(AVFormatContext *s, AVPacket *pkt)
|
||||
{
|
||||
AVCodecContext *codec = s->streams[0]->codec;
|
||||
AVCodecParameters *par = s->streams[0]->codecpar;
|
||||
int ret;
|
||||
|
||||
ret = av_get_packet(s->pb, pkt, codec->block_align);
|
||||
ret = av_get_packet(s->pb, pkt, par->block_align);
|
||||
pkt->stream_index = 0;
|
||||
return ret;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user