From 252d6200c36e7eaa79f8d5205b7d731179e94897 Mon Sep 17 00:00:00 2001 From: Luca Barbato Date: Fri, 5 Jun 2015 23:21:18 +0200 Subject: [PATCH] avio: Add avio_put_str16be --- doc/APIchanges | 3 +++ libavformat/avio.h | 12 ++++++++++++ libavformat/aviobuf.c | 36 +++++++++++++++++++++--------------- libavformat/version.h | 2 +- 4 files changed, 37 insertions(+), 16 deletions(-) diff --git a/doc/APIchanges b/doc/APIchanges index 2c443b01b0..0ddfb11e03 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -13,6 +13,9 @@ libavutil: 2014-08-09 API changes, most recent first: +2015-xx-xx - xxxxxxx - lavf 56.20.0 - avio.h + Add avio_put_str16be. + 2015-xx-xx - xxxxxxx - lavu 54.14.0 - cpu.h Add AV_CPU_FLAG_AVXSLOW. diff --git a/libavformat/avio.h b/libavformat/avio.h index 3360e8296e..a1497d9d65 100644 --- a/libavformat/avio.h +++ b/libavformat/avio.h @@ -178,10 +178,22 @@ int avio_put_str(AVIOContext *s, const char *str); /** * Convert an UTF-8 string to UTF-16LE and write it. + * @param s the AVIOContext + * @param str NULL-terminated UTF-8 string + * * @return number of bytes written. */ int avio_put_str16le(AVIOContext *s, const char *str); +/** + * Convert an UTF-8 string to UTF-16BE and write it. + * @param s the AVIOContext + * @param str NULL-terminated UTF-8 string + * + * @return number of bytes written. + */ +int avio_put_str16be(AVIOContext *s, const char *str); + /** * Passing this as the "whence" parameter to a seek function causes it to * return the filesize without seeking anywhere. Supporting this is optional. diff --git a/libavformat/aviobuf.c b/libavformat/aviobuf.c index d3e3452954..6716772464 100644 --- a/libavformat/aviobuf.c +++ b/libavformat/aviobuf.c @@ -284,22 +284,28 @@ int avio_put_str(AVIOContext *s, const char *str) return len; } -int avio_put_str16le(AVIOContext *s, const char *str) -{ - const uint8_t *q = str; - int ret = 0; - - while (*q) { - uint32_t ch; - uint16_t tmp; - - GET_UTF8(ch, *q++, break;) - PUT_UTF16(ch, tmp, avio_wl16(s, tmp); ret += 2;) +#define PUT_STR16(type, write) \ + int avio_put_str16 ## type(AVIOContext * s, const char *str) \ + { \ + const uint8_t *q = str; \ + int ret = 0; \ + \ + while (*q) { \ + uint32_t ch; \ + uint16_t tmp; \ + \ + GET_UTF8(ch, *q++, break; ) \ + PUT_UTF16(ch, tmp, write(s, tmp); ret += 2; ) \ + } \ + write(s, 0); \ + ret += 2; \ + return ret; \ } - avio_wl16(s, 0); - ret += 2; - return ret; -} + +PUT_STR16(le, avio_wl16) +PUT_STR16(be, avio_wb16) + +#undef PUT_STR16 int ff_get_v_length(uint64_t val) { diff --git a/libavformat/version.h b/libavformat/version.h index 714ec72e2c..3be6fc69c8 100644 --- a/libavformat/version.h +++ b/libavformat/version.h @@ -30,7 +30,7 @@ #include "libavutil/version.h" #define LIBAVFORMAT_VERSION_MAJOR 56 -#define LIBAVFORMAT_VERSION_MINOR 19 +#define LIBAVFORMAT_VERSION_MINOR 20 #define LIBAVFORMAT_VERSION_MICRO 0 #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \