aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2014-06-01 23:56:17 +0200
committerMichael Niedermayer <michaelni@gmx.at>2014-06-01 23:56:22 +0200
commit6b9cbc9a1164988b3517f4f160f7937e1644cdc3 (patch)
tree18f7678940d2fb685312ba02cfdd4101ece5ba69
parent8225bf95bc3ffc9757879d2eb092cf3fa9d6b26f (diff)
parent3b18857ab301d2a0b3e86e9d85eed76f0798a29c (diff)
downloadffmpeg-6b9cbc9a1164988b3517f4f160f7937e1644cdc3.tar.gz
Merge commit '3b18857ab301d2a0b3e86e9d85eed76f0798a29c'
* commit '3b18857ab301d2a0b3e86e9d85eed76f0798a29c': rtmppkt: Add method to read an AMF string that is not prefixed by its type Merged-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r--libavformat/rtmppkt.c14
-rw-r--r--libavformat/rtmppkt.h17
2 files changed, 27 insertions, 4 deletions
diff --git a/libavformat/rtmppkt.c b/libavformat/rtmppkt.c
index 65d5dd9d57..92172dc366 100644
--- a/libavformat/rtmppkt.c
+++ b/libavformat/rtmppkt.c
@@ -102,13 +102,11 @@ int ff_amf_read_number(GetByteContext *bc, double *val)
return 0;
}
-int ff_amf_read_string(GetByteContext *bc, uint8_t *str,
- int strsize, int *length)
+int ff_amf_get_string(GetByteContext *bc, uint8_t *str,
+ int strsize, int *length)
{
int stringlen = 0;
int readsize;
- if (bytestream2_get_byte(bc) != AMF_DATA_TYPE_STRING)
- return AVERROR_INVALIDDATA;
stringlen = bytestream2_get_be16(bc);
if (stringlen + 1 > strsize)
return AVERROR(EINVAL);
@@ -122,6 +120,14 @@ int ff_amf_read_string(GetByteContext *bc, uint8_t *str,
return 0;
}
+int ff_amf_read_string(GetByteContext *bc, uint8_t *str,
+ int strsize, int *length)
+{
+ if (bytestream2_get_byte(bc) != AMF_DATA_TYPE_STRING)
+ return AVERROR_INVALIDDATA;
+ return ff_amf_get_string(bc, str, strsize, length);
+}
+
int ff_amf_read_null(GetByteContext *bc)
{
if (bytestream2_get_byte(bc) != AMF_DATA_TYPE_NULL)
diff --git a/libavformat/rtmppkt.h b/libavformat/rtmppkt.h
index 0d98f60981..a082b45f98 100644
--- a/libavformat/rtmppkt.h
+++ b/libavformat/rtmppkt.h
@@ -278,6 +278,23 @@ int ff_amf_read_bool(GetByteContext *gbc, int *val);
int ff_amf_read_number(GetByteContext *gbc, double *val);
/**
+ * Get AMF string value.
+ *
+ * This function behaves the same as ff_amf_read_string except that
+ * it does not expect the AMF type prepended to the actual data.
+ * Appends a trailing null byte to output string in order to
+ * ease later parsing.
+ *
+ *@param[in,out] gbc GetByteContext initialized with AMF-formatted data
+ *@param[out] str read string
+ *@param[in] strsize buffer size available to store the read string
+ *@param[out] length read string length
+ *@return 0 on success or an AVERROR code on failure
+*/
+int ff_amf_get_string(GetByteContext *bc, uint8_t *str,
+ int strsize, int *length);
+
+/**
* Read AMF string value.
*
* Appends a trailing null byte to output string in order to