WV_HBAL = 0x0400,
WV_MCINIT = 0x0800,
WV_MCEND = 0x1000,
+ WV_DSD = 0x80000000,
};
static const int wv_rates[16] = {
int64_t apetag_start;
} WVContext;
-static int wv_probe(AVProbeData *p)
+static int wv_probe(const AVProbeData *p)
{
/* check file header */
if (p->buf_size <= 32)
return ret;
}
+ if (wc->header.flags & WV_DSD) {
+ avpriv_report_missing_feature(ctx, "WV DSD");
+ return AVERROR_PATCHWELCOME;
+ }
+
if (wc->header.version < 0x402 || wc->header.version > 0x410) {
avpriv_report_missing_feature(ctx, "WV version 0x%03X",
wc->header.version);
case 3:
chmask = avio_rl32(pb);
break;
- case 5:
+ case 4:
avio_skip(pb, 1);
chan |= (avio_r8(pb) & 0xF) << 8;
+ chan += 1;
chmask = avio_rl24(pb);
break;
+ case 5:
+ avio_skip(pb, 1);
+ chan |= (avio_r8(pb) & 0xF) << 8;
+ chan += 1;
+ chmask = avio_rl32(pb);
+ break;
default:
av_log(ctx, AV_LOG_ERROR,
"Invalid channel info size %d\n", size);