-static void membuffer_write_atom(struct membuffer *buf, const char *name, unsigned size,
- const void *data)
-{
- membuffer_write_int32(buf, size + 8);
- membuffer_write_atom_name(buf, name);
- membuffer_write(buf, data, size);
-}
-
-static void *membuffer_get_ptr(const struct membuffer *buf)
-{
- return buf->data;
-}
-
-static bool membuffer_transfer_from_file(struct membuffer *buf, struct mp4 *src,
- unsigned bytes)
-{
- unsigned oldsize = membuffer_get_size(buf);
- char *bufptr;
-
- membuffer_write(buf, 0, bytes);
- bufptr = membuffer_get_ptr(buf);
- if (read_data(src, bufptr + oldsize, bytes) != 1) {
- free(buf->data);
- free(buf);
- return false;
- }
- return true;
-}
-
-static uint32_t create_meta(const struct mp4_metadata *meta, void **out_buffer,
- uint32_t * out_size)
-{
- struct membuffer *buf;
- uint32_t ilst_size;
- void *ilst_buffer;
-
- ilst_buffer = create_ilst(meta, &ilst_size);
-
- buf = membuffer_create();
- membuffer_write_int32(buf, 0);
- membuffer_write_atom(buf, "ilst", ilst_size, ilst_buffer);
- free(ilst_buffer);
-
- *out_size = membuffer_get_size(buf);
- *out_buffer = membuffer_detach(buf);
- return 1;
-}
-
-static uint32_t create_udta(const struct mp4_metadata *meta, void **out_buffer,
-uint32_t * out_size)
-{
- struct membuffer *buf;
- uint32_t meta_size;
- void *meta_buffer;
-
- if (!create_meta(meta, &meta_buffer, &meta_size))
- return 0;
-
- buf = membuffer_create();
-
- membuffer_write_atom(buf, "meta", meta_size, meta_buffer);
-
- free(meta_buffer);
-
- *out_size = membuffer_get_size(buf);
- *out_buffer = membuffer_detach(buf);
- return 1;
-}
-