Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'tools/qt-faststart.c')
-rw-r--r--tools/qt-faststart.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/tools/qt-faststart.c b/tools/qt-faststart.c
index ed6de1b86c..9cbabd9a8d 100644
--- a/tools/qt-faststart.c
+++ b/tools/qt-faststart.c
@@ -8,7 +8,7 @@
* is in front of the data, thus facilitating network streaming.
*
* To compile this program, start from the base directory from which you
- * are building Libav and type:
+ * are building FFmpeg and type:
* make tools/qt-faststart
* The qt-faststart program will be built in the tools/ directory. If you
* do not build the program in this manner, correct results are not
@@ -79,7 +79,7 @@
#define CO64_ATOM QT_ATOM('c', 'o', '6', '4')
#define ATOM_PREAMBLE_SIZE 8
-#define COPY_BUFFER_SIZE 65536
+#define COPY_BUFFER_SIZE 33554432
int main(int argc, char *argv[])
{
@@ -98,12 +98,12 @@ int main(int argc, char *argv[])
uint32_t offset_count;
uint64_t current_offset;
int64_t start_offset = 0;
- unsigned char copy_buffer[COPY_BUFFER_SIZE];
+ unsigned char *copy_buffer = NULL;
int bytes_to_copy;
if (argc != 3) {
printf("Usage: qt-faststart <infile.mov> <outfile.mov>\n"
- "Note: alternatively you can use -movflags +faststart in avconv\n");
+ "Note: alternatively you can use -movflags +faststart in ffmpeg\n");
return 0;
}
@@ -320,9 +320,15 @@ int main(int argc, char *argv[])
}
/* copy the remainder of the infile, from offset 0 -> last_offset - 1 */
+ bytes_to_copy = MIN(COPY_BUFFER_SIZE, last_offset);
+ copy_buffer = malloc(bytes_to_copy);
+ if (!copy_buffer) {
+ printf("could not allocate %d bytes for copy_buffer\n", bytes_to_copy);
+ goto error_out;
+ }
printf(" copying rest of file...\n");
while (last_offset) {
- bytes_to_copy = MIN(COPY_BUFFER_SIZE, last_offset);
+ bytes_to_copy = MIN(bytes_to_copy, last_offset);
if (fread(copy_buffer, bytes_to_copy, 1, infile) != 1) {
perror(argv[1]);
@@ -339,6 +345,7 @@ int main(int argc, char *argv[])
fclose(outfile);
free(moov_atom);
free(ftyp_atom);
+ free(copy_buffer);
return 0;
@@ -349,5 +356,6 @@ error_out:
fclose(outfile);
free(moov_atom);
free(ftyp_atom);
+ free(copy_buffer);
return 1;
}