VIV_AudioSubpacket audio_subpackets[MAX_AUDIO_SUBPACKETS];
} VividasDemuxContext;
-static int viv_probe(AVProbeData *p)
+static int viv_probe(const AVProbeData *p)
{
if (memcmp(p->buf, "vividas03", 9))
return 0;
((sample[3]^plaintext[3])<<24);
}
-static void xor_block(void *p1, void *p2, unsigned size, int key, int *key_ptr)
+static void xor_block(void *p1, void *p2, unsigned size, int key, unsigned *key_ptr)
{
- int *d1 = p1;
- int *d2 = p2;
- int k = *key_ptr;
+ unsigned *d1 = p1;
+ unsigned *d2 = p2;
+ unsigned k = *key_ptr;
size >>= 2;
- while (size--) {
- *d2 = *d1 ^ k;
+ while (size > 0) {
+ *d2 = *d1 ^ (HAVE_BIGENDIAN ? av_bswap32(k) : k);
k += key;
d1++;
d2++;
+ size--;
}
*key_ptr = k;
offset += data_len[j];
}
- st->codecpar->extradata_size = offset;
+ if (offset < st->codecpar->extradata_size)
+ st->codecpar->extradata_size = offset;
}
}
int64_t off;
int ret;
+ if (!viv->sb_pb)
+ return AVERROR(EIO);
if (avio_feof(viv->sb_pb))
return AVERROR_EOF;
}
pb = viv->sb_pb;
+ if (!pb)
+ return AVERROR(EIO);
off = avio_tell(pb);
off += viv->sb_entries[viv->current_sb_entry].size;