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
f4d581cd
Commit
f4d581cd
authored
Mar 24, 2016
by
Diego Biurrun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
lavc: Deduplicate zigzag_scan table
parent
02cd8bb9
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
24 additions
and
34 deletions
+24
-34
h264_ps.c
libavcodec/h264_ps.c
+2
-2
h264_slice.c
libavcodec/h264_slice.c
+2
-2
h264data.h
libavcodec/h264data.h
+0
-7
mathops.h
libavcodec/mathops.h
+1
-0
mathtables.c
libavcodec/mathtables.c
+7
-0
svq3.c
libavcodec/svq3.c
+4
-2
tscc2.c
libavcodec/tscc2.c
+2
-1
tscc2data.h
libavcodec/tscc2data.h
+0
-7
vp8.c
libavcodec/vp8.c
+6
-5
vp8data.h
libavcodec/vp8data.h
+0
-8
No files found.
libavcodec/h264_ps.c
View file @
f4d581cd
...
@@ -29,9 +29,9 @@
...
@@ -29,9 +29,9 @@
#include "libavutil/imgutils.h"
#include "libavutil/imgutils.h"
#include "internal.h"
#include "internal.h"
#include "mathops.h"
#include "avcodec.h"
#include "avcodec.h"
#include "h264.h"
#include "h264.h"
#include "h264data.h" //FIXME FIXME FIXME (just for zigzag_scan)
#include "golomb.h"
#include "golomb.h"
#define MAX_LOG2_MAX_FRAME_NUM (12 + 4)
#define MAX_LOG2_MAX_FRAME_NUM (12 + 4)
...
@@ -266,7 +266,7 @@ static void decode_scaling_list(H264Context *h, uint8_t *factors, int size,
...
@@ -266,7 +266,7 @@ static void decode_scaling_list(H264Context *h, uint8_t *factors, int size,
const
uint8_t
*
fallback_list
)
const
uint8_t
*
fallback_list
)
{
{
int
i
,
last
=
8
,
next
=
8
;
int
i
,
last
=
8
,
next
=
8
;
const
uint8_t
*
scan
=
size
==
16
?
zigzag_scan
:
ff_zigzag_direct
;
const
uint8_t
*
scan
=
size
==
16
?
ff_
zigzag_scan
:
ff_zigzag_direct
;
if
(
!
get_bits1
(
&
h
->
gb
))
/* matrix not written, we use the predicted one */
if
(
!
get_bits1
(
&
h
->
gb
))
/* matrix not written, we use the predicted one */
memcpy
(
factors
,
fallback_list
,
size
*
sizeof
(
uint8_t
));
memcpy
(
factors
,
fallback_list
,
size
*
sizeof
(
uint8_t
));
else
else
...
...
libavcodec/h264_slice.c
View file @
f4d581cd
...
@@ -790,7 +790,7 @@ static void init_scan_tables(H264Context *h)
...
@@ -790,7 +790,7 @@ static void init_scan_tables(H264Context *h)
int
i
;
int
i
;
for
(
i
=
0
;
i
<
16
;
i
++
)
{
for
(
i
=
0
;
i
<
16
;
i
++
)
{
#define TRANSPOSE(x) (x >> 2) | ((x << 2) & 0xF)
#define TRANSPOSE(x) (x >> 2) | ((x << 2) & 0xF)
h
->
zigzag_scan
[
i
]
=
TRANSPOSE
(
zigzag_scan
[
i
]);
h
->
zigzag_scan
[
i
]
=
TRANSPOSE
(
ff_
zigzag_scan
[
i
]);
h
->
field_scan
[
i
]
=
TRANSPOSE
(
field_scan
[
i
]);
h
->
field_scan
[
i
]
=
TRANSPOSE
(
field_scan
[
i
]);
#undef TRANSPOSE
#undef TRANSPOSE
}
}
...
@@ -803,7 +803,7 @@ static void init_scan_tables(H264Context *h)
...
@@ -803,7 +803,7 @@ static void init_scan_tables(H264Context *h)
#undef TRANSPOSE
#undef TRANSPOSE
}
}
if
(
h
->
sps
.
transform_bypass
)
{
// FIXME same ugly
if
(
h
->
sps
.
transform_bypass
)
{
// FIXME same ugly
h
->
zigzag_scan_q0
=
zigzag_scan
;
h
->
zigzag_scan_q0
=
ff_
zigzag_scan
;
h
->
zigzag_scan8x8_q0
=
ff_zigzag_direct
;
h
->
zigzag_scan8x8_q0
=
ff_zigzag_direct
;
h
->
zigzag_scan8x8_cavlc_q0
=
zigzag_scan8x8_cavlc
;
h
->
zigzag_scan8x8_cavlc_q0
=
zigzag_scan8x8_cavlc
;
h
->
field_scan_q0
=
field_scan
;
h
->
field_scan_q0
=
field_scan
;
...
...
libavcodec/h264data.h
View file @
f4d581cd
...
@@ -51,13 +51,6 @@ static const uint8_t golomb_to_inter_cbp[48] = {
...
@@ -51,13 +51,6 @@ static const uint8_t golomb_to_inter_cbp[48] = {
17
,
18
,
20
,
24
,
19
,
21
,
26
,
28
,
23
,
27
,
29
,
30
,
22
,
25
,
38
,
41
17
,
18
,
20
,
24
,
19
,
21
,
26
,
28
,
23
,
27
,
29
,
30
,
22
,
25
,
38
,
41
};
};
static
const
uint8_t
zigzag_scan
[
16
]
=
{
0
+
0
*
4
,
1
+
0
*
4
,
0
+
1
*
4
,
0
+
2
*
4
,
1
+
1
*
4
,
2
+
0
*
4
,
3
+
0
*
4
,
2
+
1
*
4
,
1
+
2
*
4
,
0
+
3
*
4
,
1
+
3
*
4
,
2
+
2
*
4
,
3
+
1
*
4
,
3
+
2
*
4
,
2
+
3
*
4
,
3
+
3
*
4
,
};
static
const
uint8_t
chroma_dc_scan
[
4
]
=
{
static
const
uint8_t
chroma_dc_scan
[
4
]
=
{
(
0
+
0
*
2
)
*
16
,
(
1
+
0
*
2
)
*
16
,
(
0
+
0
*
2
)
*
16
,
(
1
+
0
*
2
)
*
16
,
(
0
+
1
*
2
)
*
16
,
(
1
+
1
*
2
)
*
16
,
(
0
+
1
*
2
)
*
16
,
(
1
+
1
*
2
)
*
16
,
...
...
libavcodec/mathops.h
View file @
f4d581cd
...
@@ -34,6 +34,7 @@ extern const uint8_t ff_reverse[256];
...
@@ -34,6 +34,7 @@ extern const uint8_t ff_reverse[256];
extern
const
uint8_t
ff_sqrt_tab
[
256
];
extern
const
uint8_t
ff_sqrt_tab
[
256
];
extern
const
uint8_t
ff_crop_tab
[
256
+
2
*
MAX_NEG_CROP
];
extern
const
uint8_t
ff_crop_tab
[
256
+
2
*
MAX_NEG_CROP
];
extern
const
uint8_t
ff_zigzag_direct
[
64
];
extern
const
uint8_t
ff_zigzag_direct
[
64
];
extern
const
uint8_t
ff_zigzag_scan
[
16
];
#if ARCH_ARM
#if ARCH_ARM
# include "arm/mathops.h"
# include "arm/mathops.h"
...
...
libavcodec/mathtables.c
View file @
f4d581cd
...
@@ -122,3 +122,10 @@ const uint8_t ff_zigzag_direct[64] = {
...
@@ -122,3 +122,10 @@ const uint8_t ff_zigzag_direct[64] = {
58
,
59
,
52
,
45
,
38
,
31
,
39
,
46
,
58
,
59
,
52
,
45
,
38
,
31
,
39
,
46
,
53
,
60
,
61
,
54
,
47
,
55
,
62
,
63
53
,
60
,
61
,
54
,
47
,
55
,
62
,
63
};
};
const
uint8_t
ff_zigzag_scan
[
16
]
=
{
0
+
0
*
4
,
1
+
0
*
4
,
0
+
1
*
4
,
0
+
2
*
4
,
1
+
1
*
4
,
2
+
0
*
4
,
3
+
0
*
4
,
2
+
1
*
4
,
1
+
2
*
4
,
0
+
3
*
4
,
1
+
3
*
4
,
2
+
2
*
4
,
3
+
1
*
4
,
3
+
2
*
4
,
2
+
3
*
4
,
3
+
3
*
4
,
};
libavcodec/svq3.c
View file @
f4d581cd
...
@@ -53,6 +53,7 @@
...
@@ -53,6 +53,7 @@
#include "h264_mvpred.h"
#include "h264_mvpred.h"
#include "golomb.h"
#include "golomb.h"
#include "hpeldsp.h"
#include "hpeldsp.h"
#include "mathops.h"
#include "rectangle.h"
#include "rectangle.h"
#include "tpeldsp.h"
#include "tpeldsp.h"
...
@@ -239,8 +240,9 @@ void ff_svq3_add_idct_c(uint8_t *dst, int16_t *block,
...
@@ -239,8 +240,9 @@ void ff_svq3_add_idct_c(uint8_t *dst, int16_t *block,
static
inline
int
svq3_decode_block
(
GetBitContext
*
gb
,
int16_t
*
block
,
static
inline
int
svq3_decode_block
(
GetBitContext
*
gb
,
int16_t
*
block
,
int
index
,
const
int
type
)
int
index
,
const
int
type
)
{
{
static
const
uint8_t
*
const
scan_patterns
[
4
]
=
static
const
uint8_t
*
const
scan_patterns
[
4
]
=
{
{
luma_dc_zigzag_scan
,
zigzag_scan
,
svq3_scan
,
chroma_dc_scan
};
luma_dc_zigzag_scan
,
ff_zigzag_scan
,
svq3_scan
,
chroma_dc_scan
};
int
run
,
level
,
limit
;
int
run
,
level
,
limit
;
unsigned
vlc
;
unsigned
vlc
;
...
...
libavcodec/tscc2.c
View file @
f4d581cd
...
@@ -31,6 +31,7 @@
...
@@ -31,6 +31,7 @@
#include "get_bits.h"
#include "get_bits.h"
#include "bytestream.h"
#include "bytestream.h"
#include "internal.h"
#include "internal.h"
#include "mathops.h"
#include "tscc2data.h"
#include "tscc2data.h"
typedef
struct
TSCC2Context
{
typedef
struct
TSCC2Context
{
...
@@ -179,7 +180,7 @@ static int tscc2_decode_mb(TSCC2Context *c, int *q, int vlc_set,
...
@@ -179,7 +180,7 @@ static int tscc2_decode_mb(TSCC2Context *c, int *q, int vlc_set,
if
(
bpos
>=
16
)
if
(
bpos
>=
16
)
return
AVERROR_INVALIDDATA
;
return
AVERROR_INVALIDDATA
;
val
=
sign_extend
(
ac
>>
4
,
8
);
val
=
sign_extend
(
ac
>>
4
,
8
);
c
->
block
[
tscc2_zigzag
[
bpos
++
]]
=
val
;
c
->
block
[
ff_zigzag_scan
[
bpos
++
]]
=
val
;
}
}
tscc2_idct4_put
(
c
->
block
,
q
,
dst
+
k
*
4
,
stride
);
tscc2_idct4_put
(
c
->
block
,
q
,
dst
+
k
*
4
,
stride
);
}
}
...
...
libavcodec/tscc2data.h
View file @
f4d581cd
...
@@ -24,13 +24,6 @@
...
@@ -24,13 +24,6 @@
#include <stdint.h>
#include <stdint.h>
static
const
uint8_t
tscc2_zigzag
[
16
]
=
{
0
,
1
,
4
,
8
,
5
,
2
,
3
,
6
,
9
,
12
,
13
,
10
,
7
,
11
,
14
,
15
};
#define NUM_VLC_SETS 13
#define NUM_VLC_SETS 13
static
const
uint16_t
tscc2_quants
[
NUM_VLC_SETS
][
3
]
=
{
static
const
uint16_t
tscc2_quants
[
NUM_VLC_SETS
][
3
]
=
{
...
...
libavcodec/vp8.c
View file @
f4d581cd
...
@@ -28,6 +28,7 @@
...
@@ -28,6 +28,7 @@
#include "avcodec.h"
#include "avcodec.h"
#include "internal.h"
#include "internal.h"
#include "mathops.h"
#include "rectangle.h"
#include "rectangle.h"
#include "thread.h"
#include "thread.h"
#include "vp8.h"
#include "vp8.h"
...
@@ -527,7 +528,7 @@ static int vp7_decode_frame_header(VP8Context *s, const uint8_t *buf, int buf_si
...
@@ -527,7 +528,7 @@ static int vp7_decode_frame_header(VP8Context *s, const uint8_t *buf, int buf_si
sizeof
(
vp7_mv_default_prob
[
i
]));
sizeof
(
vp7_mv_default_prob
[
i
]));
memset
(
&
s
->
segmentation
,
0
,
sizeof
(
s
->
segmentation
));
memset
(
&
s
->
segmentation
,
0
,
sizeof
(
s
->
segmentation
));
memset
(
&
s
->
lf_delta
,
0
,
sizeof
(
s
->
lf_delta
));
memset
(
&
s
->
lf_delta
,
0
,
sizeof
(
s
->
lf_delta
));
memcpy
(
s
->
prob
[
0
].
scan
,
zigzag_scan
,
sizeof
(
s
->
prob
[
0
].
scan
));
memcpy
(
s
->
prob
[
0
].
scan
,
ff_
zigzag_scan
,
sizeof
(
s
->
prob
[
0
].
scan
));
}
}
if
(
s
->
keyframe
||
s
->
profile
>
0
)
if
(
s
->
keyframe
||
s
->
profile
>
0
)
...
@@ -599,7 +600,7 @@ static int vp7_decode_frame_header(VP8Context *s, const uint8_t *buf, int buf_si
...
@@ -599,7 +600,7 @@ static int vp7_decode_frame_header(VP8Context *s, const uint8_t *buf, int buf_si
/* G. DCT coefficient ordering specification */
/* G. DCT coefficient ordering specification */
if
(
vp8_rac_get
(
c
))
if
(
vp8_rac_get
(
c
))
for
(
i
=
1
;
i
<
16
;
i
++
)
for
(
i
=
1
;
i
<
16
;
i
++
)
s
->
prob
[
0
].
scan
[
i
]
=
zigzag_scan
[
vp8_rac_get_uint
(
c
,
4
)];
s
->
prob
[
0
].
scan
[
i
]
=
ff_
zigzag_scan
[
vp8_rac_get_uint
(
c
,
4
)];
/* H. Loop filter levels */
/* H. Loop filter levels */
if
(
s
->
profile
>
0
)
if
(
s
->
profile
>
0
)
...
@@ -1317,7 +1318,7 @@ static int vp8_decode_block_coeffs_internal(VP56RangeCoder *r,
...
@@ -1317,7 +1318,7 @@ static int vp8_decode_block_coeffs_internal(VP56RangeCoder *r,
int16_t
qmul
[
2
])
int16_t
qmul
[
2
])
{
{
return
decode_block_coeffs_internal
(
r
,
block
,
probs
,
i
,
return
decode_block_coeffs_internal
(
r
,
block
,
probs
,
i
,
token_prob
,
qmul
,
zigzag_scan
,
IS_VP8
);
token_prob
,
qmul
,
ff_
zigzag_scan
,
IS_VP8
);
}
}
#endif
#endif
...
@@ -1364,7 +1365,7 @@ void decode_mb_coeffs(VP8Context *s, VP8ThreadData *td, VP56RangeCoder *c,
...
@@ -1364,7 +1365,7 @@ void decode_mb_coeffs(VP8Context *s, VP8ThreadData *td, VP56RangeCoder *c,
// decode DC values and do hadamard
// decode DC values and do hadamard
nnz
=
decode_block_coeffs
(
c
,
td
->
block_dc
,
s
->
prob
->
token
[
1
],
0
,
nnz
=
decode_block_coeffs
(
c
,
td
->
block_dc
,
s
->
prob
->
token
[
1
],
0
,
nnz_pred
,
s
->
qmat
[
segment
].
luma_dc_qmul
,
nnz_pred
,
s
->
qmat
[
segment
].
luma_dc_qmul
,
zigzag_scan
,
is_vp7
);
ff_
zigzag_scan
,
is_vp7
);
l_nnz
[
8
]
=
t_nnz
[
8
]
=
!!
nnz
;
l_nnz
[
8
]
=
t_nnz
[
8
]
=
!!
nnz
;
if
(
is_vp7
&&
mb
->
mode
>
MODE_I4x4
)
{
if
(
is_vp7
&&
mb
->
mode
>
MODE_I4x4
)
{
...
@@ -2679,7 +2680,7 @@ int vp78_decode_init(AVCodecContext *avctx, int is_vp7)
...
@@ -2679,7 +2680,7 @@ int vp78_decode_init(AVCodecContext *avctx, int is_vp7)
}
}
/* does not change for VP8 */
/* does not change for VP8 */
memcpy
(
s
->
prob
[
0
].
scan
,
zigzag_scan
,
sizeof
(
s
->
prob
[
0
].
scan
));
memcpy
(
s
->
prob
[
0
].
scan
,
ff_
zigzag_scan
,
sizeof
(
s
->
prob
[
0
].
scan
));
if
((
ret
=
vp8_init_frames
(
s
))
<
0
)
{
if
((
ret
=
vp8_init_frames
(
s
))
<
0
)
{
ff_vp8_decode_free
(
avctx
);
ff_vp8_decode_free
(
avctx
);
...
...
libavcodec/vp8data.h
View file @
f4d581cd
...
@@ -708,14 +708,6 @@ static const uint8_t vp8_token_update_probs[4][8][3][NUM_DCT_TOKENS - 1] = {
...
@@ -708,14 +708,6 @@ static const uint8_t vp8_token_update_probs[4][8][3][NUM_DCT_TOKENS - 1] = {
},
},
};
};
// fixme: copied from h264data.h
static
const
uint8_t
zigzag_scan
[
16
]
=
{
0
+
0
*
4
,
1
+
0
*
4
,
0
+
1
*
4
,
0
+
2
*
4
,
1
+
1
*
4
,
2
+
0
*
4
,
3
+
0
*
4
,
2
+
1
*
4
,
1
+
2
*
4
,
0
+
3
*
4
,
1
+
3
*
4
,
2
+
2
*
4
,
3
+
1
*
4
,
3
+
2
*
4
,
2
+
3
*
4
,
3
+
3
*
4
,
};
static
const
uint8_t
vp8_dc_qlookup
[
VP8_MAX_QUANT
+
1
]
=
{
static
const
uint8_t
vp8_dc_qlookup
[
VP8_MAX_QUANT
+
1
]
=
{
4
,
5
,
6
,
7
,
8
,
9
,
10
,
10
,
11
,
12
,
13
,
14
,
15
,
16
,
17
,
17
,
4
,
5
,
6
,
7
,
8
,
9
,
10
,
10
,
11
,
12
,
13
,
14
,
15
,
16
,
17
,
17
,
18
,
19
,
20
,
20
,
21
,
21
,
22
,
22
,
23
,
23
,
24
,
25
,
25
,
26
,
27
,
28
,
18
,
19
,
20
,
20
,
21
,
21
,
22
,
22
,
23
,
23
,
24
,
25
,
25
,
26
,
27
,
28
,
...
...
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