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
b78f81c8
Commit
b78f81c8
authored
Apr 04, 2013
by
Diego Biurrun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
h261: K&R formatting and prettyprinting cosmetics
parent
66ac3dbf
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
476 additions
and
454 deletions
+476
-454
h261.c
libavcodec/h261.c
+28
-27
h261.h
libavcodec/h261.h
+3
-3
h261_parser.c
libavcodec/h261_parser.c
+23
-22
h261data.h
libavcodec/h261data.h
+72
-73
h261dec.c
libavcodec/h261dec.c
+238
-225
h261enc.c
libavcodec/h261enc.c
+112
-104
No files found.
libavcodec/h261.c
View file @
b78f81c8
...
...
@@ -28,47 +28,48 @@
#include "avcodec.h"
#include "h261.h"
#define IS_FIL(a) ((a)
&
MB_TYPE_H261_FIL)
#define IS_FIL(a) ((a)
&
MB_TYPE_H261_FIL)
uint8_t
ff_h261_rl_table_store
[
2
][
2
*
MAX_RUN
+
MAX_LEVEL
+
3
];
uint8_t
ff_h261_rl_table_store
[
2
][
2
*
MAX_RUN
+
MAX_LEVEL
+
3
];
static
void
h261_loop_filter
(
uint8_t
*
src
,
int
stride
)
{
int
x
,
y
,
xy
,
yz
;
int
x
,
y
,
xy
,
yz
;
int
temp
[
64
];
for
(
x
=
0
;
x
<
8
;
x
++
)
{
temp
[
x
]
=
4
*
src
[
x
];
temp
[
x
+
7
*
8
]
=
4
*
src
[
x
+
7
*
stride
];
for
(
x
=
0
;
x
<
8
;
x
++
)
{
temp
[
x
]
=
4
*
src
[
x
];
temp
[
x
+
7
*
8
]
=
4
*
src
[
x
+
7
*
stride
];
}
for
(
y
=
1
;
y
<
7
;
y
++
)
{
for
(
x
=
0
;
x
<
8
;
x
++
)
{
for
(
y
=
1
;
y
<
7
;
y
++
)
{
for
(
x
=
0
;
x
<
8
;
x
++
)
{
xy
=
y
*
stride
+
x
;
yz
=
y
*
8
+
x
;
temp
[
yz
]
=
src
[
xy
-
stride
]
+
2
*
src
[
xy
]
+
src
[
xy
+
stride
];
temp
[
yz
]
=
src
[
xy
-
stride
]
+
2
*
src
[
xy
]
+
src
[
xy
+
stride
];
}
}
for
(
y
=
0
;
y
<
8
;
y
++
)
{
src
[
y
*
stride
]
=
(
temp
[
y
*
8
]
+
2
)
>>
2
;
src
[
7
+
y
*
stride
]
=
(
temp
[
7
+
y
*
8
]
+
2
)
>>
2
;
for
(
x
=
1
;
x
<
7
;
x
++
)
{
for
(
y
=
0
;
y
<
8
;
y
++
)
{
src
[
y
*
stride
]
=
(
temp
[
y
*
8
]
+
2
)
>>
2
;
src
[
y
*
stride
+
7
]
=
(
temp
[
y
*
8
+
7
]
+
2
)
>>
2
;
for
(
x
=
1
;
x
<
7
;
x
++
)
{
xy
=
y
*
stride
+
x
;
yz
=
y
*
8
+
x
;
src
[
xy
]
=
(
temp
[
yz
-
1
]
+
2
*
temp
[
yz
]
+
temp
[
yz
+
1
]
+
8
)
>>
4
;
src
[
xy
]
=
(
temp
[
yz
-
1
]
+
2
*
temp
[
yz
]
+
temp
[
yz
+
1
]
+
8
)
>>
4
;
}
}
}
void
ff_h261_loop_filter
(
MpegEncContext
*
s
){
H261Context
*
h
=
(
H261Context
*
)
s
;
void
ff_h261_loop_filter
(
MpegEncContext
*
s
)
{
H261Context
*
h
=
(
H261Context
*
)
s
;
const
int
linesize
=
s
->
linesize
;
const
int
uvlinesize
=
s
->
uvlinesize
;
const
int
uvlinesize
=
s
->
uvlinesize
;
uint8_t
*
dest_y
=
s
->
dest
[
0
];
uint8_t
*
dest_cb
=
s
->
dest
[
1
];
uint8_t
*
dest_cr
=
s
->
dest
[
2
];
uint8_t
*
dest_cb
=
s
->
dest
[
1
];
uint8_t
*
dest_cr
=
s
->
dest
[
2
];
if
(
!
(
IS_FIL
(
h
->
mtype
)))
if
(
!
(
IS_FIL
(
h
->
mtype
)))
return
;
h261_loop_filter
(
dest_y
,
linesize
);
...
...
libavcodec/h261.h
View file @
b78f81c8
...
...
@@ -33,7 +33,7 @@
/**
* H261Context
*/
typedef
struct
H261Context
{
typedef
struct
H261Context
{
MpegEncContext
s
;
int
current_mba
;
...
...
@@ -44,11 +44,11 @@ typedef struct H261Context{
int
current_mv_y
;
int
gob_number
;
int
gob_start_code_skipped
;
// 1 if gob start code is already read before gob header is read
}
H261Context
;
}
H261Context
;
#define MB_TYPE_H261_FIL 0x800000
extern
uint8_t
ff_h261_rl_table_store
[
2
][
2
*
MAX_RUN
+
MAX_LEVEL
+
3
];
extern
uint8_t
ff_h261_rl_table_store
[
2
][
2
*
MAX_RUN
+
MAX_LEVEL
+
3
];
void
ff_h261_loop_filter
(
MpegEncContext
*
s
);
...
...
libavcodec/h261_parser.c
View file @
b78f81c8
...
...
@@ -27,38 +27,39 @@
#include "parser.h"
static
int
h261_find_frame_end
(
ParseContext
*
pc
,
AVCodecContext
*
avctx
,
const
uint8_t
*
buf
,
int
buf_size
){
static
int
h261_find_frame_end
(
ParseContext
*
pc
,
AVCodecContext
*
avctx
,
const
uint8_t
*
buf
,
int
buf_size
)
{
int
vop_found
,
i
,
j
;
uint32_t
state
;
vop_found
=
pc
->
frame_start_found
;
state
=
pc
->
state
;
vop_found
=
pc
->
frame_start_found
;
state
=
pc
->
state
;
for
(
i
=
0
;
i
<
buf_size
&&
!
vop_found
;
i
++
)
{
state
=
(
state
<<
8
)
|
buf
[
i
];
for
(
j
=
0
;
j
<
8
;
j
++
)
{
if
(((
state
>>
j
)
&
0xFFFFF0
)
==
0x000100
)
{
vop_found
=
1
;
for
(
i
=
0
;
i
<
buf_size
&&
!
vop_found
;
i
++
)
{
state
=
(
state
<<
8
)
|
buf
[
i
];
for
(
j
=
0
;
j
<
8
;
j
++
)
{
if
(((
state
>>
j
)
&
0xFFFFF0
)
==
0x000100
)
{
vop_found
=
1
;
break
;
}
}
}
if
(
vop_found
)
{
for
(;
i
<
buf_size
;
i
++
)
{
state
=
(
state
<<
8
)
|
buf
[
i
];
for
(
j
=
0
;
j
<
8
;
j
++
)
{
if
(((
state
>>
j
)
&
0xFFFFF0
)
==
0x000100
)
{
pc
->
frame_start_found
=
0
;
pc
->
state
=
(
state
>>
(
3
*
8
))
+
0xFF00
;
return
i
-
2
;
if
(
vop_found
)
{
for
(;
i
<
buf_size
;
i
++
)
{
state
=
(
state
<<
8
)
|
buf
[
i
];
for
(
j
=
0
;
j
<
8
;
j
++
)
{
if
(((
state
>>
j
)
&
0xFFFFF0
)
==
0x000100
)
{
pc
->
frame_start_found
=
0
;
pc
->
state
=
(
state
>>
(
3
*
8
))
+
0xFF00
;
return
i
-
2
;
}
}
}
}
pc
->
frame_start_found
=
vop_found
;
pc
->
state
=
state
;
pc
->
frame_start_found
=
vop_found
;
pc
->
state
=
state
;
return
END_NOT_FOUND
;
}
...
...
@@ -70,7 +71,7 @@ static int h261_parse(AVCodecParserContext *s,
ParseContext
*
pc
=
s
->
priv_data
;
int
next
;
next
=
h261_find_frame_end
(
pc
,
avctx
,
buf
,
buf_size
);
next
=
h261_find_frame_end
(
pc
,
avctx
,
buf
,
buf_size
);
if
(
ff_combine_frame
(
pc
,
next
,
&
buf
,
&
buf_size
)
<
0
)
{
*
poutbuf
=
NULL
;
*
poutbuf_size
=
0
;
...
...
libavcodec/h261data.h
View file @
b78f81c8
...
...
@@ -28,6 +28,7 @@
#define AVCODEC_H261DATA_H
#include <stdint.h>
#include "h261.h"
// H.261 VLC table for macroblock addressing
...
...
@@ -41,8 +42,8 @@ static const uint8_t h261_mba_code[35] = {
32
,
31
,
30
,
29
,
28
,
27
,
26
,
25
,
24
,
15
,
//
(MBA stuffing)
1
//
(start code)
15
,
//
(MBA stuffing)
1
//
(start code)
};
static
const
uint8_t
h261_mba_bits
[
35
]
=
{
...
...
@@ -55,11 +56,11 @@ static const uint8_t h261_mba_bits[35] = {
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
//
(MBA stuffing)
16
//
(start code)
11
,
//
(MBA stuffing)
16
//
(start code)
};
//H.261 VLC table for macroblock type
//
H.261 VLC table for macroblock type
static
const
uint8_t
h261_mtype_code
[
10
]
=
{
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
...
...
@@ -72,62 +73,60 @@ static const uint8_t h261_mtype_bits[10] = {
2
,
6
};
static
const
int
h261_mtype_map
[
10
]
=
{
static
const
int
h261_mtype_map
[
10
]
=
{
MB_TYPE_INTRA4x4
,
MB_TYPE_INTRA4x4
|
MB_TYPE_QUANT
,
MB_TYPE_CBP
,
MB_TYPE_QUANT
|
MB_TYPE_CBP
,
MB_TYPE_CBP
|
MB_TYPE_QUANT
,
MB_TYPE_16x16
,
MB_TYPE_CBP
|
MB_TYPE_16x16
,
MB_TYPE_QUANT
|
MB_TYPE_CBP
|
MB_TYPE_16x16
,
MB_TYPE_16x16
|
MB_TYPE_CBP
,
MB_TYPE_16x16
|
MB_TYPE_CBP
|
MB_TYPE_QUANT
,
MB_TYPE_16x16
|
MB_TYPE_H261_FIL
,
MB_TYPE_CBP
|
MB_TYPE_16x16
|
MB_TYPE_H261_FIL
,
MB_TYPE_QUANT
|
MB_TYPE_CBP
|
MB_TYPE_16x16
|
MB_TYPE_H261_FIL
MB_TYPE_16x16
|
MB_TYPE_H261_FIL
|
MB_TYPE_CBP
,
MB_TYPE_16x16
|
MB_TYPE_H261_FIL
|
MB_TYPE_CBP
|
MB_TYPE_QUANT
};
//H.261 VLC table for motion vectors
//
H.261 VLC table for motion vectors
static
const
uint8_t
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
}
{
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
}
};
static
const
int
mvmap
[
17
]
=
{
static
const
int
mvmap
[
17
]
=
{
0
,
-
1
,
-
2
,
-
3
,
-
4
,
-
5
,
-
6
,
-
7
,
-
8
,
-
9
,
-
10
,
-
11
,
-
12
,
-
13
,
-
14
,
-
15
,
-
16
};
//H.261 VLC table for coded block pattern
static
const
uint8_t
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
},
{
15
,
8
},
{
13
,
8
},
{
3
,
9
},
{
15
,
5
},
{
11
,
8
},
{
7
,
8
},
{
7
,
9
},
{
10
,
4
},
{
20
,
7
},
{
16
,
7
},
{
28
,
8
},
{
14
,
6
},
{
14
,
8
},
{
12
,
8
},
{
2
,
9
},
{
16
,
5
},
{
24
,
8
},
{
20
,
8
},
{
16
,
8
},
{
14
,
5
},
{
10
,
8
},
{
6
,
8
},
{
6
,
9
},
{
18
,
5
},
{
26
,
8
},
{
22
,
8
},
{
18
,
8
},
{
13
,
5
},
{
9
,
8
},
{
5
,
8
},
{
5
,
9
},
{
12
,
5
},
{
8
,
8
},
{
4
,
8
},
{
4
,
9
},
{
7
,
3
},
{
10
,
5
},
{
8
,
5
},
{
12
,
6
}
// H.261 VLC table for coded block pattern
static
const
uint8_t
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
},
{
15
,
8
},
{
13
,
8
},
{
3
,
9
},
{
15
,
5
},
{
11
,
8
},
{
7
,
8
},
{
7
,
9
},
{
10
,
4
},
{
20
,
7
},
{
16
,
7
},
{
28
,
8
},
{
14
,
6
},
{
14
,
8
},
{
12
,
8
},
{
2
,
9
},
{
16
,
5
},
{
24
,
8
},
{
20
,
8
},
{
16
,
8
},
{
14
,
5
},
{
10
,
8
},
{
6
,
8
},
{
6
,
9
},
{
18
,
5
},
{
26
,
8
},
{
22
,
8
},
{
18
,
8
},
{
13
,
5
},
{
9
,
8
},
{
5
,
8
},
{
5
,
9
},
{
12
,
5
},
{
8
,
8
},
{
4
,
8
},
{
4
,
9
},
{
7
,
3
},
{
10
,
5
},
{
8
,
5
},
{
12
,
6
}
};
//H.261 VLC table for transform coefficients
//
H.261 VLC table for transform coefficients
static
const
uint16_t
h261_tcoeff_vlc
[
65
][
2
]
=
{
{
0x2
,
2
},
{
0x3
,
2
},{
0x4
,
4
},{
0x5
,
5
},
{
0x6
,
7
},{
0x26
,
8
},{
0x21
,
8
},{
0xa
,
10
},
{
0x1d
,
12
},{
0x18
,
12
},{
0x13
,
12
},{
0x10
,
12
},
{
0x1a
,
13
},
{
0x19
,
13
},
{
0x18
,
13
},
{
0x17
,
13
},
{
0x3
,
3
},
{
0x6
,
6
},
{
0x25
,
8
},
{
0xc
,
10
},
{
0x1b
,
12
},
{
0x16
,
13
},
{
0x15
,
13
},
{
0x5
,
4
},
{
0x4
,
7
},
{
0xb
,
10
},
{
0x14
,
12
},
{
0x14
,
13
},
{
0x7
,
5
},
{
0x24
,
8
},
{
0x1c
,
12
},
{
0x13
,
13
},
{
0x6
,
5
},
{
0xf
,
10
},
{
0x12
,
12
},
{
0x7
,
6
},
{
0x9
,
10
},
{
0x12
,
13
},
{
0x5
,
6
},
{
0x1e
,
12
},
{
0x4
,
6
},
{
0x15
,
12
},
{
0x7
,
7
},
{
0x11
,
12
},
{
0x5
,
7
},
{
0x11
,
13
},
{
0x27
,
8
},
{
0x10
,
13
},
{
0x23
,
8
},
{
0x22
,
8
},
{
0x20
,
8
},
{
0xe
,
10
},
{
0xd
,
10
},
{
0x8
,
10
},
{
0x1f
,
12
},
{
0x1a
,
12
},
{
0x19
,
12
},
{
0x17
,
12
},
{
0x16
,
12
},
{
0x1f
,
13
},
{
0x1e
,
13
},
{
0x1d
,
13
},
{
0x1c
,
13
},
{
0x1b
,
13
},
{
0x1
,
6
}
//
escape
{
0x2
,
2
},
{
0x3
,
2
},
{
0x4
,
4
},
{
0x5
,
5
},
{
0x6
,
7
},
{
0x26
,
8
},
{
0x21
,
8
},
{
0xa
,
10
},
{
0x1d
,
12
},
{
0x18
,
12
},
{
0x13
,
12
},
{
0x10
,
12
},
{
0x1a
,
13
},
{
0x19
,
13
},
{
0x18
,
13
},
{
0x17
,
13
},
{
0x3
,
3
},
{
0x6
,
6
},
{
0x25
,
8
},
{
0xc
,
10
},
{
0x1b
,
12
},
{
0x16
,
13
},
{
0x15
,
13
},
{
0x5
,
4
},
{
0x4
,
7
},
{
0xb
,
10
},
{
0x14
,
12
},
{
0x14
,
13
},
{
0x7
,
5
},
{
0x24
,
8
},
{
0x1c
,
12
},
{
0x13
,
13
},
{
0x6
,
5
},
{
0xf
,
10
},
{
0x12
,
12
},
{
0x7
,
6
},
{
0x9
,
10
},
{
0x12
,
13
},
{
0x5
,
6
},
{
0x1e
,
12
},
{
0x4
,
6
},
{
0x15
,
12
},
{
0x7
,
7
},
{
0x11
,
12
},
{
0x5
,
7
},
{
0x11
,
13
},
{
0x27
,
8
},
{
0x10
,
13
},
{
0x23
,
8
},
{
0x22
,
8
},
{
0x20
,
8
},
{
0xe
,
10
},
{
0xd
,
10
},
{
0x8
,
10
},
{
0x1f
,
12
},
{
0x1a
,
12
},
{
0x19
,
12
},
{
0x17
,
12
},
{
0x16
,
12
},
{
0x1f
,
13
},
{
0x1e
,
13
},
{
0x1d
,
13
},
{
0x1c
,
13
},
{
0x1b
,
13
},
{
0x1
,
6
}
//
escape
};
static
const
int8_t
h261_tcoeff_level
[
64
]
=
{
...
...
libavcodec/h261dec.c
View file @
b78f81c8
This diff is collapsed.
Click to expand it.
libavcodec/h261enc.c
View file @
b78f81c8
This diff is collapsed.
Click to expand it.
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