mirror of https://git.ffmpeg.org/ffmpeg.git
rtmppkt: Add method to read an AMF string that is not prefixed by its type
Signed-off-by: Martin Storsjö <martin@martin.st>
This commit is contained in:
parent
a1859032e3
commit
3b18857ab3
|
@ -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)
|
||||
|
|
|
@ -277,6 +277,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.
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue