Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Open sidebar
VideoLAN
x264
Commits
91e0ff6b
Commit
91e0ff6b
authored
Jul 04, 2008
by
Loren Merritt
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
faster ue/se/te write
parent
ab90da74
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
45 additions
and
84 deletions
+45
-84
common/bs.h
common/bs.h
+45
-84
No files found.
common/bs.h
View file @
91e0ff6b
...
...
@@ -132,73 +132,61 @@ static inline void bs_align_1( bs_t *s )
/* golomb functions */
static
const
uint8_t
i_size0_255
[
256
]
=
{
1
,
1
,
2
,
2
,
3
,
3
,
3
,
3
,
4
,
4
,
4
,
4
,
4
,
4
,
4
,
4
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
static
const
uint8_t
x264_ue_size_tab
[
256
]
=
{
1
,
1
,
3
,
3
,
5
,
5
,
5
,
5
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
};
static
inline
void
bs_write_ue_big
(
bs_t
*
s
,
unsigned
int
val
)
{
int
i_size
=
0
;
if
(
val
==
0
)
bs_write1
(
s
,
1
);
else
int
size
=
0
;
int
tmp
=
++
val
;
if
(
tmp
>=
0x10000
)
{
unsigned
int
tmp
=
++
val
;
if
(
tmp
>=
0x00010000
)
{
i_size
+=
16
;
tmp
>>=
16
;
}
if
(
tmp
>=
0x100
)
{
i_size
+=
8
;
tmp
>>=
8
;
}
i_size
+=
i_size0_255
[
tmp
];
bs_write
(
s
,
2
*
i_size
-
1
,
val
);
bs_write32
(
s
,
0
);
tmp
>>=
16
;
}
if
(
tmp
>=
0x100
)
{
size
=
16
;
tmp
>>=
8
;
}
size
+=
x264_ue_size_tab
[
tmp
];
bs_write
(
s
,
size
,
val
);
}
/* Only works on values under 255. */
static
inline
void
bs_write_ue
(
bs_t
*
s
,
int
val
)
{
if
(
val
==
0
)
bs_write1
(
s
,
1
);
else
bs_write
(
s
,
2
*
i_size0_255
[
val
+
1
]
-
1
,
val
+
1
);
bs_write
(
s
,
x264_ue_size_tab
[
val
+
1
],
val
+
1
);
}
static
inline
void
bs_write_se
(
bs_t
*
s
,
int
val
)
{
int
i_size
=
0
;
val
=
val
<=
0
?
-
val
*
2
:
val
*
2
-
1
;
if
(
val
==
0
)
bs_write1
(
s
,
1
);
else
int
size
=
0
;
int
tmp
=
val
=
val
<=
0
?
-
val
*
2
+
1
:
val
*
2
;
if
(
tmp
>=
0x100
)
{
unsigned
int
tmp
=
++
val
;
if
(
tmp
>=
0x100
)
{
i_size
+=
8
;
tmp
>>=
8
;
}
i_size
+=
i_size0_255
[
tmp
];
bs_write
(
s
,
2
*
i_size
-
1
,
val
);
size
=
16
;
tmp
>>=
8
;
}
size
+=
x264_ue_size_tab
[
tmp
];
bs_write
(
s
,
size
,
val
);
}
static
inline
void
bs_write_te
(
bs_t
*
s
,
int
x
,
int
val
)
...
...
@@ -215,50 +203,22 @@ static inline void bs_rbsp_trailing( bs_t *s )
bs_flush
(
s
);
}
static
const
uint8_t
i_size0_254
[
255
]
=
{
1
,
3
,
3
,
5
,
5
,
5
,
5
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
};
static
inline
int
bs_size_ue
(
unsigned
int
val
)
{
return
i_size0_254
[
val
];
return
x264_ue_size_tab
[
val
+
1
];
}
static
inline
int
bs_size_ue_big
(
unsigned
int
val
)
{
if
(
val
<
255
)
return
i_size0_254
[
val
];
return
x264_ue_size_tab
[
val
+
1
];
else
{
val
++
;
val
=
(
val
>>
8
)
-
1
;
return
i_size0_254
[
val
]
+
16
;
}
return
x264_ue_size_tab
[(
val
+
1
)
>>
8
]
+
16
;
}
static
inline
int
bs_size_se
(
int
val
)
{
val
=
val
<=
0
?
-
val
*
2
:
val
*
2
-
1
;
if
(
val
<
255
)
return
i_size0_254
[
val
];
else
{
val
++
;
val
=
(
val
>>
8
)
-
1
;
return
i_size0_254
[
val
]
+
16
;
}
return
bs_size_ue_big
(
val
<=
0
?
-
val
*
2
:
val
*
2
-
1
);
}
static
inline
int
bs_size_te
(
int
x
,
int
val
)
...
...
@@ -266,8 +226,9 @@ static inline int bs_size_te( int x, int val )
if
(
x
==
1
)
return
1
;
else
if
(
x
>
1
)
return
i_size0_254
[
val
];
return
0
;
return
x264_ue_size_tab
[
val
+
1
];
else
return
0
;
}
#endif
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment