avio: add av_put_str and deprecate put_strz in favor of it
authorAnton Khirnov <anton@khirnov.net>
Fri, 21 Jan 2011 19:18:07 +0000 (19:18 +0000)
committerMans Rullgard <mans@mansr.com>
Fri, 21 Jan 2011 20:21:03 +0000 (20:21 +0000)
Signed-off-by: Mans Rullgard <mans@mansr.com>
libavformat/avienc.c
libavformat/avio.h
libavformat/aviobuf.c
libavformat/ffmenc.c
libavformat/version.h

index c9476d5..98b0ad7 100644 (file)
@@ -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);
     }
index 198507e..9f71c19 100644 (file)
@@ -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.
index df76507..4f0c16c 100644 (file)
@@ -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){
index c5c59db..10c0f11 100644 (file)
@@ -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);
index 8cea555..9a902aa 100644 (file)
@@ -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