tis 2019-03-19 klockan 22:53 +0000 skrev Aidan R: > @@ -69,13 +75,25 @@ static int wsaud_probe(AVProbeData *p) >> if (p->buf[10] & 0xFC) >> return 0; >> >> - if (p->buf[11] != 99 && p->buf[11] != 1) >> + /* valid format values are 99 == adpcm, 1 == snd1 and 0 == pcm */ >> + if (p->buf[11] != 99 && p->buf[11] != 1 && p->buf[11] != 0) >> return 0; >> >> - /* read ahead to the first audio chunk and validate the first header >> signature */ >> - if (AV_RL32(&p->buf[16]) != AUD_CHUNK_SIGNATURE) >> + /* read ahead to the first audio chunk and validate the first header >> + * signature pcm format does not use a chunk format, so don't check > > Missing a period between "pcm" and "format"?
Missing after signature after re-reading it myself. > >> @@ -130,20 +161,24 @@ static int wsaud_read_packet(AVFormatContext *s, >> AVPacket *pkt) >> { >> AVIOContext *pb = s->pb; >> + AUDDemuxContext *aud = s->priv_data; >> unsigned char preamble[AUD_CHUNK_PREAMBLE_SIZE]; >> - unsigned int chunk_size; >> + unsigned int chunk_size, bytes_per_sample; >> int ret = 0; >> AVStream *st = s->streams[0]; >> >> - if (avio_read(pb, preamble, AUD_CHUNK_PREAMBLE_SIZE) != >> - AUD_CHUNK_PREAMBLE_SIZE) >> - return AVERROR(EIO); >> + /* AUD files don't store PCM audio in chunks */ >> + if (st->codecpar->codec_id != AV_CODEC_ID_PCM_S16LE) { > >What about AV_CODEC_ID_PCM_U8? Good catch, I don't think any actually exist in the wild, but I have supported the possibility in wsaud_read_header and from looking at the audio engine it looks to support it in theory. > >A sample + FATE test for this would be nice Some guidance on where to start for that would be most welcome. I have short examples from Blade Runner that could be used but wouldn't distributing them violate copyright? -- Aidan Richmond _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel