diff options
author | Marton Balint <cus@passwd.hu> | 2021-11-30 00:38:30 +0100 |
---|---|---|
committer | Marton Balint <cus@passwd.hu> | 2021-12-12 00:32:20 +0100 |
commit | 64834bb86a133400970d203656a30ae6a3d2832f (patch) | |
tree | 5a037263437ff816b44b5209c18d8e61c6c99915 /libavformat/avformat.h | |
parent | 8d66a07d657ba7ed8c5e95345d4eec770b55e438 (diff) |
avformat: introduce AVFormatContext io_close2 which returns an int
Otherwise there is no way to detect an error returned by avio_close() because
ff_format_io_close cannot get the return value.
Checking the return value of the close function is important in order to check
if all data was successfully written and the underlying close() operation was
successful.
It can also be useful even for read mode because it can return any pending
AVIOContext error, so the user don't have to manually check AVIOContext->error.
In order to still support if the user overrides io_close, the generic code only
uses io_close2 if io_close is either NULL or the default io_close callback.
Signed-off-by: Marton Balint <cus@passwd.hu>
Diffstat (limited to 'libavformat/avformat.h')
-rw-r--r-- | libavformat/avformat.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/libavformat/avformat.h b/libavformat/avformat.h index 75699f3a32..70b36d7682 100644 --- a/libavformat/avformat.h +++ b/libavformat/avformat.h @@ -1786,6 +1786,19 @@ typedef struct AVFormatContext { * - decoding: set by user */ int max_probe_packets; + + /** + * A callback for closing the streams opened with AVFormatContext.io_open(). + * + * Using this is preferred over io_close, because this can return an error. + * Therefore this callback is used instead of io_close by the generic + * libavformat code if io_close is NULL or the default. + * + * @param s the format context + * @param pb IO context to be closed and freed + * @return 0 on success, a negative AVERROR code on failure + */ + int (*io_close2)(struct AVFormatContext *s, AVIOContext *pb); } AVFormatContext; /** |