Commit 81a91269 authored by Mark Reid's avatar Mark Reid Committed by Michael Niedermayer

libavformat/avio: added avio_put_str16be

Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parent 6394acaf
...@@ -15,6 +15,9 @@ libavutil: 2014-08-09 ...@@ -15,6 +15,9 @@ libavutil: 2014-08-09
API changes, most recent first: API changes, most recent first:
2015-03-xx - xxxxxxx - lavf 56.24.100
Add avio_put_str16be()
2015-xx-xx - xxxxxxx - lavc 56.13 2015-xx-xx - xxxxxxx - lavc 56.13
Add width, height, coded_width, coded_height and format to Add width, height, coded_width, coded_height and format to
AVCodecParserContext. AVCodecParserContext.
......
...@@ -233,6 +233,12 @@ int avio_put_str(AVIOContext *s, const char *str); ...@@ -233,6 +233,12 @@ int avio_put_str(AVIOContext *s, const char *str);
*/ */
int avio_put_str16le(AVIOContext *s, const char *str); int avio_put_str16le(AVIOContext *s, const char *str);
/**
* Convert an UTF-8 string to UTF-16BE and write it.
* @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 * Passing this as the "whence" parameter to a seek function causes it to
* return the filesize without seeking anywhere. Supporting this is optional. * return the filesize without seeking anywhere. Supporting this is optional.
......
...@@ -342,7 +342,7 @@ int avio_put_str(AVIOContext *s, const char *str) ...@@ -342,7 +342,7 @@ int avio_put_str(AVIOContext *s, const char *str)
return len; return len;
} }
int avio_put_str16le(AVIOContext *s, const char *str) static inline int put_str16(AVIOContext *s, const char *str, const int be)
{ {
const uint8_t *q = str; const uint8_t *q = str;
int ret = 0; int ret = 0;
...@@ -353,12 +353,16 @@ int avio_put_str16le(AVIOContext *s, const char *str) ...@@ -353,12 +353,16 @@ int avio_put_str16le(AVIOContext *s, const char *str)
uint16_t tmp; uint16_t tmp;
GET_UTF8(ch, *q++, goto invalid;) GET_UTF8(ch, *q++, goto invalid;)
PUT_UTF16(ch, tmp, avio_wl16(s, tmp); ret += 2;) PUT_UTF16(ch, tmp, be ? avio_wb16(s, tmp) : avio_wl16(s, tmp);
ret += 2;)
continue; continue;
invalid: invalid:
av_log(s, AV_LOG_ERROR, "Invaid UTF8 sequence in avio_put_str16le\n"); av_log(s, AV_LOG_ERROR, "Invaid UTF8 sequence in avio_put_str16%s\n", be ? "be" : "le");
err = AVERROR(EINVAL); err = AVERROR(EINVAL);
} }
if (be)
avio_wb16(s, 0);
else
avio_wl16(s, 0); avio_wl16(s, 0);
if (err) if (err)
return err; return err;
...@@ -366,6 +370,17 @@ invalid: ...@@ -366,6 +370,17 @@ invalid:
return ret; return ret;
} }
#define PUT_STR16(type, big_endian) \
int avio_put_str16 ## type(AVIOContext *s, const char *str) \
{ \
return put_str16(s, str, big_endian); \
}
PUT_STR16(le, 0)
PUT_STR16(be, 1)
#undef PUT_STR16
int ff_get_v_length(uint64_t val) int ff_get_v_length(uint64_t val)
{ {
int i = 1; int i = 1;
......
...@@ -30,8 +30,8 @@ ...@@ -30,8 +30,8 @@
#include "libavutil/version.h" #include "libavutil/version.h"
#define LIBAVFORMAT_VERSION_MAJOR 56 #define LIBAVFORMAT_VERSION_MAJOR 56
#define LIBAVFORMAT_VERSION_MINOR 23 #define LIBAVFORMAT_VERSION_MINOR 24
#define LIBAVFORMAT_VERSION_MICRO 106 #define LIBAVFORMAT_VERSION_MICRO 100
#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \ #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
LIBAVFORMAT_VERSION_MINOR, \ LIBAVFORMAT_VERSION_MINOR, \
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment