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