Make hex_to_data a lavf internal function
This is useful for other future RTP depacketizers Originally committed as revision 24747 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
f240ed18ef
commit
311baee795
@ -53,6 +53,16 @@ const char *small_strptime(const char *p, const char *fmt,
|
|||||||
|
|
||||||
char *ff_data_to_hex(char *buf, const uint8_t *src, int size, int lowercase);
|
char *ff_data_to_hex(char *buf, const uint8_t *src, int size, int lowercase);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse a string of hexadecimal strings. Any space between the hexadecimal
|
||||||
|
* digits is ignored.
|
||||||
|
*
|
||||||
|
* @param data if non-null, the parsed data is written to this pointer
|
||||||
|
* @param p the string to parse
|
||||||
|
* @return the number of bytes written (or to be written, if data is null)
|
||||||
|
*/
|
||||||
|
int ff_hex_to_data(uint8_t *data, const char *p);
|
||||||
|
|
||||||
void ff_program_add_stream_index(AVFormatContext *ac, int progid, unsigned int idx);
|
void ff_program_add_stream_index(AVFormatContext *ac, int progid, unsigned int idx);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -61,35 +61,6 @@ struct PayloadContext
|
|||||||
int cur_au_index;
|
int cur_au_index;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* return the length and optionally the data */
|
|
||||||
static int hex_to_data(uint8_t *data, const char *p)
|
|
||||||
{
|
|
||||||
int c, len, v;
|
|
||||||
|
|
||||||
len = 0;
|
|
||||||
v = 1;
|
|
||||||
for (;;) {
|
|
||||||
p += strspn(p, SPACE_CHARS);
|
|
||||||
if (*p == '\0')
|
|
||||||
break;
|
|
||||||
c = toupper((unsigned char) *p++);
|
|
||||||
if (c >= '0' && c <= '9')
|
|
||||||
c = c - '0';
|
|
||||||
else if (c >= 'A' && c <= 'F')
|
|
||||||
c = c - 'A' + 10;
|
|
||||||
else
|
|
||||||
break;
|
|
||||||
v = (v << 4) | c;
|
|
||||||
if (v & 0x100) {
|
|
||||||
if (data)
|
|
||||||
data[len] = v;
|
|
||||||
len++;
|
|
||||||
v = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return len;
|
|
||||||
}
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
const char *str;
|
const char *str;
|
||||||
uint16_t type;
|
uint16_t type;
|
||||||
@ -139,14 +110,14 @@ static void free_context(PayloadContext * data)
|
|||||||
static int parse_fmtp_config(AVCodecContext * codec, char *value)
|
static int parse_fmtp_config(AVCodecContext * codec, char *value)
|
||||||
{
|
{
|
||||||
/* decode the hexa encoded parameter */
|
/* decode the hexa encoded parameter */
|
||||||
int len = hex_to_data(NULL, value);
|
int len = ff_hex_to_data(NULL, value);
|
||||||
if (codec->extradata)
|
if (codec->extradata)
|
||||||
av_free(codec->extradata);
|
av_free(codec->extradata);
|
||||||
codec->extradata = av_mallocz(len + FF_INPUT_BUFFER_PADDING_SIZE);
|
codec->extradata = av_mallocz(len + FF_INPUT_BUFFER_PADDING_SIZE);
|
||||||
if (!codec->extradata)
|
if (!codec->extradata)
|
||||||
return AVERROR(ENOMEM);
|
return AVERROR(ENOMEM);
|
||||||
codec->extradata_size = len;
|
codec->extradata_size = len;
|
||||||
hex_to_data(codec->extradata, value);
|
ff_hex_to_data(codec->extradata, value);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3600,6 +3600,34 @@ char *ff_data_to_hex(char *buff, const uint8_t *src, int s, int lowercase)
|
|||||||
return buff;
|
return buff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int ff_hex_to_data(uint8_t *data, const char *p)
|
||||||
|
{
|
||||||
|
int c, len, v;
|
||||||
|
|
||||||
|
len = 0;
|
||||||
|
v = 1;
|
||||||
|
for (;;) {
|
||||||
|
p += strspn(p, SPACE_CHARS);
|
||||||
|
if (*p == '\0')
|
||||||
|
break;
|
||||||
|
c = toupper((unsigned char) *p++);
|
||||||
|
if (c >= '0' && c <= '9')
|
||||||
|
c = c - '0';
|
||||||
|
else if (c >= 'A' && c <= 'F')
|
||||||
|
c = c - 'A' + 10;
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
v = (v << 4) | c;
|
||||||
|
if (v & 0x100) {
|
||||||
|
if (data)
|
||||||
|
data[len] = v;
|
||||||
|
len++;
|
||||||
|
v = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return len;
|
||||||
|
}
|
||||||
|
|
||||||
void av_set_pts_info(AVStream *s, int pts_wrap_bits,
|
void av_set_pts_info(AVStream *s, int pts_wrap_bits,
|
||||||
unsigned int pts_num, unsigned int pts_den)
|
unsigned int pts_num, unsigned int pts_den)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user