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
8a776ad9
Commit
8a776ad9
authored
Apr 04, 2013
by
Diego Biurrun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
h261: Move shared data tables from a header to a proper C file
parent
b93b27ed
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
47 additions
and
38 deletions
+47
-38
Makefile
libavcodec/Makefile
+2
-2
h261.h
libavcodec/h261.h
+10
-0
h261data.c
libavcodec/h261data.c
+9
-13
h261dec.c
libavcodec/h261dec.c
+12
-13
h261enc.c
libavcodec/h261enc.c
+14
-10
No files found.
libavcodec/Makefile
View file @
8a776ad9
...
...
@@ -180,8 +180,8 @@ OBJS-$(CONFIG_GIF_DECODER) += gifdec.o lzw.o
OBJS-$(CONFIG_GIF_ENCODER)
+=
gif.o
lzwenc.o
OBJS-$(CONFIG_GSM_DECODER)
+=
gsmdec.o
gsmdec_data.o
msgsmdec.o
OBJS-$(CONFIG_GSM_MS_DECODER)
+=
gsmdec.o
gsmdec_data.o
msgsmdec.o
OBJS-$(CONFIG_H261_DECODER)
+=
h261dec.o
h261.o
OBJS-$(CONFIG_H261_ENCODER)
+=
h261enc.o
h261.o
OBJS-$(CONFIG_H261_DECODER)
+=
h261dec.o
h261
data.o
h261
.o
OBJS-$(CONFIG_H261_ENCODER)
+=
h261enc.o
h261
data.o
h261
.o
OBJS-$(CONFIG_H263_DECODER)
+=
h263dec.o
h263.o
ituh263dec.o
\
mpeg4video.o
mpeg4videodec.o
flvdec.o\
intelh263dec.o
...
...
libavcodec/h261.h
View file @
8a776ad9
...
...
@@ -29,6 +29,7 @@
#define AVCODEC_H261_H
#include "mpegvideo.h"
#include "rl.h"
/**
* H261Context
...
...
@@ -50,6 +51,15 @@ typedef struct H261Context {
extern
uint8_t
ff_h261_rl_table_store
[
2
][
2
*
MAX_RUN
+
MAX_LEVEL
+
3
];
extern
const
uint8_t
ff_h261_mba_code
[
35
];
extern
const
uint8_t
ff_h261_mba_bits
[
35
];
extern
const
uint8_t
ff_h261_mtype_code
[
10
];
extern
const
uint8_t
ff_h261_mtype_bits
[
10
];
extern
const
int
ff_h261_mtype_map
[
10
];
extern
const
uint8_t
ff_h261_mv_tab
[
17
][
2
];
extern
const
uint8_t
ff_h261_cbp_tab
[
63
][
2
];
extern
RLTable
ff_h261_rl_tcoeff
;
void
ff_h261_loop_filter
(
MpegEncContext
*
s
);
int
ff_h261_get_picture_format
(
int
width
,
int
height
);
...
...
libavcodec/h261data.
h
→
libavcodec/h261data.
c
View file @
8a776ad9
...
...
@@ -24,15 +24,13 @@
* H.261 tables.
*/
#ifndef AVCODEC_H261DATA_H
#define AVCODEC_H261DATA_H
#include <stdint.h>
#include "rl.h"
#include "h261.h"
// H.261 VLC table for macroblock addressing
static
const
uint8_t
h261_mba_code
[
35
]
=
{
const
uint8_t
ff_
h261_mba_code
[
35
]
=
{
1
,
3
,
2
,
3
,
2
,
3
,
2
,
7
,
6
,
11
,
10
,
9
,
...
...
@@ -46,7 +44,7 @@ static const uint8_t h261_mba_code[35] = {
1
// (start code)
};
static
const
uint8_t
h261_mba_bits
[
35
]
=
{
const
uint8_t
ff_
h261_mba_bits
[
35
]
=
{
1
,
3
,
3
,
4
,
4
,
5
,
5
,
7
,
7
,
8
,
8
,
8
,
...
...
@@ -61,19 +59,19 @@ static const uint8_t h261_mba_bits[35] = {
};
// H.261 VLC table for macroblock type
static
const
uint8_t
h261_mtype_code
[
10
]
=
{
const
uint8_t
ff_
h261_mtype_code
[
10
]
=
{
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
};
static
const
uint8_t
h261_mtype_bits
[
10
]
=
{
const
uint8_t
ff_
h261_mtype_bits
[
10
]
=
{
4
,
7
,
1
,
5
,
9
,
8
,
10
,
3
,
2
,
6
};
static
const
int
h261_mtype_map
[
10
]
=
{
const
int
ff_
h261_mtype_map
[
10
]
=
{
MB_TYPE_INTRA4x4
,
MB_TYPE_INTRA4x4
|
MB_TYPE_QUANT
,
MB_TYPE_CBP
,
...
...
@@ -87,13 +85,13 @@ static const int h261_mtype_map[10] = {
};
// H.261 VLC table for motion vectors
static
const
uint8_t
h261_mv_tab
[
17
][
2
]
=
{
const
uint8_t
ff_
h261_mv_tab
[
17
][
2
]
=
{
{
1
,
1
},
{
1
,
2
},
{
1
,
3
},
{
1
,
4
},
{
3
,
6
},
{
5
,
7
},
{
4
,
7
},
{
3
,
7
},
{
11
,
9
},
{
10
,
9
},
{
9
,
9
},
{
17
,
10
},
{
16
,
10
},
{
15
,
10
},
{
14
,
10
},
{
13
,
10
},
{
12
,
10
}
};
// H.261 VLC table for coded block pattern
static
const
uint8_t
h261_cbp_tab
[
63
][
2
]
=
{
const
uint8_t
ff_
h261_cbp_tab
[
63
][
2
]
=
{
{
11
,
5
},
{
9
,
5
},
{
13
,
6
},
{
13
,
4
},
{
23
,
7
},
{
19
,
7
},
{
31
,
8
},
{
12
,
4
},
{
22
,
7
},
{
18
,
7
},
{
30
,
8
},
{
19
,
5
},
{
27
,
8
},
{
23
,
8
},
{
19
,
8
},
{
11
,
4
},
{
21
,
7
},
{
17
,
7
},
{
29
,
8
},
{
17
,
5
},
{
25
,
8
},
{
21
,
8
},
{
17
,
8
},
{
15
,
6
},
...
...
@@ -148,12 +146,10 @@ static const int8_t h261_tcoeff_run[64] = {
20
,
21
,
22
,
23
,
24
,
25
,
26
};
static
RLTable
h261_rl_tcoeff
=
{
RLTable
ff_
h261_rl_tcoeff
=
{
64
,
64
,
h261_tcoeff_vlc
,
h261_tcoeff_run
,
h261_tcoeff_level
,
};
#endif
/* AVCODEC_H261DATA_H */
libavcodec/h261dec.c
View file @
8a776ad9
...
...
@@ -29,7 +29,6 @@
#include "mpegvideo.h"
#include "h263.h"
#include "h261.h"
#include "h261data.h"
#define H261_MBA_VLC_BITS 9
#define H261_MTYPE_VLC_BITS 6
...
...
@@ -51,19 +50,19 @@ static av_cold void h261_decode_init_vlc(H261Context *h)
if
(
!
done
)
{
done
=
1
;
INIT_VLC_STATIC
(
&
h261_mba_vlc
,
H261_MBA_VLC_BITS
,
35
,
h261_mba_bits
,
1
,
1
,
h261_mba_code
,
1
,
1
,
662
);
ff_
h261_mba_bits
,
1
,
1
,
ff_
h261_mba_code
,
1
,
1
,
662
);
INIT_VLC_STATIC
(
&
h261_mtype_vlc
,
H261_MTYPE_VLC_BITS
,
10
,
h261_mtype_bits
,
1
,
1
,
h261_mtype_code
,
1
,
1
,
80
);
ff_
h261_mtype_bits
,
1
,
1
,
ff_
h261_mtype_code
,
1
,
1
,
80
);
INIT_VLC_STATIC
(
&
h261_mv_vlc
,
H261_MV_VLC_BITS
,
17
,
&
h261_mv_tab
[
0
][
1
],
2
,
1
,
&
h261_mv_tab
[
0
][
0
],
2
,
1
,
144
);
&
ff_
h261_mv_tab
[
0
][
1
],
2
,
1
,
&
ff_
h261_mv_tab
[
0
][
0
],
2
,
1
,
144
);
INIT_VLC_STATIC
(
&
h261_cbp_vlc
,
H261_CBP_VLC_BITS
,
63
,
&
h261_cbp_tab
[
0
][
1
],
2
,
1
,
&
h261_cbp_tab
[
0
][
0
],
2
,
1
,
512
);
ff_init_rl
(
&
h261_rl_tcoeff
,
ff_h261_rl_table_store
);
INIT_VLC_RL
(
h261_rl_tcoeff
,
552
);
&
ff_
h261_cbp_tab
[
0
][
1
],
2
,
1
,
&
ff_
h261_cbp_tab
[
0
][
0
],
2
,
1
,
512
);
ff_init_rl
(
&
ff_
h261_rl_tcoeff
,
ff_h261_rl_table_store
);
INIT_VLC_RL
(
ff_
h261_rl_tcoeff
,
552
);
}
}
...
...
@@ -256,7 +255,7 @@ static int h261_decode_block(H261Context *h, int16_t *block, int n, int coded)
{
MpegEncContext
*
const
s
=
&
h
->
s
;
int
code
,
level
,
i
,
j
,
run
;
RLTable
*
rl
=
&
h261_rl_tcoeff
;
RLTable
*
rl
=
&
ff_
h261_rl_tcoeff
;
const
uint8_t
*
scan_table
;
/* For the variable length encoding there are two code tables, one being
...
...
@@ -377,7 +376,7 @@ static int h261_decode_mb(H261Context *h)
// Read mtype
h
->
mtype
=
get_vlc2
(
&
s
->
gb
,
h261_mtype_vlc
.
table
,
H261_MTYPE_VLC_BITS
,
2
);
h
->
mtype
=
h261_mtype_map
[
h
->
mtype
];
h
->
mtype
=
ff_
h261_mtype_map
[
h
->
mtype
];
// Read mquant
if
(
IS_QUANT
(
h
->
mtype
))
...
...
libavcodec/h261enc.c
View file @
8a776ad9
...
...
@@ -29,7 +29,6 @@
#include "mpegvideo.h"
#include "h263.h"
#include "h261.h"
#include "h261data.h"
int
ff_h261_get_picture_format
(
int
width
,
int
height
)
{
...
...
@@ -129,7 +128,7 @@ static void h261_encode_motion(H261Context *h, int val)
int
sign
,
code
;
if
(
val
==
0
)
{
code
=
0
;
put_bits
(
&
s
->
pb
,
h261_mv_tab
[
code
][
1
],
h261_mv_tab
[
code
][
0
]);
put_bits
(
&
s
->
pb
,
ff_h261_mv_tab
[
code
][
1
],
ff_
h261_mv_tab
[
code
][
0
]);
}
else
{
if
(
val
>
15
)
val
-=
32
;
...
...
@@ -137,7 +136,7 @@ static void h261_encode_motion(H261Context *h, int val)
val
+=
32
;
sign
=
val
<
0
;
code
=
sign
?
-
val
:
val
;
put_bits
(
&
s
->
pb
,
h261_mv_tab
[
code
][
1
],
h261_mv_tab
[
code
][
0
]);
put_bits
(
&
s
->
pb
,
ff_h261_mv_tab
[
code
][
1
],
ff_
h261_mv_tab
[
code
][
0
]);
put_bits
(
&
s
->
pb
,
1
,
sign
);
}
}
...
...
@@ -163,7 +162,7 @@ static void h261_encode_block(H261Context *h, int16_t *block, int n)
int
level
,
run
,
i
,
j
,
last_index
,
last_non_zero
,
sign
,
slevel
,
code
;
RLTable
*
rl
;
rl
=
&
h261_rl_tcoeff
;
rl
=
&
ff_
h261_rl_tcoeff
;
if
(
s
->
mb_intra
)
{
/* DC coef */
level
=
block
[
0
];
...
...
@@ -253,8 +252,9 @@ void ff_h261_encode_mb(MpegEncContext *s, int16_t block[6][64],
}
/* MB is not skipped, encode MBA */
put_bits
(
&
s
->
pb
,
h261_mba_bits
[(
h
->
current_mba
-
h
->
previous_mba
)
-
1
],
h261_mba_code
[(
h
->
current_mba
-
h
->
previous_mba
)
-
1
]);
put_bits
(
&
s
->
pb
,
ff_h261_mba_bits
[(
h
->
current_mba
-
h
->
previous_mba
)
-
1
],
ff_h261_mba_code
[(
h
->
current_mba
-
h
->
previous_mba
)
-
1
]);
/* calculate MTYPE */
if
(
!
s
->
mb_intra
)
{
...
...
@@ -272,9 +272,11 @@ void ff_h261_encode_mb(MpegEncContext *s, int16_t block[6][64],
if
(
s
->
dquant
)
h
->
mtype
++
;
put_bits
(
&
s
->
pb
,
h261_mtype_bits
[
h
->
mtype
],
h261_mtype_code
[
h
->
mtype
]);
put_bits
(
&
s
->
pb
,
ff_h261_mtype_bits
[
h
->
mtype
],
ff_h261_mtype_code
[
h
->
mtype
]);
h
->
mtype
=
h261_mtype_map
[
h
->
mtype
];
h
->
mtype
=
ff_
h261_mtype_map
[
h
->
mtype
];
if
(
IS_QUANT
(
h
->
mtype
))
{
ff_set_qscale
(
s
,
s
->
qscale
+
s
->
dquant
);
...
...
@@ -294,7 +296,9 @@ void ff_h261_encode_mb(MpegEncContext *s, int16_t block[6][64],
if
(
HAS_CBP
(
h
->
mtype
))
{
assert
(
cbp
>
0
);
put_bits
(
&
s
->
pb
,
h261_cbp_tab
[
cbp
-
1
][
1
],
h261_cbp_tab
[
cbp
-
1
][
0
]);
put_bits
(
&
s
->
pb
,
ff_h261_cbp_tab
[
cbp
-
1
][
1
],
ff_h261_cbp_tab
[
cbp
-
1
][
0
]);
}
for
(
i
=
0
;
i
<
6
;
i
++
)
/* encode each block */
...
...
@@ -313,7 +317,7 @@ void ff_h261_encode_init(MpegEncContext *s)
if
(
!
done
)
{
done
=
1
;
ff_init_rl
(
&
h261_rl_tcoeff
,
ff_h261_rl_table_store
);
ff_init_rl
(
&
ff_
h261_rl_tcoeff
,
ff_h261_rl_table_store
);
}
s
->
min_qcoeff
=
-
127
;
...
...
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