]> git.sesse.net Git - ffmpeg/commitdiff
avio: Add avio_read wrapper to simplify error checking
authorVittorio Giovara <vittorio.giovara@gmail.com>
Tue, 26 May 2015 13:24:38 +0000 (14:24 +0100)
committerLuca Barbato <lu_zero@gentoo.org>
Sun, 31 May 2015 11:05:13 +0000 (13:05 +0200)
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
libavformat/avio_internal.h
libavformat/aviobuf.c

index c8630ab66ef93685684803adb3e769abd4c9e3ea..aff556421534cf162b0bf79c4b6c7a583427ae01 100644 (file)
@@ -85,6 +85,13 @@ int ffio_rewind_with_probe_data(AVIOContext *s, unsigned char *buf, int buf_size
 
 uint64_t ffio_read_varlen(AVIOContext *bc);
 
+/**
+ * Read size bytes from AVIOContext into buf.
+ * Check that exactly size bytes have been read.
+ * @return number of bytes read or AVERROR
+ */
+int ffio_read_size(AVIOContext *s, unsigned char *buf, int size);
+
 /** @warning must be called before any I/O */
 int ffio_set_buf_size(AVIOContext *s, int buf_size);
 
index 59f807cbd3bb399b9e8bca952b4c9a9b5a553fdb..d3e345295446c6ba2afbef808fbaf751c4b8b3f2 100644 (file)
@@ -496,6 +496,14 @@ int avio_read(AVIOContext *s, unsigned char *buf, int size)
     return size1 - size;
 }
 
+int ffio_read_size(AVIOContext *s, unsigned char *buf, int size)
+{
+    int ret = avio_read(s, buf, size);
+    if (ret != size)
+        return AVERROR_INVALIDDATA;
+    return ret;
+}
+
 int ffio_read_indirect(AVIOContext *s, unsigned char *buf, int size, const unsigned char **data)
 {
     if (s->buf_end - s->buf_ptr >= size && !s->write_flag) {