]> git.tue.mpg.de Git - paraslash.git/commitdiff
mp4: Simplify parse_sub_atoms().
authorAndre Noll <maan@tuebingen.mpg.de>
Mon, 23 Aug 2021 14:18:17 +0000 (16:18 +0200)
committerAndre Noll <maan@tuebingen.mpg.de>
Mon, 30 May 2022 19:37:36 +0000 (21:37 +0200)
This converts the while loop into a for loop and replaces the
counted_size variable by "dest" to clarify the loop structure. We
also move the two 8-bit variables into the loop as they are only used
there and skip their pointless initializations.

mp4.c

diff --git a/mp4.c b/mp4.c
index e2512db17de21c0fd20286860a0e6861f9542b2d..d030d62d3e759c81ddfa440a6b47613e87f4d14e 100644 (file)
--- a/mp4.c
+++ b/mp4.c
@@ -712,18 +712,16 @@ static bool need_atom(uint8_t atom_type, bool meta_only)
 static int parse_sub_atoms(struct mp4 *f, uint64_t total_size, bool meta_only)
 {
        int ret;
-       uint64_t size;
-       uint8_t atom_type = 0;
-       uint64_t counted_size = 0;
-       uint8_t header_size = 0;
+       uint64_t dest, size, end = get_position(f) + total_size;
 
-       while (counted_size < total_size) {
+       for (dest = get_position(f); dest < end; set_position(f, dest)) {
+               uint8_t header_size, atom_type;
                ret = atom_read_header(f, &atom_type, &header_size, &size);
                if (ret <= 0)
                        return ret;
                if (size == 0)
                        return -1;
-               counted_size += size;
+               dest = get_position(f) + size - header_size;
                if (atom_type == ATOM_TRAK) {
                        if (f->total_tracks >= MAX_TRACKS)
                                return -1;
@@ -734,10 +732,8 @@ static int parse_sub_atoms(struct mp4 *f, uint64_t total_size, bool meta_only)
                        f->udta_offset = get_position(f) - header_size;
                        f->udta_size = size;
                }
-               if (!need_atom(atom_type, meta_only)) {
-                       set_position(f, get_position(f) + size - header_size);
+               if (!need_atom(atom_type, meta_only))
                        continue;
-               }
                if (atom_type < SUBATOMIC) /* atom contains subatoms */
                        ret = parse_sub_atoms(f, size - header_size, meta_only);
                else