|
@@ -77,7 +77,7 @@
|
|
|
#define CO64_ATOM QT_ATOM('c', 'o', '6', '4')
|
|
|
|
|
|
#define ATOM_PREAMBLE_SIZE 8
|
|
|
-#define COPY_BUFFER_SIZE 1024
|
|
|
+#define COPY_BUFFER_SIZE 33554432
|
|
|
|
|
|
int main(int argc, char *argv[])
|
|
|
{
|
|
@@ -96,7 +96,7 @@ int main(int argc, char *argv[])
|
|
|
uint32_t offset_count;
|
|
|
uint64_t current_offset;
|
|
|
uint64_t start_offset = 0;
|
|
|
- unsigned char copy_buffer[COPY_BUFFER_SIZE];
|
|
|
+ unsigned char *copy_buffer = NULL;
|
|
|
int bytes_to_copy;
|
|
|
|
|
|
if (argc != 3) {
|
|
@@ -293,6 +293,11 @@ int main(int argc, char *argv[])
|
|
|
}
|
|
|
|
|
|
/* copy the remainder of the infile, from offset 0 -> last_offset - 1 */
|
|
|
+ copy_buffer = malloc(COPY_BUFFER_SIZE);
|
|
|
+ if (!copy_buffer) {
|
|
|
+ printf("could not allocate %"PRIu64" bytes for copy_buffer\n", COPY_BUFFER_SIZE);
|
|
|
+ goto error_out;
|
|
|
+ }
|
|
|
printf(" copying rest of file...\n");
|
|
|
while (last_offset) {
|
|
|
if (last_offset > COPY_BUFFER_SIZE)
|
|
@@ -315,6 +320,7 @@ int main(int argc, char *argv[])
|
|
|
fclose(outfile);
|
|
|
free(moov_atom);
|
|
|
free(ftyp_atom);
|
|
|
+ free(copy_buffer);
|
|
|
|
|
|
return 0;
|
|
|
|
|
@@ -325,5 +331,6 @@ error_out:
|
|
|
fclose(outfile);
|
|
|
free(moov_atom);
|
|
|
free(ftyp_atom);
|
|
|
+ free(copy_buffer);
|
|
|
return 1;
|
|
|
}
|