summaryrefslogtreecommitdiff
path: root/libavformat/s337m.c
diff options
context:
space:
mode:
Diffstat (limited to 'libavformat/s337m.c')
-rw-r--r--libavformat/s337m.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/libavformat/s337m.c b/libavformat/s337m.c
index 1f4ba5edaf..2e85d487b5 100644
--- a/libavformat/s337m.c
+++ b/libavformat/s337m.c
@@ -86,22 +86,21 @@ static int s337m_probe(AVProbeData *p)
{
uint64_t state = 0;
int markers[3] = { 0 };
- int i, sum, max, data_type, data_size, offset;
+ int i, pos, sum, max, data_type, data_size, offset;
uint8_t *buf;
- for (buf = p->buf; buf < p->buf + p->buf_size; buf++) {
- state = (state << 8) | *buf;
+ for (pos = 0; pos < p->buf_size; pos++) {
+ state = (state << 8) | p->buf[pos];
if (!IS_LE_MARKER(state))
continue;
+ buf = p->buf + pos + 1;
if (IS_16LE_MARKER(state)) {
- data_type = AV_RL16(buf + 1);
- data_size = AV_RL16(buf + 3);
- buf += 4;
+ data_type = AV_RL16(buf );
+ data_size = AV_RL16(buf + 2);
} else {
- data_type = AV_RL24(buf + 1);
- data_size = AV_RL24(buf + 4);
- buf += 6;
+ data_type = AV_RL24(buf );
+ data_size = AV_RL24(buf + 3);
}
if (s337m_get_offset_and_codec(NULL, state, data_type, data_size, &offset, NULL))
@@ -110,7 +109,8 @@ static int s337m_probe(AVProbeData *p)
i = IS_16LE_MARKER(state) ? 0 : IS_20LE_MARKER(state) ? 1 : 2;
markers[i]++;
- buf += offset;
+ pos += IS_16LE_MARKER(state) ? 4 : 6;
+ pos += offset;
state = 0;
}