Reinhard Nissl wrote:
+bool cVideoRepacker::ScanDataForStartCodeFast(const uchar *&Data, const uchar *Limit) +{
- Limit--;
- while (Data < Limit) {
if (*Data > 0x01)
Data += 3;
else if (*Data == 0x00)
Data++;
else if (Data[-2] != 0x00 || Data[-1] != 0x00)
Data += 3;
else {
scanner = 0x00000100 | *++Data;
return true;
}
}
Did you consider using memchr()? e.g. something like ... while (Data < Limit) { Data = memchr(Data, 0x01, Limit - Data); if (Data == NULL) break; if (Data[-2] != 0x00 || Data[-1] != 0x00) Data += 3; ...
It makes no noticeable difference on my AMD64 machine (<1%), but maybe it is worth trying on your EPIA?
Jon