Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
F
ffmpeg.wasm-core
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Linshizhi
ffmpeg.wasm-core
Commits
81ada1ce
Commit
81ada1ce
authored
Nov 06, 2002
by
Michael Niedermayer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
cleanup
Originally committed as revision 1172 to
svn://svn.ffmpeg.org/ffmpeg/trunk
parent
3d71589f
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
72 additions
and
128 deletions
+72
-128
common.c
libavcodec/common.c
+0
-27
common.h
libavcodec/common.h
+0
-93
mjpeg.c
libavcodec/mjpeg.c
+72
-8
No files found.
libavcodec/common.c
View file @
81ada1ce
...
...
@@ -87,33 +87,6 @@ void flush_put_bits(PutBitContext *s)
#endif
}
/* pad the end of the output stream with zeros */
#ifndef ALT_BITSTREAM_WRITER
void
jflush_put_bits
(
PutBitContext
*
s
)
{
unsigned
int
b
;
s
->
bit_buf
<<=
s
->
bit_left
;
s
->
bit_buf
|=
~
1U
>>
(
32
-
s
->
bit_left
);
/* set all the unused bits to one */
while
(
s
->
bit_left
<
32
)
{
b
=
s
->
bit_buf
>>
24
;
*
s
->
buf_ptr
++
=
b
;
if
(
b
==
0xff
)
*
s
->
buf_ptr
++
=
0
;
s
->
bit_buf
<<=
8
;
s
->
bit_left
+=
8
;
}
s
->
bit_left
=
32
;
s
->
bit_buf
=
0
;
}
#else
void
jflush_put_bits
(
PutBitContext
*
s
)
{
int
num
=
(
-
s
->
index
)
&
7
;
jput_bits
(
s
,
num
,
0xFF
>>
(
8
-
num
));
}
#endif
void
put_string
(
PutBitContext
*
pbc
,
char
*
s
)
{
while
(
*
s
){
...
...
libavcodec/common.h
View file @
81ada1ce
...
...
@@ -108,7 +108,6 @@ typedef signed int INT32;
typedef
signed
long
long
INT64
;
# ifdef HAVE_AV_CONFIG_H
# ifndef INT64_C
# define INT64_C(c) (c ## LL)
# define UINT64_C(c) (c ## ULL)
...
...
@@ -117,7 +116,6 @@ typedef signed long long INT64;
# ifdef USE_FASTMEMCPY
# include "fastmemcpy.h"
# endif
# endif
/* HAVE_AV_CONFIG_H */
#endif
/* !CONFIG_WIN32 */
...
...
@@ -220,9 +218,6 @@ void align_put_bits(PutBitContext *s);
void
flush_put_bits
(
PutBitContext
*
s
);
void
put_string
(
PutBitContext
*
pbc
,
char
*
s
);
/* jpeg specific put_bits */
void
jflush_put_bits
(
PutBitContext
*
s
);
/* bit input */
typedef
struct
GetBitContext
{
...
...
@@ -383,94 +378,6 @@ static inline void put_bits(PutBitContext *s, int n, unsigned int value)
}
#endif
#ifndef ALT_BITSTREAM_WRITER
/* for jpeg : escape 0xff with 0x00 after it */
static
inline
void
jput_bits
(
PutBitContext
*
s
,
int
n
,
unsigned
int
value
)
{
unsigned
int
bit_buf
,
b
;
int
bit_left
,
i
;
assert
(
n
==
32
||
value
<
(
1U
<<
n
));
bit_buf
=
s
->
bit_buf
;
bit_left
=
s
->
bit_left
;
//printf("n=%d value=%x cnt=%d buf=%x\n", n, value, bit_cnt, bit_buf);
/* XXX: optimize */
if
(
n
<
bit_left
)
{
bit_buf
=
(
bit_buf
<<
n
)
|
value
;
bit_left
-=
n
;
}
else
{
bit_buf
<<=
bit_left
;
bit_buf
|=
value
>>
(
n
-
bit_left
);
/* handle escape */
for
(
i
=
0
;
i
<
4
;
i
++
)
{
b
=
(
bit_buf
>>
24
);
*
(
s
->
buf_ptr
++
)
=
b
;
if
(
b
==
0xff
)
*
(
s
->
buf_ptr
++
)
=
0
;
bit_buf
<<=
8
;
}
bit_left
+=
32
-
n
;
bit_buf
=
value
;
}
s
->
bit_buf
=
bit_buf
;
s
->
bit_left
=
bit_left
;
}
#endif
#ifdef ALT_BITSTREAM_WRITER
static
inline
void
jput_bits
(
PutBitContext
*
s
,
int
n
,
int
value
)
{
int
index
=
s
->
index
;
uint32_t
*
ptr
=
(
uint32_t
*
)(((
uint8_t
*
)
s
->
buf
)
+
(
index
>>
3
));
int
v
=
ptr
[
0
];
//if(n>24) printf("%d %d\n", n, value);
v
|=
be2me_32
(
value
<<
(
32
-
n
-
(
index
&
7
)
));
if
(((
v
+
0x01010101
)
^
0xFFFFFFFF
)
&
v
&
0x80808080
)
{
/* handle idiotic (m)jpeg escapes */
uint8_t
*
bPtr
=
(
uint8_t
*
)
ptr
;
int
numChecked
=
((
index
+
n
)
>>
3
)
-
(
index
>>
3
);
v
=
be2me_32
(
v
);
*
(
bPtr
++
)
=
v
>>
24
;
if
((
v
&
0xFF000000
)
==
0xFF000000
&&
numChecked
>
0
){
*
(
bPtr
++
)
=
0x00
;
index
+=
8
;
}
*
(
bPtr
++
)
=
(
v
>>
16
)
&
0xFF
;
if
((
v
&
0x00FF0000
)
==
0x00FF0000
&&
numChecked
>
1
){
*
(
bPtr
++
)
=
0x00
;
index
+=
8
;
}
*
(
bPtr
++
)
=
(
v
>>
8
)
&
0xFF
;
if
((
v
&
0x0000FF00
)
==
0x0000FF00
&&
numChecked
>
2
){
*
(
bPtr
++
)
=
0x00
;
index
+=
8
;
}
*
(
bPtr
++
)
=
v
&
0xFF
;
if
((
v
&
0x000000FF
)
==
0x000000FF
&&
numChecked
>
3
){
*
(
bPtr
++
)
=
0x00
;
index
+=
8
;
}
*
((
uint32_t
*
)
bPtr
)
=
0
;
}
else
{
ptr
[
0
]
=
v
;
ptr
[
1
]
=
0
;
}
index
+=
n
;
s
->
index
=
index
;
}
#endif
static
inline
uint8_t
*
pbBufPtr
(
PutBitContext
*
s
)
{
...
...
libavcodec/mjpeg.c
View file @
81ada1ce
...
...
@@ -470,9 +470,71 @@ void mjpeg_picture_header(MpegEncContext *s)
put_bits
(
&
s
->
pb
,
8
,
0
);
/* Ah/Al (not used) */
}
static
void
escape_FF
(
MpegEncContext
*
s
)
{
int
size
=
get_bit_count
(
&
s
->
pb
)
-
s
->
header_bits
;
int
i
,
ff_count
;
uint8_t
*
buf
=
s
->
pb
.
buf
+
(
s
->
header_bits
>>
3
);
int
align
=
(
-
(
int
)(
buf
))
&
3
;
assert
((
size
&
7
)
==
0
);
size
>>=
3
;
ff_count
=
0
;
for
(
i
=
0
;
i
<
size
&&
i
<
align
;
i
++
){
if
(
buf
[
i
]
==
0xFF
)
ff_count
++
;
}
for
(;
i
<
size
-
15
;
i
+=
16
){
int
acc
,
v
;
v
=
*
(
uint32_t
*
)(
&
buf
[
i
]);
acc
=
(((
v
&
(
v
>>
4
))
&
0x0F0F0F0F
)
+
0x01010101
)
&
0x10101010
;
v
=
*
(
uint32_t
*
)(
&
buf
[
i
+
4
]);
acc
+=
(((
v
&
(
v
>>
4
))
&
0x0F0F0F0F
)
+
0x01010101
)
&
0x10101010
;
v
=
*
(
uint32_t
*
)(
&
buf
[
i
+
8
]);
acc
+=
(((
v
&
(
v
>>
4
))
&
0x0F0F0F0F
)
+
0x01010101
)
&
0x10101010
;
v
=
*
(
uint32_t
*
)(
&
buf
[
i
+
12
]);
acc
+=
(((
v
&
(
v
>>
4
))
&
0x0F0F0F0F
)
+
0x01010101
)
&
0x10101010
;
acc
>>=
4
;
acc
+=
(
acc
>>
16
);
acc
+=
(
acc
>>
8
);
ff_count
+=
acc
&
0xFF
;
}
for
(;
i
<
size
;
i
++
){
if
(
buf
[
i
]
==
0xFF
)
ff_count
++
;
}
if
(
ff_count
==
0
)
return
;
/* skip put bits */
for
(
i
=
0
;
i
<
ff_count
-
3
;
i
+=
4
)
put_bits
(
&
s
->
pb
,
32
,
0
);
put_bits
(
&
s
->
pb
,
(
ff_count
-
i
)
*
8
,
0
);
flush_put_bits
(
&
s
->
pb
);
for
(
i
=
size
-
1
;
ff_count
;
i
--
){
int
v
=
buf
[
i
];
if
(
v
==
0xFF
){
//printf("%d %d\n", i, ff_count);
buf
[
i
+
ff_count
]
=
0
;
ff_count
--
;
}
buf
[
i
+
ff_count
]
=
v
;
}
}
void
mjpeg_picture_trailer
(
MpegEncContext
*
s
)
{
jflush_put_bits
(
&
s
->
pb
);
int
pad
=
(
-
get_bit_count
(
&
s
->
pb
))
&
7
;
put_bits
(
&
s
->
pb
,
pad
,
0xFF
>>
(
8
-
pad
));
flush_put_bits
(
&
s
->
pb
);
escape_FF
(
s
);
put_marker
(
&
s
->
pb
,
EOI
);
}
...
...
@@ -482,7 +544,7 @@ static inline void mjpeg_encode_dc(MpegEncContext *s, int val,
int
mant
,
nbits
;
if
(
val
==
0
)
{
j
put_bits
(
&
s
->
pb
,
huff_size
[
0
],
huff_code
[
0
]);
put_bits
(
&
s
->
pb
,
huff_size
[
0
],
huff_code
[
0
]);
}
else
{
mant
=
val
;
if
(
val
<
0
)
{
...
...
@@ -497,9 +559,9 @@ static inline void mjpeg_encode_dc(MpegEncContext *s, int val,
nbits
++
;
}
j
put_bits
(
&
s
->
pb
,
huff_size
[
nbits
],
huff_code
[
nbits
]);
put_bits
(
&
s
->
pb
,
huff_size
[
nbits
],
huff_code
[
nbits
]);
j
put_bits
(
&
s
->
pb
,
nbits
,
mant
&
((
1
<<
nbits
)
-
1
));
put_bits
(
&
s
->
pb
,
nbits
,
mant
&
((
1
<<
nbits
)
-
1
));
}
}
...
...
@@ -537,7 +599,7 @@ static void encode_block(MpegEncContext *s, DCTELEM *block, int n)
run
++
;
}
else
{
while
(
run
>=
16
)
{
j
put_bits
(
&
s
->
pb
,
huff_size_ac
[
0xf0
],
huff_code_ac
[
0xf0
]);
put_bits
(
&
s
->
pb
,
huff_size_ac
[
0xf0
],
huff_code_ac
[
0xf0
]);
run
-=
16
;
}
mant
=
val
;
...
...
@@ -554,16 +616,16 @@ static void encode_block(MpegEncContext *s, DCTELEM *block, int n)
}
code
=
(
run
<<
4
)
|
nbits
;
j
put_bits
(
&
s
->
pb
,
huff_size_ac
[
code
],
huff_code_ac
[
code
]);
put_bits
(
&
s
->
pb
,
huff_size_ac
[
code
],
huff_code_ac
[
code
]);
j
put_bits
(
&
s
->
pb
,
nbits
,
mant
&
((
1
<<
nbits
)
-
1
));
put_bits
(
&
s
->
pb
,
nbits
,
mant
&
((
1
<<
nbits
)
-
1
));
run
=
0
;
}
}
/* output EOB only if not already 64 values */
if
(
last_index
<
63
||
run
!=
0
)
j
put_bits
(
&
s
->
pb
,
huff_size_ac
[
0
],
huff_code_ac
[
0
]);
put_bits
(
&
s
->
pb
,
huff_size_ac
[
0
],
huff_code_ac
[
0
]);
}
void
mjpeg_encode_mb
(
MpegEncContext
*
s
,
...
...
@@ -1316,6 +1378,8 @@ static int mjpeg_decode_frame(AVCodecContext *avctx,
*
(
dst
++
)
=
x
;
if
(
x
==
0xff
)
{
while
(
*
src
==
0xff
)
src
++
;
x
=
*
(
src
++
);
if
(
x
>=
0xd0
&&
x
<=
0xd7
)
*
(
dst
++
)
=
x
;
...
...
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