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
0b4ad869
Commit
0b4ad869
authored
Dec 20, 2017
by
Aurelien Jacobs
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
crc: add AV_CRC_8_SBC as a 8 bits CRC with polynomial 0x1D
parent
ea096318
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
32 additions
and
3 deletions
+32
-3
crc.c
libavutil/crc.c
+26
-0
crc.h
libavutil/crc.h
+1
-0
crc.c
libavutil/tests/crc.c
+4
-3
crc
tests/ref/fate/crc
+1
-0
No files found.
libavutil/crc.c
View file @
0b4ad869
...
@@ -52,6 +52,30 @@ static const AVCRC av_crc_table[AV_CRC_MAX][257] = {
...
@@ -52,6 +52,30 @@ static const AVCRC av_crc_table[AV_CRC_MAX][257] = {
0xDE
,
0xD9
,
0xD0
,
0xD7
,
0xC2
,
0xC5
,
0xCC
,
0xCB
,
0xE6
,
0xE1
,
0xE8
,
0xEF
,
0xDE
,
0xD9
,
0xD0
,
0xD7
,
0xC2
,
0xC5
,
0xCC
,
0xCB
,
0xE6
,
0xE1
,
0xE8
,
0xEF
,
0xFA
,
0xFD
,
0xF4
,
0xF3
,
0x01
0xFA
,
0xFD
,
0xF4
,
0xF3
,
0x01
},
},
[
AV_CRC_8_EBU
]
=
{
0x00
,
0x1D
,
0x3A
,
0x27
,
0x74
,
0x69
,
0x4E
,
0x53
,
0xE8
,
0xF5
,
0xD2
,
0xCF
,
0x9C
,
0x81
,
0xA6
,
0xBB
,
0xCD
,
0xD0
,
0xF7
,
0xEA
,
0xB9
,
0xA4
,
0x83
,
0x9E
,
0x25
,
0x38
,
0x1F
,
0x02
,
0x51
,
0x4C
,
0x6B
,
0x76
,
0x87
,
0x9A
,
0xBD
,
0xA0
,
0xF3
,
0xEE
,
0xC9
,
0xD4
,
0x6F
,
0x72
,
0x55
,
0x48
,
0x1B
,
0x06
,
0x21
,
0x3C
,
0x4A
,
0x57
,
0x70
,
0x6D
,
0x3E
,
0x23
,
0x04
,
0x19
,
0xA2
,
0xBF
,
0x98
,
0x85
,
0xD6
,
0xCB
,
0xEC
,
0xF1
,
0x13
,
0x0E
,
0x29
,
0x34
,
0x67
,
0x7A
,
0x5D
,
0x40
,
0xFB
,
0xE6
,
0xC1
,
0xDC
,
0x8F
,
0x92
,
0xB5
,
0xA8
,
0xDE
,
0xC3
,
0xE4
,
0xF9
,
0xAA
,
0xB7
,
0x90
,
0x8D
,
0x36
,
0x2B
,
0x0C
,
0x11
,
0x42
,
0x5F
,
0x78
,
0x65
,
0x94
,
0x89
,
0xAE
,
0xB3
,
0xE0
,
0xFD
,
0xDA
,
0xC7
,
0x7C
,
0x61
,
0x46
,
0x5B
,
0x08
,
0x15
,
0x32
,
0x2F
,
0x59
,
0x44
,
0x63
,
0x7E
,
0x2D
,
0x30
,
0x17
,
0x0A
,
0xB1
,
0xAC
,
0x8B
,
0x96
,
0xC5
,
0xD8
,
0xFF
,
0xE2
,
0x26
,
0x3B
,
0x1C
,
0x01
,
0x52
,
0x4F
,
0x68
,
0x75
,
0xCE
,
0xD3
,
0xF4
,
0xE9
,
0xBA
,
0xA7
,
0x80
,
0x9D
,
0xEB
,
0xF6
,
0xD1
,
0xCC
,
0x9F
,
0x82
,
0xA5
,
0xB8
,
0x03
,
0x1E
,
0x39
,
0x24
,
0x77
,
0x6A
,
0x4D
,
0x50
,
0xA1
,
0xBC
,
0x9B
,
0x86
,
0xD5
,
0xC8
,
0xEF
,
0xF2
,
0x49
,
0x54
,
0x73
,
0x6E
,
0x3D
,
0x20
,
0x07
,
0x1A
,
0x6C
,
0x71
,
0x56
,
0x4B
,
0x18
,
0x05
,
0x22
,
0x3F
,
0x84
,
0x99
,
0xBE
,
0xA3
,
0xF0
,
0xED
,
0xCA
,
0xD7
,
0x35
,
0x28
,
0x0F
,
0x12
,
0x41
,
0x5C
,
0x7B
,
0x66
,
0xDD
,
0xC0
,
0xE7
,
0xFA
,
0xA9
,
0xB4
,
0x93
,
0x8E
,
0xF8
,
0xE5
,
0xC2
,
0xDF
,
0x8C
,
0x91
,
0xB6
,
0xAB
,
0x10
,
0x0D
,
0x2A
,
0x37
,
0x64
,
0x79
,
0x5E
,
0x43
,
0xB2
,
0xAF
,
0x88
,
0x95
,
0xC6
,
0xDB
,
0xFC
,
0xE1
,
0x5A
,
0x47
,
0x60
,
0x7D
,
0x2E
,
0x33
,
0x14
,
0x09
,
0x7F
,
0x62
,
0x45
,
0x58
,
0x0B
,
0x16
,
0x31
,
0x2C
,
0x97
,
0x8A
,
0xAD
,
0xB0
,
0xE3
,
0xFE
,
0xD9
,
0xC4
,
0x01
},
[
AV_CRC_16_ANSI
]
=
{
[
AV_CRC_16_ANSI
]
=
{
0x0000
,
0x0580
,
0x0F80
,
0x0A00
,
0x1B80
,
0x1E00
,
0x1400
,
0x1180
,
0x0000
,
0x0580
,
0x0F80
,
0x0A00
,
0x1B80
,
0x1E00
,
0x1400
,
0x1180
,
0x3380
,
0x3600
,
0x3C00
,
0x3980
,
0x2800
,
0x2D80
,
0x2780
,
0x2200
,
0x3380
,
0x3600
,
0x3C00
,
0x3980
,
0x2800
,
0x2D80
,
0x2780
,
0x2200
,
...
@@ -305,6 +329,7 @@ static void id ## _init_table_once(void)
...
@@ -305,6 +329,7 @@ static void id ## _init_table_once(void)
#define CRC_INIT_TABLE_ONCE(id) ff_thread_once(&id ## _once_control, id ## _init_table_once)
#define CRC_INIT_TABLE_ONCE(id) ff_thread_once(&id ## _once_control, id ## _init_table_once)
DECLARE_CRC_INIT_TABLE_ONCE
(
AV_CRC_8_ATM
,
0
,
8
,
0x07
)
DECLARE_CRC_INIT_TABLE_ONCE
(
AV_CRC_8_ATM
,
0
,
8
,
0x07
)
DECLARE_CRC_INIT_TABLE_ONCE
(
AV_CRC_8_EBU
,
0
,
8
,
0x1D
)
DECLARE_CRC_INIT_TABLE_ONCE
(
AV_CRC_16_ANSI
,
0
,
16
,
0x8005
)
DECLARE_CRC_INIT_TABLE_ONCE
(
AV_CRC_16_ANSI
,
0
,
16
,
0x8005
)
DECLARE_CRC_INIT_TABLE_ONCE
(
AV_CRC_16_CCITT
,
0
,
16
,
0x1021
)
DECLARE_CRC_INIT_TABLE_ONCE
(
AV_CRC_16_CCITT
,
0
,
16
,
0x1021
)
DECLARE_CRC_INIT_TABLE_ONCE
(
AV_CRC_24_IEEE
,
0
,
24
,
0x864CFB
)
DECLARE_CRC_INIT_TABLE_ONCE
(
AV_CRC_24_IEEE
,
0
,
24
,
0x864CFB
)
...
@@ -351,6 +376,7 @@ const AVCRC *av_crc_get_table(AVCRCId crc_id)
...
@@ -351,6 +376,7 @@ const AVCRC *av_crc_get_table(AVCRCId crc_id)
#if !CONFIG_HARDCODED_TABLES
#if !CONFIG_HARDCODED_TABLES
switch
(
crc_id
)
{
switch
(
crc_id
)
{
case
AV_CRC_8_ATM
:
CRC_INIT_TABLE_ONCE
(
AV_CRC_8_ATM
);
break
;
case
AV_CRC_8_ATM
:
CRC_INIT_TABLE_ONCE
(
AV_CRC_8_ATM
);
break
;
case
AV_CRC_8_EBU
:
CRC_INIT_TABLE_ONCE
(
AV_CRC_8_EBU
);
break
;
case
AV_CRC_16_ANSI
:
CRC_INIT_TABLE_ONCE
(
AV_CRC_16_ANSI
);
break
;
case
AV_CRC_16_ANSI
:
CRC_INIT_TABLE_ONCE
(
AV_CRC_16_ANSI
);
break
;
case
AV_CRC_16_CCITT
:
CRC_INIT_TABLE_ONCE
(
AV_CRC_16_CCITT
);
break
;
case
AV_CRC_16_CCITT
:
CRC_INIT_TABLE_ONCE
(
AV_CRC_16_CCITT
);
break
;
case
AV_CRC_24_IEEE
:
CRC_INIT_TABLE_ONCE
(
AV_CRC_24_IEEE
);
break
;
case
AV_CRC_24_IEEE
:
CRC_INIT_TABLE_ONCE
(
AV_CRC_24_IEEE
);
break
;
...
...
libavutil/crc.h
View file @
0b4ad869
...
@@ -54,6 +54,7 @@ typedef enum {
...
@@ -54,6 +54,7 @@ typedef enum {
AV_CRC_32_IEEE_LE
,
/*< reversed bitorder version of AV_CRC_32_IEEE */
AV_CRC_32_IEEE_LE
,
/*< reversed bitorder version of AV_CRC_32_IEEE */
AV_CRC_16_ANSI_LE
,
/*< reversed bitorder version of AV_CRC_16_ANSI */
AV_CRC_16_ANSI_LE
,
/*< reversed bitorder version of AV_CRC_16_ANSI */
AV_CRC_24_IEEE
,
AV_CRC_24_IEEE
,
AV_CRC_8_EBU
,
AV_CRC_MAX
,
/*< Not part of public API! Do not use outside libavutil. */
AV_CRC_MAX
,
/*< Not part of public API! Do not use outside libavutil. */
}
AVCRCId
;
}
AVCRCId
;
...
...
libavutil/tests/crc.c
View file @
0b4ad869
...
@@ -25,20 +25,21 @@ int main(void)
...
@@ -25,20 +25,21 @@ int main(void)
{
{
uint8_t
buf
[
1999
];
uint8_t
buf
[
1999
];
int
i
;
int
i
;
static
const
unsigned
p
[
6
][
3
]
=
{
static
const
unsigned
p
[
7
][
3
]
=
{
{
AV_CRC_32_IEEE_LE
,
0xEDB88320
,
0x3D5CDD04
},
{
AV_CRC_32_IEEE_LE
,
0xEDB88320
,
0x3D5CDD04
},
{
AV_CRC_32_IEEE
,
0x04C11DB7
,
0xC0F5BAE0
},
{
AV_CRC_32_IEEE
,
0x04C11DB7
,
0xC0F5BAE0
},
{
AV_CRC_24_IEEE
,
0x864CFB
,
0xB704CE
},
{
AV_CRC_24_IEEE
,
0x864CFB
,
0xB704CE
},
{
AV_CRC_16_ANSI_LE
,
0xA001
,
0xBFD8
},
{
AV_CRC_16_ANSI_LE
,
0xA001
,
0xBFD8
},
{
AV_CRC_16_ANSI
,
0x8005
,
0x1FBB
},
{
AV_CRC_16_ANSI
,
0x8005
,
0x1FBB
},
{
AV_CRC_8_ATM
,
0x07
,
0xE3
}
{
AV_CRC_8_ATM
,
0x07
,
0xE3
},
{
AV_CRC_8_EBU
,
0x1D
,
0xD6
},
};
};
const
AVCRC
*
ctx
;
const
AVCRC
*
ctx
;
for
(
i
=
0
;
i
<
sizeof
(
buf
);
i
++
)
for
(
i
=
0
;
i
<
sizeof
(
buf
);
i
++
)
buf
[
i
]
=
i
+
i
*
i
;
buf
[
i
]
=
i
+
i
*
i
;
for
(
i
=
0
;
i
<
6
;
i
++
)
{
for
(
i
=
0
;
i
<
7
;
i
++
)
{
ctx
=
av_crc_get_table
(
p
[
i
][
0
]);
ctx
=
av_crc_get_table
(
p
[
i
][
0
]);
printf
(
"crc %08X = %X
\n
"
,
p
[
i
][
1
],
av_crc
(
ctx
,
0
,
buf
,
sizeof
(
buf
)));
printf
(
"crc %08X = %X
\n
"
,
p
[
i
][
1
],
av_crc
(
ctx
,
0
,
buf
,
sizeof
(
buf
)));
}
}
...
...
tests/ref/fate/crc
View file @
0b4ad869
...
@@ -4,3 +4,4 @@ crc 00864CFB = 326039
...
@@ -4,3 +4,4 @@ crc 00864CFB = 326039
crc 0000A001 = BFD8
crc 0000A001 = BFD8
crc 00008005 = BB1F
crc 00008005 = BB1F
crc 00000007 = E3
crc 00000007 = E3
crc 0000001D = D6
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