]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - mp4.c
mp4: Merge write_int32() into mp4_meta_update().
[paraslash.git] / mp4.c
diff --git a/mp4.c b/mp4.c
index b2cc8e290faeaf254855000cb6259bc821b5f7eb..535c785aa1c62443697d8f0c78fabb29759270c0 100644 (file)
--- a/mp4.c
+++ b/mp4.c
@@ -981,17 +981,11 @@ static int32_t write_data(struct mp4 *f, void *data, uint32_t size)
        return result;
 }
 
-static int32_t write_int32(struct mp4 *f, uint32_t data)
-{
-       int8_t temp[4];
-       write_u32_be(temp, data);
-       return write_data(f, temp, sizeof(temp));
-}
-
 int32_t mp4_meta_update(struct mp4 *f)
 {
        void *new_moov_data;
        uint32_t new_moov_size;
+       uint8_t buf[4];
 
        set_position(f, 0);
        new_moov_data = modify_moov(f, &new_moov_size);
@@ -999,24 +993,16 @@ int32_t mp4_meta_update(struct mp4 *f)
                mp4_close(f);
                return 0;
        }
-       /* copy moov atom to end of the file */
        if (f->last_atom != ATOM_MOOV) {
-               char *free_data = "free";
-
-               /* rename old moov to free */
                set_position(f, f->moov_offset + 4);
-               write_data(f, free_data, 4);
-
-               set_position(f, f->file_size);
-               write_int32(f, new_moov_size + 8);
-               write_data(f, "moov", 4);
-               write_data(f, new_moov_data, new_moov_size);
-       } else {
+               write_data(f, "free", 4); /* rename old moov to free */
+               set_position(f, f->file_size); /* write new moov atom at EOF */
+       } else /* overwrite old moov atom */
                set_position(f, f->moov_offset);
-               write_int32(f, new_moov_size + 8);
-               write_data(f, "moov", 4);
-               write_data(f, new_moov_data, new_moov_size);
-       }
+       write_u32_be(buf, new_moov_size + 8);
+       write_data(f, buf, 4);
+       write_data(f, "moov", 4);
+       write_data(f, new_moov_data, new_moov_size);
        free(new_moov_data);
        f->cb->truncate(f->cb->user_data);
        return 1;