[FFmpeg-devel] [PATCH 2/6] avio: add av_put_str and deprecate put_strz in favor of it

Anton Khirnov anton
Fri Jan 21 20:18:07 CET 2011


---
 libavformat/avienc.c  |    2 +-
 libavformat/avio.h    |   10 +++++++++-
 libavformat/aviobuf.c |   16 +++++++++++++---
 libavformat/ffmenc.c  |    2 +-
 libavformat/version.h |    3 +++
 5 files changed, 27 insertions(+), 6 deletions(-)

diff --git a/libavformat/avienc.c b/libavformat/avienc.c
index c9476d5..98b0ad7 100644
--- a/libavformat/avienc.c
+++ b/libavformat/avienc.c
@@ -109,7 +109,7 @@ static void avi_write_info_tag(ByteIOContext *pb, const char *tag, const char *s
         len++;
         put_tag(pb, tag);
         put_le32(pb, len);
-        put_strz(pb, str);
+        avio_put_str(pb, str);
         if (len & 1)
             put_byte(pb, 0);
     }
diff --git a/libavformat/avio.h b/libavformat/avio.h
index 198507e..9f71c19 100644
--- a/libavformat/avio.h
+++ b/libavformat/avio.h
@@ -367,7 +367,15 @@ void put_le16(ByteIOContext *s, unsigned int val);
 void put_be16(ByteIOContext *s, unsigned int val);
 void put_tag(ByteIOContext *s, const char *tag);
 
-void put_strz(ByteIOContext *s, const char *buf);
+#if FF_API_OLD_AVIO
+attribute_deprecated void put_strz(ByteIOContext *s, const char *buf);
+#endif
+
+/**
+ * Write a NULL-terminated string.
+ * @return number of bytes written.
+ */
+int avio_put_str(ByteIOContext *s, const char *str);
 
 /**
  * fseek() equivalent for ByteIOContext.
diff --git a/libavformat/aviobuf.c b/libavformat/aviobuf.c
index df76507..4f0c16c 100644
--- a/libavformat/aviobuf.c
+++ b/libavformat/aviobuf.c
@@ -265,12 +265,22 @@ void put_be32(ByteIOContext *s, unsigned int val)
     put_byte(s, val);
 }
 
+#if FF_API_OLD_AVIO
 void put_strz(ByteIOContext *s, const char *str)
 {
-    if (str)
-        put_buffer(s, (const unsigned char *) str, strlen(str) + 1);
-    else
+    avio_put_str(s, str);
+}
+#endif
+
+int avio_put_str(ByteIOContext *s, const char *str)
+{
+    int len = 1;
+    if (str) {
+        len += strlen(str);
+        put_buffer(s, (const unsigned char *) str, len);
+    } else
         put_byte(s, 0);
+    return len;
 }
 
 int ff_get_v_length(uint64_t val){
diff --git a/libavformat/ffmenc.c b/libavformat/ffmenc.c
index c5c59db..10c0f11 100644
--- a/libavformat/ffmenc.c
+++ b/libavformat/ffmenc.c
@@ -132,7 +132,7 @@ static int ffm_write_header(AVFormatContext *s)
             put_be16(pb, (int) (codec->qcompress * 10000.0));
             put_be16(pb, (int) (codec->qblur * 10000.0));
             put_be32(pb, codec->bit_rate_tolerance);
-            put_strz(pb, codec->rc_eq ? codec->rc_eq : "tex^qComp");
+            avio_put_str(pb, codec->rc_eq ? codec->rc_eq : "tex^qComp");
             put_be32(pb, codec->rc_max_rate);
             put_be32(pb, codec->rc_min_rate);
             put_be32(pb, codec->rc_buffer_size);
diff --git a/libavformat/version.h b/libavformat/version.h
index 8cea555..9a902aa 100644
--- a/libavformat/version.h
+++ b/libavformat/version.h
@@ -86,5 +86,8 @@
 #ifndef FF_API_SYMVER
 #define FF_API_SYMVER                  (LIBAVFORMAT_VERSION_MAJOR < 53)
 #endif
+#ifndef FF_API_OLD_AVIO
+#define FF_API_OLD_AVIO                (LIBAVFORMAT_VERSION_MAJOR < 53)
+#endif
 
 #endif //AVFORMAT_VERSION_H
-- 
1.7.2.3




More information about the ffmpeg-devel mailing list