X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Fxa.c;h=06b9c3f9bbfc298d6e20b5020ae44ca014caf5eb;hb=70c77fdfc1076fd7f6cd20079237ddc97e1a10bc;hp=4cec2dae8800a0411f7d35c7aab64fb6676d3eda;hpb=a54bc52265b9b42e0735507f3b28cfb49a9d3c62;p=ffmpeg diff --git a/libavformat/xa.c b/libavformat/xa.c index 4cec2dae880..06b9c3f9bbf 100644 --- a/libavformat/xa.c +++ b/libavformat/xa.c @@ -59,7 +59,7 @@ static int xa_probe(AVProbeData *p) if (!channels || channels > 8 || !srate || srate > 192000 || bits_per_sample < 4 || bits_per_sample > 32) return 0; - return AVPROBE_SCORE_MAX/2; + return AVPROBE_SCORE_EXTENSION; } static int xa_read_header(AVFormatContext *s) @@ -73,18 +73,21 @@ static int xa_read_header(AVFormatContext *s) if (!st) return AVERROR(ENOMEM); - st->codec->codec_type = AVMEDIA_TYPE_AUDIO; - st->codec->codec_id = CODEC_ID_ADPCM_EA_MAXIS_XA; + st->codecpar->codec_type = AVMEDIA_TYPE_AUDIO; + st->codecpar->codec_id = AV_CODEC_ID_ADPCM_EA_MAXIS_XA; avio_skip(pb, 4); /* Skip the XA ID */ xa->out_size = avio_rl32(pb); avio_skip(pb, 2); /* Skip the tag */ - st->codec->channels = avio_rl16(pb); - st->codec->sample_rate = avio_rl32(pb); + st->codecpar->channels = avio_rl16(pb); + st->codecpar->sample_rate = avio_rl32(pb); avio_skip(pb, 4); /* Skip average byte rate */ avio_skip(pb, 2); /* Skip block align */ avio_skip(pb, 2); /* Skip bits-per-sample */ - avpriv_set_pts_info(st, 64, 1, st->codec->sample_rate); + st->codecpar->bit_rate = av_clip(15LL * st->codecpar->channels * 8 * + st->codecpar->sample_rate / 28, 0, INT_MAX); + + avpriv_set_pts_info(st, 64, 1, st->codecpar->sample_rate); st->start_time = 0; return 0; @@ -102,7 +105,7 @@ static int xa_read_packet(AVFormatContext *s, if (xa->sent_bytes >= xa->out_size) return AVERROR_EOF; /* 1 byte header and 14 bytes worth of samples * number channels per block */ - packet_size = 15*st->codec->channels; + packet_size = 15*st->codecpar->channels; ret = av_get_packet(pb, pkt, packet_size); if(ret < 0) @@ -117,7 +120,7 @@ static int xa_read_packet(AVFormatContext *s, AVInputFormat ff_xa_demuxer = { .name = "xa", - .long_name = NULL_IF_CONFIG_SMALL("Maxis XA File Format"), + .long_name = NULL_IF_CONFIG_SMALL("Maxis XA"), .priv_data_size = sizeof(MaxisXADemuxContext), .read_probe = xa_probe, .read_header = xa_read_header,