[FFmpeg-devel] [PATCH] avio: add ff_put_str and deprecate put_strz in favor of it
Anton Khirnov
anton
Fri Jan 21 18:07:58 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..3130364 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);
+ ff_put_str(pb, str);
if (len & 1)
put_byte(pb, 0);
}
diff --git a/libavformat/avio.h b/libavformat/avio.h
index 198507e..0c2d2db 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 ff_put_str(ByteIOContext *s, const char *str);
/**
* fseek() equivalent for ByteIOContext.
diff --git a/libavformat/aviobuf.c b/libavformat/aviobuf.c
index df76507..ba879a9 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
+ ff_put_str(s, str);
+}
+#endif
+
+int ff_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..efff5bb 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");
+ ff_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