diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2012-09-13 15:21:26 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2012-09-13 15:22:16 +0200 |
commit | c942e8b1d75243b97db24e0c75f7d5c7b9d585eb (patch) | |
tree | f7f7b9a8a4f8ff97065aff145c41c46895ec76bd /libavformat/file.c | |
parent | b5bea2f96065642e32e172cf57d1f36ac12a4a5d (diff) | |
parent | 07584eaf4a95db3f11d3bc411f9786932829e82b (diff) | |
download | ffmpeg-c942e8b1d75243b97db24e0c75f7d5c7b9d585eb.tar.gz |
Merge commit '07584eaf4a95db3f11d3bc411f9786932829e82b'
* commit '07584eaf4a95db3f11d3bc411f9786932829e82b':
mpegts: check substreams before discarding
Add a smooth streaming segmenter muxer
file: Add an avoption for disabling truncating existing files on open
img2dec: always close AVIOContexts
rtpdec_jpeg: Error out on other unsupported type values as well
rtpdec_jpeg: Disallow using the reserved q values
rtpdec_jpeg: Fold the default qtables case into an existing if statement
rtpdec_jpeg: Store and reuse old qtables for q values 128-254
rtpdec_jpeg: Simplify the calculation of the number of qtables
rtpdec_jpeg: Add more comments about the fields in the SOF0 section
rtpdec_jpeg: Clarify where the subsampling magic numbers come from
rtpdec_jpeg: Don't use a bitstream writer for the EOI marker
rtpdec_jpeg: Don't needlessly use a bitstream writer for the header
rtpdec_jpeg: Simplify writing of the jpeg header
rtpdec_jpeg: Merge two if statements
rtpdec_jpeg: Write the DHT section properly
Conflicts:
libavformat/Makefile
libavformat/allformats.c
libavformat/version.h
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat/file.c')
-rw-r--r-- | libavformat/file.c | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/libavformat/file.c b/libavformat/file.c index 906ecddd42..e21148e2b4 100644 --- a/libavformat/file.c +++ b/libavformat/file.c @@ -20,6 +20,7 @@ */ #include "libavutil/avstring.h" +#include "libavutil/opt.h" #include "avformat.h" #include <fcntl.h> #if HAVE_IO_H @@ -45,9 +46,23 @@ /* standard file protocol */ typedef struct FileContext { + const AVClass *class; int fd; + int trunc; } FileContext; +static const AVOption file_options[] = { + { "truncate", "Truncate existing files on write", offsetof(FileContext, trunc), AV_OPT_TYPE_INT, { .i64 = 1 }, 0, 1, AV_OPT_FLAG_ENCODING_PARAM }, + { NULL } +}; + +static const AVClass file_class = { + .class_name = "file", + .item_name = av_default_item_name, + .option = file_options, + .version = LIBAVUTIL_VERSION_INT, +}; + static int file_read(URLContext *h, unsigned char *buf, int size) { FileContext *c = h->priv_data; @@ -93,9 +108,13 @@ static int file_open(URLContext *h, const char *filename, int flags) av_strstart(filename, "file:", &filename); if (flags & AVIO_FLAG_WRITE && flags & AVIO_FLAG_READ) { - access = O_CREAT | O_TRUNC | O_RDWR; + access = O_CREAT | O_RDWR; + if (c->trunc) + access |= O_TRUNC; } else if (flags & AVIO_FLAG_WRITE) { - access = O_CREAT | O_TRUNC | O_WRONLY; + access = O_CREAT | O_WRONLY; + if (c->trunc) + access |= O_TRUNC; } else { access = O_RDONLY; } @@ -140,6 +159,7 @@ URLProtocol ff_file_protocol = { .url_get_file_handle = file_get_handle, .url_check = file_check, .priv_data_size = sizeof(FileContext), + .priv_data_class = &file_class, }; #endif /* CONFIG_FILE_PROTOCOL */ |