[FFmpeg-cvslog] avio: Add avio_read wrapper to simplify error checking

Vittorio Giovara git at videolan.org
Mon Jun 1 01:07:47 CEST 2015


ffmpeg | branch: master | Vittorio Giovara <vittorio.giovara at gmail.com> | Tue May 26 14:24:38 2015 +0100| [bff0349d9da527084e1433167466d8afc9e25c7f] | committer: Luca Barbato

avio: Add avio_read wrapper to simplify error checking

Signed-off-by: Luca Barbato <lu_zero at gentoo.org>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=bff0349d9da527084e1433167466d8afc9e25c7f
---

 libavformat/avio_internal.h |    7 +++++++
 libavformat/aviobuf.c       |    8 ++++++++
 2 files changed, 15 insertions(+)

diff --git a/libavformat/avio_internal.h b/libavformat/avio_internal.h
index c8630ab..aff5564 100644
--- a/libavformat/avio_internal.h
+++ b/libavformat/avio_internal.h
@@ -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);
 
diff --git a/libavformat/aviobuf.c b/libavformat/aviobuf.c
index 59f807c..d3e3452 100644
--- a/libavformat/aviobuf.c
+++ b/libavformat/aviobuf.c
@@ -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) {



More information about the ffmpeg-cvslog mailing list