*/
#include "demuxer.h"
+#include <endian.h>
const int Demuxer::FrameRates[9] = { 0, 23, 24, 25, 29, 30, 50, 59, 60 };
int Demuxer::findVideoPTS(UCHAR* buf, int len, ULLONG* dest)
{
- UINT LoPattern = 0x100 | FRAMETYPE_VID0,
- HiPattern = 0x100 | FRAMETYPE_VIDMAX;
-
while (len >= 14)
{
UINT pattern = *(UINT*)buf;
buf++; len--;
- if (pattern < LoPattern || pattern > HiPattern) continue;
+#if __BYTE_ORDER == __BIG_ENDIAN
+ if (pattern < (0x100 | FRAMETYPE_VID0) ||
+ pattern > (0x100 | FRAMETYPE_VIDMAX)) continue;
+#else
+ if ((pattern & 0xFFFFFF) != 0x010000 ||
+ pattern < ((UINT)FRAMETYPE_VID0 << 24) ||
+ pattern > ((UINT)FRAMETYPE_VIDMAX << 24)) continue;
+#endif
if ((buf[5] & 0xC0) != 0x80) continue;
UINT framelength = ((UINT)buf[3] << 8) | buf[4];