Simplify klv_decode_ber_length
Originally committed as revision 7475 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
28221dd0fb
commit
1fe68f0e7c
@ -182,19 +182,15 @@ static const uint8_t mxf_essence_element_key[] = { 0x06,0x0e,0x2b,0x
|
|||||||
|
|
||||||
static int64_t klv_decode_ber_length(ByteIOContext *pb)
|
static int64_t klv_decode_ber_length(ByteIOContext *pb)
|
||||||
{
|
{
|
||||||
int64_t size = 0;
|
uint64_t size = get_byte(pb);
|
||||||
uint8_t length = get_byte(pb);
|
if (size & 0x80) { /* long form */
|
||||||
int type = length >> 7;
|
int bytes_num = size & 0x7f;
|
||||||
|
|
||||||
if (type) { /* long form */
|
|
||||||
int bytes_num = length & 0x7f;
|
|
||||||
/* SMPTE 379M 5.3.4 guarantee that bytes_num must not exceed 8 bytes */
|
/* SMPTE 379M 5.3.4 guarantee that bytes_num must not exceed 8 bytes */
|
||||||
if (bytes_num > 8)
|
if (bytes_num > 8)
|
||||||
return -1;
|
return -1;
|
||||||
|
size = 0;
|
||||||
while (bytes_num--)
|
while (bytes_num--)
|
||||||
size = size << 8 | get_byte(pb);
|
size = size << 8 | get_byte(pb);
|
||||||
} else {
|
|
||||||
size = length & 0x7f;
|
|
||||||
}
|
}
|
||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user