Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
F
ffmpeg
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
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
ffmpeg
Commits
6fad5abc
Commit
6fad5abc
authored
Apr 10, 2016
by
Alexandra Hájková
Committed by
Diego Biurrun
Dec 03, 2016
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
lagarith: Convert to the new bitstream reader
parent
c3defda0
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
21 additions
and
19 deletions
+21
-19
lagarith.c
libavcodec/lagarith.c
+11
-11
lagarithrac.c
libavcodec/lagarithrac.c
+6
-6
lagarithrac.h
libavcodec/lagarithrac.h
+4
-2
No files found.
libavcodec/lagarith.c
View file @
6fad5abc
...
...
@@ -28,7 +28,7 @@
#include <inttypes.h>
#include "avcodec.h"
#include "
get_bits
.h"
#include "
bitstream
.h"
#include "mathops.h"
#include "huffyuvdsp.h"
#include "lagarithrac.h"
...
...
@@ -101,7 +101,7 @@ static uint8_t lag_calc_zero_run(int8_t x)
return
(
x
<<
1
)
^
(
x
>>
7
);
}
static
int
lag_decode_prob
(
GetBitContext
*
gb
,
uint32_t
*
value
)
static
int
lag_decode_prob
(
BitstreamContext
*
bc
,
uint32_t
*
value
)
{
static
const
uint8_t
series
[]
=
{
1
,
2
,
3
,
5
,
8
,
13
,
21
};
int
i
;
...
...
@@ -114,7 +114,7 @@ static int lag_decode_prob(GetBitContext *gb, uint32_t *value)
if
(
prevbit
&&
bit
)
break
;
prevbit
=
bit
;
bit
=
get_bits1
(
gb
);
bit
=
bitstream_read_bit
(
bc
);
if
(
bit
&&
!
prevbit
)
bits
+=
series
[
i
];
}
...
...
@@ -127,7 +127,7 @@ static int lag_decode_prob(GetBitContext *gb, uint32_t *value)
return
0
;
}
val
=
get_bits_long
(
gb
,
bits
);
val
=
bitstream_read
(
bc
,
bits
);
val
|=
1
<<
bits
;
*
value
=
val
-
1
;
...
...
@@ -135,7 +135,7 @@ static int lag_decode_prob(GetBitContext *gb, uint32_t *value)
return
0
;
}
static
int
lag_read_prob_header
(
lag_rac
*
rac
,
GetBitContext
*
gb
)
static
int
lag_read_prob_header
(
lag_rac
*
rac
,
BitstreamContext
*
bc
)
{
int
i
,
j
,
scale_factor
;
unsigned
prob
,
cumulative_target
;
...
...
@@ -146,7 +146,7 @@ static int lag_read_prob_header(lag_rac *rac, GetBitContext *gb)
rac
->
prob
[
257
]
=
UINT_MAX
;
/* Read probabilities from bitstream */
for
(
i
=
1
;
i
<
257
;
i
++
)
{
if
(
lag_decode_prob
(
gb
,
&
rac
->
prob
[
i
])
<
0
)
{
if
(
lag_decode_prob
(
bc
,
&
rac
->
prob
[
i
])
<
0
)
{
av_log
(
rac
->
avctx
,
AV_LOG_ERROR
,
"Invalid probability encountered.
\n
"
);
return
-
1
;
}
...
...
@@ -156,7 +156,7 @@ static int lag_read_prob_header(lag_rac *rac, GetBitContext *gb)
}
cumul_prob
+=
rac
->
prob
[
i
];
if
(
!
rac
->
prob
[
i
])
{
if
(
lag_decode_prob
(
gb
,
&
prob
))
{
if
(
lag_decode_prob
(
bc
,
&
prob
))
{
av_log
(
rac
->
avctx
,
AV_LOG_ERROR
,
"Invalid probability run encountered.
\n
"
);
return
-
1
;
}
...
...
@@ -422,7 +422,7 @@ static int lag_decode_arith_plane(LagarithContext *l, uint8_t *dst,
uint32_t
length
;
uint32_t
offset
=
1
;
int
esc_count
=
src
[
0
];
GetBitContext
gb
;
BitstreamContext
bc
;
lag_rac
rac
;
const
uint8_t
*
src_end
=
src
+
src_size
;
...
...
@@ -436,12 +436,12 @@ static int lag_decode_arith_plane(LagarithContext *l, uint8_t *dst,
offset
+=
4
;
}
init_get_bits
(
&
gb
,
src
+
offset
,
src_size
*
8
);
bitstream_init
(
&
bc
,
src
+
offset
,
src_size
*
8
);
if
(
lag_read_prob_header
(
&
rac
,
&
gb
)
<
0
)
if
(
lag_read_prob_header
(
&
rac
,
&
bc
)
<
0
)
return
-
1
;
ff_lag_rac_init
(
&
rac
,
&
gb
,
length
-
stride
);
ff_lag_rac_init
(
&
rac
,
&
bc
,
length
-
stride
);
for
(
i
=
0
;
i
<
height
;
i
++
)
read
+=
lag_decode_line
(
l
,
&
rac
,
dst
+
(
i
*
stride
),
width
,
...
...
libavcodec/lagarithrac.c
View file @
6fad5abc
...
...
@@ -27,20 +27,20 @@
* @author David Conrad
*/
#include "
get_bits
.h"
#include "
bitstream
.h"
#include "lagarithrac.h"
void
ff_lag_rac_init
(
lag_rac
*
l
,
GetBitContext
*
gb
,
int
length
)
void
ff_lag_rac_init
(
lag_rac
*
l
,
BitstreamContext
*
bc
,
int
length
)
{
int
i
,
j
,
left
;
/* According to reference decoder "1st byte is garbage",
* however, it gets skipped by the call to
align_get_bits
()
* however, it gets skipped by the call to
bitstream_align
()
*/
align_get_bits
(
gb
);
left
=
get_bits_left
(
gb
)
>>
3
;
bitstream_align
(
bc
);
left
=
bitstream_bits_left
(
bc
)
>>
3
;
l
->
bytestream_start
=
l
->
bytestream
=
gb
->
buffer
+
get_bits_count
(
gb
)
/
8
;
l
->
bytestream
=
bc
->
buffer
+
bitstream_tell
(
bc
)
/
8
;
l
->
bytestream_end
=
l
->
bytestream_start
+
FFMIN
(
length
,
left
);
l
->
range
=
0x80
;
...
...
libavcodec/lagarithrac.h
View file @
6fad5abc
...
...
@@ -31,10 +31,12 @@
#define AVCODEC_LAGARITHRAC_H
#include <stdint.h>
#include "libavutil/common.h"
#include "libavutil/intreadwrite.h"
#include "avcodec.h"
#include "
get_bits
.h"
#include "
bitstream
.h"
typedef
struct
lag_rac
{
AVCodecContext
*
avctx
;
...
...
@@ -51,7 +53,7 @@ typedef struct lag_rac {
uint8_t
range_hash
[
256
];
/**< Hash table mapping upper byte to approximate symbol. */
}
lag_rac
;
void
ff_lag_rac_init
(
lag_rac
*
l
,
GetBitContext
*
gb
,
int
length
);
void
ff_lag_rac_init
(
lag_rac
*
l
,
BitstreamContext
*
bc
,
int
length
);
/* TODO: Optimize */
static
inline
void
lag_rac_refill
(
lag_rac
*
l
)
...
...
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