Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Xiph.Org
aom-rav1e
Commits
b2ae57f1
Commit
b2ae57f1
authored
Feb 17, 2011
by
John Koleszar
Committed by
Code Review
Feb 17, 2011
Browse files
Merge "Use endian-neutral bitstream packing/unpacking"
parents
ac10665a
562f1470
Changes
2
Hide whitespace changes
Inline
Side-by-side
vp8/encoder/bitstream.c
View file @
b2ae57f1
...
...
@@ -58,16 +58,6 @@ extern unsigned int active_section;
int
count_mb_seg
[
4
]
=
{
0
,
0
,
0
,
0
};
#endif
#if CONFIG_BIG_ENDIAN
# define make_endian_16(a) \
(((unsigned int)(a & 0xff)) << 8) | (((unsigned int)(a & 0xff00)) >> 8)
# define make_endian_32(a) \
(((unsigned int)(a & 0xff)) << 24) | (((unsigned int)(a & 0xff00)) << 8) | \
(((unsigned int)(a & 0xff0000)) >> 8) | (((unsigned int)(a & 0xff000000)) >> 24)
#else
# define make_endian_16(a) a
# define make_endian_32(a) a
#endif
static
void
update_mode
(
vp8_writer
*
const
w
,
...
...
@@ -1392,13 +1382,20 @@ void vp8_pack_bitstream(VP8_COMP *cpi, unsigned char *dest, unsigned long *size)
// every keyframe send startcode, width, height, scale factor, clamp and color type
if
(
oh
.
type
==
KEY_FRAME
)
{
int
v
;
// Start / synch code
cx_data
[
0
]
=
0x9D
;
cx_data
[
1
]
=
0x01
;
cx_data
[
2
]
=
0x2a
;
*
((
unsigned
short
*
)(
cx_data
+
3
))
=
make_endian_16
((
pc
->
horiz_scale
<<
14
)
|
pc
->
Width
);
*
((
unsigned
short
*
)(
cx_data
+
5
))
=
make_endian_16
((
pc
->
vert_scale
<<
14
)
|
pc
->
Height
);
v
=
(
pc
->
horiz_scale
<<
14
)
|
pc
->
Width
;
cx_data
[
3
]
=
v
;
cx_data
[
4
]
=
v
>>
8
;
v
=
(
pc
->
vert_scale
<<
14
)
|
pc
->
Height
;
cx_data
[
5
]
=
v
;
cx_data
[
6
]
=
v
>>
8
;
extra_bytes_packed
=
7
;
cx_data
+=
extra_bytes_packed
;
...
...
@@ -1666,19 +1663,16 @@ void vp8_pack_bitstream(VP8_COMP *cpi, unsigned char *dest, unsigned long *size)
*
size
=
cpi
->
bc2
.
pos
+
cpi
->
bc
.
pos
+
VP8_HEADER_SIZE
+
extra_bytes_packed
;
}
#if CONFIG_BIG_ENDIAN
{
int
v
=
(
oh
.
first_partition_length_in_bytes
<<
5
)
|
(
oh
.
show_frame
<<
4
)
|
(
oh
.
version
<<
1
)
|
oh
.
type
;
v
=
make_endian_32
(
v
);
vpx_memcpy
(
dest
,
&
v
,
3
);
dest
[
0
]
=
v
;
dest
[
1
]
=
v
>>
8
;
dest
[
2
]
=
v
>>
16
;
}
#else
vpx_memcpy
(
dest
,
&
oh
,
3
);
#endif
}
#ifdef ENTROPY_STATS
...
...
vp8/vp8_dx_iface.c
View file @
b2ae57f1
...
...
@@ -20,19 +20,6 @@
#define VP8_CAP_POSTPROC (CONFIG_POSTPROC ? VPX_CODEC_CAP_POSTPROC : 0)
#if CONFIG_BIG_ENDIAN
# define swap4(d)\
((d&0x000000ff)<<24) | \
((d&0x0000ff00)<<8) | \
((d&0x00ff0000)>>8) | \
((d&0xff000000)>>24)
# define swap2(d)\
((d&0x000000ff)<<8) | \
((d&0x0000ff00)>>8)
#else
# define swap4(d) d
# define swap2(d) d
#endif
typedef
vpx_codec_stream_info_t
vp8_stream_info_t
;
/* Structures for handling memory allocations */
...
...
@@ -283,8 +270,8 @@ static vpx_codec_err_t vp8_peek_si(const uint8_t *data,
if
(
c
[
0
]
!=
0x9d
||
c
[
1
]
!=
0x01
||
c
[
2
]
!=
0x2a
)
res
=
VPX_CODEC_UNSUP_BITSTREAM
;
si
->
w
=
swap2
(
*
(
const
unsigned
short
*
)(
c
+
3
))
&
0x3fff
;
si
->
h
=
swap2
(
*
(
const
unsigned
short
*
)(
c
+
5
))
&
0x3fff
;
si
->
w
=
(
c
[
3
]
|
(
c
[
4
]
<<
8
))
&
0x3fff
;
si
->
h
=
(
c
[
5
]
|
(
c
[
6
]
<<
8
))
&
0x3fff
;
/*printf("w=%d, h=%d\n", si->w, si->h);*/
if
(
!
(
si
->
h
|
si
->
w
))
...
...
Write
Preview
Supports
Markdown
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