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
2906d8dc
Commit
2906d8dc
authored
Apr 09, 2016
by
Alexandra Hájková
Committed by
Anton Khirnov
Nov 18, 2016
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
escape130: Convert to the new bitstream reader
Signed-off-by:
Anton Khirnov
<
anton@khirnov.net
>
parent
c43eb731
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
23 additions
and
23 deletions
+23
-23
escape130.c
libavcodec/escape130.c
+23
-23
No files found.
libavcodec/escape130.c
View file @
2906d8dc
...
@@ -24,7 +24,7 @@
...
@@ -24,7 +24,7 @@
#define BITSTREAM_READER_LE
#define BITSTREAM_READER_LE
#include "avcodec.h"
#include "avcodec.h"
#include "
get_bits
.h"
#include "
bitstream
.h"
#include "internal.h"
#include "internal.h"
typedef
struct
Escape130Context
{
typedef
struct
Escape130Context
{
...
@@ -163,23 +163,23 @@ static av_cold int escape130_decode_close(AVCodecContext *avctx)
...
@@ -163,23 +163,23 @@ static av_cold int escape130_decode_close(AVCodecContext *avctx)
return
0
;
return
0
;
}
}
static
int
decode_skip_count
(
GetBitContext
*
gb
)
static
int
decode_skip_count
(
BitstreamContext
*
bc
)
{
{
int
value
;
int
value
;
value
=
get_bits1
(
gb
);
value
=
bitstream_read_bit
(
bc
);
if
(
value
)
if
(
value
)
return
0
;
return
0
;
value
=
get_bits
(
gb
,
3
);
value
=
bitstream_read
(
bc
,
3
);
if
(
value
)
if
(
value
)
return
value
;
return
value
;
value
=
get_bits
(
gb
,
8
);
value
=
bitstream_read
(
bc
,
8
);
if
(
value
)
if
(
value
)
return
value
+
7
;
return
value
+
7
;
value
=
get_bits
(
gb
,
15
);
value
=
bitstream_read
(
bc
,
15
);
if
(
value
)
if
(
value
)
return
value
+
262
;
return
value
+
262
;
...
@@ -193,7 +193,7 @@ static int escape130_decode_frame(AVCodecContext *avctx, void *data,
...
@@ -193,7 +193,7 @@ static int escape130_decode_frame(AVCodecContext *avctx, void *data,
int
buf_size
=
avpkt
->
size
;
int
buf_size
=
avpkt
->
size
;
Escape130Context
*
s
=
avctx
->
priv_data
;
Escape130Context
*
s
=
avctx
->
priv_data
;
AVFrame
*
pic
=
data
;
AVFrame
*
pic
=
data
;
GetBitContext
gb
;
BitstreamContext
bc
;
int
ret
;
int
ret
;
uint8_t
*
old_y
,
*
old_cb
,
*
old_cr
,
uint8_t
*
old_y
,
*
old_cb
,
*
old_cr
,
...
@@ -216,7 +216,7 @@ static int escape130_decode_frame(AVCodecContext *avctx, void *data,
...
@@ -216,7 +216,7 @@ static int escape130_decode_frame(AVCodecContext *avctx, void *data,
if
((
ret
=
ff_get_buffer
(
avctx
,
pic
,
0
))
<
0
)
if
((
ret
=
ff_get_buffer
(
avctx
,
pic
,
0
))
<
0
)
return
ret
;
return
ret
;
init_get_bits
(
&
gb
,
buf
+
16
,
(
buf_size
-
16
)
*
8
);
bitstream_init
(
&
bc
,
buf
+
16
,
(
buf_size
-
16
)
*
8
);
new_y
=
s
->
new_y
;
new_y
=
s
->
new_y
;
new_cb
=
s
->
new_u
;
new_cb
=
s
->
new_u
;
...
@@ -235,7 +235,7 @@ static int escape130_decode_frame(AVCodecContext *avctx, void *data,
...
@@ -235,7 +235,7 @@ static int escape130_decode_frame(AVCodecContext *avctx, void *data,
// Note that this call will make us skip the rest of the blocks
// Note that this call will make us skip the rest of the blocks
// if the frame ends prematurely.
// if the frame ends prematurely.
if
(
skip
==
-
1
)
if
(
skip
==
-
1
)
skip
=
decode_skip_count
(
&
gb
);
skip
=
decode_skip_count
(
&
bc
);
if
(
skip
==
-
1
)
{
if
(
skip
==
-
1
)
{
av_log
(
avctx
,
AV_LOG_ERROR
,
"Error decoding skip value
\n
"
);
av_log
(
avctx
,
AV_LOG_ERROR
,
"Error decoding skip value
\n
"
);
return
AVERROR_INVALIDDATA
;
return
AVERROR_INVALIDDATA
;
...
@@ -250,31 +250,31 @@ static int escape130_decode_frame(AVCodecContext *avctx, void *data,
...
@@ -250,31 +250,31 @@ static int escape130_decode_frame(AVCodecContext *avctx, void *data,
cb
=
old_cb
[
0
];
cb
=
old_cb
[
0
];
cr
=
old_cr
[
0
];
cr
=
old_cr
[
0
];
}
else
{
}
else
{
if
(
get_bits1
(
&
gb
))
{
if
(
bitstream_read_bit
(
&
bc
))
{
unsigned
sign_selector
=
get_bits
(
&
gb
,
6
);
unsigned
sign_selector
=
bitstream_read
(
&
bc
,
6
);
unsigned
difference_selector
=
get_bits
(
&
gb
,
2
);
unsigned
difference_selector
=
bitstream_read
(
&
bc
,
2
);
y_avg
=
2
*
get_bits
(
&
gb
,
5
);
y_avg
=
2
*
bitstream_read
(
&
bc
,
5
);
for
(
i
=
0
;
i
<
4
;
i
++
)
{
for
(
i
=
0
;
i
<
4
;
i
++
)
{
y
[
i
]
=
av_clip
(
y_avg
+
offset_table
[
difference_selector
]
*
y
[
i
]
=
av_clip
(
y_avg
+
offset_table
[
difference_selector
]
*
sign_table
[
sign_selector
][
i
],
0
,
63
);
sign_table
[
sign_selector
][
i
],
0
,
63
);
}
}
}
else
if
(
get_bits1
(
&
gb
))
{
}
else
if
(
bitstream_read_bit
(
&
bc
))
{
if
(
get_bits1
(
&
gb
))
{
if
(
bitstream_read_bit
(
&
bc
))
{
y_avg
=
get_bits
(
&
gb
,
6
);
y_avg
=
bitstream_read
(
&
bc
,
6
);
}
else
{
}
else
{
unsigned
adjust_index
=
get_bits
(
&
gb
,
3
);
unsigned
adjust_index
=
bitstream_read
(
&
bc
,
3
);
y_avg
=
(
y_avg
+
luma_adjust
[
adjust_index
])
&
63
;
y_avg
=
(
y_avg
+
luma_adjust
[
adjust_index
])
&
63
;
}
}
for
(
i
=
0
;
i
<
4
;
i
++
)
for
(
i
=
0
;
i
<
4
;
i
++
)
y
[
i
]
=
y_avg
;
y
[
i
]
=
y_avg
;
}
}
if
(
get_bits1
(
&
gb
))
{
if
(
bitstream_read_bit
(
&
bc
))
{
if
(
get_bits1
(
&
gb
))
{
if
(
bitstream_read_bit
(
&
bc
))
{
cb
=
get_bits
(
&
gb
,
5
);
cb
=
bitstream_read
(
&
bc
,
5
);
cr
=
get_bits
(
&
gb
,
5
);
cr
=
bitstream_read
(
&
bc
,
5
);
}
else
{
}
else
{
unsigned
adjust_index
=
get_bits
(
&
gb
,
3
);
unsigned
adjust_index
=
bitstream_read
(
&
bc
,
3
);
cb
=
(
cb
+
chroma_adjust
[
0
][
adjust_index
])
&
31
;
cb
=
(
cb
+
chroma_adjust
[
0
][
adjust_index
])
&
31
;
cr
=
(
cr
+
chroma_adjust
[
1
][
adjust_index
])
&
31
;
cr
=
(
cr
+
chroma_adjust
[
1
][
adjust_index
])
&
31
;
}
}
...
@@ -333,7 +333,7 @@ static int escape130_decode_frame(AVCodecContext *avctx, void *data,
...
@@ -333,7 +333,7 @@ static int escape130_decode_frame(AVCodecContext *avctx, void *data,
}
}
ff_dlog
(
avctx
,
"Frame data: provided %d bytes, used %d bytes
\n
"
,
ff_dlog
(
avctx
,
"Frame data: provided %d bytes, used %d bytes
\n
"
,
buf_size
,
get_bits_count
(
&
gb
)
>>
3
);
buf_size
,
bitstream_tell
(
&
bc
)
>>
3
);
FFSWAP
(
uint8_t
*
,
s
->
old_y
,
s
->
new_y
);
FFSWAP
(
uint8_t
*
,
s
->
old_y
,
s
->
new_y
);
FFSWAP
(
uint8_t
*
,
s
->
old_u
,
s
->
new_u
);
FFSWAP
(
uint8_t
*
,
s
->
old_u
,
s
->
new_u
);
...
...
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