mirror of
https://github.com/opencv/opencv.git
synced 2026-11-11 02:59:00 -06:00
Compare commits
7748 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
92387b1ef8 | ||
|
|
8d1f5b5490 | ||
|
|
4e669f59a0 | ||
|
|
2f4b334ef2 | ||
|
|
94e4498cfd | ||
|
|
b4432c4fd7 | ||
|
|
3ee90a1ff4 | ||
|
|
613b289325 | ||
|
|
4fa91e468b | ||
|
|
34957bcfed | ||
|
|
d34297b516 | ||
|
|
97dc5be841 | ||
|
|
ec0e43a95b | ||
|
|
a8e2922467 | ||
|
|
323e24e3ef | ||
|
|
2ecb48921b | ||
|
|
d02627ea89 | ||
|
|
0c5d9e18d1 | ||
|
|
af5bec70cd | ||
|
|
03e74330fa | ||
|
|
9aeb8c8d5a | ||
|
|
5021350082 | ||
|
|
297808e6b9 | ||
|
|
932043fdc2 | ||
|
|
be23846c4e | ||
|
|
c04d62db8b | ||
|
|
437fbe2594 | ||
|
|
ddd1a816a0 | ||
|
|
1f6893e4dc | ||
|
|
d214770d5b | ||
|
|
0862e8e34c | ||
|
|
84f37d352f | ||
|
|
32737df1b5 | ||
|
|
4474845dd5 | ||
|
|
3c6aa650a1 | ||
|
|
491a3fdebc | ||
|
|
6f2632ca2e | ||
|
|
b2bb7d075a | ||
|
|
3bbd22cb63 | ||
|
|
3b87e3fa20 | ||
|
|
74cb74dc0a | ||
|
|
5ebc7f0b72 | ||
|
|
5502f0b45d | ||
|
|
8f60740205 | ||
|
|
1434f55cb9 | ||
|
|
0d9938dab5 | ||
|
|
31d0dcf28e | ||
|
|
574280cd3a | ||
|
|
76e4b0a8fe | ||
|
|
1e443a6ea6 | ||
|
|
f93a4dfbc9 | ||
|
|
34129d8e83 | ||
|
|
dbfd6a3dde | ||
|
|
c5d4ecae37 | ||
|
|
d19189e80f | ||
|
|
d1ac75cabd | ||
|
|
b6ce4a527e | ||
|
|
14c5ef8db4 | ||
|
|
006d5ac0a5 | ||
|
|
a1173dfa27 | ||
|
|
08b30580b7 | ||
|
|
aee03cd5e5 | ||
|
|
d366cb960d | ||
|
|
5ac1d8323e | ||
|
|
e4fea5abab | ||
|
|
1305962af7 | ||
|
|
fd0773eb32 | ||
|
|
6882c10b45 | ||
|
|
ba71caca04 | ||
|
|
0db10a3052 | ||
|
|
4c1c0b108d | ||
|
|
f0c14888d5 | ||
|
|
5c15461595 | ||
|
|
5d346128f7 | ||
|
|
e37a58df3c | ||
|
|
4ed2d6328b | ||
|
|
2bfad68812 | ||
|
|
a153871940 | ||
|
|
7afce8e003 | ||
|
|
1836d41b5c | ||
|
|
fe2f5c175a | ||
|
|
8f732f2cfe | ||
|
|
5053aeeb19 | ||
|
|
5cdf0e3e89 | ||
|
|
c22673e999 | ||
|
|
e0395a79ec | ||
|
|
60c06e551a | ||
|
|
205775ed52 | ||
|
|
c2a86a6a84 | ||
|
|
dbc0aa6c7b | ||
|
|
0831bd3990 | ||
|
|
21b415f6be | ||
|
|
286ba8cffd | ||
|
|
b5ddaae427 | ||
|
|
4c251bd260 | ||
|
|
22b64e2c28 | ||
|
|
9d89c369f8 | ||
|
|
7a7b0bcfcb | ||
|
|
0d706f6796 | ||
|
|
544990e377 | ||
|
|
fda17273de | ||
|
|
d8e3971e7f | ||
|
|
d2e169929c | ||
|
|
bb4b4acce5 | ||
|
|
bfe5ed23cd | ||
|
|
5576c0866a | ||
|
|
a0f6cd8df5 | ||
|
|
6ead99985f | ||
|
|
5aa4b74115 | ||
|
|
3c8bd19e56 | ||
|
|
5d6292fc97 | ||
|
|
b26580cc7b | ||
|
|
46ec9c386b | ||
|
|
8e67f0ba84 | ||
|
|
05531cd7c4 | ||
|
|
919fc443fb | ||
|
|
35d4f998fd | ||
|
|
2cda78ffac | ||
|
|
832a03821d | ||
|
|
4a294775da | ||
|
|
a9607c8531 | ||
|
|
a921761d18 | ||
|
|
f814218640 | ||
|
|
715887fcd5 | ||
|
|
fc641e2bde | ||
|
|
6dd5e7749b | ||
|
|
bcf78daed2 | ||
|
|
1ab7acf015 | ||
|
|
02bb287802 | ||
|
|
9d8118dee5 | ||
|
|
2e9ef3f9e3 | ||
|
|
0087c57e0d | ||
|
|
d6f8a75e91 | ||
|
|
237f33d4f0 | ||
|
|
a15707bc57 | ||
|
|
9d624f82c0 | ||
|
|
893fa4cf84 | ||
|
|
76760470f3 | ||
|
|
4f373a4284 | ||
|
|
e0b7389dc3 | ||
|
|
a69eeb6b1f | ||
|
|
5d5cf32e22 | ||
|
|
0de6165863 | ||
|
|
9c0a5523e4 | ||
|
|
6c4232dcf3 | ||
|
|
78376c0f63 | ||
|
|
ffe0631518 | ||
|
|
f95203e93f | ||
|
|
387935e94c | ||
|
|
878ec080c7 | ||
|
|
d86d8ed909 | ||
|
|
056a111788 | ||
|
|
a87ae5910f | ||
|
|
2f0a598ac8 | ||
|
|
eaa573f56a | ||
|
|
5772cb52e3 | ||
|
|
421c922539 | ||
|
|
9abdf39c90 | ||
|
|
efacf7b6de | ||
|
|
8a36402ec0 | ||
|
|
d68c392b42 | ||
|
|
7172c16435 | ||
|
|
d19897b734 | ||
|
|
d4245aa45c | ||
|
|
6423b366eb | ||
|
|
54c1637ba1 | ||
|
|
4448cbffd2 | ||
|
|
be8ca7ad81 | ||
|
|
1621043bd2 | ||
|
|
b81598bc03 | ||
|
|
c68d15bebe | ||
|
|
8418d564a8 | ||
|
|
0e5c710757 | ||
|
|
5c5d0e6743 | ||
|
|
5473dbebed | ||
|
|
b5d6d7016c | ||
|
|
98f5fcd86e | ||
|
|
b4bcdd10a1 | ||
|
|
e8742be30b | ||
|
|
8026824563 | ||
|
|
0ba66aa5b9 | ||
|
|
d5894ef2a8 | ||
|
|
0c471515fd | ||
|
|
c7cb028035 | ||
|
|
8d921129a7 | ||
|
|
767bae44ae | ||
|
|
84f9578fbb | ||
|
|
8562bb7092 | ||
|
|
38bbfe0bb8 | ||
|
|
2b27f7dbb3 | ||
|
|
5a72be08fd | ||
|
|
a0f8645541 | ||
|
|
8524d46fee | ||
|
|
e860ed7689 | ||
|
|
1bef1b8d16 | ||
|
|
2b26094cf5 | ||
|
|
2afb02fcb4 | ||
|
|
5c8683139f | ||
|
|
16fcd78f03 | ||
|
|
7ddc2cc073 | ||
|
|
81c746c2a8 | ||
|
|
bef009c9dd | ||
|
|
fedf064088 | ||
|
|
b3e8c65e5e | ||
|
|
4cf7ddfd87 | ||
|
|
c4edd86aeb | ||
|
|
152874eaed | ||
|
|
76f54b51c1 | ||
|
|
c9cba6433e | ||
|
|
313dc32606 | ||
|
|
d4d1d03455 | ||
|
|
7375383d26 | ||
|
|
9a66191ea8 | ||
|
|
bd53a30e76 | ||
|
|
e679d97100 | ||
|
|
04f70c92a8 | ||
|
|
0d29774401 | ||
|
|
3ae21095df | ||
|
|
626ccfe410 | ||
|
|
ddf293a081 | ||
|
|
cefa1dc5cb | ||
|
|
3e96b724c2 | ||
|
|
b96def885f | ||
|
|
f019de6900 | ||
|
|
51797d133a | ||
|
|
3cb76d5c66 | ||
|
|
047bda32d8 | ||
|
|
3cfd7fcbbf | ||
|
|
559e1f76f9 | ||
|
|
9acf93b7c6 | ||
|
|
c3cf1be344 | ||
|
|
e35959fad2 | ||
|
|
7452f9a56e | ||
|
|
1c804124d1 | ||
|
|
980d84e4a2 | ||
|
|
bf5e930468 | ||
|
|
9f82ac18d4 | ||
|
|
a6bbe06379 | ||
|
|
cc5a1d612e | ||
|
|
ae66ce9d22 | ||
|
|
99a286ef24 | ||
|
|
8b554d3c2d | ||
|
|
e8bf4417ef | ||
|
|
7df392bfd8 | ||
|
|
4d3915f69a | ||
|
|
81e814d9ed | ||
|
|
97878645bc | ||
|
|
c209f795b5 | ||
|
|
d3b0bda011 | ||
|
|
b48b2d43b0 | ||
|
|
0baf0bdc24 | ||
|
|
39854ceda4 | ||
|
|
9233472bdd | ||
|
|
f0434d60b0 | ||
|
|
933dfed4b8 | ||
|
|
aa14b6d2f3 | ||
|
|
01f40cfafc | ||
|
|
b4112a5878 | ||
|
|
3942b1f362 | ||
|
|
1eb9ef6bbf | ||
|
|
38909d7959 | ||
|
|
18f4e55692 | ||
|
|
9ab59fb22e | ||
|
|
7b022371ea | ||
|
|
286055b0d8 | ||
|
|
2cebe5a3b0 | ||
|
|
2998248dd3 | ||
|
|
352b121202 | ||
|
|
4194b7effe | ||
|
|
742fb559f7 | ||
|
|
955f489621 | ||
|
|
05f52b697f | ||
|
|
ad68b79630 | ||
|
|
8527d895bb | ||
|
|
f50817120e | ||
|
|
93d6e800b6 | ||
|
|
a581ddd896 | ||
|
|
691fb1ffae | ||
|
|
7392ce0a81 | ||
|
|
80df9ddedb | ||
|
|
1260060d7d | ||
|
|
01c5a0ed12 | ||
|
|
b3ac274617 | ||
|
|
de49ed3c15 | ||
|
|
4514158e43 | ||
|
|
5a918986cc | ||
|
|
9c6ff4d955 | ||
|
|
d367e159c1 | ||
|
|
db78fcd11a | ||
|
|
dc1b01e002 | ||
|
|
979f88f6db | ||
|
|
8512ca7490 | ||
|
|
67ef84d883 | ||
|
|
4d7f9e06e8 | ||
|
|
b5fd7868a8 | ||
|
|
7ca9e49749 | ||
|
|
a69fd6029a | ||
|
|
3c31d6add3 | ||
|
|
7323823b38 | ||
|
|
b2f6aedec9 | ||
|
|
46dd502f4a | ||
|
|
39346f3204 | ||
|
|
32b44173e7 | ||
|
|
00f222a9b4 | ||
|
|
920427af5e | ||
|
|
d55e44f0b7 | ||
|
|
92298c88bd | ||
|
|
c963757b43 | ||
|
|
47b2511f07 | ||
|
|
52b4fe63c1 | ||
|
|
46be45b4f7 | ||
|
|
64eb69cb15 | ||
|
|
f50858dd24 | ||
|
|
0f8a266787 | ||
|
|
a242556b1d | ||
|
|
decdae515b | ||
|
|
9ff14bc411 | ||
|
|
f609ddba05 | ||
|
|
cc903d0605 | ||
|
|
a8e550f5bf | ||
|
|
6e2a68fdf3 | ||
|
|
1048b235bf | ||
|
|
5ae3693567 | ||
|
|
90c74e3be0 | ||
|
|
ca599eee40 | ||
|
|
e38b54a786 | ||
|
|
dfec99691b | ||
|
|
8c2d712fb0 | ||
|
|
c3eb1254cf | ||
|
|
89697310b0 | ||
|
|
e6615c5825 | ||
|
|
7cff60f4f6 | ||
|
|
251610f6a1 | ||
|
|
fb03330ea3 | ||
|
|
cfd498a8eb | ||
|
|
baa21484a1 | ||
|
|
0a306f8804 | ||
|
|
9a0beda037 | ||
|
|
09e6c82190 | ||
|
|
e9ec52368f | ||
|
|
0ef7387298 | ||
|
|
debe99f1a4 | ||
|
|
031568831c | ||
|
|
4e7a14355d | ||
|
|
490b327be9 | ||
|
|
ff35726fc3 | ||
|
|
31e0d90da6 | ||
|
|
b34f0d99bb | ||
|
|
66f2000548 | ||
|
|
91e9e6489b | ||
|
|
f820df2ea0 | ||
|
|
a91dcb015d | ||
|
|
781931a671 | ||
|
|
fd4761ba31 | ||
|
|
3119f0a61b | ||
|
|
6e9d0d9a0c | ||
|
|
1648e9292c | ||
|
|
d5e314e728 | ||
|
|
b0209ad7f7 | ||
|
|
f5b98bea41 | ||
|
|
51e687f7a9 | ||
|
|
eac5cab5cb | ||
|
|
5e62e71b13 | ||
|
|
54e7f08760 | ||
|
|
838947bb8e | ||
|
|
80747088e3 | ||
|
|
56dd7eda0d | ||
|
|
588eba3b37 | ||
|
|
5525cc4d09 | ||
|
|
c0fe522c9d | ||
|
|
18034a5138 | ||
|
|
f7981a8ae8 | ||
|
|
f260b13a6f | ||
|
|
3e0b1f2845 | ||
|
|
d5d16bb3b1 | ||
|
|
aeb260a3f9 | ||
|
|
7be3d3ab2c | ||
|
|
216baf5b11 | ||
|
|
37ce3b8cfe | ||
|
|
33f77774c5 | ||
|
|
885ce6b348 | ||
|
|
dcca0b499c | ||
|
|
d8c352d20d | ||
|
|
c1545c6f2a | ||
|
|
1e9bd59f07 | ||
|
|
066c775321 | ||
|
|
d8e470fc30 | ||
|
|
02c48ab7d6 | ||
|
|
d81d51d155 | ||
|
|
466a98f7c3 | ||
|
|
0098c4b571 | ||
|
|
7e3d7677ae | ||
|
|
0a708e4070 | ||
|
|
40b2dfae09 | ||
|
|
0d791189ee | ||
|
|
411be4fde8 | ||
|
|
ddd91bcebf | ||
|
|
1e1f20cfee | ||
|
|
a21be6706d | ||
|
|
89eee6ca99 | ||
|
|
13a0a37e63 | ||
|
|
846e6f731a | ||
|
|
7b0b12de58 | ||
|
|
3d1355efc1 | ||
|
|
dbcc55a196 | ||
|
|
0f1fdd885d | ||
|
|
441eeef319 | ||
|
|
a8d0c18248 | ||
|
|
bbe007159a | ||
|
|
24ca6aaada | ||
|
|
913c266b4a | ||
|
|
23fea91e84 | ||
|
|
47db20eced | ||
|
|
a041105491 | ||
|
|
484c68cbb8 | ||
|
|
56e8827ce0 | ||
|
|
ea535abd50 | ||
|
|
15db8243ef | ||
|
|
fe00689757 | ||
|
|
706b8a6266 | ||
|
|
559b538be8 | ||
|
|
f2decec3e8 | ||
|
|
514b202d7b | ||
|
|
dff7037156 | ||
|
|
9da4fe4b02 | ||
|
|
6025738b8b | ||
|
|
7a4b2e18a7 | ||
|
|
a3fda24597 | ||
|
|
f332f98757 | ||
|
|
4760d32937 | ||
|
|
33f5ac5c15 | ||
|
|
59a41c1c51 | ||
|
|
345cd1242f | ||
|
|
3d2a24f61d | ||
|
|
50a0a167f0 | ||
|
|
e2e25e9af3 | ||
|
|
76afd9a1b5 | ||
|
|
b37387ef90 | ||
|
|
21c0acff24 | ||
|
|
1bf811c3f1 | ||
|
|
587dca9b1c | ||
|
|
6a0d3b06f2 | ||
|
|
b71a27b96c | ||
|
|
d69b7c332a | ||
|
|
05846438e3 | ||
|
|
af5e631a7a | ||
|
|
c29b09d093 | ||
|
|
c2caea4818 | ||
|
|
e837d69f8f | ||
|
|
34e4e66bf1 | ||
|
|
9b6424e0c6 | ||
|
|
62854dcc0d | ||
|
|
75c7917643 | ||
|
|
ddf82d0b15 | ||
|
|
e4184195a2 | ||
|
|
f4c9bc8bc4 | ||
|
|
7c226ed7a2 | ||
|
|
1bd18836d7 | ||
|
|
dd9da53860 | ||
|
|
fdbed4a473 | ||
|
|
14b006e808 | ||
|
|
2177c7c5a8 | ||
|
|
750162acb3 | ||
|
|
3efe131480 | ||
|
|
ab84de967e | ||
|
|
3a3f4038bf | ||
|
|
09ba5a28d0 | ||
|
|
7376c5311b | ||
|
|
46ada3886f | ||
|
|
7d7f5c196d | ||
|
|
12dcb1555e | ||
|
|
00c2930709 | ||
|
|
23fc5930b7 | ||
|
|
09d392f09d | ||
|
|
a80e0cf8bd | ||
|
|
f52cac9d47 | ||
|
|
9633e2c93e | ||
|
|
acec99876d | ||
|
|
db78de9c3b | ||
|
|
5feca50f58 | ||
|
|
1dd7f546af | ||
|
|
769fe82743 | ||
|
|
e5ece03db1 | ||
|
|
6f04385a0e | ||
|
|
74fc9acdd1 | ||
|
|
a388806555 | ||
|
|
2ced3ba276 | ||
|
|
eb2e061e3f | ||
|
|
d430e802f2 | ||
|
|
12f01b778b | ||
|
|
21e38f2949 | ||
|
|
be507b20cd | ||
|
|
9f697510ca | ||
|
|
4bb4c92f68 | ||
|
|
33e659786f | ||
|
|
d945aff132 | ||
|
|
a9b91bb400 | ||
|
|
c9ccf3b55d | ||
|
|
706828a6d9 | ||
|
|
01345fc159 | ||
|
|
44ab680613 | ||
|
|
ddf220e136 | ||
|
|
32a4ec156b | ||
|
|
2eab5eb6c0 | ||
|
|
7749eb5d1f | ||
|
|
bd5a222d84 | ||
|
|
c7bfdc2063 | ||
|
|
55df326589 | ||
|
|
6282ff0887 | ||
|
|
ea35fee5b8 | ||
|
|
0e5fec288c | ||
|
|
c0cc51cb4b | ||
|
|
5dd76a4791 | ||
|
|
2bc4486966 | ||
|
|
344d9fd83f | ||
|
|
4a0152c731 | ||
|
|
7d245e0f29 | ||
|
|
5de01fde53 | ||
|
|
108bb75430 | ||
|
|
4613d37eba | ||
|
|
05b1636780 | ||
|
|
2f7c926670 | ||
|
|
dff9d2288b | ||
|
|
d3071db0d7 | ||
|
|
8e088d38a5 | ||
|
|
31da833574 | ||
|
|
96cc618410 | ||
|
|
08dd126f08 | ||
|
|
0051208684 | ||
|
|
d2b10d8aa1 | ||
|
|
1b2c11e7b3 | ||
|
|
4094b2d7a5 | ||
|
|
af0942c78f | ||
|
|
f0282337e3 | ||
|
|
f88e9a748a | ||
|
|
aa485ccd75 | ||
|
|
e9037644c3 | ||
|
|
1a18fa1c94 | ||
|
|
e0ef293645 | ||
|
|
fcf971bded | ||
|
|
9533982729 | ||
|
|
21d06f5ab2 | ||
|
|
07a4f571d9 | ||
|
|
5e2c578b50 | ||
|
|
bf42b9603b | ||
|
|
603864dba2 | ||
|
|
4f2612fcfd | ||
|
|
a413423ff6 | ||
|
|
1a8d7f9587 | ||
|
|
7213e5f68a | ||
|
|
37d300f250 | ||
|
|
b57be28920 | ||
|
|
5eb67cc2cb | ||
|
|
3143f2fb50 | ||
|
|
df21a24f81 | ||
|
|
ee2008abe8 | ||
|
|
1d77d697ef | ||
|
|
cf0f47f589 | ||
|
|
f7d36bbad5 | ||
|
|
274b361ca3 | ||
|
|
d81a0df489 | ||
|
|
e7ac52d17a | ||
|
|
7e26cf569f | ||
|
|
e390c8c728 | ||
|
|
5547398786 | ||
|
|
7eba9055e0 | ||
|
|
2a8ef1d065 | ||
|
|
0303e8067e | ||
|
|
11981c31f0 | ||
|
|
cd13b30fde | ||
|
|
ec0508269a | ||
|
|
a3b515c524 | ||
|
|
e1be6d0888 | ||
|
|
a275489f0a | ||
|
|
190d00ea3e | ||
|
|
31fbe8caeb | ||
|
|
1862c5fbb2 | ||
|
|
22bb5d1fcc | ||
|
|
10d8e956f4 | ||
|
|
f533c05644 | ||
|
|
933ad0e710 | ||
|
|
d2add41b6b | ||
|
|
0a6e93dd3a | ||
|
|
ad70ab404c | ||
|
|
cea2dafa0f | ||
|
|
536634b1fe | ||
|
|
cdfdf29eca | ||
|
|
32c386786e | ||
|
|
6208ab4e49 | ||
|
|
79100efec6 | ||
|
|
8660d550d3 | ||
|
|
666de1b087 | ||
|
|
b15a9d675e | ||
|
|
e0b3751c17 | ||
|
|
894f922cfb | ||
|
|
5937e58a11 | ||
|
|
949410b347 | ||
|
|
5618f4a0ac | ||
|
|
c63f443bba | ||
|
|
e15dabf1db | ||
|
|
abf30e44cd | ||
|
|
602bd60c3a | ||
|
|
d0e16b21d4 | ||
|
|
dc265071d0 | ||
|
|
68a0347ff9 | ||
|
|
a28a556f60 | ||
|
|
f034320731 | ||
|
|
319b6a447f | ||
|
|
b484f377dd | ||
|
|
4ecc023219 | ||
|
|
8694ba0978 | ||
|
|
c1392f64a4 | ||
|
|
4e7bd86fad | ||
|
|
9c3f95782d | ||
|
|
8c65f8a0d1 | ||
|
|
e009d79cc8 | ||
|
|
771af4f32d | ||
|
|
c223c05b82 | ||
|
|
84850ae714 | ||
|
|
7c16ad3f49 | ||
|
|
faa6684373 | ||
|
|
a78da45fec | ||
|
|
74fcefedcb | ||
|
|
8031742817 | ||
|
|
43b76e548b | ||
|
|
016011fdf8 | ||
|
|
4b0f3bf188 | ||
|
|
072b1469e7 | ||
|
|
bd43c62a75 | ||
|
|
a11ff876d4 | ||
|
|
af9c558764 | ||
|
|
0be2d4188e | ||
|
|
f660461bb3 | ||
|
|
b78eb49178 | ||
|
|
4aefb9f2fc | ||
|
|
bbff288447 | ||
|
|
7bb3feff45 | ||
|
|
b33853c5be | ||
|
|
587b0cc7b4 | ||
|
|
69db797ebb | ||
|
|
96fa0ef752 | ||
|
|
3656a1aa66 | ||
|
|
84ecf4b1dd | ||
|
|
ef1d4eba84 | ||
|
|
edcd2c0408 | ||
|
|
e2b677ddcf | ||
|
|
b6869df556 | ||
|
|
622301c78a | ||
|
|
f6b758699b | ||
|
|
784f77a4a5 | ||
|
|
bd8bac27d5 | ||
|
|
1b1246cbae | ||
|
|
ff8aa6662e | ||
|
|
c385ac575d | ||
|
|
9d01818e8a | ||
|
|
6c42112555 | ||
|
|
b668d3f693 | ||
|
|
0629add3f7 | ||
|
|
85cc11e3b2 | ||
|
|
680efe1a97 | ||
|
|
b8956d0111 | ||
|
|
44f8670719 | ||
|
|
14c0bfce2f | ||
|
|
a8656ea20f | ||
|
|
1f7fc6875f | ||
|
|
c1778f1199 | ||
|
|
3afe8832c5 | ||
|
|
58e5aca631 | ||
|
|
973abf0d62 | ||
|
|
4a067dca58 | ||
|
|
887d8d091b | ||
|
|
76da19d543 | ||
|
|
be89b0505a | ||
|
|
a33d98c13a | ||
|
|
ca5e07d342 | ||
|
|
365603e1c2 | ||
|
|
421e1b237c | ||
|
|
9449af8ada | ||
|
|
5ee00ec5c6 | ||
|
|
58934f1e16 | ||
|
|
8e5ce69ee8 | ||
|
|
9b0f5e61d1 | ||
|
|
d8d78b4a98 | ||
|
|
7da16d6f47 | ||
|
|
0e4bd80b80 | ||
|
|
e65de8d1da | ||
|
|
ac37b77452 | ||
|
|
306aa0e699 | ||
|
|
1afc9eb730 | ||
|
|
5a0af53683 | ||
|
|
6d68f72473 | ||
|
|
56cdd6f14f | ||
|
|
079ceea616 | ||
|
|
612822367d | ||
|
|
e866680d96 | ||
|
|
30e6725006 | ||
|
|
fbcf5f0918 | ||
|
|
cf4025c224 | ||
|
|
68f8d1cef0 | ||
|
|
9e4c62967b | ||
|
|
53a92983a4 | ||
|
|
9e065bc802 | ||
|
|
03bab0fc0d | ||
|
|
11a829f9de | ||
|
|
6483919b17 | ||
|
|
d674965bf9 | ||
|
|
e0b327aafe | ||
|
|
e1ad86c1fa | ||
|
|
d789c810bf | ||
|
|
cb324b4ec3 | ||
|
|
2255472e31 | ||
|
|
ef16650f5c | ||
|
|
89889ae8ea | ||
|
|
c119e04947 | ||
|
|
e8a1bc2bd9 | ||
|
|
6bb8afde96 | ||
|
|
131d7c394e | ||
|
|
ef0d1c1c3f | ||
|
|
cda9ed449f | ||
|
|
09b9b0fb9e | ||
|
|
3316e58314 | ||
|
|
aed9f5d5e8 | ||
|
|
894c2468df | ||
|
|
9b2a7fe723 | ||
|
|
11b3529b39 | ||
|
|
53effc529b | ||
|
|
0dab097a26 | ||
|
|
b09f591dda | ||
|
|
c7f420ba75 | ||
|
|
dd8589c352 | ||
|
|
29db3c2f17 | ||
|
|
8293ed7f9b | ||
|
|
d0344cd308 | ||
|
|
67ca143a0b | ||
|
|
573858f134 | ||
|
|
b76d351419 | ||
|
|
4a2aad5bba | ||
|
|
9ff69dbf4a | ||
|
|
21467d817b | ||
|
|
e976c448b7 | ||
|
|
a64d096369 | ||
|
|
c545857ea6 | ||
|
|
4cd78bc7ad | ||
|
|
fe62243805 | ||
|
|
2cb47b4191 | ||
|
|
da0c159557 | ||
|
|
63bae5da71 | ||
|
|
d83d2d4c2f | ||
|
|
bd4c685553 | ||
|
|
da948c82b4 | ||
|
|
0f8c46f368 | ||
|
|
3f65a86977 | ||
|
|
c10230f81c | ||
|
|
02906bf23a | ||
|
|
2de3a24f46 | ||
|
|
57bff43aec | ||
|
|
5c4c8bcea3 | ||
|
|
157c94c03e | ||
|
|
e05b6bb6e7 | ||
|
|
c4c3f1b25e | ||
|
|
56bde913d4 | ||
|
|
9ab291ea1c | ||
|
|
fe0a17e78f | ||
|
|
0185cb27eb | ||
|
|
ea10290153 | ||
|
|
1704aea6a0 | ||
|
|
429d280501 | ||
|
|
6922b94894 | ||
|
|
2b2bc83b61 | ||
|
|
9dd41a8187 | ||
|
|
383b7e9dd1 | ||
|
|
6bd01a96d9 | ||
|
|
d4774ead43 | ||
|
|
2838ccc78e | ||
|
|
0a4830b3d5 | ||
|
|
b102bc6678 | ||
|
|
c8f863dfc5 | ||
|
|
4eef486afe | ||
|
|
9bcccb028b | ||
|
|
cd5c70691a | ||
|
|
b36f565d13 | ||
|
|
ed7907e46c | ||
|
|
1ef8cf5a23 | ||
|
|
b2c592255a | ||
|
|
47e7a7a7ce | ||
|
|
c94945f892 | ||
|
|
6b8e13d017 | ||
|
|
0e4bb2b49f | ||
|
|
274aba1a89 | ||
|
|
2a6d4b6ee2 | ||
|
|
d9148ea604 | ||
|
|
ecd3661119 | ||
|
|
be70df1187 | ||
|
|
6a6ccf6032 | ||
|
|
f40b580bb8 | ||
|
|
aea4157340 | ||
|
|
11c3fa527a | ||
|
|
132416ebe9 | ||
|
|
46e457d340 | ||
|
|
14d7b38613 | ||
|
|
6d3bc7c82d | ||
|
|
9ad84896da | ||
|
|
f53d3de73e | ||
|
|
a00eb1e9f5 | ||
|
|
ec0f901153 | ||
|
|
c0b544af70 | ||
|
|
c1c0f23fd1 | ||
|
|
c0ee03fab2 | ||
|
|
c976c1192d | ||
|
|
61c0ff007a | ||
|
|
03824682ad | ||
|
|
a7805301cb | ||
|
|
e26b941e66 | ||
|
|
89392b2a6d | ||
|
|
b6d88f21af | ||
|
|
ef05318c69 | ||
|
|
6c452addfe | ||
|
|
dac071ed78 | ||
|
|
76296fb672 | ||
|
|
bbe75fe1d2 | ||
|
|
7522527827 | ||
|
|
2b7637df36 | ||
|
|
2c1650ad33 | ||
|
|
7b7d54df68 | ||
|
|
4691d98e19 | ||
|
|
f363670934 | ||
|
|
b8f93e08e9 | ||
|
|
2c2645191a | ||
|
|
0726c4d4ea | ||
|
|
ae71f0c086 | ||
|
|
beed99dbc1 | ||
|
|
e0cea92f6e | ||
|
|
00b72df6c5 | ||
|
|
4c1cbffd2a | ||
|
|
dee05f982b | ||
|
|
0688bb61ed | ||
|
|
f77926675f | ||
|
|
ed574171bb | ||
|
|
aa871ca506 | ||
|
|
6116a2fcf8 | ||
|
|
fcc842f08b | ||
|
|
38723b0339 | ||
|
|
88e66697a7 | ||
|
|
ff90f2736b | ||
|
|
06617392e0 | ||
|
|
a6f46d7bb1 | ||
|
|
0b99f70773 | ||
|
|
b1842a4b89 | ||
|
|
2909e07cb2 | ||
|
|
41d8c4d879 | ||
|
|
cd8143be0a | ||
|
|
4997f5dfe9 | ||
|
|
743160b6ac | ||
|
|
92777281a7 | ||
|
|
40fcc9d149 | ||
|
|
8bede85f60 | ||
|
|
c0d61964d6 | ||
|
|
e2fe0ca835 | ||
|
|
2ba0d31785 | ||
|
|
56ad207d37 | ||
|
|
2f0de3aa2c | ||
|
|
ca692b9804 | ||
|
|
f4cb8c0dfb | ||
|
|
885114ed2c | ||
|
|
3ebb5d0e3b | ||
|
|
172c00faa6 | ||
|
|
30a5a9ed34 | ||
|
|
c81b064727 | ||
|
|
ca8312b0b3 | ||
|
|
b29e473c21 | ||
|
|
e379ea6ed6 | ||
|
|
80eec9d531 | ||
|
|
0ed0f2953a | ||
|
|
426b3f6198 | ||
|
|
d5afd070ce | ||
|
|
20bf88bad1 | ||
|
|
9dfa9a81e9 | ||
|
|
90c398ea67 | ||
|
|
ff1687d378 | ||
|
|
6a6d58d389 | ||
|
|
65e0387aa5 | ||
|
|
12362f76b1 | ||
|
|
790ef21a60 | ||
|
|
ed38ca5179 | ||
|
|
8869150649 | ||
|
|
5dddb47863 | ||
|
|
50b453e5c2 | ||
|
|
cf0fdfa2bb | ||
|
|
658f96b447 | ||
|
|
d0c43f16e0 | ||
|
|
fb4698e7fd | ||
|
|
8ed45609d0 | ||
|
|
15ea401087 | ||
|
|
db0cc56c52 | ||
|
|
f958f29c55 | ||
|
|
ccdd1126f6 | ||
|
|
face069874 | ||
|
|
f56563d6fe | ||
|
|
898b257261 | ||
|
|
62cad09c64 | ||
|
|
8a21726ae5 | ||
|
|
febd0f14c6 | ||
|
|
f92e2ed57a | ||
|
|
7b01e32fe8 | ||
|
|
6803d1ed28 | ||
|
|
3f68787051 | ||
|
|
04b2edcc8c | ||
|
|
ee68d26f99 | ||
|
|
e66a4a0e12 | ||
|
|
24e2a008c3 | ||
|
|
eb4bd6b4fb | ||
|
|
bb556b8f55 | ||
|
|
bc544e2a70 | ||
|
|
7b784fa2ea | ||
|
|
ca0114228c | ||
|
|
851f20e40c | ||
|
|
8298644b85 | ||
|
|
56e637d5f4 | ||
|
|
b6e5e66661 | ||
|
|
6eb8d0aa51 | ||
|
|
e02195b3dc | ||
|
|
e57609836c | ||
|
|
101607a7d0 | ||
|
|
8439b5942b | ||
|
|
53fc5440d7 | ||
|
|
7761331a75 | ||
|
|
56b2b450ce | ||
|
|
c8167c0b99 | ||
|
|
2f8ef61618 | ||
|
|
945aa06f58 | ||
|
|
81e1c043cc | ||
|
|
bd90425f71 | ||
|
|
0f59bbbee6 | ||
|
|
a1cdbd4d84 | ||
|
|
73031f9ab0 | ||
|
|
d64c8aad99 | ||
|
|
902e381264 | ||
|
|
2ff614dfab | ||
|
|
83b2621de4 | ||
|
|
59ed7d06bf | ||
|
|
217dd63e02 | ||
|
|
e633c991b0 | ||
|
|
815cd8970d | ||
|
|
b5c4355c13 | ||
|
|
f9c4c96663 | ||
|
|
a2dbd2f10e | ||
|
|
88bc88125a | ||
|
|
770e742e04 | ||
|
|
11fb1f74cc | ||
|
|
6ab9df5208 | ||
|
|
9f1c641199 | ||
|
|
00fb8a3abf | ||
|
|
032b6322fc | ||
|
|
a5a21019b2 | ||
|
|
a55a8c9aa5 | ||
|
|
b98a54fbe0 | ||
|
|
11ca4e61a7 | ||
|
|
2bc16e83d6 | ||
|
|
f11ed4b91d | ||
|
|
80bd67c36b | ||
|
|
83b882039e | ||
|
|
a816a4b964 | ||
|
|
bfa77ff5a4 | ||
|
|
c79ad45fce | ||
|
|
48cc53bf2e | ||
|
|
f63dde2f43 | ||
|
|
7bfd070864 | ||
|
|
1ce0ef9d41 | ||
|
|
f30bf39bd4 | ||
|
|
bf8434770f | ||
|
|
e055128d0d | ||
|
|
66216ea2be | ||
|
|
d882797fbd | ||
|
|
220bb14d10 | ||
|
|
0824ed595b | ||
|
|
fd225469bc | ||
|
|
12e6efc6e4 | ||
|
|
0fcc5face3 | ||
|
|
125782c061 | ||
|
|
fef7509eed | ||
|
|
510dec4927 | ||
|
|
9394486147 | ||
|
|
01c3ed6157 | ||
|
|
a003d1d758 | ||
|
|
f824db4803 | ||
|
|
0c67c6c136 | ||
|
|
f846bb2b49 | ||
|
|
e79c184b2d | ||
|
|
6724a0b8cd | ||
|
|
5123c3e52e | ||
|
|
def2256609 | ||
|
|
c613ee2da4 | ||
|
|
a482dcce46 | ||
|
|
d647261de2 | ||
|
|
b7cfd5a7da | ||
|
|
caa0058d5b | ||
|
|
dac715ad1f | ||
|
|
061131a5ee | ||
|
|
26d9a7cd40 | ||
|
|
caaf60ba00 | ||
|
|
3e2515d735 | ||
|
|
3f2666778a | ||
|
|
959d575292 | ||
|
|
1f983ec39c | ||
|
|
a345d16cc1 | ||
|
|
0d821f04fd | ||
|
|
8184e57dd6 | ||
|
|
78ddc567f9 | ||
|
|
424c2bddb3 | ||
|
|
c12243cf4f | ||
|
|
39fdcf4df3 | ||
|
|
fd1b30fc6f | ||
|
|
7ee79b73f6 | ||
|
|
1f3043f618 | ||
|
|
1d7d22e117 | ||
|
|
33ab9ea188 | ||
|
|
af62624849 | ||
|
|
8ad6ba82fc | ||
|
|
737a1e2f12 | ||
|
|
850e3c1ca2 | ||
|
|
7541c590e5 | ||
|
|
caffbaafbe | ||
|
|
f57fb2375e | ||
|
|
a28c8d002d | ||
|
|
a4073ed676 | ||
|
|
78e07d3210 | ||
|
|
41af58d1d5 | ||
|
|
bf5393ae58 | ||
|
|
b866e2672a | ||
|
|
1df0f1da97 | ||
|
|
535dc1e874 | ||
|
|
24dea1c616 | ||
|
|
96c3f16a90 | ||
|
|
fd860d7cd0 | ||
|
|
b46719b093 | ||
|
|
8b8fc9e66b | ||
|
|
882c0321f4 | ||
|
|
8c3c6b31fc | ||
|
|
5a94a95fbf | ||
|
|
036c438904 | ||
|
|
5e095c8fbd | ||
|
|
665a317f1c | ||
|
|
f7ad192842 | ||
|
|
58cf11bd44 | ||
|
|
549ef8f141 | ||
|
|
176dd96698 | ||
|
|
5f8f56ea0e | ||
|
|
47d8187bc3 | ||
|
|
481f786fe7 | ||
|
|
3408114602 | ||
|
|
bd2c2f3bd1 | ||
|
|
a4a2659dff | ||
|
|
aa932eab41 | ||
|
|
565d3dde40 | ||
|
|
85c08dd170 | ||
|
|
8bc21fc2f0 | ||
|
|
57c3e917e2 | ||
|
|
7658c2e2d5 | ||
|
|
993e0b0bf9 | ||
|
|
9aaa27d46b | ||
|
|
6c55e7c039 | ||
|
|
1df244b6f4 | ||
|
|
75558ae75c | ||
|
|
eb40dde688 | ||
|
|
bb72206ec5 | ||
|
|
e9c765ee2c | ||
|
|
83723c15be | ||
|
|
8454a8f2d1 | ||
|
|
6aedd4f7b0 | ||
|
|
e96b8ce781 | ||
|
|
b0cbec922b | ||
|
|
0f7de40e66 | ||
|
|
5ad4bed70a | ||
|
|
330b3e87eb | ||
|
|
8fb37606f6 | ||
|
|
dc587992a0 | ||
|
|
c1c03e16f4 | ||
|
|
6006790c18 | ||
|
|
bb2e40b999 | ||
|
|
b1a8e4f760 | ||
|
|
ca1d8c1737 | ||
|
|
ff6881efbf | ||
|
|
3c85200989 | ||
|
|
e944533f01 | ||
|
|
85149f8686 | ||
|
|
a12ec66a04 | ||
|
|
9d90b0549c | ||
|
|
3bc5958c58 | ||
|
|
2952c10ced | ||
|
|
55d1f0b7d6 | ||
|
|
60064b3de7 | ||
|
|
02eb8e7c70 | ||
|
|
786d62e3e5 | ||
|
|
13cd052990 | ||
|
|
a4e5b09ea4 | ||
|
|
3ec0e0943c | ||
|
|
653810e4df | ||
|
|
efa2baed83 | ||
|
|
c9481b0fd7 | ||
|
|
8138e26163 | ||
|
|
a04a0514b9 | ||
|
|
a9ae0c8e82 | ||
|
|
3c2e12a744 | ||
|
|
cb55d60f98 | ||
|
|
6e1a595342 | ||
|
|
5141141e2b | ||
|
|
7e6947a940 | ||
|
|
bb989f2034 | ||
|
|
9c8255feeb | ||
|
|
4f95e6c70b | ||
|
|
55a5e6be2c | ||
|
|
607d3b54ce | ||
|
|
7ca0557b40 | ||
|
|
25b4cface0 | ||
|
|
e9bc9c47c2 | ||
|
|
6a50a51b4e | ||
|
|
22c0238bf1 | ||
|
|
acbc7362db | ||
|
|
2466ca02bf | ||
|
|
7fd5b3a0c5 | ||
|
|
a1a35ca5f7 | ||
|
|
90a78585fb | ||
|
|
f5be8f6c77 | ||
|
|
526defab85 | ||
|
|
44d1738d47 | ||
|
|
f32f0486e2 | ||
|
|
8e392251ba | ||
|
|
3863dc5b2b | ||
|
|
671a630f47 | ||
|
|
d2aaa70e93 | ||
|
|
4418ee6c77 | ||
|
|
c64a15294d | ||
|
|
ef8182e12a | ||
|
|
b204013483 | ||
|
|
af47b6551f | ||
|
|
892684ebe5 | ||
|
|
4c67ae1a0b | ||
|
|
021473e93e | ||
|
|
b116d6c6e8 | ||
|
|
6b04c2b904 | ||
|
|
7061bf0000 | ||
|
|
dab78c26b1 | ||
|
|
a6a0fc5b21 | ||
|
|
fede94e979 | ||
|
|
6d0407b65e | ||
|
|
05a45ef6dc | ||
|
|
298c98ea32 | ||
|
|
ab8afc3bcc | ||
|
|
af806bc816 | ||
|
|
d67d32af48 | ||
|
|
6ac4a4ceb6 | ||
|
|
5cb70d34d7 | ||
|
|
b5a7122855 | ||
|
|
e936670571 | ||
|
|
fc06a2384b | ||
|
|
432cf1152a | ||
|
|
3136010e1a | ||
|
|
2fc92448df | ||
|
|
e22979f334 | ||
|
|
a5242265d7 | ||
|
|
8b791477df | ||
|
|
268283ff16 | ||
|
|
6613519c2e | ||
|
|
e0136e39f4 | ||
|
|
546f70a6f0 | ||
|
|
f85eb23c3b | ||
|
|
78e89ba3ff | ||
|
|
eb41a574b7 | ||
|
|
187ab0ca61 | ||
|
|
7cf5de0ed0 | ||
|
|
68e9d19743 | ||
|
|
f0197006e0 | ||
|
|
a85bb091c8 | ||
|
|
3d20157d4f | ||
|
|
55f78f8a83 | ||
|
|
d08cb6b357 | ||
|
|
d40eefd5a4 | ||
|
|
4a9b244577 | ||
|
|
cc086b9452 | ||
|
|
35884a7e3f | ||
|
|
3109c77013 | ||
|
|
a26ab3ab16 | ||
|
|
66eb270cf7 | ||
|
|
354ed5c4d6 | ||
|
|
c52092e6f8 | ||
|
|
52fa55a770 | ||
|
|
a87e1c2f90 | ||
|
|
cc92cd07e8 | ||
|
|
7dd67f4997 | ||
|
|
3c769edea0 | ||
|
|
3c7f7de477 | ||
|
|
ffabbfa778 | ||
|
|
ca90667723 | ||
|
|
05d888316a | ||
|
|
b37aaa8303 | ||
|
|
3cb4954d70 | ||
|
|
feb5b6aa93 | ||
|
|
2e7e754032 | ||
|
|
cab0ecdf19 | ||
|
|
d3b0cb878a | ||
|
|
71002e0e79 | ||
|
|
a41ac8fd40 | ||
|
|
8b3b2a52f0 | ||
|
|
fe0ce9282a | ||
|
|
25bcca2edb | ||
|
|
31ef944176 | ||
|
|
06b0fa6fc2 | ||
|
|
6d1cbc6458 | ||
|
|
3f91b0d340 | ||
|
|
a7160d9b12 | ||
|
|
e22c09c601 | ||
|
|
61293a09ff | ||
|
|
c8cb03fd8f | ||
|
|
6425ac3b13 | ||
|
|
cbaf0ecaf6 | ||
|
|
b95769333c | ||
|
|
4743184078 | ||
|
|
3f180b0ad9 | ||
|
|
1e00a93f97 | ||
|
|
450a276f87 | ||
|
|
0f53526598 | ||
|
|
780f4ae7c5 | ||
|
|
4af2eb22ab | ||
|
|
5de9d8e6e1 | ||
|
|
d3ef3cff94 | ||
|
|
568303ac7f | ||
|
|
09c26d6805 | ||
|
|
939c1d2474 | ||
|
|
b8d40b4ad5 | ||
|
|
ae933db526 | ||
|
|
dfc508bb15 | ||
|
|
05bc7621e6 | ||
|
|
a94fdbe0f0 | ||
|
|
e7fcffeead | ||
|
|
8e82bed459 | ||
|
|
3fe69f4e67 | ||
|
|
ab40c2acf7 | ||
|
|
7cd198623e | ||
|
|
16e20e5c73 | ||
|
|
9e97d7b4db | ||
|
|
26d7da68fc | ||
|
|
f6f5b6035b | ||
|
|
966d50762d | ||
|
|
01c3d491e7 | ||
|
|
f052b0bc4d | ||
|
|
a31b29308f | ||
|
|
3a53e726dd | ||
|
|
d59a6b29d5 | ||
|
|
cfcef3ec98 | ||
|
|
f49544f310 | ||
|
|
171b58e2ca | ||
|
|
7a3c0cb70e | ||
|
|
1756590117 | ||
|
|
c137ba53a0 | ||
|
|
6b1d5e48b6 | ||
|
|
fb56d5c482 | ||
|
|
d280205245 | ||
|
|
0ee8634b2f | ||
|
|
73f760fdf0 | ||
|
|
931a519969 | ||
|
|
0baaf0a60f | ||
|
|
63a63e3eaa | ||
|
|
6b9e273f92 | ||
|
|
2c6114f58d | ||
|
|
8ba1ec22e4 | ||
|
|
4bf6bd3d37 | ||
|
|
09930938e8 | ||
|
|
09e9e8ad9f | ||
|
|
34dacdea32 | ||
|
|
9ddb8bdb8b | ||
|
|
56856a1810 | ||
|
|
341de5d53f | ||
|
|
b28056e3dd | ||
|
|
3e25c085ba | ||
|
|
5b9182ba43 | ||
|
|
5a31f6b4e1 | ||
|
|
2ec92ba440 | ||
|
|
01e351de37 | ||
|
|
441f93d58d | ||
|
|
a33d7928a4 | ||
|
|
9c0b740b84 | ||
|
|
96b5ec14d4 | ||
|
|
79ac0d05ce | ||
|
|
40b765b7c2 | ||
|
|
f426778160 | ||
|
|
f148eaace9 | ||
|
|
9b87c22e01 | ||
|
|
9fbd1d68ad | ||
|
|
e01b485ac6 | ||
|
|
bbdf21679f | ||
|
|
e2f74309f7 | ||
|
|
0ec5561b4e | ||
|
|
74e2b8cbcb | ||
|
|
7918267d02 | ||
|
|
135fa85e8f | ||
|
|
d8f360316d | ||
|
|
b73894b271 | ||
|
|
0746ec7035 | ||
|
|
a8226814c5 | ||
|
|
30a3ff0de6 | ||
|
|
dadf53f17c | ||
|
|
f39d351d04 | ||
|
|
0039690f11 | ||
|
|
07e07655d4 | ||
|
|
e60dcc9b3b | ||
|
|
7245803405 | ||
|
|
ce7812fcb0 | ||
|
|
bcf02ae439 | ||
|
|
8919c3162d | ||
|
|
2200e0fb7e | ||
|
|
0ded2984b8 | ||
|
|
5e44aa37ff | ||
|
|
9efc57f24b | ||
|
|
20156d1eeb | ||
|
|
1138a38dbe | ||
|
|
63dbeeaac5 | ||
|
|
655b28ee0c | ||
|
|
5455e38e15 | ||
|
|
b99f7a29df | ||
|
|
b599774e30 | ||
|
|
e6f7e96ff4 | ||
|
|
b4c7c011b7 | ||
|
|
3b5530fb67 | ||
|
|
2c73e49dac | ||
|
|
d6c95621e8 | ||
|
|
b94c513cee | ||
|
|
614edafe73 | ||
|
|
9f7548ab89 | ||
|
|
d2409d12c6 | ||
|
|
6a5f413f27 | ||
|
|
755527a90a | ||
|
|
1e90b2f51d | ||
|
|
f57063efa2 | ||
|
|
b057a62c8b | ||
|
|
12a3156aff | ||
|
|
eee210f3b5 | ||
|
|
34bc3b8595 | ||
|
|
d825b7ee9a | ||
|
|
5ffb53f229 | ||
|
|
dcf177e372 | ||
|
|
30912b49f3 | ||
|
|
882dc0a7f6 | ||
|
|
d8f62673d7 | ||
|
|
2b2e3ee93c | ||
|
|
08925330e0 | ||
|
|
1ea41e7246 | ||
|
|
7dd19f6d97 | ||
|
|
415a212d09 | ||
|
|
bac4999ae4 | ||
|
|
0b20ce696a | ||
|
|
a69b435c92 | ||
|
|
063e4004ba | ||
|
|
dce0405c4d | ||
|
|
8e493ef370 | ||
|
|
887fe932cc | ||
|
|
0f13208d81 | ||
|
|
737d866197 | ||
|
|
4c875dc393 | ||
|
|
60a51b82d7 | ||
|
|
99d0fcf49d | ||
|
|
faf84e7100 | ||
|
|
d01ee09fd6 | ||
|
|
926754a66e | ||
|
|
78eac67a01 | ||
|
|
fa41653420 | ||
|
|
cca78e0601 | ||
|
|
0fd1203b3b | ||
|
|
b27467d9f9 | ||
|
|
b4aa37aa30 | ||
|
|
6916a1438f | ||
|
|
ca9a2887fc | ||
|
|
37f77e7397 | ||
|
|
5a552b6d8d | ||
|
|
b02fc039cd | ||
|
|
a362aca783 | ||
|
|
46a6f70d88 | ||
|
|
316d76bdb6 | ||
|
|
92f2ad0a11 | ||
|
|
17675b4cb8 | ||
|
|
ce7590bd24 | ||
|
|
bfbf864a73 | ||
|
|
1fcc83b84b | ||
|
|
c7121e8772 | ||
|
|
ee11a2d266 | ||
|
|
103336c76e | ||
|
|
b80142be69 | ||
|
|
bb0631a365 | ||
|
|
2358c79db2 | ||
|
|
00094a8792 | ||
|
|
a0bc0ab7cb | ||
|
|
cb00c7036f | ||
|
|
a2bba1b9e6 | ||
|
|
81c5d58035 | ||
|
|
723c317108 | ||
|
|
17bedd72f0 | ||
|
|
4686b935c1 | ||
|
|
3b177eaaa3 | ||
|
|
3c797b0ca5 | ||
|
|
2f95acf273 | ||
|
|
dee3a4b528 | ||
|
|
26997f32c6 | ||
|
|
b639353193 | ||
|
|
443b3157e0 | ||
|
|
c094c58b51 | ||
|
|
740ae3581c | ||
|
|
97c78838a4 | ||
|
|
369a3d1426 | ||
|
|
728bd0ba84 | ||
|
|
c436cac797 | ||
|
|
e7c02f376f | ||
|
|
f803c2a7bb | ||
|
|
e630375fd6 | ||
|
|
4a65f3cee2 | ||
|
|
5c379aa1b8 | ||
|
|
e800800bec | ||
|
|
5b3f89df0a | ||
|
|
edb4a7ad03 | ||
|
|
259e41da73 | ||
|
|
35b2139929 | ||
|
|
052593c760 | ||
|
|
3646967deb | ||
|
|
0c24ccf538 | ||
|
|
225da0226e | ||
|
|
44f112a9de | ||
|
|
bd2be9c79c | ||
|
|
52c727f09a | ||
|
|
2d8b4fea9f | ||
|
|
9cccd87e79 | ||
|
|
581923fa57 | ||
|
|
979721c979 | ||
|
|
ac22c524fc | ||
|
|
08c84e0c34 | ||
|
|
caa03f72b7 | ||
|
|
f75f2ffd48 | ||
|
|
54ab3137d5 | ||
|
|
6fd2fdc2e6 | ||
|
|
03ea24f298 | ||
|
|
58f20a3b7f | ||
|
|
085b4ca741 | ||
|
|
be9c6bdd67 | ||
|
|
ed9f933d41 | ||
|
|
796c15d3e6 | ||
|
|
240b52151d | ||
|
|
559dfa297d | ||
|
|
7e35f76d06 | ||
|
|
a035d39158 | ||
|
|
246b7abe7e | ||
|
|
da0e2c5bf3 | ||
|
|
38ce0fe954 | ||
|
|
d2dc7f4c27 | ||
|
|
0df9dc8fb9 | ||
|
|
6593422c05 | ||
|
|
952f9dbe62 | ||
|
|
5ab26e3202 | ||
|
|
6aaa6a50e3 | ||
|
|
80c79d4021 | ||
|
|
ae090fe10d | ||
|
|
1f04f9d63b | ||
|
|
75850a1351 | ||
|
|
7c5084e385 | ||
|
|
412a2aa4ab | ||
|
|
149c1c16ba | ||
|
|
afd9de6f1b | ||
|
|
66e653d24d | ||
|
|
3fff0e5b3c | ||
|
|
8f84a73b82 | ||
|
|
2e86cedef2 | ||
|
|
864b4e3b26 | ||
|
|
13a9d4a61f | ||
|
|
d326c77007 | ||
|
|
4b0543c887 | ||
|
|
fa9c9e791b | ||
|
|
ff682a30b3 | ||
|
|
d279f127c1 | ||
|
|
602d2c33c0 | ||
|
|
56b02331f7 | ||
|
|
fab2a947ca | ||
|
|
5e354fa844 | ||
|
|
77cbddf715 | ||
|
|
1381564a84 | ||
|
|
10e0540e61 | ||
|
|
b123870871 | ||
|
|
b91313a84e | ||
|
|
eff302a231 | ||
|
|
8d1232cc7a | ||
|
|
109b696599 | ||
|
|
e94dfcee0d | ||
|
|
82adf7955f | ||
|
|
3df6b6fdcf | ||
|
|
32da602bf7 | ||
|
|
75a65542ba | ||
|
|
97bdc92d1b | ||
|
|
313e799df5 | ||
|
|
3465cef689 | ||
|
|
86c7d601b0 | ||
|
|
0545aeb11b | ||
|
|
bd7c78ffd5 | ||
|
|
6318409a5d | ||
|
|
f6c561a01b | ||
|
|
dddba2637f | ||
|
|
5501cfd809 | ||
|
|
7ea0239776 | ||
|
|
3c51fdffac | ||
|
|
f7f10a7d2c | ||
|
|
d7cb99254e | ||
|
|
70ff448067 | ||
|
|
54deb5ed5a | ||
|
|
72b3dcd8b5 | ||
|
|
174593643c | ||
|
|
dec722b2ee | ||
|
|
f18eba44f8 | ||
|
|
02c3d8d792 | ||
|
|
660a53e0e0 | ||
|
|
b9b743bbe3 | ||
|
|
01d3df0d00 | ||
|
|
70a64ebe72 | ||
|
|
5f8d688664 | ||
|
|
9fff7896c5 | ||
|
|
c196df6db0 | ||
|
|
17d36b7835 | ||
|
|
e64188021a | ||
|
|
796bf01797 | ||
|
|
433c3da7cf | ||
|
|
5a0c7a1330 | ||
|
|
7ab7322915 | ||
|
|
daa99514fa | ||
|
|
f815bbab24 | ||
|
|
91bd7df8c1 | ||
|
|
fb8478eb7b | ||
|
|
d2da7dc3e5 | ||
|
|
ce167e233b | ||
|
|
b5529aef9c | ||
|
|
8616cd875b | ||
|
|
072a4b5497 | ||
|
|
86fb9f8409 | ||
|
|
ff48387a8a | ||
|
|
80069f384a | ||
|
|
decbdd1abb | ||
|
|
9683f93a76 | ||
|
|
ee4bea72bf | ||
|
|
9997e6d337 | ||
|
|
9f08310307 | ||
|
|
e92645c588 | ||
|
|
e157d70d43 | ||
|
|
231685133e | ||
|
|
9b9ebe0999 | ||
|
|
5709ec85d7 | ||
|
|
fab51ac0af | ||
|
|
5247eacc3c | ||
|
|
4d7d354498 | ||
|
|
8779d029b2 | ||
|
|
349e3b546a | ||
|
|
d5b954c2d4 | ||
|
|
7335a40a61 | ||
|
|
5ec908c5f0 | ||
|
|
d1a8171011 | ||
|
|
8a1d8c8470 | ||
|
|
6d27d488bf | ||
|
|
e0efda7145 | ||
|
|
9fbc92aace | ||
|
|
0c5faa6d24 | ||
|
|
e12a04ac7e | ||
|
|
903f10c237 | ||
|
|
0f4d57d59e | ||
|
|
b708969326 | ||
|
|
8cf45ce0af | ||
|
|
d0ad599a24 | ||
|
|
52a8d37f11 | ||
|
|
ca19ae8b5a | ||
|
|
5c352c9146 | ||
|
|
3c54c50c5a | ||
|
|
f80e7530f3 | ||
|
|
c6e9280373 | ||
|
|
f9b2444735 | ||
|
|
259a54a6dd | ||
|
|
a1f86d01e2 | ||
|
|
cdc9bc397d | ||
|
|
ac1099deb8 | ||
|
|
7e3cc44738 | ||
|
|
8ed4bae4dd | ||
|
|
dcc2512f58 | ||
|
|
3d2c0ed97f | ||
|
|
1760078f67 | ||
|
|
79f512337d | ||
|
|
7e07220440 | ||
|
|
930808c22b | ||
|
|
04f16965d5 | ||
|
|
133bd56436 | ||
|
|
18904036dc | ||
|
|
6cef4eba29 | ||
|
|
632afe6ae3 | ||
|
|
50b99e5aef | ||
|
|
085409340e | ||
|
|
74e88cc0f1 | ||
|
|
79a77cb91f | ||
|
|
06703c9d56 | ||
|
|
362c1a23ea | ||
|
|
518fd59a10 | ||
|
|
49b38fe793 | ||
|
|
b21b24fd8a | ||
|
|
6f8b3fc633 | ||
|
|
b194812f5a | ||
|
|
211a131351 | ||
|
|
052c010d3f | ||
|
|
deb2cb752b | ||
|
|
c71e94f054 | ||
|
|
8a732e306f | ||
|
|
87eb3f6e68 | ||
|
|
35760bb6bf | ||
|
|
592122bf4f | ||
|
|
1a3273a7e3 | ||
|
|
34ad2e0fa4 | ||
|
|
1858b5cfba | ||
|
|
6274e1fc5f | ||
|
|
6b8ebf3e94 | ||
|
|
82c54104d6 | ||
|
|
812edb5fdc | ||
|
|
8aa0783995 | ||
|
|
baf191fab2 | ||
|
|
3ee03a860d | ||
|
|
368213290f | ||
|
|
192e630cb8 | ||
|
|
a9ce2333c3 | ||
|
|
64bd77cf4d | ||
|
|
5a7118a88b | ||
|
|
b471f9ee26 | ||
|
|
1af4521239 | ||
|
|
4b5753daea | ||
|
|
a594a0677a | ||
|
|
c44488629a | ||
|
|
bf16f74618 | ||
|
|
f94b22fa5e | ||
|
|
0e5c7720a4 | ||
|
|
ee55e4595c | ||
|
|
5e3d986ad8 | ||
|
|
9f1eb70dbc | ||
|
|
21160137d4 | ||
|
|
cc8d94c6fc | ||
|
|
324fa26848 | ||
|
|
9c432f4f75 | ||
|
|
d6534912d8 | ||
|
|
2113636d29 | ||
|
|
fcdbacdbb0 | ||
|
|
41ffcc27dd | ||
|
|
135701feac | ||
|
|
643bbb2d93 | ||
|
|
441cd22343 | ||
|
|
1e82a67cc4 | ||
|
|
ee2d7a1f39 | ||
|
|
451972f3cf | ||
|
|
a58bfbf3c7 | ||
|
|
4aa6d10a60 | ||
|
|
cef2cf2852 | ||
|
|
5d8a1bf813 | ||
|
|
361eb633f6 | ||
|
|
fd7a76fe5d | ||
|
|
092f599aac | ||
|
|
a65dbc5dcd | ||
|
|
8c69266cbf | ||
|
|
2fb4178f7c | ||
|
|
32d56c6b43 | ||
|
|
20efcff166 | ||
|
|
c41efe4e30 | ||
|
|
4e87deae28 | ||
|
|
7a52c3d9f1 | ||
|
|
1f53b65511 | ||
|
|
217f628915 | ||
|
|
18be52c05b | ||
|
|
305cff36e2 | ||
|
|
2baf1a3c9f | ||
|
|
aa113c5a85 | ||
|
|
b7f2a4da69 | ||
|
|
d164d51380 | ||
|
|
f9b8ce1d25 | ||
|
|
4f24dc0959 | ||
|
|
0b99f6bcd6 | ||
|
|
cf4c79ebdd | ||
|
|
e4bc592c46 | ||
|
|
ebac739a35 | ||
|
|
52e67c1a29 | ||
|
|
f8c454733b | ||
|
|
27fd810b6f | ||
|
|
736b42b372 | ||
|
|
3a4d9a77b2 | ||
|
|
408f93340a | ||
|
|
f592321771 | ||
|
|
4bb496409c | ||
|
|
c9ea878d10 | ||
|
|
4701b22e14 | ||
|
|
bb01231990 | ||
|
|
e7d5e57264 | ||
|
|
16f36a5fda | ||
|
|
e1abc416cf | ||
|
|
0f6ea38eac | ||
|
|
a2affe70d9 | ||
|
|
dcff28b778 | ||
|
|
c587bae997 | ||
|
|
b229d6b7ac | ||
|
|
62b8895814 | ||
|
|
6820292256 | ||
|
|
d3b74cdcb2 | ||
|
|
f38339c089 | ||
|
|
26eebb3ee3 | ||
|
|
1b7066fc95 | ||
|
|
69eae13ff3 | ||
|
|
d56d04e41b | ||
|
|
ac6771f975 | ||
|
|
ae08884854 | ||
|
|
ed2a23768e | ||
|
|
87760d13fb | ||
|
|
7c7a63bebc | ||
|
|
aa506c6521 | ||
|
|
ad1149ff12 | ||
|
|
530c8dc0c0 | ||
|
|
22a30af353 | ||
|
|
213a6bc5c4 | ||
|
|
59d6a281cd | ||
|
|
5810845777 | ||
|
|
86ebf4a2d8 | ||
|
|
cdd23440c9 | ||
|
|
37c74e38f4 | ||
|
|
457123027e | ||
|
|
50bb14a0a8 | ||
|
|
ffc453ebfd | ||
|
|
4e582b131b | ||
|
|
5850a9b8c3 | ||
|
|
22ad72d08e | ||
|
|
e28a5803d9 | ||
|
|
e9d30a9383 | ||
|
|
e43a14ccd2 | ||
|
|
de0997ab32 | ||
|
|
8e37a693e5 | ||
|
|
845d3edb67 | ||
|
|
0a5df01626 | ||
|
|
f3f2f8ba97 | ||
|
|
7b0abf52b3 | ||
|
|
73663dcdd1 | ||
|
|
3bde9e9365 | ||
|
|
a9ff335a89 | ||
|
|
9f7cac8c59 | ||
|
|
0fdb95e195 | ||
|
|
094f143735 | ||
|
|
7d4d286050 | ||
|
|
aea328e326 | ||
|
|
4254e35f6a | ||
|
|
4800a34be3 | ||
|
|
c10f1851cb | ||
|
|
cda6fed41f | ||
|
|
5748cea80d | ||
|
|
43a4124bdd | ||
|
|
98d7e52b0a | ||
|
|
d696fac8b8 | ||
|
|
c5a80193a8 | ||
|
|
57b8640a76 | ||
|
|
12180bd7b1 | ||
|
|
44e41baffe | ||
|
|
f8484e3266 | ||
|
|
f73c6e6147 | ||
|
|
79bc85fb09 | ||
|
|
59d6279d4b | ||
|
|
b963d84b41 | ||
|
|
191336de97 | ||
|
|
eb30799aed | ||
|
|
0833352660 | ||
|
|
2311504c44 | ||
|
|
52effe9e72 | ||
|
|
bdb088dcca | ||
|
|
457758b537 | ||
|
|
b64b82a1ef | ||
|
|
0016f6d73d | ||
|
|
5dc569866e | ||
|
|
96c824f375 | ||
|
|
90fb43cd11 | ||
|
|
1a795ac2ea | ||
|
|
1fe1ebf20c | ||
|
|
02488215e6 | ||
|
|
998a909705 | ||
|
|
6902fa6b1c | ||
|
|
370389c7af | ||
|
|
7401b02022 | ||
|
|
a07d7a70a0 | ||
|
|
58b3869730 | ||
|
|
eb7a7884f6 | ||
|
|
f454929d9c | ||
|
|
08dd1e085b | ||
|
|
b8f65d0252 | ||
|
|
6447c7b2f4 | ||
|
|
53566f2ec0 | ||
|
|
ea54c01125 | ||
|
|
0ea009f611 | ||
|
|
5f7a994ad1 | ||
|
|
350dccf84a | ||
|
|
5d97dd0ea5 | ||
|
|
c83044d45a | ||
|
|
7b270f4c69 | ||
|
|
0a1da4461b | ||
|
|
aec8fd3243 | ||
|
|
cfccdc9b0c | ||
|
|
453f384bd7 | ||
|
|
4a1adab9b4 | ||
|
|
98a8045aaf | ||
|
|
e6876fecd3 | ||
|
|
f148f23382 | ||
|
|
c4c3e4fe83 | ||
|
|
e57359a3a0 | ||
|
|
8e7aff4486 | ||
|
|
6ff2f395e6 | ||
|
|
009ab70272 | ||
|
|
b64e106bb1 | ||
|
|
1d356b6a48 | ||
|
|
6b371865af | ||
|
|
87f86b31fa | ||
|
|
4f8bf98e6f | ||
|
|
2085251df2 | ||
|
|
c41db69f98 | ||
|
|
553020c448 | ||
|
|
1944443d10 | ||
|
|
e647b7c7e8 | ||
|
|
baf266c29e | ||
|
|
671b59aa9d | ||
|
|
437ef99ba5 | ||
|
|
2738939126 | ||
|
|
79e8f0680c | ||
|
|
b51805e245 | ||
|
|
d1a15097fe | ||
|
|
21ee113af3 | ||
|
|
103687871d | ||
|
|
da383e65e2 | ||
|
|
fdf31ec14f | ||
|
|
d509ecd19a | ||
|
|
23633c1945 | ||
|
|
edab3916aa | ||
|
|
7164f22347 | ||
|
|
a932d8aba1 | ||
|
|
86b6cab7fa | ||
|
|
5d79b1092f | ||
|
|
e5696bc5e6 | ||
|
|
c339720af9 | ||
|
|
5070f2a334 | ||
|
|
44f906eb35 | ||
|
|
e22678018b | ||
|
|
42176f8eb1 | ||
|
|
9a555063e8 | ||
|
|
584372bbf2 | ||
|
|
6b04351ce1 | ||
|
|
6dbf13d7b5 | ||
|
|
d588c717da | ||
|
|
42db9e7153 | ||
|
|
49e93747b1 | ||
|
|
ff2509af56 | ||
|
|
8368fb9ea8 | ||
|
|
c3f8fc41b7 | ||
|
|
e178294b49 | ||
|
|
a5a510da4b | ||
|
|
5466e321b8 | ||
|
|
f6b82d99ad | ||
|
|
dd1878c64f | ||
|
|
6a3f33090d | ||
|
|
ea48fcfc9f | ||
|
|
05e404c2ff | ||
|
|
79416cdf10 | ||
|
|
ccd33a721e | ||
|
|
7e273396c1 | ||
|
|
adac8c04bb | ||
|
|
8c7b3b91fa | ||
|
|
6c8681a472 | ||
|
|
098389d8eb | ||
|
|
1e47c6cc56 | ||
|
|
bbec7f8e89 | ||
|
|
5524e8d2c0 | ||
|
|
3f86e7b75a | ||
|
|
7854ef3840 | ||
|
|
87c2b8197a | ||
|
|
b90800f0c7 | ||
|
|
2054123890 | ||
|
|
a9325102a2 | ||
|
|
2609e77af7 | ||
|
|
ce0570b777 | ||
|
|
69b146412a | ||
|
|
8907e6feac | ||
|
|
f5987c258f | ||
|
|
c85197da55 | ||
|
|
4c52dfc956 | ||
|
|
94431c23f6 | ||
|
|
e64fb44f67 | ||
|
|
71a333dd78 | ||
|
|
72194b2115 | ||
|
|
bbf3607fa8 | ||
|
|
99aaf4030a | ||
|
|
9944f46b47 | ||
|
|
0d72420480 | ||
|
|
52535b356c | ||
|
|
f282fd0ebf | ||
|
|
97aa8d3341 | ||
|
|
bdebf4cea7 | ||
|
|
f3311f9e2a | ||
|
|
7d7d323f53 | ||
|
|
5cbdce97aa | ||
|
|
cf0a29ce4d | ||
|
|
10639c9526 | ||
|
|
be1728fba1 | ||
|
|
4ea2eceb70 | ||
|
|
d08589d435 | ||
|
|
6e565ab4a4 | ||
|
|
f1fb474459 | ||
|
|
482feb7266 | ||
|
|
53c9460454 | ||
|
|
0a07d780e0 | ||
|
|
fa23a01775 | ||
|
|
58ad952b1a | ||
|
|
dcb0c68ed3 | ||
|
|
c9e07bbc95 | ||
|
|
8914fa51ff | ||
|
|
6ebc95470b | ||
|
|
2660eee961 | ||
|
|
a0691289f9 | ||
|
|
124ac15f1e | ||
|
|
ce0e595a4f | ||
|
|
f1e1785386 | ||
|
|
b416e8715d | ||
|
|
3f1fb281be | ||
|
|
9c81338cb9 | ||
|
|
f93be25cc8 | ||
|
|
df697f6520 | ||
|
|
4949f70860 | ||
|
|
710617034b | ||
|
|
63ff39f9f3 | ||
|
|
b3a743f09a | ||
|
|
62f8240b00 | ||
|
|
03ae1e5aae | ||
|
|
2dc3b0f7f9 | ||
|
|
381216aa54 | ||
|
|
19c6bbe7d9 | ||
|
|
c4b2058d23 | ||
|
|
71c391cd8d | ||
|
|
036b13ee05 | ||
|
|
cc1090cf3b | ||
|
|
bd4580a242 | ||
|
|
03fc3d1ceb | ||
|
|
adbe84425f | ||
|
|
b49fa7d384 | ||
|
|
479cac2a14 | ||
|
|
1a15596f21 | ||
|
|
8722faa167 | ||
|
|
7a3ca99894 | ||
|
|
045f8294bb | ||
|
|
e9a6c5db21 | ||
|
|
b5bd2fd880 | ||
|
|
1ded2de2dd | ||
|
|
95ecdc3af9 | ||
|
|
579ce93885 | ||
|
|
21a9a17478 | ||
|
|
e501c61c04 | ||
|
|
aacb9b7cf5 | ||
|
|
f647054c8c | ||
|
|
52d3afd798 | ||
|
|
696a6561d3 | ||
|
|
ea38f7fa66 | ||
|
|
f5b21e8141 | ||
|
|
e97d18ba81 | ||
|
|
5422cbcecb | ||
|
|
3f8cefea0e | ||
|
|
5e92a777ef | ||
|
|
dae188d14f | ||
|
|
17b1152fa3 | ||
|
|
381917b762 | ||
|
|
5cc4aa0e93 | ||
|
|
dc27a13426 | ||
|
|
225c3e78cb | ||
|
|
219d315c8d | ||
|
|
fe2a7d23a5 | ||
|
|
49f2bd6f17 | ||
|
|
bcfcc779f6 | ||
|
|
3a84444488 | ||
|
|
b6023eab9c | ||
|
|
5978ef1df5 | ||
|
|
052fe626b3 | ||
|
|
cc97c57fd4 | ||
|
|
9a0e038a48 | ||
|
|
91fbe00caa | ||
|
|
9a1a9d9aff | ||
|
|
10cc7c78dd | ||
|
|
698c367d8d | ||
|
|
46ed461e22 | ||
|
|
595ec6b852 | ||
|
|
f676bfb3d7 | ||
|
|
0376a8643e | ||
|
|
a524a677e4 | ||
|
|
c120001178 | ||
|
|
14e15fb4f7 | ||
|
|
d84d3a519b | ||
|
|
f48befc6f0 | ||
|
|
df57d038b8 | ||
|
|
713aa5c5b9 | ||
|
|
61f111143a | ||
|
|
997dded1ac | ||
|
|
16b56e71d9 | ||
|
|
c58373dbea | ||
|
|
1c9668b371 | ||
|
|
bd6ad79759 | ||
|
|
ce5e2697cb | ||
|
|
bcc9dac087 | ||
|
|
fd60e98c5b | ||
|
|
02124f19e6 | ||
|
|
dccdadc38a | ||
|
|
d5092a6f7c | ||
|
|
54f52c3f45 | ||
|
|
734212a402 | ||
|
|
8257dc3c1e | ||
|
|
0af7597d36 | ||
|
|
f126f371b2 | ||
|
|
1264be8785 | ||
|
|
01717c83d7 | ||
|
|
07ab0c1c53 | ||
|
|
efc7dbaae2 | ||
|
|
ff91af825d | ||
|
|
8a5182662e | ||
|
|
5f1282afdb | ||
|
|
8a178da1a4 | ||
|
|
764d55b81d | ||
|
|
f960a5707d | ||
|
|
554ddd2ec4 | ||
|
|
9f77ffb03f | ||
|
|
14ef62ed66 | ||
|
|
6f91b7f6a4 | ||
|
|
1421e306fb | ||
|
|
ecee388236 | ||
|
|
4cc7b0a74f | ||
|
|
b2a5e66fc5 | ||
|
|
f566f6baa9 | ||
|
|
2ecca8f59c | ||
|
|
60cedd7a68 | ||
|
|
bc23f29b27 | ||
|
|
7b0d1c932e | ||
|
|
81f786393a | ||
|
|
1fa37fe733 | ||
|
|
f73b48b8b6 | ||
|
|
4401095b38 | ||
|
|
390f17d1e0 | ||
|
|
9eba746eb8 | ||
|
|
7fca146b21 | ||
|
|
33a3fba2d1 | ||
|
|
8c94568cc3 | ||
|
|
33176db5dc | ||
|
|
6bce6ee34a | ||
|
|
1d3c860411 | ||
|
|
3b23e57925 | ||
|
|
0fd8f50522 | ||
|
|
d92f67ee2c | ||
|
|
ef29b15c9a | ||
|
|
44d89638fd | ||
|
|
7b060d9122 | ||
|
|
f2cd65cf1e | ||
|
|
25e99c453f | ||
|
|
70933ea999 | ||
|
|
612b8ce2cb | ||
|
|
b2f851af06 | ||
|
|
d87457a025 | ||
|
|
fc0869735d | ||
|
|
31827d8dfe | ||
|
|
bc394e7516 | ||
|
|
3a426660ea | ||
|
|
a340ea872e | ||
|
|
e20613a776 | ||
|
|
584eed633e | ||
|
|
05e21015e9 | ||
|
|
51684c109e | ||
|
|
51e7fb76b6 | ||
|
|
c4c86a8990 | ||
|
|
93f8800844 | ||
|
|
e1773749ae | ||
|
|
1c9e886a6a | ||
|
|
97fad1cb53 | ||
|
|
b99396ab12 | ||
|
|
940f1e7914 | ||
|
|
fe371bf624 | ||
|
|
9cacd3261d | ||
|
|
edee922b59 | ||
|
|
5f2135695e | ||
|
|
bfb45b27e6 | ||
|
|
1ca35b7424 | ||
|
|
56f3c92737 | ||
|
|
63fc6ef316 | ||
|
|
8870ef4159 | ||
|
|
116fb275a8 | ||
|
|
19e77e4787 | ||
|
|
b758dbd384 | ||
|
|
3a78a22733 | ||
|
|
5578088983 | ||
|
|
972ff1d0c4 | ||
|
|
0a5c9cf145 | ||
|
|
6ab928fb39 | ||
|
|
a2a8ba17fc | ||
|
|
8d48632ebe | ||
|
|
d8272b9395 | ||
|
|
c175a86cbb | ||
|
|
4762728fd5 | ||
|
|
75c99d65a5 | ||
|
|
75277bb770 | ||
|
|
a11c02497f | ||
|
|
c7b2e48efe | ||
|
|
28833421ae | ||
|
|
e607a4ec02 | ||
|
|
379de5708f | ||
|
|
fd1cae0dcc | ||
|
|
473964806c | ||
|
|
61ca38103c | ||
|
|
ecf359b8c9 | ||
|
|
ac47c0c624 | ||
|
|
68962adc54 | ||
|
|
60f2f7898a | ||
|
|
6cb93445e1 | ||
|
|
2f6db4dfac | ||
|
|
33a6e5ac04 | ||
|
|
38d37d2b00 | ||
|
|
d004ee58c5 | ||
|
|
1c8493fb0d | ||
|
|
c937e15763 | ||
|
|
f792fdc3e0 | ||
|
|
2bddbd2cb5 | ||
|
|
ba8a971742 | ||
|
|
2b30759af0 | ||
|
|
622cf566b9 | ||
|
|
9c872f5316 | ||
|
|
083d8645a5 | ||
|
|
f50a061225 | ||
|
|
220d937d9a | ||
|
|
2fd01ee24e | ||
|
|
34f0da6010 | ||
|
|
f8d09945ac | ||
|
|
b4e7ee46c6 | ||
|
|
cd0e95de16 | ||
|
|
a4e598f474 | ||
|
|
7454189c2a | ||
|
|
3d0410c147 | ||
|
|
00e7816c1b | ||
|
|
d04fc15e06 | ||
|
|
02b2fdeda9 | ||
|
|
9699fde8d2 | ||
|
|
46631c4b18 | ||
|
|
042895977e | ||
|
|
f57136fd79 | ||
|
|
f6b3bc01e5 | ||
|
|
e3b32cce80 | ||
|
|
9436103ed6 | ||
|
|
1af7d397d4 | ||
|
|
2d5e3b57ea | ||
|
|
2d16026df6 | ||
|
|
b7a3204c57 | ||
|
|
a963ade012 | ||
|
|
450ba8b43f | ||
|
|
11591b3e9d | ||
|
|
3ffae9f7b7 | ||
|
|
b4050c775e | ||
|
|
ec9a17e71a | ||
|
|
ad6a80f68c | ||
|
|
bebf6c47c6 | ||
|
|
d01bedbc61 | ||
|
|
61991a3330 | ||
|
|
27b224ac74 | ||
|
|
61886a61de | ||
|
|
9c2ef369ed | ||
|
|
0ff67253f7 | ||
|
|
f85838087a | ||
|
|
18025c2908 | ||
|
|
63fc313d02 | ||
|
|
fe3f236aa5 | ||
|
|
f36546dbd2 | ||
|
|
7c901e39e1 | ||
|
|
18d1be4530 | ||
|
|
26afa49d71 | ||
|
|
9b8c3fd675 | ||
|
|
128e509527 | ||
|
|
1bdd86edeb | ||
|
|
cddee22cf2 | ||
|
|
214f633dd4 | ||
|
|
5d15676b7b | ||
|
|
8d4d36f805 | ||
|
|
e4d0652899 | ||
|
|
c4246bc59c | ||
|
|
e7e0da0153 | ||
|
|
b33f3bb2cc | ||
|
|
8237418be6 | ||
|
|
f054d6316a | ||
|
|
2f8e1798ca | ||
|
|
1be1a28920 | ||
|
|
53862687d5 | ||
|
|
9210d8e542 | ||
|
|
1d82aecf45 | ||
|
|
b5ab82fdbd | ||
|
|
68e08bbecd | ||
|
|
05d40946f3 | ||
|
|
7ed38b97c3 | ||
|
|
b75b0c822d | ||
|
|
864ec5ef45 | ||
|
|
fd6ef87c32 | ||
|
|
95ec92994d | ||
|
|
d71e001736 | ||
|
|
06c2a70c49 | ||
|
|
637b615e08 | ||
|
|
d9f159a554 | ||
|
|
c0005fd293 | ||
|
|
f12bd999bf | ||
|
|
a1df295079 | ||
|
|
7b20ce4952 | ||
|
|
432546e4c4 | ||
|
|
700a388173 | ||
|
|
5fea331d42 | ||
|
|
1ab551487d | ||
|
|
060d67517a | ||
|
|
199f1aec2e | ||
|
|
35d730bf2b | ||
|
|
ec33c4ae36 | ||
|
|
25f33a7e30 | ||
|
|
48c9c24da6 | ||
|
|
fffe2464cd | ||
|
|
9811a739b0 | ||
|
|
9c6da03504 | ||
|
|
13c0855114 | ||
|
|
ed0ce48179 | ||
|
|
a2a131799f | ||
|
|
37e018454d | ||
|
|
4443d6b0a1 | ||
|
|
99e782e62c | ||
|
|
33dfeb85be | ||
|
|
61a7f48bf4 | ||
|
|
4f906372e2 | ||
|
|
80a0364465 | ||
|
|
4f5916f12d | ||
|
|
1fb966dc61 | ||
|
|
2e7b9a2c0f | ||
|
|
969a218057 | ||
|
|
c0019a42e4 | ||
|
|
cb48d7798d | ||
|
|
0ba3b06efd | ||
|
|
c485aee464 | ||
|
|
b15cf355af | ||
|
|
96adeb71ca | ||
|
|
79f770455b | ||
|
|
13c04120dd | ||
|
|
1ad1b737c2 | ||
|
|
620a969285 | ||
|
|
854a722c70 | ||
|
|
f87f0cc481 | ||
|
|
efa84d8225 | ||
|
|
fd2d800c06 | ||
|
|
0b429fee7b | ||
|
|
009aec5164 | ||
|
|
3c74c23bad | ||
|
|
d54b069ae1 | ||
|
|
bcc630a8dc | ||
|
|
edb608d206 | ||
|
|
4d12beb723 | ||
|
|
bb873b1de5 | ||
|
|
5a43c7a28e | ||
|
|
c48f30d4ec | ||
|
|
fed1b3fd59 | ||
|
|
25378587e2 | ||
|
|
10dc5a3759 | ||
|
|
9582c33eab | ||
|
|
0f7721e915 | ||
|
|
f269828160 | ||
|
|
b35f5d115f | ||
|
|
c762da9893 | ||
|
|
006384edaf | ||
|
|
0a4c616d43 | ||
|
|
ef347f4b62 | ||
|
|
e0ab007b2b | ||
|
|
ef534537b4 | ||
|
|
bada364eb3 | ||
|
|
51963f95dd | ||
|
|
c28fea32c7 | ||
|
|
893deb4040 | ||
|
|
1252e870f9 | ||
|
|
ecfd056111 | ||
|
|
05bc48e8f4 | ||
|
|
fac99de7ec | ||
|
|
2df606f098 | ||
|
|
1c9f956b88 | ||
|
|
2d8c89c40b | ||
|
|
f54b80d2c8 | ||
|
|
84379140ba | ||
|
|
b3bba3476d | ||
|
|
270af2ca79 | ||
|
|
bcca34bc96 | ||
|
|
146d66267f | ||
|
|
a1e04c98aa | ||
|
|
6d282ddf72 | ||
|
|
cb049657e5 | ||
|
|
be5c910358 | ||
|
|
f61db41d25 | ||
|
|
46858c4328 | ||
|
|
726ed2632d | ||
|
|
bf5ff7fcd0 | ||
|
|
d3beb755df | ||
|
|
c669b7e4cd | ||
|
|
4ccbd44559 | ||
|
|
41afe54696 | ||
|
|
812ce48c36 | ||
|
|
875f922332 | ||
|
|
36a04ef8de | ||
|
|
c5536534d8 | ||
|
|
8375182e34 | ||
|
|
220f671655 | ||
|
|
03e213ccae | ||
|
|
1523fdcc1c | ||
|
|
f9a83c28e5 | ||
|
|
6dcafe0c2d | ||
|
|
397bf7f2b7 | ||
|
|
9d89f8d3dc | ||
|
|
ceb6e8bd94 | ||
|
|
472c210687 | ||
|
|
8e9ea0e3d1 | ||
|
|
c5a698fb54 | ||
|
|
dcae7698ad | ||
|
|
1f43999f2a | ||
|
|
aadab03b7b | ||
|
|
02f4f2f96d | ||
|
|
d368a7ceb4 | ||
|
|
2f4c11b5e5 | ||
|
|
7106d3e8c2 | ||
|
|
6b0952b9bd | ||
|
|
2dd438c230 | ||
|
|
88f67ce6b1 | ||
|
|
44f629f99c | ||
|
|
3fa02787ac | ||
|
|
b14f7c99d2 | ||
|
|
8c919ed248 | ||
|
|
553bb7956e | ||
|
|
180e54d09d | ||
|
|
50c9367d7a | ||
|
|
123ca7e1c5 | ||
|
|
c52a3f7634 | ||
|
|
e88bf2bc30 | ||
|
|
4ff8a3ad92 | ||
|
|
6e7050555e | ||
|
|
6d78cfc0d9 | ||
|
|
f14b8b4341 | ||
|
|
73ba435610 | ||
|
|
15952d7188 | ||
|
|
38e3f2c7f5 | ||
|
|
aad98e545f | ||
|
|
a7757b0eb6 | ||
|
|
ba9bc2d72f | ||
|
|
b009e8d0fb | ||
|
|
7ed5284ae6 | ||
|
|
f4ba8b13c7 | ||
|
|
1744098438 | ||
|
|
555fdf893a | ||
|
|
68e59d6154 | ||
|
|
32348604e3 | ||
|
|
799646e5d0 | ||
|
|
d48e0a04ae | ||
|
|
986878a881 | ||
|
|
303868b3c4 | ||
|
|
a9a45e1546 | ||
|
|
28944336d4 | ||
|
|
4b97e8c51c | ||
|
|
d4db7807df | ||
|
|
a16a11f32b | ||
|
|
1189606cd8 | ||
|
|
a8b4c99ed6 | ||
|
|
4763d8033a | ||
|
|
6aa7a86ae9 | ||
|
|
23a81c0fb8 | ||
|
|
184b6e314c | ||
|
|
77be6d64c1 | ||
|
|
b3a60b9c22 | ||
|
|
28103ad386 | ||
|
|
bea86deea9 | ||
|
|
8340e31f1f | ||
|
|
701d2386ce | ||
|
|
7127634aa0 | ||
|
|
6550cb2a90 | ||
|
|
a181835549 | ||
|
|
34f23b5917 | ||
|
|
60cacbfd66 | ||
|
|
ed55d13112 | ||
|
|
2e05f1e3f8 | ||
|
|
2981ee00d9 | ||
|
|
ae4cb571ab | ||
|
|
4f2aeeffaa | ||
|
|
d58cadc1ea | ||
|
|
47838a4a22 | ||
|
|
80a985c894 | ||
|
|
9b13b07639 | ||
|
|
569a95e9e1 | ||
|
|
fe4e1913f0 | ||
|
|
573be75f50 | ||
|
|
1abc26905d | ||
|
|
7c8789dc12 | ||
|
|
0692bf5f34 | ||
|
|
7c870014fb | ||
|
|
f50f249f80 | ||
|
|
ff095bbbfc | ||
|
|
7dd059c084 | ||
|
|
462c3c25a9 | ||
|
|
0ec0aeb7d0 | ||
|
|
5044e0f590 | ||
|
|
cf0cc00547 | ||
|
|
1d804bc695 | ||
|
|
e4fa217a62 | ||
|
|
4eb16122c0 | ||
|
|
4046f0398a | ||
|
|
da6898f758 | ||
|
|
c91b0e7ac4 | ||
|
|
46ac0048f8 | ||
|
|
91a8ea5e60 | ||
|
|
7de4e0496c | ||
|
|
5efad375e0 | ||
|
|
72419c3778 | ||
|
|
c4906c7f43 | ||
|
|
e181c76d21 | ||
|
|
914b78b8bb | ||
|
|
d052d863eb | ||
|
|
957e5ef8eb | ||
|
|
58e054a003 | ||
|
|
1c9f590f0d | ||
|
|
5d213582f7 | ||
|
|
e1bb844475 | ||
|
|
21227ba092 | ||
|
|
9cd08c662c | ||
|
|
9e3a2cbab2 | ||
|
|
323c922322 | ||
|
|
c2cb3b515d | ||
|
|
1fe5441185 | ||
|
|
aa11e102fd | ||
|
|
8d0383180c | ||
|
|
15af3f7114 | ||
|
|
a4dd2162f2 | ||
|
|
1b01e1fe68 | ||
|
|
4ed696d770 | ||
|
|
5ca25ab8f0 | ||
|
|
ccdc71286c | ||
|
|
d5f006eee5 | ||
|
|
fb97273b3c | ||
|
|
7e6fb668ed | ||
|
|
46faf592fc | ||
|
|
85a814f748 | ||
|
|
dce629d0e2 | ||
|
|
e19a12f655 | ||
|
|
5de5f26223 | ||
|
|
cae89a7a88 | ||
|
|
fd59551ff0 | ||
|
|
efebd83bc8 | ||
|
|
4a9cfbf806 | ||
|
|
967a88759f | ||
|
|
d88fdd0378 | ||
|
|
643c906f3d | ||
|
|
fae2eb8a1a | ||
|
|
30222c7be8 | ||
|
|
539acaf348 | ||
|
|
1466621f99 | ||
|
|
ebfaf4c5d8 | ||
|
|
0aab779532 | ||
|
|
65b8a1cb37 | ||
|
|
c5a2879ce0 | ||
|
|
2d89df1804 | ||
|
|
d78bc3c321 | ||
|
|
dee56598e9 | ||
|
|
83ccdabe7e | ||
|
|
1f08d8cb6f | ||
|
|
1fbad26fe3 | ||
|
|
8466911ad0 | ||
|
|
caba92f2b8 | ||
|
|
63383ef1d8 | ||
|
|
237cb93143 | ||
|
|
579a7fff6d | ||
|
|
071e78d02e | ||
|
|
21ad8e92d4 | ||
|
|
3a263c6326 | ||
|
|
e85ae5f2f0 | ||
|
|
5b1fd739d9 | ||
|
|
62d4393883 | ||
|
|
ba5f343c38 | ||
|
|
f83a76cdeb | ||
|
|
e40567eaee | ||
|
|
a8aa6381d9 | ||
|
|
60367907fe | ||
|
|
5aa9ac9a77 | ||
|
|
c8707b891b | ||
|
|
8c91604f5a | ||
|
|
1cc17a7186 | ||
|
|
85b60ee3cb | ||
|
|
8ab6852927 | ||
|
|
54b59c3cfb | ||
|
|
070e5ec042 | ||
|
|
322593e89f | ||
|
|
8dd213c829 | ||
|
|
2b52bb092a | ||
|
|
4de9605b7b | ||
|
|
d767c9df58 | ||
|
|
926b64fff7 | ||
|
|
7452eef6e9 | ||
|
|
55f490485b | ||
|
|
dcbe797980 | ||
|
|
dcee883961 | ||
|
|
e4418e186e | ||
|
|
c45d2642ca | ||
|
|
b37a641cc9 | ||
|
|
d2b9dc5530 | ||
|
|
cb95d1df35 | ||
|
|
11ebaf673f | ||
|
|
3787388eac | ||
|
|
c5a1650ac0 | ||
|
|
276bed3e4a | ||
|
|
571ebb2373 | ||
|
|
ef3d02214b | ||
|
|
d3821e8cd7 | ||
|
|
420737e098 | ||
|
|
630eddf25a | ||
|
|
f379bcc6d3 | ||
|
|
22ff1e8826 | ||
|
|
4038beb67e | ||
|
|
3f37e034a0 | ||
|
|
8d9e619412 | ||
|
|
1a809ca89b | ||
|
|
cc11a8d183 | ||
|
|
54e65598bd | ||
|
|
1176d4ef84 | ||
|
|
d36b546df8 | ||
|
|
9c9ecc22e2 | ||
|
|
fa76c634ec | ||
|
|
01d3848f17 | ||
|
|
162384a838 | ||
|
|
06d4aa6060 | ||
|
|
09df1a286b | ||
|
|
2e915026a0 | ||
|
|
f6f839eb3c | ||
|
|
c5292c2549 | ||
|
|
c422bdc3f8 | ||
|
|
48a860a335 | ||
|
|
61cddd8b63 | ||
|
|
25a7d023dd | ||
|
|
c5261ea3d2 | ||
|
|
af1d29db83 | ||
|
|
97a5dd0ead | ||
|
|
d017faa06c | ||
|
|
4525a5f2be | ||
|
|
b30ad42609 | ||
|
|
c54ef78220 | ||
|
|
ae81006eab | ||
|
|
5e667ee53a | ||
|
|
a10a7279a8 | ||
|
|
968fe91c8e | ||
|
|
18ef0cfe81 | ||
|
|
45958eaabc | ||
|
|
5442de7d99 | ||
|
|
82a5ff8540 | ||
|
|
9972059476 | ||
|
|
53d11f490d | ||
|
|
5c98209127 | ||
|
|
ee210afc44 | ||
|
|
cb76d00f5f | ||
|
|
419450689b | ||
|
|
b4504639c8 | ||
|
|
6bfea73716 | ||
|
|
4a5ea85094 | ||
|
|
df312a4ffa | ||
|
|
5a16de2ef6 | ||
|
|
980496bb0e | ||
|
|
d2719ea92f | ||
|
|
1c75fa7297 | ||
|
|
c6ffa5059d | ||
|
|
0f0bda9722 | ||
|
|
11d89ad7c1 | ||
|
|
53f4f06a15 | ||
|
|
c69016467d | ||
|
|
89e7860572 | ||
|
|
ed9f6a3cb4 | ||
|
|
e46810eabe | ||
|
|
47b01be0a4 | ||
|
|
b04d06938d | ||
|
|
a14bfb331d | ||
|
|
a361cc9479 | ||
|
|
61fe623cf1 | ||
|
|
d46c466e20 | ||
|
|
89be83e5be | ||
|
|
b3ddc2b9a7 | ||
|
|
33c15d6309 | ||
|
|
1f6acc23fa | ||
|
|
e8c2f2ee3e | ||
|
|
2f046ae873 | ||
|
|
63715a899e | ||
|
|
ed0eb139cb | ||
|
|
0a3aab288a | ||
|
|
1796a26fc7 | ||
|
|
69c82b4c2b | ||
|
|
67b2380d19 | ||
|
|
96cd0d82e5 | ||
|
|
83ef276697 | ||
|
|
3b250d6e9c | ||
|
|
a798386660 | ||
|
|
1edefac4dc | ||
|
|
8b7c0a7893 | ||
|
|
c37acef077 | ||
|
|
b4c3f465fb | ||
|
|
faf91a466c | ||
|
|
4071c4e7c9 | ||
|
|
af04a85303 | ||
|
|
ec93d103b7 | ||
|
|
a3916113b9 | ||
|
|
5f23d99918 | ||
|
|
f6b1c2a0b6 | ||
|
|
c54928e003 | ||
|
|
efd237b8b8 | ||
|
|
de0b46a765 | ||
|
|
ca5e73a9d0 | ||
|
|
397870d7a5 | ||
|
|
263fd81bbc | ||
|
|
9575a82a9e | ||
|
|
6fa6e3d3d5 | ||
|
|
bc7ab6c2df | ||
|
|
0c1b405964 | ||
|
|
f238c69511 | ||
|
|
4babecf3b0 | ||
|
|
1d280352f4 | ||
|
|
a8169f08fc | ||
|
|
75601ccf9e | ||
|
|
183e378bd0 | ||
|
|
00b8f0dec1 | ||
|
|
48a9905f5d | ||
|
|
4f48a05906 | ||
|
|
dfff9a8125 | ||
|
|
ac730d9f53 | ||
|
|
7166b7b640 | ||
|
|
1c1c41d3be | ||
|
|
06461b401a | ||
|
|
71c3e67cb2 | ||
|
|
c173d9fa18 | ||
|
|
8d367d4b4d | ||
|
|
eb3046f7d3 | ||
|
|
66a8acfd3d | ||
|
|
56fcc41d70 | ||
|
|
14d5358982 | ||
|
|
21a27687d0 | ||
|
|
9698cc93d9 | ||
|
|
88aed15ffa | ||
|
|
022ec106f0 | ||
|
|
f317d1277f | ||
|
|
f91e461ea0 | ||
|
|
a84c4ac197 | ||
|
|
b9f57bda05 | ||
|
|
28ee84b731 | ||
|
|
2494e028c0 | ||
|
|
1709421c2c | ||
|
|
71dd9a6f1b | ||
|
|
478dd01c91 | ||
|
|
862b675bee | ||
|
|
f328f9a10d | ||
|
|
a54f6bb08b | ||
|
|
72fb85f6a0 | ||
|
|
4d54f35a96 | ||
|
|
d6bf209bb3 | ||
|
|
c87af333b3 | ||
|
|
92efe4534b | ||
|
|
4c08581e48 | ||
|
|
7cb3f3def7 | ||
|
|
00f16e9178 | ||
|
|
dc76ca5fc9 | ||
|
|
7520544840 | ||
|
|
ea893bf9d9 | ||
|
|
7429454171 | ||
|
|
a5b3a205d9 | ||
|
|
84475ef1de | ||
|
|
71f4894d87 | ||
|
|
b8457be394 | ||
|
|
ee6835492c | ||
|
|
3a0b375104 | ||
|
|
6f05a250be | ||
|
|
af6a64d76b | ||
|
|
be3efdf274 | ||
|
|
a3e56114d1 | ||
|
|
7e8846b81e | ||
|
|
4d63362206 | ||
|
|
9d13c7b1e2 | ||
|
|
81548a30aa | ||
|
|
4880dd0cd6 | ||
|
|
037f27c882 | ||
|
|
2411556242 | ||
|
|
8e1ccfae3d | ||
|
|
1c491c42cd | ||
|
|
eaf5a163b1 | ||
|
|
148e64d4bc | ||
|
|
3695a31606 | ||
|
|
34533dc569 | ||
|
|
655b22e050 | ||
|
|
bbc161e1cb | ||
|
|
f50f0ba63e | ||
|
|
44ea50f1c4 | ||
|
|
34a571d37f | ||
|
|
e46332a183 | ||
|
|
74e60e44ad | ||
|
|
857a2d5bfd | ||
|
|
797143d515 | ||
|
|
e6f653af44 | ||
|
|
f187fd99da | ||
|
|
01a883df0c | ||
|
|
8d95c91805 | ||
|
|
d090fcf2fe | ||
|
|
09fbc78a97 | ||
|
|
b4fc87c380 | ||
|
|
6377f5a458 | ||
|
|
4dd6148646 | ||
|
|
c0b702a994 | ||
|
|
12001a42f9 | ||
|
|
d30ce2b9ac | ||
|
|
047abb0050 | ||
|
|
23456d67e5 | ||
|
|
15251056ba | ||
|
|
cc6e6aa028 | ||
|
|
302b138aa7 | ||
|
|
b91bd6716c | ||
|
|
8f334b4e41 | ||
|
|
7c00b17085 | ||
|
|
25cf51637d | ||
|
|
6ad3427426 | ||
|
|
345b1369be | ||
|
|
120594163f | ||
|
|
541b627d21 | ||
|
|
d7418fc9ec | ||
|
|
5d018c090f | ||
|
|
4b3f2c1972 | ||
|
|
450734cc32 | ||
|
|
ecbec7235f | ||
|
|
0518455163 | ||
|
|
aa57634213 | ||
|
|
7752483486 | ||
|
|
a419b64347 | ||
|
|
281ce441a8 | ||
|
|
a75807354d | ||
|
|
71348651eb | ||
|
|
55c799a474 | ||
|
|
ec03d6e6fc | ||
|
|
1007c06d44 | ||
|
|
c8ede7c9ea | ||
|
|
f32a6fb9a1 | ||
|
|
fb9bbf99c4 | ||
|
|
1c0b9469f5 | ||
|
|
515be70867 | ||
|
|
488920168a | ||
|
|
d391a6d49f | ||
|
|
27b933ba5a | ||
|
|
0d7b44db50 | ||
|
|
6337fd0650 | ||
|
|
892999c40c | ||
|
|
5e3e438edb | ||
|
|
2992e3a1b6 | ||
|
|
cff5e3ee88 | ||
|
|
d1fba0686e | ||
|
|
0c988f00bc | ||
|
|
dc49e11527 | ||
|
|
d1afa0e370 | ||
|
|
1578dd1027 | ||
|
|
06e55ddf38 | ||
|
|
470f427a95 | ||
|
|
aa6ba149bc | ||
|
|
1162f0ed63 | ||
|
|
f610c88103 | ||
|
|
458bde5e24 | ||
|
|
3bc174f1bb | ||
|
|
c5552788c5 | ||
|
|
60a1cc34b8 | ||
|
|
5884e4039f | ||
|
|
4a0364ded5 | ||
|
|
d14d4bc110 | ||
|
|
550bd24ca8 | ||
|
|
9bba2443b7 | ||
|
|
aa4a80defc | ||
|
|
0319120adc | ||
|
|
9ac0b06ff1 | ||
|
|
68fe45b594 | ||
|
|
81b9be1623 | ||
|
|
4689426a91 | ||
|
|
38887e6ea9 | ||
|
|
3ea8be7292 | ||
|
|
c445ce6125 | ||
|
|
65744cd87d | ||
|
|
ad20feaca0 | ||
|
|
4057e27539 | ||
|
|
f8254a1011 | ||
|
|
e5ab0ac294 | ||
|
|
e810f3052d | ||
|
|
46718cae28 | ||
|
|
8d61ecbc4d | ||
|
|
87f0010f42 | ||
|
|
8fe18fefdd | ||
|
|
ad9f9e2ce7 | ||
|
|
5d0467e769 | ||
|
|
a6b29be55b | ||
|
|
ee0da48bd2 | ||
|
|
88aea1d52f | ||
|
|
79f593a429 | ||
|
|
8c08714b8c | ||
|
|
b0bf8478e5 | ||
|
|
39874ef742 | ||
|
|
ac206ccb05 | ||
|
|
b5a4159efc | ||
|
|
71edf1b5f1 | ||
|
|
2e950eb41b | ||
|
|
56091bae1f | ||
|
|
d3ad26926d | ||
|
|
ed402c5be6 | ||
|
|
4d45a2c43f | ||
|
|
74827c35ff | ||
|
|
62c704d1e9 | ||
|
|
f03b11d271 | ||
|
|
aeda3d2d69 | ||
|
|
a8db3df8f6 | ||
|
|
c42424f2db | ||
|
|
93c03ef05b | ||
|
|
b3bae170ed | ||
|
|
43714b9d03 | ||
|
|
cc7aa5890d | ||
|
|
0b53ca2848 | ||
|
|
eac4042ed5 | ||
|
|
c942c6539a | ||
|
|
ad00e0dd43 | ||
|
|
dfaf75f502 | ||
|
|
e7b3a73b62 | ||
|
|
39b27a19be | ||
|
|
d59a6fa518 | ||
|
|
fb0c0eaa7c | ||
|
|
618c75fe3d | ||
|
|
26c284b225 | ||
|
|
5f9d5c483c | ||
|
|
fee8f29f48 | ||
|
|
2c2cdcf789 | ||
|
|
ffd1df0cb5 | ||
|
|
64a53de27d | ||
|
|
98e7d4ceec | ||
|
|
9fe11db7e2 | ||
|
|
e7af509c86 | ||
|
|
07d57db91c | ||
|
|
97ab91dcc9 | ||
|
|
7d91b8efcd | ||
|
|
f57a4bf87b | ||
|
|
0276cc90c2 | ||
|
|
0fd21baaa2 | ||
|
|
7dd666e444 | ||
|
|
ec827bed8e | ||
|
|
a48c1c8248 | ||
|
|
214dab39f6 | ||
|
|
a125cd6c6d | ||
|
|
6c3dd4984c | ||
|
|
5d3a128cd3 | ||
|
|
3bafe64666 | ||
|
|
3e574cd26a | ||
|
|
1f85ffa11b | ||
|
|
6abce51481 | ||
|
|
c1032b6232 | ||
|
|
040ff7993f | ||
|
|
acc2efab50 | ||
|
|
66ed9ddbe3 | ||
|
|
43c2c119e9 | ||
|
|
5f3ee657ce | ||
|
|
5d4bd700a7 | ||
|
|
e310added4 | ||
|
|
3334c06e8b | ||
|
|
d9db950c0e | ||
|
|
db391fdfdd | ||
|
|
fbf28bcc63 | ||
|
|
653bca8b74 | ||
|
|
f739990f4c | ||
|
|
51311779b3 | ||
|
|
e0c8721830 | ||
|
|
8908b22c9d | ||
|
|
eb3cb77296 | ||
|
|
4d474d40e7 | ||
|
|
4c404cb4cc | ||
|
|
71ec6144bd | ||
|
|
d4e6812be2 | ||
|
|
31ac73c315 | ||
|
|
57fec2f2da | ||
|
|
6ccb7e169d | ||
|
|
491bf41356 | ||
|
|
d27e440b2a | ||
|
|
21f1a0ee49 | ||
|
|
83a0f0ddb1 | ||
|
|
b332152bef | ||
|
|
6b6c7ccfea | ||
|
|
f7aadd07f6 | ||
|
|
d66815978a | ||
|
|
4d9d7e6ded | ||
|
|
9dc5c58f62 | ||
|
|
a89ff402fc | ||
|
|
2811d40840 | ||
|
|
b5d073ad3f | ||
|
|
7189112308 | ||
|
|
89605fac04 | ||
|
|
46b6a095a2 | ||
|
|
9ee0789174 | ||
|
|
a0e4600364 | ||
|
|
6d253a2068 | ||
|
|
564a8ed208 | ||
|
|
d06c73861d | ||
|
|
b1d01dc757 | ||
|
|
5301fe729e | ||
|
|
2211cfe783 | ||
|
|
e95c33dd18 | ||
|
|
3ae95150c7 | ||
|
|
e75cd74f5a | ||
|
|
30742d21d8 | ||
|
|
3b59a10584 | ||
|
|
038bfb98ec | ||
|
|
7017b1250a | ||
|
|
2c6b7a52e9 | ||
|
|
a350b76738 | ||
|
|
2f46cf5ddb | ||
|
|
9b1136518c | ||
|
|
9ddb23e025 | ||
|
|
92826a0436 | ||
|
|
5c1f71de51 | ||
|
|
4b84d5d2c1 | ||
|
|
e7539bd2c8 | ||
|
|
f624f92e7a | ||
|
|
6ed168d3af | ||
|
|
decebeea0e | ||
|
|
887a950243 | ||
|
|
0eb1c7edb1 | ||
|
|
b56933d9dc | ||
|
|
1efc3cff36 | ||
|
|
7ad6b47bc9 | ||
|
|
17e8d51124 | ||
|
|
703921e2fd | ||
|
|
552bda92a9 | ||
|
|
9a7673f950 | ||
|
|
d47a2988a9 | ||
|
|
c23d6b67ee | ||
|
|
2a9e252f77 | ||
|
|
3d222d313b | ||
|
|
5302e56071 | ||
|
|
74c77d826f | ||
|
|
de2a8d3706 | ||
|
|
0ae89fe2be | ||
|
|
5afaa6b1e7 | ||
|
|
7b2a1d15cc | ||
|
|
a218bdb0d7 | ||
|
|
44e04da79c | ||
|
|
1118a7d15a | ||
|
|
b2cd954f24 | ||
|
|
cb0ab87646 | ||
|
|
57a1343f10 | ||
|
|
a223479107 | ||
|
|
04b2d9a453 | ||
|
|
40d0f853d6 | ||
|
|
c4c731c0aa | ||
|
|
c22dcb04af | ||
|
|
e74cddfbd1 | ||
|
|
6d1c02ffed | ||
|
|
4a519a25f3 | ||
|
|
5ad7f9910f | ||
|
|
e85e83f491 | ||
|
|
886319c81d | ||
|
|
e09adc4fde | ||
|
|
8658aef3bf | ||
|
|
24163eb929 | ||
|
|
70679b49fc | ||
|
|
bfacad1a99 | ||
|
|
2f077fcd99 | ||
|
|
f38ebba34d | ||
|
|
deec233519 | ||
|
|
15704c384e | ||
|
|
2653d745fd | ||
|
|
6ea73a5bff | ||
|
|
7e2bb63378 | ||
|
|
211a8d31d5 | ||
|
|
620387fbe1 | ||
|
|
8fc1848918 | ||
|
|
d3d9b538c7 | ||
|
|
d7a8166720 | ||
|
|
37b1a7560c | ||
|
|
108caae216 | ||
|
|
4667e18831 | ||
|
|
3e26086f82 | ||
|
|
71770eb790 | ||
|
|
a23836231f | ||
|
|
d20b2a5a97 | ||
|
|
ae02ecec60 | ||
|
|
f20db35b78 | ||
|
|
21de04b4a2 | ||
|
|
65eb52a247 | ||
|
|
e7f14f3d0e | ||
|
|
3622de2621 | ||
|
|
e4ef0e0ca8 | ||
|
|
7c97dbc196 | ||
|
|
aa35835cfc | ||
|
|
8995921cc5 | ||
|
|
a9df50eefc | ||
|
|
b3b4e83aed | ||
|
|
95ea09c3dc | ||
|
|
bf2ee3c58a | ||
|
|
3a6deb3ed3 | ||
|
|
3cdd2b2761 | ||
|
|
af88f0c067 | ||
|
|
1652b2a443 | ||
|
|
5bb43f69ab | ||
|
|
50031ffb15 | ||
|
|
78f3b0ad1f | ||
|
|
56d715b091 | ||
|
|
e4a90c19cc | ||
|
|
64aaa6e1ae | ||
|
|
d5ad4f3255 | ||
|
|
0e13f33193 | ||
|
|
b8ea21b2e5 | ||
|
|
6c74439d56 | ||
|
|
7612e7af05 | ||
|
|
3a6466d2e1 | ||
|
|
6ae43a2243 | ||
|
|
fcfeb2451b | ||
|
|
3039ed7682 | ||
|
|
3bf6c3c2aa | ||
|
|
b9902f39b7 | ||
|
|
8355293306 | ||
|
|
62470d8a33 | ||
|
|
cf1ae3513f | ||
|
|
a37640cdd0 | ||
|
|
fa818d03b8 | ||
|
|
6207d338dd | ||
|
|
0ffc53bafe | ||
|
|
fae69df9a9 | ||
|
|
6ca893be23 | ||
|
|
dea40e5e99 | ||
|
|
5febdae36a | ||
|
|
7f8e1f480a | ||
|
|
e9729a9601 | ||
|
|
90905fb1e2 | ||
|
|
740c5234b1 | ||
|
|
1b0f0d7ead | ||
|
|
daaa5a1824 | ||
|
|
b70a391e6c | ||
|
|
dfbeaddc72 | ||
|
|
dbb0fcdc7a | ||
|
|
2222393b0a | ||
|
|
fb9a143429 | ||
|
|
de806330fd | ||
|
|
52ac61d87c | ||
|
|
942ff5be57 | ||
|
|
95a4943762 | ||
|
|
ed8a7fa541 | ||
|
|
0e46b4cd03 | ||
|
|
75487d43f5 | ||
|
|
9a5aa4b23c | ||
|
|
cf4a536440 | ||
|
|
00b2124876 | ||
|
|
4530c7ad08 | ||
|
|
f7243be79c | ||
|
|
5240a03217 | ||
|
|
257463719b | ||
|
|
aab6f6c56f | ||
|
|
75ede6e17c | ||
|
|
8760a344ec | ||
|
|
6f86c9f118 | ||
|
|
5d8098a2c3 | ||
|
|
c5632d412e | ||
|
|
a602185fb6 | ||
|
|
5f590ebed0 | ||
|
|
71ff228ad3 | ||
|
|
a37876ab95 | ||
|
|
b81dcbdf2a | ||
|
|
9786e0a760 | ||
|
|
1fe403f461 | ||
|
|
3ed89a8879 | ||
|
|
8392296eda | ||
|
|
f5d9359da8 | ||
|
|
0825120f6a | ||
|
|
12c69ad490 | ||
|
|
9ac06a9333 | ||
|
|
d97f9fc477 | ||
|
|
8a4a1bb018 | ||
|
|
30111a786a | ||
|
|
3cd7941098 | ||
|
|
01bd4961e3 | ||
|
|
c3100eeb19 | ||
|
|
dfd0b297ce | ||
|
|
28f3a44e33 | ||
|
|
3c3d695d4d | ||
|
|
301ed34142 | ||
|
|
7da9800694 | ||
|
|
4a214c08e5 | ||
|
|
12f8d8069d | ||
|
|
1dec1645e5 | ||
|
|
de2861e7a9 | ||
|
|
d1f4f6f4b8 | ||
|
|
713ddb89bd | ||
|
|
c97c0be4f2 | ||
|
|
5505aa28ce | ||
|
|
58b3bc2d7e | ||
|
|
91676de638 | ||
|
|
b4d3b34acf | ||
|
|
1c7ee88b84 | ||
|
|
3deea1c3ce | ||
|
|
5119564579 | ||
|
|
1629d50999 | ||
|
|
5898dcae4a | ||
|
|
da806cc3e7 | ||
|
|
8124d10526 | ||
|
|
6fb282aa39 | ||
|
|
10b3d00fd1 | ||
|
|
bca4eb5e00 | ||
|
|
f3dfdfef8a | ||
|
|
563200fbf6 | ||
|
|
d119afafdb | ||
|
|
fe7b48aa8f | ||
|
|
27d2d3cbac | ||
|
|
31df47b6ea | ||
|
|
f937f4d951 | ||
|
|
6df1198e8b | ||
|
|
dccc10ff12 | ||
|
|
2666da892f | ||
|
|
8fd61c9aa6 | ||
|
|
73115233bb | ||
|
|
cc81b4a5cd | ||
|
|
afdb67b462 | ||
|
|
8202ab37d8 | ||
|
|
b7d1a70919 | ||
|
|
911e1bd1e4 | ||
|
|
b73b28ab9c | ||
|
|
dfe5fff2f5 | ||
|
|
498da24b8b | ||
|
|
835b5e2179 | ||
|
|
6b0e63b652 | ||
|
|
2b94bcffb9 | ||
|
|
c54b8f9b00 | ||
|
|
90b3086f4a | ||
|
|
07744af790 | ||
|
|
6c8b11afee | ||
|
|
b7a19a9a5f | ||
|
|
d7f0b9de25 | ||
|
|
0f66e2757b | ||
|
|
c7f6c0cb9f | ||
|
|
213241c06a | ||
|
|
8368d54d36 | ||
|
|
9ef373f6a5 | ||
|
|
d0137b6d2d | ||
|
|
4de4ff5682 | ||
|
|
92f326a1b1 | ||
|
|
e2f24f43c9 | ||
|
|
e49536e88b | ||
|
|
05e7c29de5 | ||
|
|
2d26f60192 | ||
|
|
3780de9d98 | ||
|
|
e2edfecb80 | ||
|
|
67eb6dde75 | ||
|
|
591355d2c8 | ||
|
|
9547110533 | ||
|
|
bc250c2e3f | ||
|
|
80b4f99b1e | ||
|
|
d09b404178 | ||
|
|
7ecad71ab0 | ||
|
|
8c4b8cc0b4 | ||
|
|
9a233999a9 | ||
|
|
09907eeb62 | ||
|
|
68305703bd | ||
|
|
0224a20ff6 | ||
|
|
99eed2d885 | ||
|
|
72cac5e19f | ||
|
|
62f90219fc | ||
|
|
74457cd3b5 | ||
|
|
ce0297ed61 | ||
|
|
88672f414b | ||
|
|
951014803b | ||
|
|
1da3f9d85f | ||
|
|
7cba3ac4f8 | ||
|
|
3f5d3b2d40 | ||
|
|
b3a54d588b | ||
|
|
f8c5acee4c | ||
|
|
7849c35de1 | ||
|
|
f908c2b0e3 | ||
|
|
032c363ea0 | ||
|
|
0be18aca81 | ||
|
|
4c54b287e4 | ||
|
|
7d8a16ae39 | ||
|
|
b7899c3d5c | ||
|
|
03435c0d74 | ||
|
|
8b732e086d | ||
|
|
c07cd007eb | ||
|
|
b5f251c815 | ||
|
|
6ad4521b78 | ||
|
|
d0f789dc90 | ||
|
|
8dab2ffce7 | ||
|
|
6b05ca589d | ||
|
|
e5a91a8be8 | ||
|
|
98d5731ad8 | ||
|
|
c5ad6de596 | ||
|
|
7dd7dd97cd | ||
|
|
c9b5d8cf4c | ||
|
|
8c08258cf2 | ||
|
|
3a2cf37115 | ||
|
|
837f001789 | ||
|
|
381574bdb7 | ||
|
|
00221e96fd | ||
|
|
44fbfb2cf6 | ||
|
|
2a0b39d30a | ||
|
|
eb9fdb0164 | ||
|
|
fec21239c8 | ||
|
|
d30729a816 | ||
|
|
44f24efad4 | ||
|
|
3d0a270a66 | ||
|
|
e9ccadebed | ||
|
|
7d41ce23a7 | ||
|
|
d921cde4d2 | ||
|
|
0428ce4703 | ||
|
|
f3aa4bdf59 | ||
|
|
ca183707f2 | ||
|
|
bab5700a09 | ||
|
|
d611684d9e | ||
|
|
f1b6809eee | ||
|
|
2881f2a096 | ||
|
|
d2665b655e | ||
|
|
9d9411555f | ||
|
|
976c727eec | ||
|
|
e14f91dd37 | ||
|
|
ddf5c86f3a | ||
|
|
57d2cb8962 | ||
|
|
218b12c557 | ||
|
|
43301096d3 | ||
|
|
fc0f254f00 | ||
|
|
55188fe991 | ||
|
|
7b0be9cf8f | ||
|
|
0d2bc9b0a1 | ||
|
|
2353436cb5 | ||
|
|
d2f1c00719 | ||
|
|
4447dbe265 | ||
|
|
06547120aa | ||
|
|
74d2a6eed1 | ||
|
|
e3afc32693 | ||
|
|
55819ae464 | ||
|
|
774d277c1f | ||
|
|
23785faf02 | ||
|
|
2637b18b67 | ||
|
|
16e750dd37 | ||
|
|
1727e0acf6 | ||
|
|
dfa3ccdea9 | ||
|
|
a3e74ec521 | ||
|
|
7999fbf765 | ||
|
|
f32b52ea8d | ||
|
|
8c2c3b54d9 | ||
|
|
b2acd1f75a | ||
|
|
a05ce00a65 | ||
|
|
a58767eff8 | ||
|
|
432b7cb235 | ||
|
|
61423a2d47 | ||
|
|
3fe4980ce1 | ||
|
|
2d587ad691 | ||
|
|
cb9b88e65b | ||
|
|
dbedc63c55 | ||
|
|
a3da3a01e1 | ||
|
|
cdb7b83741 | ||
|
|
add9ce46c3 | ||
|
|
222f8a3d5e | ||
|
|
24b01a8e4f | ||
|
|
98a1181240 | ||
|
|
79b593d8d8 | ||
|
|
eeb786fcfd | ||
|
|
9cb79b9abb | ||
|
|
8e9d1d9fe6 | ||
|
|
2520e335d1 | ||
|
|
28ca6ac05e | ||
|
|
d3cdfefa03 | ||
|
|
c6593d02a6 | ||
|
|
c20ff6ce19 | ||
|
|
2026094691 | ||
|
|
c595457ea0 | ||
|
|
11dd36f3aa | ||
|
|
b33a093844 | ||
|
|
74e58ddbb1 | ||
|
|
0f9b79ef64 | ||
|
|
aad4104297 | ||
|
|
184c5917bf | ||
|
|
936536a284 | ||
|
|
d01ca30f55 | ||
|
|
6594d52185 | ||
|
|
b724208510 | ||
|
|
983e75e5de | ||
|
|
345b69d5f7 | ||
|
|
05164bf713 | ||
|
|
b3e31fb8d6 | ||
|
|
3e2a57ff35 | ||
|
|
625fd61313 | ||
|
|
18de8dee62 | ||
|
|
f8aecb2a32 | ||
|
|
b48e487d53 | ||
|
|
11a0e3ff78 | ||
|
|
7b8bb4248b | ||
|
|
ae26368e78 | ||
|
|
917107e635 | ||
|
|
17a6b8cdc0 | ||
|
|
7030a1f9a2 | ||
|
|
9db8592aa8 | ||
|
|
2f2a9ad536 | ||
|
|
b0cd822924 | ||
|
|
10b60f8d16 | ||
|
|
56704b5e95 | ||
|
|
08e8f9ca45 | ||
|
|
52df3b232d | ||
|
|
fd10557e78 | ||
|
|
8def44047a | ||
|
|
c9876c3cd8 | ||
|
|
4fe04775d1 | ||
|
|
3b608fa489 | ||
|
|
3c5eb7de84 | ||
|
|
223cdcd0ee | ||
|
|
1a1097ab23 | ||
|
|
ef8647fe30 | ||
|
|
9a25cb012d | ||
|
|
2ab7fb6051 | ||
|
|
5267ed46c7 | ||
|
|
7f82960897 | ||
|
|
85ccac2633 | ||
|
|
a782ee93de | ||
|
|
e368f17caf | ||
|
|
4a86900761 | ||
|
|
69f1ee8732 | ||
|
|
6ff58f02e2 | ||
|
|
94968c81e0 | ||
|
|
b58979d057 | ||
|
|
38c2cc8521 | ||
|
|
31bec45998 | ||
|
|
b33a2f24fa | ||
|
|
9d18f5c458 | ||
|
|
6f5876f8f7 | ||
|
|
2848f43acc | ||
|
|
319dbd2eb7 | ||
|
|
924e062426 | ||
|
|
3b24aa2441 | ||
|
|
be4c1afb0b | ||
|
|
550e3721ae | ||
|
|
64c164c111 | ||
|
|
74e52df3cd | ||
|
|
7334e54a63 | ||
|
|
90ac88cb8e | ||
|
|
0ac84755a0 | ||
|
|
b6b0c2aa8e | ||
|
|
bd8894002e | ||
|
|
d3d0434f07 | ||
|
|
878dec65c8 | ||
|
|
eaec132091 | ||
|
|
ba3783d205 | ||
|
|
dce1824a91 | ||
|
|
cf2a307832 | ||
|
|
4c8a9c5d70 | ||
|
|
101769d26c | ||
|
|
a1791c6be3 | ||
|
|
b8bc99676d | ||
|
|
6e4562bb56 | ||
|
|
dbb5993d13 | ||
|
|
dc3c691c8c | ||
|
|
e7216a5987 | ||
|
|
277802483f | ||
|
|
e9bed17d98 | ||
|
|
4cdc155eac | ||
|
|
0972a2d758 | ||
|
|
88d05a89d4 | ||
|
|
14d0b763ec | ||
|
|
1a14d8506d | ||
|
|
14631be59f | ||
|
|
41df63aacd | ||
|
|
a587759d76 | ||
|
|
962b519708 | ||
|
|
0c749fd7e5 | ||
|
|
af83884dc7 | ||
|
|
1925fab427 | ||
|
|
11e9e375a3 | ||
|
|
2fd01dcced | ||
|
|
97f6dd1820 | ||
|
|
1ad9827fc4 | ||
|
|
5623701acb | ||
|
|
00263dd664 | ||
|
|
f42bb0bd65 | ||
|
|
4255746c00 | ||
|
|
1310dc4ca2 | ||
|
|
50a1def80b | ||
|
|
cb492cc24d | ||
|
|
ef0f010437 | ||
|
|
4dfb613c3e | ||
|
|
fecfaf4092 | ||
|
|
4ddc6a4a77 | ||
|
|
0427b70a2f | ||
|
|
df8f1a4355 | ||
|
|
27d97aa231 | ||
|
|
ba706177cb | ||
|
|
586ace1873 | ||
|
|
6cac76bfe4 | ||
|
|
fc8f0e341b | ||
|
|
5f47f70183 | ||
|
|
a2ae1db31c | ||
|
|
9ab3b89c53 | ||
|
|
42ecfc5538 | ||
|
|
964657a155 | ||
|
|
1d1bfd3d7d | ||
|
|
d25770ee76 | ||
|
|
7da0e37ba8 | ||
|
|
ee90b88dd7 | ||
|
|
8e80f9b7a8 | ||
|
|
603030b005 | ||
|
|
fe29af2e58 | ||
|
|
5f35bed5c5 | ||
|
|
9cad1dfa0d | ||
|
|
5980613317 | ||
|
|
e49d148d47 | ||
|
|
5f54a22d29 | ||
|
|
a4e21c8fa8 | ||
|
|
37d01e2d27 | ||
|
|
a3f065c409 | ||
|
|
a98ce86ca3 | ||
|
|
1f0ca00d75 | ||
|
|
e51c0810b6 | ||
|
|
66ac46214d | ||
|
|
16a82b1747 | ||
|
|
facb2f9a81 | ||
|
|
48c4a79d2e | ||
|
|
f8442da945 | ||
|
|
551ab83cf2 | ||
|
|
d7038423dd | ||
|
|
6a769c92b3 | ||
|
|
da1ac35930 | ||
|
|
7bd7c85b1d | ||
|
|
58cf2a8f19 | ||
|
|
4fdd6de8e8 | ||
|
|
730fe9e582 | ||
|
|
1d2cf0e20e | ||
|
|
52f76a3283 | ||
|
|
7791264525 | ||
|
|
2b9e556055 | ||
|
|
b17bf031f6 | ||
|
|
6c8b6bd0c7 | ||
|
|
ed07241f89 | ||
|
|
e5a3ab3cb9 | ||
|
|
0318d27720 | ||
|
|
5dd9263848 | ||
|
|
63a8cb594a | ||
|
|
716218cac4 | ||
|
|
b1b9a29e48 | ||
|
|
d1c7983fe5 | ||
|
|
9d107fb2d5 | ||
|
|
bd144cfa64 | ||
|
|
fd51c133df | ||
|
|
9e3124a1c9 | ||
|
|
315c80f793 | ||
|
|
40f6d320c2 | ||
|
|
d2493393db | ||
|
|
cc703b01df | ||
|
|
1242a66119 | ||
|
|
4dcd37f699 | ||
|
|
9a58b1a3a0 | ||
|
|
a7006ac21c | ||
|
|
17d69be902 | ||
|
|
e82241cba5 | ||
|
|
4644689d5a | ||
|
|
85601e03dd | ||
|
|
52516085d9 | ||
|
|
1ff270e41c | ||
|
|
9b8002cd43 | ||
|
|
b792419cde | ||
|
|
6d86d63ac5 | ||
|
|
9bc71f4cb6 | ||
|
|
eed5cbc5db | ||
|
|
3ab117df04 | ||
|
|
021b0cb4d5 | ||
|
|
0e2ea45c93 | ||
|
|
2832cfdfe5 | ||
|
|
d8d946a458 | ||
|
|
2982e77495 | ||
|
|
fe29ed461c | ||
|
|
e532bd50d5 | ||
|
|
1533d0448f | ||
|
|
d848704b35 | ||
|
|
8f8450793a | ||
|
|
8b32235854 | ||
|
|
42ab7fd876 | ||
|
|
7a77cf584a | ||
|
|
dbefbbc522 | ||
|
|
40370345c5 | ||
|
|
b1793e2fb9 | ||
|
|
fb67ab1257 | ||
|
|
7171431e7c | ||
|
|
ca307669d4 | ||
|
|
b63a7e66db | ||
|
|
d58f736935 | ||
|
|
f773cd9a3e | ||
|
|
381986d044 | ||
|
|
3490a5aded | ||
|
|
e169083fed | ||
|
|
df74a266cf | ||
|
|
0876ec7a67 | ||
|
|
67e23ed972 | ||
|
|
cbf63b0709 | ||
|
|
910d8f8e0b | ||
|
|
f2a2467de3 | ||
|
|
6dd3244019 | ||
|
|
fee3d6931b | ||
|
|
c949845a6b | ||
|
|
a0816c6d15 | ||
|
|
347eaa8685 | ||
|
|
9abcd88435 | ||
|
|
a5d40d7674 | ||
|
|
89246e1a45 | ||
|
|
ba5a8ee299 | ||
|
|
2e49ca4903 | ||
|
|
0d49f97128 | ||
|
|
f8b23cff18 | ||
|
|
0f1a0a9818 | ||
|
|
ce07024a44 | ||
|
|
e8f5c2fcf6 | ||
|
|
e395e03040 | ||
|
|
b74cfe8c2c | ||
|
|
ac8cce3963 | ||
|
|
747c6a2bd2 | ||
|
|
a3bde36c84 | ||
|
|
7fe7facfee | ||
|
|
eb8366bb0a | ||
|
|
e79ceb4b45 | ||
|
|
d05d235c01 | ||
|
|
4286f60387 | ||
|
|
e1553d5da3 | ||
|
|
b2ab1b758a | ||
|
|
41dcd0ac03 | ||
|
|
7d9f79b130 | ||
|
|
62fed8b7b2 | ||
|
|
3d8e05d711 | ||
|
|
5c8e679bdc | ||
|
|
ca6fb27ea6 | ||
|
|
eb6c598678 | ||
|
|
90dce84314 | ||
|
|
dd52d1b526 | ||
|
|
062e1cbe06 | ||
|
|
4bd55c6f73 | ||
|
|
693c4e5741 | ||
|
|
e2b86974ae | ||
|
|
e04c39b089 | ||
|
|
b449bd5150 | ||
|
|
e25dca21d1 | ||
|
|
d44e3c369d | ||
|
|
68827072c9 | ||
|
|
b71744082b | ||
|
|
7674f3ddbf | ||
|
|
32707317fa | ||
|
|
3e577b090e | ||
|
|
964b260937 | ||
|
|
55d84cf815 | ||
|
|
690c932d7f | ||
|
|
2fe07abf83 | ||
|
|
8fdbdb131d | ||
|
|
e0c4936c99 | ||
|
|
1ea1cafa00 | ||
|
|
d183554600 | ||
|
|
e6c305cb75 | ||
|
|
c5d3c08256 | ||
|
|
93f8581b69 | ||
|
|
e5b63d43f2 | ||
|
|
effff27c4e | ||
|
|
46e2216165 | ||
|
|
b66a13183e | ||
|
|
10c772fa7f | ||
|
|
c3329ff79d | ||
|
|
6eb1426ea2 | ||
|
|
afb9b9540c | ||
|
|
0e534b5a25 | ||
|
|
d6233b13ba | ||
|
|
d65abcaedb | ||
|
|
f2e09d048c | ||
|
|
a3b9884674 | ||
|
|
561703ca27 | ||
|
|
14548227ca | ||
|
|
d40cb39616 | ||
|
|
92ead5fab3 | ||
|
|
15197eb09b | ||
|
|
fe4bdcd71b | ||
|
|
6bb8c46d9a | ||
|
|
157257b072 | ||
|
|
c45e645d6c | ||
|
|
972119bff3 | ||
|
|
54e4ef657c | ||
|
|
9c8b9fc733 | ||
|
|
cbd0511a56 | ||
|
|
978f7eb44a | ||
|
|
acbabedac9 | ||
|
|
e0584bb818 | ||
|
|
1493160f26 | ||
|
|
b304868d91 | ||
|
|
667a9328fb | ||
|
|
cac1218eef | ||
|
|
654bdde8ed | ||
|
|
5101a7fc00 | ||
|
|
d5c99a07b6 | ||
|
|
36db85a94d | ||
|
|
2d81595ed4 | ||
|
|
e8850bf84a | ||
|
|
1576e24c93 | ||
|
|
e89e3066e8 | ||
|
|
e9bb750d4e | ||
|
|
b0a70787e1 | ||
|
|
1a73aa1f6a | ||
|
|
16ab6ec534 | ||
|
|
a3592cd068 | ||
|
|
ad9272e836 | ||
|
|
6f2fea7ea5 | ||
|
|
730ead44fe | ||
|
|
d4f938ed56 | ||
|
|
c4fdf71bb3 | ||
|
|
8f2aaff6d7 | ||
|
|
47e345bcb6 | ||
|
|
a73809e6fc | ||
|
|
66f2e527b6 | ||
|
|
07c0d50edf | ||
|
|
ea2228774d | ||
|
|
ea1b14ee95 | ||
|
|
3858f2291d | ||
|
|
09bcc061dd | ||
|
|
b6769c9db1 | ||
|
|
3ece65ad62 | ||
|
|
6d4c4dcd94 | ||
|
|
4f1d06d14a | ||
|
|
87f4b47a4f | ||
|
|
e89cee35e5 | ||
|
|
0528d2e2b3 | ||
|
|
c23da52564 | ||
|
|
44ffa42064 | ||
|
|
007593cab7 | ||
|
|
863784efc6 | ||
|
|
6952b90ed0 | ||
|
|
eeddda4701 | ||
|
|
01a98fae93 | ||
|
|
6e0d77469a | ||
|
|
07446ec954 | ||
|
|
7688a18264 | ||
|
|
655465d9f8 | ||
|
|
eb54c83985 | ||
|
|
d9daa0cbaa | ||
|
|
6d6ad1b1d9 | ||
|
|
b32fbe72f6 | ||
|
|
acebfcd24f | ||
|
|
65953fe39a | ||
|
|
ea6da6ee95 | ||
|
|
9391ccfe35 | ||
|
|
4c7ed03b5f | ||
|
|
c41a134394 | ||
|
|
ce5bae1c67 | ||
|
|
06fb5da7c8 | ||
|
|
dcaa8735ba | ||
|
|
13db948023 | ||
|
|
82da445a15 | ||
|
|
a7036d9668 | ||
|
|
1db9cc3f0d | ||
|
|
04628d770c | ||
|
|
93712e913a | ||
|
|
606df0469a | ||
|
|
9bf296eeb0 | ||
|
|
c424d36041 | ||
|
|
7391df386f | ||
|
|
6550c4f682 | ||
|
|
6dd658a0af | ||
|
|
f269a89792 | ||
|
|
758a1eb63d | ||
|
|
504bc7634a | ||
|
|
d5244eb645 | ||
|
|
724f5e7f19 | ||
|
|
54292a8376 | ||
|
|
e1e243588e | ||
|
|
45f21e4f12 | ||
|
|
2c134318f7 | ||
|
|
41ceadf9ed | ||
|
|
afe6b66d33 | ||
|
|
052c8516a8 | ||
|
|
ad7440c014 | ||
|
|
7ccbe10970 | ||
|
|
316c044e06 | ||
|
|
f1e24381d1 | ||
|
|
b2c2aabd04 | ||
|
|
14671e0cd6 | ||
|
|
055adc2302 | ||
|
|
feeb386bf3 | ||
|
|
b3655233f1 | ||
|
|
88ceee05c6 | ||
|
|
33239fca70 | ||
|
|
96ce9810a9 | ||
|
|
c9528b3952 | ||
|
|
eeaa4b3665 | ||
|
|
c072c28e28 | ||
|
|
071daa1d8f | ||
|
|
bf39f694ea | ||
|
|
03f665e870 | ||
|
|
91201b225a | ||
|
|
9edd24fe51 | ||
|
|
556206de2d | ||
|
|
e0f40a7f4a | ||
|
|
8681b52dba | ||
|
|
634da9f3bf | ||
|
|
659d21332e | ||
|
|
0b2cafb08b | ||
|
|
cf72d2695c | ||
|
|
278616bada | ||
|
|
ff6f5d4d24 | ||
|
|
ed1c56e063 | ||
|
|
150dd39b08 | ||
|
|
3a35ca5190 | ||
|
|
7f2662b310 | ||
|
|
5403bdd228 | ||
|
|
2040995801 | ||
|
|
1a7a262f74 | ||
|
|
e430ab1a58 | ||
|
|
ea417ac04a | ||
|
|
fd5a8b3e97 | ||
|
|
f30301d171 | ||
|
|
15b6fd2ec4 | ||
|
|
5d924b7a75 | ||
|
|
0c0ebca855 | ||
|
|
8a5f2781fc | ||
|
|
3f485d58bb | ||
|
|
a42259421c | ||
|
|
b327312bd3 | ||
|
|
47f1026ce0 | ||
|
|
405f12fe80 | ||
|
|
6d3413bc6a | ||
|
|
c2ca059baf | ||
|
|
ab9dff12d5 | ||
|
|
ee8adc10a1 | ||
|
|
a49ea6d066 | ||
|
|
85edb9e9b1 | ||
|
|
f0887a99e2 | ||
|
|
bd12d64641 | ||
|
|
108527c951 | ||
|
|
607cd37b48 | ||
|
|
2cc4cf3644 | ||
|
|
518d0df201 | ||
|
|
93af92c878 | ||
|
|
5e8a3cde94 | ||
|
|
26b73a7bbd | ||
|
|
530fc99947 | ||
|
|
72385979c4 | ||
|
|
c836613bad | ||
|
|
e224e72bbc | ||
|
|
ab428c9dbd | ||
|
|
67bb1c6a70 | ||
|
|
17956a5ae5 | ||
|
|
fc2f79701d | ||
|
|
a049c16ca7 | ||
|
|
33087f9eaa | ||
|
|
62533d0d26 | ||
|
|
abe37659cc | ||
|
|
78badcd651 | ||
|
|
89e4118b30 | ||
|
|
17d6083e01 | ||
|
|
ce1b6e2137 | ||
|
|
d4a1936c2d | ||
|
|
80470f9cf6 | ||
|
|
7f818e9bc3 | ||
|
|
6126788535 | ||
|
|
2e2ca58b70 | ||
|
|
d210132b99 | ||
|
|
316e6a8f2b | ||
|
|
776728ef2a | ||
|
|
d156f5af6d | ||
|
|
67e9708621 | ||
|
|
a8608bd0ac | ||
|
|
f57f39276a | ||
|
|
f0e3940558 | ||
|
|
c52a77b90f | ||
|
|
579499d900 | ||
|
|
002a79bfc4 | ||
|
|
7804d57f8b | ||
|
|
33173d900a | ||
|
|
437927b7bb | ||
|
|
5a268dd27c | ||
|
|
68883775fb | ||
|
|
153ac43d3b | ||
|
|
3ab3367310 | ||
|
|
c9db91ace5 | ||
|
|
df9c75b270 | ||
|
|
40eea303ec | ||
|
|
68165b1af0 | ||
|
|
8e54845049 | ||
|
|
b4498d1d48 | ||
|
|
63584bffda | ||
|
|
04433b2d2b | ||
|
|
169351b01d | ||
|
|
cfabf32492 | ||
|
|
48d82fd911 | ||
|
|
a8bfab3cb7 | ||
|
|
6667cea0f4 | ||
|
|
72727111c7 | ||
|
|
47b092e527 | ||
|
|
4a37ac303a | ||
|
|
50fa809a96 | ||
|
|
5022a0fae3 | ||
|
|
ec3c68c8ea | ||
|
|
bd5e4c6c49 | ||
|
|
15738bf7ef | ||
|
|
5ee398bfd6 | ||
|
|
0a2d22bf31 | ||
|
|
ab2749d648 | ||
|
|
4910242732 | ||
|
|
52ba76143c | ||
|
|
c83455d8a4 | ||
|
|
0f7fbe4458 | ||
|
|
c43e32854a | ||
|
|
7f7064e3b9 | ||
|
|
7249622ce7 | ||
|
|
694d7726b5 | ||
|
|
a0459c2352 | ||
|
|
6598b97b96 | ||
|
|
c19b6ed20e | ||
|
|
d940093fb5 | ||
|
|
cf5dd88cf2 | ||
|
|
fa1ed5580d | ||
|
|
73bfcf856d | ||
|
|
0e1b37675c | ||
|
|
7032a5a46c | ||
|
|
ab1a37d564 | ||
|
|
31291ced11 | ||
|
|
3ca7717e17 | ||
|
|
0ec54982b5 | ||
|
|
3d7a457c97 | ||
|
|
c6113c6cb3 | ||
|
|
8bd1efa523 | ||
|
|
934cb6c452 | ||
|
|
f01bd6f978 | ||
|
|
165789bfcd | ||
|
|
9eac451a3a | ||
|
|
cba5235f08 | ||
|
|
f0b0d4e867 | ||
|
|
fa292c3d8d | ||
|
|
c5b4b99350 | ||
|
|
9a371de93b | ||
|
|
1e46a99d9f | ||
|
|
eb1dd1900b | ||
|
|
c7dc884855 | ||
|
|
8ecb8c6a3d | ||
|
|
033aebe668 | ||
|
|
ada2879faa | ||
|
|
f3440888ef | ||
|
|
ce0b808e3c | ||
|
|
a52979c37f | ||
|
|
2756ae2051 | ||
|
|
cafcfc4d0f | ||
|
|
00e3c246fe | ||
|
|
f1e44fa5ca | ||
|
|
f13e05cdcb | ||
|
|
46d672dcc3 | ||
|
|
12e1d7fc2b | ||
|
|
ed5d71b45f | ||
|
|
6f798b1ba7 | ||
|
|
dd67ea0210 | ||
|
|
4612b4b827 | ||
|
|
d16e0b377f | ||
|
|
f64dfeb222 | ||
|
|
87972d0d7c | ||
|
|
ea5b411c0f | ||
|
|
313a0ad255 | ||
|
|
1e5694e082 | ||
|
|
120b3a1e77 | ||
|
|
1f638a3e5b | ||
|
|
e1b5a547cc | ||
|
|
7ac5c367e9 | ||
|
|
e2558e5ee5 | ||
|
|
03db61b33b | ||
|
|
029a8c443a | ||
|
|
a068ccbf51 | ||
|
|
616c348536 | ||
|
|
3a8e15fad9 | ||
|
|
c4e49463a9 | ||
|
|
b42c268164 | ||
|
|
1a5fcd715d | ||
|
|
eba1be711c | ||
|
|
4e7f62fd24 | ||
|
|
a82dd8ce48 | ||
|
|
eb240cc206 | ||
|
|
11b01cd8b9 | ||
|
|
df9aa8898d | ||
|
|
35eb972e9a | ||
|
|
72e095b8a5 | ||
|
|
07d5f56707 | ||
|
|
3ccaa5294e | ||
|
|
9c780260c2 | ||
|
|
849228ac6a | ||
|
|
9e47672b2b | ||
|
|
d54aa307fd | ||
|
|
abf905154f | ||
|
|
1ad69aba35 | ||
|
|
0e1bf58195 | ||
|
|
b1443bc1bc | ||
|
|
f6a8ac2f6c | ||
|
|
12279e2631 | ||
|
|
01f31dc007 | ||
|
|
e362c3fb38 | ||
|
|
03b1d133df | ||
|
|
220de14077 | ||
|
|
4ffeb01cfd | ||
|
|
e9be486534 | ||
|
|
787815fd00 | ||
|
|
87210690c2 | ||
|
|
a5378186e5 | ||
|
|
d9d9de75db | ||
|
|
347d5b96f3 | ||
|
|
eda084e123 | ||
|
|
c35fd55b0e | ||
|
|
fa075c50a1 | ||
|
|
2d47dd7038 | ||
|
|
e7e00201f1 | ||
|
|
9fc90f4069 | ||
|
|
2df7242646 | ||
|
|
30f73623ce | ||
|
|
3e51da38fb | ||
|
|
71f871fafd | ||
|
|
4ebe76098e | ||
|
|
c80faff42f | ||
|
|
c9103730b6 | ||
|
|
ab1ef08f0e | ||
|
|
4509fe55c2 | ||
|
|
2daa14e3c7 | ||
|
|
e8d3ebecc7 | ||
|
|
b62e59aac0 | ||
|
|
5658ba0002 | ||
|
|
dacf63a888 | ||
|
|
0f22df2b0d | ||
|
|
06746ba645 | ||
|
|
043b917c7d | ||
|
|
cbf3c1fbf1 | ||
|
|
a134e068ef | ||
|
|
c1bf453266 | ||
|
|
c68cbfced3 | ||
|
|
0e3bbd7026 | ||
|
|
a941d25f6d | ||
|
|
5662294319 | ||
|
|
599bcfb591 | ||
|
|
cc0a94c536 | ||
|
|
507ea95265 | ||
|
|
2162aab0e9 | ||
|
|
f9d3c49023 | ||
|
|
f9422f60a6 | ||
|
|
16629bff4c | ||
|
|
6880dbfd95 | ||
|
|
3c596184e4 | ||
|
|
f97e38d8a6 | ||
|
|
26c8b3a38e | ||
|
|
649935596e | ||
|
|
0e5b0677c9 | ||
|
|
5d50917961 | ||
|
|
59876cfb34 | ||
|
|
c6e91e4736 | ||
|
|
86ec0fc813 | ||
|
|
55bbca2d09 | ||
|
|
47d903d968 | ||
|
|
61f79c2632 | ||
|
|
3cfc22ae4e | ||
|
|
f3f0e06c4d | ||
|
|
0e243541f9 | ||
|
|
b046210296 | ||
|
|
ba5bec1de2 | ||
|
|
eada0f4b48 | ||
|
|
503bd38963 | ||
|
|
59250e8288 | ||
|
|
de55126b69 | ||
|
|
e6420bde73 | ||
|
|
d37220e8ff | ||
|
|
d8c9bb777e | ||
|
|
4bf1df7da3 | ||
|
|
7bd9b2ac26 | ||
|
|
3bd364fce3 | ||
|
|
a13e6ab79f | ||
|
|
232c37e827 | ||
|
|
7ee1d5f69b | ||
|
|
10d1b3a534 | ||
|
|
86888bdf77 | ||
|
|
3e24822fff | ||
|
|
33b9e4b4a3 | ||
|
|
36db97068c | ||
|
|
32b25de583 | ||
|
|
6b2c621d20 | ||
|
|
dc91be86b2 | ||
|
|
5580d08c6e | ||
|
|
46e8d9d02d | ||
|
|
1909978f7d | ||
|
|
82a198a8f2 | ||
|
|
22d3faaeb9 | ||
|
|
c20cab9ec1 | ||
|
|
2421ac3958 | ||
|
|
6d500cc6f7 | ||
|
|
d27ed856f2 | ||
|
|
1f8b41f390 | ||
|
|
dcc4d3640b | ||
|
|
8114e071c2 | ||
|
|
2d71c094b3 | ||
|
|
d93161812b | ||
|
|
f3d1001c5d | ||
|
|
751264f88a | ||
|
|
9badfa1f83 | ||
|
|
ba0ab8edb0 | ||
|
|
c2319285a9 | ||
|
|
92f855f0c3 | ||
|
|
01123aaa36 | ||
|
|
493679dc56 | ||
|
|
e42057c487 | ||
|
|
cd01d705c9 | ||
|
|
5c0a4878d7 | ||
|
|
dfe6adebb9 | ||
|
|
580559e1e6 | ||
|
|
640c9667c7 | ||
|
|
51e2a8ec96 | ||
|
|
e68a55cca2 | ||
|
|
46e40343f2 | ||
|
|
caf3ed284d | ||
|
|
9cdb330452 | ||
|
|
4211d8fbd9 | ||
|
|
6b986489ec | ||
|
|
34afc72c23 | ||
|
|
6823b36974 | ||
|
|
f5c729396d | ||
|
|
7c3d5b056a | ||
|
|
bb12293251 | ||
|
|
42079b899c | ||
|
|
3d7872b904 | ||
|
|
4db12032dc | ||
|
|
b4830d896c | ||
|
|
0265247504 | ||
|
|
d9ef5bb5a7 | ||
|
|
f52126725f | ||
|
|
d97f7da7a9 | ||
|
|
fe644ede19 | ||
|
|
9cc80a68db | ||
|
|
76c415ff49 | ||
|
|
04abffeb16 | ||
|
|
8603c58f37 | ||
|
|
0b678c2451 | ||
|
|
3bd8211a72 | ||
|
|
f7ec4a5c47 | ||
|
|
8d24a83c9c | ||
|
|
5ca3d855a2 | ||
|
|
8da0e2b707 | ||
|
|
d453a598f8 | ||
|
|
3e173b701e | ||
|
|
6a6f24b170 | ||
|
|
650762419c | ||
|
|
d17f40dc1f | ||
|
|
32394df42d | ||
|
|
79384beb60 | ||
|
|
160c964e4b | ||
|
|
baa6ab1967 | ||
|
|
82c67abbfa | ||
|
|
39b852f51d | ||
|
|
9a109440df | ||
|
|
aa5767421a | ||
|
|
1f6b719776 | ||
|
|
26e8c6216f | ||
|
|
d5513f522b | ||
|
|
cb8743f9aa | ||
|
|
4f4a95299a | ||
|
|
6202f54a18 | ||
|
|
05a47d9014 | ||
|
|
87eb1b8fcc | ||
|
|
da58425fbc | ||
|
|
6f9ca3d77c | ||
|
|
ce0941160e | ||
|
|
2cd7a913ed | ||
|
|
f3c56f8310 | ||
|
|
e18224110c | ||
|
|
3e5a69d8ba | ||
|
|
dba0f9fc8f | ||
|
|
9e10c09f2d | ||
|
|
a7d12aabab | ||
|
|
793e980876 | ||
|
|
e11d998cfb | ||
|
|
ef2f5999ed | ||
|
|
8230f1fd68 | ||
|
|
f218dffce6 | ||
|
|
10cb660240 | ||
|
|
e13e3be16e | ||
|
|
84257b57d0 | ||
|
|
c2f540d090 | ||
|
|
80ef1f6753 | ||
|
|
a26bed16e6 | ||
|
|
dab8e920b0 | ||
|
|
3bb6db522d | ||
|
|
aa3c36f545 | ||
|
|
7942494fb6 | ||
|
|
20aaa8fe77 | ||
|
|
92db6786a9 | ||
|
|
4eede18027 | ||
|
|
9cdd15e141 | ||
|
|
534f9623f2 | ||
|
|
3553e9379b | ||
|
|
36d33dd6c2 | ||
|
|
ebbac3c66d | ||
|
|
8176e893c0 | ||
|
|
5ff59af09d | ||
|
|
f4c5679db8 | ||
|
|
53bc93730c | ||
|
|
799d2dabd6 | ||
|
|
884b706b3a | ||
|
|
ad7f2311c0 | ||
|
|
2a051a124f | ||
|
|
5522c14efc | ||
|
|
57992e0169 | ||
|
|
fd5e180657 | ||
|
|
265148b974 | ||
|
|
cb4fffc72a | ||
|
|
c0dbc083ea | ||
|
|
65f63421fa | ||
|
|
a28ad40c2a | ||
|
|
f318b5bc9d | ||
|
|
1638341270 | ||
|
|
befdef9685 | ||
|
|
512cb4fced | ||
|
|
d2b4ee1e9b | ||
|
|
06df383675 | ||
|
|
3a1a3da782 | ||
|
|
f104d5be8c | ||
|
|
fd90efc9dd | ||
|
|
047d285b7d | ||
|
|
19d470749b | ||
|
|
925178749a | ||
|
|
3578f0afe9 | ||
|
|
588658d1a3 | ||
|
|
026b13b3db | ||
|
|
e6cc1be7e8 | ||
|
|
06738468af | ||
|
|
c22d92c1cb | ||
|
|
a7f69a37e3 | ||
|
|
c4a31a1ab1 | ||
|
|
7a5c1babde | ||
|
|
2737e3c99b | ||
|
|
c1ea6f3c42 | ||
|
|
89e3e448f5 | ||
|
|
1d9808e5d5 | ||
|
|
8b6c5ade0e | ||
|
|
6bfbcf02cb | ||
|
|
f7f4593936 | ||
|
|
7ae547a208 | ||
|
|
b56dce3965 | ||
|
|
8fd11f477b | ||
|
|
e032b5f5d5 | ||
|
|
b59c517f98 | ||
|
|
47d4f8cd61 | ||
|
|
b970ec7dae | ||
|
|
43c29a6751 | ||
|
|
7369cfd9ec | ||
|
|
f417c79d16 | ||
|
|
604a64b206 | ||
|
|
a0bf7f82ba | ||
|
|
b5755b1228 | ||
|
|
b2379b51b5 | ||
|
|
34984328fd | ||
|
|
d9556a998f | ||
|
|
2f9dad5ce8 | ||
|
|
18ef25ec30 | ||
|
|
785acc1834 | ||
|
|
03773cb117 | ||
|
|
7b366df822 | ||
|
|
cd02a7002b | ||
|
|
ab691a4a24 | ||
|
|
0d477ffea1 | ||
|
|
1461ab41bc | ||
|
|
b6d58d1d3b | ||
|
|
d9013a85f1 | ||
|
|
8899ec1586 | ||
|
|
ced81b9121 | ||
|
|
e9bc737485 | ||
|
|
e6d6a3a85b | ||
|
|
bcd7151867 | ||
|
|
e013f04669 | ||
|
|
96484e1ad7 | ||
|
|
4a63b3dd90 | ||
|
|
a66db67b83 | ||
|
|
35494f81ef | ||
|
|
6119ae0ea9 | ||
|
|
629ddf0bf8 | ||
|
|
bea2515f0e | ||
|
|
8592022bd8 | ||
|
|
838bb4bdeb | ||
|
|
444ab0ef0d | ||
|
|
c735594178 | ||
|
|
fd3a6f0db7 | ||
|
|
a624ec167d | ||
|
|
b72b256fda | ||
|
|
b56b9c43dc | ||
|
|
77723db034 | ||
|
|
f2a35d6388 | ||
|
|
c6f208e1c8 | ||
|
|
ed1ca00bf6 | ||
|
|
bf860dbb31 | ||
|
|
49d1691a3e | ||
|
|
c224cfa628 | ||
|
|
2c0c887f70 | ||
|
|
5ddff235bb | ||
|
|
46cb4e0cbc | ||
|
|
f1b38c4198 | ||
|
|
e090aa07db | ||
|
|
d60be58a92 | ||
|
|
3cd50739ef | ||
|
|
5600bc54f4 | ||
|
|
ac92d4c701 | ||
|
|
1b339eb0d4 | ||
|
|
42d45e0b02 | ||
|
|
aa5326c231 | ||
|
|
a6ef45aa13 | ||
|
|
9828cd6086 | ||
|
|
f23134ce01 | ||
|
|
9ec823d800 | ||
|
|
f9c5289483 | ||
|
|
6f055d7a76 | ||
|
|
616ec74beb | ||
|
|
7badc85b60 | ||
|
|
2d54581971 | ||
|
|
f690440533 | ||
|
|
4f2b126b7b | ||
|
|
268c0caa7a | ||
|
|
e8f79d6e1f | ||
|
|
dbdc476b79 | ||
|
|
38913bf5f6 | ||
|
|
67484e027b | ||
|
|
566f783968 | ||
|
|
23e1b50837 | ||
|
|
06acb8b0ee | ||
|
|
be29d628d3 | ||
|
|
4512d06484 | ||
|
|
824ed8a3ae | ||
|
|
1b3651d8ee | ||
|
|
eb8c531791 | ||
|
|
188c506237 | ||
|
|
ec6f977783 | ||
|
|
a9a0ea3706 | ||
|
|
c321330777 | ||
|
|
ad23ef2a42 | ||
|
|
9d138b2bbe | ||
|
|
c29583eacc | ||
|
|
ee2df645f4 | ||
|
|
9b6feee1a5 | ||
|
|
a6b53489e6 | ||
|
|
aece433b15 | ||
|
|
c65e5a1e7b | ||
|
|
b3db990daa | ||
|
|
07e84c635a | ||
|
|
06434bedfd | ||
|
|
3b03044047 | ||
|
|
58de8bc917 | ||
|
|
01a66a2938 | ||
|
|
c2f859569c | ||
|
|
def4f5e2a3 | ||
|
|
1dba47b77b | ||
|
|
572e4f5255 | ||
|
|
5848e75168 | ||
|
|
17f305140b | ||
|
|
137ff7eccb | ||
|
|
703e012a5b | ||
|
|
7a59435490 | ||
|
|
d1710a8547 | ||
|
|
4ca695cab0 | ||
|
|
5a3200d513 | ||
|
|
9a3895d842 | ||
|
|
c747426fc1 | ||
|
|
271f60ba7a | ||
|
|
bfc546d23c | ||
|
|
037ac27ec8 | ||
|
|
fc10ffefb8 | ||
|
|
2cf3a6e26c | ||
|
|
a3825acee4 | ||
|
|
2aab7b2926 | ||
|
|
c165f07319 | ||
|
|
7daec9e9a8 | ||
|
|
2cd51c04e4 | ||
|
|
48df67a9c5 | ||
|
|
bdc91c66c9 | ||
|
|
fa2d79a15b | ||
|
|
6ef94b52ad | ||
|
|
7f671406db | ||
|
|
aa3c4ae5d2 | ||
|
|
31f864a22b | ||
|
|
d170faeb5c | ||
|
|
6c2d77079f | ||
|
|
322b15a459 | ||
|
|
10a52220f0 | ||
|
|
c53398a438 | ||
|
|
5acd178790 | ||
|
|
f77c68e0fa | ||
|
|
e1efed1914 | ||
|
|
4c5de04efb | ||
|
|
d17142b83d | ||
|
|
75534a4828 | ||
|
|
d6b54ff9d1 | ||
|
|
e055b68ceb | ||
|
|
0b4534d4c9 | ||
|
|
0c1ab50643 | ||
|
|
1ab8060b62 | ||
|
|
41b8ab086b | ||
|
|
da34f1d58c | ||
|
|
4b71921526 | ||
|
|
e34a7caabc | ||
|
|
4ceaf44fa0 | ||
|
|
6f5800e7df | ||
|
|
5005f5e88e | ||
|
|
c764e0f114 | ||
|
|
9f1b20a794 | ||
|
|
61c22d5899 | ||
|
|
fc696a9ff3 | ||
|
|
6f190bb907 | ||
|
|
068b1bc3d0 | ||
|
|
3488fdcb43 | ||
|
|
569e1346f2 | ||
|
|
04c857a4e8 | ||
|
|
a2f8a93bf5 | ||
|
|
6c12f20395 | ||
|
|
f7d6d3cff5 | ||
|
|
491b84d463 | ||
|
|
d67b450741 | ||
|
|
8c39b4e8b6 | ||
|
|
46ba9d30b9 | ||
|
|
b211e1d989 | ||
|
|
70fdfa0bdb | ||
|
|
d63a8ba018 | ||
|
|
6bd7a444bc | ||
|
|
f1c8b4b965 | ||
|
|
953aafbd3d | ||
|
|
f38fe76025 | ||
|
|
da7a605224 | ||
|
|
c6199fc3c1 | ||
|
|
85cf2d9671 | ||
|
|
67926fa028 | ||
|
|
ede6d4482b | ||
|
|
9e1124d24a | ||
|
|
ba2eee9cbd | ||
|
|
cc05493730 | ||
|
|
9c5745383f | ||
|
|
061a25447e | ||
|
|
c2355d3a12 | ||
|
|
e2c6ab0166 | ||
|
|
b6833fdde7 | ||
|
|
a51ab99a79 | ||
|
|
e19c42dded | ||
|
|
8f5fd44fb2 | ||
|
|
6ba60a1e22 | ||
|
|
623b1db8d1 | ||
|
|
d8c018289a | ||
|
|
157f35ef29 | ||
|
|
0a5d6e10b9 | ||
|
|
f368b27f0a | ||
|
|
a3668f1369 | ||
|
|
8ac93f9b6b | ||
|
|
ef9669ba1a | ||
|
|
79fc3a6203 | ||
|
|
7193762d2d | ||
|
|
d18ebfa8e8 | ||
|
|
2875ce60ea | ||
|
|
3572ee278e | ||
|
|
722c0fea41 | ||
|
|
4e851f5050 | ||
|
|
0bd4fd3a87 | ||
|
|
b7198ccf1c | ||
|
|
d060d30fa0 | ||
|
|
bdfd29a0b8 | ||
|
|
80a40ae3d7 | ||
|
|
2299e2ed1b | ||
|
|
87ae0f9990 | ||
|
|
63d8a61b9b | ||
|
|
b14c314fc3 | ||
|
|
eb8b4c58c7 | ||
|
|
65d64af2a8 | ||
|
|
291458a859 | ||
|
|
30a8308f8e | ||
|
|
b449b0bf71 | ||
|
|
b73490f86c | ||
|
|
a2dec6c34e | ||
|
|
f9f730c426 | ||
|
|
04884ebf45 | ||
|
|
d1cfcfcafd | ||
|
|
8d97d0d631 | ||
|
|
a43ef9a6cd | ||
|
|
b70332d806 | ||
|
|
6e44f05e6f | ||
|
|
eebf92ba58 | ||
|
|
6fe71bd27c | ||
|
|
ae2b0b0098 | ||
|
|
b9cdde6991 | ||
|
|
82e6edfba2 | ||
|
|
6890aa0033 | ||
|
|
40a740ff88 | ||
|
|
dc28451b8a | ||
|
|
2a1d5c6d43 | ||
|
|
af062b7c42 | ||
|
|
1a43ed9893 | ||
|
|
7ce2ca2e0c | ||
|
|
9cafd50160 | ||
|
|
755ca4b7cf | ||
|
|
dd6cf15a39 | ||
|
|
bcb938efbb | ||
|
|
c72a0a1295 | ||
|
|
6b434befc9 | ||
|
|
af1084eb58 | ||
|
|
91e4334227 | ||
|
|
18a59b48ba | ||
|
|
ddc235172e | ||
|
|
a5d989f346 | ||
|
|
799d7e7a50 | ||
|
|
0904f10ab5 | ||
|
|
bfc843a5f5 | ||
|
|
b5f717b6b3 | ||
|
|
6f12f1b3b5 | ||
|
|
6be7869ae8 | ||
|
|
4a4151ec97 | ||
|
|
4698d62125 | ||
|
|
8910508b83 | ||
|
|
b47bec2ed0 | ||
|
|
4fafab3786 | ||
|
|
42e604abea | ||
|
|
3e854fa6e5 | ||
|
|
0ce8f1d5dd | ||
|
|
c5bf1c108c | ||
|
|
4233539617 | ||
|
|
a6c40abfb2 | ||
|
|
0764a23eb2 | ||
|
|
6b6cfa893d | ||
|
|
48196ad10b | ||
|
|
b96762a48f | ||
|
|
553673eeed | ||
|
|
fd8f2c8d23 | ||
|
|
290b93422c | ||
|
|
9932cf41a4 | ||
|
|
dca401d4cc | ||
|
|
bbe8654c3d | ||
|
|
4f5896493e | ||
|
|
f138b613b7 | ||
|
|
5252aa8fdd | ||
|
|
89b7c0dd93 | ||
|
|
2755ae5df9 | ||
|
|
95a55453df | ||
|
|
702a2a6ff6 | ||
|
|
5261fbe217 | ||
|
|
90c5dde887 | ||
|
|
9b31e6cd44 | ||
|
|
fd0ab8eba1 | ||
|
|
e7475bff68 | ||
|
|
e4608229f0 | ||
|
|
786e3b9eee | ||
|
|
208831eb5d | ||
|
|
efdfca7a11 | ||
|
|
70e22b682d | ||
|
|
06c138bd64 | ||
|
|
193e97a34a | ||
|
|
2879ff2098 | ||
|
|
5dbe73f94d | ||
|
|
182d74d33f | ||
|
|
451be9ed53 | ||
|
|
3cb49eac49 | ||
|
|
8f3492851e | ||
|
|
8660588fe9 | ||
|
|
eb2e8a11fa | ||
|
|
75ed2f52f1 | ||
|
|
0e2cc5ef63 | ||
|
|
d1d451c952 | ||
|
|
2f0fe5b87b | ||
|
|
f21a94880e | ||
|
|
8e1918e86e | ||
|
|
dc76e6b4a1 | ||
|
|
4a7289b22f | ||
|
|
d9c5fbc9ba | ||
|
|
1291bd1c4a | ||
|
|
f404315368 | ||
|
|
66ed6a8a50 | ||
|
|
86a3ed4162 | ||
|
|
42f9ee3f3e | ||
|
|
c1dad2178c | ||
|
|
d4a1df85be | ||
|
|
f9e942f9ef | ||
|
|
a80ebfe28d | ||
|
|
0a3aca230c | ||
|
|
c9d8025fab | ||
|
|
c00f0faf24 | ||
|
|
5527f2872d | ||
|
|
0692a674d1 | ||
|
|
5c867463d2 | ||
|
|
72d5609a36 | ||
|
|
90920c2376 | ||
|
|
050cca0422 | ||
|
|
7ecbf45751 | ||
|
|
4376de7698 | ||
|
|
be5b5a0471 | ||
|
|
db85c35e69 | ||
|
|
68957b2757 | ||
|
|
37580687e6 | ||
|
|
68edda3350 | ||
|
|
b9d68ef061 | ||
|
|
57b6850d74 | ||
|
|
bd5d8404c9 | ||
|
|
ba5ebaa758 | ||
|
|
7a68e3d207 | ||
|
|
693129902d | ||
|
|
a3aced20c1 | ||
|
|
c9a4a82667 | ||
|
|
ce0557ebb8 | ||
|
|
45cc8a5300 | ||
|
|
48432502b6 | ||
|
|
3693facd9e | ||
|
|
fe38aab84a | ||
|
|
31fb7c4fec | ||
|
|
48e7bc6b30 | ||
|
|
ff8b8ef24c | ||
|
|
540a60fca7 | ||
|
|
653b99c9bd | ||
|
|
67cf0dabea | ||
|
|
e75a257f92 | ||
|
|
73dfc4cb8c | ||
|
|
3845b96f6c | ||
|
|
52a339cba5 | ||
|
|
0f43345f9e | ||
|
|
16bfdbd22a | ||
|
|
6d83048ec3 | ||
|
|
8f6ebc2427 | ||
|
|
32eb38ec98 | ||
|
|
0406898b9a | ||
|
|
0ef16125ae | ||
|
|
fd4461d543 | ||
|
|
0a90d6dde6 | ||
|
|
51dafc780b | ||
|
|
9b3c76a3db | ||
|
|
c7857e8c13 | ||
|
|
347a3dc520 | ||
|
|
9c5bd85247 | ||
|
|
b96923d5fa | ||
|
|
f04a158268 | ||
|
|
804b70b72f | ||
|
|
7b552c0493 | ||
|
|
ea7b1bb3d2 | ||
|
|
cd68cd43a2 | ||
|
|
10f2a038c2 | ||
|
|
e013d31715 | ||
|
|
7e4dea968c | ||
|
|
ad66233774 | ||
|
|
61976b8461 | ||
|
|
79eba54a4f | ||
|
|
ddd3c062b5 | ||
|
|
fa0599448d | ||
|
|
b939b4ae3b | ||
|
|
8bf616e4c7 | ||
|
|
634e8d37cc | ||
|
|
bf4f15fb5f | ||
|
|
7faf1f6277 | ||
|
|
ccbceb56c4 | ||
|
|
cfc4621587 | ||
|
|
72c327fef8 | ||
|
|
3782c324c4 | ||
|
|
38cbe9873a | ||
|
|
9db28f332a | ||
|
|
891dbeabba | ||
|
|
d27068f79a | ||
|
|
e16d89e8d6 | ||
|
|
edbff68843 | ||
|
|
b3cfe6b446 | ||
|
|
ff9a0815b9 | ||
|
|
2409812803 | ||
|
|
139a262072 | ||
|
|
bcf4307345 | ||
|
|
768da4d95a | ||
|
|
afd99c9c81 | ||
|
|
0d199b4048 | ||
|
|
44ecb727c5 | ||
|
|
6ad7b64912 | ||
|
|
9885a671ee | ||
|
|
47d9b933f6 | ||
|
|
aeeb9f9e25 | ||
|
|
a879e1fcd6 | ||
|
|
01b225acb0 | ||
|
|
613a17355d | ||
|
|
029ffb7c2d | ||
|
|
a6d64e254f | ||
|
|
f60913ddd3 | ||
|
|
9211d1ac2d | ||
|
|
640a45d359 | ||
|
|
a0bb74a086 | ||
|
|
cfcf07acfa | ||
|
|
947fb74c18 | ||
|
|
f252687eae | ||
|
|
f85aa929f1 | ||
|
|
70d462b352 | ||
|
|
f74ef644bc | ||
|
|
1a89a03c7c | ||
|
|
10465c546a | ||
|
|
c8e22c04c8 | ||
|
|
7629bb78a4 | ||
|
|
72e4f72a75 | ||
|
|
9b627a5e9f | ||
|
|
7ce2c3574a | ||
|
|
4f36bc29d9 | ||
|
|
915fb632fd | ||
|
|
8150c1b7e4 | ||
|
|
3542da7167 | ||
|
|
0fc248fb70 | ||
|
|
95e38e457f | ||
|
|
8829e9f6c8 | ||
|
|
f3f8b843b6 | ||
|
|
88f993dbda | ||
|
|
534bec3a90 | ||
|
|
d68c688f22 | ||
|
|
3def7778dc | ||
|
|
6b00c4e337 | ||
|
|
630bdbf42f | ||
|
|
5f76072c62 | ||
|
|
f297ec55ae | ||
|
|
01b624e359 | ||
|
|
935e36bc72 | ||
|
|
0ee5c34f40 | ||
|
|
7acd28fbea | ||
|
|
a0a3b8b56d | ||
|
|
a4b5641836 | ||
|
|
91587059ad | ||
|
|
290fbc0121 | ||
|
|
a18bc9651d | ||
|
|
863e9c699a | ||
|
|
fa38ea6d50 | ||
|
|
d9a322f606 | ||
|
|
f7620dc7d1 | ||
|
|
bbefc101de | ||
|
|
2806679781 | ||
|
|
4f2cdc9bac | ||
|
|
511e79aef7 | ||
|
|
1cef6f9fb1 | ||
|
|
dad536f490 | ||
|
|
7a35f4593e | ||
|
|
72aabb8a84 | ||
|
|
47a41449e3 | ||
|
|
f7041bacc0 | ||
|
|
2d33063a59 | ||
|
|
3959329ef4 | ||
|
|
3170414ca8 | ||
|
|
a0bfdb9bf1 | ||
|
|
86b6c48712 | ||
|
|
8b16b8b657 | ||
|
|
ce992c8269 | ||
|
|
e371901dd9 | ||
|
|
4b31b9cb8c | ||
|
|
44cc51dfb1 | ||
|
|
710d51bb41 | ||
|
|
9ff5a24f92 | ||
|
|
38f46eb3b4 | ||
|
|
412468e0ae | ||
|
|
7daf26d398 | ||
|
|
af0040eab0 | ||
|
|
b6675ee2a8 | ||
|
|
390fa14a2a | ||
|
|
e190d3fd36 | ||
|
|
563dc5aa38 | ||
|
|
721d0145e0 | ||
|
|
9493a4ec4e | ||
|
|
9f8de69505 | ||
|
|
bdfa9fa14a | ||
|
|
02bf4984cb | ||
|
|
84fa60abb8 | ||
|
|
1aa83d324b | ||
|
|
e6f3c9b0bf | ||
|
|
eb4c2cd59f | ||
|
|
a0ccb46a7f | ||
|
|
b0f617bc01 | ||
|
|
055f41c92a | ||
|
|
2e8579fe9b | ||
|
|
3e0c72a8f7 | ||
|
|
564f5fcca3 | ||
|
|
092d058d06 | ||
|
|
b7ffed7b46 | ||
|
|
38f5c7140c | ||
|
|
c18d1ee2a9 | ||
|
|
c7fe162829 | ||
|
|
d957e8e40d | ||
|
|
42ac3123ec | ||
|
|
83a2b566a3 | ||
|
|
f44334285b | ||
|
|
485635310c | ||
|
|
22146e4b18 | ||
|
|
bd6620fa87 | ||
|
|
49db511882 | ||
|
|
5968b8816e | ||
|
|
c684da3549 | ||
|
|
85d519b6c3 | ||
|
|
8d5e952263 | ||
|
|
da5b316b4e | ||
|
|
92c8b94ba9 | ||
|
|
98b72ff389 | ||
|
|
9dede73d9f | ||
|
|
810dc262ad | ||
|
|
b3a48e1eed | ||
|
|
109e71e4ef | ||
|
|
b5d8f4d5e5 | ||
|
|
7cfb7bc8cd | ||
|
|
3495c5953c | ||
|
|
de4b1c668d | ||
|
|
652a0bd5ce | ||
|
|
11926dafb2 | ||
|
|
30593ee55e | ||
|
|
9a1e461450 | ||
|
|
5c38519c65 | ||
|
|
3ea32b87bb | ||
|
|
9a62df1650 | ||
|
|
91ca834be9 | ||
|
|
0fef7f8b96 | ||
|
|
ffeb223150 | ||
|
|
cc47edb850 | ||
|
|
aa23a842a1 | ||
|
|
13875b5fbc | ||
|
|
a2fcaccf8b | ||
|
|
cb1e4b2ede | ||
|
|
2bbda9d225 | ||
|
|
206df7fdb1 | ||
|
|
82330a51bd | ||
|
|
c967069922 | ||
|
|
e844c08203 | ||
|
|
31b7cdc695 | ||
|
|
1f5007f106 | ||
|
|
0a870faf28 | ||
|
|
19f799ba1e | ||
|
|
02692f9ac0 | ||
|
|
75dde49b64 | ||
|
|
f8dd9960af | ||
|
|
66b2acc8ee | ||
|
|
ec3eb14138 | ||
|
|
a6104bd025 | ||
|
|
6ad4823f0c | ||
|
|
aaa9be7c65 | ||
|
|
b074c67a56 | ||
|
|
983799d398 | ||
|
|
0ebb3ab0ea | ||
|
|
c909a21035 | ||
|
|
25d2ab8a68 | ||
|
|
6925dbd9f9 | ||
|
|
5894f82f14 | ||
|
|
b0befeb1b3 | ||
|
|
c01e8e9361 | ||
|
|
2c35438771 | ||
|
|
09b55a77c8 | ||
|
|
82bab2b03b | ||
|
|
0b57d3717f | ||
|
|
b104b04d53 | ||
|
|
e8d66f5cb7 | ||
|
|
9300af90cd | ||
|
|
d15bf6261a | ||
|
|
50cf152977 | ||
|
|
0f168936a0 | ||
|
|
9041c31813 | ||
|
|
1f3206af70 | ||
|
|
69630ee9d9 | ||
|
|
68f5dd4170 | ||
|
|
b7f2b671a2 | ||
|
|
f756171f7b | ||
|
|
8782eb8657 | ||
|
|
b90f82e61f | ||
|
|
be7eb72051 | ||
|
|
77bbd65fa6 | ||
|
|
66cc440c82 | ||
|
|
1ab1594d00 | ||
|
|
2cd22a3ca3 | ||
|
|
e6f86ea39d | ||
|
|
372cdac07c | ||
|
|
d950adc0d2 | ||
|
|
14b1e8c7f1 | ||
|
|
231bc17de7 | ||
|
|
1862dbc5ab | ||
|
|
0d19cbcc7a | ||
|
|
86353eb541 | ||
|
|
6d64907f18 | ||
|
|
6fa41c5a64 | ||
|
|
faa6074f3d | ||
|
|
384a28622d | ||
|
|
6fa49f6e80 | ||
|
|
f91f55927e | ||
|
|
afa62c4161 | ||
|
|
9b9eadc941 | ||
|
|
97092e31bc | ||
|
|
96b6f338e1 | ||
|
|
7c96d98a24 | ||
|
|
17c6b4d306 | ||
|
|
41bc5808c0 | ||
|
|
5474935a81 | ||
|
|
fff5a6c058 | ||
|
|
0edd0aaf69 | ||
|
|
1391ca1da5 | ||
|
|
3985980b2f | ||
|
|
84c29745f2 | ||
|
|
6deda99f07 | ||
|
|
78c2b3ca2a | ||
|
|
48a084c236 | ||
|
|
d9b24457fa | ||
|
|
6a511755b2 | ||
|
|
ce48b6afde | ||
|
|
4dd805b7a9 | ||
|
|
bbc35d609d | ||
|
|
1ff9a8ef52 | ||
|
|
c8f2050cc2 | ||
|
|
321782b9b7 | ||
|
|
f767077a41 | ||
|
|
2dd294cc84 | ||
|
|
fa5492343a | ||
|
|
06acf7090c | ||
|
|
a64d3c1744 | ||
|
|
1db8aa8628 | ||
|
|
3f61007563 | ||
|
|
9968197ebf | ||
|
|
7184925105 | ||
|
|
e559256719 | ||
|
|
7f785e0a11 | ||
|
|
bb09d44e0a | ||
|
|
27fb7e1802 | ||
|
|
094bc92318 | ||
|
|
a7e5a488a8 | ||
|
|
e96ba8140c | ||
|
|
3a798a27e5 | ||
|
|
ece635bf3c | ||
|
|
3ba6636651 | ||
|
|
33fc46cdec | ||
|
|
4152135e63 | ||
|
|
c57e427fba | ||
|
|
ac3f06bc7f | ||
|
|
cc514ac7a9 | ||
|
|
22c804d97c | ||
|
|
5424c55565 | ||
|
|
b0caa588ec | ||
|
|
c7a6537b83 | ||
|
|
ae827a638c | ||
|
|
07778e1760 | ||
|
|
450ea3131f | ||
|
|
07a88d48e9 | ||
|
|
4d86804f11 | ||
|
|
7bd8f9294d | ||
|
|
8c5e19c270 | ||
|
|
b4652e2cb3 | ||
|
|
2c0765b4d1 | ||
|
|
7e2bdb590f | ||
|
|
4da1ba56b3 | ||
|
|
47b572f99f | ||
|
|
da4d33ec26 | ||
|
|
9de70c9a00 | ||
|
|
ba5d480f80 | ||
|
|
86636dc265 | ||
|
|
ee88cc2c52 | ||
|
|
133f91f3f2 | ||
|
|
ba77719914 | ||
|
|
7ce6c28bb4 | ||
|
|
9aa4410509 | ||
|
|
f90e41d54e | ||
|
|
2f8c29a1f0 | ||
|
|
3b7683e72f | ||
|
|
ca5689e0db | ||
|
|
d2ffd8ed21 | ||
|
|
059e6e4305 | ||
|
|
ee331001f5 | ||
|
|
e0c6377d58 | ||
|
|
069bb9a929 | ||
|
|
665d9cb29c | ||
|
|
5d818c010e | ||
|
|
1400f53436 | ||
|
|
99942e8043 | ||
|
|
3177a683e9 | ||
|
|
c8afe7efc6 | ||
|
|
4fbd2ef87a | ||
|
|
303c37a175 | ||
|
|
c1172b83dd | ||
|
|
5d206059a8 | ||
|
|
9eca3ec8f6 | ||
|
|
bfa382cf9d | ||
|
|
ae4be413c3 | ||
|
|
ac2e613975 | ||
|
|
494f7e3657 | ||
|
|
801d2d0a32 | ||
|
|
a509819b21 | ||
|
|
e5130cf83f | ||
|
|
9710b25c7d | ||
|
|
9dc93ce328 | ||
|
|
ac035b9b8e | ||
|
|
69ba0c53ad | ||
|
|
e45fd939c2 | ||
|
|
087371c021 | ||
|
|
5abfd40989 | ||
|
|
52ed6d0d27 | ||
|
|
5d18cf9989 | ||
|
|
8386ce2b2f | ||
|
|
d47f32581c | ||
|
|
4cc8f7012b | ||
|
|
4e18007066 | ||
|
|
d29c3d2f0d | ||
|
|
8f15a8abdb | ||
|
|
0d12fb0346 | ||
|
|
7410593d55 | ||
|
|
d7ca0bb757 | ||
|
|
16281027af | ||
|
|
57d5ad5131 | ||
|
|
ffad7b699c | ||
|
|
8d327fa497 | ||
|
|
e472d45d99 | ||
|
|
625c35a9f9 | ||
|
|
74206e0159 | ||
|
|
3086095837 | ||
|
|
b0ca93b22c | ||
|
|
d7c30281a5 | ||
|
|
e2ef558c8a | ||
|
|
658f4a7d38 | ||
|
|
53b8218652 | ||
|
|
bb891f0570 | ||
|
|
08f50314cb | ||
|
|
c0cc551228 | ||
|
|
dac27c9913 | ||
|
|
1449823bcd | ||
|
|
d90a068e0e | ||
|
|
cad9a786c4 | ||
|
|
e21f2a81ff | ||
|
|
a23f1447a8 | ||
|
|
f930f2f19d | ||
|
|
e3ff28dacc | ||
|
|
f37c31742a | ||
|
|
462d516743 | ||
|
|
8309d19f31 | ||
|
|
d591bd875b | ||
|
|
e478d6b1e9 | ||
|
|
25b417e8b2 | ||
|
|
64566e6178 | ||
|
|
0d702b83f4 | ||
|
|
a3b1f29d23 | ||
|
|
38c9fa4a92 | ||
|
|
4833976a0c | ||
|
|
42dc90295d | ||
|
|
45879fb9db | ||
|
|
a8556134ae | ||
|
|
771d9509a8 | ||
|
|
e94ee94be3 | ||
|
|
56819eaf19 | ||
|
|
d264465422 | ||
|
|
406444037d | ||
|
|
b100299644 | ||
|
|
e26b7e1e4f | ||
|
|
7b28f730f4 | ||
|
|
cd57c4e189 | ||
|
|
b7cb3fe8e0 | ||
|
|
a76a34d28e | ||
|
|
3e071491c9 | ||
|
|
baee8c3aa5 | ||
|
|
70a81db567 | ||
|
|
cb58061649 | ||
|
|
186853a50f | ||
|
|
b1c0bf1fee | ||
|
|
1615527426 | ||
|
|
f610c295f2 | ||
|
|
e7791e1590 | ||
|
|
c1b41caa7c | ||
|
|
1c4cfd8eaf | ||
|
|
7e952e2f10 | ||
|
|
bf30c33e6e | ||
|
|
b131faa8f9 | ||
|
|
b2cd526e6a | ||
|
|
84d6fe397d | ||
|
|
80ab6e889f | ||
|
|
7dbf6bc8df | ||
|
|
159de9cc47 | ||
|
|
2705068290 | ||
|
|
cad2f98007 | ||
|
|
45aeecb043 | ||
|
|
abc9465798 | ||
|
|
e990d5b999 | ||
|
|
e048df51ce | ||
|
|
4979f44cfa | ||
|
|
31d42ce18f | ||
|
|
54fa69cab2 | ||
|
|
c7ff13873d | ||
|
|
f6e9b81188 | ||
|
|
44c1d4dfdc | ||
|
|
2d63f60d43 | ||
|
|
15fd3faa40 | ||
|
|
2cbfb04144 | ||
|
|
5ea3ecdc3b | ||
|
|
3db33979e1 | ||
|
|
5af2e6f1c9 | ||
|
|
f60f8a7346 | ||
|
|
4e20e06ee7 | ||
|
|
0fc4ac4f1f | ||
|
|
6b8bee6e0b | ||
|
|
d270c9e8b6 | ||
|
|
67e2d7ec43 | ||
|
|
37789f015a | ||
|
|
e965f3d3d4 | ||
|
|
0de799b3b0 | ||
|
|
79fcc06a4b | ||
|
|
f1541b5287 | ||
|
|
fc8b385ff6 | ||
|
|
3762036b08 | ||
|
|
3b0fa68a97 | ||
|
|
659c5345d9 | ||
|
|
664c9b15cf | ||
|
|
a502ffbd2c | ||
|
|
e9805e444f | ||
|
|
e9e9e00d45 | ||
|
|
092f916db9 | ||
|
|
93a818684c | ||
|
|
711f07a34c | ||
|
|
63a5e39e2c | ||
|
|
8fd0fd538d | ||
|
|
07e08f7a3d | ||
|
|
63c61b4b98 | ||
|
|
ddfd1854a7 | ||
|
|
b83eff7ecf | ||
|
|
46f06d82c9 | ||
|
|
8802d62cc5 | ||
|
|
75b80e5d7d | ||
|
|
24333569aa | ||
|
|
b0af6a2b58 | ||
|
|
0ea454301f | ||
|
|
82d3efc6c0 | ||
|
|
ab18c2d132 | ||
|
|
a164381cc6 | ||
|
|
e45cf2173f | ||
|
|
fecd5c994b | ||
|
|
9dc0bfc755 | ||
|
|
c7d90c8b32 | ||
|
|
9b7b360bf7 | ||
|
|
7ed692bf92 | ||
|
|
25870fa66b | ||
|
|
fee2ed37fc | ||
|
|
fdb1019b9e | ||
|
|
06fb073b8b | ||
|
|
09bff78d63 | ||
|
|
30b5234e9a | ||
|
|
8702fceb4b | ||
|
|
c3bfe3f33e | ||
|
|
a7a7b80ff8 | ||
|
|
520a692fda | ||
|
|
85c713b59e | ||
|
|
af9cd79e16 | ||
|
|
6fb878a65f | ||
|
|
d8e5f1611b | ||
|
|
5e7fd8bd7e | ||
|
|
5a2a0b326a | ||
|
|
f61597dce8 | ||
|
|
04ae46e21c | ||
|
|
3cf5c0b991 | ||
|
|
e76d51511e | ||
|
|
4bd4c8d12a | ||
|
|
6fbaff6d83 | ||
|
|
6071671bda | ||
|
|
d64f05cd59 | ||
|
|
e90d0b6e4c | ||
|
|
da2790249e | ||
|
|
2e5e278271 | ||
|
|
a01e81c8f7 | ||
|
|
1592234f1a | ||
|
|
9e3673ef53 | ||
|
|
7852b2f155 | ||
|
|
8f9ccc099b | ||
|
|
118709fd9f | ||
|
|
5a9900481a | ||
|
|
f7b0940d44 | ||
|
|
89dd828e3c | ||
|
|
2c0e24e948 | ||
|
|
dd302158e0 | ||
|
|
a75cfe13e7 | ||
|
|
560cfa5672 | ||
|
|
dfeba1e8dd | ||
|
|
9899cf7519 | ||
|
|
b45bb60c8b | ||
|
|
6ee0b6eb56 | ||
|
|
70a0327004 | ||
|
|
cab67cd9ac | ||
|
|
6d84671e8b | ||
|
|
ea3dd9d5e7 | ||
|
|
4e35ebb52f | ||
|
|
b24f7ee57c | ||
|
|
aa36898024 | ||
|
|
d155639db5 | ||
|
|
d444af5bb2 | ||
|
|
ef61964768 | ||
|
|
0119e8553c | ||
|
|
e17da9a843 | ||
|
|
699eda46b6 | ||
|
|
3a4d4080f4 | ||
|
|
34b05794d6 | ||
|
|
214e9d4b12 | ||
|
|
0c49360318 | ||
|
|
c2dd7fd762 | ||
|
|
1c3bfae212 | ||
|
|
984c4d200f | ||
|
|
cd576c7364 | ||
|
|
203a9acdbc | ||
|
|
2d5723ccca | ||
|
|
967703c3ac | ||
|
|
8a456c5a6b | ||
|
|
3f07655231 | ||
|
|
8151571dd6 | ||
|
|
3e1bec5248 | ||
|
|
a2e683d133 | ||
|
|
5f9c117d78 | ||
|
|
6d4c80083e | ||
|
|
cdc10defa3 | ||
|
|
9e13e3a5a4 | ||
|
|
e33759b358 | ||
|
|
1312eca220 | ||
|
|
82e2e6dbc3 | ||
|
|
7f795e964f | ||
|
|
9dfb96389c | ||
|
|
d611509842 | ||
|
|
09e154d214 | ||
|
|
2cdbf6c0b6 | ||
|
|
39fb8e03d7 | ||
|
|
ce7a2f7edc | ||
|
|
0e552ea6e2 | ||
|
|
2de4ad0598 | ||
|
|
9b7e77ccda | ||
|
|
8c589438d1 | ||
|
|
55634c1f52 | ||
|
|
c4c913ff13 | ||
|
|
6b64257c81 | ||
|
|
abcf8d9e61 | ||
|
|
63e4af8536 | ||
|
|
483061e802 | ||
|
|
7cad2c6788 | ||
|
|
2f45942adc | ||
|
|
4a6c2ce378 | ||
|
|
dbaf125fcd | ||
|
|
0913dd7ffa | ||
|
|
bb7e96311e | ||
|
|
2d2312d742 | ||
|
|
31e6251793 | ||
|
|
26d53c7435 | ||
|
|
b719ed79c2 | ||
|
|
80816f68f3 | ||
|
|
5c25d821b1 | ||
|
|
01cd957495 | ||
|
|
f221f57c7c | ||
|
|
73c96cbd50 | ||
|
|
2eab07f0a4 | ||
|
|
52b8bb6761 | ||
|
|
a7d2830d3f | ||
|
|
a70a8e8680 | ||
|
|
07c5e33023 | ||
|
|
48c7378c8f | ||
|
|
e97dd57dc7 | ||
|
|
4644a864a5 | ||
|
|
fd6a74496b | ||
|
|
a981295524 | ||
|
|
b23edc34e9 | ||
|
|
112d63ae96 | ||
|
|
c8a52daafd | ||
|
|
ca9810e8aa | ||
|
|
5b3520fa46 | ||
|
|
fc1f9ab236 | ||
|
|
d64bea00b2 | ||
|
|
3d3b310ae1 | ||
|
|
a760c454dd | ||
|
|
52df2b346b | ||
|
|
7a186c72e1 | ||
|
|
f55c85fed3 | ||
|
|
217b2282b8 | ||
|
|
83f749afd2 | ||
|
|
65b020f0d3 | ||
|
|
6e8386f705 | ||
|
|
1aaeea9941 | ||
|
|
6035925f41 | ||
|
|
512ddcc804 | ||
|
|
9ec4c20280 | ||
|
|
4c23059209 | ||
|
|
d7c22343aa | ||
|
|
9e05d18d42 | ||
|
|
35dc26e0b9 | ||
|
|
faddd5b97f | ||
|
|
e49065b1dc | ||
|
|
9d04a7aba9 | ||
|
|
928924d248 | ||
|
|
a70467d7a2 | ||
|
|
bc730292bb | ||
|
|
0966e5ffa1 | ||
|
|
e3d23918fa | ||
|
|
6a2fb8e5d1 | ||
|
|
3c4b24d531 | ||
|
|
8998186ce4 | ||
|
|
d084d19779 | ||
|
|
06e981f1ce | ||
|
|
febb200eee | ||
|
|
6083efc111 | ||
|
|
b29835a8f8 | ||
|
|
a49211a77e | ||
|
|
c33a7cd7bf | ||
|
|
1540910542 | ||
|
|
2bb3de5aa0 | ||
|
|
14782194f4 | ||
|
|
b0ec7dafd8 | ||
|
|
9c22d4887c | ||
|
|
a032d947b4 | ||
|
|
9b0a9f2a24 | ||
|
|
6e4715309b | ||
|
|
b4bd5bab6d | ||
|
|
74dfa668e2 | ||
|
|
cdffa05c27 | ||
|
|
febe528363 | ||
|
|
242a3d1f19 | ||
|
|
dde1d6b636 | ||
|
|
f41f633d2d | ||
|
|
a1784b7320 | ||
|
|
ec3f22cee2 | ||
|
|
b3af0e3154 | ||
|
|
b7553d4e2e | ||
|
|
ac230cd2ae | ||
|
|
c8cbfe5382 | ||
|
|
545f02679a | ||
|
|
69d034ecdf | ||
|
|
2431c72d1d | ||
|
|
96f8ff2ab8 | ||
|
|
59cab94fc7 | ||
|
|
388d0ef182 | ||
|
|
02fb3f0a77 | ||
|
|
bd91b39593 | ||
|
|
586a5cb6db | ||
|
|
6a0fb2c7da | ||
|
|
d3fa2bfe8c | ||
|
|
ac030c16f1 | ||
|
|
ef509ace43 | ||
|
|
9d3e7e027a | ||
|
|
6d77cbee7e | ||
|
|
e49b8dee40 | ||
|
|
52a785e95a | ||
|
|
0cf7607338 | ||
|
|
5cf4166801 | ||
|
|
904dac7670 | ||
|
|
6ae16ebec3 | ||
|
|
d9d4678599 | ||
|
|
125d67130b | ||
|
|
c5c3fd4443 | ||
|
|
2f34bb9aa0 | ||
|
|
f2befa01f4 | ||
|
|
8fe4e98b8a | ||
|
|
9cb31e86ae | ||
|
|
9d8d70d6ca | ||
|
|
e4b41d38f1 | ||
|
|
b2d8b491c0 | ||
|
|
11071dd241 | ||
|
|
558c4a2b1d | ||
|
|
172a5d42a9 | ||
|
|
5c0dabf1ea | ||
|
|
c9ed05c3bd | ||
|
|
8e15a6f98d | ||
|
|
11b9d5bf4d | ||
|
|
e30875bcef | ||
|
|
cc69d4631a | ||
|
|
d8513d627d | ||
|
|
1d6715e58a | ||
|
|
b43d6b6858 | ||
|
|
5299b13434 | ||
|
|
b0a9220de8 | ||
|
|
5bc9f15dda | ||
|
|
ac1c6dac93 | ||
|
|
41bec1b112 | ||
|
|
b20714a8a8 | ||
|
|
1c15776cf5 | ||
|
|
f3e2bfea79 | ||
|
|
eeb16a5d01 | ||
|
|
9b29b127c5 | ||
|
|
268d814d18 | ||
|
|
3bbf51fbfb | ||
|
|
129b715e3d | ||
|
|
91fc0c3bc3 | ||
|
|
d0114b24e0 | ||
|
|
9f388a2be7 | ||
|
|
5ecf759742 | ||
|
|
381d7851b7 | ||
|
|
1015c5c24d | ||
|
|
f76bf8b425 | ||
|
|
e7227d3e4b | ||
|
|
b5cdc03b81 | ||
|
|
bdbd3eb2bf | ||
|
|
8fa8b36b42 | ||
|
|
302a5adcc2 | ||
|
|
5566d31468 | ||
|
|
d802b4d143 | ||
|
|
90c28d254f | ||
|
|
c9e6ed7a29 | ||
|
|
464a010f53 | ||
|
|
5c72c74b09 | ||
|
|
9d87f9c974 | ||
|
|
f3ba1a361e | ||
|
|
93c6fe66ce | ||
|
|
6f3163f62d | ||
|
|
24465bbd05 | ||
|
|
8db53c1760 | ||
|
|
0dfa188ca5 | ||
|
|
041ad1f4cd | ||
|
|
8d8f5665f1 | ||
|
|
179a43ef63 | ||
|
|
29ba7730ed | ||
|
|
262f70f3ab | ||
|
|
c16c9a2e8e | ||
|
|
b6c33bf86b | ||
|
|
cd3f7fbf05 | ||
|
|
4c66b87698 | ||
|
|
f62ffa2aea | ||
|
|
f9ca6cfd22 | ||
|
|
a54ef70c04 | ||
|
|
546c084fe6 | ||
|
|
0e88733b13 | ||
|
|
3830a0b5b2 | ||
|
|
a6ab9be5a6 | ||
|
|
fb62a66b69 | ||
|
|
b88fdc73d6 | ||
|
|
d970d58308 | ||
|
|
ace71cef3f | ||
|
|
9f1f5aed53 | ||
|
|
a9c7aa92d9 | ||
|
|
177f7eb339 | ||
|
|
0895616576 | ||
|
|
b560cc35d9 | ||
|
|
0eb2be762a | ||
|
|
68d8f6410f | ||
|
|
fdf1996e2e | ||
|
|
73aa43d2ca | ||
|
|
d368bf5210 | ||
|
|
a0c296fcdb | ||
|
|
f5a01f15a5 | ||
|
|
f36858b3a0 | ||
|
|
f0049fa2ed | ||
|
|
926cab2baa | ||
|
|
44126e350a | ||
|
|
591b1a7e70 | ||
|
|
3013b469fe | ||
|
|
8a48802dec | ||
|
|
3eaa8f149b | ||
|
|
b930028727 | ||
|
|
b16f0a25af | ||
|
|
af6134b4b6 | ||
|
|
bee4dff89d | ||
|
|
968a898a1b | ||
|
|
73b0827ec1 | ||
|
|
2cc11e2c6a | ||
|
|
828b0b151b | ||
|
|
fe11ca886a | ||
|
|
458ac2592b | ||
|
|
ff87385201 | ||
|
|
778edff9e1 | ||
|
|
c48ad880f3 | ||
|
|
944f7bac42 | ||
|
|
573e818415 | ||
|
|
33e6c07485 | ||
|
|
2f65a0d4ba | ||
|
|
35d9ca6483 | ||
|
|
daa9694cab | ||
|
|
94eab9babe | ||
|
|
6c7272bde1 | ||
|
|
3b239561c6 | ||
|
|
f85a615f3f | ||
|
|
05c7c9325a | ||
|
|
75b76554bf | ||
|
|
01e1ccfa88 | ||
|
|
f8b00e5269 | ||
|
|
7ab43585aa | ||
|
|
50c19423f9 | ||
|
|
56ab1c18e6 | ||
|
|
ae9b4003ae | ||
|
|
1ed0e44090 | ||
|
|
e170115ad0 | ||
|
|
5b0ee9e085 | ||
|
|
0802c06571 | ||
|
|
a1b3ba02a7 | ||
|
|
88aa4a9902 | ||
|
|
95db69f6b9 | ||
|
|
0736ede7e5 | ||
|
|
e2b99a32b2 | ||
|
|
474fc887a6 | ||
|
|
5b5f5878ce | ||
|
|
f9190cc662 | ||
|
|
e585f145f6 | ||
|
|
001aa70556 | ||
|
|
49474903cb | ||
|
|
49e729f89d | ||
|
|
88bceb5060 | ||
|
|
b8edc2cc4d | ||
|
|
28575c1969 | ||
|
|
fed7e61879 | ||
|
|
e17107e864 | ||
|
|
a180cebb2d | ||
|
|
ba850f0b64 | ||
|
|
435028ccee | ||
|
|
6ab297718d | ||
|
|
3e586f42a0 | ||
|
|
997ec60839 | ||
|
|
803672feea | ||
|
|
dcce9d7088 | ||
|
|
55af7857b9 | ||
|
|
7d9150460a | ||
|
|
fe01bc21c0 | ||
|
|
90c230678e | ||
|
|
d58cd9851f | ||
|
|
eaf620ddde | ||
|
|
14dccdf23d | ||
|
|
35ea600c54 | ||
|
|
d2b46d421f | ||
|
|
cb4267cb38 | ||
|
|
17f53bc301 | ||
|
|
6e9a7706ce | ||
|
|
0a624ee67d | ||
|
|
206b56ed39 | ||
|
|
cd97d789b6 | ||
|
|
aed69cc458 | ||
|
|
161c3b71e6 | ||
|
|
efe564e3b3 | ||
|
|
5fea17ff0d | ||
|
|
b27d7d2a61 | ||
|
|
7626a8e8de | ||
|
|
82b852c13c | ||
|
|
9be727b1ea | ||
|
|
f263fe145a | ||
|
|
d7f4a223cf | ||
|
|
ec6f2e1c4d | ||
|
|
6da5d21331 | ||
|
|
c1cfb4d422 | ||
|
|
daefe6983f | ||
|
|
09795e3265 | ||
|
|
d83094b412 | ||
|
|
9ca80961fd | ||
|
|
4eba74ee19 | ||
|
|
22ad487328 | ||
|
|
735f704b3e | ||
|
|
c056e7fc61 | ||
|
|
41d046a2db | ||
|
|
d2e1318341 | ||
|
|
f771a0ba81 | ||
|
|
0b900b54e5 | ||
|
|
727a5e6df4 | ||
|
|
fb9c59dd8d | ||
|
|
8a23646897 | ||
|
|
81b9c9c104 | ||
|
|
af367c4f85 | ||
|
|
ab9b883c69 | ||
|
|
65ee06eb2b | ||
|
|
506c19616d | ||
|
|
41ae5d5f66 | ||
|
|
28242f09d0 | ||
|
|
90d62cacc9 | ||
|
|
b413bcbba4 | ||
|
|
99c8b8c016 | ||
|
|
2fed668390 | ||
|
|
6679aed61e | ||
|
|
4f74e2509b | ||
|
|
69dc840583 | ||
|
|
96a228fd7e | ||
|
|
736097a462 | ||
|
|
920fd48228 | ||
|
|
9c2272d520 | ||
|
|
aaf97c4548 | ||
|
|
e7339ac11a | ||
|
|
e20f7014cf | ||
|
|
05e22ee8c9 | ||
|
|
e4793e3d5e | ||
|
|
16a3067afc | ||
|
|
145855767c | ||
|
|
9d23a0cb81 | ||
|
|
684ff70308 | ||
|
|
52e810ed33 | ||
|
|
c90fe65f22 | ||
|
|
e8b86c8663 | ||
|
|
089b8e2f4a | ||
|
|
10639d63f5 | ||
|
|
9dc713eaba | ||
|
|
bf84d476fc | ||
|
|
e015691b41 | ||
|
|
0c4da123e9 | ||
|
|
67525627db | ||
|
|
63c23cce65 | ||
|
|
e1955759af | ||
|
|
88b2fe9dbb | ||
|
|
3ab47300ce | ||
|
|
fd4a7e7d1f | ||
|
|
b157cc17e9 | ||
|
|
b82c55de12 | ||
|
|
1af95ea12c | ||
|
|
881e837520 | ||
|
|
dd817857b4 | ||
|
|
fc49d33c8d | ||
|
|
c8abb6124f | ||
|
|
c1f59c4c76 | ||
|
|
8834d5e57b | ||
|
|
67a2c4ecd5 | ||
|
|
c33cb94d66 | ||
|
|
ca8c129c57 | ||
|
|
650f92f9cc | ||
|
|
561a7f5782 | ||
|
|
9bf2516eb1 | ||
|
|
65b7e2018c | ||
|
|
8d1a8df1a9 | ||
|
|
3703c7040a | ||
|
|
4cfbee70bd | ||
|
|
95006af170 | ||
|
|
63b3db53d7 | ||
|
|
ae8b2cbd68 | ||
|
|
677c7f27cb | ||
|
|
ef27ac3782 | ||
|
|
7f935717cb | ||
|
|
aacf188e83 | ||
|
|
d0b3c7a518 | ||
|
|
8c44995ea6 | ||
|
|
241002384c | ||
|
|
e2bbe7597b | ||
|
|
8762ee3f6f | ||
|
|
d914f20a4c | ||
|
|
bb4bf7a1f9 | ||
|
|
9e3a29701e | ||
|
|
efcc341219 | ||
|
|
e154bce259 | ||
|
|
d8600d3d13 | ||
|
|
5c6248005a | ||
|
|
dfef42f94e | ||
|
|
0dad070473 | ||
|
|
d275e29ea4 | ||
|
|
615d6c22d1 | ||
|
|
b8c46f4cce | ||
|
|
bb0d88cf6f | ||
|
|
4c9a6bd4ec | ||
|
|
154d119e13 | ||
|
|
a8e1d1f0b2 | ||
|
|
73f1940b03 | ||
|
|
a4ceb7b6ee | ||
|
|
f461930d07 | ||
|
|
ccbd7f8da9 | ||
|
|
bfa40e180f | ||
|
|
4f1aed98de | ||
|
|
469d7eed72 | ||
|
|
c970d4bf6e | ||
|
|
8aafd569c8 | ||
|
|
254aece317 | ||
|
|
b5777efee6 | ||
|
|
e9b54ab844 | ||
|
|
7a2a810de5 | ||
|
|
8b19df3fec | ||
|
|
65389e41db | ||
|
|
8bba305487 | ||
|
|
8f5eaca354 | ||
|
|
9c83f6c4fb | ||
|
|
8adebcbc00 | ||
|
|
03bbee327b | ||
|
|
f68b73f831 | ||
|
|
334292083e | ||
|
|
75087580de | ||
|
|
616db74e49 | ||
|
|
78be4f66f7 | ||
|
|
485d36d3c0 | ||
|
|
31f0ab6c80 | ||
|
|
6416c33020 | ||
|
|
ace0d4bad0 | ||
|
|
5920bd4f2e | ||
|
|
caa33b2242 | ||
|
|
6e4fb8f275 | ||
|
|
b1aa4a4913 | ||
|
|
e14171fd33 | ||
|
|
7e1ded0ebd | ||
|
|
a9065b7d0c | ||
|
|
303df78cca | ||
|
|
dfe07df87b | ||
|
|
424a7b0ab0 | ||
|
|
3f3ae33327 | ||
|
|
eb86d37b26 | ||
|
|
66beb44286 | ||
|
|
5a34272150 | ||
|
|
de521fc9fa | ||
|
|
d3076c5014 | ||
|
|
e384a7bb95 | ||
|
|
779acfa715 | ||
|
|
49c6533227 | ||
|
|
4036f6a3d0 | ||
|
|
d8c8339bec | ||
|
|
278fb617d2 | ||
|
|
6640846e95 | ||
|
|
1e556e08dc | ||
|
|
8c121d372a | ||
|
|
80e667b647 | ||
|
|
27b02921f3 | ||
|
|
77023e2366 | ||
|
|
c33ca77838 | ||
|
|
bec35eeddb | ||
|
|
29f37fc130 | ||
|
|
21233656bd | ||
|
|
e290436a4c | ||
|
|
f25b77ff1e | ||
|
|
52a904e17b | ||
|
|
4c102112dd | ||
|
|
5368f12b33 | ||
|
|
b50185e160 | ||
|
|
e845184843 | ||
|
|
3f8db9d708 | ||
|
|
a239797271 | ||
|
|
d37d46d279 | ||
|
|
3561bc1bbc | ||
|
|
cb445d697c | ||
|
|
d4df373999 | ||
|
|
3d4ec7ad98 | ||
|
|
dfb698dc64 | ||
|
|
076eeffd4d | ||
|
|
cc7a13ea57 | ||
|
|
f07769e9d8 | ||
|
|
342e007dc6 | ||
|
|
3b412b51ac | ||
|
|
5ea8085220 | ||
|
|
988ab79acb | ||
|
|
685eceb68a | ||
|
|
35d9ce0c0c | ||
|
|
b08233a3ca | ||
|
|
920e15b41d | ||
|
|
f91f8663b6 | ||
|
|
e5188c7e94 | ||
|
|
34f6b17c3f | ||
|
|
88b1847d09 | ||
|
|
c8a3a85e26 | ||
|
|
c1cd70e25a | ||
|
|
8c82decf5b | ||
|
|
72c35d3a89 | ||
|
|
744f4b1609 | ||
|
|
fb73e7b4bd | ||
|
|
cca2e5d8b1 | ||
|
|
f04cade607 | ||
|
|
b03c19a8ac | ||
|
|
32630dbf61 | ||
|
|
ac36ae0498 | ||
|
|
1817a07a5e | ||
|
|
a1e239d2bf | ||
|
|
ccb48ddee0 | ||
|
|
f47afe5799 | ||
|
|
169ebae8c0 | ||
|
|
81d6842b8e | ||
|
|
447e03bc28 | ||
|
|
e389111b5b | ||
|
|
58da54cb7a | ||
|
|
4c19e0273a | ||
|
|
78c4ffec99 | ||
|
|
60bcc52c4f | ||
|
|
30d7e1c33d | ||
|
|
4c7ecf20d8 | ||
|
|
a71a891b93 | ||
|
|
1ac1b9ae35 | ||
|
|
184ae873d4 | ||
|
|
bcb6f0386e | ||
|
|
6133aeede8 | ||
|
|
8717281e0e | ||
|
|
aeedc7adec | ||
|
|
81eb4bd8be | ||
|
|
4ec5c04504 | ||
|
|
8ed47c01b7 | ||
|
|
23cc31e041 | ||
|
|
61f5176bad | ||
|
|
d7bf71c24a | ||
|
|
06f07944c8 | ||
|
|
7839dbd2c4 | ||
|
|
224f18b06c | ||
|
|
eb449968b6 | ||
|
|
1ef211b889 | ||
|
|
31a7814395 | ||
|
|
020624c481 | ||
|
|
e1aa2fd06c | ||
|
|
3fb9c52272 | ||
|
|
bbd519be42 | ||
|
|
045a856c24 | ||
|
|
b705e0d886 | ||
|
|
9fe92e2111 | ||
|
|
e820c5c65f | ||
|
|
3f62e78592 | ||
|
|
7b3bbcea71 | ||
|
|
6dbb32a05d | ||
|
|
3ab7f4b26a | ||
|
|
7c8c836a7b | ||
|
|
5522f43b18 | ||
|
|
e83be009a3 | ||
|
|
c7a3a7d4d9 | ||
|
|
b11cccaaca | ||
|
|
fdfffa5291 | ||
|
|
ef9917ecf1 | ||
|
|
43e811118b | ||
|
|
766d950ff3 | ||
|
|
7628e57fc6 | ||
|
|
574ff47146 | ||
|
|
e7dba695b3 | ||
|
|
156f86ea0b | ||
|
|
9c5da2ea22 | ||
|
|
32d578f5f0 | ||
|
|
f4fb7fe1be | ||
|
|
e0f5a2e532 | ||
|
|
51341738ba | ||
|
|
0d06b1dced | ||
|
|
c810d03d5c | ||
|
|
ada858e1c0 | ||
|
|
a4b3aa9e1e | ||
|
|
f3f7f70588 | ||
|
|
c41a5b9c2c | ||
|
|
4ce0a8a822 | ||
|
|
c3748a5f95 | ||
|
|
ca0956a7e2 | ||
|
|
bc1f9d6268 | ||
|
|
cd84742556 | ||
|
|
0324932fb3 | ||
|
|
f6fc39ce8f | ||
|
|
4672a70c1f | ||
|
|
1bf4298251 | ||
|
|
aa73dafbbb | ||
|
|
752d88f5d2 | ||
|
|
5a1e9876fc | ||
|
|
ead966709d | ||
|
|
fe7bab499f | ||
|
|
61c27ac81e | ||
|
|
851a8a1cd0 | ||
|
|
20fe614c2f | ||
|
|
0a8d62e5fd | ||
|
|
f0b050fa88 | ||
|
|
3ac3ba0415 | ||
|
|
891bcd8491 | ||
|
|
047b568f6d | ||
|
|
97fc1e10a7 | ||
|
|
c9ace38897 | ||
|
|
5921c77613 | ||
|
|
4b203f7b1a | ||
|
|
357e5d55f6 | ||
|
|
e6a9c22b9d | ||
|
|
0d49206a98 | ||
|
|
241aa6e5a8 | ||
|
|
c6ab8cb6ee | ||
|
|
e1f55c3fcc | ||
|
|
e675684c81 | ||
|
|
720241de87 | ||
|
|
c8b97271cc | ||
|
|
b4ffb0878d | ||
|
|
b5f3709ab9 | ||
|
|
5670e4f6cd | ||
|
|
776c0cb08c | ||
|
|
899781b3d6 | ||
|
|
298a1d50d2 | ||
|
|
581d454536 | ||
|
|
5556f051f1 | ||
|
|
4b19fda1d6 | ||
|
|
42faaa8b39 | ||
|
|
14d225134d | ||
|
|
4171767d19 | ||
|
|
8e7eb79f6e | ||
|
|
eb1333d0a8 | ||
|
|
c0c575d68e | ||
|
|
1445a29e1c | ||
|
|
2eb5ca0024 | ||
|
|
2bf36c312f | ||
|
|
e324446c70 | ||
|
|
52cdae6e2b | ||
|
|
21390d806f | ||
|
|
8e8ff4dd33 | ||
|
|
0ecd7913f8 | ||
|
|
2837bfd9fa | ||
|
|
c550e452f9 | ||
|
|
f99be6bda6 | ||
|
|
73f476bd4b | ||
|
|
90b6af1496 | ||
|
|
b1af5cc478 | ||
|
|
5780b418c9 | ||
|
|
737c5fe781 | ||
|
|
81ac97c6bd | ||
|
|
8de46e1f81 | ||
|
|
dc64dd7315 | ||
|
|
d84ab09ab7 | ||
|
|
824c28a588 | ||
|
|
1dd017e9d0 | ||
|
|
99a43257d5 | ||
|
|
3fa3722641 | ||
|
|
223fb39d94 | ||
|
|
a117400577 | ||
|
|
e3e5fd5baa | ||
|
|
ad404ef44f | ||
|
|
20f636fcee | ||
|
|
89508bf7ab | ||
|
|
76c6fa9348 | ||
|
|
a430abd02e | ||
|
|
b570a4ac47 | ||
|
|
130b4d8e26 | ||
|
|
7ac768651f | ||
|
|
0117d77cd1 | ||
|
|
3165b526f2 | ||
|
|
eb3a83209c | ||
|
|
c31fb8ffff | ||
|
|
caaa9e0f2d | ||
|
|
31c58d23e0 | ||
|
|
f570b3e18d | ||
|
|
86b7e3d15d | ||
|
|
f9ea3772b0 | ||
|
|
224f44a255 | ||
|
|
d25309f82e | ||
|
|
75fdfba281 | ||
|
|
eff21788a8 | ||
|
|
95d92c099c | ||
|
|
160ab8415e | ||
|
|
84022b0c19 | ||
|
|
c511d5d649 | ||
|
|
0033d453f2 | ||
|
|
e3b92a9591 | ||
|
|
4082a0c64e | ||
|
|
232f11e256 | ||
|
|
530ad447bc | ||
|
|
8bada4c751 | ||
|
|
3f27ba54e0 | ||
|
|
0934344a3d | ||
|
|
0ed2f6201d | ||
|
|
9902affae6 | ||
|
|
d669559ec3 | ||
|
|
b525c28244 | ||
|
|
473bfb0019 | ||
|
|
cd8ff69637 | ||
|
|
4fce8e6b0e | ||
|
|
887825e831 | ||
|
|
5b2d557502 | ||
|
|
7fd7bbc9f1 | ||
|
|
510ad8e779 | ||
|
|
e6b58c4e79 | ||
|
|
4fe8e377ed | ||
|
|
03926fac20 | ||
|
|
620d92824c | ||
|
|
6bbac2a7d9 | ||
|
|
acc2ca484c | ||
|
|
242e4254f3 | ||
|
|
7238479813 | ||
|
|
54c6830937 | ||
|
|
95c2e8b51f | ||
|
|
8767c47463 | ||
|
|
a92721b569 | ||
|
|
a29863ee7b | ||
|
|
1207cd132b | ||
|
|
11fa0651c6 | ||
|
|
ccc71ac190 | ||
|
|
ad94628038 | ||
|
|
4ee5599d4b | ||
|
|
3609bb41a7 | ||
|
|
59dd5aea00 | ||
|
|
d5aaab745f | ||
|
|
0e06465a23 | ||
|
|
79d51c3398 | ||
|
|
e8d3732aaf | ||
|
|
1036ce807c | ||
|
|
77a2529eb7 | ||
|
|
74578f56a9 | ||
|
|
6ad72bfcb4 | ||
|
|
a0771630b0 | ||
|
|
9895093524 | ||
|
|
56f9168ac1 | ||
|
|
26005a19bd | ||
|
|
c773061457 | ||
|
|
3bdb55e1ef | ||
|
|
2170559bed | ||
|
|
286f81f305 | ||
|
|
2969ec0274 | ||
|
|
5307339f85 | ||
|
|
7116e22b52 | ||
|
|
fcf437cf69 | ||
|
|
94ca5d65d0 | ||
|
|
fdbf20c172 | ||
|
|
cd33ca0009 | ||
|
|
9a91a12fb2 | ||
|
|
477ca067f0 | ||
|
|
eed7bf6902 | ||
|
|
07d55b05b3 | ||
|
|
a7bcf63765 | ||
|
|
c118f3c529 | ||
|
|
6ef1d456dd | ||
|
|
b7eff94137 | ||
|
|
0c7663eb3b | ||
|
|
f88d8b9545 | ||
|
|
deeaddb0a9 | ||
|
|
f4792f8a44 | ||
|
|
512111af9c | ||
|
|
1cc6502db3 | ||
|
|
04913f5af7 | ||
|
|
b9a5e919e2 | ||
|
|
15511bff40 | ||
|
|
f4d01175b8 | ||
|
|
765921cc25 | ||
|
|
dba336c0e3 | ||
|
|
439e90f4f4 | ||
|
|
af594c8e44 | ||
|
|
bad927325f | ||
|
|
74accbd969 | ||
|
|
6964f6aacc | ||
|
|
5eed0d6bef | ||
|
|
f99e874704 | ||
|
|
b60894c1dd | ||
|
|
31501ebf4f | ||
|
|
a5b75769a3 | ||
|
|
2822845ba6 | ||
|
|
9d4fe6984b | ||
|
|
21be9796ae | ||
|
|
2705113bc4 | ||
|
|
ffbb5e9524 | ||
|
|
4aa61dee50 | ||
|
|
af8a918e04 | ||
|
|
69f135ec57 | ||
|
|
6c0c217562 | ||
|
|
4b443059ec | ||
|
|
8007e07ad2 | ||
|
|
e4b13f2ef0 | ||
|
|
3da7dd9849 | ||
|
|
9086cf5d79 | ||
|
|
3038ffb886 | ||
|
|
ed0162ad0b | ||
|
|
08917908f3 | ||
|
|
f98614ece0 | ||
|
|
f6e1a093cd | ||
|
|
4f416352e1 | ||
|
|
cf36b8f817 | ||
|
|
b032b4dded | ||
|
|
0bbaf5d47a | ||
|
|
e106dcc606 | ||
|
|
86b841563b | ||
|
|
c7d2fdc4b2 | ||
|
|
a97ffe6513 | ||
|
|
a50d75d362 | ||
|
|
3e189a2b41 | ||
|
|
24dee16b12 | ||
|
|
dadee3752c | ||
|
|
2f942efdf7 | ||
|
|
2a2c21bb63 | ||
|
|
62353b7980 | ||
|
|
34af7eeb84 | ||
|
|
eaa7fcc3e6 | ||
|
|
34127ba80f | ||
|
|
3bca57ac25 | ||
|
|
fc0e835762 | ||
|
|
d33ff4bb11 | ||
|
|
d6146e9543 | ||
|
|
a007c7b980 | ||
|
|
b165016ba7 | ||
|
|
a57f93ee92 | ||
|
|
2c033251db | ||
|
|
f8f0685397 | ||
|
|
57595a8308 | ||
|
|
0dcb4f1f66 | ||
|
|
808e0cf10b | ||
|
|
93f757f8a2 | ||
|
|
f21851f0f4 | ||
|
|
cce0f48d3e | ||
|
|
32205d3c5b | ||
|
|
b12894d95a | ||
|
|
de6a934f66 | ||
|
|
345bc633cc | ||
|
|
1eacb485c5 | ||
|
|
bd70a033fc | ||
|
|
711fb6bd92 | ||
|
|
beeb932d22 | ||
|
|
254d4ae429 | ||
|
|
8200a95ced | ||
|
|
461c98fa86 | ||
|
|
e33a4f79f8 | ||
|
|
85eb52b8af | ||
|
|
cb27740de4 | ||
|
|
0f703b8162 | ||
|
|
ecc51817d9 | ||
|
|
2fe340bf8a | ||
|
|
464985205c | ||
|
|
25c0d5978c | ||
|
|
b5e1eb7d48 | ||
|
|
cf275acbce | ||
|
|
cc15898353 | ||
|
|
e45f92a9e1 | ||
|
|
fd3b2326b4 | ||
|
|
f46b7fcf86 | ||
|
|
1ad4592bfc | ||
|
|
009919872f | ||
|
|
0902f183ca | ||
|
|
79457f8f49 | ||
|
|
359771fdac | ||
|
|
e354fa3fd1 | ||
|
|
924f7ce373 | ||
|
|
7e5bbec895 | ||
|
|
35e7952909 | ||
|
|
18bb951574 | ||
|
|
9218f4976c | ||
|
|
e15eabe3fa | ||
|
|
f57145dc64 | ||
|
|
12f50d7f67 | ||
|
|
ba4bf04c6c | ||
|
|
a41006754e | ||
|
|
429bfad225 | ||
|
|
cbe437571e | ||
|
|
f936c1283b | ||
|
|
fd88654b45 | ||
|
|
3c34b24f1f | ||
|
|
80b9fd87dc | ||
|
|
ae94256edc | ||
|
|
29386f1449 | ||
|
|
259ceb7eaa | ||
|
|
5660d6a680 | ||
|
|
a0ae602bb7 | ||
|
|
219b662127 | ||
|
|
71d61e07b1 | ||
|
|
d4901a99ea | ||
|
|
dcd600cc47 | ||
|
|
6d216d78d9 | ||
|
|
dbeb3e2968 | ||
|
|
cfe4a71dc6 | ||
|
|
91dd44e7fa | ||
|
|
fef646d4f8 | ||
|
|
a6308118b4 | ||
|
|
5a85f1b6da | ||
|
|
8282f6ebc1 | ||
|
|
e895b7455e | ||
|
|
e12496d150 | ||
|
|
c112c9aa00 | ||
|
|
31c95ff7f8 | ||
|
|
40227b78a5 | ||
|
|
cf078be3d6 | ||
|
|
23f5eacafd | ||
|
|
20f932bd46 | ||
|
|
f0910466f9 | ||
|
|
a34f7b7714 | ||
|
|
582d5558cc | ||
|
|
1d25e5f1ba | ||
|
|
24e916059f | ||
|
|
9d78b8003e | ||
|
|
af74ec6044 | ||
|
|
f2fd0ad153 | ||
|
|
b92c88ddd1 | ||
|
|
b1f029ccc5 | ||
|
|
554e002747 | ||
|
|
7fd8a19fe8 | ||
|
|
a64c34c3ec | ||
|
|
d16d637eb2 | ||
|
|
25ee1f9099 | ||
|
|
14af369640 | ||
|
|
a780c3a7d1 | ||
|
|
8f62a52b9b | ||
|
|
bc93edac34 | ||
|
|
5f7163bff2 | ||
|
|
281250ba0e | ||
|
|
153549c7f6 | ||
|
|
33c377b305 | ||
|
|
fc37df05ec | ||
|
|
86f4cd253a | ||
|
|
5af2cc6223 | ||
|
|
d5abe79f74 | ||
|
|
9726346bc9 | ||
|
|
57505b9af9 | ||
|
|
11dcd4f4f3 | ||
|
|
e59c74e1c7 | ||
|
|
5e4ebf3403 | ||
|
|
7afc2677e6 | ||
|
|
9f0a88c1d6 | ||
|
|
10cb9a0c4a | ||
|
|
569e8006e3 | ||
|
|
2a0e357cd0 | ||
|
|
b87197dc37 | ||
|
|
eb83a9ed9f | ||
|
|
1840fd5f00 | ||
|
|
2ac31a87c9 | ||
|
|
78dc2c5423 | ||
|
|
52dc51a62c | ||
|
|
287c8a3330 | ||
|
|
9f9873017c | ||
|
|
2d6f35d6ed | ||
|
|
d32b62a177 | ||
|
|
dd25f416a6 | ||
|
|
9ed475cf52 | ||
|
|
9b92545ce6 | ||
|
|
2c4bbb313c | ||
|
|
4d06c4c7b6 | ||
|
|
657699a1da | ||
|
|
45a0b39a73 | ||
|
|
affab4f156 | ||
|
|
8b20ceb024 | ||
|
|
0daac6fd9d | ||
|
|
f44ed7f37c | ||
|
|
833f8d16fa | ||
|
|
d38fca2c06 | ||
|
|
d83be1dccc | ||
|
|
055a581977 | ||
|
|
67ae438dae | ||
|
|
dbb684b85f | ||
|
|
1a81da012d | ||
|
|
989be02562 | ||
|
|
580677f43d | ||
|
|
ea544f08cc | ||
|
|
365def6090 | ||
|
|
5a32f0b6ca | ||
|
|
66aa3255b9 | ||
|
|
723ba29660 | ||
|
|
7685b983db | ||
|
|
e2e604eb18 | ||
|
|
50288f1314 | ||
|
|
926d6876d3 | ||
|
|
9c01a96b14 | ||
|
|
6fed0e85c2 | ||
|
|
797beef383 | ||
|
|
b7b584984e | ||
|
|
880306f6d6 | ||
|
|
e45526b9c0 | ||
|
|
4fbd5707f7 | ||
|
|
7f3273c77f | ||
|
|
893e8b4371 | ||
|
|
449b4d8a65 | ||
|
|
9b20b51389 | ||
|
|
3cccded86d | ||
|
|
6bc393676d | ||
|
|
c37f091cc5 | ||
|
|
a1b633e28e | ||
|
|
beada19ad0 | ||
|
|
aa96d8d053 | ||
|
|
669abd58bc | ||
|
|
f76dd99299 | ||
|
|
cd2b7448f4 | ||
|
|
0b270e2b08 | ||
|
|
3fc1885f48 | ||
|
|
7bda6992e5 | ||
|
|
9f33de7071 | ||
|
|
473ca0849d | ||
|
|
43c9818895 | ||
|
|
d36dbe6ad6 | ||
|
|
2349f7ea89 | ||
|
|
2530b580a8 | ||
|
|
2304a561ca | ||
|
|
d194bb6143 | ||
|
|
556028eff5 | ||
|
|
ed29d91d42 | ||
|
|
b595d73d6d | ||
|
|
d09c89c63e | ||
|
|
8e245f8a3a | ||
|
|
2c9c4188ae | ||
|
|
7992402ecf | ||
|
|
c1dd38cbff | ||
|
|
18358521f2 | ||
|
|
0bc609257d | ||
|
|
1b93ecfae8 | ||
|
|
92d04d439e | ||
|
|
52f141a5ba | ||
|
|
99624628a9 | ||
|
|
79965c9ee9 | ||
|
|
339dd983ee | ||
|
|
723bc3cae9 | ||
|
|
77df8e574f | ||
|
|
6b5ac42a9b | ||
|
|
29eefe52bb | ||
|
|
9d283dea63 | ||
|
|
f4010cef29 | ||
|
|
d8c6e89a54 | ||
|
|
afc6f79038 | ||
|
|
086db9d6db | ||
|
|
19d8f4f8dd | ||
|
|
1a42dd905c | ||
|
|
b69a97bef3 | ||
|
|
ef2c1e1a24 | ||
|
|
129f315f7c | ||
|
|
fb41d7bf4e | ||
|
|
bfa88384c7 | ||
|
|
e63369fe64 | ||
|
|
1e78a187db | ||
|
|
7786ed7bcb | ||
|
|
a269e3216e | ||
|
|
542c88c60b | ||
|
|
5ed9365bac | ||
|
|
115a1471ae | ||
|
|
6f811f5cb3 | ||
|
|
4a1573de9b | ||
|
|
7aaefd4dce | ||
|
|
bb057491ea | ||
|
|
e57407849a | ||
|
|
36874300c8 | ||
|
|
a23abef9bd | ||
|
|
656416d174 | ||
|
|
168e2a4ccb | ||
|
|
a87756e9b3 | ||
|
|
a659562c36 | ||
|
|
3bf41c2832 | ||
|
|
fad7b35b9a | ||
|
|
059d63cceb | ||
|
|
95ee02ba8e | ||
|
|
71dc5f8291 | ||
|
|
422b967e9a | ||
|
|
a495bbb967 | ||
|
|
f705020348 | ||
|
|
5335489daa | ||
|
|
19082e0504 | ||
|
|
3483bf14b9 | ||
|
|
18e7aa5d19 | ||
|
|
04c86f28b1 | ||
|
|
ab4fe8dd2c | ||
|
|
faeb0aa92a | ||
|
|
c5ffd1fdea | ||
|
|
7ef3be3429 | ||
|
|
3725c1fb4c | ||
|
|
48a6edbdfe | ||
|
|
8bed7bb5f9 | ||
|
|
2f780ed994 | ||
|
|
e914fc2471 | ||
|
|
4a4c5190f0 | ||
|
|
3c218717a9 | ||
|
|
c4fb0e9dbb | ||
|
|
bef8d8192e | ||
|
|
8f92973b8c | ||
|
|
dcaf923517 | ||
|
|
e9b9a6fc03 | ||
|
|
b654413567 | ||
|
|
731a931c0c | ||
|
|
32985aa724 | ||
|
|
9c20e77013 | ||
|
|
4c0f7f9e59 | ||
|
|
cb999a231e | ||
|
|
17609b90c7 | ||
|
|
48aac747ca | ||
|
|
f8ad3c0204 | ||
|
|
119d97f1f6 | ||
|
|
f060eee5a5 | ||
|
|
439ba98e0a | ||
|
|
d00f4e267b | ||
|
|
4c03afe006 | ||
|
|
8a3aa1f5b6 | ||
|
|
487ff4f3aa | ||
|
|
ecb506842b | ||
|
|
ff85575b28 | ||
|
|
ebd413c696 | ||
|
|
0bb89e767a | ||
|
|
dfda79e673 | ||
|
|
f445f76213 | ||
|
|
4953786de1 | ||
|
|
e4e9ed876f | ||
|
|
a76cc9ef88 | ||
|
|
8fa6b6a6ef | ||
|
|
6df203c449 | ||
|
|
54774f6d3b | ||
|
|
69e66d7bb5 | ||
|
|
c51b50b44c | ||
|
|
ed0828d0a8 | ||
|
|
302bf23f82 | ||
|
|
f30f3b6c87 | ||
|
|
d01e95f4b4 | ||
|
|
bc3dd2452f | ||
|
|
c0bbdde8ba | ||
|
|
61386e1abd | ||
|
|
00f63fa8f7 | ||
|
|
4d2ea847fa | ||
|
|
4ed9b1ca9a | ||
|
|
f33fe94c0d | ||
|
|
a77456e8aa | ||
|
|
5e50791a9d | ||
|
|
58ca8ed97f | ||
|
|
27bcc0bf07 | ||
|
|
03c4a6299b | ||
|
|
c4e1edbb83 | ||
|
|
627b9df85f | ||
|
|
6549e5e052 | ||
|
|
3fcdbbe734 | ||
|
|
93923141d5 | ||
|
|
b31293c984 | ||
|
|
cd62f9f7cb | ||
|
|
c5e569d178 | ||
|
|
41d180f90a | ||
|
|
fa1b96bd36 | ||
|
|
9628bb0b44 | ||
|
|
3013ad6624 | ||
|
|
29ddbbaa86 | ||
|
|
258b98d15b | ||
|
|
f5816c883f | ||
|
|
b64e6ccc6c | ||
|
|
9e8dd28b0e | ||
|
|
42266b04a5 | ||
|
|
1b10860f36 | ||
|
|
250dac5b71 | ||
|
|
cb16f733b9 | ||
|
|
a40f217a38 | ||
|
|
a0576d7b2a | ||
|
|
e2f00ce846 | ||
|
|
7dc147c1f2 | ||
|
|
3fe5984e46 | ||
|
|
25b9ac18e6 | ||
|
|
edfad34d39 | ||
|
|
60e2dbe810 | ||
|
|
31de2833b4 | ||
|
|
4ac2db271d | ||
|
|
b661d72252 | ||
|
|
ec756afe87 | ||
|
|
64cdd82146 | ||
|
|
52b250f466 | ||
|
|
7d458e852e | ||
|
|
aa2594c06c | ||
|
|
8afb7a40c6 | ||
|
|
98d36a4037 | ||
|
|
4e1e0c9ee3 | ||
|
|
eb2720a908 | ||
|
|
45f7c83da4 | ||
|
|
b2d359b6ac | ||
|
|
769512db2d | ||
|
|
952029a47b | ||
|
|
6e5a712f6e | ||
|
|
40b50755d3 | ||
|
|
4d70671231 | ||
|
|
c4f88b0687 | ||
|
|
43e7e6e475 | ||
|
|
2087d4602b | ||
|
|
ca6b30a568 | ||
|
|
f9938da67d | ||
|
|
abe4219256 | ||
|
|
d0bd344a42 | ||
|
|
3939d78336 | ||
|
|
27f5cd2afd | ||
|
|
540f9a67f3 | ||
|
|
c0f44ca421 | ||
|
|
5af739dfc1 | ||
|
|
16c8c98895 | ||
|
|
ae93a3e681 | ||
|
|
26847f92b3 | ||
|
|
f3b228c91f | ||
|
|
ef91d7e883 | ||
|
|
982ccd784e | ||
|
|
3d3e9ab635 | ||
|
|
6dfd8f184c | ||
|
|
13a2516a6a | ||
|
|
2311b0b43b | ||
|
|
1c0d2b37a7 | ||
|
|
c23eb17997 | ||
|
|
6fa4834f31 | ||
|
|
aaf47578e8 | ||
|
|
bd4d24f0fa | ||
|
|
cd103e442f | ||
|
|
af2c9077f7 | ||
|
|
703cf8cef7 | ||
|
|
297b67d2b1 | ||
|
|
6f3d6ded47 | ||
|
|
68e348f960 | ||
|
|
cedd768397 | ||
|
|
965b3759b1 | ||
|
|
c123974f42 | ||
|
|
9fbff009e9 | ||
|
|
6adba09463 | ||
|
|
f36b9940e8 | ||
|
|
1d8e80aa3b | ||
|
|
5abe3b59f5 | ||
|
|
692d807fa0 | ||
|
|
84179b8a4e | ||
|
|
0a3691d6ac | ||
|
|
33e7640fb0 | ||
|
|
73b10bc8ca | ||
|
|
18f71fd410 | ||
|
|
459c16ca99 | ||
|
|
b87d2e9ec2 | ||
|
|
919f35644e | ||
|
|
35a39c19a3 | ||
|
|
ec668ce3a7 | ||
|
|
2294eb82c9 | ||
|
|
0386488629 | ||
|
|
9d3f3c66da | ||
|
|
77f2d945f0 | ||
|
|
7737375106 | ||
|
|
af2a700671 | ||
|
|
62edeeed16 | ||
|
|
697793090d | ||
|
|
b8f0d1a0e4 | ||
|
|
a2adab7283 | ||
|
|
88e67545ef | ||
|
|
7b87d72d80 | ||
|
|
4b234fa0a5 | ||
|
|
3260404fdf | ||
|
|
27a0ed0018 | ||
|
|
9b5eca975b | ||
|
|
a29ce401d5 | ||
|
|
245dc99248 | ||
|
|
707048f6e1 | ||
|
|
8ccca90dca | ||
|
|
73b5cc358e | ||
|
|
e04517af36 | ||
|
|
40e47e6f3f | ||
|
|
4f68212e64 | ||
|
|
8f2047ada4 | ||
|
|
39a25115e0 | ||
|
|
59edad5a00 | ||
|
|
5da724001f | ||
|
|
f614e35443 | ||
|
|
1d79e13133 | ||
|
|
9498f82085 | ||
|
|
62a5a70cd0 | ||
|
|
de56163f97 | ||
|
|
1fcc8074bd | ||
|
|
70e6dc615a | ||
|
|
d7ff3ad0cf | ||
|
|
ad4d6bed9d | ||
|
|
4087a45e73 | ||
|
|
1652540a1f | ||
|
|
48fb8c4f8a | ||
|
|
fc8476544c | ||
|
|
9eea9835ab | ||
|
|
4716f63444 | ||
|
|
6d1ec452fc | ||
|
|
1160b04fb4 | ||
|
|
924fc070f0 | ||
|
|
3443fd85cd | ||
|
|
feaa12a274 | ||
|
|
769eba7535 | ||
|
|
4b85c849ca | ||
|
|
1bfd7ad17e | ||
|
|
694d9ff2eb | ||
|
|
dc348ff93d | ||
|
|
0e20473c97 | ||
|
|
4c228c07f1 | ||
|
|
2d36a8f7da | ||
|
|
efbebe6236 | ||
|
|
25f98bc022 | ||
|
|
b066d1982f | ||
|
|
757e61d94c | ||
|
|
12f65c61a8 | ||
|
|
52a9378257 | ||
|
|
1590a1a538 | ||
|
|
7fe78efda3 | ||
|
|
d35601209e | ||
|
|
22c8010b2d | ||
|
|
6ca1822f36 | ||
|
|
d6e2b657f9 | ||
|
|
512afe2a90 | ||
|
|
83cb28f169 | ||
|
|
3e41f0647e | ||
|
|
61e50e2fda | ||
|
|
7d5185e8f1 | ||
|
|
e4e0862c2e | ||
|
|
3350533f48 | ||
|
|
6bd5e12be3 | ||
|
|
e51e00ac5f | ||
|
|
f480eca668 | ||
|
|
5350a2f1d9 | ||
|
|
328f0e32d8 | ||
|
|
6045ae856b | ||
|
|
ae2e3a1a93 | ||
|
|
091b48de60 | ||
|
|
35133df0de | ||
|
|
616dbd53f0 | ||
|
|
3b8a13a1ed | ||
|
|
9cc949e341 | ||
|
|
5a34b00737 | ||
|
|
603d949354 | ||
|
|
d52ef2f758 | ||
|
|
5e3934446d | ||
|
|
afb08b33c7 | ||
|
|
0d9e3cfa37 | ||
|
|
6d6ff26887 | ||
|
|
2932beddcf | ||
|
|
346f7d0f3e | ||
|
|
6db2596ca9 | ||
|
|
e9b432b1d9 | ||
|
|
c6a8bd65a8 | ||
|
|
acd63c1497 | ||
|
|
6c9ae1100b | ||
|
|
ea8d485d76 | ||
|
|
75b86c9706 | ||
|
|
eef8195569 | ||
|
|
fe6a7e935d | ||
|
|
ba537a95db | ||
|
|
decd0c753a | ||
|
|
1923d87f61 | ||
|
|
f91f369788 | ||
|
|
2047838106 | ||
|
|
031c77f4eb | ||
|
|
5d863f7516 | ||
|
|
a95650111f | ||
|
|
5813a3a99d | ||
|
|
21211308d0 | ||
|
|
e185900270 | ||
|
|
71c76aecc9 | ||
|
|
d3dee3a2fe | ||
|
|
e4c3416f58 | ||
|
|
509a93c7ce | ||
|
|
200b254bad | ||
|
|
10d955f18b | ||
|
|
318b1c00a9 | ||
|
|
195d60f4f8 | ||
|
|
d324c03b6a | ||
|
|
68a992b075 | ||
|
|
061c28cde0 | ||
|
|
b50d777985 | ||
|
|
cc08149d7c | ||
|
|
658e4c5e97 | ||
|
|
e76023be96 | ||
|
|
c05bfe9d6d | ||
|
|
6e5ae98582 | ||
|
|
d394e233bb | ||
|
|
653eda45f8 | ||
|
|
c4f4727ee5 | ||
|
|
eafcdc004d | ||
|
|
030400d50f | ||
|
|
8d0452ed59 | ||
|
|
0aee5b61e3 | ||
|
|
9d684a39da | ||
|
|
45cdc41763 | ||
|
|
de58039b46 | ||
|
|
2f8be2a4b1 | ||
|
|
dcb049df6a | ||
|
|
2a48f7c035 | ||
|
|
7e2643abff | ||
|
|
4c3d1d583a | ||
|
|
5bb95c4110 | ||
|
|
ecdd8513fd | ||
|
|
03cc439b08 | ||
|
|
f07486b563 | ||
|
|
4d45b3e7f9 | ||
|
|
188f889949 | ||
|
|
f97c3c8b06 | ||
|
|
406f342dc3 | ||
|
|
d80a965f97 | ||
|
|
027065a5a1 | ||
|
|
cc85e86ee7 | ||
|
|
3d3e3fd470 | ||
|
|
0daf4b800a | ||
|
|
4692d4b36e | ||
|
|
ba89a6a34a | ||
|
|
158ed299c1 | ||
|
|
438a599288 | ||
|
|
a5e11079d7 | ||
|
|
141cfd562c | ||
|
|
efa7f09048 | ||
|
|
d126263983 | ||
|
|
daa2a205a4 | ||
|
|
b4d95b1406 | ||
|
|
c8d2b5ff44 | ||
|
|
31d55af9c1 | ||
|
|
4cf9990d4e | ||
|
|
54c7dfab83 | ||
|
|
37ea872204 | ||
|
|
a4a5e98cc0 | ||
|
|
baa946c390 | ||
|
|
70deda354a | ||
|
|
89086bdb8d | ||
|
|
504558c0be | ||
|
|
e0b7e63787 | ||
|
|
2229d91c50 | ||
|
|
6fd296c0b0 | ||
|
|
538dbfe585 | ||
|
|
53a7fbf74b | ||
|
|
53c9c40eba | ||
|
|
ddc0010e7d | ||
|
|
122f85f352 | ||
|
|
fc519aa3b3 | ||
|
|
ef6327bb89 | ||
|
|
d6453cf051 | ||
|
|
245bc5dcc0 | ||
|
|
5bc55a042e | ||
|
|
4f19216e45 | ||
|
|
1830059969 | ||
|
|
4a19ff3a7c | ||
|
|
c4a07b7531 | ||
|
|
c1f8d9e3d2 | ||
|
|
bb56ac4ae6 | ||
|
|
136f205fb3 | ||
|
|
6b88a21be8 | ||
|
|
c5720213e4 | ||
|
|
e51bdbeb2d | ||
|
|
f15dc72b89 | ||
|
|
53afdb4b30 | ||
|
|
17bdc29d5b | ||
|
|
fd6eeac6aa | ||
|
|
98edabd42c | ||
|
|
55683e7b3b | ||
|
|
3c32fc1329 | ||
|
|
f36f8067bc | ||
|
|
1dccf5743e | ||
|
|
0b9ff11537 | ||
|
|
da63919811 | ||
|
|
b216c0940c | ||
|
|
a1ea1a7ec5 | ||
|
|
bcf9117957 | ||
|
|
37f4e400e4 | ||
|
|
98bd401534 | ||
|
|
9b32c6e653 | ||
|
|
8cd48cf35a | ||
|
|
84ea0c9a97 | ||
|
|
c8fdb2c1e0 | ||
|
|
b0285d92b4 | ||
|
|
3b77fa5e8c | ||
|
|
96dfbf5d24 | ||
|
|
7469c935f3 | ||
|
|
24d5adfd54 | ||
|
|
755ce9d654 | ||
|
|
3b4814a52e | ||
|
|
0263727b53 | ||
|
|
f45bc35652 | ||
|
|
1a15ed3279 | ||
|
|
eff6dccb3b | ||
|
|
b20c9ad2d1 | ||
|
|
93fe2f6e4d | ||
|
|
f94c2414e6 | ||
|
|
26a6823207 | ||
|
|
84639e444b | ||
|
|
f41b8b90ff | ||
|
|
13323882d4 | ||
|
|
f08d75a84b | ||
|
|
50166d2734 | ||
|
|
13cd0a0502 | ||
|
|
84262acbf0 | ||
|
|
d9cea3b8b0 | ||
|
|
0c726a3fbe | ||
|
|
4b983679a5 | ||
|
|
bbece095fb | ||
|
|
31415e344f | ||
|
|
884f36ba65 | ||
|
|
4d135ac4d8 | ||
|
|
804d0924c9 | ||
|
|
fc16cfcf41 | ||
|
|
304fd03e64 | ||
|
|
4e29f0ee6d | ||
|
|
f2afe64521 | ||
|
|
b387581d4f | ||
|
|
2059972bf7 | ||
|
|
28c90609c9 | ||
|
|
30aa710022 | ||
|
|
eda32520e2 | ||
|
|
66c40bee6f | ||
|
|
827b4f93e4 | ||
|
|
09e294711d | ||
|
|
c29a98ef84 | ||
|
|
8e9cdf8ca3 | ||
|
|
808f9dbc93 | ||
|
|
5d1944bace | ||
|
|
ac748747d4 | ||
|
|
de93408dec | ||
|
|
60d7acb4fc | ||
|
|
e8e537a1c7 | ||
|
|
ded45b4d1a | ||
|
|
2e382c67ec | ||
|
|
411604fa90 | ||
|
|
24108f8110 | ||
|
|
01e9733155 | ||
|
|
dbc9b4db0c | ||
|
|
a380c473b9 | ||
|
|
3a02e599e0 | ||
|
|
be9bb8f18b | ||
|
|
d0e89337da | ||
|
|
dd6d58f873 | ||
|
|
4317cd1ffa | ||
|
|
4bb297afc2 | ||
|
|
5720eaf354 | ||
|
|
12ae11e2ff | ||
|
|
ee7eb1b807 | ||
|
|
1eedc6c42a | ||
|
|
fcfcd4cbce | ||
|
|
71db862dc2 | ||
|
|
2fc49ac564 | ||
|
|
4bc4f4aa1f | ||
|
|
d998e38a12 | ||
|
|
909f905b57 | ||
|
|
c65d888875 | ||
|
|
130794d41c | ||
|
|
83fa4d38a4 | ||
|
|
7d70399d72 | ||
|
|
bb209193c9 | ||
|
|
bce1b352e7 | ||
|
|
fb9781b97b | ||
|
|
931ebab822 | ||
|
|
37b67fa50d | ||
|
|
30f7f9717f | ||
|
|
6faf00b8e5 | ||
|
|
c39159069e | ||
|
|
2c1fb5fd71 | ||
|
|
7bff79bbeb | ||
|
|
cdbbe0dfbe | ||
|
|
7cfa3cbd8a | ||
|
|
f91b1a1771 | ||
|
|
6d66d11046 | ||
|
|
0e90c0fff2 | ||
|
|
46cf22cdff | ||
|
|
01086323b0 | ||
|
|
1b51ee385b | ||
|
|
1ae5918fa8 | ||
|
|
1acbc7b7bd | ||
|
|
a3341006ee | ||
|
|
8461cb3f4b | ||
|
|
26a4be89b1 | ||
|
|
948661d722 | ||
|
|
8fcef225fb | ||
|
|
c52d56964c | ||
|
|
539f367d0b | ||
|
|
0c50d0821f | ||
|
|
3d8ca010b7 | ||
|
|
58c4d0eaeb | ||
|
|
0a83817ace | ||
|
|
44ec450b53 | ||
|
|
ec70282bf7 | ||
|
|
f2aa6ebe15 | ||
|
|
d81f54db0b | ||
|
|
04a1a6dd8f | ||
|
|
b866890b27 | ||
|
|
5ec8c51b98 | ||
|
|
3ee12cbeb4 | ||
|
|
4595e3aa3e | ||
|
|
ffa25be3d2 | ||
|
|
5330faf5a0 | ||
|
|
4ebbf69134 | ||
|
|
76211709a3 | ||
|
|
e9a74c17f8 | ||
|
|
7a07f1a9e7 | ||
|
|
7c4e3715b3 | ||
|
|
da32ca4948 | ||
|
|
abdc022b20 | ||
|
|
c4fe98977a | ||
|
|
81c6b46fc6 | ||
|
|
3bfc69740b | ||
|
|
4f0d72bf43 | ||
|
|
564fd21e87 | ||
|
|
e16af9bdc9 | ||
|
|
1fe7ad850b | ||
|
|
438649ffee | ||
|
|
c622ebf890 | ||
|
|
0f5da429c5 | ||
|
|
439c3574ed | ||
|
|
0489489322 | ||
|
|
1db4afac6a | ||
|
|
f17b836d24 | ||
|
|
2dab93c2e8 | ||
|
|
76f4b02b06 | ||
|
|
a52af84dcf | ||
|
|
cc34a8ac3c | ||
|
|
69be49bac1 | ||
|
|
db1178b5df | ||
|
|
2153a14872 | ||
|
|
6994a02c15 | ||
|
|
649737b6a8 | ||
|
|
4c9773d55f | ||
|
|
6c253a41c2 | ||
|
|
2fae1d9507 | ||
|
|
909c45f1b9 | ||
|
|
173442bb2e | ||
|
|
01e99db675 | ||
|
|
765a2c6045 | ||
|
|
610e29fa31 | ||
|
|
50e27ffc37 | ||
|
|
aecff5237b | ||
|
|
4559d46190 | ||
|
|
4d9a1cf14b | ||
|
|
302250f241 | ||
|
|
14e4b3adde | ||
|
|
869a35faef | ||
|
|
bf7c1c6c25 | ||
|
|
c929547164 | ||
|
|
e58b0b3507 | ||
|
|
59acccfa6a | ||
|
|
a5ffa1da34 | ||
|
|
9488ed46ee | ||
|
|
d11d07aaf5 | ||
|
|
3eeaa9189c | ||
|
|
10340fe234 | ||
|
|
9284c07a84 | ||
|
|
aa7f70c31e | ||
|
|
960a0eacf3 | ||
|
|
0a42a3eb06 | ||
|
|
41fc41829c | ||
|
|
bae85660da | ||
|
|
a760684674 | ||
|
|
c2d3ce9ce5 | ||
|
|
c7873dd03d | ||
|
|
6e119049ce | ||
|
|
a9c9210bf9 | ||
|
|
229ff632b6 | ||
|
|
ace0933bed | ||
|
|
58025c572c | ||
|
|
47ce461d97 | ||
|
|
6603cc4405 | ||
|
|
e10582ce4f | ||
|
|
ddcfab3182 | ||
|
|
e75057956a | ||
|
|
d81d3fc830 | ||
|
|
5ac3b8d5d8 | ||
|
|
0e7d4a5703 | ||
|
|
56121d01ea | ||
|
|
cfa985db43 | ||
|
|
dad58d8940 | ||
|
|
4da0cdb959 | ||
|
|
5e0e1fac87 | ||
|
|
ee29b0454c | ||
|
|
61567adc5d | ||
|
|
7efb24917f | ||
|
|
b5c013682b | ||
|
|
029fce10c9 | ||
|
|
7542d66dbd | ||
|
|
e7995b4d5d | ||
|
|
416eaf2ae1 | ||
|
|
49a4f27d42 | ||
|
|
0e8c2b0395 | ||
|
|
54afb85d0c | ||
|
|
14c50d2fce | ||
|
|
6e44e0a476 | ||
|
|
885566295a | ||
|
|
b8ed00bd64 | ||
|
|
8130d92602 | ||
|
|
103ee12f00 | ||
|
|
4b49b84976 | ||
|
|
f1e8f69d2c | ||
|
|
7f083a049d | ||
|
|
e5ea018185 | ||
|
|
bfa0f02303 | ||
|
|
861de8a6e9 | ||
|
|
6e24fc37db | ||
|
|
36745a80c3 | ||
|
|
d2116f38fe | ||
|
|
a5acc9ee1f | ||
|
|
b58d9f1c2a | ||
|
|
f5d2d7b29b | ||
|
|
cf6e833169 | ||
|
|
9adde75be3 | ||
|
|
9c26387ce0 | ||
|
|
25b482f1c9 | ||
|
|
a659e287fb | ||
|
|
80e65e08b5 | ||
|
|
b70b5a3011 | ||
|
|
1976b3d9b6 | ||
|
|
19794e6857 | ||
|
|
72742f5316 | ||
|
|
9549949228 | ||
|
|
16dea7b90d | ||
|
|
9e1ce1ed52 | ||
|
|
ea1a64477f | ||
|
|
a4bc167ed4 | ||
|
|
737046916c | ||
|
|
3b15eefcad | ||
|
|
b62d101115 | ||
|
|
bb4b410512 | ||
|
|
ca42a50de6 | ||
|
|
69c626e720 | ||
|
|
3441b2df65 | ||
|
|
28427ce2e8 | ||
|
|
caf449a991 | ||
|
|
416fb50594 | ||
|
|
fba72cb60d | ||
|
|
564f609885 | ||
|
|
787e56ab5c | ||
|
|
3be997cfa9 | ||
|
|
6d735c11c6 | ||
|
|
0ce10532b3 | ||
|
|
5ee9d3111d | ||
|
|
13d087e62d | ||
|
|
fdeec6896c | ||
|
|
033dd77504 | ||
|
|
f375c86dfb | ||
|
|
12f16b7a26 | ||
|
|
5d7bbdc837 | ||
|
|
3156e803be | ||
|
|
f531dd839c | ||
|
|
c0b3424a23 | ||
|
|
b4f3d08725 | ||
|
|
43d5e2d8b4 | ||
|
|
d5ee931287 | ||
|
|
ac0f506d0e | ||
|
|
eda124ec32 | ||
|
|
28b1caa730 | ||
|
|
cad9518928 | ||
|
|
e72ba73e70 | ||
|
|
fc3730fcc2 | ||
|
|
71eeaa7276 | ||
|
|
508fb6aa5b | ||
|
|
7e91e1871d | ||
|
|
77aafc2984 | ||
|
|
623c7da747 | ||
|
|
a981dc93d0 | ||
|
|
96ac27e68c | ||
|
|
a6648b5372 | ||
|
|
b08b9ab83b | ||
|
|
fc1fa28556 | ||
|
|
7544ddbfef | ||
|
|
e41aea0acf | ||
|
|
d569e72ad4 | ||
|
|
c56bdbc1c5 | ||
|
|
10ac854358 | ||
|
|
d08ebfe4d3 | ||
|
|
ca474de639 | ||
|
|
e654714973 | ||
|
|
ed006a0612 | ||
|
|
c2402053b9 | ||
|
|
229ca0914a | ||
|
|
bc0e563092 | ||
|
|
84de6ce036 | ||
|
|
31c8b527c6 | ||
|
|
1b00a3ed54 | ||
|
|
02131ffb62 | ||
|
|
47c84335f0 | ||
|
|
eedb6fa3c4 | ||
|
|
ea280b2c0e | ||
|
|
54e7c76d99 | ||
|
|
8fdab9f631 | ||
|
|
5ef3ef9c4a | ||
|
|
974f1f4895 | ||
|
|
8f32902ce6 | ||
|
|
4223a59497 | ||
|
|
b141762070 | ||
|
|
f7641be434 | ||
|
|
6168bf0062 | ||
|
|
a54a307386 | ||
|
|
2f781a53a9 | ||
|
|
40d0e0eda0 | ||
|
|
298ccf6487 | ||
|
|
8b294c6c90 | ||
|
|
f886651cf0 | ||
|
|
b2ba8b9969 | ||
|
|
909d6fcf51 | ||
|
|
3b364330ad | ||
|
|
b0933dd473 | ||
|
|
8406312571 | ||
|
|
4296b456e5 | ||
|
|
bd59bc3e4a | ||
|
|
5e048d1fa5 | ||
|
|
c019d06de3 | ||
|
|
5a2c5227f4 | ||
|
|
5eb551b340 | ||
|
|
4f328d8388 | ||
|
|
7586145235 | ||
|
|
33361929fe | ||
|
|
aec7a67d0f | ||
|
|
242955ce22 | ||
|
|
6c2079b778 | ||
|
|
22ca7e44d6 | ||
|
|
e5a33723fc | ||
|
|
199a35a105 | ||
|
|
a2f4b301f3 | ||
|
|
e27f4da9c6 | ||
|
|
ebb1f12aa7 | ||
|
|
caa9ac4ed9 | ||
|
|
4846dcdfeb | ||
|
|
c98c246fc2 | ||
|
|
ad793ee3f4 | ||
|
|
b0e6606b98 | ||
|
|
f4ae0cf19c | ||
|
|
36bf8af820 | ||
|
|
ba1a1aecaa | ||
|
|
f50aabf012 | ||
|
|
913e6833d5 | ||
|
|
f03c7521c6 | ||
|
|
2cd67cc92b | ||
|
|
e8107610d1 | ||
|
|
3107f79cea | ||
|
|
a783f5c260 | ||
|
|
068fb03011 | ||
|
|
b50090f850 | ||
|
|
2bad639aee | ||
|
|
d47e89d704 | ||
|
|
6e28e67741 | ||
|
|
910ef57109 | ||
|
|
1bb141c465 | ||
|
|
193e857392 | ||
|
|
204a19b431 | ||
|
|
28b1e81883 | ||
|
|
a57707b8d8 | ||
|
|
54511b4198 | ||
|
|
dd74a851f3 | ||
|
|
befd696720 | ||
|
|
ae4e76395f | ||
|
|
69648f0a6f | ||
|
|
0738ea7d0f | ||
|
|
288a0634c2 | ||
|
|
c89786bc2d | ||
|
|
8d97d9598e | ||
|
|
6062601c4d | ||
|
|
7ac0d86992 | ||
|
|
058a9ab136 | ||
|
|
780a8cc149 | ||
|
|
bf6c08a9ea | ||
|
|
143f8f69d6 | ||
|
|
3fea2620e6 | ||
|
|
77501f3ed0 | ||
|
|
6ef43cd96e | ||
|
|
67073daf19 | ||
|
|
3b0ce8e132 | ||
|
|
3785439917 | ||
|
|
bfac291838 | ||
|
|
6b71f56025 | ||
|
|
297e6d0b73 | ||
|
|
78c70ab948 | ||
|
|
d4bb421ce2 | ||
|
|
422803e866 | ||
|
|
4cf5c3568d | ||
|
|
de848a08d3 | ||
|
|
6ce050d264 | ||
|
|
940eedfb27 | ||
|
|
366f859ada | ||
|
|
c979de1eed | ||
|
|
740941c8b8 | ||
|
|
7193a73ca0 | ||
|
|
517062039e | ||
|
|
d62bc8cfbf | ||
|
|
e972d6b8c0 | ||
|
|
3890a74565 | ||
|
|
605382562d | ||
|
|
b28f594917 | ||
|
|
6fea48c54f | ||
|
|
4ab650d15b | ||
|
|
c886afb502 | ||
|
|
71e43852ce | ||
|
|
2b1ef95415 | ||
|
|
715fa3303e | ||
|
|
135c0b6cb5 | ||
|
|
fbd435898b | ||
|
|
3d1d219561 | ||
|
|
489bd59b72 | ||
|
|
6c071cbdd8 | ||
|
|
969a7133a9 | ||
|
|
d2192c0759 | ||
|
|
5e7ab8baf3 | ||
|
|
6ceca90c44 | ||
|
|
2249f19120 | ||
|
|
93d76ac23f | ||
|
|
62adc01980 | ||
|
|
addf0309ec | ||
|
|
13b31b0804 | ||
|
|
19f8f85c51 | ||
|
|
6bf49d49e7 | ||
|
|
db45e04d58 | ||
|
|
77e51ff9c4 | ||
|
|
0d16a9befb | ||
|
|
f77a375354 | ||
|
|
3ceca9b7b1 | ||
|
|
f4b98e9628 | ||
|
|
0bb785c979 | ||
|
|
7ff68d5e0d | ||
|
|
855acc9748 | ||
|
|
cc6bdfb045 | ||
|
|
2661c2e213 | ||
|
|
76e748ccc1 | ||
|
|
15f09f8068 | ||
|
|
0d49de51b7 | ||
|
|
20534c9beb | ||
|
|
2edfae5070 | ||
|
|
49f6dad13f | ||
|
|
8eff34ee0b | ||
|
|
6e2708e042 | ||
|
|
0e58853be3 | ||
|
|
6377922716 | ||
|
|
322d781192 | ||
|
|
2107ea9773 | ||
|
|
5fd58a0103 | ||
|
|
69c9fe357d | ||
|
|
98585a9688 | ||
|
|
aaf69c422e | ||
|
|
866d676582 | ||
|
|
deb7f4d474 | ||
|
|
a3e31a69df | ||
|
|
78a843e8ac | ||
|
|
3d3385654a | ||
|
|
8c41c614eb | ||
|
|
04eabf8d9f | ||
|
|
bafd359083 | ||
|
|
a3994bc45f | ||
|
|
f8b61e4eca | ||
|
|
dd9e786a8e | ||
|
|
84f45e1e03 | ||
|
|
1e1645e214 | ||
|
|
44157c421f | ||
|
|
4096b54560 | ||
|
|
5c1c13e745 | ||
|
|
7b5923e98b | ||
|
|
4d510be2c9 | ||
|
|
877dfae044 | ||
|
|
33ef7990b0 | ||
|
|
be7bbe3aa9 | ||
|
|
75513a46dc | ||
|
|
29b544d83c | ||
|
|
3088808926 | ||
|
|
29cfeb7cee | ||
|
|
688d170de7 | ||
|
|
707d3e0a62 | ||
|
|
2ad7b97f1c | ||
|
|
762aefd71b | ||
|
|
14bb4cbe1e | ||
|
|
a423afddc1 | ||
|
|
ec15d6f383 | ||
|
|
82d7292ee7 | ||
|
|
d32af86e75 | ||
|
|
40dd25d6c2 | ||
|
|
7661625c39 | ||
|
|
1ca8f33b4e | ||
|
|
d310ccad0a | ||
|
|
bbae05413d | ||
|
|
921675c4e2 | ||
|
|
09127aa358 | ||
|
|
2d764fe1c6 | ||
|
|
4f3453dbbf | ||
|
|
0990b42ebc | ||
|
|
219bdb9809 | ||
|
|
4e1619d8ee | ||
|
|
a7a0f92e58 | ||
|
|
07e0f7bf59 | ||
|
|
14a0abbfa9 | ||
|
|
89356ff16d | ||
|
|
94b12eae92 | ||
|
|
87563c6638 | ||
|
|
bb6a58aee2 | ||
|
|
08e55b7801 | ||
|
|
7d0c600504 | ||
|
|
6d6ef07e30 | ||
|
|
238ea7f0f0 | ||
|
|
1ad7af3c3b | ||
|
|
0b0c9be771 | ||
|
|
3f8d87d82c | ||
|
|
43db0d543d | ||
|
|
f768d8c93f | ||
|
|
f510b49cc2 | ||
|
|
d8755fd1c0 | ||
|
|
ceadaed108 | ||
|
|
318257f3a3 | ||
|
|
0211843062 | ||
|
|
7772811585 | ||
|
|
fe10c74faa | ||
|
|
92ba74a3ee | ||
|
|
28256209b0 | ||
|
|
2435e59890 | ||
|
|
ea79357fd3 | ||
|
|
e75df56317 | ||
|
|
f3ee55e042 | ||
|
|
a1c456b7c3 | ||
|
|
1eb34e062c | ||
|
|
221d610d55 | ||
|
|
157a98edf7 | ||
|
|
a476664144 | ||
|
|
14d27112e9 | ||
|
|
6f11dc03b9 | ||
|
|
83e7d3dd67 | ||
|
|
3c8e66d580 | ||
|
|
6daf17f974 | ||
|
|
5120322cea | ||
|
|
9b00c14fff | ||
|
|
d9cd753835 | ||
|
|
b076b69e68 | ||
|
|
f622a2e79c | ||
|
|
7d0938d481 | ||
|
|
a42a0f5fca | ||
|
|
ad5cddc007 | ||
|
|
061dd7e84e | ||
|
|
18aa5c921f | ||
|
|
cf66942505 | ||
|
|
7e50d3e571 | ||
|
|
b4b63cd698 | ||
|
|
55698548dd | ||
|
|
013fd9bf59 | ||
|
|
9f3ce0dd97 | ||
|
|
ecb2ebfba4 | ||
|
|
e4f55a7ec0 | ||
|
|
009158e1f8 | ||
|
|
fb04f3a58d | ||
|
|
fb76095378 | ||
|
|
8b510ad8dc | ||
|
|
9b7dfd677d | ||
|
|
9b8c871874 | ||
|
|
2a06fd98c0 | ||
|
|
9680176fa9 | ||
|
|
eb012a5993 | ||
|
|
63d9ee9523 | ||
|
|
61094d350b | ||
|
|
a486aafe7c | ||
|
|
12fe6ff734 | ||
|
|
fd44322b4f | ||
|
|
e7cb317c7d | ||
|
|
500b7318be | ||
|
|
bd042d9cc3 | ||
|
|
6569a58518 | ||
|
|
816adcfdac | ||
|
|
b9ab5939a4 | ||
|
|
fcde059ca4 | ||
|
|
39ecd94010 | ||
|
|
c0ba0c9099 | ||
|
|
7e9f1c33d0 | ||
|
|
c02f94392b | ||
|
|
52137ceed0 | ||
|
|
f303de12d8 | ||
|
|
0c61a8887e | ||
|
|
facd580f28 | ||
|
|
9e12b7c3c2 | ||
|
|
7fd1d75738 | ||
|
|
52a45ed191 | ||
|
|
1c3cde110d | ||
|
|
8a6d2bbd3d | ||
|
|
ac471fadd6 | ||
|
|
d539dae6d0 | ||
|
|
1bf696f392 | ||
|
|
df89f30b4a | ||
|
|
19f863ec13 | ||
|
|
445f39a4a3 | ||
|
|
12d23aae02 | ||
|
|
1c3c11a4cc | ||
|
|
516a6cc59d | ||
|
|
11f8c74c51 | ||
|
|
993522598b | ||
|
|
0532a521a2 | ||
|
|
b6efe30527 | ||
|
|
d925879366 | ||
|
|
374e3a0890 | ||
|
|
891d7da6ee | ||
|
|
c5e979ceb7 | ||
|
|
c6318ffaa0 | ||
|
|
f40725bb50 | ||
|
|
11ba220e02 | ||
|
|
b9b4200504 | ||
|
|
68bb317ce1 | ||
|
|
c7bbd1aef2 | ||
|
|
d620ef0d55 | ||
|
|
7b79eaf5be | ||
|
|
3eed5d8c72 | ||
|
|
efad6942e2 | ||
|
|
242a6de719 | ||
|
|
351ecbbcce | ||
|
|
eca114ae95 | ||
|
|
15e125c751 | ||
|
|
9f888fdb97 | ||
|
|
0448f240a0 | ||
|
|
37568b26ed | ||
|
|
9e5698b967 | ||
|
|
d586f4a103 | ||
|
|
2a6fb2867e | ||
|
|
f783f34e0b | ||
|
|
ef6c236655 | ||
|
|
dddd285d3b | ||
|
|
a66f7cb9bc | ||
|
|
5484a41960 | ||
|
|
0b8a6da817 | ||
|
|
6bf7fd997a | ||
|
|
62655b05f4 | ||
|
|
cb61e91023 | ||
|
|
8a2b50dca6 | ||
|
|
d3d8a782b5 | ||
|
|
76d03fccb9 | ||
|
|
0ccdc5b4af | ||
|
|
11bd936f0b | ||
|
|
9498856b22 | ||
|
|
637397f621 | ||
|
|
262fc929aa | ||
|
|
ec7a7c0f7c | ||
|
|
3f86fd82f8 | ||
|
|
4cc3dfe27c | ||
|
|
ddb0afbc44 | ||
|
|
3c25ddd9ff | ||
|
|
78402bf596 | ||
|
|
7cab6798c0 | ||
|
|
18a5b8dfc6 | ||
|
|
88e0127f44 | ||
|
|
109e047a28 | ||
|
|
77d647b675 | ||
|
|
bd063e47d7 | ||
|
|
8f33e80515 | ||
|
|
16d825adbc | ||
|
|
944588e732 | ||
|
|
7f8c925319 | ||
|
|
956aa68fb5 | ||
|
|
05ea571b08 | ||
|
|
9124a76ae7 | ||
|
|
59a5ba8938 | ||
|
|
b44b920997 | ||
|
|
9f80c6c989 | ||
|
|
06f4a56469 | ||
|
|
7927ebf20e | ||
|
|
c527340cb6 | ||
|
|
4d785fff99 | ||
|
|
5a767863bd | ||
|
|
7c98735c0d | ||
|
|
baf2b87a0d | ||
|
|
f52ce6529b | ||
|
|
cc538ddfa6 | ||
|
|
75191e8f2f | ||
|
|
61079547f0 | ||
|
|
f7ac73998a | ||
|
|
14ac8a528e | ||
|
|
d314c602d5 | ||
|
|
1613aa45bc | ||
|
|
fa15fcc53e | ||
|
|
0b039f3c6b | ||
|
|
b4aa33b6d3 | ||
|
|
a01f596474 | ||
|
|
7f80054dfd | ||
|
|
4ba8b53152 | ||
|
|
f3227c3f1a | ||
|
|
49ec664238 | ||
|
|
716a9ccb71 | ||
|
|
61441a1014 | ||
|
|
1b43b0e2df | ||
|
|
28098b6632 | ||
|
|
8cf30c728e | ||
|
|
1fc7134f21 | ||
|
|
faecb4f01d | ||
|
|
e9232a4b67 | ||
|
|
decb137185 | ||
|
|
5f082b9876 | ||
|
|
922de414ef | ||
|
|
990ca86de6 | ||
|
|
11f3927c58 | ||
|
|
469eeea370 | ||
|
|
4c4c878b1b | ||
|
|
d1952f28d9 | ||
|
|
18df46fbe9 | ||
|
|
4622aea86a | ||
|
|
acdf5444e4 | ||
|
|
ca08101f7e | ||
|
|
8cd509e58e | ||
|
|
b0905c67ba | ||
|
|
737f5efbfb | ||
|
|
8d9875cc7b | ||
|
|
c073138d6d | ||
|
|
7a713a4932 | ||
|
|
56edff90ba | ||
|
|
16aacf1780 | ||
|
|
31687178d2 | ||
|
|
92e50d952f | ||
|
|
e903ce10ce | ||
|
|
c0462358ca | ||
|
|
a28f5a89b3 | ||
|
|
8672ae58e2 | ||
|
|
e2de3b0b81 | ||
|
|
dc12b4476a | ||
|
|
e35eebd4d4 | ||
|
|
e47f58f4ce | ||
|
|
e7bab669fa | ||
|
|
184ae44dea | ||
|
|
a0f2203f22 | ||
|
|
dd8de0c41f | ||
|
|
a0e93d0482 | ||
|
|
a3600b94db | ||
|
|
19236b6e43 | ||
|
|
d4d47b1e58 | ||
|
|
bda6f39d48 | ||
|
|
2610a45a27 | ||
|
|
23d0e36167 | ||
|
|
ef4b18f341 | ||
|
|
4356d34542 | ||
|
|
1f01052955 | ||
|
|
a8d0e04912 | ||
|
|
c091092174 | ||
|
|
c0f68ec400 | ||
|
|
69304611db | ||
|
|
2e4b8d07cc | ||
|
|
a89299acb2 | ||
|
|
bfa26fd447 | ||
|
|
883d691c2b | ||
|
|
30b2a94582 | ||
|
|
a2382ce6a2 | ||
|
|
a8c3431e61 | ||
|
|
f6e3e3f049 | ||
|
|
a388884675 | ||
|
|
4ca760d9c9 | ||
|
|
554080d89b | ||
|
|
86973f8ede | ||
|
|
948365b1c8 | ||
|
|
d874d93e24 | ||
|
|
6b4304efda | ||
|
|
57d3152cd0 | ||
|
|
36451319c1 | ||
|
|
cb329400df | ||
|
|
8d9c9c2690 | ||
|
|
7572b4d400 | ||
|
|
78a338159d | ||
|
|
013e9294f6 | ||
|
|
0734d9b877 | ||
|
|
9de36c5592 | ||
|
|
d3aef0d378 | ||
|
|
2e02654004 | ||
|
|
f4e27bcbbc | ||
|
|
0487067964 | ||
|
|
efd00238e2 | ||
|
|
dc4d0398f3 | ||
|
|
a8a842332b | ||
|
|
dda337bdf2 | ||
|
|
c2241dccc5 | ||
|
|
c197a46e7e | ||
|
|
d169f62d28 | ||
|
|
f3f55b30b0 | ||
|
|
457fa52111 | ||
|
|
e15bdea663 | ||
|
|
53433884ee | ||
|
|
f9649a029b | ||
|
|
0a40bbd0d0 | ||
|
|
f7921b5ab3 | ||
|
|
913faf2ef4 | ||
|
|
9efd668a57 | ||
|
|
f1b4b13e64 | ||
|
|
8fc4078429 | ||
|
|
0c6c78d149 | ||
|
|
e09694bde8 | ||
|
|
3e7965a5a5 | ||
|
|
90ff4e6fc8 | ||
|
|
dc0788c864 | ||
|
|
e3941d0965 | ||
|
|
ae5661d5dc | ||
|
|
867ddebe07 | ||
|
|
bb73332168 | ||
|
|
06da75ffe0 | ||
|
|
9e3570260b | ||
|
|
28a7be69ea | ||
|
|
084b1c7969 | ||
|
|
6d738f6a3f | ||
|
|
19229f2fa0 | ||
|
|
a99799caa3 | ||
|
|
20c5a8788d | ||
|
|
b68df415a9 | ||
|
|
a09b973c2e | ||
|
|
269ccaa431 | ||
|
|
47963f0083 | ||
|
|
1bc76813f3 | ||
|
|
66d986478c | ||
|
|
e53d57664d | ||
|
|
bb07e2710e | ||
|
|
45191dd6a5 | ||
|
|
cc2110440a | ||
|
|
4f965296fc | ||
|
|
eb326cdbc8 | ||
|
|
0afa9cede5 | ||
|
|
3759476b38 | ||
|
|
2124de80a5 | ||
|
|
8a1d6a1bb2 | ||
|
|
b1faa46d3a | ||
|
|
956a029ede | ||
|
|
b1aa7aecf0 | ||
|
|
389ecbe96d | ||
|
|
be22891f71 | ||
|
|
132b5d6435 | ||
|
|
78202100df | ||
|
|
ecb6c20915 | ||
|
|
e1c6564d5e | ||
|
|
13b6a3a15e | ||
|
|
2128bd25e4 | ||
|
|
15e7712a26 | ||
|
|
3882bbbf35 | ||
|
|
5138b7d209 | ||
|
|
4db68b50f2 | ||
|
|
c02179a765 | ||
|
|
62af76c646 | ||
|
|
962884cdec | ||
|
|
c513d4ecd6 | ||
|
|
2f1ca1b6b3 | ||
|
|
11293d071f | ||
|
|
660d23aa04 | ||
|
|
1a76242d99 | ||
|
|
4cb25e9584 | ||
|
|
4ba33fa1ed | ||
|
|
31857082f4 | ||
|
|
41c9377db0 | ||
|
|
ab25fe9e37 | ||
|
|
3edf7c5386 | ||
|
|
0973e86d8a | ||
|
|
bac94f85c1 | ||
|
|
d3354c543e | ||
|
|
dd8e442bda | ||
|
|
a319bae6e2 | ||
|
|
d246b41573 | ||
|
|
c2f2e33a5e | ||
|
|
743dce6a4b | ||
|
|
aa0dafcc1f | ||
|
|
680eeecc3b | ||
|
|
1a1f454241 | ||
|
|
e1b60aa4e3 | ||
|
|
da017fbeb9 | ||
|
|
5f86eb8d63 | ||
|
|
2508d8e2b4 | ||
|
|
d6add763c7 | ||
|
|
1eae455acb | ||
|
|
94c310fc14 | ||
|
|
2a42960ff2 | ||
|
|
ad0bfdfb25 | ||
|
|
68e77ac051 | ||
|
|
aabb40e34d | ||
|
|
fe0b88d291 | ||
|
|
6059a6875a | ||
|
|
4ccb5a30d9 | ||
|
|
1284121d89 | ||
|
|
f5cd20d80b | ||
|
|
16f9b6f5e4 | ||
|
|
13c44dd318 | ||
|
|
caf91ac159 | ||
|
|
8c057af862 | ||
|
|
da93a1dab9 | ||
|
|
889674ef43 | ||
|
|
0656f13107 | ||
|
|
3a04cfedab | ||
|
|
ad86b80375 | ||
|
|
464826c232 | ||
|
|
eaeae4a1ba | ||
|
|
5ddf4e4ed7 | ||
|
|
2d45af790e | ||
|
|
88c71d1b7d | ||
|
|
9785a8ae34 | ||
|
|
c470e15d45 | ||
|
|
d23a4f50bd | ||
|
|
8ef19e7664 | ||
|
|
0e1005ca92 | ||
|
|
ee291a15da | ||
|
|
d1ca934115 | ||
|
|
87e0eee92b | ||
|
|
746bc168e6 | ||
|
|
a6c3ed5b36 | ||
|
|
67ce03d7dd | ||
|
|
49e038c724 | ||
|
|
940cf978b1 | ||
|
|
50946b59c1 | ||
|
|
63debf5032 | ||
|
|
615e7b2747 | ||
|
|
53f1e73535 | ||
|
|
5fe9bb717d | ||
|
|
d094e4bdbe | ||
|
|
e70b3ef598 | ||
|
|
6a4d881a78 | ||
|
|
18e77d606c | ||
|
|
79c3a8e03b | ||
|
|
4102aaaf15 | ||
|
|
c6263eb253 | ||
|
|
8ca86e2f52 | ||
|
|
0d880479f0 | ||
|
|
aad76090ce | ||
|
|
a6dc6f72b3 | ||
|
|
afa5809473 | ||
|
|
e17710c478 | ||
|
|
0930ac497f | ||
|
|
d94f08f0e7 | ||
|
|
b689eca8a0 | ||
|
|
722dedb04d | ||
|
|
aabc33c772 | ||
|
|
e311613fc8 | ||
|
|
7ab9c4ccee | ||
|
|
06776b612c | ||
|
|
be80ad1607 | ||
|
|
05d842bcd8 | ||
|
|
07744ccf3d | ||
|
|
ae5649d3f7 | ||
|
|
00fbf58902 | ||
|
|
476efd7d37 | ||
|
|
e10ee89ec4 | ||
|
|
08fbf667f9 | ||
|
|
c09a325d3e | ||
|
|
98031a4147 | ||
|
|
2eebd8d939 | ||
|
|
50bebd6f0b | ||
|
|
3923484341 | ||
|
|
2e0161c6c5 | ||
|
|
d985861462 | ||
|
|
1d97a4549d | ||
|
|
0b2c1dc871 | ||
|
|
d2591704e8 | ||
|
|
b8b13ccd5c | ||
|
|
00bdca7684 | ||
|
|
ce5e9a71b5 | ||
|
|
4116cbe2c0 | ||
|
|
2eca75ccdd | ||
|
|
22b0ea1cf0 | ||
|
|
554a7cb33a | ||
|
|
61a40ddff8 | ||
|
|
70c409f0e8 | ||
|
|
3fa630639f | ||
|
|
209f16455d | ||
|
|
1712d0930c | ||
|
|
05cd88ae42 | ||
|
|
bd3179bda8 | ||
|
|
60c0e41ba5 | ||
|
|
5225672dc0 | ||
|
|
f022b12c57 | ||
|
|
d2e88e1d4d | ||
|
|
63a022dcd7 | ||
|
|
11c6eb6305 | ||
|
|
f00efcfc59 | ||
|
|
a71ef7d67b | ||
|
|
572d2d6a84 | ||
|
|
76e8794e81 | ||
|
|
e6b1ccdcdf | ||
|
|
e8f9762ef3 | ||
|
|
fbf3de43a2 | ||
|
|
19c87d1c9d | ||
|
|
7f97fb481c | ||
|
|
1f1e24be3c | ||
|
|
1b571bde10 | ||
|
|
0e339dd137 | ||
|
|
0ddd16cf78 | ||
|
|
7e57648ea2 | ||
|
|
28716d7f30 | ||
|
|
e299595667 | ||
|
|
05db02fbc8 | ||
|
|
7a1874b2cc | ||
|
|
d47c112434 | ||
|
|
5c2d59066f | ||
|
|
d5aa679d3f | ||
|
|
6ccd7aca4c | ||
|
|
7f542e391a | ||
|
|
a9f10e5cad | ||
|
|
0865227049 | ||
|
|
c3e4a52fbe | ||
|
|
2e2d927273 | ||
|
|
ee4f003e72 | ||
|
|
781c04324e | ||
|
|
a30bbda3bd | ||
|
|
52a136227d | ||
|
|
8acfbde68e | ||
|
|
72e2b8b370 | ||
|
|
08910e81af | ||
|
|
e3c93ad9cf | ||
|
|
be40bd5c74 | ||
|
|
1edab12068 | ||
|
|
9719ea93b6 | ||
|
|
aba5bae400 | ||
|
|
0938358002 | ||
|
|
96e4eed018 | ||
|
|
9f5fcff3ea | ||
|
|
bd9ca48fab | ||
|
|
6fb959710d | ||
|
|
e06c5b6fd5 | ||
|
|
aa92be34d6 | ||
|
|
dda2eb0f76 | ||
|
|
580d8173e5 | ||
|
|
afff9cf716 | ||
|
|
810829f32e | ||
|
|
29f89e8930 | ||
|
|
d3ac282487 | ||
|
|
916967cac5 | ||
|
|
0cbf9eb22a | ||
|
|
40600fa504 | ||
|
|
e6eb1b99e1 | ||
|
|
27eb2e27db | ||
|
|
9b251f8130 | ||
|
|
df392cc830 | ||
|
|
ac5cd48279 | ||
|
|
fba62c9251 | ||
|
|
2bd35c4358 | ||
|
|
fa55d51b6a | ||
|
|
ca81628a9a | ||
|
|
022a8b9698 | ||
|
|
2bcb8dbd83 | ||
|
|
f196e9fda4 | ||
|
|
0898c3c651 | ||
|
|
916ba4c0ea | ||
|
|
fa62e2b72f | ||
|
|
312a58fcec | ||
|
|
ef431f70b6 | ||
|
|
0424e2c8d2 | ||
|
|
1b9bccb856 | ||
|
|
30bce16ad6 | ||
|
|
fdef0adf95 | ||
|
|
838842cc96 | ||
|
|
dd595376ba | ||
|
|
eb91593c08 | ||
|
|
64d6e6a48d | ||
|
|
672cf1f445 | ||
|
|
56c7ef06e7 | ||
|
|
7db1323f81 | ||
|
|
b52fea7fae | ||
|
|
612a258506 | ||
|
|
0314e0e5d7 | ||
|
|
c0359ed5c5 | ||
|
|
72b499df00 | ||
|
|
8108bd30fe | ||
|
|
b83d4add2e | ||
|
|
4d9c7c1012 | ||
|
|
1917366528 | ||
|
|
4881205bae | ||
|
|
dca27b4622 | ||
|
|
e606a0d651 | ||
|
|
ba50d19341 | ||
|
|
1bf85996b3 | ||
|
|
08b4e780de | ||
|
|
1cf7a46f3a | ||
|
|
0691dc554f | ||
|
|
5d15e4ea58 | ||
|
|
1a52a322b5 | ||
|
|
14a0dd8c98 | ||
|
|
a3af5ede80 | ||
|
|
4aac1444ad | ||
|
|
1ab7af6995 | ||
|
|
2b7ce8b160 | ||
|
|
267d140bfe | ||
|
|
dd9c53497b | ||
|
|
d65b3e0617 | ||
|
|
baef62b4d2 | ||
|
|
0a4ed2bc01 | ||
|
|
665bf430d5 | ||
|
|
bff818afbd | ||
|
|
7ef378b230 | ||
|
|
8a3e897999 | ||
|
|
e379771c03 | ||
|
|
f93cffaa0d | ||
|
|
1022094dc0 | ||
|
|
f1e36043e6 | ||
|
|
4656872161 | ||
|
|
5fb9f48360 | ||
|
|
31a073ca66 | ||
|
|
4207552e19 | ||
|
|
157ab66ab9 | ||
|
|
6a3a723938 | ||
|
|
65543c53f6 | ||
|
|
4a1c4a9862 | ||
|
|
95b7f5c46c | ||
|
|
95869a6081 | ||
|
|
ff8417db00 | ||
|
|
3cb9afb4e7 | ||
|
|
a84334cfc2 | ||
|
|
2e8ed77383 | ||
|
|
16dd09ccfc | ||
|
|
017d970b9a | ||
|
|
a22ee13620 | ||
|
|
40c0c60e2b | ||
|
|
7b6da394f0 | ||
|
|
2d0fc80c95 | ||
|
|
3d41846c39 | ||
|
|
5651743784 | ||
|
|
8e092f8b5d | ||
|
|
754fd7311b | ||
|
|
2914f24521 | ||
|
|
2d2c46e717 | ||
|
|
9771c3c7ec | ||
|
|
0ff8a4633d | ||
|
|
cc300a69b1 | ||
|
|
26af7d7389 | ||
|
|
b6081438fa | ||
|
|
296aa8854c | ||
|
|
efd2615844 | ||
|
|
765dea9ddf | ||
|
|
ba27d89173 | ||
|
|
8d90b973b0 | ||
|
|
801368ee82 | ||
|
|
6f53be4102 | ||
|
|
dc74ce20ab | ||
|
|
c04725b681 | ||
|
|
695827050f | ||
|
|
b0b85f36f6 | ||
|
|
f01c5d9033 | ||
|
|
a54d456ad0 | ||
|
|
fe2c38be80 | ||
|
|
7290d8576d | ||
|
|
fb113e5ce4 | ||
|
|
cd301e530f | ||
|
|
9966d7feba | ||
|
|
108fd169f7 | ||
|
|
85880397c4 | ||
|
|
4c0cb2576d | ||
|
|
45b4f4f32b | ||
|
|
beb377b38c | ||
|
|
4d059e9e5b | ||
|
|
02646427fb | ||
|
|
66b90d19a6 | ||
|
|
468eefe0ce | ||
|
|
0f65dacb8b | ||
|
|
e55b2f7d60 | ||
|
|
a0c92265db | ||
|
|
4e58fd645c | ||
|
|
02666567b0 | ||
|
|
e0cfc0ccf5 | ||
|
|
729d76ad09 | ||
|
|
8db5b7d7d4 | ||
|
|
0ad849d2fd | ||
|
|
772586801b | ||
|
|
6211f156e6 | ||
|
|
b5bd86b2a7 | ||
|
|
4c5bcd80de | ||
|
|
90d10e6b73 | ||
|
|
f14a711bda | ||
|
|
91f47d2779 | ||
|
|
8dbde3297e | ||
|
|
26f9534544 | ||
|
|
d681717702 | ||
|
|
275ab53ebc | ||
|
|
1cb21d292b | ||
|
|
9f8ce906f4 | ||
|
|
57775988e7 | ||
|
|
ef6a6cfb40 | ||
|
|
6e63073c6c | ||
|
|
0d3fb3cef3 | ||
|
|
78dd1893bb | ||
|
|
d9ffe5e7c4 | ||
|
|
cb66dd8000 | ||
|
|
e8dd73798c | ||
|
|
5bc104cef5 | ||
|
|
73bbabf207 | ||
|
|
0e7ca71dcc | ||
|
|
9337246867 | ||
|
|
81f826db2b | ||
|
|
0442bca235 | ||
|
|
075372a71c | ||
|
|
e7b81688a4 | ||
|
|
18ab16dbd3 |
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -23,6 +23,7 @@
|
||||
*.idl text
|
||||
*.java text
|
||||
*.js text
|
||||
*.m text
|
||||
*.mk text
|
||||
*.mm text
|
||||
*.plist text
|
||||
|
||||
16
.gitignore
vendored
16
.gitignore
vendored
@@ -5,5 +5,21 @@
|
||||
.*.swp
|
||||
.DS_Store
|
||||
.sw[a-z]
|
||||
Thumbs.db
|
||||
tags
|
||||
tegra/
|
||||
bin/
|
||||
*.sdf
|
||||
*.opensdf
|
||||
*.obj
|
||||
*.stamp
|
||||
*.depend
|
||||
*.rule
|
||||
*.tmp
|
||||
*/debug
|
||||
*/CMakeFiles
|
||||
CMakeCache.txt
|
||||
*.suo
|
||||
*.log
|
||||
*.tlog
|
||||
build
|
||||
|
||||
1
3rdparty/.gitignore
vendored
1
3rdparty/.gitignore
vendored
@@ -1 +0,0 @@
|
||||
ippicv
|
||||
3
3rdparty/ffmpeg/.gitignore
vendored
Normal file
3
3rdparty/ffmpeg/.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
downloads/
|
||||
*.dll
|
||||
ffmpeg_version.cmake
|
||||
25
3rdparty/ffmpeg/ffmpeg.cmake
vendored
Normal file
25
3rdparty/ffmpeg/ffmpeg.cmake
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
# Binary branch name: ffmpeg/master_20150703
|
||||
# Binaries were created for OpenCV: e379ea6ed60b0caad4d4e3eea096e9d850cb8c86
|
||||
set(FFMPEG_BINARIES_COMMIT "8aeefc4efe3215de89d8c7e114ae6f7a6091b8eb")
|
||||
set(FFMPEG_FILE_HASH_BIN32 "89c783eee1c47bfc733f08334ec2e31c")
|
||||
set(FFMPEG_FILE_HASH_BIN64 "35fe6ccdda6d7a04e9056b0d73b98e76")
|
||||
set(FFMPEG_FILE_HASH_CMAKE "8606f947a780071f8fcce8cbf39ceef5")
|
||||
|
||||
set(FFMPEG_DOWNLOAD_URL ${OPENCV_FFMPEG_URL};$ENV{OPENCV_FFMPEG_URL};https://raw.githubusercontent.com/Itseez/opencv_3rdparty/${FFMPEG_BINARIES_COMMIT}/ffmpeg/)
|
||||
|
||||
ocv_download(PACKAGE opencv_ffmpeg.dll
|
||||
HASH ${FFMPEG_FILE_HASH_BIN32}
|
||||
URL ${FFMPEG_DOWNLOAD_URL}
|
||||
DESTINATION_DIR ${CMAKE_CURRENT_LIST_DIR})
|
||||
|
||||
ocv_download(PACKAGE opencv_ffmpeg_64.dll
|
||||
HASH ${FFMPEG_FILE_HASH_BIN64}
|
||||
URL ${FFMPEG_DOWNLOAD_URL}
|
||||
DESTINATION_DIR ${CMAKE_CURRENT_LIST_DIR})
|
||||
|
||||
ocv_download(PACKAGE ffmpeg_version.cmake
|
||||
HASH ${FFMPEG_FILE_HASH_CMAKE}
|
||||
URL ${FFMPEG_DOWNLOAD_URL}
|
||||
DESTINATION_DIR ${CMAKE_CURRENT_LIST_DIR})
|
||||
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/ffmpeg_version.cmake)
|
||||
13
3rdparty/ffmpeg/ffmpeg_version.cmake
vendored
13
3rdparty/ffmpeg/ffmpeg_version.cmake
vendored
@@ -1,13 +0,0 @@
|
||||
set(HAVE_FFMPEG 1)
|
||||
set(HAVE_FFMPEG_CODEC 1)
|
||||
set(HAVE_FFMPEG_FORMAT 1)
|
||||
set(HAVE_FFMPEG_UTIL 1)
|
||||
set(HAVE_FFMPEG_SWSCALE 1)
|
||||
set(HAVE_FFMPEG_RESAMPLE 0)
|
||||
set(HAVE_GENTOO_FFMPEG 1)
|
||||
|
||||
set(ALIASOF_libavcodec_VERSION 55.18.102)
|
||||
set(ALIASOF_libavformat_VERSION 55.12.100)
|
||||
set(ALIASOF_libavutil_VERSION 52.38.100)
|
||||
set(ALIASOF_libswscale_VERSION 2.3.100)
|
||||
set(ALIASOF_libavresample_VERSION 1.0.1)
|
||||
1
3rdparty/ffmpeg/ffopencv.c
vendored
1
3rdparty/ffmpeg/ffopencv.c
vendored
@@ -1 +0,0 @@
|
||||
#include "cap_ffmpeg_impl.hpp"
|
||||
520
3rdparty/ffmpeg/license.txt
vendored
Normal file
520
3rdparty/ffmpeg/license.txt
vendored
Normal file
@@ -0,0 +1,520 @@
|
||||
Copyright (C) 2001 Fabrice Bellard
|
||||
|
||||
FFmpeg is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
FFmpeg is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with FFmpeg; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
==================================================================================
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
Version 2.1, February 1999
|
||||
|
||||
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
[This is the first released version of the Lesser GPL. It also counts
|
||||
as the successor of the GNU Library Public License, version 2, hence
|
||||
the version number 2.1.]
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
Licenses are intended to guarantee your freedom to share and change
|
||||
free software--to make sure the software is free for all its users.
|
||||
|
||||
This license, the Lesser General Public License, applies to some
|
||||
specially designated software packages--typically libraries--of the
|
||||
Free Software Foundation and other authors who decide to use it. You
|
||||
can use it too, but we suggest you first think carefully about whether
|
||||
this license or the ordinary General Public License is the better
|
||||
strategy to use in any particular case, based on the explanations below.
|
||||
|
||||
When we speak of free software, we are referring to freedom of use,
|
||||
not price. Our General Public Licenses are designed to make sure that
|
||||
you have the freedom to distribute copies of free software (and charge
|
||||
for this service if you wish); that you receive source code or can get
|
||||
it if you want it; that you can change the software and use pieces of
|
||||
it in new free programs; and that you are informed that you can do
|
||||
these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
distributors to deny you these rights or to ask you to surrender these
|
||||
rights. These restrictions translate to certain responsibilities for
|
||||
you if you distribute copies of the library or if you modify it.
|
||||
|
||||
For example, if you distribute copies of the library, whether gratis
|
||||
or for a fee, you must give the recipients all the rights that we gave
|
||||
you. You must make sure that they, too, receive or can get the source
|
||||
code. If you link other code with the library, you must provide
|
||||
complete object files to the recipients, so that they can relink them
|
||||
with the library after making changes to the library and recompiling
|
||||
it. And you must show them these terms so they know their rights.
|
||||
|
||||
We protect your rights with a two-step method: (1) we copyright the
|
||||
library, and (2) we offer you this license, which gives you legal
|
||||
permission to copy, distribute and/or modify the library.
|
||||
|
||||
To protect each distributor, we want to make it very clear that
|
||||
there is no warranty for the free library. Also, if the library is
|
||||
modified by someone else and passed on, the recipients should know
|
||||
that what they have is not the original version, so that the original
|
||||
author's reputation will not be affected by problems that might be
|
||||
introduced by others.
|
||||
|
||||
Finally, software patents pose a constant threat to the existence of
|
||||
any free program. We wish to make sure that a company cannot
|
||||
effectively restrict the users of a free program by obtaining a
|
||||
restrictive license from a patent holder. Therefore, we insist that
|
||||
any patent license obtained for a version of the library must be
|
||||
consistent with the full freedom of use specified in this license.
|
||||
|
||||
Most GNU software, including some libraries, is covered by the
|
||||
ordinary GNU General Public License. This license, the GNU Lesser
|
||||
General Public License, applies to certain designated libraries, and
|
||||
is quite different from the ordinary General Public License. We use
|
||||
this license for certain libraries in order to permit linking those
|
||||
libraries into non-free programs.
|
||||
|
||||
When a program is linked with a library, whether statically or using
|
||||
a shared library, the combination of the two is legally speaking a
|
||||
combined work, a derivative of the original library. The ordinary
|
||||
General Public License therefore permits such linking only if the
|
||||
entire combination fits its criteria of freedom. The Lesser General
|
||||
Public License permits more lax criteria for linking other code with
|
||||
the library.
|
||||
|
||||
We call this license the "Lesser" General Public License because it
|
||||
does Less to protect the user's freedom than the ordinary General
|
||||
Public License. It also provides other free software developers Less
|
||||
of an advantage over competing non-free programs. These disadvantages
|
||||
are the reason we use the ordinary General Public License for many
|
||||
libraries. However, the Lesser license provides advantages in certain
|
||||
special circumstances.
|
||||
|
||||
For example, on rare occasions, there may be a special need to
|
||||
encourage the widest possible use of a certain library, so that it becomes
|
||||
a de-facto standard. To achieve this, non-free programs must be
|
||||
allowed to use the library. A more frequent case is that a free
|
||||
library does the same job as widely used non-free libraries. In this
|
||||
case, there is little to gain by limiting the free library to free
|
||||
software only, so we use the Lesser General Public License.
|
||||
|
||||
In other cases, permission to use a particular library in non-free
|
||||
programs enables a greater number of people to use a large body of
|
||||
free software. For example, permission to use the GNU C Library in
|
||||
non-free programs enables many more people to use the whole GNU
|
||||
operating system, as well as its variant, the GNU/Linux operating
|
||||
system.
|
||||
|
||||
Although the Lesser General Public License is Less protective of the
|
||||
users' freedom, it does ensure that the user of a program that is
|
||||
linked with the Library has the freedom and the wherewithal to run
|
||||
that program using a modified version of the Library.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow. Pay close attention to the difference between a
|
||||
"work based on the library" and a "work that uses the library". The
|
||||
former contains code derived from the library, whereas the latter must
|
||||
be combined with the library in order to run.
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License Agreement applies to any software library or other
|
||||
program which contains a notice placed by the copyright holder or
|
||||
other authorized party saying it may be distributed under the terms of
|
||||
this Lesser General Public License (also called "this License").
|
||||
Each licensee is addressed as "you".
|
||||
|
||||
A "library" means a collection of software functions and/or data
|
||||
prepared so as to be conveniently linked with application programs
|
||||
(which use some of those functions and data) to form executables.
|
||||
|
||||
The "Library", below, refers to any such software library or work
|
||||
which has been distributed under these terms. A "work based on the
|
||||
Library" means either the Library or any derivative work under
|
||||
copyright law: that is to say, a work containing the Library or a
|
||||
portion of it, either verbatim or with modifications and/or translated
|
||||
straightforwardly into another language. (Hereinafter, translation is
|
||||
included without limitation in the term "modification".)
|
||||
|
||||
"Source code" for a work means the preferred form of the work for
|
||||
making modifications to it. For a library, complete source code means
|
||||
all the source code for all modules it contains, plus any associated
|
||||
interface definition files, plus the scripts used to control compilation
|
||||
and installation of the library.
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running a program using the Library is not restricted, and output from
|
||||
such a program is covered only if its contents constitute a work based
|
||||
on the Library (independent of the use of the Library in a tool for
|
||||
writing it). Whether that is true depends on what the Library does
|
||||
and what the program that uses the Library does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Library's
|
||||
complete source code as you receive it, in any medium, provided that
|
||||
you conspicuously and appropriately publish on each copy an
|
||||
appropriate copyright notice and disclaimer of warranty; keep intact
|
||||
all the notices that refer to this License and to the absence of any
|
||||
warranty; and distribute a copy of this License along with the
|
||||
Library.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy,
|
||||
and you may at your option offer warranty protection in exchange for a
|
||||
fee.
|
||||
|
||||
2. You may modify your copy or copies of the Library or any portion
|
||||
of it, thus forming a work based on the Library, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) The modified work must itself be a software library.
|
||||
|
||||
b) You must cause the files modified to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
c) You must cause the whole of the work to be licensed at no
|
||||
charge to all third parties under the terms of this License.
|
||||
|
||||
d) If a facility in the modified Library refers to a function or a
|
||||
table of data to be supplied by an application program that uses
|
||||
the facility, other than as an argument passed when the facility
|
||||
is invoked, then you must make a good faith effort to ensure that,
|
||||
in the event an application does not supply such function or
|
||||
table, the facility still operates, and performs whatever part of
|
||||
its purpose remains meaningful.
|
||||
|
||||
(For example, a function in a library to compute square roots has
|
||||
a purpose that is entirely well-defined independent of the
|
||||
application. Therefore, Subsection 2d requires that any
|
||||
application-supplied function or table used by this function must
|
||||
be optional: if the application does not supply it, the square
|
||||
root function must still compute square roots.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Library,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Library, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote
|
||||
it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Library.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Library
|
||||
with the Library (or with a work based on the Library) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may opt to apply the terms of the ordinary GNU General Public
|
||||
License instead of this License to a given copy of the Library. To do
|
||||
this, you must alter all the notices that refer to this License, so
|
||||
that they refer to the ordinary GNU General Public License, version 2,
|
||||
instead of to this License. (If a newer version than version 2 of the
|
||||
ordinary GNU General Public License has appeared, then you can specify
|
||||
that version instead if you wish.) Do not make any other change in
|
||||
these notices.
|
||||
|
||||
Once this change is made in a given copy, it is irreversible for
|
||||
that copy, so the ordinary GNU General Public License applies to all
|
||||
subsequent copies and derivative works made from that copy.
|
||||
|
||||
This option is useful when you wish to copy part of the code of
|
||||
the Library into a program that is not a library.
|
||||
|
||||
4. You may copy and distribute the Library (or a portion or
|
||||
derivative of it, under Section 2) in object code or executable form
|
||||
under the terms of Sections 1 and 2 above provided that you accompany
|
||||
it with the complete corresponding machine-readable source code, which
|
||||
must be distributed under the terms of Sections 1 and 2 above on a
|
||||
medium customarily used for software interchange.
|
||||
|
||||
If distribution of object code is made by offering access to copy
|
||||
from a designated place, then offering equivalent access to copy the
|
||||
source code from the same place satisfies the requirement to
|
||||
distribute the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
5. A program that contains no derivative of any portion of the
|
||||
Library, but is designed to work with the Library by being compiled or
|
||||
linked with it, is called a "work that uses the Library". Such a
|
||||
work, in isolation, is not a derivative work of the Library, and
|
||||
therefore falls outside the scope of this License.
|
||||
|
||||
However, linking a "work that uses the Library" with the Library
|
||||
creates an executable that is a derivative of the Library (because it
|
||||
contains portions of the Library), rather than a "work that uses the
|
||||
library". The executable is therefore covered by this License.
|
||||
Section 6 states terms for distribution of such executables.
|
||||
|
||||
When a "work that uses the Library" uses material from a header file
|
||||
that is part of the Library, the object code for the work may be a
|
||||
derivative work of the Library even though the source code is not.
|
||||
Whether this is true is especially significant if the work can be
|
||||
linked without the Library, or if the work is itself a library. The
|
||||
threshold for this to be true is not precisely defined by law.
|
||||
|
||||
If such an object file uses only numerical parameters, data
|
||||
structure layouts and accessors, and small macros and small inline
|
||||
functions (ten lines or less in length), then the use of the object
|
||||
file is unrestricted, regardless of whether it is legally a derivative
|
||||
work. (Executables containing this object code plus portions of the
|
||||
Library will still fall under Section 6.)
|
||||
|
||||
Otherwise, if the work is a derivative of the Library, you may
|
||||
distribute the object code for the work under the terms of Section 6.
|
||||
Any executables containing that work also fall under Section 6,
|
||||
whether or not they are linked directly with the Library itself.
|
||||
|
||||
6. As an exception to the Sections above, you may also combine or
|
||||
link a "work that uses the Library" with the Library to produce a
|
||||
work containing portions of the Library, and distribute that work
|
||||
under terms of your choice, provided that the terms permit
|
||||
modification of the work for the customer's own use and reverse
|
||||
engineering for debugging such modifications.
|
||||
|
||||
You must give prominent notice with each copy of the work that the
|
||||
Library is used in it and that the Library and its use are covered by
|
||||
this License. You must supply a copy of this License. If the work
|
||||
during execution displays copyright notices, you must include the
|
||||
copyright notice for the Library among them, as well as a reference
|
||||
directing the user to the copy of this License. Also, you must do one
|
||||
of these things:
|
||||
|
||||
a) Accompany the work with the complete corresponding
|
||||
machine-readable source code for the Library including whatever
|
||||
changes were used in the work (which must be distributed under
|
||||
Sections 1 and 2 above); and, if the work is an executable linked
|
||||
with the Library, with the complete machine-readable "work that
|
||||
uses the Library", as object code and/or source code, so that the
|
||||
user can modify the Library and then relink to produce a modified
|
||||
executable containing the modified Library. (It is understood
|
||||
that the user who changes the contents of definitions files in the
|
||||
Library will not necessarily be able to recompile the application
|
||||
to use the modified definitions.)
|
||||
|
||||
b) Use a suitable shared library mechanism for linking with the
|
||||
Library. A suitable mechanism is one that (1) uses at run time a
|
||||
copy of the library already present on the user's computer system,
|
||||
rather than copying library functions into the executable, and (2)
|
||||
will operate properly with a modified version of the library, if
|
||||
the user installs one, as long as the modified version is
|
||||
interface-compatible with the version that the work was made with.
|
||||
|
||||
c) Accompany the work with a written offer, valid for at
|
||||
least three years, to give the same user the materials
|
||||
specified in Subsection 6a, above, for a charge no more
|
||||
than the cost of performing this distribution.
|
||||
|
||||
d) If distribution of the work is made by offering access to copy
|
||||
from a designated place, offer equivalent access to copy the above
|
||||
specified materials from the same place.
|
||||
|
||||
e) Verify that the user has already received a copy of these
|
||||
materials or that you have already sent this user a copy.
|
||||
|
||||
For an executable, the required form of the "work that uses the
|
||||
Library" must include any data and utility programs needed for
|
||||
reproducing the executable from it. However, as a special exception,
|
||||
the materials to be distributed need not include anything that is
|
||||
normally distributed (in either source or binary form) with the major
|
||||
components (compiler, kernel, and so on) of the operating system on
|
||||
which the executable runs, unless that component itself accompanies
|
||||
the executable.
|
||||
|
||||
It may happen that this requirement contradicts the license
|
||||
restrictions of other proprietary libraries that do not normally
|
||||
accompany the operating system. Such a contradiction means you cannot
|
||||
use both them and the Library together in an executable that you
|
||||
distribute.
|
||||
|
||||
7. You may place library facilities that are a work based on the
|
||||
Library side-by-side in a single library together with other library
|
||||
facilities not covered by this License, and distribute such a combined
|
||||
library, provided that the separate distribution of the work based on
|
||||
the Library and of the other library facilities is otherwise
|
||||
permitted, and provided that you do these two things:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work
|
||||
based on the Library, uncombined with any other library
|
||||
facilities. This must be distributed under the terms of the
|
||||
Sections above.
|
||||
|
||||
b) Give prominent notice with the combined library of the fact
|
||||
that part of it is a work based on the Library, and explaining
|
||||
where to find the accompanying uncombined form of the same work.
|
||||
|
||||
8. You may not copy, modify, sublicense, link with, or distribute
|
||||
the Library except as expressly provided under this License. Any
|
||||
attempt otherwise to copy, modify, sublicense, link with, or
|
||||
distribute the Library is void, and will automatically terminate your
|
||||
rights under this License. However, parties who have received copies,
|
||||
or rights, from you under this License will not have their licenses
|
||||
terminated so long as such parties remain in full compliance.
|
||||
|
||||
9. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Library or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Library (or any work based on the
|
||||
Library), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Library or works based on it.
|
||||
|
||||
10. Each time you redistribute the Library (or any work based on the
|
||||
Library), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute, link with or modify the Library
|
||||
subject to these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties with
|
||||
this License.
|
||||
|
||||
11. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Library at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Library by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Library.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under any
|
||||
particular circumstance, the balance of the section is intended to apply,
|
||||
and the section as a whole is intended to apply in other circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
12. If the distribution and/or use of the Library is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Library under this License may add
|
||||
an explicit geographical distribution limitation excluding those countries,
|
||||
so that distribution is permitted only in or among countries not thus
|
||||
excluded. In such case, this License incorporates the limitation as if
|
||||
written in the body of this License.
|
||||
|
||||
13. The Free Software Foundation may publish revised and/or new
|
||||
versions of the Lesser General Public License from time to time.
|
||||
Such new versions will be similar in spirit to the present version,
|
||||
but may differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Library
|
||||
specifies a version number of this License which applies to it and
|
||||
"any later version", you have the option of following the terms and
|
||||
conditions either of that version or of any later version published by
|
||||
the Free Software Foundation. If the Library does not specify a
|
||||
license version number, you may choose any version ever published by
|
||||
the Free Software Foundation.
|
||||
|
||||
14. If you wish to incorporate parts of the Library into other free
|
||||
programs whose distribution conditions are incompatible with these,
|
||||
write to the author to ask for permission. For software which is
|
||||
copyrighted by the Free Software Foundation, write to the Free
|
||||
Software Foundation; we sometimes make exceptions for this. Our
|
||||
decision will be guided by the two goals of preserving the free status
|
||||
of all derivatives of our free software and of promoting the sharing
|
||||
and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
||||
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
|
||||
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
|
||||
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
|
||||
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
|
||||
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
|
||||
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
|
||||
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
|
||||
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
|
||||
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
|
||||
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Libraries
|
||||
|
||||
If you develop a new library, and you want it to be of the greatest
|
||||
possible use to the public, we recommend making it free software that
|
||||
everyone can redistribute and change. You can do so by permitting
|
||||
redistribution under these terms (or, alternatively, under the terms of the
|
||||
ordinary General Public License).
|
||||
|
||||
To apply these terms, attach the following notices to the library. It is
|
||||
safest to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least the
|
||||
"copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the library's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the library, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the
|
||||
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1990
|
||||
Ty Coon, President of Vice
|
||||
|
||||
That's all there is to it!
|
||||
2
3rdparty/ffmpeg/make.bat
vendored
2
3rdparty/ffmpeg/make.bat
vendored
@@ -1,2 +0,0 @@
|
||||
set path=c:\dev\msys32\bin;%path% & gcc -Wall -shared -o opencv_ffmpeg.dll -O2 -x c++ -I../include -I../include/ffmpeg_ -I../../modules/highgui/src ffopencv.c -L../lib -lavformat -lavcodec -lavdevice -lswscale -lavutil -lws2_32
|
||||
set path=c:\dev\msys64\bin;%path% & gcc -m64 -Wall -shared -o opencv_ffmpeg_64.dll -O2 -x c++ -I../include -I../include/ffmpeg_ -I../../modules/highgui/src ffopencv.c -L../lib -lavformat64 -lavcodec64 -lavdevice64 -lswscale64 -lavutil64 -lws2_32
|
||||
BIN
3rdparty/ffmpeg/opencv_ffmpeg.dll
vendored
BIN
3rdparty/ffmpeg/opencv_ffmpeg.dll
vendored
Binary file not shown.
BIN
3rdparty/ffmpeg/opencv_ffmpeg_64.dll
vendored
BIN
3rdparty/ffmpeg/opencv_ffmpeg_64.dll
vendored
Binary file not shown.
64
3rdparty/ffmpeg/readme.txt
vendored
64
3rdparty/ffmpeg/readme.txt
vendored
@@ -1,42 +1,38 @@
|
||||
The build script is to be fixed.
|
||||
Right now it assumes that 32-bit MinGW is in the system path and
|
||||
64-bit mingw is installed to c:\Apps\MinGW64.
|
||||
* On Linux and other Unix flavors OpenCV uses default or user-built ffmpeg/libav libraries.
|
||||
If user builds ffmpeg/libav from source and wants OpenCV to stay BSD library, not GPL/LGPL,
|
||||
he/she should use --enabled-shared configure flag and make sure that no GPL components are
|
||||
enabled (some notable examples are x264 (H264 encoder) and libac3 (Dolby AC3 audio codec)).
|
||||
See https://www.ffmpeg.org/legal.html for details.
|
||||
|
||||
It is important that gcc is used, not g++!
|
||||
Otherwise the produced DLL will likely be dependent on libgcc_s_dw2-1.dll or similar DLL.
|
||||
While we want to make the DLLs with minimum dependencies: Win32 libraries + msvcrt.dll.
|
||||
If you want to play very safe and do not want to use FFMPEG at all, regardless of whether it's installed on
|
||||
your system or not, configure and build OpenCV using CMake with WITH_FFMPEG=OFF flag. OpenCV will then use
|
||||
AVFoundation (OSX), GStreamer (Linux) or other available backends supported by opencv_videoio module.
|
||||
|
||||
ffopencv.c is really a C++ source, hence -x c++ is used.
|
||||
There is also our self-contained motion jpeg codec, which you can use without any worries.
|
||||
It handles CV_FOURCC('M', 'J', 'P', 'G') streams within an AVI container (".avi").
|
||||
|
||||
How to update opencv_ffmpeg.dll and opencv_ffmpeg_64.dll when a new version of FFMPEG is release?
|
||||
* On Windows OpenCV uses pre-built ffmpeg binaries, built with proper flags (without GPL components) and
|
||||
wrapped with simple, stable OpenCV-compatible API.
|
||||
The binaries are opencv_ffmpeg.dll (version for 32-bit Windows) and
|
||||
opencv_ffmpeg_64.dll (version for 64-bit Windows).
|
||||
|
||||
1. Install 32-bit MinGW + MSYS from
|
||||
http://sourceforge.net/projects/mingw/files/Automated%20MinGW%20Installer/mingw-get-inst/
|
||||
Let's assume, it's installed in C:\MSYS32.
|
||||
2. Install 64-bit MinGW. http://mingw-w64.sourceforge.net/
|
||||
Let's assume, it's installed in C:\MSYS64
|
||||
3. Copy C:\MSYS32\msys to C:\MSYS64\msys. Edit C:\MSYS64\msys\etc\fstab, change C:\MSYS32 to C:\MSYS64.
|
||||
See build_win32.txt for the build instructions, if you want to rebuild opencv_ffmpeg*.dll from scratch.
|
||||
|
||||
4. Now you have working MSYS32 and MSYS64 environments.
|
||||
Launch, one by one, C:\MSYS32\msys\msys.bat and C:\MSYS64\msys\msys.bat to create your home directories.
|
||||
The pre-built opencv_ffmpeg*.dll is:
|
||||
* LGPL library, not BSD libraries.
|
||||
* Loaded at runtime by opencv_videoio module.
|
||||
If it succeeds, ffmpeg can be used to decode/encode videos;
|
||||
otherwise, other API is used.
|
||||
|
||||
4. Download ffmpeg-x.y.z.tar.gz (where x.y.z denotes the actual ffmpeg version).
|
||||
Copy it to C:\MSYS{32|64}\msys\home\<loginname> directory.
|
||||
FFMPEG build contains H264 encoder based on the OpenH264 library, that should be installed separatelly.
|
||||
OpenH264 Video Codec provided by Cisco Systems, Inc.
|
||||
See https://github.com/cisco/openh264/releases for details and OpenH264 license.
|
||||
Downloaded binary file can be placed into global system path (System32 or SysWOW64) or near application binaries.
|
||||
You can also specify location of binary file via OPENH264_LIBRARY_PATH environment variable.
|
||||
|
||||
5. To build 32-bit ffmpeg libraries, run C:\MSYS32\msys\msys.bat and type the following commands:
|
||||
If LGPL/GPL software can not be supplied with your OpenCV-based product, simply exclude
|
||||
opencv_ffmpeg*.dll from your distribution; OpenCV will stay fully functional except for the ability to
|
||||
decode/encode videos using FFMPEG (though, it may still be able to do that using other API,
|
||||
such as Video for Windows, Windows Media Foundation or our self-contained motion jpeg codec).
|
||||
|
||||
5.1. tar -xzf ffmpeg-x.y.z.tar.gz
|
||||
5.2. mkdir build
|
||||
5.3. cd build
|
||||
5.4. ../ffmpeg-x.y.z/configure --enable-w32threads
|
||||
5.5. make
|
||||
5.6. make install
|
||||
5.7. cd /local/lib
|
||||
5.8. strip -g *.a
|
||||
|
||||
6. Then repeat the same for 64-bit case. The output libs: libavcodec.a etc. need to be renamed to libavcodec64.a etc.
|
||||
|
||||
7. Then, copy all those libs to <opencv>\3rdparty\lib\, copy the headers to <opencv>\3rdparty\include\ffmpeg_.
|
||||
|
||||
8. Then, go to <opencv>\3rdparty\ffmpeg, edit make.bat
|
||||
(change paths to the actual paths to your msys32 and msys64 distributions) and then run make.bat
|
||||
See license.txt for the FFMPEG copyright notice and the licensing terms.
|
||||
|
||||
4863
3rdparty/include/ffmpeg_/libavcodec/avcodec.h
vendored
4863
3rdparty/include/ffmpeg_/libavcodec/avcodec.h
vendored
File diff suppressed because it is too large
Load Diff
116
3rdparty/include/ffmpeg_/libavcodec/avfft.h
vendored
116
3rdparty/include/ffmpeg_/libavcodec/avfft.h
vendored
@@ -1,116 +0,0 @@
|
||||
/*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef AVCODEC_AVFFT_H
|
||||
#define AVCODEC_AVFFT_H
|
||||
|
||||
/**
|
||||
* @file
|
||||
* @ingroup lavc_fft
|
||||
* FFT functions
|
||||
*/
|
||||
|
||||
/**
|
||||
* @defgroup lavc_fft FFT functions
|
||||
* @ingroup lavc_misc
|
||||
*
|
||||
* @{
|
||||
*/
|
||||
|
||||
typedef float FFTSample;
|
||||
|
||||
typedef struct FFTComplex {
|
||||
FFTSample re, im;
|
||||
} FFTComplex;
|
||||
|
||||
typedef struct FFTContext FFTContext;
|
||||
|
||||
/**
|
||||
* Set up a complex FFT.
|
||||
* @param nbits log2 of the length of the input array
|
||||
* @param inverse if 0 perform the forward transform, if 1 perform the inverse
|
||||
*/
|
||||
FFTContext *av_fft_init(int nbits, int inverse);
|
||||
|
||||
/**
|
||||
* Do the permutation needed BEFORE calling ff_fft_calc().
|
||||
*/
|
||||
void av_fft_permute(FFTContext *s, FFTComplex *z);
|
||||
|
||||
/**
|
||||
* Do a complex FFT with the parameters defined in av_fft_init(). The
|
||||
* input data must be permuted before. No 1.0/sqrt(n) normalization is done.
|
||||
*/
|
||||
void av_fft_calc(FFTContext *s, FFTComplex *z);
|
||||
|
||||
void av_fft_end(FFTContext *s);
|
||||
|
||||
FFTContext *av_mdct_init(int nbits, int inverse, double scale);
|
||||
void av_imdct_calc(FFTContext *s, FFTSample *output, const FFTSample *input);
|
||||
void av_imdct_half(FFTContext *s, FFTSample *output, const FFTSample *input);
|
||||
void av_mdct_calc(FFTContext *s, FFTSample *output, const FFTSample *input);
|
||||
void av_mdct_end(FFTContext *s);
|
||||
|
||||
/* Real Discrete Fourier Transform */
|
||||
|
||||
enum RDFTransformType {
|
||||
DFT_R2C,
|
||||
IDFT_C2R,
|
||||
IDFT_R2C,
|
||||
DFT_C2R,
|
||||
};
|
||||
|
||||
typedef struct RDFTContext RDFTContext;
|
||||
|
||||
/**
|
||||
* Set up a real FFT.
|
||||
* @param nbits log2 of the length of the input array
|
||||
* @param trans the type of transform
|
||||
*/
|
||||
RDFTContext *av_rdft_init(int nbits, enum RDFTransformType trans);
|
||||
void av_rdft_calc(RDFTContext *s, FFTSample *data);
|
||||
void av_rdft_end(RDFTContext *s);
|
||||
|
||||
/* Discrete Cosine Transform */
|
||||
|
||||
typedef struct DCTContext DCTContext;
|
||||
|
||||
enum DCTTransformType {
|
||||
DCT_II = 0,
|
||||
DCT_III,
|
||||
DCT_I,
|
||||
DST_I,
|
||||
};
|
||||
|
||||
/**
|
||||
* Set up DCT.
|
||||
* @param nbits size of the input array:
|
||||
* (1 << nbits) for DCT-II, DCT-III and DST-I
|
||||
* (1 << nbits) + 1 for DCT-I
|
||||
*
|
||||
* @note the first element of the input of DST-I is ignored
|
||||
*/
|
||||
DCTContext *av_dct_init(int nbits, enum DCTTransformType type);
|
||||
void av_dct_calc(DCTContext *s, FFTSample *data);
|
||||
void av_dct_end (DCTContext *s);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
#endif /* AVCODEC_AVFFT_H */
|
||||
95
3rdparty/include/ffmpeg_/libavcodec/dxva2.h
vendored
95
3rdparty/include/ffmpeg_/libavcodec/dxva2.h
vendored
@@ -1,95 +0,0 @@
|
||||
/*
|
||||
* DXVA2 HW acceleration
|
||||
*
|
||||
* copyright (c) 2009 Laurent Aimar
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef AVCODEC_DXVA_H
|
||||
#define AVCODEC_DXVA_H
|
||||
|
||||
/**
|
||||
* @file
|
||||
* @ingroup lavc_codec_hwaccel_dxva2
|
||||
* Public libavcodec DXVA2 header.
|
||||
*/
|
||||
|
||||
#if defined(_WIN32_WINNT) && _WIN32_WINNT < 0x0600
|
||||
#undef _WIN32_WINNT
|
||||
#endif
|
||||
|
||||
#if !defined(_WIN32_WINNT)
|
||||
#define _WIN32_WINNT 0x0600
|
||||
#endif
|
||||
|
||||
#include <stdint.h>
|
||||
#include <d3d9.h>
|
||||
#include <dxva2api.h>
|
||||
|
||||
/**
|
||||
* @defgroup lavc_codec_hwaccel_dxva2 DXVA2
|
||||
* @ingroup lavc_codec_hwaccel
|
||||
*
|
||||
* @{
|
||||
*/
|
||||
|
||||
#define FF_DXVA2_WORKAROUND_SCALING_LIST_ZIGZAG 1 ///< Work around for DXVA2 and old UVD/UVD+ ATI video cards
|
||||
|
||||
/**
|
||||
* This structure is used to provides the necessary configurations and data
|
||||
* to the DXVA2 FFmpeg HWAccel implementation.
|
||||
*
|
||||
* The application must make it available as AVCodecContext.hwaccel_context.
|
||||
*/
|
||||
struct dxva_context {
|
||||
/**
|
||||
* DXVA2 decoder object
|
||||
*/
|
||||
IDirectXVideoDecoder *decoder;
|
||||
|
||||
/**
|
||||
* DXVA2 configuration used to create the decoder
|
||||
*/
|
||||
const DXVA2_ConfigPictureDecode *cfg;
|
||||
|
||||
/**
|
||||
* The number of surface in the surface array
|
||||
*/
|
||||
unsigned surface_count;
|
||||
|
||||
/**
|
||||
* The array of Direct3D surfaces used to create the decoder
|
||||
*/
|
||||
LPDIRECT3DSURFACE9 *surface;
|
||||
|
||||
/**
|
||||
* A bit field configuring the workarounds needed for using the decoder
|
||||
*/
|
||||
uint64_t workaround;
|
||||
|
||||
/**
|
||||
* Private to the FFmpeg AVHWAccel implementation
|
||||
*/
|
||||
unsigned report_id;
|
||||
};
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
#endif /* AVCODEC_DXVA_H */
|
||||
397
3rdparty/include/ffmpeg_/libavcodec/old_codec_ids.h
vendored
397
3rdparty/include/ffmpeg_/libavcodec/old_codec_ids.h
vendored
@@ -1,397 +0,0 @@
|
||||
/*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef AVCODEC_OLD_CODEC_IDS_H
|
||||
#define AVCODEC_OLD_CODEC_IDS_H
|
||||
|
||||
#include "libavutil/common.h"
|
||||
|
||||
/*
|
||||
* This header exists to prevent new codec IDs from being accidentally added to
|
||||
* the deprecated list.
|
||||
* Do not include it directly. It will be removed on next major bump
|
||||
*
|
||||
* Do not add new items to this list. Use the AVCodecID enum instead.
|
||||
*/
|
||||
|
||||
CODEC_ID_NONE = AV_CODEC_ID_NONE,
|
||||
|
||||
/* video codecs */
|
||||
CODEC_ID_MPEG1VIDEO,
|
||||
CODEC_ID_MPEG2VIDEO, ///< preferred ID for MPEG-1/2 video decoding
|
||||
CODEC_ID_MPEG2VIDEO_XVMC,
|
||||
CODEC_ID_H261,
|
||||
CODEC_ID_H263,
|
||||
CODEC_ID_RV10,
|
||||
CODEC_ID_RV20,
|
||||
CODEC_ID_MJPEG,
|
||||
CODEC_ID_MJPEGB,
|
||||
CODEC_ID_LJPEG,
|
||||
CODEC_ID_SP5X,
|
||||
CODEC_ID_JPEGLS,
|
||||
CODEC_ID_MPEG4,
|
||||
CODEC_ID_RAWVIDEO,
|
||||
CODEC_ID_MSMPEG4V1,
|
||||
CODEC_ID_MSMPEG4V2,
|
||||
CODEC_ID_MSMPEG4V3,
|
||||
CODEC_ID_WMV1,
|
||||
CODEC_ID_WMV2,
|
||||
CODEC_ID_H263P,
|
||||
CODEC_ID_H263I,
|
||||
CODEC_ID_FLV1,
|
||||
CODEC_ID_SVQ1,
|
||||
CODEC_ID_SVQ3,
|
||||
CODEC_ID_DVVIDEO,
|
||||
CODEC_ID_HUFFYUV,
|
||||
CODEC_ID_CYUV,
|
||||
CODEC_ID_H264,
|
||||
CODEC_ID_INDEO3,
|
||||
CODEC_ID_VP3,
|
||||
CODEC_ID_THEORA,
|
||||
CODEC_ID_ASV1,
|
||||
CODEC_ID_ASV2,
|
||||
CODEC_ID_FFV1,
|
||||
CODEC_ID_4XM,
|
||||
CODEC_ID_VCR1,
|
||||
CODEC_ID_CLJR,
|
||||
CODEC_ID_MDEC,
|
||||
CODEC_ID_ROQ,
|
||||
CODEC_ID_INTERPLAY_VIDEO,
|
||||
CODEC_ID_XAN_WC3,
|
||||
CODEC_ID_XAN_WC4,
|
||||
CODEC_ID_RPZA,
|
||||
CODEC_ID_CINEPAK,
|
||||
CODEC_ID_WS_VQA,
|
||||
CODEC_ID_MSRLE,
|
||||
CODEC_ID_MSVIDEO1,
|
||||
CODEC_ID_IDCIN,
|
||||
CODEC_ID_8BPS,
|
||||
CODEC_ID_SMC,
|
||||
CODEC_ID_FLIC,
|
||||
CODEC_ID_TRUEMOTION1,
|
||||
CODEC_ID_VMDVIDEO,
|
||||
CODEC_ID_MSZH,
|
||||
CODEC_ID_ZLIB,
|
||||
CODEC_ID_QTRLE,
|
||||
CODEC_ID_TSCC,
|
||||
CODEC_ID_ULTI,
|
||||
CODEC_ID_QDRAW,
|
||||
CODEC_ID_VIXL,
|
||||
CODEC_ID_QPEG,
|
||||
CODEC_ID_PNG,
|
||||
CODEC_ID_PPM,
|
||||
CODEC_ID_PBM,
|
||||
CODEC_ID_PGM,
|
||||
CODEC_ID_PGMYUV,
|
||||
CODEC_ID_PAM,
|
||||
CODEC_ID_FFVHUFF,
|
||||
CODEC_ID_RV30,
|
||||
CODEC_ID_RV40,
|
||||
CODEC_ID_VC1,
|
||||
CODEC_ID_WMV3,
|
||||
CODEC_ID_LOCO,
|
||||
CODEC_ID_WNV1,
|
||||
CODEC_ID_AASC,
|
||||
CODEC_ID_INDEO2,
|
||||
CODEC_ID_FRAPS,
|
||||
CODEC_ID_TRUEMOTION2,
|
||||
CODEC_ID_BMP,
|
||||
CODEC_ID_CSCD,
|
||||
CODEC_ID_MMVIDEO,
|
||||
CODEC_ID_ZMBV,
|
||||
CODEC_ID_AVS,
|
||||
CODEC_ID_SMACKVIDEO,
|
||||
CODEC_ID_NUV,
|
||||
CODEC_ID_KMVC,
|
||||
CODEC_ID_FLASHSV,
|
||||
CODEC_ID_CAVS,
|
||||
CODEC_ID_JPEG2000,
|
||||
CODEC_ID_VMNC,
|
||||
CODEC_ID_VP5,
|
||||
CODEC_ID_VP6,
|
||||
CODEC_ID_VP6F,
|
||||
CODEC_ID_TARGA,
|
||||
CODEC_ID_DSICINVIDEO,
|
||||
CODEC_ID_TIERTEXSEQVIDEO,
|
||||
CODEC_ID_TIFF,
|
||||
CODEC_ID_GIF,
|
||||
CODEC_ID_DXA,
|
||||
CODEC_ID_DNXHD,
|
||||
CODEC_ID_THP,
|
||||
CODEC_ID_SGI,
|
||||
CODEC_ID_C93,
|
||||
CODEC_ID_BETHSOFTVID,
|
||||
CODEC_ID_PTX,
|
||||
CODEC_ID_TXD,
|
||||
CODEC_ID_VP6A,
|
||||
CODEC_ID_AMV,
|
||||
CODEC_ID_VB,
|
||||
CODEC_ID_PCX,
|
||||
CODEC_ID_SUNRAST,
|
||||
CODEC_ID_INDEO4,
|
||||
CODEC_ID_INDEO5,
|
||||
CODEC_ID_MIMIC,
|
||||
CODEC_ID_RL2,
|
||||
CODEC_ID_ESCAPE124,
|
||||
CODEC_ID_DIRAC,
|
||||
CODEC_ID_BFI,
|
||||
CODEC_ID_CMV,
|
||||
CODEC_ID_MOTIONPIXELS,
|
||||
CODEC_ID_TGV,
|
||||
CODEC_ID_TGQ,
|
||||
CODEC_ID_TQI,
|
||||
CODEC_ID_AURA,
|
||||
CODEC_ID_AURA2,
|
||||
CODEC_ID_V210X,
|
||||
CODEC_ID_TMV,
|
||||
CODEC_ID_V210,
|
||||
CODEC_ID_DPX,
|
||||
CODEC_ID_MAD,
|
||||
CODEC_ID_FRWU,
|
||||
CODEC_ID_FLASHSV2,
|
||||
CODEC_ID_CDGRAPHICS,
|
||||
CODEC_ID_R210,
|
||||
CODEC_ID_ANM,
|
||||
CODEC_ID_BINKVIDEO,
|
||||
CODEC_ID_IFF_ILBM,
|
||||
CODEC_ID_IFF_BYTERUN1,
|
||||
CODEC_ID_KGV1,
|
||||
CODEC_ID_YOP,
|
||||
CODEC_ID_VP8,
|
||||
CODEC_ID_PICTOR,
|
||||
CODEC_ID_ANSI,
|
||||
CODEC_ID_A64_MULTI,
|
||||
CODEC_ID_A64_MULTI5,
|
||||
CODEC_ID_R10K,
|
||||
CODEC_ID_MXPEG,
|
||||
CODEC_ID_LAGARITH,
|
||||
CODEC_ID_PRORES,
|
||||
CODEC_ID_JV,
|
||||
CODEC_ID_DFA,
|
||||
CODEC_ID_WMV3IMAGE,
|
||||
CODEC_ID_VC1IMAGE,
|
||||
CODEC_ID_UTVIDEO,
|
||||
CODEC_ID_BMV_VIDEO,
|
||||
CODEC_ID_VBLE,
|
||||
CODEC_ID_DXTORY,
|
||||
CODEC_ID_V410,
|
||||
CODEC_ID_XWD,
|
||||
CODEC_ID_CDXL,
|
||||
CODEC_ID_XBM,
|
||||
CODEC_ID_ZEROCODEC,
|
||||
CODEC_ID_MSS1,
|
||||
CODEC_ID_MSA1,
|
||||
CODEC_ID_TSCC2,
|
||||
CODEC_ID_MTS2,
|
||||
CODEC_ID_CLLC,
|
||||
CODEC_ID_Y41P = MKBETAG('Y','4','1','P'),
|
||||
CODEC_ID_ESCAPE130 = MKBETAG('E','1','3','0'),
|
||||
CODEC_ID_EXR = MKBETAG('0','E','X','R'),
|
||||
CODEC_ID_AVRP = MKBETAG('A','V','R','P'),
|
||||
|
||||
CODEC_ID_G2M = MKBETAG( 0 ,'G','2','M'),
|
||||
CODEC_ID_AVUI = MKBETAG('A','V','U','I'),
|
||||
CODEC_ID_AYUV = MKBETAG('A','Y','U','V'),
|
||||
CODEC_ID_V308 = MKBETAG('V','3','0','8'),
|
||||
CODEC_ID_V408 = MKBETAG('V','4','0','8'),
|
||||
CODEC_ID_YUV4 = MKBETAG('Y','U','V','4'),
|
||||
CODEC_ID_SANM = MKBETAG('S','A','N','M'),
|
||||
CODEC_ID_PAF_VIDEO = MKBETAG('P','A','F','V'),
|
||||
CODEC_ID_SNOW = AV_CODEC_ID_SNOW,
|
||||
|
||||
/* various PCM "codecs" */
|
||||
CODEC_ID_FIRST_AUDIO = 0x10000, ///< A dummy id pointing at the start of audio codecs
|
||||
CODEC_ID_PCM_S16LE = 0x10000,
|
||||
CODEC_ID_PCM_S16BE,
|
||||
CODEC_ID_PCM_U16LE,
|
||||
CODEC_ID_PCM_U16BE,
|
||||
CODEC_ID_PCM_S8,
|
||||
CODEC_ID_PCM_U8,
|
||||
CODEC_ID_PCM_MULAW,
|
||||
CODEC_ID_PCM_ALAW,
|
||||
CODEC_ID_PCM_S32LE,
|
||||
CODEC_ID_PCM_S32BE,
|
||||
CODEC_ID_PCM_U32LE,
|
||||
CODEC_ID_PCM_U32BE,
|
||||
CODEC_ID_PCM_S24LE,
|
||||
CODEC_ID_PCM_S24BE,
|
||||
CODEC_ID_PCM_U24LE,
|
||||
CODEC_ID_PCM_U24BE,
|
||||
CODEC_ID_PCM_S24DAUD,
|
||||
CODEC_ID_PCM_ZORK,
|
||||
CODEC_ID_PCM_S16LE_PLANAR,
|
||||
CODEC_ID_PCM_DVD,
|
||||
CODEC_ID_PCM_F32BE,
|
||||
CODEC_ID_PCM_F32LE,
|
||||
CODEC_ID_PCM_F64BE,
|
||||
CODEC_ID_PCM_F64LE,
|
||||
CODEC_ID_PCM_BLURAY,
|
||||
CODEC_ID_PCM_LXF,
|
||||
CODEC_ID_S302M,
|
||||
CODEC_ID_PCM_S8_PLANAR,
|
||||
|
||||
/* various ADPCM codecs */
|
||||
CODEC_ID_ADPCM_IMA_QT = 0x11000,
|
||||
CODEC_ID_ADPCM_IMA_WAV,
|
||||
CODEC_ID_ADPCM_IMA_DK3,
|
||||
CODEC_ID_ADPCM_IMA_DK4,
|
||||
CODEC_ID_ADPCM_IMA_WS,
|
||||
CODEC_ID_ADPCM_IMA_SMJPEG,
|
||||
CODEC_ID_ADPCM_MS,
|
||||
CODEC_ID_ADPCM_4XM,
|
||||
CODEC_ID_ADPCM_XA,
|
||||
CODEC_ID_ADPCM_ADX,
|
||||
CODEC_ID_ADPCM_EA,
|
||||
CODEC_ID_ADPCM_G726,
|
||||
CODEC_ID_ADPCM_CT,
|
||||
CODEC_ID_ADPCM_SWF,
|
||||
CODEC_ID_ADPCM_YAMAHA,
|
||||
CODEC_ID_ADPCM_SBPRO_4,
|
||||
CODEC_ID_ADPCM_SBPRO_3,
|
||||
CODEC_ID_ADPCM_SBPRO_2,
|
||||
CODEC_ID_ADPCM_THP,
|
||||
CODEC_ID_ADPCM_IMA_AMV,
|
||||
CODEC_ID_ADPCM_EA_R1,
|
||||
CODEC_ID_ADPCM_EA_R3,
|
||||
CODEC_ID_ADPCM_EA_R2,
|
||||
CODEC_ID_ADPCM_IMA_EA_SEAD,
|
||||
CODEC_ID_ADPCM_IMA_EA_EACS,
|
||||
CODEC_ID_ADPCM_EA_XAS,
|
||||
CODEC_ID_ADPCM_EA_MAXIS_XA,
|
||||
CODEC_ID_ADPCM_IMA_ISS,
|
||||
CODEC_ID_ADPCM_G722,
|
||||
CODEC_ID_ADPCM_IMA_APC,
|
||||
CODEC_ID_VIMA = MKBETAG('V','I','M','A'),
|
||||
|
||||
/* AMR */
|
||||
CODEC_ID_AMR_NB = 0x12000,
|
||||
CODEC_ID_AMR_WB,
|
||||
|
||||
/* RealAudio codecs*/
|
||||
CODEC_ID_RA_144 = 0x13000,
|
||||
CODEC_ID_RA_288,
|
||||
|
||||
/* various DPCM codecs */
|
||||
CODEC_ID_ROQ_DPCM = 0x14000,
|
||||
CODEC_ID_INTERPLAY_DPCM,
|
||||
CODEC_ID_XAN_DPCM,
|
||||
CODEC_ID_SOL_DPCM,
|
||||
|
||||
/* audio codecs */
|
||||
CODEC_ID_MP2 = 0x15000,
|
||||
CODEC_ID_MP3, ///< preferred ID for decoding MPEG audio layer 1, 2 or 3
|
||||
CODEC_ID_AAC,
|
||||
CODEC_ID_AC3,
|
||||
CODEC_ID_DTS,
|
||||
CODEC_ID_VORBIS,
|
||||
CODEC_ID_DVAUDIO,
|
||||
CODEC_ID_WMAV1,
|
||||
CODEC_ID_WMAV2,
|
||||
CODEC_ID_MACE3,
|
||||
CODEC_ID_MACE6,
|
||||
CODEC_ID_VMDAUDIO,
|
||||
CODEC_ID_FLAC,
|
||||
CODEC_ID_MP3ADU,
|
||||
CODEC_ID_MP3ON4,
|
||||
CODEC_ID_SHORTEN,
|
||||
CODEC_ID_ALAC,
|
||||
CODEC_ID_WESTWOOD_SND1,
|
||||
CODEC_ID_GSM, ///< as in Berlin toast format
|
||||
CODEC_ID_QDM2,
|
||||
CODEC_ID_COOK,
|
||||
CODEC_ID_TRUESPEECH,
|
||||
CODEC_ID_TTA,
|
||||
CODEC_ID_SMACKAUDIO,
|
||||
CODEC_ID_QCELP,
|
||||
CODEC_ID_WAVPACK,
|
||||
CODEC_ID_DSICINAUDIO,
|
||||
CODEC_ID_IMC,
|
||||
CODEC_ID_MUSEPACK7,
|
||||
CODEC_ID_MLP,
|
||||
CODEC_ID_GSM_MS, /* as found in WAV */
|
||||
CODEC_ID_ATRAC3,
|
||||
CODEC_ID_VOXWARE,
|
||||
CODEC_ID_APE,
|
||||
CODEC_ID_NELLYMOSER,
|
||||
CODEC_ID_MUSEPACK8,
|
||||
CODEC_ID_SPEEX,
|
||||
CODEC_ID_WMAVOICE,
|
||||
CODEC_ID_WMAPRO,
|
||||
CODEC_ID_WMALOSSLESS,
|
||||
CODEC_ID_ATRAC3P,
|
||||
CODEC_ID_EAC3,
|
||||
CODEC_ID_SIPR,
|
||||
CODEC_ID_MP1,
|
||||
CODEC_ID_TWINVQ,
|
||||
CODEC_ID_TRUEHD,
|
||||
CODEC_ID_MP4ALS,
|
||||
CODEC_ID_ATRAC1,
|
||||
CODEC_ID_BINKAUDIO_RDFT,
|
||||
CODEC_ID_BINKAUDIO_DCT,
|
||||
CODEC_ID_AAC_LATM,
|
||||
CODEC_ID_QDMC,
|
||||
CODEC_ID_CELT,
|
||||
CODEC_ID_G723_1,
|
||||
CODEC_ID_G729,
|
||||
CODEC_ID_8SVX_EXP,
|
||||
CODEC_ID_8SVX_FIB,
|
||||
CODEC_ID_BMV_AUDIO,
|
||||
CODEC_ID_RALF,
|
||||
CODEC_ID_IAC,
|
||||
CODEC_ID_ILBC,
|
||||
CODEC_ID_FFWAVESYNTH = MKBETAG('F','F','W','S'),
|
||||
CODEC_ID_SONIC = MKBETAG('S','O','N','C'),
|
||||
CODEC_ID_SONIC_LS = MKBETAG('S','O','N','L'),
|
||||
CODEC_ID_PAF_AUDIO = MKBETAG('P','A','F','A'),
|
||||
CODEC_ID_OPUS = MKBETAG('O','P','U','S'),
|
||||
|
||||
/* subtitle codecs */
|
||||
CODEC_ID_FIRST_SUBTITLE = 0x17000, ///< A dummy ID pointing at the start of subtitle codecs.
|
||||
CODEC_ID_DVD_SUBTITLE = 0x17000,
|
||||
CODEC_ID_DVB_SUBTITLE,
|
||||
CODEC_ID_TEXT, ///< raw UTF-8 text
|
||||
CODEC_ID_XSUB,
|
||||
CODEC_ID_SSA,
|
||||
CODEC_ID_MOV_TEXT,
|
||||
CODEC_ID_HDMV_PGS_SUBTITLE,
|
||||
CODEC_ID_DVB_TELETEXT,
|
||||
CODEC_ID_SRT,
|
||||
CODEC_ID_MICRODVD = MKBETAG('m','D','V','D'),
|
||||
CODEC_ID_EIA_608 = MKBETAG('c','6','0','8'),
|
||||
CODEC_ID_JACOSUB = MKBETAG('J','S','U','B'),
|
||||
CODEC_ID_SAMI = MKBETAG('S','A','M','I'),
|
||||
CODEC_ID_REALTEXT = MKBETAG('R','T','X','T'),
|
||||
CODEC_ID_SUBVIEWER = MKBETAG('S','u','b','V'),
|
||||
|
||||
/* other specific kind of codecs (generally used for attachments) */
|
||||
CODEC_ID_FIRST_UNKNOWN = 0x18000, ///< A dummy ID pointing at the start of various fake codecs.
|
||||
CODEC_ID_TTF = 0x18000,
|
||||
CODEC_ID_BINTEXT = MKBETAG('B','T','X','T'),
|
||||
CODEC_ID_XBIN = MKBETAG('X','B','I','N'),
|
||||
CODEC_ID_IDF = MKBETAG( 0 ,'I','D','F'),
|
||||
CODEC_ID_OTF = MKBETAG( 0 ,'O','T','F'),
|
||||
|
||||
CODEC_ID_PROBE = 0x19000, ///< codec_id is not known (like CODEC_ID_NONE) but lavf should attempt to identify it
|
||||
|
||||
CODEC_ID_MPEG2TS = 0x20000, /**< _FAKE_ codec to indicate a raw MPEG-2 TS
|
||||
* stream (only used by libavformat) */
|
||||
CODEC_ID_MPEG4SYSTEMS = 0x20001, /**< _FAKE_ codec to indicate a MPEG-4 Systems
|
||||
* stream (only used by libavformat) */
|
||||
CODEC_ID_FFMETADATA = 0x21000, ///< Dummy codec for streams containing only metadata information.
|
||||
|
||||
#endif /* AVCODEC_OLD_CODEC_IDS_H */
|
||||
173
3rdparty/include/ffmpeg_/libavcodec/vaapi.h
vendored
173
3rdparty/include/ffmpeg_/libavcodec/vaapi.h
vendored
@@ -1,173 +0,0 @@
|
||||
/*
|
||||
* Video Acceleration API (shared data between FFmpeg and the video player)
|
||||
* HW decode acceleration for MPEG-2, MPEG-4, H.264 and VC-1
|
||||
*
|
||||
* Copyright (C) 2008-2009 Splitted-Desktop Systems
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef AVCODEC_VAAPI_H
|
||||
#define AVCODEC_VAAPI_H
|
||||
|
||||
/**
|
||||
* @file
|
||||
* @ingroup lavc_codec_hwaccel_vaapi
|
||||
* Public libavcodec VA API header.
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/**
|
||||
* @defgroup lavc_codec_hwaccel_vaapi VA API Decoding
|
||||
* @ingroup lavc_codec_hwaccel
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* This structure is used to share data between the FFmpeg library and
|
||||
* the client video application.
|
||||
* This shall be zero-allocated and available as
|
||||
* AVCodecContext.hwaccel_context. All user members can be set once
|
||||
* during initialization or through each AVCodecContext.get_buffer()
|
||||
* function call. In any case, they must be valid prior to calling
|
||||
* decoding functions.
|
||||
*/
|
||||
struct vaapi_context {
|
||||
/**
|
||||
* Window system dependent data
|
||||
*
|
||||
* - encoding: unused
|
||||
* - decoding: Set by user
|
||||
*/
|
||||
void *display;
|
||||
|
||||
/**
|
||||
* Configuration ID
|
||||
*
|
||||
* - encoding: unused
|
||||
* - decoding: Set by user
|
||||
*/
|
||||
uint32_t config_id;
|
||||
|
||||
/**
|
||||
* Context ID (video decode pipeline)
|
||||
*
|
||||
* - encoding: unused
|
||||
* - decoding: Set by user
|
||||
*/
|
||||
uint32_t context_id;
|
||||
|
||||
/**
|
||||
* VAPictureParameterBuffer ID
|
||||
*
|
||||
* - encoding: unused
|
||||
* - decoding: Set by libavcodec
|
||||
*/
|
||||
uint32_t pic_param_buf_id;
|
||||
|
||||
/**
|
||||
* VAIQMatrixBuffer ID
|
||||
*
|
||||
* - encoding: unused
|
||||
* - decoding: Set by libavcodec
|
||||
*/
|
||||
uint32_t iq_matrix_buf_id;
|
||||
|
||||
/**
|
||||
* VABitPlaneBuffer ID (for VC-1 decoding)
|
||||
*
|
||||
* - encoding: unused
|
||||
* - decoding: Set by libavcodec
|
||||
*/
|
||||
uint32_t bitplane_buf_id;
|
||||
|
||||
/**
|
||||
* Slice parameter/data buffer IDs
|
||||
*
|
||||
* - encoding: unused
|
||||
* - decoding: Set by libavcodec
|
||||
*/
|
||||
uint32_t *slice_buf_ids;
|
||||
|
||||
/**
|
||||
* Number of effective slice buffer IDs to send to the HW
|
||||
*
|
||||
* - encoding: unused
|
||||
* - decoding: Set by libavcodec
|
||||
*/
|
||||
unsigned int n_slice_buf_ids;
|
||||
|
||||
/**
|
||||
* Size of pre-allocated slice_buf_ids
|
||||
*
|
||||
* - encoding: unused
|
||||
* - decoding: Set by libavcodec
|
||||
*/
|
||||
unsigned int slice_buf_ids_alloc;
|
||||
|
||||
/**
|
||||
* Pointer to VASliceParameterBuffers
|
||||
*
|
||||
* - encoding: unused
|
||||
* - decoding: Set by libavcodec
|
||||
*/
|
||||
void *slice_params;
|
||||
|
||||
/**
|
||||
* Size of a VASliceParameterBuffer element
|
||||
*
|
||||
* - encoding: unused
|
||||
* - decoding: Set by libavcodec
|
||||
*/
|
||||
unsigned int slice_param_size;
|
||||
|
||||
/**
|
||||
* Size of pre-allocated slice_params
|
||||
*
|
||||
* - encoding: unused
|
||||
* - decoding: Set by libavcodec
|
||||
*/
|
||||
unsigned int slice_params_alloc;
|
||||
|
||||
/**
|
||||
* Number of slices currently filled in
|
||||
*
|
||||
* - encoding: unused
|
||||
* - decoding: Set by libavcodec
|
||||
*/
|
||||
unsigned int slice_count;
|
||||
|
||||
/**
|
||||
* Pointer to slice data buffer base
|
||||
* - encoding: unused
|
||||
* - decoding: Set by libavcodec
|
||||
*/
|
||||
const uint8_t *slice_data;
|
||||
|
||||
/**
|
||||
* Current size of slice data
|
||||
*
|
||||
* - encoding: unused
|
||||
* - decoding: Set by libavcodec
|
||||
*/
|
||||
uint32_t slice_data_size;
|
||||
};
|
||||
|
||||
/* @} */
|
||||
|
||||
#endif /* AVCODEC_VAAPI_H */
|
||||
162
3rdparty/include/ffmpeg_/libavcodec/vda.h
vendored
162
3rdparty/include/ffmpeg_/libavcodec/vda.h
vendored
@@ -1,162 +0,0 @@
|
||||
/*
|
||||
* VDA HW acceleration
|
||||
*
|
||||
* copyright (c) 2011 Sebastien Zwickert
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef AVCODEC_VDA_H
|
||||
#define AVCODEC_VDA_H
|
||||
|
||||
/**
|
||||
* @file
|
||||
* @ingroup lavc_codec_hwaccel_vda
|
||||
* Public libavcodec VDA header.
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
// emmintrin.h is unable to compile with -std=c99 -Werror=missing-prototypes
|
||||
// http://openradar.appspot.com/8026390
|
||||
#undef __GNUC_STDC_INLINE__
|
||||
|
||||
#define Picture QuickdrawPicture
|
||||
#include <VideoDecodeAcceleration/VDADecoder.h>
|
||||
#undef Picture
|
||||
|
||||
#include "libavcodec/version.h"
|
||||
|
||||
/**
|
||||
* @defgroup lavc_codec_hwaccel_vda VDA
|
||||
* @ingroup lavc_codec_hwaccel
|
||||
*
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* This structure is used to provide the necessary configurations and data
|
||||
* to the VDA FFmpeg HWAccel implementation.
|
||||
*
|
||||
* The application must make it available as AVCodecContext.hwaccel_context.
|
||||
*/
|
||||
struct vda_context {
|
||||
/**
|
||||
* VDA decoder object.
|
||||
*
|
||||
* - encoding: unused
|
||||
* - decoding: Set/Unset by libavcodec.
|
||||
*/
|
||||
VDADecoder decoder;
|
||||
|
||||
/**
|
||||
* The Core Video pixel buffer that contains the current image data.
|
||||
*
|
||||
* encoding: unused
|
||||
* decoding: Set by libavcodec. Unset by user.
|
||||
*/
|
||||
CVPixelBufferRef cv_buffer;
|
||||
|
||||
/**
|
||||
* Use the hardware decoder in synchronous mode.
|
||||
*
|
||||
* encoding: unused
|
||||
* decoding: Set by user.
|
||||
*/
|
||||
int use_sync_decoding;
|
||||
|
||||
/**
|
||||
* The frame width.
|
||||
*
|
||||
* - encoding: unused
|
||||
* - decoding: Set/Unset by user.
|
||||
*/
|
||||
int width;
|
||||
|
||||
/**
|
||||
* The frame height.
|
||||
*
|
||||
* - encoding: unused
|
||||
* - decoding: Set/Unset by user.
|
||||
*/
|
||||
int height;
|
||||
|
||||
/**
|
||||
* The frame format.
|
||||
*
|
||||
* - encoding: unused
|
||||
* - decoding: Set/Unset by user.
|
||||
*/
|
||||
int format;
|
||||
|
||||
/**
|
||||
* The pixel format for output image buffers.
|
||||
*
|
||||
* - encoding: unused
|
||||
* - decoding: Set/Unset by user.
|
||||
*/
|
||||
OSType cv_pix_fmt_type;
|
||||
|
||||
/**
|
||||
* The current bitstream buffer.
|
||||
*
|
||||
* - encoding: unused
|
||||
* - decoding: Set/Unset by libavcodec.
|
||||
*/
|
||||
uint8_t *priv_bitstream;
|
||||
|
||||
/**
|
||||
* The current size of the bitstream.
|
||||
*
|
||||
* - encoding: unused
|
||||
* - decoding: Set/Unset by libavcodec.
|
||||
*/
|
||||
int priv_bitstream_size;
|
||||
|
||||
/**
|
||||
* The reference size used for fast reallocation.
|
||||
*
|
||||
* - encoding: unused
|
||||
* - decoding: Set/Unset by libavcodec.
|
||||
*/
|
||||
int priv_allocated_size;
|
||||
|
||||
/**
|
||||
* Use av_buffer to manage buffer.
|
||||
* When the flag is set, the CVPixelBuffers returned by the decoder will
|
||||
* be released automatically, so you have to retain them if necessary.
|
||||
* Not setting this flag may cause memory leak.
|
||||
*
|
||||
* encoding: unused
|
||||
* decoding: Set by user.
|
||||
*/
|
||||
int use_ref_buffer;
|
||||
};
|
||||
|
||||
/** Create the video decoder. */
|
||||
int ff_vda_create_decoder(struct vda_context *vda_ctx,
|
||||
uint8_t *extradata,
|
||||
int extradata_size);
|
||||
|
||||
/** Destroy the video decoder. */
|
||||
int ff_vda_destroy_decoder(struct vda_context *vda_ctx);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
#endif /* AVCODEC_VDA_H */
|
||||
159
3rdparty/include/ffmpeg_/libavcodec/vdpau.h
vendored
159
3rdparty/include/ffmpeg_/libavcodec/vdpau.h
vendored
@@ -1,159 +0,0 @@
|
||||
/*
|
||||
* The Video Decode and Presentation API for UNIX (VDPAU) is used for
|
||||
* hardware-accelerated decoding of MPEG-1/2, H.264 and VC-1.
|
||||
*
|
||||
* Copyright (C) 2008 NVIDIA
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef AVCODEC_VDPAU_H
|
||||
#define AVCODEC_VDPAU_H
|
||||
|
||||
/**
|
||||
* @file
|
||||
* @ingroup lavc_codec_hwaccel_vdpau
|
||||
* Public libavcodec VDPAU header.
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @defgroup lavc_codec_hwaccel_vdpau VDPAU Decoder and Renderer
|
||||
* @ingroup lavc_codec_hwaccel
|
||||
*
|
||||
* VDPAU hardware acceleration has two modules
|
||||
* - VDPAU decoding
|
||||
* - VDPAU presentation
|
||||
*
|
||||
* The VDPAU decoding module parses all headers using FFmpeg
|
||||
* parsing mechanisms and uses VDPAU for the actual decoding.
|
||||
*
|
||||
* As per the current implementation, the actual decoding
|
||||
* and rendering (API calls) are done as part of the VDPAU
|
||||
* presentation (vo_vdpau.c) module.
|
||||
*
|
||||
* @{
|
||||
*/
|
||||
|
||||
#include <vdpau/vdpau.h>
|
||||
#include <vdpau/vdpau_x11.h>
|
||||
#include "libavutil/avconfig.h"
|
||||
|
||||
union FFVdpPictureInfo {
|
||||
VdpPictureInfoH264 h264;
|
||||
VdpPictureInfoMPEG1Or2 mpeg;
|
||||
VdpPictureInfoVC1 vc1;
|
||||
VdpPictureInfoMPEG4Part2 mpeg4;
|
||||
};
|
||||
|
||||
/**
|
||||
* This structure is used to share data between the libavcodec library and
|
||||
* the client video application.
|
||||
* The user shall zero-allocate the structure and make it available as
|
||||
* AVCodecContext.hwaccel_context. Members can be set by the user once
|
||||
* during initialization or through each AVCodecContext.get_buffer()
|
||||
* function call. In any case, they must be valid prior to calling
|
||||
* decoding functions.
|
||||
*/
|
||||
typedef struct AVVDPAUContext {
|
||||
/**
|
||||
* VDPAU decoder handle
|
||||
*
|
||||
* Set by user.
|
||||
*/
|
||||
VdpDecoder decoder;
|
||||
|
||||
/**
|
||||
* VDPAU decoder render callback
|
||||
*
|
||||
* Set by the user.
|
||||
*/
|
||||
VdpDecoderRender *render;
|
||||
|
||||
/**
|
||||
* VDPAU picture information
|
||||
*
|
||||
* Set by libavcodec.
|
||||
*/
|
||||
union FFVdpPictureInfo info;
|
||||
|
||||
/**
|
||||
* Allocated size of the bitstream_buffers table.
|
||||
*
|
||||
* Set by libavcodec.
|
||||
*/
|
||||
int bitstream_buffers_allocated;
|
||||
|
||||
/**
|
||||
* Useful bitstream buffers in the bitstream buffers table.
|
||||
*
|
||||
* Set by libavcodec.
|
||||
*/
|
||||
int bitstream_buffers_used;
|
||||
|
||||
/**
|
||||
* Table of bitstream buffers.
|
||||
* The user is responsible for freeing this buffer using av_freep().
|
||||
*
|
||||
* Set by libavcodec.
|
||||
*/
|
||||
VdpBitstreamBuffer *bitstream_buffers;
|
||||
} AVVDPAUContext;
|
||||
|
||||
|
||||
/** @brief The videoSurface is used for rendering. */
|
||||
#define FF_VDPAU_STATE_USED_FOR_RENDER 1
|
||||
|
||||
/**
|
||||
* @brief The videoSurface is needed for reference/prediction.
|
||||
* The codec manipulates this.
|
||||
*/
|
||||
#define FF_VDPAU_STATE_USED_FOR_REFERENCE 2
|
||||
|
||||
/**
|
||||
* @brief This structure is used as a callback between the FFmpeg
|
||||
* decoder (vd_) and presentation (vo_) module.
|
||||
* This is used for defining a video frame containing surface,
|
||||
* picture parameter, bitstream information etc which are passed
|
||||
* between the FFmpeg decoder and its clients.
|
||||
*/
|
||||
struct vdpau_render_state {
|
||||
VdpVideoSurface surface; ///< Used as rendered surface, never changed.
|
||||
|
||||
int state; ///< Holds FF_VDPAU_STATE_* values.
|
||||
|
||||
#if AV_HAVE_INCOMPATIBLE_LIBAV_ABI
|
||||
/** picture parameter information for all supported codecs */
|
||||
union FFVdpPictureInfo info;
|
||||
#endif
|
||||
|
||||
/** Describe size/location of the compressed video data.
|
||||
Set to 0 when freeing bitstream_buffers. */
|
||||
int bitstream_buffers_allocated;
|
||||
int bitstream_buffers_used;
|
||||
/** The user is responsible for freeing this buffer using av_freep(). */
|
||||
VdpBitstreamBuffer *bitstream_buffers;
|
||||
|
||||
#if !AV_HAVE_INCOMPATIBLE_LIBAV_ABI
|
||||
/** picture parameter information for all supported codecs */
|
||||
union FFVdpPictureInfo info;
|
||||
#endif
|
||||
};
|
||||
|
||||
/* @}*/
|
||||
|
||||
#endif /* AVCODEC_VDPAU_H */
|
||||
95
3rdparty/include/ffmpeg_/libavcodec/version.h
vendored
95
3rdparty/include/ffmpeg_/libavcodec/version.h
vendored
@@ -1,95 +0,0 @@
|
||||
/*
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef AVCODEC_VERSION_H
|
||||
#define AVCODEC_VERSION_H
|
||||
|
||||
/**
|
||||
* @file
|
||||
* @ingroup libavc
|
||||
* Libavcodec version macros.
|
||||
*/
|
||||
|
||||
#include "libavutil/avutil.h"
|
||||
|
||||
#define LIBAVCODEC_VERSION_MAJOR 55
|
||||
#define LIBAVCODEC_VERSION_MINOR 18
|
||||
#define LIBAVCODEC_VERSION_MICRO 102
|
||||
|
||||
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
|
||||
LIBAVCODEC_VERSION_MINOR, \
|
||||
LIBAVCODEC_VERSION_MICRO)
|
||||
#define LIBAVCODEC_VERSION AV_VERSION(LIBAVCODEC_VERSION_MAJOR, \
|
||||
LIBAVCODEC_VERSION_MINOR, \
|
||||
LIBAVCODEC_VERSION_MICRO)
|
||||
#define LIBAVCODEC_BUILD LIBAVCODEC_VERSION_INT
|
||||
|
||||
#define LIBAVCODEC_IDENT "Lavc" AV_STRINGIFY(LIBAVCODEC_VERSION)
|
||||
|
||||
/**
|
||||
* FF_API_* defines may be placed below to indicate public API that will be
|
||||
* dropped at a future version bump. The defines themselves are not part of
|
||||
* the public API and may change, break or disappear at any time.
|
||||
*/
|
||||
|
||||
#ifndef FF_API_REQUEST_CHANNELS
|
||||
#define FF_API_REQUEST_CHANNELS (LIBAVCODEC_VERSION_MAJOR < 56)
|
||||
#endif
|
||||
#ifndef FF_API_ALLOC_CONTEXT
|
||||
#define FF_API_ALLOC_CONTEXT (LIBAVCODEC_VERSION_MAJOR < 55)
|
||||
#endif
|
||||
#ifndef FF_API_AVCODEC_OPEN
|
||||
#define FF_API_AVCODEC_OPEN (LIBAVCODEC_VERSION_MAJOR < 55)
|
||||
#endif
|
||||
#ifndef FF_API_OLD_DECODE_AUDIO
|
||||
#define FF_API_OLD_DECODE_AUDIO (LIBAVCODEC_VERSION_MAJOR < 56)
|
||||
#endif
|
||||
#ifndef FF_API_OLD_TIMECODE
|
||||
#define FF_API_OLD_TIMECODE (LIBAVCODEC_VERSION_MAJOR < 55)
|
||||
#endif
|
||||
|
||||
#ifndef FF_API_OLD_ENCODE_AUDIO
|
||||
#define FF_API_OLD_ENCODE_AUDIO (LIBAVCODEC_VERSION_MAJOR < 56)
|
||||
#endif
|
||||
#ifndef FF_API_OLD_ENCODE_VIDEO
|
||||
#define FF_API_OLD_ENCODE_VIDEO (LIBAVCODEC_VERSION_MAJOR < 56)
|
||||
#endif
|
||||
#ifndef FF_API_CODEC_ID
|
||||
#define FF_API_CODEC_ID (LIBAVCODEC_VERSION_MAJOR < 56)
|
||||
#endif
|
||||
#ifndef FF_API_AVCODEC_RESAMPLE
|
||||
#define FF_API_AVCODEC_RESAMPLE (LIBAVCODEC_VERSION_MAJOR < 56)
|
||||
#endif
|
||||
#ifndef FF_API_DEINTERLACE
|
||||
#define FF_API_DEINTERLACE (LIBAVCODEC_VERSION_MAJOR < 56)
|
||||
#endif
|
||||
#ifndef FF_API_DESTRUCT_PACKET
|
||||
#define FF_API_DESTRUCT_PACKET (LIBAVCODEC_VERSION_MAJOR < 56)
|
||||
#endif
|
||||
#ifndef FF_API_GET_BUFFER
|
||||
#define FF_API_GET_BUFFER (LIBAVCODEC_VERSION_MAJOR < 56)
|
||||
#endif
|
||||
#ifndef FF_API_MISSING_SAMPLE
|
||||
#define FF_API_MISSING_SAMPLE (LIBAVCODEC_VERSION_MAJOR < 56)
|
||||
#endif
|
||||
#ifndef FF_API_LOWRES
|
||||
#define FF_API_LOWRES (LIBAVCODEC_VERSION_MAJOR < 56)
|
||||
#endif
|
||||
|
||||
#endif /* AVCODEC_VERSION_H */
|
||||
168
3rdparty/include/ffmpeg_/libavcodec/xvmc.h
vendored
168
3rdparty/include/ffmpeg_/libavcodec/xvmc.h
vendored
@@ -1,168 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2003 Ivan Kalvachev
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef AVCODEC_XVMC_H
|
||||
#define AVCODEC_XVMC_H
|
||||
|
||||
/**
|
||||
* @file
|
||||
* @ingroup lavc_codec_hwaccel_xvmc
|
||||
* Public libavcodec XvMC header.
|
||||
*/
|
||||
|
||||
#include <X11/extensions/XvMC.h>
|
||||
|
||||
#include "avcodec.h"
|
||||
|
||||
/**
|
||||
* @defgroup lavc_codec_hwaccel_xvmc XvMC
|
||||
* @ingroup lavc_codec_hwaccel
|
||||
*
|
||||
* @{
|
||||
*/
|
||||
|
||||
#define AV_XVMC_ID 0x1DC711C0 /**< special value to ensure that regular pixel routines haven't corrupted the struct
|
||||
the number is 1337 speak for the letters IDCT MCo (motion compensation) */
|
||||
|
||||
struct xvmc_pix_fmt {
|
||||
/** The field contains the special constant value AV_XVMC_ID.
|
||||
It is used as a test that the application correctly uses the API,
|
||||
and that there is no corruption caused by pixel routines.
|
||||
- application - set during initialization
|
||||
- libavcodec - unchanged
|
||||
*/
|
||||
int xvmc_id;
|
||||
|
||||
/** Pointer to the block array allocated by XvMCCreateBlocks().
|
||||
The array has to be freed by XvMCDestroyBlocks().
|
||||
Each group of 64 values represents one data block of differential
|
||||
pixel information (in MoCo mode) or coefficients for IDCT.
|
||||
- application - set the pointer during initialization
|
||||
- libavcodec - fills coefficients/pixel data into the array
|
||||
*/
|
||||
short* data_blocks;
|
||||
|
||||
/** Pointer to the macroblock description array allocated by
|
||||
XvMCCreateMacroBlocks() and freed by XvMCDestroyMacroBlocks().
|
||||
- application - set the pointer during initialization
|
||||
- libavcodec - fills description data into the array
|
||||
*/
|
||||
XvMCMacroBlock* mv_blocks;
|
||||
|
||||
/** Number of macroblock descriptions that can be stored in the mv_blocks
|
||||
array.
|
||||
- application - set during initialization
|
||||
- libavcodec - unchanged
|
||||
*/
|
||||
int allocated_mv_blocks;
|
||||
|
||||
/** Number of blocks that can be stored at once in the data_blocks array.
|
||||
- application - set during initialization
|
||||
- libavcodec - unchanged
|
||||
*/
|
||||
int allocated_data_blocks;
|
||||
|
||||
/** Indicate that the hardware would interpret data_blocks as IDCT
|
||||
coefficients and perform IDCT on them.
|
||||
- application - set during initialization
|
||||
- libavcodec - unchanged
|
||||
*/
|
||||
int idct;
|
||||
|
||||
/** In MoCo mode it indicates that intra macroblocks are assumed to be in
|
||||
unsigned format; same as the XVMC_INTRA_UNSIGNED flag.
|
||||
- application - set during initialization
|
||||
- libavcodec - unchanged
|
||||
*/
|
||||
int unsigned_intra;
|
||||
|
||||
/** Pointer to the surface allocated by XvMCCreateSurface().
|
||||
It has to be freed by XvMCDestroySurface() on application exit.
|
||||
It identifies the frame and its state on the video hardware.
|
||||
- application - set during initialization
|
||||
- libavcodec - unchanged
|
||||
*/
|
||||
XvMCSurface* p_surface;
|
||||
|
||||
/** Set by the decoder before calling ff_draw_horiz_band(),
|
||||
needed by the XvMCRenderSurface function. */
|
||||
//@{
|
||||
/** Pointer to the surface used as past reference
|
||||
- application - unchanged
|
||||
- libavcodec - set
|
||||
*/
|
||||
XvMCSurface* p_past_surface;
|
||||
|
||||
/** Pointer to the surface used as future reference
|
||||
- application - unchanged
|
||||
- libavcodec - set
|
||||
*/
|
||||
XvMCSurface* p_future_surface;
|
||||
|
||||
/** top/bottom field or frame
|
||||
- application - unchanged
|
||||
- libavcodec - set
|
||||
*/
|
||||
unsigned int picture_structure;
|
||||
|
||||
/** XVMC_SECOND_FIELD - 1st or 2nd field in the sequence
|
||||
- application - unchanged
|
||||
- libavcodec - set
|
||||
*/
|
||||
unsigned int flags;
|
||||
//}@
|
||||
|
||||
/** Number of macroblock descriptions in the mv_blocks array
|
||||
that have already been passed to the hardware.
|
||||
- application - zeroes it on get_buffer().
|
||||
A successful ff_draw_horiz_band() may increment it
|
||||
with filled_mb_block_num or zero both.
|
||||
- libavcodec - unchanged
|
||||
*/
|
||||
int start_mv_blocks_num;
|
||||
|
||||
/** Number of new macroblock descriptions in the mv_blocks array (after
|
||||
start_mv_blocks_num) that are filled by libavcodec and have to be
|
||||
passed to the hardware.
|
||||
- application - zeroes it on get_buffer() or after successful
|
||||
ff_draw_horiz_band().
|
||||
- libavcodec - increment with one of each stored MB
|
||||
*/
|
||||
int filled_mv_blocks_num;
|
||||
|
||||
/** Number of the next free data block; one data block consists of
|
||||
64 short values in the data_blocks array.
|
||||
All blocks before this one have already been claimed by placing their
|
||||
position into the corresponding block description structure field,
|
||||
that are part of the mv_blocks array.
|
||||
- application - zeroes it on get_buffer().
|
||||
A successful ff_draw_horiz_band() may zero it together
|
||||
with start_mb_blocks_num.
|
||||
- libavcodec - each decoded macroblock increases it by the number
|
||||
of coded blocks it contains.
|
||||
*/
|
||||
int next_free_data_block_num;
|
||||
};
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
#endif /* AVCODEC_XVMC_H */
|
||||
69
3rdparty/include/ffmpeg_/libavdevice/avdevice.h
vendored
69
3rdparty/include/ffmpeg_/libavdevice/avdevice.h
vendored
@@ -1,69 +0,0 @@
|
||||
/*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef AVDEVICE_AVDEVICE_H
|
||||
#define AVDEVICE_AVDEVICE_H
|
||||
|
||||
#include "version.h"
|
||||
|
||||
/**
|
||||
* @file
|
||||
* @ingroup lavd
|
||||
* Main libavdevice API header
|
||||
*/
|
||||
|
||||
/**
|
||||
* @defgroup lavd Special devices muxing/demuxing library
|
||||
* @{
|
||||
* Libavdevice is a complementary library to @ref libavf "libavformat". It
|
||||
* provides various "special" platform-specific muxers and demuxers, e.g. for
|
||||
* grabbing devices, audio capture and playback etc. As a consequence, the
|
||||
* (de)muxers in libavdevice are of the AVFMT_NOFILE type (they use their own
|
||||
* I/O functions). The filename passed to avformat_open_input() often does not
|
||||
* refer to an actually existing file, but has some special device-specific
|
||||
* meaning - e.g. for x11grab it is the display name.
|
||||
*
|
||||
* To use libavdevice, simply call avdevice_register_all() to register all
|
||||
* compiled muxers and demuxers. They all use standard libavformat API.
|
||||
* @}
|
||||
*/
|
||||
|
||||
#include "libavformat/avformat.h"
|
||||
|
||||
/**
|
||||
* Return the LIBAVDEVICE_VERSION_INT constant.
|
||||
*/
|
||||
unsigned avdevice_version(void);
|
||||
|
||||
/**
|
||||
* Return the libavdevice build-time configuration.
|
||||
*/
|
||||
const char *avdevice_configuration(void);
|
||||
|
||||
/**
|
||||
* Return the libavdevice license.
|
||||
*/
|
||||
const char *avdevice_license(void);
|
||||
|
||||
/**
|
||||
* Initialize libavdevice and register all the input and output devices.
|
||||
* @warning This function is not thread safe.
|
||||
*/
|
||||
void avdevice_register_all(void);
|
||||
|
||||
#endif /* AVDEVICE_AVDEVICE_H */
|
||||
50
3rdparty/include/ffmpeg_/libavdevice/version.h
vendored
50
3rdparty/include/ffmpeg_/libavdevice/version.h
vendored
@@ -1,50 +0,0 @@
|
||||
/*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef AVDEVICE_VERSION_H
|
||||
#define AVDEVICE_VERSION_H
|
||||
|
||||
/**
|
||||
* @file
|
||||
* @ingroup lavd
|
||||
* Libavdevice version macros
|
||||
*/
|
||||
|
||||
#include "libavutil/avutil.h"
|
||||
|
||||
#define LIBAVDEVICE_VERSION_MAJOR 55
|
||||
#define LIBAVDEVICE_VERSION_MINOR 3
|
||||
#define LIBAVDEVICE_VERSION_MICRO 100
|
||||
|
||||
#define LIBAVDEVICE_VERSION_INT AV_VERSION_INT(LIBAVDEVICE_VERSION_MAJOR, \
|
||||
LIBAVDEVICE_VERSION_MINOR, \
|
||||
LIBAVDEVICE_VERSION_MICRO)
|
||||
#define LIBAVDEVICE_VERSION AV_VERSION(LIBAVDEVICE_VERSION_MAJOR, \
|
||||
LIBAVDEVICE_VERSION_MINOR, \
|
||||
LIBAVDEVICE_VERSION_MICRO)
|
||||
#define LIBAVDEVICE_BUILD LIBAVDEVICE_VERSION_INT
|
||||
|
||||
#define LIBAVDEVICE_IDENT "Lavd" AV_STRINGIFY(LIBAVDEVICE_VERSION)
|
||||
|
||||
/**
|
||||
* FF_API_* defines may be placed below to indicate public API that will be
|
||||
* dropped at a future version bump. The defines themselves are not part of
|
||||
* the public API and may change, break or disappear at any time.
|
||||
*/
|
||||
|
||||
#endif /* AVDEVICE_VERSION_H */
|
||||
2181
3rdparty/include/ffmpeg_/libavformat/avformat.h
vendored
2181
3rdparty/include/ffmpeg_/libavformat/avformat.h
vendored
File diff suppressed because it is too large
Load Diff
481
3rdparty/include/ffmpeg_/libavformat/avio.h
vendored
481
3rdparty/include/ffmpeg_/libavformat/avio.h
vendored
@@ -1,481 +0,0 @@
|
||||
/*
|
||||
* copyright (c) 2001 Fabrice Bellard
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
#ifndef AVFORMAT_AVIO_H
|
||||
#define AVFORMAT_AVIO_H
|
||||
|
||||
/**
|
||||
* @file
|
||||
* @ingroup lavf_io
|
||||
* Buffered I/O operations
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "libavutil/common.h"
|
||||
#include "libavutil/dict.h"
|
||||
#include "libavutil/log.h"
|
||||
|
||||
#include "libavformat/version.h"
|
||||
|
||||
|
||||
#define AVIO_SEEKABLE_NORMAL 0x0001 /**< Seeking works like for a local file */
|
||||
|
||||
/**
|
||||
* Callback for checking whether to abort blocking functions.
|
||||
* AVERROR_EXIT is returned in this case by the interrupted
|
||||
* function. During blocking operations, callback is called with
|
||||
* opaque as parameter. If the callback returns 1, the
|
||||
* blocking operation will be aborted.
|
||||
*
|
||||
* No members can be added to this struct without a major bump, if
|
||||
* new elements have been added after this struct in AVFormatContext
|
||||
* or AVIOContext.
|
||||
*/
|
||||
typedef struct AVIOInterruptCB {
|
||||
int (*callback)(void*);
|
||||
void *opaque;
|
||||
} AVIOInterruptCB;
|
||||
|
||||
/**
|
||||
* Bytestream IO Context.
|
||||
* New fields can be added to the end with minor version bumps.
|
||||
* Removal, reordering and changes to existing fields require a major
|
||||
* version bump.
|
||||
* sizeof(AVIOContext) must not be used outside libav*.
|
||||
*
|
||||
* @note None of the function pointers in AVIOContext should be called
|
||||
* directly, they should only be set by the client application
|
||||
* when implementing custom I/O. Normally these are set to the
|
||||
* function pointers specified in avio_alloc_context()
|
||||
*/
|
||||
typedef struct AVIOContext {
|
||||
/**
|
||||
* A class for private options.
|
||||
*
|
||||
* If this AVIOContext is created by avio_open2(), av_class is set and
|
||||
* passes the options down to protocols.
|
||||
*
|
||||
* If this AVIOContext is manually allocated, then av_class may be set by
|
||||
* the caller.
|
||||
*
|
||||
* warning -- this field can be NULL, be sure to not pass this AVIOContext
|
||||
* to any av_opt_* functions in that case.
|
||||
*/
|
||||
const AVClass *av_class;
|
||||
unsigned char *buffer; /**< Start of the buffer. */
|
||||
int buffer_size; /**< Maximum buffer size */
|
||||
unsigned char *buf_ptr; /**< Current position in the buffer */
|
||||
unsigned char *buf_end; /**< End of the data, may be less than
|
||||
buffer+buffer_size if the read function returned
|
||||
less data than requested, e.g. for streams where
|
||||
no more data has been received yet. */
|
||||
void *opaque; /**< A private pointer, passed to the read/write/seek/...
|
||||
functions. */
|
||||
int (*read_packet)(void *opaque, uint8_t *buf, int buf_size);
|
||||
int (*write_packet)(void *opaque, uint8_t *buf, int buf_size);
|
||||
int64_t (*seek)(void *opaque, int64_t offset, int whence);
|
||||
int64_t pos; /**< position in the file of the current buffer */
|
||||
int must_flush; /**< true if the next seek should flush */
|
||||
int eof_reached; /**< true if eof reached */
|
||||
int write_flag; /**< true if open for writing */
|
||||
int max_packet_size;
|
||||
unsigned long checksum;
|
||||
unsigned char *checksum_ptr;
|
||||
unsigned long (*update_checksum)(unsigned long checksum, const uint8_t *buf, unsigned int size);
|
||||
int error; /**< contains the error code or 0 if no error happened */
|
||||
/**
|
||||
* Pause or resume playback for network streaming protocols - e.g. MMS.
|
||||
*/
|
||||
int (*read_pause)(void *opaque, int pause);
|
||||
/**
|
||||
* Seek to a given timestamp in stream with the specified stream_index.
|
||||
* Needed for some network streaming protocols which don't support seeking
|
||||
* to byte position.
|
||||
*/
|
||||
int64_t (*read_seek)(void *opaque, int stream_index,
|
||||
int64_t timestamp, int flags);
|
||||
/**
|
||||
* A combination of AVIO_SEEKABLE_ flags or 0 when the stream is not seekable.
|
||||
*/
|
||||
int seekable;
|
||||
|
||||
/**
|
||||
* max filesize, used to limit allocations
|
||||
* This field is internal to libavformat and access from outside is not allowed.
|
||||
*/
|
||||
int64_t maxsize;
|
||||
|
||||
/**
|
||||
* avio_read and avio_write should if possible be satisfied directly
|
||||
* instead of going through a buffer, and avio_seek will always
|
||||
* call the underlying seek function directly.
|
||||
*/
|
||||
int direct;
|
||||
|
||||
/**
|
||||
* Bytes read statistic
|
||||
* This field is internal to libavformat and access from outside is not allowed.
|
||||
*/
|
||||
int64_t bytes_read;
|
||||
|
||||
/**
|
||||
* seek statistic
|
||||
* This field is internal to libavformat and access from outside is not allowed.
|
||||
*/
|
||||
int seek_count;
|
||||
|
||||
/**
|
||||
* writeout statistic
|
||||
* This field is internal to libavformat and access from outside is not allowed.
|
||||
*/
|
||||
int writeout_count;
|
||||
} AVIOContext;
|
||||
|
||||
/* unbuffered I/O */
|
||||
|
||||
/**
|
||||
* Return AVIO_FLAG_* access flags corresponding to the access permissions
|
||||
* of the resource in url, or a negative value corresponding to an
|
||||
* AVERROR code in case of failure. The returned access flags are
|
||||
* masked by the value in flags.
|
||||
*
|
||||
* @note This function is intrinsically unsafe, in the sense that the
|
||||
* checked resource may change its existence or permission status from
|
||||
* one call to another. Thus you should not trust the returned value,
|
||||
* unless you are sure that no other processes are accessing the
|
||||
* checked resource.
|
||||
*/
|
||||
int avio_check(const char *url, int flags);
|
||||
|
||||
/**
|
||||
* Allocate and initialize an AVIOContext for buffered I/O. It must be later
|
||||
* freed with av_free().
|
||||
*
|
||||
* @param buffer Memory block for input/output operations via AVIOContext.
|
||||
* The buffer must be allocated with av_malloc() and friends.
|
||||
* @param buffer_size The buffer size is very important for performance.
|
||||
* For protocols with fixed blocksize it should be set to this blocksize.
|
||||
* For others a typical size is a cache page, e.g. 4kb.
|
||||
* @param write_flag Set to 1 if the buffer should be writable, 0 otherwise.
|
||||
* @param opaque An opaque pointer to user-specific data.
|
||||
* @param read_packet A function for refilling the buffer, may be NULL.
|
||||
* @param write_packet A function for writing the buffer contents, may be NULL.
|
||||
* The function may not change the input buffers content.
|
||||
* @param seek A function for seeking to specified byte position, may be NULL.
|
||||
*
|
||||
* @return Allocated AVIOContext or NULL on failure.
|
||||
*/
|
||||
AVIOContext *avio_alloc_context(
|
||||
unsigned char *buffer,
|
||||
int buffer_size,
|
||||
int write_flag,
|
||||
void *opaque,
|
||||
int (*read_packet)(void *opaque, uint8_t *buf, int buf_size),
|
||||
int (*write_packet)(void *opaque, uint8_t *buf, int buf_size),
|
||||
int64_t (*seek)(void *opaque, int64_t offset, int whence));
|
||||
|
||||
void avio_w8(AVIOContext *s, int b);
|
||||
void avio_write(AVIOContext *s, const unsigned char *buf, int size);
|
||||
void avio_wl64(AVIOContext *s, uint64_t val);
|
||||
void avio_wb64(AVIOContext *s, uint64_t val);
|
||||
void avio_wl32(AVIOContext *s, unsigned int val);
|
||||
void avio_wb32(AVIOContext *s, unsigned int val);
|
||||
void avio_wl24(AVIOContext *s, unsigned int val);
|
||||
void avio_wb24(AVIOContext *s, unsigned int val);
|
||||
void avio_wl16(AVIOContext *s, unsigned int val);
|
||||
void avio_wb16(AVIOContext *s, unsigned int val);
|
||||
|
||||
/**
|
||||
* Write a NULL-terminated string.
|
||||
* @return number of bytes written.
|
||||
*/
|
||||
int avio_put_str(AVIOContext *s, const char *str);
|
||||
|
||||
/**
|
||||
* Convert an UTF-8 string to UTF-16LE and write it.
|
||||
* @return number of bytes written.
|
||||
*/
|
||||
int avio_put_str16le(AVIOContext *s, const char *str);
|
||||
|
||||
/**
|
||||
* Passing this as the "whence" parameter to a seek function causes it to
|
||||
* return the filesize without seeking anywhere. Supporting this is optional.
|
||||
* If it is not supported then the seek function will return <0.
|
||||
*/
|
||||
#define AVSEEK_SIZE 0x10000
|
||||
|
||||
/**
|
||||
* Oring this flag as into the "whence" parameter to a seek function causes it to
|
||||
* seek by any means (like reopening and linear reading) or other normally unreasonable
|
||||
* means that can be extremely slow.
|
||||
* This may be ignored by the seek code.
|
||||
*/
|
||||
#define AVSEEK_FORCE 0x20000
|
||||
|
||||
/**
|
||||
* fseek() equivalent for AVIOContext.
|
||||
* @return new position or AVERROR.
|
||||
*/
|
||||
int64_t avio_seek(AVIOContext *s, int64_t offset, int whence);
|
||||
|
||||
/**
|
||||
* Skip given number of bytes forward
|
||||
* @return new position or AVERROR.
|
||||
*/
|
||||
int64_t avio_skip(AVIOContext *s, int64_t offset);
|
||||
|
||||
/**
|
||||
* ftell() equivalent for AVIOContext.
|
||||
* @return position or AVERROR.
|
||||
*/
|
||||
static av_always_inline int64_t avio_tell(AVIOContext *s)
|
||||
{
|
||||
return avio_seek(s, 0, SEEK_CUR);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the filesize.
|
||||
* @return filesize or AVERROR
|
||||
*/
|
||||
int64_t avio_size(AVIOContext *s);
|
||||
|
||||
/**
|
||||
* feof() equivalent for AVIOContext.
|
||||
* @return non zero if and only if end of file
|
||||
*/
|
||||
int url_feof(AVIOContext *s);
|
||||
|
||||
/** @warning currently size is limited */
|
||||
int avio_printf(AVIOContext *s, const char *fmt, ...) av_printf_format(2, 3);
|
||||
|
||||
/**
|
||||
* Force flushing of buffered data to the output s.
|
||||
*
|
||||
* Force the buffered data to be immediately written to the output,
|
||||
* without to wait to fill the internal buffer.
|
||||
*/
|
||||
void avio_flush(AVIOContext *s);
|
||||
|
||||
/**
|
||||
* Read size bytes from AVIOContext into buf.
|
||||
* @return number of bytes read or AVERROR
|
||||
*/
|
||||
int avio_read(AVIOContext *s, unsigned char *buf, int size);
|
||||
|
||||
/**
|
||||
* @name Functions for reading from AVIOContext
|
||||
* @{
|
||||
*
|
||||
* @note return 0 if EOF, so you cannot use it if EOF handling is
|
||||
* necessary
|
||||
*/
|
||||
int avio_r8 (AVIOContext *s);
|
||||
unsigned int avio_rl16(AVIOContext *s);
|
||||
unsigned int avio_rl24(AVIOContext *s);
|
||||
unsigned int avio_rl32(AVIOContext *s);
|
||||
uint64_t avio_rl64(AVIOContext *s);
|
||||
unsigned int avio_rb16(AVIOContext *s);
|
||||
unsigned int avio_rb24(AVIOContext *s);
|
||||
unsigned int avio_rb32(AVIOContext *s);
|
||||
uint64_t avio_rb64(AVIOContext *s);
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/**
|
||||
* Read a string from pb into buf. The reading will terminate when either
|
||||
* a NULL character was encountered, maxlen bytes have been read, or nothing
|
||||
* more can be read from pb. The result is guaranteed to be NULL-terminated, it
|
||||
* will be truncated if buf is too small.
|
||||
* Note that the string is not interpreted or validated in any way, it
|
||||
* might get truncated in the middle of a sequence for multi-byte encodings.
|
||||
*
|
||||
* @return number of bytes read (is always <= maxlen).
|
||||
* If reading ends on EOF or error, the return value will be one more than
|
||||
* bytes actually read.
|
||||
*/
|
||||
int avio_get_str(AVIOContext *pb, int maxlen, char *buf, int buflen);
|
||||
|
||||
/**
|
||||
* Read a UTF-16 string from pb and convert it to UTF-8.
|
||||
* The reading will terminate when either a null or invalid character was
|
||||
* encountered or maxlen bytes have been read.
|
||||
* @return number of bytes read (is always <= maxlen)
|
||||
*/
|
||||
int avio_get_str16le(AVIOContext *pb, int maxlen, char *buf, int buflen);
|
||||
int avio_get_str16be(AVIOContext *pb, int maxlen, char *buf, int buflen);
|
||||
|
||||
|
||||
/**
|
||||
* @name URL open modes
|
||||
* The flags argument to avio_open must be one of the following
|
||||
* constants, optionally ORed with other flags.
|
||||
* @{
|
||||
*/
|
||||
#define AVIO_FLAG_READ 1 /**< read-only */
|
||||
#define AVIO_FLAG_WRITE 2 /**< write-only */
|
||||
#define AVIO_FLAG_READ_WRITE (AVIO_FLAG_READ|AVIO_FLAG_WRITE) /**< read-write pseudo flag */
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/**
|
||||
* Use non-blocking mode.
|
||||
* If this flag is set, operations on the context will return
|
||||
* AVERROR(EAGAIN) if they can not be performed immediately.
|
||||
* If this flag is not set, operations on the context will never return
|
||||
* AVERROR(EAGAIN).
|
||||
* Note that this flag does not affect the opening/connecting of the
|
||||
* context. Connecting a protocol will always block if necessary (e.g. on
|
||||
* network protocols) but never hang (e.g. on busy devices).
|
||||
* Warning: non-blocking protocols is work-in-progress; this flag may be
|
||||
* silently ignored.
|
||||
*/
|
||||
#define AVIO_FLAG_NONBLOCK 8
|
||||
|
||||
/**
|
||||
* Use direct mode.
|
||||
* avio_read and avio_write should if possible be satisfied directly
|
||||
* instead of going through a buffer, and avio_seek will always
|
||||
* call the underlying seek function directly.
|
||||
*/
|
||||
#define AVIO_FLAG_DIRECT 0x8000
|
||||
|
||||
/**
|
||||
* Create and initialize a AVIOContext for accessing the
|
||||
* resource indicated by url.
|
||||
* @note When the resource indicated by url has been opened in
|
||||
* read+write mode, the AVIOContext can be used only for writing.
|
||||
*
|
||||
* @param s Used to return the pointer to the created AVIOContext.
|
||||
* In case of failure the pointed to value is set to NULL.
|
||||
* @param flags flags which control how the resource indicated by url
|
||||
* is to be opened
|
||||
* @return 0 in case of success, a negative value corresponding to an
|
||||
* AVERROR code in case of failure
|
||||
*/
|
||||
int avio_open(AVIOContext **s, const char *url, int flags);
|
||||
|
||||
/**
|
||||
* Create and initialize a AVIOContext for accessing the
|
||||
* resource indicated by url.
|
||||
* @note When the resource indicated by url has been opened in
|
||||
* read+write mode, the AVIOContext can be used only for writing.
|
||||
*
|
||||
* @param s Used to return the pointer to the created AVIOContext.
|
||||
* In case of failure the pointed to value is set to NULL.
|
||||
* @param flags flags which control how the resource indicated by url
|
||||
* is to be opened
|
||||
* @param int_cb an interrupt callback to be used at the protocols level
|
||||
* @param options A dictionary filled with protocol-private options. On return
|
||||
* this parameter will be destroyed and replaced with a dict containing options
|
||||
* that were not found. May be NULL.
|
||||
* @return 0 in case of success, a negative value corresponding to an
|
||||
* AVERROR code in case of failure
|
||||
*/
|
||||
int avio_open2(AVIOContext **s, const char *url, int flags,
|
||||
const AVIOInterruptCB *int_cb, AVDictionary **options);
|
||||
|
||||
/**
|
||||
* Close the resource accessed by the AVIOContext s and free it.
|
||||
* This function can only be used if s was opened by avio_open().
|
||||
*
|
||||
* The internal buffer is automatically flushed before closing the
|
||||
* resource.
|
||||
*
|
||||
* @return 0 on success, an AVERROR < 0 on error.
|
||||
* @see avio_closep
|
||||
*/
|
||||
int avio_close(AVIOContext *s);
|
||||
|
||||
/**
|
||||
* Close the resource accessed by the AVIOContext *s, free it
|
||||
* and set the pointer pointing to it to NULL.
|
||||
* This function can only be used if s was opened by avio_open().
|
||||
*
|
||||
* The internal buffer is automatically flushed before closing the
|
||||
* resource.
|
||||
*
|
||||
* @return 0 on success, an AVERROR < 0 on error.
|
||||
* @see avio_close
|
||||
*/
|
||||
int avio_closep(AVIOContext **s);
|
||||
|
||||
|
||||
/**
|
||||
* Open a write only memory stream.
|
||||
*
|
||||
* @param s new IO context
|
||||
* @return zero if no error.
|
||||
*/
|
||||
int avio_open_dyn_buf(AVIOContext **s);
|
||||
|
||||
/**
|
||||
* Return the written size and a pointer to the buffer. The buffer
|
||||
* must be freed with av_free().
|
||||
* Padding of FF_INPUT_BUFFER_PADDING_SIZE is added to the buffer.
|
||||
*
|
||||
* @param s IO context
|
||||
* @param pbuffer pointer to a byte buffer
|
||||
* @return the length of the byte buffer
|
||||
*/
|
||||
int avio_close_dyn_buf(AVIOContext *s, uint8_t **pbuffer);
|
||||
|
||||
/**
|
||||
* Iterate through names of available protocols.
|
||||
*
|
||||
* @param opaque A private pointer representing current protocol.
|
||||
* It must be a pointer to NULL on first iteration and will
|
||||
* be updated by successive calls to avio_enum_protocols.
|
||||
* @param output If set to 1, iterate over output protocols,
|
||||
* otherwise over input protocols.
|
||||
*
|
||||
* @return A static string containing the name of current protocol or NULL
|
||||
*/
|
||||
const char *avio_enum_protocols(void **opaque, int output);
|
||||
|
||||
/**
|
||||
* Pause and resume playing - only meaningful if using a network streaming
|
||||
* protocol (e.g. MMS).
|
||||
* @param pause 1 for pause, 0 for resume
|
||||
*/
|
||||
int avio_pause(AVIOContext *h, int pause);
|
||||
|
||||
/**
|
||||
* Seek to a given timestamp relative to some component stream.
|
||||
* Only meaningful if using a network streaming protocol (e.g. MMS.).
|
||||
* @param stream_index The stream index that the timestamp is relative to.
|
||||
* If stream_index is (-1) the timestamp should be in AV_TIME_BASE
|
||||
* units from the beginning of the presentation.
|
||||
* If a stream_index >= 0 is used and the protocol does not support
|
||||
* seeking based on component streams, the call will fail.
|
||||
* @param timestamp timestamp in AVStream.time_base units
|
||||
* or if there is no stream specified then in AV_TIME_BASE units.
|
||||
* @param flags Optional combination of AVSEEK_FLAG_BACKWARD, AVSEEK_FLAG_BYTE
|
||||
* and AVSEEK_FLAG_ANY. The protocol may silently ignore
|
||||
* AVSEEK_FLAG_BACKWARD and AVSEEK_FLAG_ANY, but AVSEEK_FLAG_BYTE will
|
||||
* fail if used and not supported.
|
||||
* @return >= 0 on success
|
||||
* @see AVInputFormat::read_seek
|
||||
*/
|
||||
int64_t avio_seek_time(AVIOContext *h, int stream_index,
|
||||
int64_t timestamp, int flags);
|
||||
|
||||
#endif /* AVFORMAT_AVIO_H */
|
||||
82
3rdparty/include/ffmpeg_/libavformat/version.h
vendored
82
3rdparty/include/ffmpeg_/libavformat/version.h
vendored
@@ -1,82 +0,0 @@
|
||||
/*
|
||||
* Version macros.
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef AVFORMAT_VERSION_H
|
||||
#define AVFORMAT_VERSION_H
|
||||
|
||||
/**
|
||||
* @file
|
||||
* @ingroup libavf
|
||||
* Libavformat version macros
|
||||
*/
|
||||
|
||||
#include "libavutil/avutil.h"
|
||||
|
||||
#define LIBAVFORMAT_VERSION_MAJOR 55
|
||||
#define LIBAVFORMAT_VERSION_MINOR 12
|
||||
#define LIBAVFORMAT_VERSION_MICRO 100
|
||||
|
||||
#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
|
||||
LIBAVFORMAT_VERSION_MINOR, \
|
||||
LIBAVFORMAT_VERSION_MICRO)
|
||||
#define LIBAVFORMAT_VERSION AV_VERSION(LIBAVFORMAT_VERSION_MAJOR, \
|
||||
LIBAVFORMAT_VERSION_MINOR, \
|
||||
LIBAVFORMAT_VERSION_MICRO)
|
||||
#define LIBAVFORMAT_BUILD LIBAVFORMAT_VERSION_INT
|
||||
|
||||
#define LIBAVFORMAT_IDENT "Lavf" AV_STRINGIFY(LIBAVFORMAT_VERSION)
|
||||
|
||||
/**
|
||||
* FF_API_* defines may be placed below to indicate public API that will be
|
||||
* dropped at a future version bump. The defines themselves are not part of
|
||||
* the public API and may change, break or disappear at any time.
|
||||
*/
|
||||
|
||||
#ifndef FF_API_OLD_AVIO
|
||||
#define FF_API_OLD_AVIO (LIBAVFORMAT_VERSION_MAJOR < 55)
|
||||
#endif
|
||||
#ifndef FF_API_PKT_DUMP
|
||||
#define FF_API_PKT_DUMP (LIBAVFORMAT_VERSION_MAJOR < 54)
|
||||
#endif
|
||||
#ifndef FF_API_ALLOC_OUTPUT_CONTEXT
|
||||
#define FF_API_ALLOC_OUTPUT_CONTEXT (LIBAVFORMAT_VERSION_MAJOR < 56)
|
||||
#endif
|
||||
#ifndef FF_API_FORMAT_PARAMETERS
|
||||
#define FF_API_FORMAT_PARAMETERS (LIBAVFORMAT_VERSION_MAJOR < 56)
|
||||
#endif
|
||||
#ifndef FF_API_NEW_STREAM
|
||||
#define FF_API_NEW_STREAM (LIBAVFORMAT_VERSION_MAJOR < 56)
|
||||
#endif
|
||||
#ifndef FF_API_SET_PTS_INFO
|
||||
#define FF_API_SET_PTS_INFO (LIBAVFORMAT_VERSION_MAJOR < 56)
|
||||
#endif
|
||||
#ifndef FF_API_CLOSE_INPUT_FILE
|
||||
#define FF_API_CLOSE_INPUT_FILE (LIBAVFORMAT_VERSION_MAJOR < 56)
|
||||
#endif
|
||||
#ifndef FF_API_READ_PACKET
|
||||
#define FF_API_READ_PACKET (LIBAVFORMAT_VERSION_MAJOR < 56)
|
||||
#endif
|
||||
#ifndef FF_API_ASS_SSA
|
||||
#define FF_API_ASS_SSA (LIBAVFORMAT_VERSION_MAJOR < 56)
|
||||
#endif
|
||||
#ifndef FF_API_R_FRAME_RATE
|
||||
#define FF_API_R_FRAME_RATE 1
|
||||
#endif
|
||||
#endif /* AVFORMAT_VERSION_H */
|
||||
52
3rdparty/include/ffmpeg_/libavutil/adler32.h
vendored
52
3rdparty/include/ffmpeg_/libavutil/adler32.h
vendored
@@ -1,52 +0,0 @@
|
||||
/*
|
||||
* copyright (c) 2006 Mans Rullgard
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef AVUTIL_ADLER32_H
|
||||
#define AVUTIL_ADLER32_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include "attributes.h"
|
||||
|
||||
/**
|
||||
* @defgroup lavu_adler32 Adler32
|
||||
* @ingroup lavu_crypto
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* Calculate the Adler32 checksum of a buffer.
|
||||
*
|
||||
* Passing the return value to a subsequent av_adler32_update() call
|
||||
* allows the checksum of multiple buffers to be calculated as though
|
||||
* they were concatenated.
|
||||
*
|
||||
* @param adler initial checksum value
|
||||
* @param buf pointer to input buffer
|
||||
* @param len size of input buffer
|
||||
* @return updated checksum
|
||||
*/
|
||||
unsigned long av_adler32_update(unsigned long adler, const uint8_t *buf,
|
||||
unsigned int len) av_pure;
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
#endif /* AVUTIL_ADLER32_H */
|
||||
65
3rdparty/include/ffmpeg_/libavutil/aes.h
vendored
65
3rdparty/include/ffmpeg_/libavutil/aes.h
vendored
@@ -1,65 +0,0 @@
|
||||
/*
|
||||
* copyright (c) 2007 Michael Niedermayer <michaelni@gmx.at>
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef AVUTIL_AES_H
|
||||
#define AVUTIL_AES_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "attributes.h"
|
||||
#include "version.h"
|
||||
|
||||
/**
|
||||
* @defgroup lavu_aes AES
|
||||
* @ingroup lavu_crypto
|
||||
* @{
|
||||
*/
|
||||
|
||||
extern const int av_aes_size;
|
||||
|
||||
struct AVAES;
|
||||
|
||||
/**
|
||||
* Allocate an AVAES context.
|
||||
*/
|
||||
struct AVAES *av_aes_alloc(void);
|
||||
|
||||
/**
|
||||
* Initialize an AVAES context.
|
||||
* @param key_bits 128, 192 or 256
|
||||
* @param decrypt 0 for encryption, 1 for decryption
|
||||
*/
|
||||
int av_aes_init(struct AVAES *a, const uint8_t *key, int key_bits, int decrypt);
|
||||
|
||||
/**
|
||||
* Encrypt or decrypt a buffer using a previously initialized context.
|
||||
* @param count number of 16 byte blocks
|
||||
* @param dst destination array, can be equal to src
|
||||
* @param src source array, can be equal to dst
|
||||
* @param iv initialization vector for CBC mode, if NULL then ECB will be used
|
||||
* @param decrypt 0 for encryption, 1 for decryption
|
||||
*/
|
||||
void av_aes_crypt(struct AVAES *a, uint8_t *dst, const uint8_t *src, int count, uint8_t *iv, int decrypt);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
#endif /* AVUTIL_AES_H */
|
||||
154
3rdparty/include/ffmpeg_/libavutil/attributes.h
vendored
154
3rdparty/include/ffmpeg_/libavutil/attributes.h
vendored
@@ -1,154 +0,0 @@
|
||||
/*
|
||||
* copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at>
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Macro definitions for various function/variable attributes
|
||||
*/
|
||||
|
||||
#ifndef AVUTIL_ATTRIBUTES_H
|
||||
#define AVUTIL_ATTRIBUTES_H
|
||||
|
||||
#ifdef __GNUC__
|
||||
# define AV_GCC_VERSION_AT_LEAST(x,y) (__GNUC__ > x || __GNUC__ == x && __GNUC_MINOR__ >= y)
|
||||
#else
|
||||
# define AV_GCC_VERSION_AT_LEAST(x,y) 0
|
||||
#endif
|
||||
|
||||
#ifndef av_always_inline
|
||||
#if AV_GCC_VERSION_AT_LEAST(3,1)
|
||||
# define av_always_inline __attribute__((always_inline)) inline
|
||||
#elif defined(_MSC_VER)
|
||||
# define av_always_inline __forceinline
|
||||
#else
|
||||
# define av_always_inline inline
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef av_extern_inline
|
||||
#if defined(__ICL) && __ICL >= 1210 || defined(__GNUC_STDC_INLINE__)
|
||||
# define av_extern_inline extern inline
|
||||
#else
|
||||
# define av_extern_inline inline
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if AV_GCC_VERSION_AT_LEAST(3,1)
|
||||
# define av_noinline __attribute__((noinline))
|
||||
#else
|
||||
# define av_noinline
|
||||
#endif
|
||||
|
||||
#if AV_GCC_VERSION_AT_LEAST(3,1)
|
||||
# define av_pure __attribute__((pure))
|
||||
#else
|
||||
# define av_pure
|
||||
#endif
|
||||
|
||||
#ifndef av_restrict
|
||||
#define av_restrict restrict
|
||||
#endif
|
||||
|
||||
#if AV_GCC_VERSION_AT_LEAST(2,6)
|
||||
# define av_const __attribute__((const))
|
||||
#else
|
||||
# define av_const
|
||||
#endif
|
||||
|
||||
#if AV_GCC_VERSION_AT_LEAST(4,3)
|
||||
# define av_cold __attribute__((cold))
|
||||
#else
|
||||
# define av_cold
|
||||
#endif
|
||||
|
||||
#if AV_GCC_VERSION_AT_LEAST(4,1)
|
||||
# define av_flatten __attribute__((flatten))
|
||||
#else
|
||||
# define av_flatten
|
||||
#endif
|
||||
|
||||
#if AV_GCC_VERSION_AT_LEAST(3,1)
|
||||
# define attribute_deprecated __attribute__((deprecated))
|
||||
#else
|
||||
# define attribute_deprecated
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Disable warnings about deprecated features
|
||||
* This is useful for sections of code kept for backward compatibility and
|
||||
* scheduled for removal.
|
||||
*/
|
||||
#ifndef AV_NOWARN_DEPRECATED
|
||||
#if AV_GCC_VERSION_AT_LEAST(4,6)
|
||||
# define AV_NOWARN_DEPRECATED(code) \
|
||||
_Pragma("GCC diagnostic push") \
|
||||
_Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") \
|
||||
code \
|
||||
_Pragma("GCC diagnostic pop")
|
||||
#else
|
||||
# define AV_NOWARN_DEPRECATED(code) code
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
#if defined(__GNUC__)
|
||||
# define av_unused __attribute__((unused))
|
||||
#else
|
||||
# define av_unused
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Mark a variable as used and prevent the compiler from optimizing it
|
||||
* away. This is useful for variables accessed only from inline
|
||||
* assembler without the compiler being aware.
|
||||
*/
|
||||
#if AV_GCC_VERSION_AT_LEAST(3,1)
|
||||
# define av_used __attribute__((used))
|
||||
#else
|
||||
# define av_used
|
||||
#endif
|
||||
|
||||
#if AV_GCC_VERSION_AT_LEAST(3,3)
|
||||
# define av_alias __attribute__((may_alias))
|
||||
#else
|
||||
# define av_alias
|
||||
#endif
|
||||
|
||||
#if defined(__GNUC__) && !defined(__INTEL_COMPILER) && !defined(__clang__)
|
||||
# define av_uninit(x) x=x
|
||||
#else
|
||||
# define av_uninit(x) x
|
||||
#endif
|
||||
|
||||
#ifdef __GNUC__
|
||||
# define av_builtin_constant_p __builtin_constant_p
|
||||
# define av_printf_format(fmtpos, attrpos) __attribute__((__format__(__printf__, fmtpos, attrpos)))
|
||||
#else
|
||||
# define av_builtin_constant_p(x) 0
|
||||
# define av_printf_format(fmtpos, attrpos)
|
||||
#endif
|
||||
|
||||
#if AV_GCC_VERSION_AT_LEAST(2,5)
|
||||
# define av_noreturn __attribute__((noreturn))
|
||||
#else
|
||||
# define av_noreturn
|
||||
#endif
|
||||
|
||||
#endif /* AVUTIL_ATTRIBUTES_H */
|
||||
149
3rdparty/include/ffmpeg_/libavutil/audio_fifo.h
vendored
149
3rdparty/include/ffmpeg_/libavutil/audio_fifo.h
vendored
@@ -1,149 +0,0 @@
|
||||
/*
|
||||
* Audio FIFO
|
||||
* Copyright (c) 2012 Justin Ruggles <justin.ruggles@gmail.com>
|
||||
*
|
||||
* This file is part of Libav.
|
||||
*
|
||||
* Libav is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* Libav is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with Libav; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Audio FIFO Buffer
|
||||
*/
|
||||
|
||||
#ifndef AVUTIL_AUDIO_FIFO_H
|
||||
#define AVUTIL_AUDIO_FIFO_H
|
||||
|
||||
#include "avutil.h"
|
||||
#include "fifo.h"
|
||||
#include "samplefmt.h"
|
||||
|
||||
/**
|
||||
* @addtogroup lavu_audio
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* Context for an Audio FIFO Buffer.
|
||||
*
|
||||
* - Operates at the sample level rather than the byte level.
|
||||
* - Supports multiple channels with either planar or packed sample format.
|
||||
* - Automatic reallocation when writing to a full buffer.
|
||||
*/
|
||||
typedef struct AVAudioFifo AVAudioFifo;
|
||||
|
||||
/**
|
||||
* Free an AVAudioFifo.
|
||||
*
|
||||
* @param af AVAudioFifo to free
|
||||
*/
|
||||
void av_audio_fifo_free(AVAudioFifo *af);
|
||||
|
||||
/**
|
||||
* Allocate an AVAudioFifo.
|
||||
*
|
||||
* @param sample_fmt sample format
|
||||
* @param channels number of channels
|
||||
* @param nb_samples initial allocation size, in samples
|
||||
* @return newly allocated AVAudioFifo, or NULL on error
|
||||
*/
|
||||
AVAudioFifo *av_audio_fifo_alloc(enum AVSampleFormat sample_fmt, int channels,
|
||||
int nb_samples);
|
||||
|
||||
/**
|
||||
* Reallocate an AVAudioFifo.
|
||||
*
|
||||
* @param af AVAudioFifo to reallocate
|
||||
* @param nb_samples new allocation size, in samples
|
||||
* @return 0 if OK, or negative AVERROR code on failure
|
||||
*/
|
||||
int av_audio_fifo_realloc(AVAudioFifo *af, int nb_samples);
|
||||
|
||||
/**
|
||||
* Write data to an AVAudioFifo.
|
||||
*
|
||||
* The AVAudioFifo will be reallocated automatically if the available space
|
||||
* is less than nb_samples.
|
||||
*
|
||||
* @see enum AVSampleFormat
|
||||
* The documentation for AVSampleFormat describes the data layout.
|
||||
*
|
||||
* @param af AVAudioFifo to write to
|
||||
* @param data audio data plane pointers
|
||||
* @param nb_samples number of samples to write
|
||||
* @return number of samples actually written, or negative AVERROR
|
||||
* code on failure. If successful, the number of samples
|
||||
* actually written will always be nb_samples.
|
||||
*/
|
||||
int av_audio_fifo_write(AVAudioFifo *af, void **data, int nb_samples);
|
||||
|
||||
/**
|
||||
* Read data from an AVAudioFifo.
|
||||
*
|
||||
* @see enum AVSampleFormat
|
||||
* The documentation for AVSampleFormat describes the data layout.
|
||||
*
|
||||
* @param af AVAudioFifo to read from
|
||||
* @param data audio data plane pointers
|
||||
* @param nb_samples number of samples to read
|
||||
* @return number of samples actually read, or negative AVERROR code
|
||||
* on failure. The number of samples actually read will not
|
||||
* be greater than nb_samples, and will only be less than
|
||||
* nb_samples if av_audio_fifo_size is less than nb_samples.
|
||||
*/
|
||||
int av_audio_fifo_read(AVAudioFifo *af, void **data, int nb_samples);
|
||||
|
||||
/**
|
||||
* Drain data from an AVAudioFifo.
|
||||
*
|
||||
* Removes the data without reading it.
|
||||
*
|
||||
* @param af AVAudioFifo to drain
|
||||
* @param nb_samples number of samples to drain
|
||||
* @return 0 if OK, or negative AVERROR code on failure
|
||||
*/
|
||||
int av_audio_fifo_drain(AVAudioFifo *af, int nb_samples);
|
||||
|
||||
/**
|
||||
* Reset the AVAudioFifo buffer.
|
||||
*
|
||||
* This empties all data in the buffer.
|
||||
*
|
||||
* @param af AVAudioFifo to reset
|
||||
*/
|
||||
void av_audio_fifo_reset(AVAudioFifo *af);
|
||||
|
||||
/**
|
||||
* Get the current number of samples in the AVAudioFifo available for reading.
|
||||
*
|
||||
* @param af the AVAudioFifo to query
|
||||
* @return number of samples available for reading
|
||||
*/
|
||||
int av_audio_fifo_size(AVAudioFifo *af);
|
||||
|
||||
/**
|
||||
* Get the current number of samples in the AVAudioFifo available for writing.
|
||||
*
|
||||
* @param af the AVAudioFifo to query
|
||||
* @return number of samples available for writing
|
||||
*/
|
||||
int av_audio_fifo_space(AVAudioFifo *af);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
#endif /* AVUTIL_AUDIO_FIFO_H */
|
||||
@@ -1,6 +0,0 @@
|
||||
|
||||
#include "version.h"
|
||||
|
||||
#if FF_API_AUDIOCONVERT
|
||||
#include "channel_layout.h"
|
||||
#endif
|
||||
66
3rdparty/include/ffmpeg_/libavutil/avassert.h
vendored
66
3rdparty/include/ffmpeg_/libavutil/avassert.h
vendored
@@ -1,66 +0,0 @@
|
||||
/*
|
||||
* copyright (c) 2010 Michael Niedermayer <michaelni@gmx.at>
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file
|
||||
* simple assert() macros that are a bit more flexible than ISO C assert().
|
||||
* @author Michael Niedermayer <michaelni@gmx.at>
|
||||
*/
|
||||
|
||||
#ifndef AVUTIL_AVASSERT_H
|
||||
#define AVUTIL_AVASSERT_H
|
||||
|
||||
#include <stdlib.h>
|
||||
#include "avutil.h"
|
||||
#include "log.h"
|
||||
|
||||
/**
|
||||
* assert() equivalent, that is always enabled.
|
||||
*/
|
||||
#define av_assert0(cond) do { \
|
||||
if (!(cond)) { \
|
||||
av_log(NULL, AV_LOG_PANIC, "Assertion %s failed at %s:%d\n", \
|
||||
AV_STRINGIFY(cond), __FILE__, __LINE__); \
|
||||
abort(); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
|
||||
/**
|
||||
* assert() equivalent, that does not lie in speed critical code.
|
||||
* These asserts() thus can be enabled without fearing speedloss.
|
||||
*/
|
||||
#if defined(ASSERT_LEVEL) && ASSERT_LEVEL > 0
|
||||
#define av_assert1(cond) av_assert0(cond)
|
||||
#else
|
||||
#define av_assert1(cond) ((void)0)
|
||||
#endif
|
||||
|
||||
|
||||
/**
|
||||
* assert() equivalent, that does lie in speed critical code.
|
||||
*/
|
||||
#if defined(ASSERT_LEVEL) && ASSERT_LEVEL > 1
|
||||
#define av_assert2(cond) av_assert0(cond)
|
||||
#else
|
||||
#define av_assert2(cond) ((void)0)
|
||||
#endif
|
||||
|
||||
#endif /* AVUTIL_AVASSERT_H */
|
||||
@@ -1,8 +0,0 @@
|
||||
/* Generated by ffconf */
|
||||
#ifndef AVUTIL_AVCONFIG_H
|
||||
#define AVUTIL_AVCONFIG_H
|
||||
#define AV_HAVE_BIGENDIAN 0
|
||||
#define AV_HAVE_FAST_UNALIGNED 1
|
||||
#define AV_HAVE_INCOMPATIBLE_LIBAV_ABI 0
|
||||
#define AV_HAVE_INCOMPATIBLE_FORK_ABI 0
|
||||
#endif /* AVUTIL_AVCONFIG_H */
|
||||
302
3rdparty/include/ffmpeg_/libavutil/avstring.h
vendored
302
3rdparty/include/ffmpeg_/libavutil/avstring.h
vendored
@@ -1,302 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2007 Mans Rullgard
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef AVUTIL_AVSTRING_H
|
||||
#define AVUTIL_AVSTRING_H
|
||||
|
||||
#include <stddef.h>
|
||||
#include "attributes.h"
|
||||
|
||||
/**
|
||||
* @addtogroup lavu_string
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* Return non-zero if pfx is a prefix of str. If it is, *ptr is set to
|
||||
* the address of the first character in str after the prefix.
|
||||
*
|
||||
* @param str input string
|
||||
* @param pfx prefix to test
|
||||
* @param ptr updated if the prefix is matched inside str
|
||||
* @return non-zero if the prefix matches, zero otherwise
|
||||
*/
|
||||
int av_strstart(const char *str, const char *pfx, const char **ptr);
|
||||
|
||||
/**
|
||||
* Return non-zero if pfx is a prefix of str independent of case. If
|
||||
* it is, *ptr is set to the address of the first character in str
|
||||
* after the prefix.
|
||||
*
|
||||
* @param str input string
|
||||
* @param pfx prefix to test
|
||||
* @param ptr updated if the prefix is matched inside str
|
||||
* @return non-zero if the prefix matches, zero otherwise
|
||||
*/
|
||||
int av_stristart(const char *str, const char *pfx, const char **ptr);
|
||||
|
||||
/**
|
||||
* Locate the first case-independent occurrence in the string haystack
|
||||
* of the string needle. A zero-length string needle is considered to
|
||||
* match at the start of haystack.
|
||||
*
|
||||
* This function is a case-insensitive version of the standard strstr().
|
||||
*
|
||||
* @param haystack string to search in
|
||||
* @param needle string to search for
|
||||
* @return pointer to the located match within haystack
|
||||
* or a null pointer if no match
|
||||
*/
|
||||
char *av_stristr(const char *haystack, const char *needle);
|
||||
|
||||
/**
|
||||
* Locate the first occurrence of the string needle in the string haystack
|
||||
* where not more than hay_length characters are searched. A zero-length
|
||||
* string needle is considered to match at the start of haystack.
|
||||
*
|
||||
* This function is a length-limited version of the standard strstr().
|
||||
*
|
||||
* @param haystack string to search in
|
||||
* @param needle string to search for
|
||||
* @param hay_length length of string to search in
|
||||
* @return pointer to the located match within haystack
|
||||
* or a null pointer if no match
|
||||
*/
|
||||
char *av_strnstr(const char *haystack, const char *needle, size_t hay_length);
|
||||
|
||||
/**
|
||||
* Copy the string src to dst, but no more than size - 1 bytes, and
|
||||
* null-terminate dst.
|
||||
*
|
||||
* This function is the same as BSD strlcpy().
|
||||
*
|
||||
* @param dst destination buffer
|
||||
* @param src source string
|
||||
* @param size size of destination buffer
|
||||
* @return the length of src
|
||||
*
|
||||
* @warning since the return value is the length of src, src absolutely
|
||||
* _must_ be a properly 0-terminated string, otherwise this will read beyond
|
||||
* the end of the buffer and possibly crash.
|
||||
*/
|
||||
size_t av_strlcpy(char *dst, const char *src, size_t size);
|
||||
|
||||
/**
|
||||
* Append the string src to the string dst, but to a total length of
|
||||
* no more than size - 1 bytes, and null-terminate dst.
|
||||
*
|
||||
* This function is similar to BSD strlcat(), but differs when
|
||||
* size <= strlen(dst).
|
||||
*
|
||||
* @param dst destination buffer
|
||||
* @param src source string
|
||||
* @param size size of destination buffer
|
||||
* @return the total length of src and dst
|
||||
*
|
||||
* @warning since the return value use the length of src and dst, these
|
||||
* absolutely _must_ be a properly 0-terminated strings, otherwise this
|
||||
* will read beyond the end of the buffer and possibly crash.
|
||||
*/
|
||||
size_t av_strlcat(char *dst, const char *src, size_t size);
|
||||
|
||||
/**
|
||||
* Append output to a string, according to a format. Never write out of
|
||||
* the destination buffer, and always put a terminating 0 within
|
||||
* the buffer.
|
||||
* @param dst destination buffer (string to which the output is
|
||||
* appended)
|
||||
* @param size total size of the destination buffer
|
||||
* @param fmt printf-compatible format string, specifying how the
|
||||
* following parameters are used
|
||||
* @return the length of the string that would have been generated
|
||||
* if enough space had been available
|
||||
*/
|
||||
size_t av_strlcatf(char *dst, size_t size, const char *fmt, ...) av_printf_format(3, 4);
|
||||
|
||||
/**
|
||||
* Print arguments following specified format into a large enough auto
|
||||
* allocated buffer. It is similar to GNU asprintf().
|
||||
* @param fmt printf-compatible format string, specifying how the
|
||||
* following parameters are used.
|
||||
* @return the allocated string
|
||||
* @note You have to free the string yourself with av_free().
|
||||
*/
|
||||
char *av_asprintf(const char *fmt, ...) av_printf_format(1, 2);
|
||||
|
||||
/**
|
||||
* Convert a number to a av_malloced string.
|
||||
*/
|
||||
char *av_d2str(double d);
|
||||
|
||||
/**
|
||||
* Unescape the given string until a non escaped terminating char,
|
||||
* and return the token corresponding to the unescaped string.
|
||||
*
|
||||
* The normal \ and ' escaping is supported. Leading and trailing
|
||||
* whitespaces are removed, unless they are escaped with '\' or are
|
||||
* enclosed between ''.
|
||||
*
|
||||
* @param buf the buffer to parse, buf will be updated to point to the
|
||||
* terminating char
|
||||
* @param term a 0-terminated list of terminating chars
|
||||
* @return the malloced unescaped string, which must be av_freed by
|
||||
* the user, NULL in case of allocation failure
|
||||
*/
|
||||
char *av_get_token(const char **buf, const char *term);
|
||||
|
||||
/**
|
||||
* Split the string into several tokens which can be accessed by
|
||||
* successive calls to av_strtok().
|
||||
*
|
||||
* A token is defined as a sequence of characters not belonging to the
|
||||
* set specified in delim.
|
||||
*
|
||||
* On the first call to av_strtok(), s should point to the string to
|
||||
* parse, and the value of saveptr is ignored. In subsequent calls, s
|
||||
* should be NULL, and saveptr should be unchanged since the previous
|
||||
* call.
|
||||
*
|
||||
* This function is similar to strtok_r() defined in POSIX.1.
|
||||
*
|
||||
* @param s the string to parse, may be NULL
|
||||
* @param delim 0-terminated list of token delimiters, must be non-NULL
|
||||
* @param saveptr user-provided pointer which points to stored
|
||||
* information necessary for av_strtok() to continue scanning the same
|
||||
* string. saveptr is updated to point to the next character after the
|
||||
* first delimiter found, or to NULL if the string was terminated
|
||||
* @return the found token, or NULL when no token is found
|
||||
*/
|
||||
char *av_strtok(char *s, const char *delim, char **saveptr);
|
||||
|
||||
/**
|
||||
* Locale-independent conversion of ASCII isdigit.
|
||||
*/
|
||||
int av_isdigit(int c);
|
||||
|
||||
/**
|
||||
* Locale-independent conversion of ASCII isgraph.
|
||||
*/
|
||||
int av_isgraph(int c);
|
||||
|
||||
/**
|
||||
* Locale-independent conversion of ASCII isspace.
|
||||
*/
|
||||
int av_isspace(int c);
|
||||
|
||||
/**
|
||||
* Locale-independent conversion of ASCII characters to uppercase.
|
||||
*/
|
||||
static inline int av_toupper(int c)
|
||||
{
|
||||
if (c >= 'a' && c <= 'z')
|
||||
c ^= 0x20;
|
||||
return c;
|
||||
}
|
||||
|
||||
/**
|
||||
* Locale-independent conversion of ASCII characters to lowercase.
|
||||
*/
|
||||
static inline int av_tolower(int c)
|
||||
{
|
||||
if (c >= 'A' && c <= 'Z')
|
||||
c ^= 0x20;
|
||||
return c;
|
||||
}
|
||||
|
||||
/**
|
||||
* Locale-independent conversion of ASCII isxdigit.
|
||||
*/
|
||||
int av_isxdigit(int c);
|
||||
|
||||
/**
|
||||
* Locale-independent case-insensitive compare.
|
||||
* @note This means only ASCII-range characters are case-insensitive
|
||||
*/
|
||||
int av_strcasecmp(const char *a, const char *b);
|
||||
|
||||
/**
|
||||
* Locale-independent case-insensitive compare.
|
||||
* @note This means only ASCII-range characters are case-insensitive
|
||||
*/
|
||||
int av_strncasecmp(const char *a, const char *b, size_t n);
|
||||
|
||||
|
||||
/**
|
||||
* Thread safe basename.
|
||||
* @param path the path, on DOS both \ and / are considered separators.
|
||||
* @return pointer to the basename substring.
|
||||
*/
|
||||
const char *av_basename(const char *path);
|
||||
|
||||
/**
|
||||
* Thread safe dirname.
|
||||
* @param path the path, on DOS both \ and / are considered separators.
|
||||
* @return the path with the separator replaced by the string terminator or ".".
|
||||
* @note the function may change the input string.
|
||||
*/
|
||||
const char *av_dirname(char *path);
|
||||
|
||||
enum AVEscapeMode {
|
||||
AV_ESCAPE_MODE_AUTO, ///< Use auto-selected escaping mode.
|
||||
AV_ESCAPE_MODE_BACKSLASH, ///< Use backslash escaping.
|
||||
AV_ESCAPE_MODE_QUOTE, ///< Use single-quote escaping.
|
||||
};
|
||||
|
||||
/**
|
||||
* Consider spaces special and escape them even in the middle of the
|
||||
* string.
|
||||
*
|
||||
* This is equivalent to adding the whitespace characters to the special
|
||||
* characters lists, except it is guaranteed to use the exact same list
|
||||
* of whitespace characters as the rest of libavutil.
|
||||
*/
|
||||
#define AV_ESCAPE_FLAG_WHITESPACE 0x01
|
||||
|
||||
/**
|
||||
* Escape only specified special characters.
|
||||
* Without this flag, escape also any characters that may be considered
|
||||
* special by av_get_token(), such as the single quote.
|
||||
*/
|
||||
#define AV_ESCAPE_FLAG_STRICT 0x02
|
||||
|
||||
/**
|
||||
* Escape string in src, and put the escaped string in an allocated
|
||||
* string in *dst, which must be freed with av_free().
|
||||
*
|
||||
* @param dst pointer where an allocated string is put
|
||||
* @param src string to escape, must be non-NULL
|
||||
* @param special_chars string containing the special characters which
|
||||
* need to be escaped, can be NULL
|
||||
* @param mode escape mode to employ, see AV_ESCAPE_MODE_* macros.
|
||||
* Any unknown value for mode will be considered equivalent to
|
||||
* AV_ESCAPE_MODE_BACKSLASH, but this behaviour can change without
|
||||
* notice.
|
||||
* @param flags flags which control how to escape, see AV_ESCAPE_FLAG_ macros
|
||||
* @return the length of the allocated string, or a negative error code in case of error
|
||||
* @see av_bprint_escape()
|
||||
*/
|
||||
int av_escape(char **dst, const char *src, const char *special_chars,
|
||||
enum AVEscapeMode mode, int flags);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
#endif /* AVUTIL_AVSTRING_H */
|
||||
314
3rdparty/include/ffmpeg_/libavutil/avutil.h
vendored
314
3rdparty/include/ffmpeg_/libavutil/avutil.h
vendored
@@ -1,314 +0,0 @@
|
||||
/*
|
||||
* copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at>
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef AVUTIL_AVUTIL_H
|
||||
#define AVUTIL_AVUTIL_H
|
||||
|
||||
/**
|
||||
* @file
|
||||
* external API header
|
||||
*/
|
||||
|
||||
/**
|
||||
* @mainpage
|
||||
*
|
||||
* @section ffmpeg_intro Introduction
|
||||
*
|
||||
* This document describes the usage of the different libraries
|
||||
* provided by FFmpeg.
|
||||
*
|
||||
* @li @ref libavc "libavcodec" encoding/decoding library
|
||||
* @li @ref lavfi "libavfilter" graph-based frame editing library
|
||||
* @li @ref libavf "libavformat" I/O and muxing/demuxing library
|
||||
* @li @ref lavd "libavdevice" special devices muxing/demuxing library
|
||||
* @li @ref lavu "libavutil" common utility library
|
||||
* @li @ref lswr "libswresample" audio resampling, format conversion and mixing
|
||||
* @li @ref lpp "libpostproc" post processing library
|
||||
* @li @ref lsws "libswscale" color conversion and scaling library
|
||||
*
|
||||
* @section ffmpeg_versioning Versioning and compatibility
|
||||
*
|
||||
* Each of the FFmpeg libraries contains a version.h header, which defines a
|
||||
* major, minor and micro version number with the
|
||||
* <em>LIBRARYNAME_VERSION_{MAJOR,MINOR,MICRO}</em> macros. The major version
|
||||
* number is incremented with backward incompatible changes - e.g. removing
|
||||
* parts of the public API, reordering public struct members, etc. The minor
|
||||
* version number is incremented for backward compatible API changes or major
|
||||
* new features - e.g. adding a new public function or a new decoder. The micro
|
||||
* version number is incremented for smaller changes that a calling program
|
||||
* might still want to check for - e.g. changing behavior in a previously
|
||||
* unspecified situation.
|
||||
*
|
||||
* FFmpeg guarantees backward API and ABI compatibility for each library as long
|
||||
* as its major version number is unchanged. This means that no public symbols
|
||||
* will be removed or renamed. Types and names of the public struct members and
|
||||
* values of public macros and enums will remain the same (unless they were
|
||||
* explicitly declared as not part of the public API). Documented behavior will
|
||||
* not change.
|
||||
*
|
||||
* In other words, any correct program that works with a given FFmpeg snapshot
|
||||
* should work just as well without any changes with any later snapshot with the
|
||||
* same major versions. This applies to both rebuilding the program against new
|
||||
* FFmpeg versions or to replacing the dynamic FFmpeg libraries that a program
|
||||
* links against.
|
||||
*
|
||||
* However, new public symbols may be added and new members may be appended to
|
||||
* public structs whose size is not part of public ABI (most public structs in
|
||||
* FFmpeg). New macros and enum values may be added. Behavior in undocumented
|
||||
* situations may change slightly (and be documented). All those are accompanied
|
||||
* by an entry in doc/APIchanges and incrementing either the minor or micro
|
||||
* version number.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @defgroup lavu Common utility functions
|
||||
*
|
||||
* @brief
|
||||
* libavutil contains the code shared across all the other FFmpeg
|
||||
* libraries
|
||||
*
|
||||
* @note In order to use the functions provided by avutil you must include
|
||||
* the specific header.
|
||||
*
|
||||
* @{
|
||||
*
|
||||
* @defgroup lavu_crypto Crypto and Hashing
|
||||
*
|
||||
* @{
|
||||
* @}
|
||||
*
|
||||
* @defgroup lavu_math Maths
|
||||
* @{
|
||||
*
|
||||
* @}
|
||||
*
|
||||
* @defgroup lavu_string String Manipulation
|
||||
*
|
||||
* @{
|
||||
*
|
||||
* @}
|
||||
*
|
||||
* @defgroup lavu_mem Memory Management
|
||||
*
|
||||
* @{
|
||||
*
|
||||
* @}
|
||||
*
|
||||
* @defgroup lavu_data Data Structures
|
||||
* @{
|
||||
*
|
||||
* @}
|
||||
*
|
||||
* @defgroup lavu_audio Audio related
|
||||
*
|
||||
* @{
|
||||
*
|
||||
* @}
|
||||
*
|
||||
* @defgroup lavu_error Error Codes
|
||||
*
|
||||
* @{
|
||||
*
|
||||
* @}
|
||||
*
|
||||
* @defgroup lavu_misc Other
|
||||
*
|
||||
* @{
|
||||
*
|
||||
* @defgroup lavu_internal Internal
|
||||
*
|
||||
* Not exported functions, for internal usage only
|
||||
*
|
||||
* @{
|
||||
*
|
||||
* @}
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @addtogroup lavu_ver
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* Return the LIBAVUTIL_VERSION_INT constant.
|
||||
*/
|
||||
unsigned avutil_version(void);
|
||||
|
||||
/**
|
||||
* Return the libavutil build-time configuration.
|
||||
*/
|
||||
const char *avutil_configuration(void);
|
||||
|
||||
/**
|
||||
* Return the libavutil license.
|
||||
*/
|
||||
const char *avutil_license(void);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/**
|
||||
* @addtogroup lavu_media Media Type
|
||||
* @brief Media Type
|
||||
*/
|
||||
|
||||
enum AVMediaType {
|
||||
AVMEDIA_TYPE_UNKNOWN = -1, ///< Usually treated as AVMEDIA_TYPE_DATA
|
||||
AVMEDIA_TYPE_VIDEO,
|
||||
AVMEDIA_TYPE_AUDIO,
|
||||
AVMEDIA_TYPE_DATA, ///< Opaque data information usually continuous
|
||||
AVMEDIA_TYPE_SUBTITLE,
|
||||
AVMEDIA_TYPE_ATTACHMENT, ///< Opaque data information usually sparse
|
||||
AVMEDIA_TYPE_NB
|
||||
};
|
||||
|
||||
/**
|
||||
* Return a string describing the media_type enum, NULL if media_type
|
||||
* is unknown.
|
||||
*/
|
||||
const char *av_get_media_type_string(enum AVMediaType media_type);
|
||||
|
||||
/**
|
||||
* @defgroup lavu_const Constants
|
||||
* @{
|
||||
*
|
||||
* @defgroup lavu_enc Encoding specific
|
||||
*
|
||||
* @note those definition should move to avcodec
|
||||
* @{
|
||||
*/
|
||||
|
||||
#define FF_LAMBDA_SHIFT 7
|
||||
#define FF_LAMBDA_SCALE (1<<FF_LAMBDA_SHIFT)
|
||||
#define FF_QP2LAMBDA 118 ///< factor to convert from H.263 QP to lambda
|
||||
#define FF_LAMBDA_MAX (256*128-1)
|
||||
|
||||
#define FF_QUALITY_SCALE FF_LAMBDA_SCALE //FIXME maybe remove
|
||||
|
||||
/**
|
||||
* @}
|
||||
* @defgroup lavu_time Timestamp specific
|
||||
*
|
||||
* FFmpeg internal timebase and timestamp definitions
|
||||
*
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief Undefined timestamp value
|
||||
*
|
||||
* Usually reported by demuxer that work on containers that do not provide
|
||||
* either pts or dts.
|
||||
*/
|
||||
|
||||
#define AV_NOPTS_VALUE ((int64_t)UINT64_C(0x8000000000000000))
|
||||
|
||||
/**
|
||||
* Internal time base represented as integer
|
||||
*/
|
||||
|
||||
#define AV_TIME_BASE 1000000
|
||||
|
||||
/**
|
||||
* Internal time base represented as fractional value
|
||||
*/
|
||||
|
||||
#define AV_TIME_BASE_Q (AVRational){1, AV_TIME_BASE}
|
||||
|
||||
/**
|
||||
* @}
|
||||
* @}
|
||||
* @defgroup lavu_picture Image related
|
||||
*
|
||||
* AVPicture types, pixel formats and basic image planes manipulation.
|
||||
*
|
||||
* @{
|
||||
*/
|
||||
|
||||
enum AVPictureType {
|
||||
AV_PICTURE_TYPE_NONE = 0, ///< Undefined
|
||||
AV_PICTURE_TYPE_I, ///< Intra
|
||||
AV_PICTURE_TYPE_P, ///< Predicted
|
||||
AV_PICTURE_TYPE_B, ///< Bi-dir predicted
|
||||
AV_PICTURE_TYPE_S, ///< S(GMC)-VOP MPEG4
|
||||
AV_PICTURE_TYPE_SI, ///< Switching Intra
|
||||
AV_PICTURE_TYPE_SP, ///< Switching Predicted
|
||||
AV_PICTURE_TYPE_BI, ///< BI type
|
||||
};
|
||||
|
||||
/**
|
||||
* Return a single letter to describe the given picture type
|
||||
* pict_type.
|
||||
*
|
||||
* @param[in] pict_type the picture type @return a single character
|
||||
* representing the picture type, '?' if pict_type is unknown
|
||||
*/
|
||||
char av_get_picture_type_char(enum AVPictureType pict_type);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
#include "common.h"
|
||||
#include "error.h"
|
||||
#include "version.h"
|
||||
#include "mathematics.h"
|
||||
#include "rational.h"
|
||||
#include "intfloat_readwrite.h"
|
||||
#include "log.h"
|
||||
#include "pixfmt.h"
|
||||
|
||||
/**
|
||||
* Return x default pointer in case p is NULL.
|
||||
*/
|
||||
static inline void *av_x_if_null(const void *p, const void *x)
|
||||
{
|
||||
return (void *)(intptr_t)(p ? p : x);
|
||||
}
|
||||
|
||||
/**
|
||||
* Compute the length of an integer list.
|
||||
*
|
||||
* @param elsize size in bytes of each list element (only 1, 2, 4 or 8)
|
||||
* @param term list terminator (usually 0 or -1)
|
||||
* @param list pointer to the list
|
||||
* @return length of the list, in elements, not counting the terminator
|
||||
*/
|
||||
unsigned av_int_list_length_for_size(unsigned elsize,
|
||||
const void *list, uint64_t term) av_pure;
|
||||
|
||||
/**
|
||||
* Compute the length of an integer list.
|
||||
*
|
||||
* @param term list terminator (usually 0 or -1)
|
||||
* @param list pointer to the list
|
||||
* @return length of the list, in elements, not counting the terminator
|
||||
*/
|
||||
#define av_int_list_length(list, term) \
|
||||
av_int_list_length_for_size(sizeof(*(list)), list, term)
|
||||
|
||||
/**
|
||||
* @}
|
||||
* @}
|
||||
*/
|
||||
|
||||
#endif /* AVUTIL_AVUTIL_H */
|
||||
67
3rdparty/include/ffmpeg_/libavutil/base64.h
vendored
67
3rdparty/include/ffmpeg_/libavutil/base64.h
vendored
@@ -1,67 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2006 Ryan Martell. (rdm4@martellventures.com)
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef AVUTIL_BASE64_H
|
||||
#define AVUTIL_BASE64_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/**
|
||||
* @defgroup lavu_base64 Base64
|
||||
* @ingroup lavu_crypto
|
||||
* @{
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Decode a base64-encoded string.
|
||||
*
|
||||
* @param out buffer for decoded data
|
||||
* @param in null-terminated input string
|
||||
* @param out_size size in bytes of the out buffer, must be at
|
||||
* least 3/4 of the length of in
|
||||
* @return number of bytes written, or a negative value in case of
|
||||
* invalid input
|
||||
*/
|
||||
int av_base64_decode(uint8_t *out, const char *in, int out_size);
|
||||
|
||||
/**
|
||||
* Encode data to base64 and null-terminate.
|
||||
*
|
||||
* @param out buffer for encoded data
|
||||
* @param out_size size in bytes of the out buffer (including the
|
||||
* null terminator), must be at least AV_BASE64_SIZE(in_size)
|
||||
* @param in input buffer containing the data to encode
|
||||
* @param in_size size in bytes of the in buffer
|
||||
* @return out or NULL in case of error
|
||||
*/
|
||||
char *av_base64_encode(char *out, int out_size, const uint8_t *in, int in_size);
|
||||
|
||||
/**
|
||||
* Calculate the output size needed to base64-encode x bytes to a
|
||||
* null-terminated string.
|
||||
*/
|
||||
#define AV_BASE64_SIZE(x) (((x)+2) / 3 * 4 + 1)
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
#endif /* AVUTIL_BASE64_H */
|
||||
77
3rdparty/include/ffmpeg_/libavutil/blowfish.h
vendored
77
3rdparty/include/ffmpeg_/libavutil/blowfish.h
vendored
@@ -1,77 +0,0 @@
|
||||
/*
|
||||
* Blowfish algorithm
|
||||
* Copyright (c) 2012 Samuel Pitoiset
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef AVUTIL_BLOWFISH_H
|
||||
#define AVUTIL_BLOWFISH_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/**
|
||||
* @defgroup lavu_blowfish Blowfish
|
||||
* @ingroup lavu_crypto
|
||||
* @{
|
||||
*/
|
||||
|
||||
#define AV_BF_ROUNDS 16
|
||||
|
||||
typedef struct AVBlowfish {
|
||||
uint32_t p[AV_BF_ROUNDS + 2];
|
||||
uint32_t s[4][256];
|
||||
} AVBlowfish;
|
||||
|
||||
/**
|
||||
* Initialize an AVBlowfish context.
|
||||
*
|
||||
* @param ctx an AVBlowfish context
|
||||
* @param key a key
|
||||
* @param key_len length of the key
|
||||
*/
|
||||
void av_blowfish_init(struct AVBlowfish *ctx, const uint8_t *key, int key_len);
|
||||
|
||||
/**
|
||||
* Encrypt or decrypt a buffer using a previously initialized context.
|
||||
*
|
||||
* @param ctx an AVBlowfish context
|
||||
* @param xl left four bytes halves of input to be encrypted
|
||||
* @param xr right four bytes halves of input to be encrypted
|
||||
* @param decrypt 0 for encryption, 1 for decryption
|
||||
*/
|
||||
void av_blowfish_crypt_ecb(struct AVBlowfish *ctx, uint32_t *xl, uint32_t *xr,
|
||||
int decrypt);
|
||||
|
||||
/**
|
||||
* Encrypt or decrypt a buffer using a previously initialized context.
|
||||
*
|
||||
* @param ctx an AVBlowfish context
|
||||
* @param dst destination array, can be equal to src
|
||||
* @param src source array, can be equal to dst
|
||||
* @param count number of 8 byte blocks
|
||||
* @param iv initialization vector for CBC mode, if NULL ECB will be used
|
||||
* @param decrypt 0 for encryption, 1 for decryption
|
||||
*/
|
||||
void av_blowfish_crypt(struct AVBlowfish *ctx, uint8_t *dst, const uint8_t *src,
|
||||
int count, uint8_t *iv, int decrypt);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
#endif /* AVUTIL_BLOWFISH_H */
|
||||
200
3rdparty/include/ffmpeg_/libavutil/bprint.h
vendored
200
3rdparty/include/ffmpeg_/libavutil/bprint.h
vendored
@@ -1,200 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2012 Nicolas George
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef AVUTIL_BPRINT_H
|
||||
#define AVUTIL_BPRINT_H
|
||||
|
||||
#include "attributes.h"
|
||||
#include "avstring.h"
|
||||
|
||||
/**
|
||||
* Define a structure with extra padding to a fixed size
|
||||
* This helps ensuring binary compatibility with future versions.
|
||||
*/
|
||||
#define FF_PAD_STRUCTURE(size, ...) \
|
||||
__VA_ARGS__ \
|
||||
char reserved_padding[size - sizeof(struct { __VA_ARGS__ })];
|
||||
|
||||
/**
|
||||
* Buffer to print data progressively
|
||||
*
|
||||
* The string buffer grows as necessary and is always 0-terminated.
|
||||
* The content of the string is never accessed, and thus is
|
||||
* encoding-agnostic and can even hold binary data.
|
||||
*
|
||||
* Small buffers are kept in the structure itself, and thus require no
|
||||
* memory allocation at all (unless the contents of the buffer is needed
|
||||
* after the structure goes out of scope). This is almost as lightweight as
|
||||
* declaring a local "char buf[512]".
|
||||
*
|
||||
* The length of the string can go beyond the allocated size: the buffer is
|
||||
* then truncated, but the functions still keep account of the actual total
|
||||
* length.
|
||||
*
|
||||
* In other words, buf->len can be greater than buf->size and records the
|
||||
* total length of what would have been to the buffer if there had been
|
||||
* enough memory.
|
||||
*
|
||||
* Append operations do not need to be tested for failure: if a memory
|
||||
* allocation fails, data stop being appended to the buffer, but the length
|
||||
* is still updated. This situation can be tested with
|
||||
* av_bprint_is_complete().
|
||||
*
|
||||
* The size_max field determines several possible behaviours:
|
||||
*
|
||||
* size_max = -1 (= UINT_MAX) or any large value will let the buffer be
|
||||
* reallocated as necessary, with an amortized linear cost.
|
||||
*
|
||||
* size_max = 0 prevents writing anything to the buffer: only the total
|
||||
* length is computed. The write operations can then possibly be repeated in
|
||||
* a buffer with exactly the necessary size
|
||||
* (using size_init = size_max = len + 1).
|
||||
*
|
||||
* size_max = 1 is automatically replaced by the exact size available in the
|
||||
* structure itself, thus ensuring no dynamic memory allocation. The
|
||||
* internal buffer is large enough to hold a reasonable paragraph of text,
|
||||
* such as the current paragraph.
|
||||
*/
|
||||
typedef struct AVBPrint {
|
||||
FF_PAD_STRUCTURE(1024,
|
||||
char *str; /**< string so far */
|
||||
unsigned len; /**< length so far */
|
||||
unsigned size; /**< allocated memory */
|
||||
unsigned size_max; /**< maximum allocated memory */
|
||||
char reserved_internal_buffer[1];
|
||||
)
|
||||
} AVBPrint;
|
||||
|
||||
/**
|
||||
* Convenience macros for special values for av_bprint_init() size_max
|
||||
* parameter.
|
||||
*/
|
||||
#define AV_BPRINT_SIZE_UNLIMITED ((unsigned)-1)
|
||||
#define AV_BPRINT_SIZE_AUTOMATIC 1
|
||||
#define AV_BPRINT_SIZE_COUNT_ONLY 0
|
||||
|
||||
/**
|
||||
* Init a print buffer.
|
||||
*
|
||||
* @param buf buffer to init
|
||||
* @param size_init initial size (including the final 0)
|
||||
* @param size_max maximum size;
|
||||
* 0 means do not write anything, just count the length;
|
||||
* 1 is replaced by the maximum value for automatic storage;
|
||||
* any large value means that the internal buffer will be
|
||||
* reallocated as needed up to that limit; -1 is converted to
|
||||
* UINT_MAX, the largest limit possible.
|
||||
* Check also AV_BPRINT_SIZE_* macros.
|
||||
*/
|
||||
void av_bprint_init(AVBPrint *buf, unsigned size_init, unsigned size_max);
|
||||
|
||||
/**
|
||||
* Init a print buffer using a pre-existing buffer.
|
||||
*
|
||||
* The buffer will not be reallocated.
|
||||
*
|
||||
* @param buf buffer structure to init
|
||||
* @param buffer byte buffer to use for the string data
|
||||
* @param size size of buffer
|
||||
*/
|
||||
void av_bprint_init_for_buffer(AVBPrint *buf, char *buffer, unsigned size);
|
||||
|
||||
/**
|
||||
* Append a formatted string to a print buffer.
|
||||
*/
|
||||
void av_bprintf(AVBPrint *buf, const char *fmt, ...) av_printf_format(2, 3);
|
||||
|
||||
/**
|
||||
* Append char c n times to a print buffer.
|
||||
*/
|
||||
void av_bprint_chars(AVBPrint *buf, char c, unsigned n);
|
||||
|
||||
struct tm;
|
||||
/**
|
||||
* Append a formatted date and time to a print buffer.
|
||||
*
|
||||
* param buf bprint buffer to use
|
||||
* param fmt date and time format string, see strftime()
|
||||
* param tm broken-down time structure to translate
|
||||
*
|
||||
* @note due to poor design of the standard strftime function, it may
|
||||
* produce poor results if the format string expands to a very long text and
|
||||
* the bprint buffer is near the limit stated by the size_max option.
|
||||
*/
|
||||
void av_bprint_strftime(AVBPrint *buf, const char *fmt, const struct tm *tm);
|
||||
|
||||
/**
|
||||
* Allocate bytes in the buffer for external use.
|
||||
*
|
||||
* @param[in] buf buffer structure
|
||||
* @param[in] size required size
|
||||
* @param[out] mem pointer to the memory area
|
||||
* @param[out] actual_size size of the memory area after allocation;
|
||||
* can be larger or smaller than size
|
||||
*/
|
||||
void av_bprint_get_buffer(AVBPrint *buf, unsigned size,
|
||||
unsigned char **mem, unsigned *actual_size);
|
||||
|
||||
/**
|
||||
* Reset the string to "" but keep internal allocated data.
|
||||
*/
|
||||
void av_bprint_clear(AVBPrint *buf);
|
||||
|
||||
/**
|
||||
* Test if the print buffer is complete (not truncated).
|
||||
*
|
||||
* It may have been truncated due to a memory allocation failure
|
||||
* or the size_max limit (compare size and size_max if necessary).
|
||||
*/
|
||||
static inline int av_bprint_is_complete(AVBPrint *buf)
|
||||
{
|
||||
return buf->len < buf->size;
|
||||
}
|
||||
|
||||
/**
|
||||
* Finalize a print buffer.
|
||||
*
|
||||
* The print buffer can no longer be used afterwards,
|
||||
* but the len and size fields are still valid.
|
||||
*
|
||||
* @arg[out] ret_str if not NULL, used to return a permanent copy of the
|
||||
* buffer contents, or NULL if memory allocation fails;
|
||||
* if NULL, the buffer is discarded and freed
|
||||
* @return 0 for success or error code (probably AVERROR(ENOMEM))
|
||||
*/
|
||||
int av_bprint_finalize(AVBPrint *buf, char **ret_str);
|
||||
|
||||
/**
|
||||
* Escape the content in src and append it to dstbuf.
|
||||
*
|
||||
* @param dstbuf already inited destination bprint buffer
|
||||
* @param src string containing the text to escape
|
||||
* @param special_chars string containing the special characters which
|
||||
* need to be escaped, can be NULL
|
||||
* @param mode escape mode to employ, see AV_ESCAPE_MODE_* macros.
|
||||
* Any unknown value for mode will be considered equivalent to
|
||||
* AV_ESCAPE_MODE_BACKSLASH, but this behaviour can change without
|
||||
* notice.
|
||||
* @param flags flags which control how to escape, see AV_ESCAPE_FLAG_* macros
|
||||
*/
|
||||
void av_bprint_escape(AVBPrint *dstbuf, const char *src, const char *special_chars,
|
||||
enum AVEscapeMode mode, int flags);
|
||||
|
||||
#endif /* AVUTIL_BPRINT_H */
|
||||
109
3rdparty/include/ffmpeg_/libavutil/bswap.h
vendored
109
3rdparty/include/ffmpeg_/libavutil/bswap.h
vendored
@@ -1,109 +0,0 @@
|
||||
/*
|
||||
* copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at>
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file
|
||||
* byte swapping routines
|
||||
*/
|
||||
|
||||
#ifndef AVUTIL_BSWAP_H
|
||||
#define AVUTIL_BSWAP_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include "libavutil/avconfig.h"
|
||||
#include "attributes.h"
|
||||
|
||||
#ifdef HAVE_AV_CONFIG_H
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#if ARCH_ARM
|
||||
# include "arm/bswap.h"
|
||||
#elif ARCH_AVR32
|
||||
# include "avr32/bswap.h"
|
||||
#elif ARCH_BFIN
|
||||
# include "bfin/bswap.h"
|
||||
#elif ARCH_SH4
|
||||
# include "sh4/bswap.h"
|
||||
#elif ARCH_X86
|
||||
# include "x86/bswap.h"
|
||||
#endif
|
||||
|
||||
#endif /* HAVE_AV_CONFIG_H */
|
||||
|
||||
#define AV_BSWAP16C(x) (((x) << 8 & 0xff00) | ((x) >> 8 & 0x00ff))
|
||||
#define AV_BSWAP32C(x) (AV_BSWAP16C(x) << 16 | AV_BSWAP16C((x) >> 16))
|
||||
#define AV_BSWAP64C(x) (AV_BSWAP32C(x) << 32 | AV_BSWAP32C((x) >> 32))
|
||||
|
||||
#define AV_BSWAPC(s, x) AV_BSWAP##s##C(x)
|
||||
|
||||
#ifndef av_bswap16
|
||||
static av_always_inline av_const uint16_t av_bswap16(uint16_t x)
|
||||
{
|
||||
x= (x>>8) | (x<<8);
|
||||
return x;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef av_bswap32
|
||||
static av_always_inline av_const uint32_t av_bswap32(uint32_t x)
|
||||
{
|
||||
return AV_BSWAP32C(x);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef av_bswap64
|
||||
static inline uint64_t av_const av_bswap64(uint64_t x)
|
||||
{
|
||||
return (uint64_t)av_bswap32(x) << 32 | av_bswap32(x >> 32);
|
||||
}
|
||||
#endif
|
||||
|
||||
// be2ne ... big-endian to native-endian
|
||||
// le2ne ... little-endian to native-endian
|
||||
|
||||
#if AV_HAVE_BIGENDIAN
|
||||
#define av_be2ne16(x) (x)
|
||||
#define av_be2ne32(x) (x)
|
||||
#define av_be2ne64(x) (x)
|
||||
#define av_le2ne16(x) av_bswap16(x)
|
||||
#define av_le2ne32(x) av_bswap32(x)
|
||||
#define av_le2ne64(x) av_bswap64(x)
|
||||
#define AV_BE2NEC(s, x) (x)
|
||||
#define AV_LE2NEC(s, x) AV_BSWAPC(s, x)
|
||||
#else
|
||||
#define av_be2ne16(x) av_bswap16(x)
|
||||
#define av_be2ne32(x) av_bswap32(x)
|
||||
#define av_be2ne64(x) av_bswap64(x)
|
||||
#define av_le2ne16(x) (x)
|
||||
#define av_le2ne32(x) (x)
|
||||
#define av_le2ne64(x) (x)
|
||||
#define AV_BE2NEC(s, x) AV_BSWAPC(s, x)
|
||||
#define AV_LE2NEC(s, x) (x)
|
||||
#endif
|
||||
|
||||
#define AV_BE2NE16C(x) AV_BE2NEC(16, x)
|
||||
#define AV_BE2NE32C(x) AV_BE2NEC(32, x)
|
||||
#define AV_BE2NE64C(x) AV_BE2NEC(64, x)
|
||||
#define AV_LE2NE16C(x) AV_LE2NEC(16, x)
|
||||
#define AV_LE2NE32C(x) AV_LE2NEC(32, x)
|
||||
#define AV_LE2NE64C(x) AV_LE2NEC(64, x)
|
||||
|
||||
#endif /* AVUTIL_BSWAP_H */
|
||||
274
3rdparty/include/ffmpeg_/libavutil/buffer.h
vendored
274
3rdparty/include/ffmpeg_/libavutil/buffer.h
vendored
@@ -1,274 +0,0 @@
|
||||
/*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file
|
||||
* @ingroup lavu_buffer
|
||||
* refcounted data buffer API
|
||||
*/
|
||||
|
||||
#ifndef AVUTIL_BUFFER_H
|
||||
#define AVUTIL_BUFFER_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/**
|
||||
* @defgroup lavu_buffer AVBuffer
|
||||
* @ingroup lavu_data
|
||||
*
|
||||
* @{
|
||||
* AVBuffer is an API for reference-counted data buffers.
|
||||
*
|
||||
* There are two core objects in this API -- AVBuffer and AVBufferRef. AVBuffer
|
||||
* represents the data buffer itself; it is opaque and not meant to be accessed
|
||||
* by the caller directly, but only through AVBufferRef. However, the caller may
|
||||
* e.g. compare two AVBuffer pointers to check whether two different references
|
||||
* are describing the same data buffer. AVBufferRef represents a single
|
||||
* reference to an AVBuffer and it is the object that may be manipulated by the
|
||||
* caller directly.
|
||||
*
|
||||
* There are two functions provided for creating a new AVBuffer with a single
|
||||
* reference -- av_buffer_alloc() to just allocate a new buffer, and
|
||||
* av_buffer_create() to wrap an existing array in an AVBuffer. From an existing
|
||||
* reference, additional references may be created with av_buffer_ref().
|
||||
* Use av_buffer_unref() to free a reference (this will automatically free the
|
||||
* data once all the references are freed).
|
||||
*
|
||||
* The convention throughout this API and the rest of FFmpeg is such that the
|
||||
* buffer is considered writable if there exists only one reference to it (and
|
||||
* it has not been marked as read-only). The av_buffer_is_writable() function is
|
||||
* provided to check whether this is true and av_buffer_make_writable() will
|
||||
* automatically create a new writable buffer when necessary.
|
||||
* Of course nothing prevents the calling code from violating this convention,
|
||||
* however that is safe only when all the existing references are under its
|
||||
* control.
|
||||
*
|
||||
* @note Referencing and unreferencing the buffers is thread-safe and thus
|
||||
* may be done from multiple threads simultaneously without any need for
|
||||
* additional locking.
|
||||
*
|
||||
* @note Two different references to the same buffer can point to different
|
||||
* parts of the buffer (i.e. their AVBufferRef.data will not be equal).
|
||||
*/
|
||||
|
||||
/**
|
||||
* A reference counted buffer type. It is opaque and is meant to be used through
|
||||
* references (AVBufferRef).
|
||||
*/
|
||||
typedef struct AVBuffer AVBuffer;
|
||||
|
||||
/**
|
||||
* A reference to a data buffer.
|
||||
*
|
||||
* The size of this struct is not a part of the public ABI and it is not meant
|
||||
* to be allocated directly.
|
||||
*/
|
||||
typedef struct AVBufferRef {
|
||||
AVBuffer *buffer;
|
||||
|
||||
/**
|
||||
* The data buffer. It is considered writable if and only if
|
||||
* this is the only reference to the buffer, in which case
|
||||
* av_buffer_is_writable() returns 1.
|
||||
*/
|
||||
uint8_t *data;
|
||||
/**
|
||||
* Size of data in bytes.
|
||||
*/
|
||||
int size;
|
||||
} AVBufferRef;
|
||||
|
||||
/**
|
||||
* Allocate an AVBuffer of the given size using av_malloc().
|
||||
*
|
||||
* @return an AVBufferRef of given size or NULL when out of memory
|
||||
*/
|
||||
AVBufferRef *av_buffer_alloc(int size);
|
||||
|
||||
/**
|
||||
* Same as av_buffer_alloc(), except the returned buffer will be initialized
|
||||
* to zero.
|
||||
*/
|
||||
AVBufferRef *av_buffer_allocz(int size);
|
||||
|
||||
/**
|
||||
* Always treat the buffer as read-only, even when it has only one
|
||||
* reference.
|
||||
*/
|
||||
#define AV_BUFFER_FLAG_READONLY (1 << 0)
|
||||
|
||||
/**
|
||||
* Create an AVBuffer from an existing array.
|
||||
*
|
||||
* If this function is successful, data is owned by the AVBuffer. The caller may
|
||||
* only access data through the returned AVBufferRef and references derived from
|
||||
* it.
|
||||
* If this function fails, data is left untouched.
|
||||
* @param data data array
|
||||
* @param size size of data in bytes
|
||||
* @param free a callback for freeing this buffer's data
|
||||
* @param opaque parameter to be got for processing or passed to free
|
||||
* @param flags a combination of AV_BUFFER_FLAG_*
|
||||
*
|
||||
* @return an AVBufferRef referring to data on success, NULL on failure.
|
||||
*/
|
||||
AVBufferRef *av_buffer_create(uint8_t *data, int size,
|
||||
void (*free)(void *opaque, uint8_t *data),
|
||||
void *opaque, int flags);
|
||||
|
||||
/**
|
||||
* Default free callback, which calls av_free() on the buffer data.
|
||||
* This function is meant to be passed to av_buffer_create(), not called
|
||||
* directly.
|
||||
*/
|
||||
void av_buffer_default_free(void *opaque, uint8_t *data);
|
||||
|
||||
/**
|
||||
* Create a new reference to an AVBuffer.
|
||||
*
|
||||
* @return a new AVBufferRef referring to the same AVBuffer as buf or NULL on
|
||||
* failure.
|
||||
*/
|
||||
AVBufferRef *av_buffer_ref(AVBufferRef *buf);
|
||||
|
||||
/**
|
||||
* Free a given reference and automatically free the buffer if there are no more
|
||||
* references to it.
|
||||
*
|
||||
* @param buf the reference to be freed. The pointer is set to NULL on return.
|
||||
*/
|
||||
void av_buffer_unref(AVBufferRef **buf);
|
||||
|
||||
/**
|
||||
* @return 1 if the caller may write to the data referred to by buf (which is
|
||||
* true if and only if buf is the only reference to the underlying AVBuffer).
|
||||
* Return 0 otherwise.
|
||||
* A positive answer is valid until av_buffer_ref() is called on buf.
|
||||
*/
|
||||
int av_buffer_is_writable(const AVBufferRef *buf);
|
||||
|
||||
/**
|
||||
* @return the opaque parameter set by av_buffer_create.
|
||||
*/
|
||||
void *av_buffer_get_opaque(const AVBufferRef *buf);
|
||||
|
||||
int av_buffer_get_ref_count(const AVBufferRef *buf);
|
||||
|
||||
/**
|
||||
* Create a writable reference from a given buffer reference, avoiding data copy
|
||||
* if possible.
|
||||
*
|
||||
* @param buf buffer reference to make writable. On success, buf is either left
|
||||
* untouched, or it is unreferenced and a new writable AVBufferRef is
|
||||
* written in its place. On failure, buf is left untouched.
|
||||
* @return 0 on success, a negative AVERROR on failure.
|
||||
*/
|
||||
int av_buffer_make_writable(AVBufferRef **buf);
|
||||
|
||||
/**
|
||||
* Reallocate a given buffer.
|
||||
*
|
||||
* @param buf a buffer reference to reallocate. On success, buf will be
|
||||
* unreferenced and a new reference with the required size will be
|
||||
* written in its place. On failure buf will be left untouched. *buf
|
||||
* may be NULL, then a new buffer is allocated.
|
||||
* @param size required new buffer size.
|
||||
* @return 0 on success, a negative AVERROR on failure.
|
||||
*
|
||||
* @note the buffer is actually reallocated with av_realloc() only if it was
|
||||
* initially allocated through av_buffer_realloc(NULL) and there is only one
|
||||
* reference to it (i.e. the one passed to this function). In all other cases
|
||||
* a new buffer is allocated and the data is copied.
|
||||
*/
|
||||
int av_buffer_realloc(AVBufferRef **buf, int size);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/**
|
||||
* @defgroup lavu_bufferpool AVBufferPool
|
||||
* @ingroup lavu_data
|
||||
*
|
||||
* @{
|
||||
* AVBufferPool is an API for a lock-free thread-safe pool of AVBuffers.
|
||||
*
|
||||
* Frequently allocating and freeing large buffers may be slow. AVBufferPool is
|
||||
* meant to solve this in cases when the caller needs a set of buffers of the
|
||||
* same size (the most obvious use case being buffers for raw video or audio
|
||||
* frames).
|
||||
*
|
||||
* At the beginning, the user must call av_buffer_pool_init() to create the
|
||||
* buffer pool. Then whenever a buffer is needed, call av_buffer_pool_get() to
|
||||
* get a reference to a new buffer, similar to av_buffer_alloc(). This new
|
||||
* reference works in all aspects the same way as the one created by
|
||||
* av_buffer_alloc(). However, when the last reference to this buffer is
|
||||
* unreferenced, it is returned to the pool instead of being freed and will be
|
||||
* reused for subsequent av_buffer_pool_get() calls.
|
||||
*
|
||||
* When the caller is done with the pool and no longer needs to allocate any new
|
||||
* buffers, av_buffer_pool_uninit() must be called to mark the pool as freeable.
|
||||
* Once all the buffers are released, it will automatically be freed.
|
||||
*
|
||||
* Allocating and releasing buffers with this API is thread-safe as long as
|
||||
* either the default alloc callback is used, or the user-supplied one is
|
||||
* thread-safe.
|
||||
*/
|
||||
|
||||
/**
|
||||
* The buffer pool. This structure is opaque and not meant to be accessed
|
||||
* directly. It is allocated with av_buffer_pool_init() and freed with
|
||||
* av_buffer_pool_uninit().
|
||||
*/
|
||||
typedef struct AVBufferPool AVBufferPool;
|
||||
|
||||
/**
|
||||
* Allocate and initialize a buffer pool.
|
||||
*
|
||||
* @param size size of each buffer in this pool
|
||||
* @param alloc a function that will be used to allocate new buffers when the
|
||||
* pool is empty. May be NULL, then the default allocator will be used
|
||||
* (av_buffer_alloc()).
|
||||
* @return newly created buffer pool on success, NULL on error.
|
||||
*/
|
||||
AVBufferPool *av_buffer_pool_init(int size, AVBufferRef* (*alloc)(int size));
|
||||
|
||||
/**
|
||||
* Mark the pool as being available for freeing. It will actually be freed only
|
||||
* once all the allocated buffers associated with the pool are released. Thus it
|
||||
* is safe to call this function while some of the allocated buffers are still
|
||||
* in use.
|
||||
*
|
||||
* @param pool pointer to the pool to be freed. It will be set to NULL.
|
||||
* @see av_buffer_pool_can_uninit()
|
||||
*/
|
||||
void av_buffer_pool_uninit(AVBufferPool **pool);
|
||||
|
||||
/**
|
||||
* Allocate a new AVBuffer, reusing an old buffer from the pool when available.
|
||||
* This function may be called simultaneously from multiple threads.
|
||||
*
|
||||
* @return a reference to the new buffer on success, NULL on error.
|
||||
*/
|
||||
AVBufferRef *av_buffer_pool_get(AVBufferPool *pool);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
#endif /* AVUTIL_BUFFER_H */
|
||||
216
3rdparty/include/ffmpeg_/libavutil/channel_layout.h
vendored
216
3rdparty/include/ffmpeg_/libavutil/channel_layout.h
vendored
@@ -1,216 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at>
|
||||
* Copyright (c) 2008 Peter Ross
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef AVUTIL_CHANNEL_LAYOUT_H
|
||||
#define AVUTIL_CHANNEL_LAYOUT_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/**
|
||||
* @file
|
||||
* audio channel layout utility functions
|
||||
*/
|
||||
|
||||
/**
|
||||
* @addtogroup lavu_audio
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* @defgroup channel_masks Audio channel masks
|
||||
*
|
||||
* A channel layout is a 64-bits integer with a bit set for every channel.
|
||||
* The number of bits set must be equal to the number of channels.
|
||||
* The value 0 means that the channel layout is not known.
|
||||
* @note this data structure is not powerful enough to handle channels
|
||||
* combinations that have the same channel multiple times, such as
|
||||
* dual-mono.
|
||||
*
|
||||
* @{
|
||||
*/
|
||||
#define AV_CH_FRONT_LEFT 0x00000001
|
||||
#define AV_CH_FRONT_RIGHT 0x00000002
|
||||
#define AV_CH_FRONT_CENTER 0x00000004
|
||||
#define AV_CH_LOW_FREQUENCY 0x00000008
|
||||
#define AV_CH_BACK_LEFT 0x00000010
|
||||
#define AV_CH_BACK_RIGHT 0x00000020
|
||||
#define AV_CH_FRONT_LEFT_OF_CENTER 0x00000040
|
||||
#define AV_CH_FRONT_RIGHT_OF_CENTER 0x00000080
|
||||
#define AV_CH_BACK_CENTER 0x00000100
|
||||
#define AV_CH_SIDE_LEFT 0x00000200
|
||||
#define AV_CH_SIDE_RIGHT 0x00000400
|
||||
#define AV_CH_TOP_CENTER 0x00000800
|
||||
#define AV_CH_TOP_FRONT_LEFT 0x00001000
|
||||
#define AV_CH_TOP_FRONT_CENTER 0x00002000
|
||||
#define AV_CH_TOP_FRONT_RIGHT 0x00004000
|
||||
#define AV_CH_TOP_BACK_LEFT 0x00008000
|
||||
#define AV_CH_TOP_BACK_CENTER 0x00010000
|
||||
#define AV_CH_TOP_BACK_RIGHT 0x00020000
|
||||
#define AV_CH_STEREO_LEFT 0x20000000 ///< Stereo downmix.
|
||||
#define AV_CH_STEREO_RIGHT 0x40000000 ///< See AV_CH_STEREO_LEFT.
|
||||
#define AV_CH_WIDE_LEFT 0x0000000080000000ULL
|
||||
#define AV_CH_WIDE_RIGHT 0x0000000100000000ULL
|
||||
#define AV_CH_SURROUND_DIRECT_LEFT 0x0000000200000000ULL
|
||||
#define AV_CH_SURROUND_DIRECT_RIGHT 0x0000000400000000ULL
|
||||
#define AV_CH_LOW_FREQUENCY_2 0x0000000800000000ULL
|
||||
|
||||
/** Channel mask value used for AVCodecContext.request_channel_layout
|
||||
to indicate that the user requests the channel order of the decoder output
|
||||
to be the native codec channel order. */
|
||||
#define AV_CH_LAYOUT_NATIVE 0x8000000000000000ULL
|
||||
|
||||
/**
|
||||
* @}
|
||||
* @defgroup channel_mask_c Audio channel convenience macros
|
||||
* @{
|
||||
* */
|
||||
#define AV_CH_LAYOUT_MONO (AV_CH_FRONT_CENTER)
|
||||
#define AV_CH_LAYOUT_STEREO (AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT)
|
||||
#define AV_CH_LAYOUT_2POINT1 (AV_CH_LAYOUT_STEREO|AV_CH_LOW_FREQUENCY)
|
||||
#define AV_CH_LAYOUT_2_1 (AV_CH_LAYOUT_STEREO|AV_CH_BACK_CENTER)
|
||||
#define AV_CH_LAYOUT_SURROUND (AV_CH_LAYOUT_STEREO|AV_CH_FRONT_CENTER)
|
||||
#define AV_CH_LAYOUT_3POINT1 (AV_CH_LAYOUT_SURROUND|AV_CH_LOW_FREQUENCY)
|
||||
#define AV_CH_LAYOUT_4POINT0 (AV_CH_LAYOUT_SURROUND|AV_CH_BACK_CENTER)
|
||||
#define AV_CH_LAYOUT_4POINT1 (AV_CH_LAYOUT_4POINT0|AV_CH_LOW_FREQUENCY)
|
||||
#define AV_CH_LAYOUT_2_2 (AV_CH_LAYOUT_STEREO|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT)
|
||||
#define AV_CH_LAYOUT_QUAD (AV_CH_LAYOUT_STEREO|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT)
|
||||
#define AV_CH_LAYOUT_5POINT0 (AV_CH_LAYOUT_SURROUND|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT)
|
||||
#define AV_CH_LAYOUT_5POINT1 (AV_CH_LAYOUT_5POINT0|AV_CH_LOW_FREQUENCY)
|
||||
#define AV_CH_LAYOUT_5POINT0_BACK (AV_CH_LAYOUT_SURROUND|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT)
|
||||
#define AV_CH_LAYOUT_5POINT1_BACK (AV_CH_LAYOUT_5POINT0_BACK|AV_CH_LOW_FREQUENCY)
|
||||
#define AV_CH_LAYOUT_6POINT0 (AV_CH_LAYOUT_5POINT0|AV_CH_BACK_CENTER)
|
||||
#define AV_CH_LAYOUT_6POINT0_FRONT (AV_CH_LAYOUT_2_2|AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER)
|
||||
#define AV_CH_LAYOUT_HEXAGONAL (AV_CH_LAYOUT_5POINT0_BACK|AV_CH_BACK_CENTER)
|
||||
#define AV_CH_LAYOUT_6POINT1 (AV_CH_LAYOUT_5POINT1|AV_CH_BACK_CENTER)
|
||||
#define AV_CH_LAYOUT_6POINT1_BACK (AV_CH_LAYOUT_5POINT1_BACK|AV_CH_BACK_CENTER)
|
||||
#define AV_CH_LAYOUT_6POINT1_FRONT (AV_CH_LAYOUT_6POINT0_FRONT|AV_CH_LOW_FREQUENCY)
|
||||
#define AV_CH_LAYOUT_7POINT0 (AV_CH_LAYOUT_5POINT0|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT)
|
||||
#define AV_CH_LAYOUT_7POINT0_FRONT (AV_CH_LAYOUT_5POINT0|AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER)
|
||||
#define AV_CH_LAYOUT_7POINT1 (AV_CH_LAYOUT_5POINT1|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT)
|
||||
#define AV_CH_LAYOUT_7POINT1_WIDE (AV_CH_LAYOUT_5POINT1|AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER)
|
||||
#define AV_CH_LAYOUT_7POINT1_WIDE_BACK (AV_CH_LAYOUT_5POINT1_BACK|AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER)
|
||||
#define AV_CH_LAYOUT_OCTAGONAL (AV_CH_LAYOUT_5POINT0|AV_CH_BACK_LEFT|AV_CH_BACK_CENTER|AV_CH_BACK_RIGHT)
|
||||
#define AV_CH_LAYOUT_STEREO_DOWNMIX (AV_CH_STEREO_LEFT|AV_CH_STEREO_RIGHT)
|
||||
|
||||
enum AVMatrixEncoding {
|
||||
AV_MATRIX_ENCODING_NONE,
|
||||
AV_MATRIX_ENCODING_DOLBY,
|
||||
AV_MATRIX_ENCODING_DPLII,
|
||||
AV_MATRIX_ENCODING_NB
|
||||
};
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/**
|
||||
* Return a channel layout id that matches name, or 0 if no match is found.
|
||||
*
|
||||
* name can be one or several of the following notations,
|
||||
* separated by '+' or '|':
|
||||
* - the name of an usual channel layout (mono, stereo, 4.0, quad, 5.0,
|
||||
* 5.0(side), 5.1, 5.1(side), 7.1, 7.1(wide), downmix);
|
||||
* - the name of a single channel (FL, FR, FC, LFE, BL, BR, FLC, FRC, BC,
|
||||
* SL, SR, TC, TFL, TFC, TFR, TBL, TBC, TBR, DL, DR);
|
||||
* - a number of channels, in decimal, optionally followed by 'c', yielding
|
||||
* the default channel layout for that number of channels (@see
|
||||
* av_get_default_channel_layout);
|
||||
* - a channel layout mask, in hexadecimal starting with "0x" (see the
|
||||
* AV_CH_* macros).
|
||||
*
|
||||
* Example: "stereo+FC" = "2+FC" = "2c+1c" = "0x7"
|
||||
*/
|
||||
uint64_t av_get_channel_layout(const char *name);
|
||||
|
||||
/**
|
||||
* Return a description of a channel layout.
|
||||
* If nb_channels is <= 0, it is guessed from the channel_layout.
|
||||
*
|
||||
* @param buf put here the string containing the channel layout
|
||||
* @param buf_size size in bytes of the buffer
|
||||
*/
|
||||
void av_get_channel_layout_string(char *buf, int buf_size, int nb_channels, uint64_t channel_layout);
|
||||
|
||||
struct AVBPrint;
|
||||
/**
|
||||
* Append a description of a channel layout to a bprint buffer.
|
||||
*/
|
||||
void av_bprint_channel_layout(struct AVBPrint *bp, int nb_channels, uint64_t channel_layout);
|
||||
|
||||
/**
|
||||
* Return the number of channels in the channel layout.
|
||||
*/
|
||||
int av_get_channel_layout_nb_channels(uint64_t channel_layout);
|
||||
|
||||
/**
|
||||
* Return default channel layout for a given number of channels.
|
||||
*/
|
||||
int64_t av_get_default_channel_layout(int nb_channels);
|
||||
|
||||
/**
|
||||
* Get the index of a channel in channel_layout.
|
||||
*
|
||||
* @param channel a channel layout describing exactly one channel which must be
|
||||
* present in channel_layout.
|
||||
*
|
||||
* @return index of channel in channel_layout on success, a negative AVERROR
|
||||
* on error.
|
||||
*/
|
||||
int av_get_channel_layout_channel_index(uint64_t channel_layout,
|
||||
uint64_t channel);
|
||||
|
||||
/**
|
||||
* Get the channel with the given index in channel_layout.
|
||||
*/
|
||||
uint64_t av_channel_layout_extract_channel(uint64_t channel_layout, int index);
|
||||
|
||||
/**
|
||||
* Get the name of a given channel.
|
||||
*
|
||||
* @return channel name on success, NULL on error.
|
||||
*/
|
||||
const char *av_get_channel_name(uint64_t channel);
|
||||
|
||||
/**
|
||||
* Get the description of a given channel.
|
||||
*
|
||||
* @param channel a channel layout with a single channel
|
||||
* @return channel description on success, NULL on error
|
||||
*/
|
||||
const char *av_get_channel_description(uint64_t channel);
|
||||
|
||||
/**
|
||||
* Get the value and name of a standard channel layout.
|
||||
*
|
||||
* @param[in] index index in an internal list, starting at 0
|
||||
* @param[out] layout channel layout mask
|
||||
* @param[out] name name of the layout
|
||||
* @return 0 if the layout exists,
|
||||
* <0 if index is beyond the limits
|
||||
*/
|
||||
int av_get_standard_channel_layout(unsigned index, uint64_t *layout,
|
||||
const char **name);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
#endif /* AVUTIL_CHANNEL_LAYOUT_H */
|
||||
459
3rdparty/include/ffmpeg_/libavutil/common.h
vendored
459
3rdparty/include/ffmpeg_/libavutil/common.h
vendored
@@ -1,459 +0,0 @@
|
||||
/*
|
||||
* copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at>
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file
|
||||
* common internal and external API header
|
||||
*/
|
||||
|
||||
#ifndef AVUTIL_COMMON_H
|
||||
#define AVUTIL_COMMON_H
|
||||
|
||||
#include <errno.h>
|
||||
#include <inttypes.h>
|
||||
#include <limits.h>
|
||||
#include <math.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "attributes.h"
|
||||
#include "version.h"
|
||||
#include "libavutil/avconfig.h"
|
||||
|
||||
#if AV_HAVE_BIGENDIAN
|
||||
# define AV_NE(be, le) (be)
|
||||
#else
|
||||
# define AV_NE(be, le) (le)
|
||||
#endif
|
||||
|
||||
//rounded division & shift
|
||||
#define RSHIFT(a,b) ((a) > 0 ? ((a) + ((1<<(b))>>1))>>(b) : ((a) + ((1<<(b))>>1)-1)>>(b))
|
||||
/* assume b>0 */
|
||||
#define ROUNDED_DIV(a,b) (((a)>0 ? (a) + ((b)>>1) : (a) - ((b)>>1))/(b))
|
||||
/* assume a>0 and b>0 */
|
||||
#define FF_CEIL_RSHIFT(a,b) (!av_builtin_constant_p(b) ? -((-(a)) >> (b)) \
|
||||
: ((a) + (1<<(b)) - 1) >> (b))
|
||||
#define FFUDIV(a,b) (((a)>0 ?(a):(a)-(b)+1) / (b))
|
||||
#define FFUMOD(a,b) ((a)-(b)*FFUDIV(a,b))
|
||||
#define FFABS(a) ((a) >= 0 ? (a) : (-(a)))
|
||||
#define FFSIGN(a) ((a) > 0 ? 1 : -1)
|
||||
|
||||
#define FFMAX(a,b) ((a) > (b) ? (a) : (b))
|
||||
#define FFMAX3(a,b,c) FFMAX(FFMAX(a,b),c)
|
||||
#define FFMIN(a,b) ((a) > (b) ? (b) : (a))
|
||||
#define FFMIN3(a,b,c) FFMIN(FFMIN(a,b),c)
|
||||
|
||||
#define FFSWAP(type,a,b) do{type SWAP_tmp= b; b= a; a= SWAP_tmp;}while(0)
|
||||
#define FF_ARRAY_ELEMS(a) (sizeof(a) / sizeof((a)[0]))
|
||||
#define FFALIGN(x, a) (((x)+(a)-1)&~((a)-1))
|
||||
|
||||
/* misc math functions */
|
||||
|
||||
/**
|
||||
* Reverse the order of the bits of an 8-bits unsigned integer.
|
||||
*/
|
||||
#if FF_API_AV_REVERSE
|
||||
extern attribute_deprecated const uint8_t av_reverse[256];
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_AV_CONFIG_H
|
||||
# include "config.h"
|
||||
# include "intmath.h"
|
||||
#endif
|
||||
|
||||
/* Pull in unguarded fallback defines at the end of this file. */
|
||||
#include "common.h"
|
||||
|
||||
#ifndef av_log2
|
||||
av_const int av_log2(unsigned v);
|
||||
#endif
|
||||
|
||||
#ifndef av_log2_16bit
|
||||
av_const int av_log2_16bit(unsigned v);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Clip a signed integer value into the amin-amax range.
|
||||
* @param a value to clip
|
||||
* @param amin minimum value of the clip range
|
||||
* @param amax maximum value of the clip range
|
||||
* @return clipped value
|
||||
*/
|
||||
static av_always_inline av_const int av_clip_c(int a, int amin, int amax)
|
||||
{
|
||||
#if defined(HAVE_AV_CONFIG_H) && defined(ASSERT_LEVEL) && ASSERT_LEVEL >= 2
|
||||
if (amin > amax) abort();
|
||||
#endif
|
||||
if (a < amin) return amin;
|
||||
else if (a > amax) return amax;
|
||||
else return a;
|
||||
}
|
||||
|
||||
/**
|
||||
* Clip a signed 64bit integer value into the amin-amax range.
|
||||
* @param a value to clip
|
||||
* @param amin minimum value of the clip range
|
||||
* @param amax maximum value of the clip range
|
||||
* @return clipped value
|
||||
*/
|
||||
static av_always_inline av_const int64_t av_clip64_c(int64_t a, int64_t amin, int64_t amax)
|
||||
{
|
||||
#if defined(HAVE_AV_CONFIG_H) && defined(ASSERT_LEVEL) && ASSERT_LEVEL >= 2
|
||||
if (amin > amax) abort();
|
||||
#endif
|
||||
if (a < amin) return amin;
|
||||
else if (a > amax) return amax;
|
||||
else return a;
|
||||
}
|
||||
|
||||
/**
|
||||
* Clip a signed integer value into the 0-255 range.
|
||||
* @param a value to clip
|
||||
* @return clipped value
|
||||
*/
|
||||
static av_always_inline av_const uint8_t av_clip_uint8_c(int a)
|
||||
{
|
||||
if (a&(~0xFF)) return (-a)>>31;
|
||||
else return a;
|
||||
}
|
||||
|
||||
/**
|
||||
* Clip a signed integer value into the -128,127 range.
|
||||
* @param a value to clip
|
||||
* @return clipped value
|
||||
*/
|
||||
static av_always_inline av_const int8_t av_clip_int8_c(int a)
|
||||
{
|
||||
if ((a+0x80) & ~0xFF) return (a>>31) ^ 0x7F;
|
||||
else return a;
|
||||
}
|
||||
|
||||
/**
|
||||
* Clip a signed integer value into the 0-65535 range.
|
||||
* @param a value to clip
|
||||
* @return clipped value
|
||||
*/
|
||||
static av_always_inline av_const uint16_t av_clip_uint16_c(int a)
|
||||
{
|
||||
if (a&(~0xFFFF)) return (-a)>>31;
|
||||
else return a;
|
||||
}
|
||||
|
||||
/**
|
||||
* Clip a signed integer value into the -32768,32767 range.
|
||||
* @param a value to clip
|
||||
* @return clipped value
|
||||
*/
|
||||
static av_always_inline av_const int16_t av_clip_int16_c(int a)
|
||||
{
|
||||
if ((a+0x8000) & ~0xFFFF) return (a>>31) ^ 0x7FFF;
|
||||
else return a;
|
||||
}
|
||||
|
||||
/**
|
||||
* Clip a signed 64-bit integer value into the -2147483648,2147483647 range.
|
||||
* @param a value to clip
|
||||
* @return clipped value
|
||||
*/
|
||||
static av_always_inline av_const int32_t av_clipl_int32_c(int64_t a)
|
||||
{
|
||||
if ((a+0x80000000u) & ~UINT64_C(0xFFFFFFFF)) return (a>>63) ^ 0x7FFFFFFF;
|
||||
else return (int32_t)a;
|
||||
}
|
||||
|
||||
/**
|
||||
* Clip a signed integer to an unsigned power of two range.
|
||||
* @param a value to clip
|
||||
* @param p bit position to clip at
|
||||
* @return clipped value
|
||||
*/
|
||||
static av_always_inline av_const unsigned av_clip_uintp2_c(int a, int p)
|
||||
{
|
||||
if (a & ~((1<<p) - 1)) return -a >> 31 & ((1<<p) - 1);
|
||||
else return a;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add two signed 32-bit values with saturation.
|
||||
*
|
||||
* @param a one value
|
||||
* @param b another value
|
||||
* @return sum with signed saturation
|
||||
*/
|
||||
static av_always_inline int av_sat_add32_c(int a, int b)
|
||||
{
|
||||
return av_clipl_int32((int64_t)a + b);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a doubled value to another value with saturation at both stages.
|
||||
*
|
||||
* @param a first value
|
||||
* @param b value doubled and added to a
|
||||
* @return sum with signed saturation
|
||||
*/
|
||||
static av_always_inline int av_sat_dadd32_c(int a, int b)
|
||||
{
|
||||
return av_sat_add32(a, av_sat_add32(b, b));
|
||||
}
|
||||
|
||||
/**
|
||||
* Clip a float value into the amin-amax range.
|
||||
* @param a value to clip
|
||||
* @param amin minimum value of the clip range
|
||||
* @param amax maximum value of the clip range
|
||||
* @return clipped value
|
||||
*/
|
||||
static av_always_inline av_const float av_clipf_c(float a, float amin, float amax)
|
||||
{
|
||||
#if defined(HAVE_AV_CONFIG_H) && defined(ASSERT_LEVEL) && ASSERT_LEVEL >= 2
|
||||
if (amin > amax) abort();
|
||||
#endif
|
||||
if (a < amin) return amin;
|
||||
else if (a > amax) return amax;
|
||||
else return a;
|
||||
}
|
||||
|
||||
/**
|
||||
* Clip a double value into the amin-amax range.
|
||||
* @param a value to clip
|
||||
* @param amin minimum value of the clip range
|
||||
* @param amax maximum value of the clip range
|
||||
* @return clipped value
|
||||
*/
|
||||
static av_always_inline av_const double av_clipd_c(double a, double amin, double amax)
|
||||
{
|
||||
#if defined(HAVE_AV_CONFIG_H) && defined(ASSERT_LEVEL) && ASSERT_LEVEL >= 2
|
||||
if (amin > amax) abort();
|
||||
#endif
|
||||
if (a < amin) return amin;
|
||||
else if (a > amax) return amax;
|
||||
else return a;
|
||||
}
|
||||
|
||||
/** Compute ceil(log2(x)).
|
||||
* @param x value used to compute ceil(log2(x))
|
||||
* @return computed ceiling of log2(x)
|
||||
*/
|
||||
static av_always_inline av_const int av_ceil_log2_c(int x)
|
||||
{
|
||||
return av_log2((x - 1) << 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Count number of bits set to one in x
|
||||
* @param x value to count bits of
|
||||
* @return the number of bits set to one in x
|
||||
*/
|
||||
static av_always_inline av_const int av_popcount_c(uint32_t x)
|
||||
{
|
||||
x -= (x >> 1) & 0x55555555;
|
||||
x = (x & 0x33333333) + ((x >> 2) & 0x33333333);
|
||||
x = (x + (x >> 4)) & 0x0F0F0F0F;
|
||||
x += x >> 8;
|
||||
return (x + (x >> 16)) & 0x3F;
|
||||
}
|
||||
|
||||
/**
|
||||
* Count number of bits set to one in x
|
||||
* @param x value to count bits of
|
||||
* @return the number of bits set to one in x
|
||||
*/
|
||||
static av_always_inline av_const int av_popcount64_c(uint64_t x)
|
||||
{
|
||||
return av_popcount((uint32_t)x) + av_popcount(x >> 32);
|
||||
}
|
||||
|
||||
#define MKTAG(a,b,c,d) ((a) | ((b) << 8) | ((c) << 16) | ((unsigned)(d) << 24))
|
||||
#define MKBETAG(a,b,c,d) ((d) | ((c) << 8) | ((b) << 16) | ((unsigned)(a) << 24))
|
||||
|
||||
/**
|
||||
* Convert a UTF-8 character (up to 4 bytes) to its 32-bit UCS-4 encoded form.
|
||||
*
|
||||
* @param val Output value, must be an lvalue of type uint32_t.
|
||||
* @param GET_BYTE Expression reading one byte from the input.
|
||||
* Evaluated up to 7 times (4 for the currently
|
||||
* assigned Unicode range). With a memory buffer
|
||||
* input, this could be *ptr++.
|
||||
* @param ERROR Expression to be evaluated on invalid input,
|
||||
* typically a goto statement.
|
||||
*/
|
||||
#define GET_UTF8(val, GET_BYTE, ERROR)\
|
||||
val= GET_BYTE;\
|
||||
{\
|
||||
uint32_t top = (val & 128) >> 1;\
|
||||
if ((val & 0xc0) == 0x80 || val >= 0xFE)\
|
||||
ERROR\
|
||||
while (val & top) {\
|
||||
int tmp= GET_BYTE - 128;\
|
||||
if(tmp>>6)\
|
||||
ERROR\
|
||||
val= (val<<6) + tmp;\
|
||||
top <<= 5;\
|
||||
}\
|
||||
val &= (top << 1) - 1;\
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert a UTF-16 character (2 or 4 bytes) to its 32-bit UCS-4 encoded form.
|
||||
*
|
||||
* @param val Output value, must be an lvalue of type uint32_t.
|
||||
* @param GET_16BIT Expression returning two bytes of UTF-16 data converted
|
||||
* to native byte order. Evaluated one or two times.
|
||||
* @param ERROR Expression to be evaluated on invalid input,
|
||||
* typically a goto statement.
|
||||
*/
|
||||
#define GET_UTF16(val, GET_16BIT, ERROR)\
|
||||
val = GET_16BIT;\
|
||||
{\
|
||||
unsigned int hi = val - 0xD800;\
|
||||
if (hi < 0x800) {\
|
||||
val = GET_16BIT - 0xDC00;\
|
||||
if (val > 0x3FFU || hi > 0x3FFU)\
|
||||
ERROR\
|
||||
val += (hi<<10) + 0x10000;\
|
||||
}\
|
||||
}\
|
||||
|
||||
/**
|
||||
* @def PUT_UTF8(val, tmp, PUT_BYTE)
|
||||
* Convert a 32-bit Unicode character to its UTF-8 encoded form (up to 4 bytes long).
|
||||
* @param val is an input-only argument and should be of type uint32_t. It holds
|
||||
* a UCS-4 encoded Unicode character that is to be converted to UTF-8. If
|
||||
* val is given as a function it is executed only once.
|
||||
* @param tmp is a temporary variable and should be of type uint8_t. It
|
||||
* represents an intermediate value during conversion that is to be
|
||||
* output by PUT_BYTE.
|
||||
* @param PUT_BYTE writes the converted UTF-8 bytes to any proper destination.
|
||||
* It could be a function or a statement, and uses tmp as the input byte.
|
||||
* For example, PUT_BYTE could be "*output++ = tmp;" PUT_BYTE will be
|
||||
* executed up to 4 times for values in the valid UTF-8 range and up to
|
||||
* 7 times in the general case, depending on the length of the converted
|
||||
* Unicode character.
|
||||
*/
|
||||
#define PUT_UTF8(val, tmp, PUT_BYTE)\
|
||||
{\
|
||||
int bytes, shift;\
|
||||
uint32_t in = val;\
|
||||
if (in < 0x80) {\
|
||||
tmp = in;\
|
||||
PUT_BYTE\
|
||||
} else {\
|
||||
bytes = (av_log2(in) + 4) / 5;\
|
||||
shift = (bytes - 1) * 6;\
|
||||
tmp = (256 - (256 >> bytes)) | (in >> shift);\
|
||||
PUT_BYTE\
|
||||
while (shift >= 6) {\
|
||||
shift -= 6;\
|
||||
tmp = 0x80 | ((in >> shift) & 0x3f);\
|
||||
PUT_BYTE\
|
||||
}\
|
||||
}\
|
||||
}
|
||||
|
||||
/**
|
||||
* @def PUT_UTF16(val, tmp, PUT_16BIT)
|
||||
* Convert a 32-bit Unicode character to its UTF-16 encoded form (2 or 4 bytes).
|
||||
* @param val is an input-only argument and should be of type uint32_t. It holds
|
||||
* a UCS-4 encoded Unicode character that is to be converted to UTF-16. If
|
||||
* val is given as a function it is executed only once.
|
||||
* @param tmp is a temporary variable and should be of type uint16_t. It
|
||||
* represents an intermediate value during conversion that is to be
|
||||
* output by PUT_16BIT.
|
||||
* @param PUT_16BIT writes the converted UTF-16 data to any proper destination
|
||||
* in desired endianness. It could be a function or a statement, and uses tmp
|
||||
* as the input byte. For example, PUT_BYTE could be "*output++ = tmp;"
|
||||
* PUT_BYTE will be executed 1 or 2 times depending on input character.
|
||||
*/
|
||||
#define PUT_UTF16(val, tmp, PUT_16BIT)\
|
||||
{\
|
||||
uint32_t in = val;\
|
||||
if (in < 0x10000) {\
|
||||
tmp = in;\
|
||||
PUT_16BIT\
|
||||
} else {\
|
||||
tmp = 0xD800 | ((in - 0x10000) >> 10);\
|
||||
PUT_16BIT\
|
||||
tmp = 0xDC00 | ((in - 0x10000) & 0x3FF);\
|
||||
PUT_16BIT\
|
||||
}\
|
||||
}\
|
||||
|
||||
|
||||
|
||||
#include "mem.h"
|
||||
|
||||
#ifdef HAVE_AV_CONFIG_H
|
||||
# include "internal.h"
|
||||
#endif /* HAVE_AV_CONFIG_H */
|
||||
|
||||
#endif /* AVUTIL_COMMON_H */
|
||||
|
||||
/*
|
||||
* The following definitions are outside the multiple inclusion guard
|
||||
* to ensure they are immediately available in intmath.h.
|
||||
*/
|
||||
|
||||
#ifndef av_ceil_log2
|
||||
# define av_ceil_log2 av_ceil_log2_c
|
||||
#endif
|
||||
#ifndef av_clip
|
||||
# define av_clip av_clip_c
|
||||
#endif
|
||||
#ifndef av_clip64
|
||||
# define av_clip64 av_clip64_c
|
||||
#endif
|
||||
#ifndef av_clip_uint8
|
||||
# define av_clip_uint8 av_clip_uint8_c
|
||||
#endif
|
||||
#ifndef av_clip_int8
|
||||
# define av_clip_int8 av_clip_int8_c
|
||||
#endif
|
||||
#ifndef av_clip_uint16
|
||||
# define av_clip_uint16 av_clip_uint16_c
|
||||
#endif
|
||||
#ifndef av_clip_int16
|
||||
# define av_clip_int16 av_clip_int16_c
|
||||
#endif
|
||||
#ifndef av_clipl_int32
|
||||
# define av_clipl_int32 av_clipl_int32_c
|
||||
#endif
|
||||
#ifndef av_clip_uintp2
|
||||
# define av_clip_uintp2 av_clip_uintp2_c
|
||||
#endif
|
||||
#ifndef av_sat_add32
|
||||
# define av_sat_add32 av_sat_add32_c
|
||||
#endif
|
||||
#ifndef av_sat_dadd32
|
||||
# define av_sat_dadd32 av_sat_dadd32_c
|
||||
#endif
|
||||
#ifndef av_clipf
|
||||
# define av_clipf av_clipf_c
|
||||
#endif
|
||||
#ifndef av_clipd
|
||||
# define av_clipd av_clipd_c
|
||||
#endif
|
||||
#ifndef av_popcount
|
||||
# define av_popcount av_popcount_c
|
||||
#endif
|
||||
#ifndef av_popcount64
|
||||
# define av_popcount64 av_popcount64_c
|
||||
#endif
|
||||
113
3rdparty/include/ffmpeg_/libavutil/cpu.h
vendored
113
3rdparty/include/ffmpeg_/libavutil/cpu.h
vendored
@@ -1,113 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2001, 2002 Fabrice Bellard
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef AVUTIL_CPU_H
|
||||
#define AVUTIL_CPU_H
|
||||
|
||||
#include "attributes.h"
|
||||
|
||||
#define AV_CPU_FLAG_FORCE 0x80000000 /* force usage of selected flags (OR) */
|
||||
|
||||
/* lower 16 bits - CPU features */
|
||||
#define AV_CPU_FLAG_MMX 0x0001 ///< standard MMX
|
||||
#define AV_CPU_FLAG_MMXEXT 0x0002 ///< SSE integer functions or AMD MMX ext
|
||||
#define AV_CPU_FLAG_MMX2 0x0002 ///< SSE integer functions or AMD MMX ext
|
||||
#define AV_CPU_FLAG_3DNOW 0x0004 ///< AMD 3DNOW
|
||||
#define AV_CPU_FLAG_SSE 0x0008 ///< SSE functions
|
||||
#define AV_CPU_FLAG_SSE2 0x0010 ///< PIV SSE2 functions
|
||||
#define AV_CPU_FLAG_SSE2SLOW 0x40000000 ///< SSE2 supported, but usually not faster
|
||||
#define AV_CPU_FLAG_3DNOWEXT 0x0020 ///< AMD 3DNowExt
|
||||
#define AV_CPU_FLAG_SSE3 0x0040 ///< Prescott SSE3 functions
|
||||
#define AV_CPU_FLAG_SSE3SLOW 0x20000000 ///< SSE3 supported, but usually not faster
|
||||
#define AV_CPU_FLAG_SSSE3 0x0080 ///< Conroe SSSE3 functions
|
||||
#define AV_CPU_FLAG_ATOM 0x10000000 ///< Atom processor, some SSSE3 instructions are slower
|
||||
#define AV_CPU_FLAG_SSE4 0x0100 ///< Penryn SSE4.1 functions
|
||||
#define AV_CPU_FLAG_SSE42 0x0200 ///< Nehalem SSE4.2 functions
|
||||
#define AV_CPU_FLAG_AVX 0x4000 ///< AVX functions: requires OS support even if YMM registers aren't used
|
||||
#define AV_CPU_FLAG_XOP 0x0400 ///< Bulldozer XOP functions
|
||||
#define AV_CPU_FLAG_FMA4 0x0800 ///< Bulldozer FMA4 functions
|
||||
// #if LIBAVUTIL_VERSION_MAJOR <52
|
||||
#define AV_CPU_FLAG_CMOV 0x1001000 ///< supports cmov instruction
|
||||
// #else
|
||||
// #define AV_CPU_FLAG_CMOV 0x1000 ///< supports cmov instruction
|
||||
// #endif
|
||||
|
||||
#define AV_CPU_FLAG_ALTIVEC 0x0001 ///< standard
|
||||
|
||||
#define AV_CPU_FLAG_ARMV5TE (1 << 0)
|
||||
#define AV_CPU_FLAG_ARMV6 (1 << 1)
|
||||
#define AV_CPU_FLAG_ARMV6T2 (1 << 2)
|
||||
#define AV_CPU_FLAG_VFP (1 << 3)
|
||||
#define AV_CPU_FLAG_VFPV3 (1 << 4)
|
||||
#define AV_CPU_FLAG_NEON (1 << 5)
|
||||
|
||||
/**
|
||||
* Return the flags which specify extensions supported by the CPU.
|
||||
* The returned value is affected by av_force_cpu_flags() if that was used
|
||||
* before. So av_get_cpu_flags() can easily be used in a application to
|
||||
* detect the enabled cpu flags.
|
||||
*/
|
||||
int av_get_cpu_flags(void);
|
||||
|
||||
/**
|
||||
* Disables cpu detection and forces the specified flags.
|
||||
* -1 is a special case that disables forcing of specific flags.
|
||||
*/
|
||||
void av_force_cpu_flags(int flags);
|
||||
|
||||
/**
|
||||
* Set a mask on flags returned by av_get_cpu_flags().
|
||||
* This function is mainly useful for testing.
|
||||
* Please use av_force_cpu_flags() and av_get_cpu_flags() instead which are more flexible
|
||||
*
|
||||
* @warning this function is not thread safe.
|
||||
*/
|
||||
attribute_deprecated void av_set_cpu_flags_mask(int mask);
|
||||
|
||||
/**
|
||||
* Parse CPU flags from a string.
|
||||
*
|
||||
* The returned flags contain the specified flags as well as related unspecified flags.
|
||||
*
|
||||
* This function exists only for compatibility with libav.
|
||||
* Please use av_parse_cpu_caps() when possible.
|
||||
* @return a combination of AV_CPU_* flags, negative on error.
|
||||
*/
|
||||
attribute_deprecated
|
||||
int av_parse_cpu_flags(const char *s);
|
||||
|
||||
/**
|
||||
* Parse CPU caps from a string and update the given AV_CPU_* flags based on that.
|
||||
*
|
||||
* @return negative on error.
|
||||
*/
|
||||
int av_parse_cpu_caps(unsigned *flags, const char *s);
|
||||
|
||||
/**
|
||||
* @return the number of logical CPU cores present.
|
||||
*/
|
||||
int av_cpu_count(void);
|
||||
|
||||
/* The following CPU-specific functions shall not be called directly. */
|
||||
int ff_get_cpu_flags_arm(void);
|
||||
int ff_get_cpu_flags_ppc(void);
|
||||
int ff_get_cpu_flags_x86(void);
|
||||
|
||||
#endif /* AVUTIL_CPU_H */
|
||||
84
3rdparty/include/ffmpeg_/libavutil/crc.h
vendored
84
3rdparty/include/ffmpeg_/libavutil/crc.h
vendored
@@ -1,84 +0,0 @@
|
||||
/*
|
||||
* copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at>
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef AVUTIL_CRC_H
|
||||
#define AVUTIL_CRC_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stddef.h>
|
||||
#include "attributes.h"
|
||||
|
||||
/**
|
||||
* @defgroup lavu_crc32 CRC32
|
||||
* @ingroup lavu_crypto
|
||||
* @{
|
||||
*/
|
||||
|
||||
typedef uint32_t AVCRC;
|
||||
|
||||
typedef enum {
|
||||
AV_CRC_8_ATM,
|
||||
AV_CRC_16_ANSI,
|
||||
AV_CRC_16_CCITT,
|
||||
AV_CRC_32_IEEE,
|
||||
AV_CRC_32_IEEE_LE, /*< reversed bitorder version of AV_CRC_32_IEEE */
|
||||
AV_CRC_MAX, /*< Not part of public API! Do not use outside libavutil. */
|
||||
}AVCRCId;
|
||||
|
||||
/**
|
||||
* Initialize a CRC table.
|
||||
* @param ctx must be an array of size sizeof(AVCRC)*257 or sizeof(AVCRC)*1024
|
||||
* @param le If 1, the lowest bit represents the coefficient for the highest
|
||||
* exponent of the corresponding polynomial (both for poly and
|
||||
* actual CRC).
|
||||
* If 0, you must swap the CRC parameter and the result of av_crc
|
||||
* if you need the standard representation (can be simplified in
|
||||
* most cases to e.g. bswap16):
|
||||
* av_bswap32(crc << (32-bits))
|
||||
* @param bits number of bits for the CRC
|
||||
* @param poly generator polynomial without the x**bits coefficient, in the
|
||||
* representation as specified by le
|
||||
* @param ctx_size size of ctx in bytes
|
||||
* @return <0 on failure
|
||||
*/
|
||||
int av_crc_init(AVCRC *ctx, int le, int bits, uint32_t poly, int ctx_size);
|
||||
|
||||
/**
|
||||
* Get an initialized standard CRC table.
|
||||
* @param crc_id ID of a standard CRC
|
||||
* @return a pointer to the CRC table or NULL on failure
|
||||
*/
|
||||
const AVCRC *av_crc_get_table(AVCRCId crc_id);
|
||||
|
||||
/**
|
||||
* Calculate the CRC of a block.
|
||||
* @param crc CRC of previous blocks if any or initial value for CRC
|
||||
* @return CRC updated with the data from the given block
|
||||
*
|
||||
* @see av_crc_init() "le" parameter
|
||||
*/
|
||||
uint32_t av_crc(const AVCRC *ctx, uint32_t crc,
|
||||
const uint8_t *buffer, size_t length) av_pure;
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
#endif /* AVUTIL_CRC_H */
|
||||
152
3rdparty/include/ffmpeg_/libavutil/dict.h
vendored
152
3rdparty/include/ffmpeg_/libavutil/dict.h
vendored
@@ -1,152 +0,0 @@
|
||||
/*
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Public dictionary API.
|
||||
* @deprecated
|
||||
* AVDictionary is provided for compatibility with libav. It is both in
|
||||
* implementation as well as API inefficient. It does not scale and is
|
||||
* extremely slow with large dictionaries.
|
||||
* It is recommended that new code uses our tree container from tree.c/h
|
||||
* where applicable, which uses AVL trees to achieve O(log n) performance.
|
||||
*/
|
||||
|
||||
#ifndef AVUTIL_DICT_H
|
||||
#define AVUTIL_DICT_H
|
||||
|
||||
/**
|
||||
* @addtogroup lavu_dict AVDictionary
|
||||
* @ingroup lavu_data
|
||||
*
|
||||
* @brief Simple key:value store
|
||||
*
|
||||
* @{
|
||||
* Dictionaries are used for storing key:value pairs. To create
|
||||
* an AVDictionary, simply pass an address of a NULL pointer to
|
||||
* av_dict_set(). NULL can be used as an empty dictionary wherever
|
||||
* a pointer to an AVDictionary is required.
|
||||
* Use av_dict_get() to retrieve an entry or iterate over all
|
||||
* entries and finally av_dict_free() to free the dictionary
|
||||
* and all its contents.
|
||||
*
|
||||
* @code
|
||||
* AVDictionary *d = NULL; // "create" an empty dictionary
|
||||
* av_dict_set(&d, "foo", "bar", 0); // add an entry
|
||||
*
|
||||
* char *k = av_strdup("key"); // if your strings are already allocated,
|
||||
* char *v = av_strdup("value"); // you can avoid copying them like this
|
||||
* av_dict_set(&d, k, v, AV_DICT_DONT_STRDUP_KEY | AV_DICT_DONT_STRDUP_VAL);
|
||||
*
|
||||
* AVDictionaryEntry *t = NULL;
|
||||
* while (t = av_dict_get(d, "", t, AV_DICT_IGNORE_SUFFIX)) {
|
||||
* <....> // iterate over all entries in d
|
||||
* }
|
||||
*
|
||||
* av_dict_free(&d);
|
||||
* @endcode
|
||||
*
|
||||
*/
|
||||
|
||||
#define AV_DICT_MATCH_CASE 1
|
||||
#define AV_DICT_IGNORE_SUFFIX 2
|
||||
#define AV_DICT_DONT_STRDUP_KEY 4 /**< Take ownership of a key that's been
|
||||
allocated with av_malloc() and children. */
|
||||
#define AV_DICT_DONT_STRDUP_VAL 8 /**< Take ownership of a value that's been
|
||||
allocated with av_malloc() and chilren. */
|
||||
#define AV_DICT_DONT_OVERWRITE 16 ///< Don't overwrite existing entries.
|
||||
#define AV_DICT_APPEND 32 /**< If the entry already exists, append to it. Note that no
|
||||
delimiter is added, the strings are simply concatenated. */
|
||||
|
||||
typedef struct AVDictionaryEntry {
|
||||
char *key;
|
||||
char *value;
|
||||
} AVDictionaryEntry;
|
||||
|
||||
typedef struct AVDictionary AVDictionary;
|
||||
|
||||
/**
|
||||
* Get a dictionary entry with matching key.
|
||||
*
|
||||
* @param prev Set to the previous matching element to find the next.
|
||||
* If set to NULL the first matching element is returned.
|
||||
* @param flags Allows case as well as suffix-insensitive comparisons.
|
||||
* @return Found entry or NULL, changing key or value leads to undefined behavior.
|
||||
*/
|
||||
AVDictionaryEntry *
|
||||
av_dict_get(AVDictionary *m, const char *key, const AVDictionaryEntry *prev, int flags);
|
||||
|
||||
/**
|
||||
* Get number of entries in dictionary.
|
||||
*
|
||||
* @param m dictionary
|
||||
* @return number of entries in dictionary
|
||||
*/
|
||||
int av_dict_count(const AVDictionary *m);
|
||||
|
||||
/**
|
||||
* Set the given entry in *pm, overwriting an existing entry.
|
||||
*
|
||||
* @param pm pointer to a pointer to a dictionary struct. If *pm is NULL
|
||||
* a dictionary struct is allocated and put in *pm.
|
||||
* @param key entry key to add to *pm (will be av_strduped depending on flags)
|
||||
* @param value entry value to add to *pm (will be av_strduped depending on flags).
|
||||
* Passing a NULL value will cause an existing entry to be deleted.
|
||||
* @return >= 0 on success otherwise an error code <0
|
||||
*/
|
||||
int av_dict_set(AVDictionary **pm, const char *key, const char *value, int flags);
|
||||
|
||||
/**
|
||||
* Parse the key/value pairs list and add to a dictionary.
|
||||
*
|
||||
* @param key_val_sep a 0-terminated list of characters used to separate
|
||||
* key from value
|
||||
* @param pairs_sep a 0-terminated list of characters used to separate
|
||||
* two pairs from each other
|
||||
* @param flags flags to use when adding to dictionary.
|
||||
* AV_DICT_DONT_STRDUP_KEY and AV_DICT_DONT_STRDUP_VAL
|
||||
* are ignored since the key/value tokens will always
|
||||
* be duplicated.
|
||||
* @return 0 on success, negative AVERROR code on failure
|
||||
*/
|
||||
int av_dict_parse_string(AVDictionary **pm, const char *str,
|
||||
const char *key_val_sep, const char *pairs_sep,
|
||||
int flags);
|
||||
|
||||
/**
|
||||
* Copy entries from one AVDictionary struct into another.
|
||||
* @param dst pointer to a pointer to a AVDictionary struct. If *dst is NULL,
|
||||
* this function will allocate a struct for you and put it in *dst
|
||||
* @param src pointer to source AVDictionary struct
|
||||
* @param flags flags to use when setting entries in *dst
|
||||
* @note metadata is read using the AV_DICT_IGNORE_SUFFIX flag
|
||||
*/
|
||||
void av_dict_copy(AVDictionary **dst, AVDictionary *src, int flags);
|
||||
|
||||
/**
|
||||
* Free all the memory allocated for an AVDictionary struct
|
||||
* and all keys and values.
|
||||
*/
|
||||
void av_dict_free(AVDictionary **m);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
#endif /* AVUTIL_DICT_H */
|
||||
117
3rdparty/include/ffmpeg_/libavutil/error.h
vendored
117
3rdparty/include/ffmpeg_/libavutil/error.h
vendored
@@ -1,117 +0,0 @@
|
||||
/*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file
|
||||
* error code definitions
|
||||
*/
|
||||
|
||||
#ifndef AVUTIL_ERROR_H
|
||||
#define AVUTIL_ERROR_H
|
||||
|
||||
#include <errno.h>
|
||||
#include <stddef.h>
|
||||
|
||||
/**
|
||||
* @addtogroup lavu_error
|
||||
*
|
||||
* @{
|
||||
*/
|
||||
|
||||
|
||||
/* error handling */
|
||||
#if EDOM > 0
|
||||
#define AVERROR(e) (-(e)) ///< Returns a negative error code from a POSIX error code, to return from library functions.
|
||||
#define AVUNERROR(e) (-(e)) ///< Returns a POSIX error code from a library function error return value.
|
||||
#else
|
||||
/* Some platforms have E* and errno already negated. */
|
||||
#define AVERROR(e) (e)
|
||||
#define AVUNERROR(e) (e)
|
||||
#endif
|
||||
|
||||
#define FFERRTAG(a, b, c, d) (-(int)MKTAG(a, b, c, d))
|
||||
|
||||
#define AVERROR_BSF_NOT_FOUND FFERRTAG(0xF8,'B','S','F') ///< Bitstream filter not found
|
||||
#define AVERROR_BUG FFERRTAG( 'B','U','G','!') ///< Internal bug, also see AVERROR_BUG2
|
||||
#define AVERROR_BUFFER_TOO_SMALL FFERRTAG( 'B','U','F','S') ///< Buffer too small
|
||||
#define AVERROR_DECODER_NOT_FOUND FFERRTAG(0xF8,'D','E','C') ///< Decoder not found
|
||||
#define AVERROR_DEMUXER_NOT_FOUND FFERRTAG(0xF8,'D','E','M') ///< Demuxer not found
|
||||
#define AVERROR_ENCODER_NOT_FOUND FFERRTAG(0xF8,'E','N','C') ///< Encoder not found
|
||||
#define AVERROR_EOF FFERRTAG( 'E','O','F',' ') ///< End of file
|
||||
#define AVERROR_EXIT FFERRTAG( 'E','X','I','T') ///< Immediate exit was requested; the called function should not be restarted
|
||||
#define AVERROR_EXTERNAL FFERRTAG( 'E','X','T',' ') ///< Generic error in an external library
|
||||
#define AVERROR_FILTER_NOT_FOUND FFERRTAG(0xF8,'F','I','L') ///< Filter not found
|
||||
#define AVERROR_INVALIDDATA FFERRTAG( 'I','N','D','A') ///< Invalid data found when processing input
|
||||
#define AVERROR_MUXER_NOT_FOUND FFERRTAG(0xF8,'M','U','X') ///< Muxer not found
|
||||
#define AVERROR_OPTION_NOT_FOUND FFERRTAG(0xF8,'O','P','T') ///< Option not found
|
||||
#define AVERROR_PATCHWELCOME FFERRTAG( 'P','A','W','E') ///< Not yet implemented in FFmpeg, patches welcome
|
||||
#define AVERROR_PROTOCOL_NOT_FOUND FFERRTAG(0xF8,'P','R','O') ///< Protocol not found
|
||||
|
||||
#define AVERROR_STREAM_NOT_FOUND FFERRTAG(0xF8,'S','T','R') ///< Stream not found
|
||||
/**
|
||||
* This is semantically identical to AVERROR_BUG
|
||||
* it has been introduced in Libav after our AVERROR_BUG and with a modified value.
|
||||
*/
|
||||
#define AVERROR_BUG2 FFERRTAG( 'B','U','G',' ')
|
||||
#define AVERROR_UNKNOWN FFERRTAG( 'U','N','K','N') ///< Unknown error, typically from an external library
|
||||
#define AVERROR_EXPERIMENTAL (-0x2bb2afa8) ///< Requested feature is flagged experimental. Set strict_std_compliance if you really want to use it.
|
||||
|
||||
#define AV_ERROR_MAX_STRING_SIZE 64
|
||||
|
||||
/**
|
||||
* Put a description of the AVERROR code errnum in errbuf.
|
||||
* In case of failure the global variable errno is set to indicate the
|
||||
* error. Even in case of failure av_strerror() will print a generic
|
||||
* error message indicating the errnum provided to errbuf.
|
||||
*
|
||||
* @param errnum error code to describe
|
||||
* @param errbuf buffer to which description is written
|
||||
* @param errbuf_size the size in bytes of errbuf
|
||||
* @return 0 on success, a negative value if a description for errnum
|
||||
* cannot be found
|
||||
*/
|
||||
int av_strerror(int errnum, char *errbuf, size_t errbuf_size);
|
||||
|
||||
/**
|
||||
* Fill the provided buffer with a string containing an error string
|
||||
* corresponding to the AVERROR code errnum.
|
||||
*
|
||||
* @param errbuf a buffer
|
||||
* @param errbuf_size size in bytes of errbuf
|
||||
* @param errnum error code to describe
|
||||
* @return the buffer in input, filled with the error description
|
||||
* @see av_strerror()
|
||||
*/
|
||||
static inline char *av_make_error_string(char *errbuf, size_t errbuf_size, int errnum)
|
||||
{
|
||||
av_strerror(errnum, errbuf, errbuf_size);
|
||||
return errbuf;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convenience macro, the return value should be used only directly in
|
||||
* function arguments but never stand-alone.
|
||||
*/
|
||||
#define av_err2str(errnum) \
|
||||
av_make_error_string((char[AV_ERROR_MAX_STRING_SIZE]){0}, AV_ERROR_MAX_STRING_SIZE, errnum)
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
#endif /* AVUTIL_ERROR_H */
|
||||
113
3rdparty/include/ffmpeg_/libavutil/eval.h
vendored
113
3rdparty/include/ffmpeg_/libavutil/eval.h
vendored
@@ -1,113 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2002 Michael Niedermayer <michaelni@gmx.at>
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file
|
||||
* simple arithmetic expression evaluator
|
||||
*/
|
||||
|
||||
#ifndef AVUTIL_EVAL_H
|
||||
#define AVUTIL_EVAL_H
|
||||
|
||||
#include "avutil.h"
|
||||
|
||||
typedef struct AVExpr AVExpr;
|
||||
|
||||
/**
|
||||
* Parse and evaluate an expression.
|
||||
* Note, this is significantly slower than av_expr_eval().
|
||||
*
|
||||
* @param res a pointer to a double where is put the result value of
|
||||
* the expression, or NAN in case of error
|
||||
* @param s expression as a zero terminated string, for example "1+2^3+5*5+sin(2/3)"
|
||||
* @param const_names NULL terminated array of zero terminated strings of constant identifiers, for example {"PI", "E", 0}
|
||||
* @param const_values a zero terminated array of values for the identifiers from const_names
|
||||
* @param func1_names NULL terminated array of zero terminated strings of funcs1 identifiers
|
||||
* @param funcs1 NULL terminated array of function pointers for functions which take 1 argument
|
||||
* @param func2_names NULL terminated array of zero terminated strings of funcs2 identifiers
|
||||
* @param funcs2 NULL terminated array of function pointers for functions which take 2 arguments
|
||||
* @param opaque a pointer which will be passed to all functions from funcs1 and funcs2
|
||||
* @param log_ctx parent logging context
|
||||
* @return 0 in case of success, a negative value corresponding to an
|
||||
* AVERROR code otherwise
|
||||
*/
|
||||
int av_expr_parse_and_eval(double *res, const char *s,
|
||||
const char * const *const_names, const double *const_values,
|
||||
const char * const *func1_names, double (* const *funcs1)(void *, double),
|
||||
const char * const *func2_names, double (* const *funcs2)(void *, double, double),
|
||||
void *opaque, int log_offset, void *log_ctx);
|
||||
|
||||
/**
|
||||
* Parse an expression.
|
||||
*
|
||||
* @param expr a pointer where is put an AVExpr containing the parsed
|
||||
* value in case of successful parsing, or NULL otherwise.
|
||||
* The pointed to AVExpr must be freed with av_expr_free() by the user
|
||||
* when it is not needed anymore.
|
||||
* @param s expression as a zero terminated string, for example "1+2^3+5*5+sin(2/3)"
|
||||
* @param const_names NULL terminated array of zero terminated strings of constant identifiers, for example {"PI", "E", 0}
|
||||
* @param func1_names NULL terminated array of zero terminated strings of funcs1 identifiers
|
||||
* @param funcs1 NULL terminated array of function pointers for functions which take 1 argument
|
||||
* @param func2_names NULL terminated array of zero terminated strings of funcs2 identifiers
|
||||
* @param funcs2 NULL terminated array of function pointers for functions which take 2 arguments
|
||||
* @param log_ctx parent logging context
|
||||
* @return 0 in case of success, a negative value corresponding to an
|
||||
* AVERROR code otherwise
|
||||
*/
|
||||
int av_expr_parse(AVExpr **expr, const char *s,
|
||||
const char * const *const_names,
|
||||
const char * const *func1_names, double (* const *funcs1)(void *, double),
|
||||
const char * const *func2_names, double (* const *funcs2)(void *, double, double),
|
||||
int log_offset, void *log_ctx);
|
||||
|
||||
/**
|
||||
* Evaluate a previously parsed expression.
|
||||
*
|
||||
* @param const_values a zero terminated array of values for the identifiers from av_expr_parse() const_names
|
||||
* @param opaque a pointer which will be passed to all functions from funcs1 and funcs2
|
||||
* @return the value of the expression
|
||||
*/
|
||||
double av_expr_eval(AVExpr *e, const double *const_values, void *opaque);
|
||||
|
||||
/**
|
||||
* Free a parsed expression previously created with av_expr_parse().
|
||||
*/
|
||||
void av_expr_free(AVExpr *e);
|
||||
|
||||
/**
|
||||
* Parse the string in numstr and return its value as a double. If
|
||||
* the string is empty, contains only whitespaces, or does not contain
|
||||
* an initial substring that has the expected syntax for a
|
||||
* floating-point number, no conversion is performed. In this case,
|
||||
* returns a value of zero and the value returned in tail is the value
|
||||
* of numstr.
|
||||
*
|
||||
* @param numstr a string representing a number, may contain one of
|
||||
* the International System number postfixes, for example 'K', 'M',
|
||||
* 'G'. If 'i' is appended after the postfix, powers of 2 are used
|
||||
* instead of powers of 10. The 'B' postfix multiplies the value for
|
||||
* 8, and can be appended after another postfix or used alone. This
|
||||
* allows using for example 'KB', 'MiB', 'G' and 'B' as postfix.
|
||||
* @param tail if non-NULL puts here the pointer to the char next
|
||||
* after the last parsed character
|
||||
*/
|
||||
double av_strtod(const char *numstr, char **tail);
|
||||
|
||||
#endif /* AVUTIL_EVAL_H */
|
||||
144
3rdparty/include/ffmpeg_/libavutil/fifo.h
vendored
144
3rdparty/include/ffmpeg_/libavutil/fifo.h
vendored
@@ -1,144 +0,0 @@
|
||||
/*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file
|
||||
* a very simple circular buffer FIFO implementation
|
||||
*/
|
||||
|
||||
#ifndef AVUTIL_FIFO_H
|
||||
#define AVUTIL_FIFO_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include "avutil.h"
|
||||
#include "attributes.h"
|
||||
|
||||
typedef struct AVFifoBuffer {
|
||||
uint8_t *buffer;
|
||||
uint8_t *rptr, *wptr, *end;
|
||||
uint32_t rndx, wndx;
|
||||
} AVFifoBuffer;
|
||||
|
||||
/**
|
||||
* Initialize an AVFifoBuffer.
|
||||
* @param size of FIFO
|
||||
* @return AVFifoBuffer or NULL in case of memory allocation failure
|
||||
*/
|
||||
AVFifoBuffer *av_fifo_alloc(unsigned int size);
|
||||
|
||||
/**
|
||||
* Free an AVFifoBuffer.
|
||||
* @param f AVFifoBuffer to free
|
||||
*/
|
||||
void av_fifo_free(AVFifoBuffer *f);
|
||||
|
||||
/**
|
||||
* Reset the AVFifoBuffer to the state right after av_fifo_alloc, in particular it is emptied.
|
||||
* @param f AVFifoBuffer to reset
|
||||
*/
|
||||
void av_fifo_reset(AVFifoBuffer *f);
|
||||
|
||||
/**
|
||||
* Return the amount of data in bytes in the AVFifoBuffer, that is the
|
||||
* amount of data you can read from it.
|
||||
* @param f AVFifoBuffer to read from
|
||||
* @return size
|
||||
*/
|
||||
int av_fifo_size(AVFifoBuffer *f);
|
||||
|
||||
/**
|
||||
* Return the amount of space in bytes in the AVFifoBuffer, that is the
|
||||
* amount of data you can write into it.
|
||||
* @param f AVFifoBuffer to write into
|
||||
* @return size
|
||||
*/
|
||||
int av_fifo_space(AVFifoBuffer *f);
|
||||
|
||||
/**
|
||||
* Feed data from an AVFifoBuffer to a user-supplied callback.
|
||||
* @param f AVFifoBuffer to read from
|
||||
* @param buf_size number of bytes to read
|
||||
* @param func generic read function
|
||||
* @param dest data destination
|
||||
*/
|
||||
int av_fifo_generic_read(AVFifoBuffer *f, void *dest, int buf_size, void (*func)(void*, void*, int));
|
||||
|
||||
/**
|
||||
* Feed data from a user-supplied callback to an AVFifoBuffer.
|
||||
* @param f AVFifoBuffer to write to
|
||||
* @param src data source; non-const since it may be used as a
|
||||
* modifiable context by the function defined in func
|
||||
* @param size number of bytes to write
|
||||
* @param func generic write function; the first parameter is src,
|
||||
* the second is dest_buf, the third is dest_buf_size.
|
||||
* func must return the number of bytes written to dest_buf, or <= 0 to
|
||||
* indicate no more data available to write.
|
||||
* If func is NULL, src is interpreted as a simple byte array for source data.
|
||||
* @return the number of bytes written to the FIFO
|
||||
*/
|
||||
int av_fifo_generic_write(AVFifoBuffer *f, void *src, int size, int (*func)(void*, void*, int));
|
||||
|
||||
/**
|
||||
* Resize an AVFifoBuffer.
|
||||
* In case of reallocation failure, the old FIFO is kept unchanged.
|
||||
*
|
||||
* @param f AVFifoBuffer to resize
|
||||
* @param size new AVFifoBuffer size in bytes
|
||||
* @return <0 for failure, >=0 otherwise
|
||||
*/
|
||||
int av_fifo_realloc2(AVFifoBuffer *f, unsigned int size);
|
||||
|
||||
/**
|
||||
* Enlarge an AVFifoBuffer.
|
||||
* In case of reallocation failure, the old FIFO is kept unchanged.
|
||||
* The new fifo size may be larger than the requested size.
|
||||
*
|
||||
* @param f AVFifoBuffer to resize
|
||||
* @param additional_space the amount of space in bytes to allocate in addition to av_fifo_size()
|
||||
* @return <0 for failure, >=0 otherwise
|
||||
*/
|
||||
int av_fifo_grow(AVFifoBuffer *f, unsigned int additional_space);
|
||||
|
||||
/**
|
||||
* Read and discard the specified amount of data from an AVFifoBuffer.
|
||||
* @param f AVFifoBuffer to read from
|
||||
* @param size amount of data to read in bytes
|
||||
*/
|
||||
void av_fifo_drain(AVFifoBuffer *f, int size);
|
||||
|
||||
/**
|
||||
* Return a pointer to the data stored in a FIFO buffer at a certain offset.
|
||||
* The FIFO buffer is not modified.
|
||||
*
|
||||
* @param f AVFifoBuffer to peek at, f must be non-NULL
|
||||
* @param offs an offset in bytes, its absolute value must be less
|
||||
* than the used buffer size or the returned pointer will
|
||||
* point outside to the buffer data.
|
||||
* The used buffer size can be checked with av_fifo_size().
|
||||
*/
|
||||
static inline uint8_t *av_fifo_peek2(const AVFifoBuffer *f, int offs)
|
||||
{
|
||||
uint8_t *ptr = f->rptr + offs;
|
||||
if (ptr >= f->end)
|
||||
ptr = f->buffer + (ptr - f->end);
|
||||
else if (ptr < f->buffer)
|
||||
ptr = f->end - (f->buffer - ptr);
|
||||
return ptr;
|
||||
}
|
||||
|
||||
#endif /* AVUTIL_FIFO_H */
|
||||
66
3rdparty/include/ffmpeg_/libavutil/file.h
vendored
66
3rdparty/include/ffmpeg_/libavutil/file.h
vendored
@@ -1,66 +0,0 @@
|
||||
/*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef AVUTIL_FILE_H
|
||||
#define AVUTIL_FILE_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "avutil.h"
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Misc file utilities.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Read the file with name filename, and put its content in a newly
|
||||
* allocated buffer or map it with mmap() when available.
|
||||
* In case of success set *bufptr to the read or mmapped buffer, and
|
||||
* *size to the size in bytes of the buffer in *bufptr.
|
||||
* The returned buffer must be released with av_file_unmap().
|
||||
*
|
||||
* @param log_offset loglevel offset used for logging
|
||||
* @param log_ctx context used for logging
|
||||
* @return a non negative number in case of success, a negative value
|
||||
* corresponding to an AVERROR error code in case of failure
|
||||
*/
|
||||
int av_file_map(const char *filename, uint8_t **bufptr, size_t *size,
|
||||
int log_offset, void *log_ctx);
|
||||
|
||||
/**
|
||||
* Unmap or free the buffer bufptr created by av_file_map().
|
||||
*
|
||||
* @param size size in bytes of bufptr, must be the same as returned
|
||||
* by av_file_map()
|
||||
*/
|
||||
void av_file_unmap(uint8_t *bufptr, size_t size);
|
||||
|
||||
/**
|
||||
* Wrapper to work around the lack of mkstemp() on mingw.
|
||||
* Also, tries to create file in /tmp first, if possible.
|
||||
* *prefix can be a character constant; *filename will be allocated internally.
|
||||
* @return file descriptor of opened file (or -1 on error)
|
||||
* and opened file name in **filename.
|
||||
* @note On very old libcs it is necessary to set a secure umask before
|
||||
* calling this, av_tempfile() can't call umask itself as it is used in
|
||||
* libraries and could interfere with the calling application.
|
||||
*/
|
||||
int av_tempfile(const char *prefix, char **filename, int log_offset, void *log_ctx);
|
||||
|
||||
#endif /* AVUTIL_FILE_H */
|
||||
607
3rdparty/include/ffmpeg_/libavutil/frame.h
vendored
607
3rdparty/include/ffmpeg_/libavutil/frame.h
vendored
@@ -1,607 +0,0 @@
|
||||
/*
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef AVUTIL_FRAME_H
|
||||
#define AVUTIL_FRAME_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "libavcodec/version.h"
|
||||
|
||||
#include "avutil.h"
|
||||
#include "buffer.h"
|
||||
#include "dict.h"
|
||||
#include "rational.h"
|
||||
#include "samplefmt.h"
|
||||
|
||||
enum AVFrameSideDataType {
|
||||
/**
|
||||
* The data is the AVPanScan struct defined in libavcodec.
|
||||
*/
|
||||
AV_FRAME_DATA_PANSCAN,
|
||||
};
|
||||
|
||||
typedef struct AVFrameSideData {
|
||||
enum AVFrameSideDataType type;
|
||||
uint8_t *data;
|
||||
int size;
|
||||
AVDictionary *metadata;
|
||||
} AVFrameSideData;
|
||||
|
||||
/**
|
||||
* This structure describes decoded (raw) audio or video data.
|
||||
*
|
||||
* AVFrame must be allocated using av_frame_alloc(). Note that this only
|
||||
* allocates the AVFrame itself, the buffers for the data must be managed
|
||||
* through other means (see below).
|
||||
* AVFrame must be freed with av_frame_free().
|
||||
*
|
||||
* AVFrame is typically allocated once and then reused multiple times to hold
|
||||
* different data (e.g. a single AVFrame to hold frames received from a
|
||||
* decoder). In such a case, av_frame_unref() will free any references held by
|
||||
* the frame and reset it to its original clean state before it
|
||||
* is reused again.
|
||||
*
|
||||
* The data described by an AVFrame is usually reference counted through the
|
||||
* AVBuffer API. The underlying buffer references are stored in AVFrame.buf /
|
||||
* AVFrame.extended_buf. An AVFrame is considered to be reference counted if at
|
||||
* least one reference is set, i.e. if AVFrame.buf[0] != NULL. In such a case,
|
||||
* every single data plane must be contained in one of the buffers in
|
||||
* AVFrame.buf or AVFrame.extended_buf.
|
||||
* There may be a single buffer for all the data, or one separate buffer for
|
||||
* each plane, or anything in between.
|
||||
*
|
||||
* sizeof(AVFrame) is not a part of the public ABI, so new fields may be added
|
||||
* to the end with a minor bump.
|
||||
* Similarly fields that are marked as to be only accessed by
|
||||
* av_opt_ptr() can be reordered. This allows 2 forks to add fields
|
||||
* without breaking compatibility with each other.
|
||||
*/
|
||||
typedef struct AVFrame {
|
||||
#define AV_NUM_DATA_POINTERS 8
|
||||
/**
|
||||
* pointer to the picture/channel planes.
|
||||
* This might be different from the first allocated byte
|
||||
*
|
||||
* Some decoders access areas outside 0,0 - width,height, please
|
||||
* see avcodec_align_dimensions2(). Some filters and swscale can read
|
||||
* up to 16 bytes beyond the planes, if these filters are to be used,
|
||||
* then 16 extra bytes must be allocated.
|
||||
*/
|
||||
uint8_t *data[AV_NUM_DATA_POINTERS];
|
||||
|
||||
/**
|
||||
* For video, size in bytes of each picture line.
|
||||
* For audio, size in bytes of each plane.
|
||||
*
|
||||
* For audio, only linesize[0] may be set. For planar audio, each channel
|
||||
* plane must be the same size.
|
||||
*
|
||||
* For video the linesizes should be multiplies of the CPUs alignment
|
||||
* preference, this is 16 or 32 for modern desktop CPUs.
|
||||
* Some code requires such alignment other code can be slower without
|
||||
* correct alignment, for yet other it makes no difference.
|
||||
*/
|
||||
int linesize[AV_NUM_DATA_POINTERS];
|
||||
|
||||
/**
|
||||
* pointers to the data planes/channels.
|
||||
*
|
||||
* For video, this should simply point to data[].
|
||||
*
|
||||
* For planar audio, each channel has a separate data pointer, and
|
||||
* linesize[0] contains the size of each channel buffer.
|
||||
* For packed audio, there is just one data pointer, and linesize[0]
|
||||
* contains the total size of the buffer for all channels.
|
||||
*
|
||||
* Note: Both data and extended_data should always be set in a valid frame,
|
||||
* but for planar audio with more channels that can fit in data,
|
||||
* extended_data must be used in order to access all channels.
|
||||
*/
|
||||
uint8_t **extended_data;
|
||||
|
||||
/**
|
||||
* width and height of the video frame
|
||||
*/
|
||||
int width, height;
|
||||
|
||||
/**
|
||||
* number of audio samples (per channel) described by this frame
|
||||
*/
|
||||
int nb_samples;
|
||||
|
||||
/**
|
||||
* format of the frame, -1 if unknown or unset
|
||||
* Values correspond to enum AVPixelFormat for video frames,
|
||||
* enum AVSampleFormat for audio)
|
||||
*/
|
||||
int format;
|
||||
|
||||
/**
|
||||
* 1 -> keyframe, 0-> not
|
||||
*/
|
||||
int key_frame;
|
||||
|
||||
/**
|
||||
* Picture type of the frame.
|
||||
*/
|
||||
enum AVPictureType pict_type;
|
||||
|
||||
#if FF_API_AVFRAME_LAVC
|
||||
attribute_deprecated
|
||||
uint8_t *base[AV_NUM_DATA_POINTERS];
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Sample aspect ratio for the video frame, 0/1 if unknown/unspecified.
|
||||
*/
|
||||
AVRational sample_aspect_ratio;
|
||||
|
||||
/**
|
||||
* Presentation timestamp in time_base units (time when frame should be shown to user).
|
||||
*/
|
||||
int64_t pts;
|
||||
|
||||
/**
|
||||
* PTS copied from the AVPacket that was decoded to produce this frame.
|
||||
*/
|
||||
int64_t pkt_pts;
|
||||
|
||||
/**
|
||||
* DTS copied from the AVPacket that triggered returning this frame. (if frame threading isnt used)
|
||||
* This is also the Presentation time of this AVFrame calculated from
|
||||
* only AVPacket.dts values without pts values.
|
||||
*/
|
||||
int64_t pkt_dts;
|
||||
|
||||
/**
|
||||
* picture number in bitstream order
|
||||
*/
|
||||
int coded_picture_number;
|
||||
/**
|
||||
* picture number in display order
|
||||
*/
|
||||
int display_picture_number;
|
||||
|
||||
/**
|
||||
* quality (between 1 (good) and FF_LAMBDA_MAX (bad))
|
||||
*/
|
||||
int quality;
|
||||
|
||||
#if FF_API_AVFRAME_LAVC
|
||||
attribute_deprecated
|
||||
int reference;
|
||||
|
||||
/**
|
||||
* QP table
|
||||
*/
|
||||
attribute_deprecated
|
||||
int8_t *qscale_table;
|
||||
/**
|
||||
* QP store stride
|
||||
*/
|
||||
attribute_deprecated
|
||||
int qstride;
|
||||
|
||||
attribute_deprecated
|
||||
int qscale_type;
|
||||
|
||||
/**
|
||||
* mbskip_table[mb]>=1 if MB didn't change
|
||||
* stride= mb_width = (width+15)>>4
|
||||
*/
|
||||
attribute_deprecated
|
||||
uint8_t *mbskip_table;
|
||||
|
||||
/**
|
||||
* motion vector table
|
||||
* @code
|
||||
* example:
|
||||
* int mv_sample_log2= 4 - motion_subsample_log2;
|
||||
* int mb_width= (width+15)>>4;
|
||||
* int mv_stride= (mb_width << mv_sample_log2) + 1;
|
||||
* motion_val[direction][x + y*mv_stride][0->mv_x, 1->mv_y];
|
||||
* @endcode
|
||||
*/
|
||||
attribute_deprecated
|
||||
int16_t (*motion_val[2])[2];
|
||||
|
||||
/**
|
||||
* macroblock type table
|
||||
* mb_type_base + mb_width + 2
|
||||
*/
|
||||
attribute_deprecated
|
||||
uint32_t *mb_type;
|
||||
|
||||
/**
|
||||
* DCT coefficients
|
||||
*/
|
||||
attribute_deprecated
|
||||
short *dct_coeff;
|
||||
|
||||
/**
|
||||
* motion reference frame index
|
||||
* the order in which these are stored can depend on the codec.
|
||||
*/
|
||||
attribute_deprecated
|
||||
int8_t *ref_index[2];
|
||||
#endif
|
||||
|
||||
/**
|
||||
* for some private data of the user
|
||||
*/
|
||||
void *opaque;
|
||||
|
||||
/**
|
||||
* error
|
||||
*/
|
||||
uint64_t error[AV_NUM_DATA_POINTERS];
|
||||
|
||||
#if FF_API_AVFRAME_LAVC
|
||||
attribute_deprecated
|
||||
int type;
|
||||
#endif
|
||||
|
||||
/**
|
||||
* When decoding, this signals how much the picture must be delayed.
|
||||
* extra_delay = repeat_pict / (2*fps)
|
||||
*/
|
||||
int repeat_pict;
|
||||
|
||||
/**
|
||||
* The content of the picture is interlaced.
|
||||
*/
|
||||
int interlaced_frame;
|
||||
|
||||
/**
|
||||
* If the content is interlaced, is top field displayed first.
|
||||
*/
|
||||
int top_field_first;
|
||||
|
||||
/**
|
||||
* Tell user application that palette has changed from previous frame.
|
||||
*/
|
||||
int palette_has_changed;
|
||||
|
||||
#if FF_API_AVFRAME_LAVC
|
||||
attribute_deprecated
|
||||
int buffer_hints;
|
||||
|
||||
/**
|
||||
* Pan scan.
|
||||
*/
|
||||
attribute_deprecated
|
||||
struct AVPanScan *pan_scan;
|
||||
#endif
|
||||
|
||||
/**
|
||||
* reordered opaque 64bit (generally an integer or a double precision float
|
||||
* PTS but can be anything).
|
||||
* The user sets AVCodecContext.reordered_opaque to represent the input at
|
||||
* that time,
|
||||
* the decoder reorders values as needed and sets AVFrame.reordered_opaque
|
||||
* to exactly one of the values provided by the user through AVCodecContext.reordered_opaque
|
||||
* @deprecated in favor of pkt_pts
|
||||
*/
|
||||
int64_t reordered_opaque;
|
||||
|
||||
#if FF_API_AVFRAME_LAVC
|
||||
/**
|
||||
* @deprecated this field is unused
|
||||
*/
|
||||
attribute_deprecated void *hwaccel_picture_private;
|
||||
|
||||
attribute_deprecated
|
||||
struct AVCodecContext *owner;
|
||||
attribute_deprecated
|
||||
void *thread_opaque;
|
||||
|
||||
/**
|
||||
* log2 of the size of the block which a single vector in motion_val represents:
|
||||
* (4->16x16, 3->8x8, 2-> 4x4, 1-> 2x2)
|
||||
*/
|
||||
attribute_deprecated
|
||||
uint8_t motion_subsample_log2;
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Sample rate of the audio data.
|
||||
*/
|
||||
int sample_rate;
|
||||
|
||||
/**
|
||||
* Channel layout of the audio data.
|
||||
*/
|
||||
uint64_t channel_layout;
|
||||
|
||||
/**
|
||||
* AVBuffer references backing the data for this frame. If all elements of
|
||||
* this array are NULL, then this frame is not reference counted.
|
||||
*
|
||||
* There may be at most one AVBuffer per data plane, so for video this array
|
||||
* always contains all the references. For planar audio with more than
|
||||
* AV_NUM_DATA_POINTERS channels, there may be more buffers than can fit in
|
||||
* this array. Then the extra AVBufferRef pointers are stored in the
|
||||
* extended_buf array.
|
||||
*/
|
||||
AVBufferRef *buf[AV_NUM_DATA_POINTERS];
|
||||
|
||||
/**
|
||||
* For planar audio which requires more than AV_NUM_DATA_POINTERS
|
||||
* AVBufferRef pointers, this array will hold all the references which
|
||||
* cannot fit into AVFrame.buf.
|
||||
*
|
||||
* Note that this is different from AVFrame.extended_data, which always
|
||||
* contains all the pointers. This array only contains the extra pointers,
|
||||
* which cannot fit into AVFrame.buf.
|
||||
*
|
||||
* This array is always allocated using av_malloc() by whoever constructs
|
||||
* the frame. It is freed in av_frame_unref().
|
||||
*/
|
||||
AVBufferRef **extended_buf;
|
||||
/**
|
||||
* Number of elements in extended_buf.
|
||||
*/
|
||||
int nb_extended_buf;
|
||||
|
||||
AVFrameSideData **side_data;
|
||||
int nb_side_data;
|
||||
|
||||
/**
|
||||
* frame timestamp estimated using various heuristics, in stream time base
|
||||
* Code outside libavcodec should access this field using:
|
||||
* av_frame_get_best_effort_timestamp(frame)
|
||||
* - encoding: unused
|
||||
* - decoding: set by libavcodec, read by user.
|
||||
*/
|
||||
int64_t best_effort_timestamp;
|
||||
|
||||
/**
|
||||
* reordered pos from the last AVPacket that has been input into the decoder
|
||||
* Code outside libavcodec should access this field using:
|
||||
* av_frame_get_pkt_pos(frame)
|
||||
* - encoding: unused
|
||||
* - decoding: Read by user.
|
||||
*/
|
||||
int64_t pkt_pos;
|
||||
|
||||
/**
|
||||
* duration of the corresponding packet, expressed in
|
||||
* AVStream->time_base units, 0 if unknown.
|
||||
* Code outside libavcodec should access this field using:
|
||||
* av_frame_get_pkt_duration(frame)
|
||||
* - encoding: unused
|
||||
* - decoding: Read by user.
|
||||
*/
|
||||
int64_t pkt_duration;
|
||||
|
||||
/**
|
||||
* metadata.
|
||||
* Code outside libavcodec should access this field using:
|
||||
* av_frame_get_metadata(frame)
|
||||
* - encoding: Set by user.
|
||||
* - decoding: Set by libavcodec.
|
||||
*/
|
||||
AVDictionary *metadata;
|
||||
|
||||
/**
|
||||
* decode error flags of the frame, set to a combination of
|
||||
* FF_DECODE_ERROR_xxx flags if the decoder produced a frame, but there
|
||||
* were errors during the decoding.
|
||||
* Code outside libavcodec should access this field using:
|
||||
* av_frame_get_decode_error_flags(frame)
|
||||
* - encoding: unused
|
||||
* - decoding: set by libavcodec, read by user.
|
||||
*/
|
||||
int decode_error_flags;
|
||||
#define FF_DECODE_ERROR_INVALID_BITSTREAM 1
|
||||
#define FF_DECODE_ERROR_MISSING_REFERENCE 2
|
||||
|
||||
/**
|
||||
* number of audio channels, only used for audio.
|
||||
* Code outside libavcodec should access this field using:
|
||||
* av_frame_get_channels(frame)
|
||||
* - encoding: unused
|
||||
* - decoding: Read by user.
|
||||
*/
|
||||
int channels;
|
||||
|
||||
/**
|
||||
* size of the corresponding packet containing the compressed
|
||||
* frame. It must be accessed using av_frame_get_pkt_size() and
|
||||
* av_frame_set_pkt_size().
|
||||
* It is set to a negative value if unknown.
|
||||
* - encoding: unused
|
||||
* - decoding: set by libavcodec, read by user.
|
||||
*/
|
||||
int pkt_size;
|
||||
|
||||
/**
|
||||
* Not to be accessed directly from outside libavutil
|
||||
*/
|
||||
AVBufferRef *qp_table_buf;
|
||||
} AVFrame;
|
||||
|
||||
/**
|
||||
* Accessors for some AVFrame fields.
|
||||
* The position of these field in the structure is not part of the ABI,
|
||||
* they should not be accessed directly outside libavcodec.
|
||||
*/
|
||||
int64_t av_frame_get_best_effort_timestamp(const AVFrame *frame);
|
||||
void av_frame_set_best_effort_timestamp(AVFrame *frame, int64_t val);
|
||||
int64_t av_frame_get_pkt_duration (const AVFrame *frame);
|
||||
void av_frame_set_pkt_duration (AVFrame *frame, int64_t val);
|
||||
int64_t av_frame_get_pkt_pos (const AVFrame *frame);
|
||||
void av_frame_set_pkt_pos (AVFrame *frame, int64_t val);
|
||||
int64_t av_frame_get_channel_layout (const AVFrame *frame);
|
||||
void av_frame_set_channel_layout (AVFrame *frame, int64_t val);
|
||||
int av_frame_get_channels (const AVFrame *frame);
|
||||
void av_frame_set_channels (AVFrame *frame, int val);
|
||||
int av_frame_get_sample_rate (const AVFrame *frame);
|
||||
void av_frame_set_sample_rate (AVFrame *frame, int val);
|
||||
AVDictionary *av_frame_get_metadata (const AVFrame *frame);
|
||||
void av_frame_set_metadata (AVFrame *frame, AVDictionary *val);
|
||||
int av_frame_get_decode_error_flags (const AVFrame *frame);
|
||||
void av_frame_set_decode_error_flags (AVFrame *frame, int val);
|
||||
int av_frame_get_pkt_size(const AVFrame *frame);
|
||||
void av_frame_set_pkt_size(AVFrame *frame, int val);
|
||||
AVDictionary **avpriv_frame_get_metadatap(AVFrame *frame);
|
||||
int8_t *av_frame_get_qp_table(AVFrame *f, int *stride, int *type);
|
||||
int av_frame_set_qp_table(AVFrame *f, AVBufferRef *buf, int stride, int type);
|
||||
|
||||
/**
|
||||
* Allocate an AVFrame and set its fields to default values. The resulting
|
||||
* struct must be freed using av_frame_free().
|
||||
*
|
||||
* @return An AVFrame filled with default values or NULL on failure.
|
||||
*
|
||||
* @note this only allocates the AVFrame itself, not the data buffers. Those
|
||||
* must be allocated through other means, e.g. with av_frame_get_buffer() or
|
||||
* manually.
|
||||
*/
|
||||
AVFrame *av_frame_alloc(void);
|
||||
|
||||
/**
|
||||
* Free the frame and any dynamically allocated objects in it,
|
||||
* e.g. extended_data. If the frame is reference counted, it will be
|
||||
* unreferenced first.
|
||||
*
|
||||
* @param frame frame to be freed. The pointer will be set to NULL.
|
||||
*/
|
||||
void av_frame_free(AVFrame **frame);
|
||||
|
||||
/**
|
||||
* Setup a new reference to the data described by an given frame.
|
||||
*
|
||||
* Copy frame properties from src to dst and create a new reference for each
|
||||
* AVBufferRef from src.
|
||||
*
|
||||
* If src is not reference counted, new buffers are allocated and the data is
|
||||
* copied.
|
||||
*
|
||||
* @return 0 on success, a negative AVERROR on error
|
||||
*/
|
||||
int av_frame_ref(AVFrame *dst, AVFrame *src);
|
||||
|
||||
/**
|
||||
* Create a new frame that references the same data as src.
|
||||
*
|
||||
* This is a shortcut for av_frame_alloc()+av_frame_ref().
|
||||
*
|
||||
* @return newly created AVFrame on success, NULL on error.
|
||||
*/
|
||||
AVFrame *av_frame_clone(AVFrame *src);
|
||||
|
||||
/**
|
||||
* Unreference all the buffers referenced by frame and reset the frame fields.
|
||||
*/
|
||||
void av_frame_unref(AVFrame *frame);
|
||||
|
||||
/**
|
||||
* Move everythnig contained in src to dst and reset src.
|
||||
*/
|
||||
void av_frame_move_ref(AVFrame *dst, AVFrame *src);
|
||||
|
||||
/**
|
||||
* Allocate new buffer(s) for audio or video data.
|
||||
*
|
||||
* The following fields must be set on frame before calling this function:
|
||||
* - format (pixel format for video, sample format for audio)
|
||||
* - width and height for video
|
||||
* - nb_samples and channel_layout for audio
|
||||
*
|
||||
* This function will fill AVFrame.data and AVFrame.buf arrays and, if
|
||||
* necessary, allocate and fill AVFrame.extended_data and AVFrame.extended_buf.
|
||||
* For planar formats, one buffer will be allocated for each plane.
|
||||
*
|
||||
* @param frame frame in which to store the new buffers.
|
||||
* @param align required buffer size alignment
|
||||
*
|
||||
* @return 0 on success, a negative AVERROR on error.
|
||||
*/
|
||||
int av_frame_get_buffer(AVFrame *frame, int align);
|
||||
|
||||
/**
|
||||
* Check if the frame data is writable.
|
||||
*
|
||||
* @return A positive value if the frame data is writable (which is true if and
|
||||
* only if each of the underlying buffers has only one reference, namely the one
|
||||
* stored in this frame). Return 0 otherwise.
|
||||
*
|
||||
* If 1 is returned the answer is valid until av_buffer_ref() is called on any
|
||||
* of the underlying AVBufferRefs (e.g. through av_frame_ref() or directly).
|
||||
*
|
||||
* @see av_frame_make_writable(), av_buffer_is_writable()
|
||||
*/
|
||||
int av_frame_is_writable(AVFrame *frame);
|
||||
|
||||
/**
|
||||
* Ensure that the frame data is writable, avoiding data copy if possible.
|
||||
*
|
||||
* Do nothing if the frame is writable, allocate new buffers and copy the data
|
||||
* if it is not.
|
||||
*
|
||||
* @return 0 on success, a negative AVERROR on error.
|
||||
*
|
||||
* @see av_frame_is_writable(), av_buffer_is_writable(),
|
||||
* av_buffer_make_writable()
|
||||
*/
|
||||
int av_frame_make_writable(AVFrame *frame);
|
||||
|
||||
/**
|
||||
* Copy only "metadata" fields from src to dst.
|
||||
*
|
||||
* Metadata for the purpose of this function are those fields that do not affect
|
||||
* the data layout in the buffers. E.g. pts, sample rate (for audio) or sample
|
||||
* aspect ratio (for video), but not width/height or channel layout.
|
||||
* Side data is also copied.
|
||||
*/
|
||||
int av_frame_copy_props(AVFrame *dst, const AVFrame *src);
|
||||
|
||||
/**
|
||||
* Get the buffer reference a given data plane is stored in.
|
||||
*
|
||||
* @param plane index of the data plane of interest in frame->extended_data.
|
||||
*
|
||||
* @return the buffer reference that contains the plane or NULL if the input
|
||||
* frame is not valid.
|
||||
*/
|
||||
AVBufferRef *av_frame_get_plane_buffer(AVFrame *frame, int plane);
|
||||
|
||||
/**
|
||||
* Add a new side data to a frame.
|
||||
*
|
||||
* @param frame a frame to which the side data should be added
|
||||
* @param type type of the added side data
|
||||
* @param size size of the side data
|
||||
*
|
||||
* @return newly added side data on success, NULL on error
|
||||
*/
|
||||
AVFrameSideData *av_frame_new_side_data(AVFrame *frame,
|
||||
enum AVFrameSideDataType type,
|
||||
int size);
|
||||
|
||||
/**
|
||||
* @return a pointer to the side data of a given type on success, NULL if there
|
||||
* is no side data with such type in this frame.
|
||||
*/
|
||||
AVFrameSideData *av_frame_get_side_data(AVFrame *frame,
|
||||
enum AVFrameSideDataType type);
|
||||
|
||||
#endif /* AVUTIL_FRAME_H */
|
||||
99
3rdparty/include/ffmpeg_/libavutil/hmac.h
vendored
99
3rdparty/include/ffmpeg_/libavutil/hmac.h
vendored
@@ -1,99 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2012 Martin Storsjo
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef AVUTIL_HMAC_H
|
||||
#define AVUTIL_HMAC_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/**
|
||||
* @defgroup lavu_hmac HMAC
|
||||
* @ingroup lavu_crypto
|
||||
* @{
|
||||
*/
|
||||
|
||||
enum AVHMACType {
|
||||
AV_HMAC_MD5,
|
||||
AV_HMAC_SHA1,
|
||||
AV_HMAC_SHA224 = 10,
|
||||
AV_HMAC_SHA256,
|
||||
AV_HMAC_SHA384,
|
||||
AV_HMAC_SHA512,
|
||||
};
|
||||
|
||||
typedef struct AVHMAC AVHMAC;
|
||||
|
||||
/**
|
||||
* Allocate an AVHMAC context.
|
||||
* @param type The hash function used for the HMAC.
|
||||
*/
|
||||
AVHMAC *av_hmac_alloc(enum AVHMACType type);
|
||||
|
||||
/**
|
||||
* Free an AVHMAC context.
|
||||
* @param ctx The context to free, may be NULL
|
||||
*/
|
||||
void av_hmac_free(AVHMAC *ctx);
|
||||
|
||||
/**
|
||||
* Initialize an AVHMAC context with an authentication key.
|
||||
* @param ctx The HMAC context
|
||||
* @param key The authentication key
|
||||
* @param keylen The length of the key, in bytes
|
||||
*/
|
||||
void av_hmac_init(AVHMAC *ctx, const uint8_t *key, unsigned int keylen);
|
||||
|
||||
/**
|
||||
* Hash data with the HMAC.
|
||||
* @param ctx The HMAC context
|
||||
* @param data The data to hash
|
||||
* @param len The length of the data, in bytes
|
||||
*/
|
||||
void av_hmac_update(AVHMAC *ctx, const uint8_t *data, unsigned int len);
|
||||
|
||||
/**
|
||||
* Finish hashing and output the HMAC digest.
|
||||
* @param ctx The HMAC context
|
||||
* @param out The output buffer to write the digest into
|
||||
* @param outlen The length of the out buffer, in bytes
|
||||
* @return The number of bytes written to out, or a negative error code.
|
||||
*/
|
||||
int av_hmac_final(AVHMAC *ctx, uint8_t *out, unsigned int outlen);
|
||||
|
||||
/**
|
||||
* Hash an array of data with a key.
|
||||
* @param ctx The HMAC context
|
||||
* @param data The data to hash
|
||||
* @param len The length of the data, in bytes
|
||||
* @param key The authentication key
|
||||
* @param keylen The length of the key, in bytes
|
||||
* @param out The output buffer to write the digest into
|
||||
* @param outlen The length of the out buffer, in bytes
|
||||
* @return The number of bytes written to out, or a negative error code.
|
||||
*/
|
||||
int av_hmac_calc(AVHMAC *ctx, const uint8_t *data, unsigned int len,
|
||||
const uint8_t *key, unsigned int keylen,
|
||||
uint8_t *out, unsigned int outlen);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
#endif /* AVUTIL_HMAC_H */
|
||||
200
3rdparty/include/ffmpeg_/libavutil/imgutils.h
vendored
200
3rdparty/include/ffmpeg_/libavutil/imgutils.h
vendored
@@ -1,200 +0,0 @@
|
||||
/*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef AVUTIL_IMGUTILS_H
|
||||
#define AVUTIL_IMGUTILS_H
|
||||
|
||||
/**
|
||||
* @file
|
||||
* misc image utilities
|
||||
*
|
||||
* @addtogroup lavu_picture
|
||||
* @{
|
||||
*/
|
||||
|
||||
#include "avutil.h"
|
||||
#include "pixdesc.h"
|
||||
|
||||
/**
|
||||
* Compute the max pixel step for each plane of an image with a
|
||||
* format described by pixdesc.
|
||||
*
|
||||
* The pixel step is the distance in bytes between the first byte of
|
||||
* the group of bytes which describe a pixel component and the first
|
||||
* byte of the successive group in the same plane for the same
|
||||
* component.
|
||||
*
|
||||
* @param max_pixsteps an array which is filled with the max pixel step
|
||||
* for each plane. Since a plane may contain different pixel
|
||||
* components, the computed max_pixsteps[plane] is relative to the
|
||||
* component in the plane with the max pixel step.
|
||||
* @param max_pixstep_comps an array which is filled with the component
|
||||
* for each plane which has the max pixel step. May be NULL.
|
||||
*/
|
||||
void av_image_fill_max_pixsteps(int max_pixsteps[4], int max_pixstep_comps[4],
|
||||
const AVPixFmtDescriptor *pixdesc);
|
||||
|
||||
/**
|
||||
* Compute the size of an image line with format pix_fmt and width
|
||||
* width for the plane plane.
|
||||
*
|
||||
* @return the computed size in bytes
|
||||
*/
|
||||
int av_image_get_linesize(enum AVPixelFormat pix_fmt, int width, int plane);
|
||||
|
||||
/**
|
||||
* Fill plane linesizes for an image with pixel format pix_fmt and
|
||||
* width width.
|
||||
*
|
||||
* @param linesizes array to be filled with the linesize for each plane
|
||||
* @return >= 0 in case of success, a negative error code otherwise
|
||||
*/
|
||||
int av_image_fill_linesizes(int linesizes[4], enum AVPixelFormat pix_fmt, int width);
|
||||
|
||||
/**
|
||||
* Fill plane data pointers for an image with pixel format pix_fmt and
|
||||
* height height.
|
||||
*
|
||||
* @param data pointers array to be filled with the pointer for each image plane
|
||||
* @param ptr the pointer to a buffer which will contain the image
|
||||
* @param linesizes the array containing the linesize for each
|
||||
* plane, should be filled by av_image_fill_linesizes()
|
||||
* @return the size in bytes required for the image buffer, a negative
|
||||
* error code in case of failure
|
||||
*/
|
||||
int av_image_fill_pointers(uint8_t *data[4], enum AVPixelFormat pix_fmt, int height,
|
||||
uint8_t *ptr, const int linesizes[4]);
|
||||
|
||||
/**
|
||||
* Allocate an image with size w and h and pixel format pix_fmt, and
|
||||
* fill pointers and linesizes accordingly.
|
||||
* The allocated image buffer has to be freed by using
|
||||
* av_freep(&pointers[0]).
|
||||
*
|
||||
* @param align the value to use for buffer size alignment
|
||||
* @return the size in bytes required for the image buffer, a negative
|
||||
* error code in case of failure
|
||||
*/
|
||||
int av_image_alloc(uint8_t *pointers[4], int linesizes[4],
|
||||
int w, int h, enum AVPixelFormat pix_fmt, int align);
|
||||
|
||||
/**
|
||||
* Copy image plane from src to dst.
|
||||
* That is, copy "height" number of lines of "bytewidth" bytes each.
|
||||
* The first byte of each successive line is separated by *_linesize
|
||||
* bytes.
|
||||
*
|
||||
* bytewidth must be contained by both absolute values of dst_linesize
|
||||
* and src_linesize, otherwise the function behavior is undefined.
|
||||
*
|
||||
* @param dst_linesize linesize for the image plane in dst
|
||||
* @param src_linesize linesize for the image plane in src
|
||||
*/
|
||||
void av_image_copy_plane(uint8_t *dst, int dst_linesize,
|
||||
const uint8_t *src, int src_linesize,
|
||||
int bytewidth, int height);
|
||||
|
||||
/**
|
||||
* Copy image in src_data to dst_data.
|
||||
*
|
||||
* @param dst_linesizes linesizes for the image in dst_data
|
||||
* @param src_linesizes linesizes for the image in src_data
|
||||
*/
|
||||
void av_image_copy(uint8_t *dst_data[4], int dst_linesizes[4],
|
||||
const uint8_t *src_data[4], const int src_linesizes[4],
|
||||
enum AVPixelFormat pix_fmt, int width, int height);
|
||||
|
||||
/**
|
||||
* Setup the data pointers and linesizes based on the specified image
|
||||
* parameters and the provided array.
|
||||
*
|
||||
* The fields of the given image are filled in by using the src
|
||||
* address which points to the image data buffer. Depending on the
|
||||
* specified pixel format, one or multiple image data pointers and
|
||||
* line sizes will be set. If a planar format is specified, several
|
||||
* pointers will be set pointing to the different picture planes and
|
||||
* the line sizes of the different planes will be stored in the
|
||||
* lines_sizes array. Call with src == NULL to get the required
|
||||
* size for the src buffer.
|
||||
*
|
||||
* To allocate the buffer and fill in the dst_data and dst_linesize in
|
||||
* one call, use av_image_alloc().
|
||||
*
|
||||
* @param dst_data data pointers to be filled in
|
||||
* @param dst_linesizes linesizes for the image in dst_data to be filled in
|
||||
* @param src buffer which will contain or contains the actual image data, can be NULL
|
||||
* @param pix_fmt the pixel format of the image
|
||||
* @param width the width of the image in pixels
|
||||
* @param height the height of the image in pixels
|
||||
* @param align the value used in src for linesize alignment
|
||||
* @return the size in bytes required for src, a negative error code
|
||||
* in case of failure
|
||||
*/
|
||||
int av_image_fill_arrays(uint8_t *dst_data[4], int dst_linesize[4],
|
||||
const uint8_t *src,
|
||||
enum AVPixelFormat pix_fmt, int width, int height, int align);
|
||||
|
||||
/**
|
||||
* Return the size in bytes of the amount of data required to store an
|
||||
* image with the given parameters.
|
||||
*
|
||||
* @param[in] align the assumed linesize alignment
|
||||
*/
|
||||
int av_image_get_buffer_size(enum AVPixelFormat pix_fmt, int width, int height, int align);
|
||||
|
||||
/**
|
||||
* Copy image data from an image into a buffer.
|
||||
*
|
||||
* av_image_get_buffer_size() can be used to compute the required size
|
||||
* for the buffer to fill.
|
||||
*
|
||||
* @param dst a buffer into which picture data will be copied
|
||||
* @param dst_size the size in bytes of dst
|
||||
* @param src_data pointers containing the source image data
|
||||
* @param src_linesizes linesizes for the image in src_data
|
||||
* @param pix_fmt the pixel format of the source image
|
||||
* @param width the width of the source image in pixels
|
||||
* @param height the height of the source image in pixels
|
||||
* @param align the assumed linesize alignment for dst
|
||||
* @return the number of bytes written to dst, or a negative value
|
||||
* (error code) on error
|
||||
*/
|
||||
int av_image_copy_to_buffer(uint8_t *dst, int dst_size,
|
||||
const uint8_t * const src_data[4], const int src_linesize[4],
|
||||
enum AVPixelFormat pix_fmt, int width, int height, int align);
|
||||
|
||||
/**
|
||||
* Check if the given dimension of an image is valid, meaning that all
|
||||
* bytes of the image can be addressed with a signed int.
|
||||
*
|
||||
* @param w the width of the picture
|
||||
* @param h the height of the picture
|
||||
* @param log_offset the offset to sum to the log level for logging with log_ctx
|
||||
* @param log_ctx the parent logging context, it may be NULL
|
||||
* @return >= 0 if valid, a negative error code otherwise
|
||||
*/
|
||||
int av_image_check_size(unsigned int w, unsigned int h, int log_offset, void *log_ctx);
|
||||
|
||||
int avpriv_set_systematic_pal2(uint32_t pal[256], enum AVPixelFormat pix_fmt);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
|
||||
#endif /* AVUTIL_IMGUTILS_H */
|
||||
77
3rdparty/include/ffmpeg_/libavutil/intfloat.h
vendored
77
3rdparty/include/ffmpeg_/libavutil/intfloat.h
vendored
@@ -1,77 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2011 Mans Rullgard
|
||||
*
|
||||
* This file is part of Libav.
|
||||
*
|
||||
* Libav is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* Libav is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with Libav; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef AVUTIL_INTFLOAT_H
|
||||
#define AVUTIL_INTFLOAT_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include "attributes.h"
|
||||
|
||||
union av_intfloat32 {
|
||||
uint32_t i;
|
||||
float f;
|
||||
};
|
||||
|
||||
union av_intfloat64 {
|
||||
uint64_t i;
|
||||
double f;
|
||||
};
|
||||
|
||||
/**
|
||||
* Reinterpret a 32-bit integer as a float.
|
||||
*/
|
||||
static av_always_inline float av_int2float(uint32_t i)
|
||||
{
|
||||
union av_intfloat32 v;
|
||||
v.i = i;
|
||||
return v.f;
|
||||
}
|
||||
|
||||
/**
|
||||
* Reinterpret a float as a 32-bit integer.
|
||||
*/
|
||||
static av_always_inline uint32_t av_float2int(float f)
|
||||
{
|
||||
union av_intfloat32 v;
|
||||
v.f = f;
|
||||
return v.i;
|
||||
}
|
||||
|
||||
/**
|
||||
* Reinterpret a 64-bit integer as a double.
|
||||
*/
|
||||
static av_always_inline double av_int2double(uint64_t i)
|
||||
{
|
||||
union av_intfloat64 v;
|
||||
v.i = i;
|
||||
return v.f;
|
||||
}
|
||||
|
||||
/**
|
||||
* Reinterpret a double as a 64-bit integer.
|
||||
*/
|
||||
static av_always_inline uint64_t av_double2int(double f)
|
||||
{
|
||||
union av_intfloat64 v;
|
||||
v.f = f;
|
||||
return v.i;
|
||||
}
|
||||
|
||||
#endif /* AVUTIL_INTFLOAT_H */
|
||||
@@ -1,40 +0,0 @@
|
||||
/*
|
||||
* copyright (c) 2005 Michael Niedermayer <michaelni@gmx.at>
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef AVUTIL_INTFLOAT_READWRITE_H
|
||||
#define AVUTIL_INTFLOAT_READWRITE_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include "attributes.h"
|
||||
|
||||
/* IEEE 80 bits extended float */
|
||||
typedef struct AVExtFloat {
|
||||
uint8_t exponent[2];
|
||||
uint8_t mantissa[8];
|
||||
} AVExtFloat;
|
||||
|
||||
attribute_deprecated double av_int2dbl(int64_t v) av_const;
|
||||
attribute_deprecated float av_int2flt(int32_t v) av_const;
|
||||
attribute_deprecated double av_ext2dbl(const AVExtFloat ext) av_const;
|
||||
attribute_deprecated int64_t av_dbl2int(double d) av_const;
|
||||
attribute_deprecated int32_t av_flt2int(float d) av_const;
|
||||
attribute_deprecated AVExtFloat av_dbl2ext(double d) av_const;
|
||||
|
||||
#endif /* AVUTIL_INTFLOAT_READWRITE_H */
|
||||
621
3rdparty/include/ffmpeg_/libavutil/intreadwrite.h
vendored
621
3rdparty/include/ffmpeg_/libavutil/intreadwrite.h
vendored
@@ -1,621 +0,0 @@
|
||||
/*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef AVUTIL_INTREADWRITE_H
|
||||
#define AVUTIL_INTREADWRITE_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include "libavutil/avconfig.h"
|
||||
#include "attributes.h"
|
||||
#include "bswap.h"
|
||||
|
||||
typedef union {
|
||||
uint64_t u64;
|
||||
uint32_t u32[2];
|
||||
uint16_t u16[4];
|
||||
uint8_t u8 [8];
|
||||
double f64;
|
||||
float f32[2];
|
||||
} av_alias av_alias64;
|
||||
|
||||
typedef union {
|
||||
uint32_t u32;
|
||||
uint16_t u16[2];
|
||||
uint8_t u8 [4];
|
||||
float f32;
|
||||
} av_alias av_alias32;
|
||||
|
||||
typedef union {
|
||||
uint16_t u16;
|
||||
uint8_t u8 [2];
|
||||
} av_alias av_alias16;
|
||||
|
||||
/*
|
||||
* Arch-specific headers can provide any combination of
|
||||
* AV_[RW][BLN](16|24|32|48|64) and AV_(COPY|SWAP|ZERO)(64|128) macros.
|
||||
* Preprocessor symbols must be defined, even if these are implemented
|
||||
* as inline functions.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_AV_CONFIG_H
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#if ARCH_ARM
|
||||
# include "arm/intreadwrite.h"
|
||||
#elif ARCH_AVR32
|
||||
# include "avr32/intreadwrite.h"
|
||||
#elif ARCH_MIPS
|
||||
# include "mips/intreadwrite.h"
|
||||
#elif ARCH_PPC
|
||||
# include "ppc/intreadwrite.h"
|
||||
#elif ARCH_TOMI
|
||||
# include "tomi/intreadwrite.h"
|
||||
#elif ARCH_X86
|
||||
# include "x86/intreadwrite.h"
|
||||
#endif
|
||||
|
||||
#endif /* HAVE_AV_CONFIG_H */
|
||||
|
||||
/*
|
||||
* Map AV_RNXX <-> AV_R[BL]XX for all variants provided by per-arch headers.
|
||||
*/
|
||||
|
||||
#if AV_HAVE_BIGENDIAN
|
||||
|
||||
# if defined(AV_RN16) && !defined(AV_RB16)
|
||||
# define AV_RB16(p) AV_RN16(p)
|
||||
# elif !defined(AV_RN16) && defined(AV_RB16)
|
||||
# define AV_RN16(p) AV_RB16(p)
|
||||
# endif
|
||||
|
||||
# if defined(AV_WN16) && !defined(AV_WB16)
|
||||
# define AV_WB16(p, v) AV_WN16(p, v)
|
||||
# elif !defined(AV_WN16) && defined(AV_WB16)
|
||||
# define AV_WN16(p, v) AV_WB16(p, v)
|
||||
# endif
|
||||
|
||||
# if defined(AV_RN24) && !defined(AV_RB24)
|
||||
# define AV_RB24(p) AV_RN24(p)
|
||||
# elif !defined(AV_RN24) && defined(AV_RB24)
|
||||
# define AV_RN24(p) AV_RB24(p)
|
||||
# endif
|
||||
|
||||
# if defined(AV_WN24) && !defined(AV_WB24)
|
||||
# define AV_WB24(p, v) AV_WN24(p, v)
|
||||
# elif !defined(AV_WN24) && defined(AV_WB24)
|
||||
# define AV_WN24(p, v) AV_WB24(p, v)
|
||||
# endif
|
||||
|
||||
# if defined(AV_RN32) && !defined(AV_RB32)
|
||||
# define AV_RB32(p) AV_RN32(p)
|
||||
# elif !defined(AV_RN32) && defined(AV_RB32)
|
||||
# define AV_RN32(p) AV_RB32(p)
|
||||
# endif
|
||||
|
||||
# if defined(AV_WN32) && !defined(AV_WB32)
|
||||
# define AV_WB32(p, v) AV_WN32(p, v)
|
||||
# elif !defined(AV_WN32) && defined(AV_WB32)
|
||||
# define AV_WN32(p, v) AV_WB32(p, v)
|
||||
# endif
|
||||
|
||||
# if defined(AV_RN48) && !defined(AV_RB48)
|
||||
# define AV_RB48(p) AV_RN48(p)
|
||||
# elif !defined(AV_RN48) && defined(AV_RB48)
|
||||
# define AV_RN48(p) AV_RB48(p)
|
||||
# endif
|
||||
|
||||
# if defined(AV_WN48) && !defined(AV_WB48)
|
||||
# define AV_WB48(p, v) AV_WN48(p, v)
|
||||
# elif !defined(AV_WN48) && defined(AV_WB48)
|
||||
# define AV_WN48(p, v) AV_WB48(p, v)
|
||||
# endif
|
||||
|
||||
# if defined(AV_RN64) && !defined(AV_RB64)
|
||||
# define AV_RB64(p) AV_RN64(p)
|
||||
# elif !defined(AV_RN64) && defined(AV_RB64)
|
||||
# define AV_RN64(p) AV_RB64(p)
|
||||
# endif
|
||||
|
||||
# if defined(AV_WN64) && !defined(AV_WB64)
|
||||
# define AV_WB64(p, v) AV_WN64(p, v)
|
||||
# elif !defined(AV_WN64) && defined(AV_WB64)
|
||||
# define AV_WN64(p, v) AV_WB64(p, v)
|
||||
# endif
|
||||
|
||||
#else /* AV_HAVE_BIGENDIAN */
|
||||
|
||||
# if defined(AV_RN16) && !defined(AV_RL16)
|
||||
# define AV_RL16(p) AV_RN16(p)
|
||||
# elif !defined(AV_RN16) && defined(AV_RL16)
|
||||
# define AV_RN16(p) AV_RL16(p)
|
||||
# endif
|
||||
|
||||
# if defined(AV_WN16) && !defined(AV_WL16)
|
||||
# define AV_WL16(p, v) AV_WN16(p, v)
|
||||
# elif !defined(AV_WN16) && defined(AV_WL16)
|
||||
# define AV_WN16(p, v) AV_WL16(p, v)
|
||||
# endif
|
||||
|
||||
# if defined(AV_RN24) && !defined(AV_RL24)
|
||||
# define AV_RL24(p) AV_RN24(p)
|
||||
# elif !defined(AV_RN24) && defined(AV_RL24)
|
||||
# define AV_RN24(p) AV_RL24(p)
|
||||
# endif
|
||||
|
||||
# if defined(AV_WN24) && !defined(AV_WL24)
|
||||
# define AV_WL24(p, v) AV_WN24(p, v)
|
||||
# elif !defined(AV_WN24) && defined(AV_WL24)
|
||||
# define AV_WN24(p, v) AV_WL24(p, v)
|
||||
# endif
|
||||
|
||||
# if defined(AV_RN32) && !defined(AV_RL32)
|
||||
# define AV_RL32(p) AV_RN32(p)
|
||||
# elif !defined(AV_RN32) && defined(AV_RL32)
|
||||
# define AV_RN32(p) AV_RL32(p)
|
||||
# endif
|
||||
|
||||
# if defined(AV_WN32) && !defined(AV_WL32)
|
||||
# define AV_WL32(p, v) AV_WN32(p, v)
|
||||
# elif !defined(AV_WN32) && defined(AV_WL32)
|
||||
# define AV_WN32(p, v) AV_WL32(p, v)
|
||||
# endif
|
||||
|
||||
# if defined(AV_RN48) && !defined(AV_RL48)
|
||||
# define AV_RL48(p) AV_RN48(p)
|
||||
# elif !defined(AV_RN48) && defined(AV_RL48)
|
||||
# define AV_RN48(p) AV_RL48(p)
|
||||
# endif
|
||||
|
||||
# if defined(AV_WN48) && !defined(AV_WL48)
|
||||
# define AV_WL48(p, v) AV_WN48(p, v)
|
||||
# elif !defined(AV_WN48) && defined(AV_WL48)
|
||||
# define AV_WN48(p, v) AV_WL48(p, v)
|
||||
# endif
|
||||
|
||||
# if defined(AV_RN64) && !defined(AV_RL64)
|
||||
# define AV_RL64(p) AV_RN64(p)
|
||||
# elif !defined(AV_RN64) && defined(AV_RL64)
|
||||
# define AV_RN64(p) AV_RL64(p)
|
||||
# endif
|
||||
|
||||
# if defined(AV_WN64) && !defined(AV_WL64)
|
||||
# define AV_WL64(p, v) AV_WN64(p, v)
|
||||
# elif !defined(AV_WN64) && defined(AV_WL64)
|
||||
# define AV_WN64(p, v) AV_WL64(p, v)
|
||||
# endif
|
||||
|
||||
#endif /* !AV_HAVE_BIGENDIAN */
|
||||
|
||||
/*
|
||||
* Define AV_[RW]N helper macros to simplify definitions not provided
|
||||
* by per-arch headers.
|
||||
*/
|
||||
|
||||
#if defined(__GNUC__) && !defined(__TI_COMPILER_VERSION__)
|
||||
|
||||
union unaligned_64 { uint64_t l; } __attribute__((packed)) av_alias;
|
||||
union unaligned_32 { uint32_t l; } __attribute__((packed)) av_alias;
|
||||
union unaligned_16 { uint16_t l; } __attribute__((packed)) av_alias;
|
||||
|
||||
# define AV_RN(s, p) (((const union unaligned_##s *) (p))->l)
|
||||
# define AV_WN(s, p, v) ((((union unaligned_##s *) (p))->l) = (v))
|
||||
|
||||
#elif defined(__DECC)
|
||||
|
||||
# define AV_RN(s, p) (*((const __unaligned uint##s##_t*)(p)))
|
||||
# define AV_WN(s, p, v) (*((__unaligned uint##s##_t*)(p)) = (v))
|
||||
|
||||
#elif AV_HAVE_FAST_UNALIGNED
|
||||
|
||||
# define AV_RN(s, p) (((const av_alias##s*)(p))->u##s)
|
||||
# define AV_WN(s, p, v) (((av_alias##s*)(p))->u##s = (v))
|
||||
|
||||
#else
|
||||
|
||||
#ifndef AV_RB16
|
||||
# define AV_RB16(x) \
|
||||
((((const uint8_t*)(x))[0] << 8) | \
|
||||
((const uint8_t*)(x))[1])
|
||||
#endif
|
||||
#ifndef AV_WB16
|
||||
# define AV_WB16(p, darg) do { \
|
||||
unsigned d = (darg); \
|
||||
((uint8_t*)(p))[1] = (d); \
|
||||
((uint8_t*)(p))[0] = (d)>>8; \
|
||||
} while(0)
|
||||
#endif
|
||||
|
||||
#ifndef AV_RL16
|
||||
# define AV_RL16(x) \
|
||||
((((const uint8_t*)(x))[1] << 8) | \
|
||||
((const uint8_t*)(x))[0])
|
||||
#endif
|
||||
#ifndef AV_WL16
|
||||
# define AV_WL16(p, darg) do { \
|
||||
unsigned d = (darg); \
|
||||
((uint8_t*)(p))[0] = (d); \
|
||||
((uint8_t*)(p))[1] = (d)>>8; \
|
||||
} while(0)
|
||||
#endif
|
||||
|
||||
#ifndef AV_RB32
|
||||
# define AV_RB32(x) \
|
||||
(((uint32_t)((const uint8_t*)(x))[0] << 24) | \
|
||||
(((const uint8_t*)(x))[1] << 16) | \
|
||||
(((const uint8_t*)(x))[2] << 8) | \
|
||||
((const uint8_t*)(x))[3])
|
||||
#endif
|
||||
#ifndef AV_WB32
|
||||
# define AV_WB32(p, darg) do { \
|
||||
unsigned d = (darg); \
|
||||
((uint8_t*)(p))[3] = (d); \
|
||||
((uint8_t*)(p))[2] = (d)>>8; \
|
||||
((uint8_t*)(p))[1] = (d)>>16; \
|
||||
((uint8_t*)(p))[0] = (d)>>24; \
|
||||
} while(0)
|
||||
#endif
|
||||
|
||||
#ifndef AV_RL32
|
||||
# define AV_RL32(x) \
|
||||
(((uint32_t)((const uint8_t*)(x))[3] << 24) | \
|
||||
(((const uint8_t*)(x))[2] << 16) | \
|
||||
(((const uint8_t*)(x))[1] << 8) | \
|
||||
((const uint8_t*)(x))[0])
|
||||
#endif
|
||||
#ifndef AV_WL32
|
||||
# define AV_WL32(p, darg) do { \
|
||||
unsigned d = (darg); \
|
||||
((uint8_t*)(p))[0] = (d); \
|
||||
((uint8_t*)(p))[1] = (d)>>8; \
|
||||
((uint8_t*)(p))[2] = (d)>>16; \
|
||||
((uint8_t*)(p))[3] = (d)>>24; \
|
||||
} while(0)
|
||||
#endif
|
||||
|
||||
#ifndef AV_RB64
|
||||
# define AV_RB64(x) \
|
||||
(((uint64_t)((const uint8_t*)(x))[0] << 56) | \
|
||||
((uint64_t)((const uint8_t*)(x))[1] << 48) | \
|
||||
((uint64_t)((const uint8_t*)(x))[2] << 40) | \
|
||||
((uint64_t)((const uint8_t*)(x))[3] << 32) | \
|
||||
((uint64_t)((const uint8_t*)(x))[4] << 24) | \
|
||||
((uint64_t)((const uint8_t*)(x))[5] << 16) | \
|
||||
((uint64_t)((const uint8_t*)(x))[6] << 8) | \
|
||||
(uint64_t)((const uint8_t*)(x))[7])
|
||||
#endif
|
||||
#ifndef AV_WB64
|
||||
# define AV_WB64(p, darg) do { \
|
||||
uint64_t d = (darg); \
|
||||
((uint8_t*)(p))[7] = (d); \
|
||||
((uint8_t*)(p))[6] = (d)>>8; \
|
||||
((uint8_t*)(p))[5] = (d)>>16; \
|
||||
((uint8_t*)(p))[4] = (d)>>24; \
|
||||
((uint8_t*)(p))[3] = (d)>>32; \
|
||||
((uint8_t*)(p))[2] = (d)>>40; \
|
||||
((uint8_t*)(p))[1] = (d)>>48; \
|
||||
((uint8_t*)(p))[0] = (d)>>56; \
|
||||
} while(0)
|
||||
#endif
|
||||
|
||||
#ifndef AV_RL64
|
||||
# define AV_RL64(x) \
|
||||
(((uint64_t)((const uint8_t*)(x))[7] << 56) | \
|
||||
((uint64_t)((const uint8_t*)(x))[6] << 48) | \
|
||||
((uint64_t)((const uint8_t*)(x))[5] << 40) | \
|
||||
((uint64_t)((const uint8_t*)(x))[4] << 32) | \
|
||||
((uint64_t)((const uint8_t*)(x))[3] << 24) | \
|
||||
((uint64_t)((const uint8_t*)(x))[2] << 16) | \
|
||||
((uint64_t)((const uint8_t*)(x))[1] << 8) | \
|
||||
(uint64_t)((const uint8_t*)(x))[0])
|
||||
#endif
|
||||
#ifndef AV_WL64
|
||||
# define AV_WL64(p, darg) do { \
|
||||
uint64_t d = (darg); \
|
||||
((uint8_t*)(p))[0] = (d); \
|
||||
((uint8_t*)(p))[1] = (d)>>8; \
|
||||
((uint8_t*)(p))[2] = (d)>>16; \
|
||||
((uint8_t*)(p))[3] = (d)>>24; \
|
||||
((uint8_t*)(p))[4] = (d)>>32; \
|
||||
((uint8_t*)(p))[5] = (d)>>40; \
|
||||
((uint8_t*)(p))[6] = (d)>>48; \
|
||||
((uint8_t*)(p))[7] = (d)>>56; \
|
||||
} while(0)
|
||||
#endif
|
||||
|
||||
#if AV_HAVE_BIGENDIAN
|
||||
# define AV_RN(s, p) AV_RB##s(p)
|
||||
# define AV_WN(s, p, v) AV_WB##s(p, v)
|
||||
#else
|
||||
# define AV_RN(s, p) AV_RL##s(p)
|
||||
# define AV_WN(s, p, v) AV_WL##s(p, v)
|
||||
#endif
|
||||
|
||||
#endif /* HAVE_FAST_UNALIGNED */
|
||||
|
||||
#ifndef AV_RN16
|
||||
# define AV_RN16(p) AV_RN(16, p)
|
||||
#endif
|
||||
|
||||
#ifndef AV_RN32
|
||||
# define AV_RN32(p) AV_RN(32, p)
|
||||
#endif
|
||||
|
||||
#ifndef AV_RN64
|
||||
# define AV_RN64(p) AV_RN(64, p)
|
||||
#endif
|
||||
|
||||
#ifndef AV_WN16
|
||||
# define AV_WN16(p, v) AV_WN(16, p, v)
|
||||
#endif
|
||||
|
||||
#ifndef AV_WN32
|
||||
# define AV_WN32(p, v) AV_WN(32, p, v)
|
||||
#endif
|
||||
|
||||
#ifndef AV_WN64
|
||||
# define AV_WN64(p, v) AV_WN(64, p, v)
|
||||
#endif
|
||||
|
||||
#if AV_HAVE_BIGENDIAN
|
||||
# define AV_RB(s, p) AV_RN##s(p)
|
||||
# define AV_WB(s, p, v) AV_WN##s(p, v)
|
||||
# define AV_RL(s, p) av_bswap##s(AV_RN##s(p))
|
||||
# define AV_WL(s, p, v) AV_WN##s(p, av_bswap##s(v))
|
||||
#else
|
||||
# define AV_RB(s, p) av_bswap##s(AV_RN##s(p))
|
||||
# define AV_WB(s, p, v) AV_WN##s(p, av_bswap##s(v))
|
||||
# define AV_RL(s, p) AV_RN##s(p)
|
||||
# define AV_WL(s, p, v) AV_WN##s(p, v)
|
||||
#endif
|
||||
|
||||
#define AV_RB8(x) (((const uint8_t*)(x))[0])
|
||||
#define AV_WB8(p, d) do { ((uint8_t*)(p))[0] = (d); } while(0)
|
||||
|
||||
#define AV_RL8(x) AV_RB8(x)
|
||||
#define AV_WL8(p, d) AV_WB8(p, d)
|
||||
|
||||
#ifndef AV_RB16
|
||||
# define AV_RB16(p) AV_RB(16, p)
|
||||
#endif
|
||||
#ifndef AV_WB16
|
||||
# define AV_WB16(p, v) AV_WB(16, p, v)
|
||||
#endif
|
||||
|
||||
#ifndef AV_RL16
|
||||
# define AV_RL16(p) AV_RL(16, p)
|
||||
#endif
|
||||
#ifndef AV_WL16
|
||||
# define AV_WL16(p, v) AV_WL(16, p, v)
|
||||
#endif
|
||||
|
||||
#ifndef AV_RB32
|
||||
# define AV_RB32(p) AV_RB(32, p)
|
||||
#endif
|
||||
#ifndef AV_WB32
|
||||
# define AV_WB32(p, v) AV_WB(32, p, v)
|
||||
#endif
|
||||
|
||||
#ifndef AV_RL32
|
||||
# define AV_RL32(p) AV_RL(32, p)
|
||||
#endif
|
||||
#ifndef AV_WL32
|
||||
# define AV_WL32(p, v) AV_WL(32, p, v)
|
||||
#endif
|
||||
|
||||
#ifndef AV_RB64
|
||||
# define AV_RB64(p) AV_RB(64, p)
|
||||
#endif
|
||||
#ifndef AV_WB64
|
||||
# define AV_WB64(p, v) AV_WB(64, p, v)
|
||||
#endif
|
||||
|
||||
#ifndef AV_RL64
|
||||
# define AV_RL64(p) AV_RL(64, p)
|
||||
#endif
|
||||
#ifndef AV_WL64
|
||||
# define AV_WL64(p, v) AV_WL(64, p, v)
|
||||
#endif
|
||||
|
||||
#ifndef AV_RB24
|
||||
# define AV_RB24(x) \
|
||||
((((const uint8_t*)(x))[0] << 16) | \
|
||||
(((const uint8_t*)(x))[1] << 8) | \
|
||||
((const uint8_t*)(x))[2])
|
||||
#endif
|
||||
#ifndef AV_WB24
|
||||
# define AV_WB24(p, d) do { \
|
||||
((uint8_t*)(p))[2] = (d); \
|
||||
((uint8_t*)(p))[1] = (d)>>8; \
|
||||
((uint8_t*)(p))[0] = (d)>>16; \
|
||||
} while(0)
|
||||
#endif
|
||||
|
||||
#ifndef AV_RL24
|
||||
# define AV_RL24(x) \
|
||||
((((const uint8_t*)(x))[2] << 16) | \
|
||||
(((const uint8_t*)(x))[1] << 8) | \
|
||||
((const uint8_t*)(x))[0])
|
||||
#endif
|
||||
#ifndef AV_WL24
|
||||
# define AV_WL24(p, d) do { \
|
||||
((uint8_t*)(p))[0] = (d); \
|
||||
((uint8_t*)(p))[1] = (d)>>8; \
|
||||
((uint8_t*)(p))[2] = (d)>>16; \
|
||||
} while(0)
|
||||
#endif
|
||||
|
||||
#ifndef AV_RB48
|
||||
# define AV_RB48(x) \
|
||||
(((uint64_t)((const uint8_t*)(x))[0] << 40) | \
|
||||
((uint64_t)((const uint8_t*)(x))[1] << 32) | \
|
||||
((uint64_t)((const uint8_t*)(x))[2] << 24) | \
|
||||
((uint64_t)((const uint8_t*)(x))[3] << 16) | \
|
||||
((uint64_t)((const uint8_t*)(x))[4] << 8) | \
|
||||
(uint64_t)((const uint8_t*)(x))[5])
|
||||
#endif
|
||||
#ifndef AV_WB48
|
||||
# define AV_WB48(p, darg) do { \
|
||||
uint64_t d = (darg); \
|
||||
((uint8_t*)(p))[5] = (d); \
|
||||
((uint8_t*)(p))[4] = (d)>>8; \
|
||||
((uint8_t*)(p))[3] = (d)>>16; \
|
||||
((uint8_t*)(p))[2] = (d)>>24; \
|
||||
((uint8_t*)(p))[1] = (d)>>32; \
|
||||
((uint8_t*)(p))[0] = (d)>>40; \
|
||||
} while(0)
|
||||
#endif
|
||||
|
||||
#ifndef AV_RL48
|
||||
# define AV_RL48(x) \
|
||||
(((uint64_t)((const uint8_t*)(x))[5] << 40) | \
|
||||
((uint64_t)((const uint8_t*)(x))[4] << 32) | \
|
||||
((uint64_t)((const uint8_t*)(x))[3] << 24) | \
|
||||
((uint64_t)((const uint8_t*)(x))[2] << 16) | \
|
||||
((uint64_t)((const uint8_t*)(x))[1] << 8) | \
|
||||
(uint64_t)((const uint8_t*)(x))[0])
|
||||
#endif
|
||||
#ifndef AV_WL48
|
||||
# define AV_WL48(p, darg) do { \
|
||||
uint64_t d = (darg); \
|
||||
((uint8_t*)(p))[0] = (d); \
|
||||
((uint8_t*)(p))[1] = (d)>>8; \
|
||||
((uint8_t*)(p))[2] = (d)>>16; \
|
||||
((uint8_t*)(p))[3] = (d)>>24; \
|
||||
((uint8_t*)(p))[4] = (d)>>32; \
|
||||
((uint8_t*)(p))[5] = (d)>>40; \
|
||||
} while(0)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* The AV_[RW]NA macros access naturally aligned data
|
||||
* in a type-safe way.
|
||||
*/
|
||||
|
||||
#define AV_RNA(s, p) (((const av_alias##s*)(p))->u##s)
|
||||
#define AV_WNA(s, p, v) (((av_alias##s*)(p))->u##s = (v))
|
||||
|
||||
#ifndef AV_RN16A
|
||||
# define AV_RN16A(p) AV_RNA(16, p)
|
||||
#endif
|
||||
|
||||
#ifndef AV_RN32A
|
||||
# define AV_RN32A(p) AV_RNA(32, p)
|
||||
#endif
|
||||
|
||||
#ifndef AV_RN64A
|
||||
# define AV_RN64A(p) AV_RNA(64, p)
|
||||
#endif
|
||||
|
||||
#ifndef AV_WN16A
|
||||
# define AV_WN16A(p, v) AV_WNA(16, p, v)
|
||||
#endif
|
||||
|
||||
#ifndef AV_WN32A
|
||||
# define AV_WN32A(p, v) AV_WNA(32, p, v)
|
||||
#endif
|
||||
|
||||
#ifndef AV_WN64A
|
||||
# define AV_WN64A(p, v) AV_WNA(64, p, v)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* The AV_COPYxxU macros are suitable for copying data to/from unaligned
|
||||
* memory locations.
|
||||
*/
|
||||
|
||||
#define AV_COPYU(n, d, s) AV_WN##n(d, AV_RN##n(s));
|
||||
|
||||
#ifndef AV_COPY16U
|
||||
# define AV_COPY16U(d, s) AV_COPYU(16, d, s)
|
||||
#endif
|
||||
|
||||
#ifndef AV_COPY32U
|
||||
# define AV_COPY32U(d, s) AV_COPYU(32, d, s)
|
||||
#endif
|
||||
|
||||
#ifndef AV_COPY64U
|
||||
# define AV_COPY64U(d, s) AV_COPYU(64, d, s)
|
||||
#endif
|
||||
|
||||
#ifndef AV_COPY128U
|
||||
# define AV_COPY128U(d, s) \
|
||||
do { \
|
||||
AV_COPY64U(d, s); \
|
||||
AV_COPY64U((char *)(d) + 8, (const char *)(s) + 8); \
|
||||
} while(0)
|
||||
#endif
|
||||
|
||||
/* Parameters for AV_COPY*, AV_SWAP*, AV_ZERO* must be
|
||||
* naturally aligned. They may be implemented using MMX,
|
||||
* so emms_c() must be called before using any float code
|
||||
* afterwards.
|
||||
*/
|
||||
|
||||
#define AV_COPY(n, d, s) \
|
||||
(((av_alias##n*)(d))->u##n = ((const av_alias##n*)(s))->u##n)
|
||||
|
||||
#ifndef AV_COPY16
|
||||
# define AV_COPY16(d, s) AV_COPY(16, d, s)
|
||||
#endif
|
||||
|
||||
#ifndef AV_COPY32
|
||||
# define AV_COPY32(d, s) AV_COPY(32, d, s)
|
||||
#endif
|
||||
|
||||
#ifndef AV_COPY64
|
||||
# define AV_COPY64(d, s) AV_COPY(64, d, s)
|
||||
#endif
|
||||
|
||||
#ifndef AV_COPY128
|
||||
# define AV_COPY128(d, s) \
|
||||
do { \
|
||||
AV_COPY64(d, s); \
|
||||
AV_COPY64((char*)(d)+8, (char*)(s)+8); \
|
||||
} while(0)
|
||||
#endif
|
||||
|
||||
#define AV_SWAP(n, a, b) FFSWAP(av_alias##n, *(av_alias##n*)(a), *(av_alias##n*)(b))
|
||||
|
||||
#ifndef AV_SWAP64
|
||||
# define AV_SWAP64(a, b) AV_SWAP(64, a, b)
|
||||
#endif
|
||||
|
||||
#define AV_ZERO(n, d) (((av_alias##n*)(d))->u##n = 0)
|
||||
|
||||
#ifndef AV_ZERO16
|
||||
# define AV_ZERO16(d) AV_ZERO(16, d)
|
||||
#endif
|
||||
|
||||
#ifndef AV_ZERO32
|
||||
# define AV_ZERO32(d) AV_ZERO(32, d)
|
||||
#endif
|
||||
|
||||
#ifndef AV_ZERO64
|
||||
# define AV_ZERO64(d) AV_ZERO(64, d)
|
||||
#endif
|
||||
|
||||
#ifndef AV_ZERO128
|
||||
# define AV_ZERO128(d) \
|
||||
do { \
|
||||
AV_ZERO64(d); \
|
||||
AV_ZERO64((char*)(d)+8); \
|
||||
} while(0)
|
||||
#endif
|
||||
|
||||
#endif /* AVUTIL_INTREADWRITE_H */
|
||||
62
3rdparty/include/ffmpeg_/libavutil/lfg.h
vendored
62
3rdparty/include/ffmpeg_/libavutil/lfg.h
vendored
@@ -1,62 +0,0 @@
|
||||
/*
|
||||
* Lagged Fibonacci PRNG
|
||||
* Copyright (c) 2008 Michael Niedermayer
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef AVUTIL_LFG_H
|
||||
#define AVUTIL_LFG_H
|
||||
|
||||
typedef struct AVLFG {
|
||||
unsigned int state[64];
|
||||
int index;
|
||||
} AVLFG;
|
||||
|
||||
void av_lfg_init(AVLFG *c, unsigned int seed);
|
||||
|
||||
/**
|
||||
* Get the next random unsigned 32-bit number using an ALFG.
|
||||
*
|
||||
* Please also consider a simple LCG like state= state*1664525+1013904223,
|
||||
* it may be good enough and faster for your specific use case.
|
||||
*/
|
||||
static inline unsigned int av_lfg_get(AVLFG *c){
|
||||
c->state[c->index & 63] = c->state[(c->index-24) & 63] + c->state[(c->index-55) & 63];
|
||||
return c->state[c->index++ & 63];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the next random unsigned 32-bit number using a MLFG.
|
||||
*
|
||||
* Please also consider av_lfg_get() above, it is faster.
|
||||
*/
|
||||
static inline unsigned int av_mlfg_get(AVLFG *c){
|
||||
unsigned int a= c->state[(c->index-55) & 63];
|
||||
unsigned int b= c->state[(c->index-24) & 63];
|
||||
return c->state[c->index++ & 63] = 2*a*b+a+b;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the next two numbers generated by a Box-Muller Gaussian
|
||||
* generator using the random numbers issued by lfg.
|
||||
*
|
||||
* @param out array where the two generated numbers are placed
|
||||
*/
|
||||
void av_bmg_get(AVLFG *lfg, double out[2]);
|
||||
|
||||
#endif /* AVUTIL_LFG_H */
|
||||
222
3rdparty/include/ffmpeg_/libavutil/log.h
vendored
222
3rdparty/include/ffmpeg_/libavutil/log.h
vendored
@@ -1,222 +0,0 @@
|
||||
/*
|
||||
* copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at>
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef AVUTIL_LOG_H
|
||||
#define AVUTIL_LOG_H
|
||||
|
||||
#include <stdarg.h>
|
||||
#include "avutil.h"
|
||||
#include "attributes.h"
|
||||
|
||||
typedef enum {
|
||||
AV_CLASS_CATEGORY_NA = 0,
|
||||
AV_CLASS_CATEGORY_INPUT,
|
||||
AV_CLASS_CATEGORY_OUTPUT,
|
||||
AV_CLASS_CATEGORY_MUXER,
|
||||
AV_CLASS_CATEGORY_DEMUXER,
|
||||
AV_CLASS_CATEGORY_ENCODER,
|
||||
AV_CLASS_CATEGORY_DECODER,
|
||||
AV_CLASS_CATEGORY_FILTER,
|
||||
AV_CLASS_CATEGORY_BITSTREAM_FILTER,
|
||||
AV_CLASS_CATEGORY_SWSCALER,
|
||||
AV_CLASS_CATEGORY_SWRESAMPLER,
|
||||
AV_CLASS_CATEGORY_NB, ///< not part of ABI/API
|
||||
}AVClassCategory;
|
||||
|
||||
struct AVOptionRanges;
|
||||
|
||||
/**
|
||||
* Describe the class of an AVClass context structure. That is an
|
||||
* arbitrary struct of which the first field is a pointer to an
|
||||
* AVClass struct (e.g. AVCodecContext, AVFormatContext etc.).
|
||||
*/
|
||||
typedef struct AVClass {
|
||||
/**
|
||||
* The name of the class; usually it is the same name as the
|
||||
* context structure type to which the AVClass is associated.
|
||||
*/
|
||||
const char* class_name;
|
||||
|
||||
/**
|
||||
* A pointer to a function which returns the name of a context
|
||||
* instance ctx associated with the class.
|
||||
*/
|
||||
const char* (*item_name)(void* ctx);
|
||||
|
||||
/**
|
||||
* a pointer to the first option specified in the class if any or NULL
|
||||
*
|
||||
* @see av_set_default_options()
|
||||
*/
|
||||
const struct AVOption *option;
|
||||
|
||||
/**
|
||||
* LIBAVUTIL_VERSION with which this structure was created.
|
||||
* This is used to allow fields to be added without requiring major
|
||||
* version bumps everywhere.
|
||||
*/
|
||||
|
||||
int version;
|
||||
|
||||
/**
|
||||
* Offset in the structure where log_level_offset is stored.
|
||||
* 0 means there is no such variable
|
||||
*/
|
||||
int log_level_offset_offset;
|
||||
|
||||
/**
|
||||
* Offset in the structure where a pointer to the parent context for
|
||||
* logging is stored. For example a decoder could pass its AVCodecContext
|
||||
* to eval as such a parent context, which an av_log() implementation
|
||||
* could then leverage to display the parent context.
|
||||
* The offset can be NULL.
|
||||
*/
|
||||
int parent_log_context_offset;
|
||||
|
||||
/**
|
||||
* Return next AVOptions-enabled child or NULL
|
||||
*/
|
||||
void* (*child_next)(void *obj, void *prev);
|
||||
|
||||
/**
|
||||
* Return an AVClass corresponding to the next potential
|
||||
* AVOptions-enabled child.
|
||||
*
|
||||
* The difference between child_next and this is that
|
||||
* child_next iterates over _already existing_ objects, while
|
||||
* child_class_next iterates over _all possible_ children.
|
||||
*/
|
||||
const struct AVClass* (*child_class_next)(const struct AVClass *prev);
|
||||
|
||||
/**
|
||||
* Category used for visualization (like color)
|
||||
* This is only set if the category is equal for all objects using this class.
|
||||
* available since version (51 << 16 | 56 << 8 | 100)
|
||||
*/
|
||||
AVClassCategory category;
|
||||
|
||||
/**
|
||||
* Callback to return the category.
|
||||
* available since version (51 << 16 | 59 << 8 | 100)
|
||||
*/
|
||||
AVClassCategory (*get_category)(void* ctx);
|
||||
|
||||
/**
|
||||
* Callback to return the supported/allowed ranges.
|
||||
* available since version (52.12)
|
||||
*/
|
||||
int (*query_ranges)(struct AVOptionRanges **, void *obj, const char *key, int flags);
|
||||
} AVClass;
|
||||
|
||||
/* av_log API */
|
||||
|
||||
#define AV_LOG_QUIET -8
|
||||
|
||||
/**
|
||||
* Something went really wrong and we will crash now.
|
||||
*/
|
||||
#define AV_LOG_PANIC 0
|
||||
|
||||
/**
|
||||
* Something went wrong and recovery is not possible.
|
||||
* For example, no header was found for a format which depends
|
||||
* on headers or an illegal combination of parameters is used.
|
||||
*/
|
||||
#define AV_LOG_FATAL 8
|
||||
|
||||
/**
|
||||
* Something went wrong and cannot losslessly be recovered.
|
||||
* However, not all future data is affected.
|
||||
*/
|
||||
#define AV_LOG_ERROR 16
|
||||
|
||||
/**
|
||||
* Something somehow does not look correct. This may or may not
|
||||
* lead to problems. An example would be the use of '-vstrict -2'.
|
||||
*/
|
||||
#define AV_LOG_WARNING 24
|
||||
|
||||
#define AV_LOG_INFO 32
|
||||
#define AV_LOG_VERBOSE 40
|
||||
|
||||
/**
|
||||
* Stuff which is only useful for libav* developers.
|
||||
*/
|
||||
#define AV_LOG_DEBUG 48
|
||||
|
||||
#define AV_LOG_MAX_OFFSET (AV_LOG_DEBUG - AV_LOG_QUIET)
|
||||
|
||||
/**
|
||||
* Send the specified message to the log if the level is less than or equal
|
||||
* to the current av_log_level. By default, all logging messages are sent to
|
||||
* stderr. This behavior can be altered by setting a different av_vlog callback
|
||||
* function.
|
||||
*
|
||||
* @param avcl A pointer to an arbitrary struct of which the first field is a
|
||||
* pointer to an AVClass struct.
|
||||
* @param level The importance level of the message, lower values signifying
|
||||
* higher importance.
|
||||
* @param fmt The format string (printf-compatible) that specifies how
|
||||
* subsequent arguments are converted to output.
|
||||
* @see av_vlog
|
||||
*/
|
||||
void av_log(void *avcl, int level, const char *fmt, ...) av_printf_format(3, 4);
|
||||
|
||||
void av_vlog(void *avcl, int level, const char *fmt, va_list);
|
||||
int av_log_get_level(void);
|
||||
void av_log_set_level(int);
|
||||
void av_log_set_callback(void (*)(void*, int, const char*, va_list));
|
||||
void av_log_default_callback(void* ptr, int level, const char* fmt, va_list vl);
|
||||
const char* av_default_item_name(void* ctx);
|
||||
AVClassCategory av_default_get_category(void *ptr);
|
||||
|
||||
/**
|
||||
* Format a line of log the same way as the default callback.
|
||||
* @param line buffer to receive the formated line
|
||||
* @param line_size size of the buffer
|
||||
* @param print_prefix used to store whether the prefix must be printed;
|
||||
* must point to a persistent integer initially set to 1
|
||||
*/
|
||||
void av_log_format_line(void *ptr, int level, const char *fmt, va_list vl,
|
||||
char *line, int line_size, int *print_prefix);
|
||||
|
||||
/**
|
||||
* av_dlog macros
|
||||
* Useful to print debug messages that shouldn't get compiled in normally.
|
||||
*/
|
||||
|
||||
#ifdef DEBUG
|
||||
# define av_dlog(pctx, ...) av_log(pctx, AV_LOG_DEBUG, __VA_ARGS__)
|
||||
#else
|
||||
# define av_dlog(pctx, ...) do { if (0) av_log(pctx, AV_LOG_DEBUG, __VA_ARGS__); } while (0)
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Skip repeated messages, this requires the user app to use av_log() instead of
|
||||
* (f)printf as the 2 would otherwise interfere and lead to
|
||||
* "Last message repeated x times" messages below (f)printf messages with some
|
||||
* bad luck.
|
||||
* Also to receive the last, "last repeated" line if any, the user app must
|
||||
* call av_log(NULL, AV_LOG_QUIET, "%s", ""); at the end
|
||||
*/
|
||||
#define AV_LOG_SKIP_REPEATED 1
|
||||
void av_log_set_flags(int arg);
|
||||
|
||||
#endif /* AVUTIL_LOG_H */
|
||||
66
3rdparty/include/ffmpeg_/libavutil/lzo.h
vendored
66
3rdparty/include/ffmpeg_/libavutil/lzo.h
vendored
@@ -1,66 +0,0 @@
|
||||
/*
|
||||
* LZO 1x decompression
|
||||
* copyright (c) 2006 Reimar Doeffinger
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef AVUTIL_LZO_H
|
||||
#define AVUTIL_LZO_H
|
||||
|
||||
/**
|
||||
* @defgroup lavu_lzo LZO
|
||||
* @ingroup lavu_crypto
|
||||
*
|
||||
* @{
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/** @name Error flags returned by av_lzo1x_decode
|
||||
* @{ */
|
||||
/// end of the input buffer reached before decoding finished
|
||||
#define AV_LZO_INPUT_DEPLETED 1
|
||||
/// decoded data did not fit into output buffer
|
||||
#define AV_LZO_OUTPUT_FULL 2
|
||||
/// a reference to previously decoded data was wrong
|
||||
#define AV_LZO_INVALID_BACKPTR 4
|
||||
/// a non-specific error in the compressed bitstream
|
||||
#define AV_LZO_ERROR 8
|
||||
/** @} */
|
||||
|
||||
#define AV_LZO_INPUT_PADDING 8
|
||||
#define AV_LZO_OUTPUT_PADDING 12
|
||||
|
||||
/**
|
||||
* @brief Decodes LZO 1x compressed data.
|
||||
* @param out output buffer
|
||||
* @param outlen size of output buffer, number of bytes left are returned here
|
||||
* @param in input buffer
|
||||
* @param inlen size of input buffer, number of bytes left are returned here
|
||||
* @return 0 on success, otherwise a combination of the error flags above
|
||||
*
|
||||
* Make sure all buffers are appropriately padded, in must provide
|
||||
* AV_LZO_INPUT_PADDING, out must provide AV_LZO_OUTPUT_PADDING additional bytes.
|
||||
*/
|
||||
int av_lzo1x_decode(void *out, int *outlen, const void *in, int *inlen);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
#endif /* AVUTIL_LZO_H */
|
||||
147
3rdparty/include/ffmpeg_/libavutil/mathematics.h
vendored
147
3rdparty/include/ffmpeg_/libavutil/mathematics.h
vendored
@@ -1,147 +0,0 @@
|
||||
/*
|
||||
* copyright (c) 2005-2012 Michael Niedermayer <michaelni@gmx.at>
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef AVUTIL_MATHEMATICS_H
|
||||
#define AVUTIL_MATHEMATICS_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <math.h>
|
||||
#include "attributes.h"
|
||||
#include "rational.h"
|
||||
#include "intfloat.h"
|
||||
|
||||
#ifndef M_E
|
||||
#define M_E 2.7182818284590452354 /* e */
|
||||
#endif
|
||||
#ifndef M_LN2
|
||||
#define M_LN2 0.69314718055994530942 /* log_e 2 */
|
||||
#endif
|
||||
#ifndef M_LN10
|
||||
#define M_LN10 2.30258509299404568402 /* log_e 10 */
|
||||
#endif
|
||||
#ifndef M_LOG2_10
|
||||
#define M_LOG2_10 3.32192809488736234787 /* log_2 10 */
|
||||
#endif
|
||||
#ifndef M_PHI
|
||||
#define M_PHI 1.61803398874989484820 /* phi / golden ratio */
|
||||
#endif
|
||||
#ifndef M_PI
|
||||
#define M_PI 3.14159265358979323846 /* pi */
|
||||
#endif
|
||||
#ifndef M_SQRT1_2
|
||||
#define M_SQRT1_2 0.70710678118654752440 /* 1/sqrt(2) */
|
||||
#endif
|
||||
#ifndef M_SQRT2
|
||||
#define M_SQRT2 1.41421356237309504880 /* sqrt(2) */
|
||||
#endif
|
||||
#ifndef NAN
|
||||
#define NAN av_int2float(0x7fc00000)
|
||||
#endif
|
||||
#ifndef INFINITY
|
||||
#define INFINITY av_int2float(0x7f800000)
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @addtogroup lavu_math
|
||||
* @{
|
||||
*/
|
||||
|
||||
|
||||
enum AVRounding {
|
||||
AV_ROUND_ZERO = 0, ///< Round toward zero.
|
||||
AV_ROUND_INF = 1, ///< Round away from zero.
|
||||
AV_ROUND_DOWN = 2, ///< Round toward -infinity.
|
||||
AV_ROUND_UP = 3, ///< Round toward +infinity.
|
||||
AV_ROUND_NEAR_INF = 5, ///< Round to nearest and halfway cases away from zero.
|
||||
AV_ROUND_PASS_MINMAX = 8192, ///< Flag to pass INT64_MIN/MAX through instead of rescaling, this avoids special cases for AV_NOPTS_VALUE
|
||||
};
|
||||
|
||||
/**
|
||||
* Return the greatest common divisor of a and b.
|
||||
* If both a and b are 0 or either or both are <0 then behavior is
|
||||
* undefined.
|
||||
*/
|
||||
int64_t av_const av_gcd(int64_t a, int64_t b);
|
||||
|
||||
/**
|
||||
* Rescale a 64-bit integer with rounding to nearest.
|
||||
* A simple a*b/c isn't possible as it can overflow.
|
||||
*/
|
||||
int64_t av_rescale(int64_t a, int64_t b, int64_t c) av_const;
|
||||
|
||||
/**
|
||||
* Rescale a 64-bit integer with specified rounding.
|
||||
* A simple a*b/c isn't possible as it can overflow.
|
||||
*
|
||||
* @return rescaled value a, or if AV_ROUND_PASS_MINMAX is set and a is
|
||||
* INT64_MIN or INT64_MAX then a is passed through unchanged.
|
||||
*/
|
||||
int64_t av_rescale_rnd(int64_t a, int64_t b, int64_t c, enum AVRounding) av_const;
|
||||
|
||||
/**
|
||||
* Rescale a 64-bit integer by 2 rational numbers.
|
||||
*/
|
||||
int64_t av_rescale_q(int64_t a, AVRational bq, AVRational cq) av_const;
|
||||
|
||||
/**
|
||||
* Rescale a 64-bit integer by 2 rational numbers with specified rounding.
|
||||
*
|
||||
* @return rescaled value a, or if AV_ROUND_PASS_MINMAX is set and a is
|
||||
* INT64_MIN or INT64_MAX then a is passed through unchanged.
|
||||
*/
|
||||
int64_t av_rescale_q_rnd(int64_t a, AVRational bq, AVRational cq,
|
||||
enum AVRounding) av_const;
|
||||
|
||||
/**
|
||||
* Compare 2 timestamps each in its own timebases.
|
||||
* The result of the function is undefined if one of the timestamps
|
||||
* is outside the int64_t range when represented in the others timebase.
|
||||
* @return -1 if ts_a is before ts_b, 1 if ts_a is after ts_b or 0 if they represent the same position
|
||||
*/
|
||||
int av_compare_ts(int64_t ts_a, AVRational tb_a, int64_t ts_b, AVRational tb_b);
|
||||
|
||||
/**
|
||||
* Compare 2 integers modulo mod.
|
||||
* That is we compare integers a and b for which only the least
|
||||
* significant log2(mod) bits are known.
|
||||
*
|
||||
* @param mod must be a power of 2
|
||||
* @return a negative value if a is smaller than b
|
||||
* a positive value if a is greater than b
|
||||
* 0 if a equals b
|
||||
*/
|
||||
int64_t av_compare_mod(uint64_t a, uint64_t b, uint64_t mod);
|
||||
|
||||
/**
|
||||
* Rescale a timestamp while preserving known durations.
|
||||
*
|
||||
* @param in_ts Input timestamp
|
||||
* @param in_tb Input timesbase
|
||||
* @param fs_tb Duration and *last timebase
|
||||
* @param duration duration till the next call
|
||||
* @param out_tb Output timesbase
|
||||
*/
|
||||
int64_t av_rescale_delta(AVRational in_tb, int64_t in_ts, AVRational fs_tb, int duration, int64_t *last, AVRational out_tb);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
#endif /* AVUTIL_MATHEMATICS_H */
|
||||
81
3rdparty/include/ffmpeg_/libavutil/md5.h
vendored
81
3rdparty/include/ffmpeg_/libavutil/md5.h
vendored
@@ -1,81 +0,0 @@
|
||||
/*
|
||||
* copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at>
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef AVUTIL_MD5_H
|
||||
#define AVUTIL_MD5_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "attributes.h"
|
||||
#include "version.h"
|
||||
|
||||
/**
|
||||
* @defgroup lavu_md5 MD5
|
||||
* @ingroup lavu_crypto
|
||||
* @{
|
||||
*/
|
||||
|
||||
extern const int av_md5_size;
|
||||
|
||||
struct AVMD5;
|
||||
|
||||
/**
|
||||
* Allocate an AVMD5 context.
|
||||
*/
|
||||
struct AVMD5 *av_md5_alloc(void);
|
||||
|
||||
/**
|
||||
* Initialize MD5 hashing.
|
||||
*
|
||||
* @param ctx pointer to the function context (of size av_md5_size)
|
||||
*/
|
||||
void av_md5_init(struct AVMD5 *ctx);
|
||||
|
||||
/**
|
||||
* Update hash value.
|
||||
*
|
||||
* @param ctx hash function context
|
||||
* @param src input data to update hash with
|
||||
* @param len input data length
|
||||
*/
|
||||
void av_md5_update(struct AVMD5 *ctx, const uint8_t *src, int len);
|
||||
|
||||
/**
|
||||
* Finish hashing and output digest value.
|
||||
*
|
||||
* @param ctx hash function context
|
||||
* @param dst buffer where output digest value is stored
|
||||
*/
|
||||
void av_md5_final(struct AVMD5 *ctx, uint8_t *dst);
|
||||
|
||||
/**
|
||||
* Hash an array of data.
|
||||
*
|
||||
* @param dst The output buffer to write the digest into
|
||||
* @param src The data to hash
|
||||
* @param len The length of the data, in bytes
|
||||
*/
|
||||
void av_md5_sum(uint8_t *dst, const uint8_t *src, const int len);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
#endif /* AVUTIL_MD5_H */
|
||||
307
3rdparty/include/ffmpeg_/libavutil/mem.h
vendored
307
3rdparty/include/ffmpeg_/libavutil/mem.h
vendored
@@ -1,307 +0,0 @@
|
||||
/*
|
||||
* copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at>
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file
|
||||
* memory handling functions
|
||||
*/
|
||||
|
||||
#ifndef AVUTIL_MEM_H
|
||||
#define AVUTIL_MEM_H
|
||||
|
||||
#include <limits.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#include "attributes.h"
|
||||
#include "error.h"
|
||||
#include "avutil.h"
|
||||
|
||||
/**
|
||||
* @addtogroup lavu_mem
|
||||
* @{
|
||||
*/
|
||||
|
||||
|
||||
#if defined(__INTEL_COMPILER) && __INTEL_COMPILER < 1110 || defined(__SUNPRO_C)
|
||||
#define DECLARE_ALIGNED(n,t,v) t __attribute__ ((aligned (n))) v
|
||||
#define DECLARE_ASM_CONST(n,t,v) const t __attribute__ ((aligned (n))) v
|
||||
#elif defined(__TI_COMPILER_VERSION__)
|
||||
#define DECLARE_ALIGNED(n,t,v) \
|
||||
AV_PRAGMA(DATA_ALIGN(v,n)) \
|
||||
t __attribute__((aligned(n))) v
|
||||
#define DECLARE_ASM_CONST(n,t,v) \
|
||||
AV_PRAGMA(DATA_ALIGN(v,n)) \
|
||||
static const t __attribute__((aligned(n))) v
|
||||
#elif defined(__GNUC__)
|
||||
#define DECLARE_ALIGNED(n,t,v) t __attribute__ ((aligned (n))) v
|
||||
#define DECLARE_ASM_CONST(n,t,v) static const t av_used __attribute__ ((aligned (n))) v
|
||||
#elif defined(_MSC_VER)
|
||||
#define DECLARE_ALIGNED(n,t,v) __declspec(align(n)) t v
|
||||
#define DECLARE_ASM_CONST(n,t,v) __declspec(align(n)) static const t v
|
||||
#else
|
||||
#define DECLARE_ALIGNED(n,t,v) t v
|
||||
#define DECLARE_ASM_CONST(n,t,v) static const t v
|
||||
#endif
|
||||
|
||||
#if AV_GCC_VERSION_AT_LEAST(3,1)
|
||||
#define av_malloc_attrib __attribute__((__malloc__))
|
||||
#else
|
||||
#define av_malloc_attrib
|
||||
#endif
|
||||
|
||||
#if AV_GCC_VERSION_AT_LEAST(4,3)
|
||||
#define av_alloc_size(...) __attribute__((alloc_size(__VA_ARGS__)))
|
||||
#else
|
||||
#define av_alloc_size(...)
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Allocate a block of size bytes with alignment suitable for all
|
||||
* memory accesses (including vectors if available on the CPU).
|
||||
* @param size Size in bytes for the memory block to be allocated.
|
||||
* @return Pointer to the allocated block, NULL if the block cannot
|
||||
* be allocated.
|
||||
* @see av_mallocz()
|
||||
*/
|
||||
void *av_malloc(size_t size) av_malloc_attrib av_alloc_size(1);
|
||||
|
||||
/**
|
||||
* Helper function to allocate a block of size * nmemb bytes with
|
||||
* using av_malloc()
|
||||
* @param nmemb Number of elements
|
||||
* @param size Size of the single element
|
||||
* @return Pointer to the allocated block, NULL if the block cannot
|
||||
* be allocated.
|
||||
* @see av_malloc()
|
||||
*/
|
||||
av_alloc_size(1, 2) static inline void *av_malloc_array(size_t nmemb, size_t size)
|
||||
{
|
||||
if (size <= 0 || nmemb >= INT_MAX / size)
|
||||
return NULL;
|
||||
return av_malloc(nmemb * size);
|
||||
}
|
||||
|
||||
/**
|
||||
* Allocate or reallocate a block of memory.
|
||||
* If ptr is NULL and size > 0, allocate a new block. If
|
||||
* size is zero, free the memory block pointed to by ptr.
|
||||
* @param ptr Pointer to a memory block already allocated with
|
||||
* av_malloc(z)() or av_realloc() or NULL.
|
||||
* @param size Size in bytes for the memory block to be allocated or
|
||||
* reallocated.
|
||||
* @return Pointer to a newly reallocated block or NULL if the block
|
||||
* cannot be reallocated or the function is used to free the memory block.
|
||||
* @see av_fast_realloc()
|
||||
*/
|
||||
void *av_realloc(void *ptr, size_t size) av_alloc_size(2);
|
||||
|
||||
/**
|
||||
* Allocate or reallocate a block of memory.
|
||||
* This function does the same thing as av_realloc, except:
|
||||
* - It takes two arguments and checks the result of the multiplication for
|
||||
* integer overflow.
|
||||
* - It frees the input block in case of failure, thus avoiding the memory
|
||||
* leak with the classic "buf = realloc(buf); if (!buf) return -1;".
|
||||
*/
|
||||
void *av_realloc_f(void *ptr, size_t nelem, size_t elsize);
|
||||
|
||||
/**
|
||||
* Allocate or reallocate an array.
|
||||
* If ptr is NULL and nmemb > 0, allocate a new block. If
|
||||
* nmemb is zero, free the memory block pointed to by ptr.
|
||||
* @param ptr Pointer to a memory block already allocated with
|
||||
* av_malloc(z)() or av_realloc() or NULL.
|
||||
* @param nmemb Number of elements
|
||||
* @param size Size of the single element
|
||||
* @return Pointer to a newly reallocated block or NULL if the block
|
||||
* cannot be reallocated or the function is used to free the memory block.
|
||||
*/
|
||||
av_alloc_size(2, 3) void *av_realloc_array(void *ptr, size_t nmemb, size_t size);
|
||||
|
||||
/**
|
||||
* Allocate or reallocate an array.
|
||||
* If *ptr is NULL and nmemb > 0, allocate a new block. If
|
||||
* nmemb is zero, free the memory block pointed to by ptr.
|
||||
* @param ptr Pointer to a pointer to a memory block already allocated
|
||||
* with av_malloc(z)() or av_realloc(), or pointer to a pointer to NULL.
|
||||
* The pointer is updated on success, or freed on failure.
|
||||
* @param nmemb Number of elements
|
||||
* @param size Size of the single element
|
||||
* @return Zero on success, an AVERROR error code on failure.
|
||||
*/
|
||||
av_alloc_size(2, 3) int av_reallocp_array(void *ptr, size_t nmemb, size_t size);
|
||||
|
||||
/**
|
||||
* Free a memory block which has been allocated with av_malloc(z)() or
|
||||
* av_realloc().
|
||||
* @param ptr Pointer to the memory block which should be freed.
|
||||
* @note ptr = NULL is explicitly allowed.
|
||||
* @note It is recommended that you use av_freep() instead.
|
||||
* @see av_freep()
|
||||
*/
|
||||
void av_free(void *ptr);
|
||||
|
||||
/**
|
||||
* Allocate a block of size bytes with alignment suitable for all
|
||||
* memory accesses (including vectors if available on the CPU) and
|
||||
* zero all the bytes of the block.
|
||||
* @param size Size in bytes for the memory block to be allocated.
|
||||
* @return Pointer to the allocated block, NULL if it cannot be allocated.
|
||||
* @see av_malloc()
|
||||
*/
|
||||
void *av_mallocz(size_t size) av_malloc_attrib av_alloc_size(1);
|
||||
|
||||
/**
|
||||
* Allocate a block of nmemb * size bytes with alignment suitable for all
|
||||
* memory accesses (including vectors if available on the CPU) and
|
||||
* zero all the bytes of the block.
|
||||
* The allocation will fail if nmemb * size is greater than or equal
|
||||
* to INT_MAX.
|
||||
* @param nmemb
|
||||
* @param size
|
||||
* @return Pointer to the allocated block, NULL if it cannot be allocated.
|
||||
*/
|
||||
void *av_calloc(size_t nmemb, size_t size) av_malloc_attrib;
|
||||
|
||||
/**
|
||||
* Helper function to allocate a block of size * nmemb bytes with
|
||||
* using av_mallocz()
|
||||
* @param nmemb Number of elements
|
||||
* @param size Size of the single element
|
||||
* @return Pointer to the allocated block, NULL if the block cannot
|
||||
* be allocated.
|
||||
* @see av_mallocz()
|
||||
* @see av_malloc_array()
|
||||
*/
|
||||
av_alloc_size(1, 2) static inline void *av_mallocz_array(size_t nmemb, size_t size)
|
||||
{
|
||||
if (size <= 0 || nmemb >= INT_MAX / size)
|
||||
return NULL;
|
||||
return av_mallocz(nmemb * size);
|
||||
}
|
||||
|
||||
/**
|
||||
* Duplicate the string s.
|
||||
* @param s string to be duplicated
|
||||
* @return Pointer to a newly allocated string containing a
|
||||
* copy of s or NULL if the string cannot be allocated.
|
||||
*/
|
||||
char *av_strdup(const char *s) av_malloc_attrib;
|
||||
|
||||
/**
|
||||
* Duplicate the buffer p.
|
||||
* @param p buffer to be duplicated
|
||||
* @return Pointer to a newly allocated buffer containing a
|
||||
* copy of p or NULL if the buffer cannot be allocated.
|
||||
*/
|
||||
void *av_memdup(const void *p, size_t size);
|
||||
|
||||
/**
|
||||
* Free a memory block which has been allocated with av_malloc(z)() or
|
||||
* av_realloc() and set the pointer pointing to it to NULL.
|
||||
* @param ptr Pointer to the pointer to the memory block which should
|
||||
* be freed.
|
||||
* @see av_free()
|
||||
*/
|
||||
void av_freep(void *ptr);
|
||||
|
||||
/**
|
||||
* Add an element to a dynamic array.
|
||||
*
|
||||
* The array to grow is supposed to be an array of pointers to
|
||||
* structures, and the element to add must be a pointer to an already
|
||||
* allocated structure.
|
||||
*
|
||||
* The array is reallocated when its size reaches powers of 2.
|
||||
* Therefore, the amortized cost of adding an element is constant.
|
||||
*
|
||||
* In case of success, the pointer to the array is updated in order to
|
||||
* point to the new grown array, and the number pointed to by nb_ptr
|
||||
* is incremented.
|
||||
* In case of failure, the array is freed, *tab_ptr is set to NULL and
|
||||
* *nb_ptr is set to 0.
|
||||
*
|
||||
* @param tab_ptr pointer to the array to grow
|
||||
* @param nb_ptr pointer to the number of elements in the array
|
||||
* @param elem element to add
|
||||
* @see av_dynarray2_add()
|
||||
*/
|
||||
void av_dynarray_add(void *tab_ptr, int *nb_ptr, void *elem);
|
||||
|
||||
/**
|
||||
* Add an element of size elem_size to a dynamic array.
|
||||
*
|
||||
* The array is reallocated when its number of elements reaches powers of 2.
|
||||
* Therefore, the amortized cost of adding an element is constant.
|
||||
*
|
||||
* In case of success, the pointer to the array is updated in order to
|
||||
* point to the new grown array, and the number pointed to by nb_ptr
|
||||
* is incremented.
|
||||
* In case of failure, the array is freed, *tab_ptr is set to NULL and
|
||||
* *nb_ptr is set to 0.
|
||||
*
|
||||
* @param tab_ptr pointer to the array to grow
|
||||
* @param nb_ptr pointer to the number of elements in the array
|
||||
* @param elem_size size in bytes of the elements in the array
|
||||
* @param elem_data pointer to the data of the element to add. If NULL, the space of
|
||||
* the new added element is not filled.
|
||||
* @return pointer to the data of the element to copy in the new allocated space.
|
||||
* If NULL, the new allocated space is left uninitialized."
|
||||
* @see av_dynarray_add()
|
||||
*/
|
||||
void *av_dynarray2_add(void **tab_ptr, int *nb_ptr, size_t elem_size,
|
||||
const uint8_t *elem_data);
|
||||
|
||||
/**
|
||||
* Multiply two size_t values checking for overflow.
|
||||
* @return 0 if success, AVERROR(EINVAL) if overflow.
|
||||
*/
|
||||
static inline int av_size_mult(size_t a, size_t b, size_t *r)
|
||||
{
|
||||
size_t t = a * b;
|
||||
/* Hack inspired from glibc: only try the division if nelem and elsize
|
||||
* are both greater than sqrt(SIZE_MAX). */
|
||||
if ((a | b) >= ((size_t)1 << (sizeof(size_t) * 4)) && a && t / a != b)
|
||||
return AVERROR(EINVAL);
|
||||
*r = t;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the maximum size that may me allocated in one block.
|
||||
*/
|
||||
void av_max_alloc(size_t max);
|
||||
|
||||
/**
|
||||
* @brief deliberately overlapping memcpy implementation
|
||||
* @param dst destination buffer
|
||||
* @param back how many bytes back we start (the initial size of the overlapping window), must be > 0
|
||||
* @param cnt number of bytes to copy, must be >= 0
|
||||
*
|
||||
* cnt > back is valid, this will copy the bytes we just copied,
|
||||
* thus creating a repeating pattern with a period length of back.
|
||||
*/
|
||||
void av_memcpy_backptr(uint8_t *dst, int back, int cnt);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
#endif /* AVUTIL_MEM_H */
|
||||
32
3rdparty/include/ffmpeg_/libavutil/murmur3.h
vendored
32
3rdparty/include/ffmpeg_/libavutil/murmur3.h
vendored
@@ -1,32 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2013 Reimar Döffinger <Reimar.Doeffinger@gmx.de>
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef AVUTIL_MURMUR3_H
|
||||
#define AVUTIL_MURMUR3_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
struct AVMurMur3 *av_murmur3_alloc(void);
|
||||
void av_murmur3_init_seeded(struct AVMurMur3 *c, uint64_t seed);
|
||||
void av_murmur3_init(struct AVMurMur3 *c);
|
||||
void av_murmur3_update(struct AVMurMur3 *c, const uint8_t *src, int len);
|
||||
void av_murmur3_final(struct AVMurMur3 *c, uint8_t dst[16]);
|
||||
|
||||
#endif /* AVUTIL_MURMUR3_H */
|
||||
171
3rdparty/include/ffmpeg_/libavutil/old_pix_fmts.h
vendored
171
3rdparty/include/ffmpeg_/libavutil/old_pix_fmts.h
vendored
@@ -1,171 +0,0 @@
|
||||
/*
|
||||
* copyright (c) 2006-2012 Michael Niedermayer <michaelni@gmx.at>
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef AVUTIL_OLD_PIX_FMTS_H
|
||||
#define AVUTIL_OLD_PIX_FMTS_H
|
||||
|
||||
/*
|
||||
* This header exists to prevent new pixel formats from being accidentally added
|
||||
* to the deprecated list.
|
||||
* Do not include it directly. It will be removed on next major bump
|
||||
*
|
||||
* Do not add new items to this list. Use the AVPixelFormat enum instead.
|
||||
*/
|
||||
PIX_FMT_NONE = AV_PIX_FMT_NONE,
|
||||
PIX_FMT_YUV420P, ///< planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples)
|
||||
PIX_FMT_YUYV422, ///< packed YUV 4:2:2, 16bpp, Y0 Cb Y1 Cr
|
||||
PIX_FMT_RGB24, ///< packed RGB 8:8:8, 24bpp, RGBRGB...
|
||||
PIX_FMT_BGR24, ///< packed RGB 8:8:8, 24bpp, BGRBGR...
|
||||
PIX_FMT_YUV422P, ///< planar YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples)
|
||||
PIX_FMT_YUV444P, ///< planar YUV 4:4:4, 24bpp, (1 Cr & Cb sample per 1x1 Y samples)
|
||||
PIX_FMT_YUV410P, ///< planar YUV 4:1:0, 9bpp, (1 Cr & Cb sample per 4x4 Y samples)
|
||||
PIX_FMT_YUV411P, ///< planar YUV 4:1:1, 12bpp, (1 Cr & Cb sample per 4x1 Y samples)
|
||||
PIX_FMT_GRAY8, ///< Y , 8bpp
|
||||
PIX_FMT_MONOWHITE, ///< Y , 1bpp, 0 is white, 1 is black, in each byte pixels are ordered from the msb to the lsb
|
||||
PIX_FMT_MONOBLACK, ///< Y , 1bpp, 0 is black, 1 is white, in each byte pixels are ordered from the msb to the lsb
|
||||
PIX_FMT_PAL8, ///< 8 bit with PIX_FMT_RGB32 palette
|
||||
PIX_FMT_YUVJ420P, ///< planar YUV 4:2:0, 12bpp, full scale (JPEG), deprecated in favor of PIX_FMT_YUV420P and setting color_range
|
||||
PIX_FMT_YUVJ422P, ///< planar YUV 4:2:2, 16bpp, full scale (JPEG), deprecated in favor of PIX_FMT_YUV422P and setting color_range
|
||||
PIX_FMT_YUVJ444P, ///< planar YUV 4:4:4, 24bpp, full scale (JPEG), deprecated in favor of PIX_FMT_YUV444P and setting color_range
|
||||
PIX_FMT_XVMC_MPEG2_MC,///< XVideo Motion Acceleration via common packet passing
|
||||
PIX_FMT_XVMC_MPEG2_IDCT,
|
||||
PIX_FMT_UYVY422, ///< packed YUV 4:2:2, 16bpp, Cb Y0 Cr Y1
|
||||
PIX_FMT_UYYVYY411, ///< packed YUV 4:1:1, 12bpp, Cb Y0 Y1 Cr Y2 Y3
|
||||
PIX_FMT_BGR8, ///< packed RGB 3:3:2, 8bpp, (msb)2B 3G 3R(lsb)
|
||||
PIX_FMT_BGR4, ///< packed RGB 1:2:1 bitstream, 4bpp, (msb)1B 2G 1R(lsb), a byte contains two pixels, the first pixel in the byte is the one composed by the 4 msb bits
|
||||
PIX_FMT_BGR4_BYTE, ///< packed RGB 1:2:1, 8bpp, (msb)1B 2G 1R(lsb)
|
||||
PIX_FMT_RGB8, ///< packed RGB 3:3:2, 8bpp, (msb)2R 3G 3B(lsb)
|
||||
PIX_FMT_RGB4, ///< packed RGB 1:2:1 bitstream, 4bpp, (msb)1R 2G 1B(lsb), a byte contains two pixels, the first pixel in the byte is the one composed by the 4 msb bits
|
||||
PIX_FMT_RGB4_BYTE, ///< packed RGB 1:2:1, 8bpp, (msb)1R 2G 1B(lsb)
|
||||
PIX_FMT_NV12, ///< planar YUV 4:2:0, 12bpp, 1 plane for Y and 1 plane for the UV components, which are interleaved (first byte U and the following byte V)
|
||||
PIX_FMT_NV21, ///< as above, but U and V bytes are swapped
|
||||
|
||||
PIX_FMT_ARGB, ///< packed ARGB 8:8:8:8, 32bpp, ARGBARGB...
|
||||
PIX_FMT_RGBA, ///< packed RGBA 8:8:8:8, 32bpp, RGBARGBA...
|
||||
PIX_FMT_ABGR, ///< packed ABGR 8:8:8:8, 32bpp, ABGRABGR...
|
||||
PIX_FMT_BGRA, ///< packed BGRA 8:8:8:8, 32bpp, BGRABGRA...
|
||||
|
||||
PIX_FMT_GRAY16BE, ///< Y , 16bpp, big-endian
|
||||
PIX_FMT_GRAY16LE, ///< Y , 16bpp, little-endian
|
||||
PIX_FMT_YUV440P, ///< planar YUV 4:4:0 (1 Cr & Cb sample per 1x2 Y samples)
|
||||
PIX_FMT_YUVJ440P, ///< planar YUV 4:4:0 full scale (JPEG), deprecated in favor of PIX_FMT_YUV440P and setting color_range
|
||||
PIX_FMT_YUVA420P, ///< planar YUV 4:2:0, 20bpp, (1 Cr & Cb sample per 2x2 Y & A samples)
|
||||
PIX_FMT_VDPAU_H264,///< H.264 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers
|
||||
PIX_FMT_VDPAU_MPEG1,///< MPEG-1 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers
|
||||
PIX_FMT_VDPAU_MPEG2,///< MPEG-2 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers
|
||||
PIX_FMT_VDPAU_WMV3,///< WMV3 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers
|
||||
PIX_FMT_VDPAU_VC1, ///< VC-1 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers
|
||||
PIX_FMT_RGB48BE, ///< packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as big-endian
|
||||
PIX_FMT_RGB48LE, ///< packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as little-endian
|
||||
|
||||
PIX_FMT_RGB565BE, ///< packed RGB 5:6:5, 16bpp, (msb) 5R 6G 5B(lsb), big-endian
|
||||
PIX_FMT_RGB565LE, ///< packed RGB 5:6:5, 16bpp, (msb) 5R 6G 5B(lsb), little-endian
|
||||
PIX_FMT_RGB555BE, ///< packed RGB 5:5:5, 16bpp, (msb)1A 5R 5G 5B(lsb), big-endian, most significant bit to 0
|
||||
PIX_FMT_RGB555LE, ///< packed RGB 5:5:5, 16bpp, (msb)1A 5R 5G 5B(lsb), little-endian, most significant bit to 0
|
||||
|
||||
PIX_FMT_BGR565BE, ///< packed BGR 5:6:5, 16bpp, (msb) 5B 6G 5R(lsb), big-endian
|
||||
PIX_FMT_BGR565LE, ///< packed BGR 5:6:5, 16bpp, (msb) 5B 6G 5R(lsb), little-endian
|
||||
PIX_FMT_BGR555BE, ///< packed BGR 5:5:5, 16bpp, (msb)1A 5B 5G 5R(lsb), big-endian, most significant bit to 1
|
||||
PIX_FMT_BGR555LE, ///< packed BGR 5:5:5, 16bpp, (msb)1A 5B 5G 5R(lsb), little-endian, most significant bit to 1
|
||||
|
||||
PIX_FMT_VAAPI_MOCO, ///< HW acceleration through VA API at motion compensation entry-point, Picture.data[3] contains a vaapi_render_state struct which contains macroblocks as well as various fields extracted from headers
|
||||
PIX_FMT_VAAPI_IDCT, ///< HW acceleration through VA API at IDCT entry-point, Picture.data[3] contains a vaapi_render_state struct which contains fields extracted from headers
|
||||
PIX_FMT_VAAPI_VLD, ///< HW decoding through VA API, Picture.data[3] contains a vaapi_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers
|
||||
|
||||
PIX_FMT_YUV420P16LE, ///< planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
|
||||
PIX_FMT_YUV420P16BE, ///< planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian
|
||||
PIX_FMT_YUV422P16LE, ///< planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
|
||||
PIX_FMT_YUV422P16BE, ///< planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
|
||||
PIX_FMT_YUV444P16LE, ///< planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
|
||||
PIX_FMT_YUV444P16BE, ///< planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
|
||||
PIX_FMT_VDPAU_MPEG4, ///< MPEG4 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers
|
||||
PIX_FMT_DXVA2_VLD, ///< HW decoding through DXVA2, Picture.data[3] contains a LPDIRECT3DSURFACE9 pointer
|
||||
|
||||
PIX_FMT_RGB444LE, ///< packed RGB 4:4:4, 16bpp, (msb)4A 4R 4G 4B(lsb), little-endian, most significant bits to 0
|
||||
PIX_FMT_RGB444BE, ///< packed RGB 4:4:4, 16bpp, (msb)4A 4R 4G 4B(lsb), big-endian, most significant bits to 0
|
||||
PIX_FMT_BGR444LE, ///< packed BGR 4:4:4, 16bpp, (msb)4A 4B 4G 4R(lsb), little-endian, most significant bits to 1
|
||||
PIX_FMT_BGR444BE, ///< packed BGR 4:4:4, 16bpp, (msb)4A 4B 4G 4R(lsb), big-endian, most significant bits to 1
|
||||
PIX_FMT_GRAY8A, ///< 8bit gray, 8bit alpha
|
||||
PIX_FMT_BGR48BE, ///< packed RGB 16:16:16, 48bpp, 16B, 16G, 16R, the 2-byte value for each R/G/B component is stored as big-endian
|
||||
PIX_FMT_BGR48LE, ///< packed RGB 16:16:16, 48bpp, 16B, 16G, 16R, the 2-byte value for each R/G/B component is stored as little-endian
|
||||
|
||||
//the following 10 formats have the disadvantage of needing 1 format for each bit depth, thus
|
||||
//If you want to support multiple bit depths, then using PIX_FMT_YUV420P16* with the bpp stored separately
|
||||
//is better
|
||||
PIX_FMT_YUV420P9BE, ///< planar YUV 4:2:0, 13.5bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian
|
||||
PIX_FMT_YUV420P9LE, ///< planar YUV 4:2:0, 13.5bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
|
||||
PIX_FMT_YUV420P10BE,///< planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian
|
||||
PIX_FMT_YUV420P10LE,///< planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
|
||||
PIX_FMT_YUV422P10BE,///< planar YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
|
||||
PIX_FMT_YUV422P10LE,///< planar YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
|
||||
PIX_FMT_YUV444P9BE, ///< planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
|
||||
PIX_FMT_YUV444P9LE, ///< planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
|
||||
PIX_FMT_YUV444P10BE,///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
|
||||
PIX_FMT_YUV444P10LE,///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
|
||||
PIX_FMT_YUV422P9BE, ///< planar YUV 4:2:2, 18bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
|
||||
PIX_FMT_YUV422P9LE, ///< planar YUV 4:2:2, 18bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
|
||||
PIX_FMT_VDA_VLD, ///< hardware decoding through VDA
|
||||
|
||||
#ifdef AV_PIX_FMT_ABI_GIT_MASTER
|
||||
PIX_FMT_RGBA64BE, ///< packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is stored as big-endian
|
||||
PIX_FMT_RGBA64LE, ///< packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is stored as little-endian
|
||||
PIX_FMT_BGRA64BE, ///< packed RGBA 16:16:16:16, 64bpp, 16B, 16G, 16R, 16A, the 2-byte value for each R/G/B/A component is stored as big-endian
|
||||
PIX_FMT_BGRA64LE, ///< packed RGBA 16:16:16:16, 64bpp, 16B, 16G, 16R, 16A, the 2-byte value for each R/G/B/A component is stored as little-endian
|
||||
#endif
|
||||
PIX_FMT_GBRP, ///< planar GBR 4:4:4 24bpp
|
||||
PIX_FMT_GBRP9BE, ///< planar GBR 4:4:4 27bpp, big endian
|
||||
PIX_FMT_GBRP9LE, ///< planar GBR 4:4:4 27bpp, little endian
|
||||
PIX_FMT_GBRP10BE, ///< planar GBR 4:4:4 30bpp, big endian
|
||||
PIX_FMT_GBRP10LE, ///< planar GBR 4:4:4 30bpp, little endian
|
||||
PIX_FMT_GBRP16BE, ///< planar GBR 4:4:4 48bpp, big endian
|
||||
PIX_FMT_GBRP16LE, ///< planar GBR 4:4:4 48bpp, little endian
|
||||
|
||||
#ifndef AV_PIX_FMT_ABI_GIT_MASTER
|
||||
PIX_FMT_RGBA64BE=0x123, ///< packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is stored as big-endian
|
||||
PIX_FMT_RGBA64LE, ///< packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is stored as little-endian
|
||||
PIX_FMT_BGRA64BE, ///< packed RGBA 16:16:16:16, 64bpp, 16B, 16G, 16R, 16A, the 2-byte value for each R/G/B/A component is stored as big-endian
|
||||
PIX_FMT_BGRA64LE, ///< packed RGBA 16:16:16:16, 64bpp, 16B, 16G, 16R, 16A, the 2-byte value for each R/G/B/A component is stored as little-endian
|
||||
#endif
|
||||
PIX_FMT_0RGB=0x123+4, ///< packed RGB 8:8:8, 32bpp, 0RGB0RGB...
|
||||
PIX_FMT_RGB0, ///< packed RGB 8:8:8, 32bpp, RGB0RGB0...
|
||||
PIX_FMT_0BGR, ///< packed BGR 8:8:8, 32bpp, 0BGR0BGR...
|
||||
PIX_FMT_BGR0, ///< packed BGR 8:8:8, 32bpp, BGR0BGR0...
|
||||
PIX_FMT_YUVA444P, ///< planar YUV 4:4:4 32bpp, (1 Cr & Cb sample per 1x1 Y & A samples)
|
||||
PIX_FMT_YUVA422P, ///< planar YUV 4:2:2 24bpp, (1 Cr & Cb sample per 2x1 Y & A samples)
|
||||
|
||||
PIX_FMT_YUV420P12BE, ///< planar YUV 4:2:0,18bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian
|
||||
PIX_FMT_YUV420P12LE, ///< planar YUV 4:2:0,18bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
|
||||
PIX_FMT_YUV420P14BE, ///< planar YUV 4:2:0,21bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian
|
||||
PIX_FMT_YUV420P14LE, ///< planar YUV 4:2:0,21bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
|
||||
PIX_FMT_YUV422P12BE, ///< planar YUV 4:2:2,24bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
|
||||
PIX_FMT_YUV422P12LE, ///< planar YUV 4:2:2,24bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
|
||||
PIX_FMT_YUV422P14BE, ///< planar YUV 4:2:2,28bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
|
||||
PIX_FMT_YUV422P14LE, ///< planar YUV 4:2:2,28bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
|
||||
PIX_FMT_YUV444P12BE, ///< planar YUV 4:4:4,36bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
|
||||
PIX_FMT_YUV444P12LE, ///< planar YUV 4:4:4,36bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
|
||||
PIX_FMT_YUV444P14BE, ///< planar YUV 4:4:4,42bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
|
||||
PIX_FMT_YUV444P14LE, ///< planar YUV 4:4:4,42bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
|
||||
PIX_FMT_GBRP12BE, ///< planar GBR 4:4:4 36bpp, big endian
|
||||
PIX_FMT_GBRP12LE, ///< planar GBR 4:4:4 36bpp, little endian
|
||||
PIX_FMT_GBRP14BE, ///< planar GBR 4:4:4 42bpp, big endian
|
||||
PIX_FMT_GBRP14LE, ///< planar GBR 4:4:4 42bpp, little endian
|
||||
|
||||
PIX_FMT_NB, ///< number of pixel formats, DO NOT USE THIS if you want to link with shared libav* because the number of formats might differ between versions
|
||||
#endif /* AVUTIL_OLD_PIX_FMTS_H */
|
||||
754
3rdparty/include/ffmpeg_/libavutil/opt.h
vendored
754
3rdparty/include/ffmpeg_/libavutil/opt.h
vendored
@@ -1,754 +0,0 @@
|
||||
/*
|
||||
* AVOptions
|
||||
* copyright (c) 2005 Michael Niedermayer <michaelni@gmx.at>
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef AVUTIL_OPT_H
|
||||
#define AVUTIL_OPT_H
|
||||
|
||||
/**
|
||||
* @file
|
||||
* AVOptions
|
||||
*/
|
||||
|
||||
#include "rational.h"
|
||||
#include "avutil.h"
|
||||
#include "dict.h"
|
||||
#include "log.h"
|
||||
#include "pixfmt.h"
|
||||
#include "samplefmt.h"
|
||||
|
||||
/**
|
||||
* @defgroup avoptions AVOptions
|
||||
* @ingroup lavu_data
|
||||
* @{
|
||||
* AVOptions provide a generic system to declare options on arbitrary structs
|
||||
* ("objects"). An option can have a help text, a type and a range of possible
|
||||
* values. Options may then be enumerated, read and written to.
|
||||
*
|
||||
* @section avoptions_implement Implementing AVOptions
|
||||
* This section describes how to add AVOptions capabilities to a struct.
|
||||
*
|
||||
* All AVOptions-related information is stored in an AVClass. Therefore
|
||||
* the first member of the struct should be a pointer to an AVClass describing it.
|
||||
* The option field of the AVClass must be set to a NULL-terminated static array
|
||||
* of AVOptions. Each AVOption must have a non-empty name, a type, a default
|
||||
* value and for number-type AVOptions also a range of allowed values. It must
|
||||
* also declare an offset in bytes from the start of the struct, where the field
|
||||
* associated with this AVOption is located. Other fields in the AVOption struct
|
||||
* should also be set when applicable, but are not required.
|
||||
*
|
||||
* The following example illustrates an AVOptions-enabled struct:
|
||||
* @code
|
||||
* typedef struct test_struct {
|
||||
* AVClass *class;
|
||||
* int int_opt;
|
||||
* char *str_opt;
|
||||
* uint8_t *bin_opt;
|
||||
* int bin_len;
|
||||
* } test_struct;
|
||||
*
|
||||
* static const AVOption options[] = {
|
||||
* { "test_int", "This is a test option of int type.", offsetof(test_struct, int_opt),
|
||||
* AV_OPT_TYPE_INT, { .i64 = -1 }, INT_MIN, INT_MAX },
|
||||
* { "test_str", "This is a test option of string type.", offsetof(test_struct, str_opt),
|
||||
* AV_OPT_TYPE_STRING },
|
||||
* { "test_bin", "This is a test option of binary type.", offsetof(test_struct, bin_opt),
|
||||
* AV_OPT_TYPE_BINARY },
|
||||
* { NULL },
|
||||
* };
|
||||
*
|
||||
* static const AVClass test_class = {
|
||||
* .class_name = "test class",
|
||||
* .item_name = av_default_item_name,
|
||||
* .option = options,
|
||||
* .version = LIBAVUTIL_VERSION_INT,
|
||||
* };
|
||||
* @endcode
|
||||
*
|
||||
* Next, when allocating your struct, you must ensure that the AVClass pointer
|
||||
* is set to the correct value. Then, av_opt_set_defaults() can be called to
|
||||
* initialize defaults. After that the struct is ready to be used with the
|
||||
* AVOptions API.
|
||||
*
|
||||
* When cleaning up, you may use the av_opt_free() function to automatically
|
||||
* free all the allocated string and binary options.
|
||||
*
|
||||
* Continuing with the above example:
|
||||
*
|
||||
* @code
|
||||
* test_struct *alloc_test_struct(void)
|
||||
* {
|
||||
* test_struct *ret = av_malloc(sizeof(*ret));
|
||||
* ret->class = &test_class;
|
||||
* av_opt_set_defaults(ret);
|
||||
* return ret;
|
||||
* }
|
||||
* void free_test_struct(test_struct **foo)
|
||||
* {
|
||||
* av_opt_free(*foo);
|
||||
* av_freep(foo);
|
||||
* }
|
||||
* @endcode
|
||||
*
|
||||
* @subsection avoptions_implement_nesting Nesting
|
||||
* It may happen that an AVOptions-enabled struct contains another
|
||||
* AVOptions-enabled struct as a member (e.g. AVCodecContext in
|
||||
* libavcodec exports generic options, while its priv_data field exports
|
||||
* codec-specific options). In such a case, it is possible to set up the
|
||||
* parent struct to export a child's options. To do that, simply
|
||||
* implement AVClass.child_next() and AVClass.child_class_next() in the
|
||||
* parent struct's AVClass.
|
||||
* Assuming that the test_struct from above now also contains a
|
||||
* child_struct field:
|
||||
*
|
||||
* @code
|
||||
* typedef struct child_struct {
|
||||
* AVClass *class;
|
||||
* int flags_opt;
|
||||
* } child_struct;
|
||||
* static const AVOption child_opts[] = {
|
||||
* { "test_flags", "This is a test option of flags type.",
|
||||
* offsetof(child_struct, flags_opt), AV_OPT_TYPE_FLAGS, { .i64 = 0 }, INT_MIN, INT_MAX },
|
||||
* { NULL },
|
||||
* };
|
||||
* static const AVClass child_class = {
|
||||
* .class_name = "child class",
|
||||
* .item_name = av_default_item_name,
|
||||
* .option = child_opts,
|
||||
* .version = LIBAVUTIL_VERSION_INT,
|
||||
* };
|
||||
*
|
||||
* void *child_next(void *obj, void *prev)
|
||||
* {
|
||||
* test_struct *t = obj;
|
||||
* if (!prev && t->child_struct)
|
||||
* return t->child_struct;
|
||||
* return NULL
|
||||
* }
|
||||
* const AVClass child_class_next(const AVClass *prev)
|
||||
* {
|
||||
* return prev ? NULL : &child_class;
|
||||
* }
|
||||
* @endcode
|
||||
* Putting child_next() and child_class_next() as defined above into
|
||||
* test_class will now make child_struct's options accessible through
|
||||
* test_struct (again, proper setup as described above needs to be done on
|
||||
* child_struct right after it is created).
|
||||
*
|
||||
* From the above example it might not be clear why both child_next()
|
||||
* and child_class_next() are needed. The distinction is that child_next()
|
||||
* iterates over actually existing objects, while child_class_next()
|
||||
* iterates over all possible child classes. E.g. if an AVCodecContext
|
||||
* was initialized to use a codec which has private options, then its
|
||||
* child_next() will return AVCodecContext.priv_data and finish
|
||||
* iterating. OTOH child_class_next() on AVCodecContext.av_class will
|
||||
* iterate over all available codecs with private options.
|
||||
*
|
||||
* @subsection avoptions_implement_named_constants Named constants
|
||||
* It is possible to create named constants for options. Simply set the unit
|
||||
* field of the option the constants should apply to to a string and
|
||||
* create the constants themselves as options of type AV_OPT_TYPE_CONST
|
||||
* with their unit field set to the same string.
|
||||
* Their default_val field should contain the value of the named
|
||||
* constant.
|
||||
* For example, to add some named constants for the test_flags option
|
||||
* above, put the following into the child_opts array:
|
||||
* @code
|
||||
* { "test_flags", "This is a test option of flags type.",
|
||||
* offsetof(child_struct, flags_opt), AV_OPT_TYPE_FLAGS, { .i64 = 0 }, INT_MIN, INT_MAX, "test_unit" },
|
||||
* { "flag1", "This is a flag with value 16", 0, AV_OPT_TYPE_CONST, { .i64 = 16 }, 0, 0, "test_unit" },
|
||||
* @endcode
|
||||
*
|
||||
* @section avoptions_use Using AVOptions
|
||||
* This section deals with accessing options in an AVOptions-enabled struct.
|
||||
* Such structs in FFmpeg are e.g. AVCodecContext in libavcodec or
|
||||
* AVFormatContext in libavformat.
|
||||
*
|
||||
* @subsection avoptions_use_examine Examining AVOptions
|
||||
* The basic functions for examining options are av_opt_next(), which iterates
|
||||
* over all options defined for one object, and av_opt_find(), which searches
|
||||
* for an option with the given name.
|
||||
*
|
||||
* The situation is more complicated with nesting. An AVOptions-enabled struct
|
||||
* may have AVOptions-enabled children. Passing the AV_OPT_SEARCH_CHILDREN flag
|
||||
* to av_opt_find() will make the function search children recursively.
|
||||
*
|
||||
* For enumerating there are basically two cases. The first is when you want to
|
||||
* get all options that may potentially exist on the struct and its children
|
||||
* (e.g. when constructing documentation). In that case you should call
|
||||
* av_opt_child_class_next() recursively on the parent struct's AVClass. The
|
||||
* second case is when you have an already initialized struct with all its
|
||||
* children and you want to get all options that can be actually written or read
|
||||
* from it. In that case you should call av_opt_child_next() recursively (and
|
||||
* av_opt_next() on each result).
|
||||
*
|
||||
* @subsection avoptions_use_get_set Reading and writing AVOptions
|
||||
* When setting options, you often have a string read directly from the
|
||||
* user. In such a case, simply passing it to av_opt_set() is enough. For
|
||||
* non-string type options, av_opt_set() will parse the string according to the
|
||||
* option type.
|
||||
*
|
||||
* Similarly av_opt_get() will read any option type and convert it to a string
|
||||
* which will be returned. Do not forget that the string is allocated, so you
|
||||
* have to free it with av_free().
|
||||
*
|
||||
* In some cases it may be more convenient to put all options into an
|
||||
* AVDictionary and call av_opt_set_dict() on it. A specific case of this
|
||||
* are the format/codec open functions in lavf/lavc which take a dictionary
|
||||
* filled with option as a parameter. This allows to set some options
|
||||
* that cannot be set otherwise, since e.g. the input file format is not known
|
||||
* before the file is actually opened.
|
||||
*/
|
||||
|
||||
enum AVOptionType{
|
||||
AV_OPT_TYPE_FLAGS,
|
||||
AV_OPT_TYPE_INT,
|
||||
AV_OPT_TYPE_INT64,
|
||||
AV_OPT_TYPE_DOUBLE,
|
||||
AV_OPT_TYPE_FLOAT,
|
||||
AV_OPT_TYPE_STRING,
|
||||
AV_OPT_TYPE_RATIONAL,
|
||||
AV_OPT_TYPE_BINARY, ///< offset must point to a pointer immediately followed by an int for the length
|
||||
AV_OPT_TYPE_CONST = 128,
|
||||
AV_OPT_TYPE_IMAGE_SIZE = MKBETAG('S','I','Z','E'), ///< offset must point to two consecutive integers
|
||||
AV_OPT_TYPE_PIXEL_FMT = MKBETAG('P','F','M','T'),
|
||||
AV_OPT_TYPE_SAMPLE_FMT = MKBETAG('S','F','M','T'),
|
||||
AV_OPT_TYPE_VIDEO_RATE = MKBETAG('V','R','A','T'), ///< offset must point to AVRational
|
||||
AV_OPT_TYPE_DURATION = MKBETAG('D','U','R',' '),
|
||||
AV_OPT_TYPE_COLOR = MKBETAG('C','O','L','R'),
|
||||
#if FF_API_OLD_AVOPTIONS
|
||||
FF_OPT_TYPE_FLAGS = 0,
|
||||
FF_OPT_TYPE_INT,
|
||||
FF_OPT_TYPE_INT64,
|
||||
FF_OPT_TYPE_DOUBLE,
|
||||
FF_OPT_TYPE_FLOAT,
|
||||
FF_OPT_TYPE_STRING,
|
||||
FF_OPT_TYPE_RATIONAL,
|
||||
FF_OPT_TYPE_BINARY, ///< offset must point to a pointer immediately followed by an int for the length
|
||||
FF_OPT_TYPE_CONST=128,
|
||||
#endif
|
||||
};
|
||||
|
||||
/**
|
||||
* AVOption
|
||||
*/
|
||||
typedef struct AVOption {
|
||||
const char *name;
|
||||
|
||||
/**
|
||||
* short English help text
|
||||
* @todo What about other languages?
|
||||
*/
|
||||
const char *help;
|
||||
|
||||
/**
|
||||
* The offset relative to the context structure where the option
|
||||
* value is stored. It should be 0 for named constants.
|
||||
*/
|
||||
int offset;
|
||||
enum AVOptionType type;
|
||||
|
||||
/**
|
||||
* the default value for scalar options
|
||||
*/
|
||||
union {
|
||||
int64_t i64;
|
||||
double dbl;
|
||||
const char *str;
|
||||
/* TODO those are unused now */
|
||||
AVRational q;
|
||||
} default_val;
|
||||
double min; ///< minimum valid value for the option
|
||||
double max; ///< maximum valid value for the option
|
||||
|
||||
int flags;
|
||||
#define AV_OPT_FLAG_ENCODING_PARAM 1 ///< a generic parameter which can be set by the user for muxing or encoding
|
||||
#define AV_OPT_FLAG_DECODING_PARAM 2 ///< a generic parameter which can be set by the user for demuxing or decoding
|
||||
#define AV_OPT_FLAG_METADATA 4 ///< some data extracted or inserted into the file like title, comment, ...
|
||||
#define AV_OPT_FLAG_AUDIO_PARAM 8
|
||||
#define AV_OPT_FLAG_VIDEO_PARAM 16
|
||||
#define AV_OPT_FLAG_SUBTITLE_PARAM 32
|
||||
#define AV_OPT_FLAG_FILTERING_PARAM (1<<16) ///< a generic parameter which can be set by the user for filtering
|
||||
//FIXME think about enc-audio, ... style flags
|
||||
|
||||
/**
|
||||
* The logical unit to which the option belongs. Non-constant
|
||||
* options and corresponding named constants share the same
|
||||
* unit. May be NULL.
|
||||
*/
|
||||
const char *unit;
|
||||
} AVOption;
|
||||
|
||||
/**
|
||||
* A single allowed range of values, or a single allowed value.
|
||||
*/
|
||||
typedef struct AVOptionRange {
|
||||
const char *str;
|
||||
double value_min, value_max; ///< For string ranges this represents the min/max length, for dimensions this represents the min/max pixel count
|
||||
double component_min, component_max; ///< For string this represents the unicode range for chars, 0-127 limits to ASCII
|
||||
int is_range; ///< if set to 1 the struct encodes a range, if set to 0 a single value
|
||||
} AVOptionRange;
|
||||
|
||||
/**
|
||||
* List of AVOptionRange structs
|
||||
*/
|
||||
typedef struct AVOptionRanges {
|
||||
AVOptionRange **range;
|
||||
int nb_ranges;
|
||||
} AVOptionRanges;
|
||||
|
||||
|
||||
#if FF_API_FIND_OPT
|
||||
/**
|
||||
* Look for an option in obj. Look only for the options which
|
||||
* have the flags set as specified in mask and flags (that is,
|
||||
* for which it is the case that opt->flags & mask == flags).
|
||||
*
|
||||
* @param[in] obj a pointer to a struct whose first element is a
|
||||
* pointer to an AVClass
|
||||
* @param[in] name the name of the option to look for
|
||||
* @param[in] unit the unit of the option to look for, or any if NULL
|
||||
* @return a pointer to the option found, or NULL if no option
|
||||
* has been found
|
||||
*
|
||||
* @deprecated use av_opt_find.
|
||||
*/
|
||||
attribute_deprecated
|
||||
const AVOption *av_find_opt(void *obj, const char *name, const char *unit, int mask, int flags);
|
||||
#endif
|
||||
|
||||
#if FF_API_OLD_AVOPTIONS
|
||||
/**
|
||||
* Set the field of obj with the given name to value.
|
||||
*
|
||||
* @param[in] obj A struct whose first element is a pointer to an
|
||||
* AVClass.
|
||||
* @param[in] name the name of the field to set
|
||||
* @param[in] val The value to set. If the field is not of a string
|
||||
* type, then the given string is parsed.
|
||||
* SI postfixes and some named scalars are supported.
|
||||
* If the field is of a numeric type, it has to be a numeric or named
|
||||
* scalar. Behavior with more than one scalar and +- infix operators
|
||||
* is undefined.
|
||||
* If the field is of a flags type, it has to be a sequence of numeric
|
||||
* scalars or named flags separated by '+' or '-'. Prefixing a flag
|
||||
* with '+' causes it to be set without affecting the other flags;
|
||||
* similarly, '-' unsets a flag.
|
||||
* @param[out] o_out if non-NULL put here a pointer to the AVOption
|
||||
* found
|
||||
* @param alloc this parameter is currently ignored
|
||||
* @return 0 if the value has been set, or an AVERROR code in case of
|
||||
* error:
|
||||
* AVERROR_OPTION_NOT_FOUND if no matching option exists
|
||||
* AVERROR(ERANGE) if the value is out of range
|
||||
* AVERROR(EINVAL) if the value is not valid
|
||||
* @deprecated use av_opt_set()
|
||||
*/
|
||||
attribute_deprecated
|
||||
int av_set_string3(void *obj, const char *name, const char *val, int alloc, const AVOption **o_out);
|
||||
|
||||
attribute_deprecated const AVOption *av_set_double(void *obj, const char *name, double n);
|
||||
attribute_deprecated const AVOption *av_set_q(void *obj, const char *name, AVRational n);
|
||||
attribute_deprecated const AVOption *av_set_int(void *obj, const char *name, int64_t n);
|
||||
|
||||
double av_get_double(void *obj, const char *name, const AVOption **o_out);
|
||||
AVRational av_get_q(void *obj, const char *name, const AVOption **o_out);
|
||||
int64_t av_get_int(void *obj, const char *name, const AVOption **o_out);
|
||||
attribute_deprecated const char *av_get_string(void *obj, const char *name, const AVOption **o_out, char *buf, int buf_len);
|
||||
attribute_deprecated const AVOption *av_next_option(void *obj, const AVOption *last);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Show the obj options.
|
||||
*
|
||||
* @param req_flags requested flags for the options to show. Show only the
|
||||
* options for which it is opt->flags & req_flags.
|
||||
* @param rej_flags rejected flags for the options to show. Show only the
|
||||
* options for which it is !(opt->flags & req_flags).
|
||||
* @param av_log_obj log context to use for showing the options
|
||||
*/
|
||||
int av_opt_show2(void *obj, void *av_log_obj, int req_flags, int rej_flags);
|
||||
|
||||
/**
|
||||
* Set the values of all AVOption fields to their default values.
|
||||
*
|
||||
* @param s an AVOption-enabled struct (its first member must be a pointer to AVClass)
|
||||
*/
|
||||
void av_opt_set_defaults(void *s);
|
||||
|
||||
#if FF_API_OLD_AVOPTIONS
|
||||
attribute_deprecated
|
||||
void av_opt_set_defaults2(void *s, int mask, int flags);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Parse the key/value pairs list in opts. For each key/value pair
|
||||
* found, stores the value in the field in ctx that is named like the
|
||||
* key. ctx must be an AVClass context, storing is done using
|
||||
* AVOptions.
|
||||
*
|
||||
* @param opts options string to parse, may be NULL
|
||||
* @param key_val_sep a 0-terminated list of characters used to
|
||||
* separate key from value
|
||||
* @param pairs_sep a 0-terminated list of characters used to separate
|
||||
* two pairs from each other
|
||||
* @return the number of successfully set key/value pairs, or a negative
|
||||
* value corresponding to an AVERROR code in case of error:
|
||||
* AVERROR(EINVAL) if opts cannot be parsed,
|
||||
* the error code issued by av_set_string3() if a key/value pair
|
||||
* cannot be set
|
||||
*/
|
||||
int av_set_options_string(void *ctx, const char *opts,
|
||||
const char *key_val_sep, const char *pairs_sep);
|
||||
|
||||
/**
|
||||
* Parse the key-value pairs list in opts. For each key=value pair found,
|
||||
* set the value of the corresponding option in ctx.
|
||||
*
|
||||
* @param ctx the AVClass object to set options on
|
||||
* @param opts the options string, key-value pairs separated by a
|
||||
* delimiter
|
||||
* @param shorthand a NULL-terminated array of options names for shorthand
|
||||
* notation: if the first field in opts has no key part,
|
||||
* the key is taken from the first element of shorthand;
|
||||
* then again for the second, etc., until either opts is
|
||||
* finished, shorthand is finished or a named option is
|
||||
* found; after that, all options must be named
|
||||
* @param key_val_sep a 0-terminated list of characters used to separate
|
||||
* key from value, for example '='
|
||||
* @param pairs_sep a 0-terminated list of characters used to separate
|
||||
* two pairs from each other, for example ':' or ','
|
||||
* @return the number of successfully set key=value pairs, or a negative
|
||||
* value corresponding to an AVERROR code in case of error:
|
||||
* AVERROR(EINVAL) if opts cannot be parsed,
|
||||
* the error code issued by av_set_string3() if a key/value pair
|
||||
* cannot be set
|
||||
*
|
||||
* Options names must use only the following characters: a-z A-Z 0-9 - . / _
|
||||
* Separators must use characters distinct from option names and from each
|
||||
* other.
|
||||
*/
|
||||
int av_opt_set_from_string(void *ctx, const char *opts,
|
||||
const char *const *shorthand,
|
||||
const char *key_val_sep, const char *pairs_sep);
|
||||
/**
|
||||
* Free all string and binary options in obj.
|
||||
*/
|
||||
void av_opt_free(void *obj);
|
||||
|
||||
/**
|
||||
* Check whether a particular flag is set in a flags field.
|
||||
*
|
||||
* @param field_name the name of the flag field option
|
||||
* @param flag_name the name of the flag to check
|
||||
* @return non-zero if the flag is set, zero if the flag isn't set,
|
||||
* isn't of the right type, or the flags field doesn't exist.
|
||||
*/
|
||||
int av_opt_flag_is_set(void *obj, const char *field_name, const char *flag_name);
|
||||
|
||||
/**
|
||||
* Set all the options from a given dictionary on an object.
|
||||
*
|
||||
* @param obj a struct whose first element is a pointer to AVClass
|
||||
* @param options options to process. This dictionary will be freed and replaced
|
||||
* by a new one containing all options not found in obj.
|
||||
* Of course this new dictionary needs to be freed by caller
|
||||
* with av_dict_free().
|
||||
*
|
||||
* @return 0 on success, a negative AVERROR if some option was found in obj,
|
||||
* but could not be set.
|
||||
*
|
||||
* @see av_dict_copy()
|
||||
*/
|
||||
int av_opt_set_dict(void *obj, struct AVDictionary **options);
|
||||
|
||||
/**
|
||||
* Extract a key-value pair from the beginning of a string.
|
||||
*
|
||||
* @param ropts pointer to the options string, will be updated to
|
||||
* point to the rest of the string (one of the pairs_sep
|
||||
* or the final NUL)
|
||||
* @param key_val_sep a 0-terminated list of characters used to separate
|
||||
* key from value, for example '='
|
||||
* @param pairs_sep a 0-terminated list of characters used to separate
|
||||
* two pairs from each other, for example ':' or ','
|
||||
* @param flags flags; see the AV_OPT_FLAG_* values below
|
||||
* @param rkey parsed key; must be freed using av_free()
|
||||
* @param rval parsed value; must be freed using av_free()
|
||||
*
|
||||
* @return >=0 for success, or a negative value corresponding to an
|
||||
* AVERROR code in case of error; in particular:
|
||||
* AVERROR(EINVAL) if no key is present
|
||||
*
|
||||
*/
|
||||
int av_opt_get_key_value(const char **ropts,
|
||||
const char *key_val_sep, const char *pairs_sep,
|
||||
unsigned flags,
|
||||
char **rkey, char **rval);
|
||||
|
||||
enum {
|
||||
|
||||
/**
|
||||
* Accept to parse a value without a key; the key will then be returned
|
||||
* as NULL.
|
||||
*/
|
||||
AV_OPT_FLAG_IMPLICIT_KEY = 1,
|
||||
};
|
||||
|
||||
/**
|
||||
* @defgroup opt_eval_funcs Evaluating option strings
|
||||
* @{
|
||||
* This group of functions can be used to evaluate option strings
|
||||
* and get numbers out of them. They do the same thing as av_opt_set(),
|
||||
* except the result is written into the caller-supplied pointer.
|
||||
*
|
||||
* @param obj a struct whose first element is a pointer to AVClass.
|
||||
* @param o an option for which the string is to be evaluated.
|
||||
* @param val string to be evaluated.
|
||||
* @param *_out value of the string will be written here.
|
||||
*
|
||||
* @return 0 on success, a negative number on failure.
|
||||
*/
|
||||
int av_opt_eval_flags (void *obj, const AVOption *o, const char *val, int *flags_out);
|
||||
int av_opt_eval_int (void *obj, const AVOption *o, const char *val, int *int_out);
|
||||
int av_opt_eval_int64 (void *obj, const AVOption *o, const char *val, int64_t *int64_out);
|
||||
int av_opt_eval_float (void *obj, const AVOption *o, const char *val, float *float_out);
|
||||
int av_opt_eval_double(void *obj, const AVOption *o, const char *val, double *double_out);
|
||||
int av_opt_eval_q (void *obj, const AVOption *o, const char *val, AVRational *q_out);
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
#define AV_OPT_SEARCH_CHILDREN 0x0001 /**< Search in possible children of the
|
||||
given object first. */
|
||||
/**
|
||||
* The obj passed to av_opt_find() is fake -- only a double pointer to AVClass
|
||||
* instead of a required pointer to a struct containing AVClass. This is
|
||||
* useful for searching for options without needing to allocate the corresponding
|
||||
* object.
|
||||
*/
|
||||
#define AV_OPT_SEARCH_FAKE_OBJ 0x0002
|
||||
|
||||
/**
|
||||
* Look for an option in an object. Consider only options which
|
||||
* have all the specified flags set.
|
||||
*
|
||||
* @param[in] obj A pointer to a struct whose first element is a
|
||||
* pointer to an AVClass.
|
||||
* Alternatively a double pointer to an AVClass, if
|
||||
* AV_OPT_SEARCH_FAKE_OBJ search flag is set.
|
||||
* @param[in] name The name of the option to look for.
|
||||
* @param[in] unit When searching for named constants, name of the unit
|
||||
* it belongs to.
|
||||
* @param opt_flags Find only options with all the specified flags set (AV_OPT_FLAG).
|
||||
* @param search_flags A combination of AV_OPT_SEARCH_*.
|
||||
*
|
||||
* @return A pointer to the option found, or NULL if no option
|
||||
* was found.
|
||||
*
|
||||
* @note Options found with AV_OPT_SEARCH_CHILDREN flag may not be settable
|
||||
* directly with av_set_string3(). Use special calls which take an options
|
||||
* AVDictionary (e.g. avformat_open_input()) to set options found with this
|
||||
* flag.
|
||||
*/
|
||||
const AVOption *av_opt_find(void *obj, const char *name, const char *unit,
|
||||
int opt_flags, int search_flags);
|
||||
|
||||
/**
|
||||
* Look for an option in an object. Consider only options which
|
||||
* have all the specified flags set.
|
||||
*
|
||||
* @param[in] obj A pointer to a struct whose first element is a
|
||||
* pointer to an AVClass.
|
||||
* Alternatively a double pointer to an AVClass, if
|
||||
* AV_OPT_SEARCH_FAKE_OBJ search flag is set.
|
||||
* @param[in] name The name of the option to look for.
|
||||
* @param[in] unit When searching for named constants, name of the unit
|
||||
* it belongs to.
|
||||
* @param opt_flags Find only options with all the specified flags set (AV_OPT_FLAG).
|
||||
* @param search_flags A combination of AV_OPT_SEARCH_*.
|
||||
* @param[out] target_obj if non-NULL, an object to which the option belongs will be
|
||||
* written here. It may be different from obj if AV_OPT_SEARCH_CHILDREN is present
|
||||
* in search_flags. This parameter is ignored if search_flags contain
|
||||
* AV_OPT_SEARCH_FAKE_OBJ.
|
||||
*
|
||||
* @return A pointer to the option found, or NULL if no option
|
||||
* was found.
|
||||
*/
|
||||
const AVOption *av_opt_find2(void *obj, const char *name, const char *unit,
|
||||
int opt_flags, int search_flags, void **target_obj);
|
||||
|
||||
/**
|
||||
* Iterate over all AVOptions belonging to obj.
|
||||
*
|
||||
* @param obj an AVOptions-enabled struct or a double pointer to an
|
||||
* AVClass describing it.
|
||||
* @param prev result of the previous call to av_opt_next() on this object
|
||||
* or NULL
|
||||
* @return next AVOption or NULL
|
||||
*/
|
||||
const AVOption *av_opt_next(void *obj, const AVOption *prev);
|
||||
|
||||
/**
|
||||
* Iterate over AVOptions-enabled children of obj.
|
||||
*
|
||||
* @param prev result of a previous call to this function or NULL
|
||||
* @return next AVOptions-enabled child or NULL
|
||||
*/
|
||||
void *av_opt_child_next(void *obj, void *prev);
|
||||
|
||||
/**
|
||||
* Iterate over potential AVOptions-enabled children of parent.
|
||||
*
|
||||
* @param prev result of a previous call to this function or NULL
|
||||
* @return AVClass corresponding to next potential child or NULL
|
||||
*/
|
||||
const AVClass *av_opt_child_class_next(const AVClass *parent, const AVClass *prev);
|
||||
|
||||
/**
|
||||
* @defgroup opt_set_funcs Option setting functions
|
||||
* @{
|
||||
* Those functions set the field of obj with the given name to value.
|
||||
*
|
||||
* @param[in] obj A struct whose first element is a pointer to an AVClass.
|
||||
* @param[in] name the name of the field to set
|
||||
* @param[in] val The value to set. In case of av_opt_set() if the field is not
|
||||
* of a string type, then the given string is parsed.
|
||||
* SI postfixes and some named scalars are supported.
|
||||
* If the field is of a numeric type, it has to be a numeric or named
|
||||
* scalar. Behavior with more than one scalar and +- infix operators
|
||||
* is undefined.
|
||||
* If the field is of a flags type, it has to be a sequence of numeric
|
||||
* scalars or named flags separated by '+' or '-'. Prefixing a flag
|
||||
* with '+' causes it to be set without affecting the other flags;
|
||||
* similarly, '-' unsets a flag.
|
||||
* @param search_flags flags passed to av_opt_find2. I.e. if AV_OPT_SEARCH_CHILDREN
|
||||
* is passed here, then the option may be set on a child of obj.
|
||||
*
|
||||
* @return 0 if the value has been set, or an AVERROR code in case of
|
||||
* error:
|
||||
* AVERROR_OPTION_NOT_FOUND if no matching option exists
|
||||
* AVERROR(ERANGE) if the value is out of range
|
||||
* AVERROR(EINVAL) if the value is not valid
|
||||
*/
|
||||
int av_opt_set (void *obj, const char *name, const char *val, int search_flags);
|
||||
int av_opt_set_int (void *obj, const char *name, int64_t val, int search_flags);
|
||||
int av_opt_set_double(void *obj, const char *name, double val, int search_flags);
|
||||
int av_opt_set_q (void *obj, const char *name, AVRational val, int search_flags);
|
||||
int av_opt_set_bin (void *obj, const char *name, const uint8_t *val, int size, int search_flags);
|
||||
int av_opt_set_image_size(void *obj, const char *name, int w, int h, int search_flags);
|
||||
int av_opt_set_pixel_fmt (void *obj, const char *name, enum AVPixelFormat fmt, int search_flags);
|
||||
int av_opt_set_sample_fmt(void *obj, const char *name, enum AVSampleFormat fmt, int search_flags);
|
||||
int av_opt_set_video_rate(void *obj, const char *name, AVRational val, int search_flags);
|
||||
|
||||
/**
|
||||
* Set a binary option to an integer list.
|
||||
*
|
||||
* @param obj AVClass object to set options on
|
||||
* @param name name of the binary option
|
||||
* @param val pointer to an integer list (must have the correct type with
|
||||
* regard to the contents of the list)
|
||||
* @param term list terminator (usually 0 or -1)
|
||||
* @param flags search flags
|
||||
*/
|
||||
#define av_opt_set_int_list(obj, name, val, term, flags) \
|
||||
(av_int_list_length(val, term) > INT_MAX / sizeof(*(val)) ? \
|
||||
AVERROR(EINVAL) : \
|
||||
av_opt_set_bin(obj, name, (const uint8_t *)(val), \
|
||||
av_int_list_length(val, term) * sizeof(*(val)), flags))
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/**
|
||||
* @defgroup opt_get_funcs Option getting functions
|
||||
* @{
|
||||
* Those functions get a value of the option with the given name from an object.
|
||||
*
|
||||
* @param[in] obj a struct whose first element is a pointer to an AVClass.
|
||||
* @param[in] name name of the option to get.
|
||||
* @param[in] search_flags flags passed to av_opt_find2. I.e. if AV_OPT_SEARCH_CHILDREN
|
||||
* is passed here, then the option may be found in a child of obj.
|
||||
* @param[out] out_val value of the option will be written here
|
||||
* @return 0 on success, a negative error code otherwise
|
||||
*/
|
||||
/**
|
||||
* @note the returned string will av_malloc()ed and must be av_free()ed by the caller
|
||||
*/
|
||||
int av_opt_get (void *obj, const char *name, int search_flags, uint8_t **out_val);
|
||||
int av_opt_get_int (void *obj, const char *name, int search_flags, int64_t *out_val);
|
||||
int av_opt_get_double(void *obj, const char *name, int search_flags, double *out_val);
|
||||
int av_opt_get_q (void *obj, const char *name, int search_flags, AVRational *out_val);
|
||||
int av_opt_get_image_size(void *obj, const char *name, int search_flags, int *w_out, int *h_out);
|
||||
int av_opt_get_pixel_fmt (void *obj, const char *name, int search_flags, enum AVPixelFormat *out_fmt);
|
||||
int av_opt_get_sample_fmt(void *obj, const char *name, int search_flags, enum AVSampleFormat *out_fmt);
|
||||
int av_opt_get_video_rate(void *obj, const char *name, int search_flags, AVRational *out_val);
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
/**
|
||||
* Gets a pointer to the requested field in a struct.
|
||||
* This function allows accessing a struct even when its fields are moved or
|
||||
* renamed since the application making the access has been compiled,
|
||||
*
|
||||
* @returns a pointer to the field, it can be cast to the correct type and read
|
||||
* or written to.
|
||||
*/
|
||||
void *av_opt_ptr(const AVClass *avclass, void *obj, const char *name);
|
||||
|
||||
/**
|
||||
* Free an AVOptionRanges struct and set it to NULL.
|
||||
*/
|
||||
void av_opt_freep_ranges(AVOptionRanges **ranges);
|
||||
|
||||
/**
|
||||
* Get a list of allowed ranges for the given option.
|
||||
*
|
||||
* The returned list may depend on other fields in obj like for example profile.
|
||||
*
|
||||
* @param flags is a bitmask of flags, undefined flags should not be set and should be ignored
|
||||
* AV_OPT_SEARCH_FAKE_OBJ indicates that the obj is a double pointer to a AVClass instead of a full instance
|
||||
*
|
||||
* The result must be freed with av_opt_freep_ranges.
|
||||
*
|
||||
* @return >= 0 on success, a negative errro code otherwise
|
||||
*/
|
||||
int av_opt_query_ranges(AVOptionRanges **, void *obj, const char *key, int flags);
|
||||
|
||||
/**
|
||||
* Get a default list of allowed ranges for the given option.
|
||||
*
|
||||
* This list is constructed without using the AVClass.query_ranges() callback
|
||||
* and can be used as fallback from within the callback.
|
||||
*
|
||||
* @param flags is a bitmask of flags, undefined flags should not be set and should be ignored
|
||||
* AV_OPT_SEARCH_FAKE_OBJ indicates that the obj is a double pointer to a AVClass instead of a full instance
|
||||
*
|
||||
* The result must be freed with av_opt_free_ranges.
|
||||
*
|
||||
* @return >= 0 on success, a negative errro code otherwise
|
||||
*/
|
||||
int av_opt_query_ranges_default(AVOptionRanges **, void *obj, const char *key, int flags);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
#endif /* AVUTIL_OPT_H */
|
||||
174
3rdparty/include/ffmpeg_/libavutil/parseutils.h
vendored
174
3rdparty/include/ffmpeg_/libavutil/parseutils.h
vendored
@@ -1,174 +0,0 @@
|
||||
/*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef AVUTIL_PARSEUTILS_H
|
||||
#define AVUTIL_PARSEUTILS_H
|
||||
|
||||
#include <time.h>
|
||||
|
||||
#include "rational.h"
|
||||
|
||||
/**
|
||||
* @file
|
||||
* misc parsing utilities
|
||||
*/
|
||||
|
||||
/**
|
||||
* Parse str and store the parsed ratio in q.
|
||||
*
|
||||
* Note that a ratio with infinite (1/0) or negative value is
|
||||
* considered valid, so you should check on the returned value if you
|
||||
* want to exclude those values.
|
||||
*
|
||||
* The undefined value can be expressed using the "0:0" string.
|
||||
*
|
||||
* @param[in,out] q pointer to the AVRational which will contain the ratio
|
||||
* @param[in] str the string to parse: it has to be a string in the format
|
||||
* num:den, a float number or an expression
|
||||
* @param[in] max the maximum allowed numerator and denominator
|
||||
* @param[in] log_offset log level offset which is applied to the log
|
||||
* level of log_ctx
|
||||
* @param[in] log_ctx parent logging context
|
||||
* @return >= 0 on success, a negative error code otherwise
|
||||
*/
|
||||
int av_parse_ratio(AVRational *q, const char *str, int max,
|
||||
int log_offset, void *log_ctx);
|
||||
|
||||
#define av_parse_ratio_quiet(rate, str, max) \
|
||||
av_parse_ratio(rate, str, max, AV_LOG_MAX_OFFSET, NULL)
|
||||
|
||||
/**
|
||||
* Parse str and put in width_ptr and height_ptr the detected values.
|
||||
*
|
||||
* @param[in,out] width_ptr pointer to the variable which will contain the detected
|
||||
* width value
|
||||
* @param[in,out] height_ptr pointer to the variable which will contain the detected
|
||||
* height value
|
||||
* @param[in] str the string to parse: it has to be a string in the format
|
||||
* width x height or a valid video size abbreviation.
|
||||
* @return >= 0 on success, a negative error code otherwise
|
||||
*/
|
||||
int av_parse_video_size(int *width_ptr, int *height_ptr, const char *str);
|
||||
|
||||
/**
|
||||
* Parse str and store the detected values in *rate.
|
||||
*
|
||||
* @param[in,out] rate pointer to the AVRational which will contain the detected
|
||||
* frame rate
|
||||
* @param[in] str the string to parse: it has to be a string in the format
|
||||
* rate_num / rate_den, a float number or a valid video rate abbreviation
|
||||
* @return >= 0 on success, a negative error code otherwise
|
||||
*/
|
||||
int av_parse_video_rate(AVRational *rate, const char *str);
|
||||
|
||||
/**
|
||||
* Put the RGBA values that correspond to color_string in rgba_color.
|
||||
*
|
||||
* @param color_string a string specifying a color. It can be the name of
|
||||
* a color (case insensitive match) or a [0x|#]RRGGBB[AA] sequence,
|
||||
* possibly followed by "@" and a string representing the alpha
|
||||
* component.
|
||||
* The alpha component may be a string composed by "0x" followed by an
|
||||
* hexadecimal number or a decimal number between 0.0 and 1.0, which
|
||||
* represents the opacity value (0x00/0.0 means completely transparent,
|
||||
* 0xff/1.0 completely opaque).
|
||||
* If the alpha component is not specified then 0xff is assumed.
|
||||
* The string "random" will result in a random color.
|
||||
* @param slen length of the initial part of color_string containing the
|
||||
* color. It can be set to -1 if color_string is a null terminated string
|
||||
* containing nothing else than the color.
|
||||
* @return >= 0 in case of success, a negative value in case of
|
||||
* failure (for example if color_string cannot be parsed).
|
||||
*/
|
||||
int av_parse_color(uint8_t *rgba_color, const char *color_string, int slen,
|
||||
void *log_ctx);
|
||||
|
||||
/**
|
||||
* Parse timestr and return in *time a corresponding number of
|
||||
* microseconds.
|
||||
*
|
||||
* @param timeval puts here the number of microseconds corresponding
|
||||
* to the string in timestr. If the string represents a duration, it
|
||||
* is the number of microseconds contained in the time interval. If
|
||||
* the string is a date, is the number of microseconds since 1st of
|
||||
* January, 1970 up to the time of the parsed date. If timestr cannot
|
||||
* be successfully parsed, set *time to INT64_MIN.
|
||||
|
||||
* @param timestr a string representing a date or a duration.
|
||||
* - If a date the syntax is:
|
||||
* @code
|
||||
* [{YYYY-MM-DD|YYYYMMDD}[T|t| ]]{{HH:MM:SS[.m...]]]}|{HHMMSS[.m...]]]}}[Z]
|
||||
* now
|
||||
* @endcode
|
||||
* If the value is "now" it takes the current time.
|
||||
* Time is local time unless Z is appended, in which case it is
|
||||
* interpreted as UTC.
|
||||
* If the year-month-day part is not specified it takes the current
|
||||
* year-month-day.
|
||||
* - If a duration the syntax is:
|
||||
* @code
|
||||
* [-][HH:]MM:SS[.m...]
|
||||
* [-]S+[.m...]
|
||||
* @endcode
|
||||
* @param duration flag which tells how to interpret timestr, if not
|
||||
* zero timestr is interpreted as a duration, otherwise as a date
|
||||
* @return 0 in case of success, a negative value corresponding to an
|
||||
* AVERROR code otherwise
|
||||
*/
|
||||
int av_parse_time(int64_t *timeval, const char *timestr, int duration);
|
||||
|
||||
/**
|
||||
* Parse the input string p according to the format string fmt and
|
||||
* store its results in the structure dt.
|
||||
* This implementation supports only a subset of the formats supported
|
||||
* by the standard strptime().
|
||||
*
|
||||
* In particular it actually supports the parameters:
|
||||
* - %H: the hour as a decimal number, using a 24-hour clock, in the
|
||||
* range '00' through '23'
|
||||
* - %J: hours as a decimal number, in the range '0' through INT_MAX
|
||||
* - %M: the minute as a decimal number, using a 24-hour clock, in the
|
||||
* range '00' through '59'
|
||||
* - %S: the second as a decimal number, using a 24-hour clock, in the
|
||||
* range '00' through '59'
|
||||
* - %Y: the year as a decimal number, using the Gregorian calendar
|
||||
* - %m: the month as a decimal number, in the range '1' through '12'
|
||||
* - %d: the day of the month as a decimal number, in the range '1'
|
||||
* through '31'
|
||||
* - %%: a literal '%'
|
||||
*
|
||||
* @return a pointer to the first character not processed in this
|
||||
* function call, or NULL in case the function fails to match all of
|
||||
* the fmt string and therefore an error occurred
|
||||
*/
|
||||
char *av_small_strptime(const char *p, const char *fmt, struct tm *dt);
|
||||
|
||||
/**
|
||||
* Attempt to find a specific tag in a URL.
|
||||
*
|
||||
* syntax: '?tag1=val1&tag2=val2...'. Little URL decoding is done.
|
||||
* Return 1 if found.
|
||||
*/
|
||||
int av_find_info_tag(char *arg, int arg_size, const char *tag1, const char *info);
|
||||
|
||||
/**
|
||||
* Convert the decomposed UTC time in tm to a time_t value.
|
||||
*/
|
||||
time_t av_timegm(struct tm *tm);
|
||||
|
||||
#endif /* AVUTIL_PARSEUTILS_H */
|
||||
289
3rdparty/include/ffmpeg_/libavutil/pixdesc.h
vendored
289
3rdparty/include/ffmpeg_/libavutil/pixdesc.h
vendored
@@ -1,289 +0,0 @@
|
||||
/*
|
||||
* pixel format descriptor
|
||||
* Copyright (c) 2009 Michael Niedermayer <michaelni@gmx.at>
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef AVUTIL_PIXDESC_H
|
||||
#define AVUTIL_PIXDESC_H
|
||||
|
||||
#include <inttypes.h>
|
||||
#include "pixfmt.h"
|
||||
|
||||
typedef struct AVComponentDescriptor{
|
||||
uint16_t plane :2; ///< which of the 4 planes contains the component
|
||||
|
||||
/**
|
||||
* Number of elements between 2 horizontally consecutive pixels minus 1.
|
||||
* Elements are bits for bitstream formats, bytes otherwise.
|
||||
*/
|
||||
uint16_t step_minus1 :3;
|
||||
|
||||
/**
|
||||
* Number of elements before the component of the first pixel plus 1.
|
||||
* Elements are bits for bitstream formats, bytes otherwise.
|
||||
*/
|
||||
uint16_t offset_plus1 :3;
|
||||
uint16_t shift :3; ///< number of least significant bits that must be shifted away to get the value
|
||||
uint16_t depth_minus1 :4; ///< number of bits in the component minus 1
|
||||
}AVComponentDescriptor;
|
||||
|
||||
/**
|
||||
* Descriptor that unambiguously describes how the bits of a pixel are
|
||||
* stored in the up to 4 data planes of an image. It also stores the
|
||||
* subsampling factors and number of components.
|
||||
*
|
||||
* @note This is separate of the colorspace (RGB, YCbCr, YPbPr, JPEG-style YUV
|
||||
* and all the YUV variants) AVPixFmtDescriptor just stores how values
|
||||
* are stored not what these values represent.
|
||||
*/
|
||||
typedef struct AVPixFmtDescriptor{
|
||||
const char *name;
|
||||
uint8_t nb_components; ///< The number of components each pixel has, (1-4)
|
||||
|
||||
/**
|
||||
* Amount to shift the luma width right to find the chroma width.
|
||||
* For YV12 this is 1 for example.
|
||||
* chroma_width = -((-luma_width) >> log2_chroma_w)
|
||||
* The note above is needed to ensure rounding up.
|
||||
* This value only refers to the chroma components.
|
||||
*/
|
||||
uint8_t log2_chroma_w; ///< chroma_width = -((-luma_width )>>log2_chroma_w)
|
||||
|
||||
/**
|
||||
* Amount to shift the luma height right to find the chroma height.
|
||||
* For YV12 this is 1 for example.
|
||||
* chroma_height= -((-luma_height) >> log2_chroma_h)
|
||||
* The note above is needed to ensure rounding up.
|
||||
* This value only refers to the chroma components.
|
||||
*/
|
||||
uint8_t log2_chroma_h;
|
||||
uint8_t flags;
|
||||
|
||||
/**
|
||||
* Parameters that describe how pixels are packed.
|
||||
* If the format has 2 or 4 components, then alpha is last.
|
||||
* If the format has 1 or 2 components, then luma is 0.
|
||||
* If the format has 3 or 4 components,
|
||||
* if the RGB flag is set then 0 is red, 1 is green and 2 is blue;
|
||||
* otherwise 0 is luma, 1 is chroma-U and 2 is chroma-V.
|
||||
*/
|
||||
AVComponentDescriptor comp[4];
|
||||
}AVPixFmtDescriptor;
|
||||
|
||||
/**
|
||||
* Pixel format is big-endian.
|
||||
*/
|
||||
#define AV_PIX_FMT_FLAG_BE (1 << 0)
|
||||
/**
|
||||
* Pixel format has a palette in data[1], values are indexes in this palette.
|
||||
*/
|
||||
#define AV_PIX_FMT_FLAG_PAL (1 << 1)
|
||||
/**
|
||||
* All values of a component are bit-wise packed end to end.
|
||||
*/
|
||||
#define AV_PIX_FMT_FLAG_BITSTREAM (1 << 2)
|
||||
/**
|
||||
* Pixel format is an HW accelerated format.
|
||||
*/
|
||||
#define AV_PIX_FMT_FLAG_HWACCEL (1 << 3)
|
||||
/**
|
||||
* At least one pixel component is not in the first data plane.
|
||||
*/
|
||||
#define AV_PIX_FMT_FLAG_PLANAR (1 << 4)
|
||||
/**
|
||||
* The pixel format contains RGB-like data (as opposed to YUV/grayscale).
|
||||
*/
|
||||
#define AV_PIX_FMT_FLAG_RGB (1 << 5)
|
||||
/**
|
||||
* The pixel format is "pseudo-paletted". This means that FFmpeg treats it as
|
||||
* paletted internally, but the palette is generated by the decoder and is not
|
||||
* stored in the file.
|
||||
*/
|
||||
#define AV_PIX_FMT_FLAG_PSEUDOPAL (1 << 6)
|
||||
/**
|
||||
* The pixel format has an alpha channel.
|
||||
*/
|
||||
#define AV_PIX_FMT_FLAG_ALPHA (1 << 7)
|
||||
|
||||
#if FF_API_PIX_FMT
|
||||
/**
|
||||
* @deprecate use the AV_PIX_FMT_FLAG_* flags
|
||||
*/
|
||||
#define PIX_FMT_BE AV_PIX_FMT_FLAG_BE
|
||||
#define PIX_FMT_PAL AV_PIX_FMT_FLAG_PAL
|
||||
#define PIX_FMT_BITSTREAM AV_PIX_FMT_FLAG_BITSTREAM
|
||||
#define PIX_FMT_HWACCEL AV_PIX_FMT_FLAG_HWACCEL
|
||||
#define PIX_FMT_PLANAR AV_PIX_FMT_FLAG_PLANAR
|
||||
#define PIX_FMT_RGB AV_PIX_FMT_FLAG_RGB
|
||||
#define PIX_FMT_PSEUDOPAL AV_PIX_FMT_FLAG_PSEUDOPAL
|
||||
#define PIX_FMT_ALPHA AV_PIX_FMT_FLAG_ALPHA
|
||||
#endif
|
||||
|
||||
#if FF_API_PIX_FMT_DESC
|
||||
/**
|
||||
* The array of all the pixel format descriptors.
|
||||
*/
|
||||
extern const AVPixFmtDescriptor av_pix_fmt_descriptors[];
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Read a line from an image, and write the values of the
|
||||
* pixel format component c to dst.
|
||||
*
|
||||
* @param data the array containing the pointers to the planes of the image
|
||||
* @param linesize the array containing the linesizes of the image
|
||||
* @param desc the pixel format descriptor for the image
|
||||
* @param x the horizontal coordinate of the first pixel to read
|
||||
* @param y the vertical coordinate of the first pixel to read
|
||||
* @param w the width of the line to read, that is the number of
|
||||
* values to write to dst
|
||||
* @param read_pal_component if not zero and the format is a paletted
|
||||
* format writes the values corresponding to the palette
|
||||
* component c in data[1] to dst, rather than the palette indexes in
|
||||
* data[0]. The behavior is undefined if the format is not paletted.
|
||||
*/
|
||||
void av_read_image_line(uint16_t *dst, const uint8_t *data[4], const int linesize[4],
|
||||
const AVPixFmtDescriptor *desc, int x, int y, int c, int w, int read_pal_component);
|
||||
|
||||
/**
|
||||
* Write the values from src to the pixel format component c of an
|
||||
* image line.
|
||||
*
|
||||
* @param src array containing the values to write
|
||||
* @param data the array containing the pointers to the planes of the
|
||||
* image to write into. It is supposed to be zeroed.
|
||||
* @param linesize the array containing the linesizes of the image
|
||||
* @param desc the pixel format descriptor for the image
|
||||
* @param x the horizontal coordinate of the first pixel to write
|
||||
* @param y the vertical coordinate of the first pixel to write
|
||||
* @param w the width of the line to write, that is the number of
|
||||
* values to write to the image line
|
||||
*/
|
||||
void av_write_image_line(const uint16_t *src, uint8_t *data[4], const int linesize[4],
|
||||
const AVPixFmtDescriptor *desc, int x, int y, int c, int w);
|
||||
|
||||
/**
|
||||
* Return the pixel format corresponding to name.
|
||||
*
|
||||
* If there is no pixel format with name name, then looks for a
|
||||
* pixel format with the name corresponding to the native endian
|
||||
* format of name.
|
||||
* For example in a little-endian system, first looks for "gray16",
|
||||
* then for "gray16le".
|
||||
*
|
||||
* Finally if no pixel format has been found, returns AV_PIX_FMT_NONE.
|
||||
*/
|
||||
enum AVPixelFormat av_get_pix_fmt(const char *name);
|
||||
|
||||
/**
|
||||
* Return the short name for a pixel format, NULL in case pix_fmt is
|
||||
* unknown.
|
||||
*
|
||||
* @see av_get_pix_fmt(), av_get_pix_fmt_string()
|
||||
*/
|
||||
const char *av_get_pix_fmt_name(enum AVPixelFormat pix_fmt);
|
||||
|
||||
/**
|
||||
* Print in buf the string corresponding to the pixel format with
|
||||
* number pix_fmt, or an header if pix_fmt is negative.
|
||||
*
|
||||
* @param buf the buffer where to write the string
|
||||
* @param buf_size the size of buf
|
||||
* @param pix_fmt the number of the pixel format to print the
|
||||
* corresponding info string, or a negative value to print the
|
||||
* corresponding header.
|
||||
*/
|
||||
char *av_get_pix_fmt_string (char *buf, int buf_size, enum AVPixelFormat pix_fmt);
|
||||
|
||||
/**
|
||||
* Return the number of bits per pixel used by the pixel format
|
||||
* described by pixdesc. Note that this is not the same as the number
|
||||
* of bits per sample.
|
||||
*
|
||||
* The returned number of bits refers to the number of bits actually
|
||||
* used for storing the pixel information, that is padding bits are
|
||||
* not counted.
|
||||
*/
|
||||
int av_get_bits_per_pixel(const AVPixFmtDescriptor *pixdesc);
|
||||
|
||||
/**
|
||||
* Return the number of bits per pixel for the pixel format
|
||||
* described by pixdesc, including any padding or unused bits.
|
||||
*/
|
||||
int av_get_padded_bits_per_pixel(const AVPixFmtDescriptor *pixdesc);
|
||||
|
||||
/**
|
||||
* @return a pixel format descriptor for provided pixel format or NULL if
|
||||
* this pixel format is unknown.
|
||||
*/
|
||||
const AVPixFmtDescriptor *av_pix_fmt_desc_get(enum AVPixelFormat pix_fmt);
|
||||
|
||||
/**
|
||||
* Iterate over all pixel format descriptors known to libavutil.
|
||||
*
|
||||
* @param prev previous descriptor. NULL to get the first descriptor.
|
||||
*
|
||||
* @return next descriptor or NULL after the last descriptor
|
||||
*/
|
||||
const AVPixFmtDescriptor *av_pix_fmt_desc_next(const AVPixFmtDescriptor *prev);
|
||||
|
||||
/**
|
||||
* @return an AVPixelFormat id described by desc, or AV_PIX_FMT_NONE if desc
|
||||
* is not a valid pointer to a pixel format descriptor.
|
||||
*/
|
||||
enum AVPixelFormat av_pix_fmt_desc_get_id(const AVPixFmtDescriptor *desc);
|
||||
|
||||
/**
|
||||
* Utility function to access log2_chroma_w log2_chroma_h from
|
||||
* the pixel format AVPixFmtDescriptor.
|
||||
*
|
||||
* See avcodec_get_chroma_sub_sample() for a function that asserts a
|
||||
* valid pixel format instead of returning an error code.
|
||||
* Its recommanded that you use avcodec_get_chroma_sub_sample unless
|
||||
* you do check the return code!
|
||||
*
|
||||
* @param[in] pix_fmt the pixel format
|
||||
* @param[out] h_shift store log2_chroma_w
|
||||
* @param[out] v_shift store log2_chroma_h
|
||||
*
|
||||
* @return 0 on success, AVERROR(ENOSYS) on invalid or unknown pixel format
|
||||
*/
|
||||
int av_pix_fmt_get_chroma_sub_sample(enum AVPixelFormat pix_fmt,
|
||||
int *h_shift, int *v_shift);
|
||||
|
||||
/**
|
||||
* @return number of planes in pix_fmt, a negative AVERROR if pix_fmt is not a
|
||||
* valid pixel format.
|
||||
*/
|
||||
int av_pix_fmt_count_planes(enum AVPixelFormat pix_fmt);
|
||||
|
||||
void ff_check_pixfmt_descriptors(void);
|
||||
|
||||
/**
|
||||
* Utility function to swap the endianness of a pixel format.
|
||||
*
|
||||
* @param[in] pix_fmt the pixel format
|
||||
*
|
||||
* @return pixel format with swapped endianness if it exists,
|
||||
* otherwise AV_PIX_FMT_NONE
|
||||
*/
|
||||
enum AVPixelFormat av_pix_fmt_swap_endianness(enum AVPixelFormat pix_fmt);
|
||||
|
||||
|
||||
#endif /* AVUTIL_PIXDESC_H */
|
||||
366
3rdparty/include/ffmpeg_/libavutil/pixfmt.h
vendored
366
3rdparty/include/ffmpeg_/libavutil/pixfmt.h
vendored
@@ -1,366 +0,0 @@
|
||||
/*
|
||||
* copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at>
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef AVUTIL_PIXFMT_H
|
||||
#define AVUTIL_PIXFMT_H
|
||||
|
||||
/**
|
||||
* @file
|
||||
* pixel format definitions
|
||||
*
|
||||
*/
|
||||
|
||||
#include "libavutil/avconfig.h"
|
||||
#include "libavutil/version.h"
|
||||
|
||||
#define AVPALETTE_SIZE 1024
|
||||
#define AVPALETTE_COUNT 256
|
||||
|
||||
/**
|
||||
* Pixel format.
|
||||
*
|
||||
* @note
|
||||
* PIX_FMT_RGB32 is handled in an endian-specific manner. An RGBA
|
||||
* color is put together as:
|
||||
* (A << 24) | (R << 16) | (G << 8) | B
|
||||
* This is stored as BGRA on little-endian CPU architectures and ARGB on
|
||||
* big-endian CPUs.
|
||||
*
|
||||
* @par
|
||||
* When the pixel format is palettized RGB (PIX_FMT_PAL8), the palettized
|
||||
* image data is stored in AVFrame.data[0]. The palette is transported in
|
||||
* AVFrame.data[1], is 1024 bytes long (256 4-byte entries) and is
|
||||
* formatted the same as in PIX_FMT_RGB32 described above (i.e., it is
|
||||
* also endian-specific). Note also that the individual RGB palette
|
||||
* components stored in AVFrame.data[1] should be in the range 0..255.
|
||||
* This is important as many custom PAL8 video codecs that were designed
|
||||
* to run on the IBM VGA graphics adapter use 6-bit palette components.
|
||||
*
|
||||
* @par
|
||||
* For all the 8bit per pixel formats, an RGB32 palette is in data[1] like
|
||||
* for pal8. This palette is filled in automatically by the function
|
||||
* allocating the picture.
|
||||
*
|
||||
* @note
|
||||
* Make sure that all newly added big-endian formats have pix_fmt & 1 == 1
|
||||
* and that all newly added little-endian formats have pix_fmt & 1 == 0.
|
||||
* This allows simpler detection of big vs little-endian.
|
||||
*/
|
||||
enum AVPixelFormat {
|
||||
AV_PIX_FMT_NONE = -1,
|
||||
AV_PIX_FMT_YUV420P, ///< planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples)
|
||||
AV_PIX_FMT_YUYV422, ///< packed YUV 4:2:2, 16bpp, Y0 Cb Y1 Cr
|
||||
AV_PIX_FMT_RGB24, ///< packed RGB 8:8:8, 24bpp, RGBRGB...
|
||||
AV_PIX_FMT_BGR24, ///< packed RGB 8:8:8, 24bpp, BGRBGR...
|
||||
AV_PIX_FMT_YUV422P, ///< planar YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples)
|
||||
AV_PIX_FMT_YUV444P, ///< planar YUV 4:4:4, 24bpp, (1 Cr & Cb sample per 1x1 Y samples)
|
||||
AV_PIX_FMT_YUV410P, ///< planar YUV 4:1:0, 9bpp, (1 Cr & Cb sample per 4x4 Y samples)
|
||||
AV_PIX_FMT_YUV411P, ///< planar YUV 4:1:1, 12bpp, (1 Cr & Cb sample per 4x1 Y samples)
|
||||
AV_PIX_FMT_GRAY8, ///< Y , 8bpp
|
||||
AV_PIX_FMT_MONOWHITE, ///< Y , 1bpp, 0 is white, 1 is black, in each byte pixels are ordered from the msb to the lsb
|
||||
AV_PIX_FMT_MONOBLACK, ///< Y , 1bpp, 0 is black, 1 is white, in each byte pixels are ordered from the msb to the lsb
|
||||
AV_PIX_FMT_PAL8, ///< 8 bit with PIX_FMT_RGB32 palette
|
||||
AV_PIX_FMT_YUVJ420P, ///< planar YUV 4:2:0, 12bpp, full scale (JPEG), deprecated in favor of PIX_FMT_YUV420P and setting color_range
|
||||
AV_PIX_FMT_YUVJ422P, ///< planar YUV 4:2:2, 16bpp, full scale (JPEG), deprecated in favor of PIX_FMT_YUV422P and setting color_range
|
||||
AV_PIX_FMT_YUVJ444P, ///< planar YUV 4:4:4, 24bpp, full scale (JPEG), deprecated in favor of PIX_FMT_YUV444P and setting color_range
|
||||
AV_PIX_FMT_XVMC_MPEG2_MC,///< XVideo Motion Acceleration via common packet passing
|
||||
AV_PIX_FMT_XVMC_MPEG2_IDCT,
|
||||
AV_PIX_FMT_UYVY422, ///< packed YUV 4:2:2, 16bpp, Cb Y0 Cr Y1
|
||||
AV_PIX_FMT_UYYVYY411, ///< packed YUV 4:1:1, 12bpp, Cb Y0 Y1 Cr Y2 Y3
|
||||
AV_PIX_FMT_BGR8, ///< packed RGB 3:3:2, 8bpp, (msb)2B 3G 3R(lsb)
|
||||
AV_PIX_FMT_BGR4, ///< packed RGB 1:2:1 bitstream, 4bpp, (msb)1B 2G 1R(lsb), a byte contains two pixels, the first pixel in the byte is the one composed by the 4 msb bits
|
||||
AV_PIX_FMT_BGR4_BYTE, ///< packed RGB 1:2:1, 8bpp, (msb)1B 2G 1R(lsb)
|
||||
AV_PIX_FMT_RGB8, ///< packed RGB 3:3:2, 8bpp, (msb)2R 3G 3B(lsb)
|
||||
AV_PIX_FMT_RGB4, ///< packed RGB 1:2:1 bitstream, 4bpp, (msb)1R 2G 1B(lsb), a byte contains two pixels, the first pixel in the byte is the one composed by the 4 msb bits
|
||||
AV_PIX_FMT_RGB4_BYTE, ///< packed RGB 1:2:1, 8bpp, (msb)1R 2G 1B(lsb)
|
||||
AV_PIX_FMT_NV12, ///< planar YUV 4:2:0, 12bpp, 1 plane for Y and 1 plane for the UV components, which are interleaved (first byte U and the following byte V)
|
||||
AV_PIX_FMT_NV21, ///< as above, but U and V bytes are swapped
|
||||
|
||||
AV_PIX_FMT_ARGB, ///< packed ARGB 8:8:8:8, 32bpp, ARGBARGB...
|
||||
AV_PIX_FMT_RGBA, ///< packed RGBA 8:8:8:8, 32bpp, RGBARGBA...
|
||||
AV_PIX_FMT_ABGR, ///< packed ABGR 8:8:8:8, 32bpp, ABGRABGR...
|
||||
AV_PIX_FMT_BGRA, ///< packed BGRA 8:8:8:8, 32bpp, BGRABGRA...
|
||||
|
||||
AV_PIX_FMT_GRAY16BE, ///< Y , 16bpp, big-endian
|
||||
AV_PIX_FMT_GRAY16LE, ///< Y , 16bpp, little-endian
|
||||
AV_PIX_FMT_YUV440P, ///< planar YUV 4:4:0 (1 Cr & Cb sample per 1x2 Y samples)
|
||||
AV_PIX_FMT_YUVJ440P, ///< planar YUV 4:4:0 full scale (JPEG), deprecated in favor of PIX_FMT_YUV440P and setting color_range
|
||||
AV_PIX_FMT_YUVA420P, ///< planar YUV 4:2:0, 20bpp, (1 Cr & Cb sample per 2x2 Y & A samples)
|
||||
AV_PIX_FMT_VDPAU_H264,///< H.264 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers
|
||||
AV_PIX_FMT_VDPAU_MPEG1,///< MPEG-1 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers
|
||||
AV_PIX_FMT_VDPAU_MPEG2,///< MPEG-2 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers
|
||||
AV_PIX_FMT_VDPAU_WMV3,///< WMV3 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers
|
||||
AV_PIX_FMT_VDPAU_VC1, ///< VC-1 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers
|
||||
AV_PIX_FMT_RGB48BE, ///< packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as big-endian
|
||||
AV_PIX_FMT_RGB48LE, ///< packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as little-endian
|
||||
|
||||
AV_PIX_FMT_RGB565BE, ///< packed RGB 5:6:5, 16bpp, (msb) 5R 6G 5B(lsb), big-endian
|
||||
AV_PIX_FMT_RGB565LE, ///< packed RGB 5:6:5, 16bpp, (msb) 5R 6G 5B(lsb), little-endian
|
||||
AV_PIX_FMT_RGB555BE, ///< packed RGB 5:5:5, 16bpp, (msb)1A 5R 5G 5B(lsb), big-endian, most significant bit to 0
|
||||
AV_PIX_FMT_RGB555LE, ///< packed RGB 5:5:5, 16bpp, (msb)1A 5R 5G 5B(lsb), little-endian, most significant bit to 0
|
||||
|
||||
AV_PIX_FMT_BGR565BE, ///< packed BGR 5:6:5, 16bpp, (msb) 5B 6G 5R(lsb), big-endian
|
||||
AV_PIX_FMT_BGR565LE, ///< packed BGR 5:6:5, 16bpp, (msb) 5B 6G 5R(lsb), little-endian
|
||||
AV_PIX_FMT_BGR555BE, ///< packed BGR 5:5:5, 16bpp, (msb)1A 5B 5G 5R(lsb), big-endian, most significant bit to 1
|
||||
AV_PIX_FMT_BGR555LE, ///< packed BGR 5:5:5, 16bpp, (msb)1A 5B 5G 5R(lsb), little-endian, most significant bit to 1
|
||||
|
||||
AV_PIX_FMT_VAAPI_MOCO, ///< HW acceleration through VA API at motion compensation entry-point, Picture.data[3] contains a vaapi_render_state struct which contains macroblocks as well as various fields extracted from headers
|
||||
AV_PIX_FMT_VAAPI_IDCT, ///< HW acceleration through VA API at IDCT entry-point, Picture.data[3] contains a vaapi_render_state struct which contains fields extracted from headers
|
||||
AV_PIX_FMT_VAAPI_VLD, ///< HW decoding through VA API, Picture.data[3] contains a vaapi_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers
|
||||
|
||||
AV_PIX_FMT_YUV420P16LE, ///< planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
|
||||
AV_PIX_FMT_YUV420P16BE, ///< planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian
|
||||
AV_PIX_FMT_YUV422P16LE, ///< planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
|
||||
AV_PIX_FMT_YUV422P16BE, ///< planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
|
||||
AV_PIX_FMT_YUV444P16LE, ///< planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
|
||||
AV_PIX_FMT_YUV444P16BE, ///< planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
|
||||
AV_PIX_FMT_VDPAU_MPEG4, ///< MPEG4 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers
|
||||
AV_PIX_FMT_DXVA2_VLD, ///< HW decoding through DXVA2, Picture.data[3] contains a LPDIRECT3DSURFACE9 pointer
|
||||
|
||||
AV_PIX_FMT_RGB444LE, ///< packed RGB 4:4:4, 16bpp, (msb)4A 4R 4G 4B(lsb), little-endian, most significant bits to 0
|
||||
AV_PIX_FMT_RGB444BE, ///< packed RGB 4:4:4, 16bpp, (msb)4A 4R 4G 4B(lsb), big-endian, most significant bits to 0
|
||||
AV_PIX_FMT_BGR444LE, ///< packed BGR 4:4:4, 16bpp, (msb)4A 4B 4G 4R(lsb), little-endian, most significant bits to 1
|
||||
AV_PIX_FMT_BGR444BE, ///< packed BGR 4:4:4, 16bpp, (msb)4A 4B 4G 4R(lsb), big-endian, most significant bits to 1
|
||||
AV_PIX_FMT_GRAY8A, ///< 8bit gray, 8bit alpha
|
||||
AV_PIX_FMT_BGR48BE, ///< packed RGB 16:16:16, 48bpp, 16B, 16G, 16R, the 2-byte value for each R/G/B component is stored as big-endian
|
||||
AV_PIX_FMT_BGR48LE, ///< packed RGB 16:16:16, 48bpp, 16B, 16G, 16R, the 2-byte value for each R/G/B component is stored as little-endian
|
||||
|
||||
//the following 10 formats have the disadvantage of needing 1 format for each bit depth, thus
|
||||
//If you want to support multiple bit depths, then using AV_PIX_FMT_YUV420P16* with the bpp stored separately
|
||||
//is better
|
||||
AV_PIX_FMT_YUV420P9BE, ///< planar YUV 4:2:0, 13.5bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian
|
||||
AV_PIX_FMT_YUV420P9LE, ///< planar YUV 4:2:0, 13.5bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
|
||||
AV_PIX_FMT_YUV420P10BE,///< planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian
|
||||
AV_PIX_FMT_YUV420P10LE,///< planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
|
||||
AV_PIX_FMT_YUV422P10BE,///< planar YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
|
||||
AV_PIX_FMT_YUV422P10LE,///< planar YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
|
||||
AV_PIX_FMT_YUV444P9BE, ///< planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
|
||||
AV_PIX_FMT_YUV444P9LE, ///< planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
|
||||
AV_PIX_FMT_YUV444P10BE,///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
|
||||
AV_PIX_FMT_YUV444P10LE,///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
|
||||
AV_PIX_FMT_YUV422P9BE, ///< planar YUV 4:2:2, 18bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
|
||||
AV_PIX_FMT_YUV422P9LE, ///< planar YUV 4:2:2, 18bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
|
||||
AV_PIX_FMT_VDA_VLD, ///< hardware decoding through VDA
|
||||
|
||||
#ifdef AV_PIX_FMT_ABI_GIT_MASTER
|
||||
AV_PIX_FMT_RGBA64BE, ///< packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is stored as big-endian
|
||||
AV_PIX_FMT_RGBA64LE, ///< packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is stored as little-endian
|
||||
AV_PIX_FMT_BGRA64BE, ///< packed RGBA 16:16:16:16, 64bpp, 16B, 16G, 16R, 16A, the 2-byte value for each R/G/B/A component is stored as big-endian
|
||||
AV_PIX_FMT_BGRA64LE, ///< packed RGBA 16:16:16:16, 64bpp, 16B, 16G, 16R, 16A, the 2-byte value for each R/G/B/A component is stored as little-endian
|
||||
#endif
|
||||
AV_PIX_FMT_GBRP, ///< planar GBR 4:4:4 24bpp
|
||||
AV_PIX_FMT_GBRP9BE, ///< planar GBR 4:4:4 27bpp, big-endian
|
||||
AV_PIX_FMT_GBRP9LE, ///< planar GBR 4:4:4 27bpp, little-endian
|
||||
AV_PIX_FMT_GBRP10BE, ///< planar GBR 4:4:4 30bpp, big-endian
|
||||
AV_PIX_FMT_GBRP10LE, ///< planar GBR 4:4:4 30bpp, little-endian
|
||||
AV_PIX_FMT_GBRP16BE, ///< planar GBR 4:4:4 48bpp, big-endian
|
||||
AV_PIX_FMT_GBRP16LE, ///< planar GBR 4:4:4 48bpp, little-endian
|
||||
|
||||
/**
|
||||
* duplicated pixel formats for compatibility with libav.
|
||||
* FFmpeg supports these formats since May 8 2012 and Jan 28 2012 (commits f9ca1ac7 and 143a5c55)
|
||||
* Libav added them Oct 12 2012 with incompatible values (commit 6d5600e85)
|
||||
*/
|
||||
AV_PIX_FMT_YUVA422P_LIBAV, ///< planar YUV 4:2:2 24bpp, (1 Cr & Cb sample per 2x1 Y & A samples)
|
||||
AV_PIX_FMT_YUVA444P_LIBAV, ///< planar YUV 4:4:4 32bpp, (1 Cr & Cb sample per 1x1 Y & A samples)
|
||||
|
||||
AV_PIX_FMT_YUVA420P9BE, ///< planar YUV 4:2:0 22.5bpp, (1 Cr & Cb sample per 2x2 Y & A samples), big-endian
|
||||
AV_PIX_FMT_YUVA420P9LE, ///< planar YUV 4:2:0 22.5bpp, (1 Cr & Cb sample per 2x2 Y & A samples), little-endian
|
||||
AV_PIX_FMT_YUVA422P9BE, ///< planar YUV 4:2:2 27bpp, (1 Cr & Cb sample per 2x1 Y & A samples), big-endian
|
||||
AV_PIX_FMT_YUVA422P9LE, ///< planar YUV 4:2:2 27bpp, (1 Cr & Cb sample per 2x1 Y & A samples), little-endian
|
||||
AV_PIX_FMT_YUVA444P9BE, ///< planar YUV 4:4:4 36bpp, (1 Cr & Cb sample per 1x1 Y & A samples), big-endian
|
||||
AV_PIX_FMT_YUVA444P9LE, ///< planar YUV 4:4:4 36bpp, (1 Cr & Cb sample per 1x1 Y & A samples), little-endian
|
||||
AV_PIX_FMT_YUVA420P10BE, ///< planar YUV 4:2:0 25bpp, (1 Cr & Cb sample per 2x2 Y & A samples, big-endian)
|
||||
AV_PIX_FMT_YUVA420P10LE, ///< planar YUV 4:2:0 25bpp, (1 Cr & Cb sample per 2x2 Y & A samples, little-endian)
|
||||
AV_PIX_FMT_YUVA422P10BE, ///< planar YUV 4:2:2 30bpp, (1 Cr & Cb sample per 2x1 Y & A samples, big-endian)
|
||||
AV_PIX_FMT_YUVA422P10LE, ///< planar YUV 4:2:2 30bpp, (1 Cr & Cb sample per 2x1 Y & A samples, little-endian)
|
||||
AV_PIX_FMT_YUVA444P10BE, ///< planar YUV 4:4:4 40bpp, (1 Cr & Cb sample per 1x1 Y & A samples, big-endian)
|
||||
AV_PIX_FMT_YUVA444P10LE, ///< planar YUV 4:4:4 40bpp, (1 Cr & Cb sample per 1x1 Y & A samples, little-endian)
|
||||
AV_PIX_FMT_YUVA420P16BE, ///< planar YUV 4:2:0 40bpp, (1 Cr & Cb sample per 2x2 Y & A samples, big-endian)
|
||||
AV_PIX_FMT_YUVA420P16LE, ///< planar YUV 4:2:0 40bpp, (1 Cr & Cb sample per 2x2 Y & A samples, little-endian)
|
||||
AV_PIX_FMT_YUVA422P16BE, ///< planar YUV 4:2:2 48bpp, (1 Cr & Cb sample per 2x1 Y & A samples, big-endian)
|
||||
AV_PIX_FMT_YUVA422P16LE, ///< planar YUV 4:2:2 48bpp, (1 Cr & Cb sample per 2x1 Y & A samples, little-endian)
|
||||
AV_PIX_FMT_YUVA444P16BE, ///< planar YUV 4:4:4 64bpp, (1 Cr & Cb sample per 1x1 Y & A samples, big-endian)
|
||||
AV_PIX_FMT_YUVA444P16LE, ///< planar YUV 4:4:4 64bpp, (1 Cr & Cb sample per 1x1 Y & A samples, little-endian)
|
||||
|
||||
AV_PIX_FMT_VDPAU, ///< HW acceleration through VDPAU, Picture.data[3] contains a VdpVideoSurface
|
||||
|
||||
AV_PIX_FMT_XYZ12LE, ///< packed XYZ 4:4:4, 36 bpp, (msb) 12X, 12Y, 12Z (lsb), the 2-byte value for each X/Y/Z is stored as little-endian, the 4 lower bits are set to 0
|
||||
AV_PIX_FMT_XYZ12BE, ///< packed XYZ 4:4:4, 36 bpp, (msb) 12X, 12Y, 12Z (lsb), the 2-byte value for each X/Y/Z is stored as big-endian, the 4 lower bits are set to 0
|
||||
|
||||
#ifndef AV_PIX_FMT_ABI_GIT_MASTER
|
||||
AV_PIX_FMT_RGBA64BE=0x123, ///< packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is stored as big-endian
|
||||
AV_PIX_FMT_RGBA64LE, ///< packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is stored as little-endian
|
||||
AV_PIX_FMT_BGRA64BE, ///< packed RGBA 16:16:16:16, 64bpp, 16B, 16G, 16R, 16A, the 2-byte value for each R/G/B/A component is stored as big-endian
|
||||
AV_PIX_FMT_BGRA64LE, ///< packed RGBA 16:16:16:16, 64bpp, 16B, 16G, 16R, 16A, the 2-byte value for each R/G/B/A component is stored as little-endian
|
||||
#endif
|
||||
AV_PIX_FMT_0RGB=0x123+4, ///< packed RGB 8:8:8, 32bpp, 0RGB0RGB...
|
||||
AV_PIX_FMT_RGB0, ///< packed RGB 8:8:8, 32bpp, RGB0RGB0...
|
||||
AV_PIX_FMT_0BGR, ///< packed BGR 8:8:8, 32bpp, 0BGR0BGR...
|
||||
AV_PIX_FMT_BGR0, ///< packed BGR 8:8:8, 32bpp, BGR0BGR0...
|
||||
AV_PIX_FMT_YUVA444P, ///< planar YUV 4:4:4 32bpp, (1 Cr & Cb sample per 1x1 Y & A samples)
|
||||
AV_PIX_FMT_YUVA422P, ///< planar YUV 4:2:2 24bpp, (1 Cr & Cb sample per 2x1 Y & A samples)
|
||||
|
||||
AV_PIX_FMT_YUV420P12BE, ///< planar YUV 4:2:0,18bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian
|
||||
AV_PIX_FMT_YUV420P12LE, ///< planar YUV 4:2:0,18bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
|
||||
AV_PIX_FMT_YUV420P14BE, ///< planar YUV 4:2:0,21bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian
|
||||
AV_PIX_FMT_YUV420P14LE, ///< planar YUV 4:2:0,21bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
|
||||
AV_PIX_FMT_YUV422P12BE, ///< planar YUV 4:2:2,24bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
|
||||
AV_PIX_FMT_YUV422P12LE, ///< planar YUV 4:2:2,24bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
|
||||
AV_PIX_FMT_YUV422P14BE, ///< planar YUV 4:2:2,28bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
|
||||
AV_PIX_FMT_YUV422P14LE, ///< planar YUV 4:2:2,28bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
|
||||
AV_PIX_FMT_YUV444P12BE, ///< planar YUV 4:4:4,36bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
|
||||
AV_PIX_FMT_YUV444P12LE, ///< planar YUV 4:4:4,36bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
|
||||
AV_PIX_FMT_YUV444P14BE, ///< planar YUV 4:4:4,42bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
|
||||
AV_PIX_FMT_YUV444P14LE, ///< planar YUV 4:4:4,42bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
|
||||
AV_PIX_FMT_GBRP12BE, ///< planar GBR 4:4:4 36bpp, big-endian
|
||||
AV_PIX_FMT_GBRP12LE, ///< planar GBR 4:4:4 36bpp, little-endian
|
||||
AV_PIX_FMT_GBRP14BE, ///< planar GBR 4:4:4 42bpp, big-endian
|
||||
AV_PIX_FMT_GBRP14LE, ///< planar GBR 4:4:4 42bpp, little-endian
|
||||
AV_PIX_FMT_GBRAP, ///< planar GBRA 4:4:4:4 32bpp
|
||||
AV_PIX_FMT_GBRAP16BE, ///< planar GBRA 4:4:4:4 64bpp, big-endian
|
||||
AV_PIX_FMT_GBRAP16LE, ///< planar GBRA 4:4:4:4 64bpp, little-endian
|
||||
AV_PIX_FMT_YUVJ411P, ///< planar YUV 4:1:1, 12bpp, (1 Cr & Cb sample per 4x1 Y samples) full scale (JPEG), deprecated in favor of PIX_FMT_YUV411P and setting color_range
|
||||
AV_PIX_FMT_NB, ///< number of pixel formats, DO NOT USE THIS if you want to link with shared libav* because the number of formats might differ between versions
|
||||
|
||||
#if FF_API_PIX_FMT
|
||||
#include "old_pix_fmts.h"
|
||||
#endif
|
||||
};
|
||||
|
||||
#if AV_HAVE_INCOMPATIBLE_LIBAV_ABI
|
||||
#define AV_PIX_FMT_YUVA422P AV_PIX_FMT_YUVA422P_LIBAV
|
||||
#define AV_PIX_FMT_YUVA444P AV_PIX_FMT_YUVA444P_LIBAV
|
||||
#endif
|
||||
|
||||
|
||||
#define AV_PIX_FMT_Y400A AV_PIX_FMT_GRAY8A
|
||||
#define AV_PIX_FMT_GBR24P AV_PIX_FMT_GBRP
|
||||
|
||||
#if AV_HAVE_BIGENDIAN
|
||||
# define AV_PIX_FMT_NE(be, le) AV_PIX_FMT_##be
|
||||
#else
|
||||
# define AV_PIX_FMT_NE(be, le) AV_PIX_FMT_##le
|
||||
#endif
|
||||
|
||||
#define AV_PIX_FMT_RGB32 AV_PIX_FMT_NE(ARGB, BGRA)
|
||||
#define AV_PIX_FMT_RGB32_1 AV_PIX_FMT_NE(RGBA, ABGR)
|
||||
#define AV_PIX_FMT_BGR32 AV_PIX_FMT_NE(ABGR, RGBA)
|
||||
#define AV_PIX_FMT_BGR32_1 AV_PIX_FMT_NE(BGRA, ARGB)
|
||||
#define AV_PIX_FMT_0RGB32 AV_PIX_FMT_NE(0RGB, BGR0)
|
||||
#define AV_PIX_FMT_0BGR32 AV_PIX_FMT_NE(0BGR, RGB0)
|
||||
|
||||
#define AV_PIX_FMT_GRAY16 AV_PIX_FMT_NE(GRAY16BE, GRAY16LE)
|
||||
#define AV_PIX_FMT_RGB48 AV_PIX_FMT_NE(RGB48BE, RGB48LE)
|
||||
#define AV_PIX_FMT_RGB565 AV_PIX_FMT_NE(RGB565BE, RGB565LE)
|
||||
#define AV_PIX_FMT_RGB555 AV_PIX_FMT_NE(RGB555BE, RGB555LE)
|
||||
#define AV_PIX_FMT_RGB444 AV_PIX_FMT_NE(RGB444BE, RGB444LE)
|
||||
#define AV_PIX_FMT_BGR48 AV_PIX_FMT_NE(BGR48BE, BGR48LE)
|
||||
#define AV_PIX_FMT_BGR565 AV_PIX_FMT_NE(BGR565BE, BGR565LE)
|
||||
#define AV_PIX_FMT_BGR555 AV_PIX_FMT_NE(BGR555BE, BGR555LE)
|
||||
#define AV_PIX_FMT_BGR444 AV_PIX_FMT_NE(BGR444BE, BGR444LE)
|
||||
|
||||
#define AV_PIX_FMT_YUV420P9 AV_PIX_FMT_NE(YUV420P9BE , YUV420P9LE)
|
||||
#define AV_PIX_FMT_YUV422P9 AV_PIX_FMT_NE(YUV422P9BE , YUV422P9LE)
|
||||
#define AV_PIX_FMT_YUV444P9 AV_PIX_FMT_NE(YUV444P9BE , YUV444P9LE)
|
||||
#define AV_PIX_FMT_YUV420P10 AV_PIX_FMT_NE(YUV420P10BE, YUV420P10LE)
|
||||
#define AV_PIX_FMT_YUV422P10 AV_PIX_FMT_NE(YUV422P10BE, YUV422P10LE)
|
||||
#define AV_PIX_FMT_YUV444P10 AV_PIX_FMT_NE(YUV444P10BE, YUV444P10LE)
|
||||
#define AV_PIX_FMT_YUV420P12 AV_PIX_FMT_NE(YUV420P12BE, YUV420P12LE)
|
||||
#define AV_PIX_FMT_YUV422P12 AV_PIX_FMT_NE(YUV422P12BE, YUV422P12LE)
|
||||
#define AV_PIX_FMT_YUV444P12 AV_PIX_FMT_NE(YUV444P12BE, YUV444P12LE)
|
||||
#define AV_PIX_FMT_YUV420P14 AV_PIX_FMT_NE(YUV420P14BE, YUV420P14LE)
|
||||
#define AV_PIX_FMT_YUV422P14 AV_PIX_FMT_NE(YUV422P14BE, YUV422P14LE)
|
||||
#define AV_PIX_FMT_YUV444P14 AV_PIX_FMT_NE(YUV444P14BE, YUV444P14LE)
|
||||
#define AV_PIX_FMT_YUV420P16 AV_PIX_FMT_NE(YUV420P16BE, YUV420P16LE)
|
||||
#define AV_PIX_FMT_YUV422P16 AV_PIX_FMT_NE(YUV422P16BE, YUV422P16LE)
|
||||
#define AV_PIX_FMT_YUV444P16 AV_PIX_FMT_NE(YUV444P16BE, YUV444P16LE)
|
||||
|
||||
#define AV_PIX_FMT_RGBA64 AV_PIX_FMT_NE(RGBA64BE, RGBA64LE)
|
||||
#define AV_PIX_FMT_BGRA64 AV_PIX_FMT_NE(BGRA64BE, BGRA64LE)
|
||||
#define AV_PIX_FMT_GBRP9 AV_PIX_FMT_NE(GBRP9BE , GBRP9LE)
|
||||
#define AV_PIX_FMT_GBRP10 AV_PIX_FMT_NE(GBRP10BE, GBRP10LE)
|
||||
#define AV_PIX_FMT_GBRP12 AV_PIX_FMT_NE(GBRP12BE, GBRP12LE)
|
||||
#define AV_PIX_FMT_GBRP14 AV_PIX_FMT_NE(GBRP14BE, GBRP14LE)
|
||||
#define AV_PIX_FMT_GBRP16 AV_PIX_FMT_NE(GBRP16BE, GBRP16LE)
|
||||
|
||||
#define AV_PIX_FMT_YUVA420P9 AV_PIX_FMT_NE(YUVA420P9BE , YUVA420P9LE)
|
||||
#define AV_PIX_FMT_YUVA422P9 AV_PIX_FMT_NE(YUVA422P9BE , YUVA422P9LE)
|
||||
#define AV_PIX_FMT_YUVA444P9 AV_PIX_FMT_NE(YUVA444P9BE , YUVA444P9LE)
|
||||
#define AV_PIX_FMT_YUVA420P10 AV_PIX_FMT_NE(YUVA420P10BE, YUVA420P10LE)
|
||||
#define AV_PIX_FMT_YUVA422P10 AV_PIX_FMT_NE(YUVA422P10BE, YUVA422P10LE)
|
||||
#define AV_PIX_FMT_YUVA444P10 AV_PIX_FMT_NE(YUVA444P10BE, YUVA444P10LE)
|
||||
#define AV_PIX_FMT_YUVA420P16 AV_PIX_FMT_NE(YUVA420P16BE, YUVA420P16LE)
|
||||
#define AV_PIX_FMT_YUVA422P16 AV_PIX_FMT_NE(YUVA422P16BE, YUVA422P16LE)
|
||||
#define AV_PIX_FMT_YUVA444P16 AV_PIX_FMT_NE(YUVA444P16BE, YUVA444P16LE)
|
||||
|
||||
#define AV_PIX_FMT_XYZ12 AV_PIX_FMT_NE(XYZ12BE, XYZ12LE)
|
||||
|
||||
#if FF_API_PIX_FMT
|
||||
#define PixelFormat AVPixelFormat
|
||||
|
||||
#define PIX_FMT_Y400A AV_PIX_FMT_Y400A
|
||||
#define PIX_FMT_GBR24P AV_PIX_FMT_GBR24P
|
||||
|
||||
#define PIX_FMT_NE(be, le) AV_PIX_FMT_NE(be, le)
|
||||
|
||||
#define PIX_FMT_RGB32 AV_PIX_FMT_RGB32
|
||||
#define PIX_FMT_RGB32_1 AV_PIX_FMT_RGB32_1
|
||||
#define PIX_FMT_BGR32 AV_PIX_FMT_BGR32
|
||||
#define PIX_FMT_BGR32_1 AV_PIX_FMT_BGR32_1
|
||||
#define PIX_FMT_0RGB32 AV_PIX_FMT_0RGB32
|
||||
#define PIX_FMT_0BGR32 AV_PIX_FMT_0BGR32
|
||||
|
||||
#define PIX_FMT_GRAY16 AV_PIX_FMT_GRAY16
|
||||
#define PIX_FMT_RGB48 AV_PIX_FMT_RGB48
|
||||
#define PIX_FMT_RGB565 AV_PIX_FMT_RGB565
|
||||
#define PIX_FMT_RGB555 AV_PIX_FMT_RGB555
|
||||
#define PIX_FMT_RGB444 AV_PIX_FMT_RGB444
|
||||
#define PIX_FMT_BGR48 AV_PIX_FMT_BGR48
|
||||
#define PIX_FMT_BGR565 AV_PIX_FMT_BGR565
|
||||
#define PIX_FMT_BGR555 AV_PIX_FMT_BGR555
|
||||
#define PIX_FMT_BGR444 AV_PIX_FMT_BGR444
|
||||
|
||||
#define PIX_FMT_YUV420P9 AV_PIX_FMT_YUV420P9
|
||||
#define PIX_FMT_YUV422P9 AV_PIX_FMT_YUV422P9
|
||||
#define PIX_FMT_YUV444P9 AV_PIX_FMT_YUV444P9
|
||||
#define PIX_FMT_YUV420P10 AV_PIX_FMT_YUV420P10
|
||||
#define PIX_FMT_YUV422P10 AV_PIX_FMT_YUV422P10
|
||||
#define PIX_FMT_YUV444P10 AV_PIX_FMT_YUV444P10
|
||||
#define PIX_FMT_YUV420P12 AV_PIX_FMT_YUV420P12
|
||||
#define PIX_FMT_YUV422P12 AV_PIX_FMT_YUV422P12
|
||||
#define PIX_FMT_YUV444P12 AV_PIX_FMT_YUV444P12
|
||||
#define PIX_FMT_YUV420P14 AV_PIX_FMT_YUV420P14
|
||||
#define PIX_FMT_YUV422P14 AV_PIX_FMT_YUV422P14
|
||||
#define PIX_FMT_YUV444P14 AV_PIX_FMT_YUV444P14
|
||||
#define PIX_FMT_YUV420P16 AV_PIX_FMT_YUV420P16
|
||||
#define PIX_FMT_YUV422P16 AV_PIX_FMT_YUV422P16
|
||||
#define PIX_FMT_YUV444P16 AV_PIX_FMT_YUV444P16
|
||||
|
||||
#define PIX_FMT_RGBA64 AV_PIX_FMT_RGBA64
|
||||
#define PIX_FMT_BGRA64 AV_PIX_FMT_BGRA64
|
||||
#define PIX_FMT_GBRP9 AV_PIX_FMT_GBRP9
|
||||
#define PIX_FMT_GBRP10 AV_PIX_FMT_GBRP10
|
||||
#define PIX_FMT_GBRP12 AV_PIX_FMT_GBRP12
|
||||
#define PIX_FMT_GBRP14 AV_PIX_FMT_GBRP14
|
||||
#define PIX_FMT_GBRP16 AV_PIX_FMT_GBRP16
|
||||
#endif
|
||||
|
||||
#endif /* AVUTIL_PIXFMT_H */
|
||||
43
3rdparty/include/ffmpeg_/libavutil/random_seed.h
vendored
43
3rdparty/include/ffmpeg_/libavutil/random_seed.h
vendored
@@ -1,43 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2009 Baptiste Coudurier <baptiste.coudurier@gmail.com>
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef AVUTIL_RANDOM_SEED_H
|
||||
#define AVUTIL_RANDOM_SEED_H
|
||||
|
||||
#include <stdint.h>
|
||||
/**
|
||||
* @addtogroup lavu_crypto
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* Get a seed to use in conjunction with random functions.
|
||||
* This function tries to provide a good seed at a best effort bases.
|
||||
* Its possible to call this function multiple times if more bits are needed.
|
||||
* It can be quite slow, which is why it should only be used as seed for a faster
|
||||
* PRNG. The quality of the seed depends on the platform.
|
||||
*/
|
||||
uint32_t av_get_random_seed(void);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
#endif /* AVUTIL_RANDOM_SEED_H */
|
||||
155
3rdparty/include/ffmpeg_/libavutil/rational.h
vendored
155
3rdparty/include/ffmpeg_/libavutil/rational.h
vendored
@@ -1,155 +0,0 @@
|
||||
/*
|
||||
* rational numbers
|
||||
* Copyright (c) 2003 Michael Niedermayer <michaelni@gmx.at>
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file
|
||||
* rational numbers
|
||||
* @author Michael Niedermayer <michaelni@gmx.at>
|
||||
*/
|
||||
|
||||
#ifndef AVUTIL_RATIONAL_H
|
||||
#define AVUTIL_RATIONAL_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <limits.h>
|
||||
#include "attributes.h"
|
||||
|
||||
/**
|
||||
* @addtogroup lavu_math
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* rational number numerator/denominator
|
||||
*/
|
||||
typedef struct AVRational{
|
||||
int num; ///< numerator
|
||||
int den; ///< denominator
|
||||
} AVRational;
|
||||
|
||||
/**
|
||||
* Compare two rationals.
|
||||
* @param a first rational
|
||||
* @param b second rational
|
||||
* @return 0 if a==b, 1 if a>b, -1 if a<b, and INT_MIN if one of the
|
||||
* values is of the form 0/0
|
||||
*/
|
||||
static inline int av_cmp_q(AVRational a, AVRational b){
|
||||
const int64_t tmp= a.num * (int64_t)b.den - b.num * (int64_t)a.den;
|
||||
|
||||
if(tmp) return ((tmp ^ a.den ^ b.den)>>63)|1;
|
||||
else if(b.den && a.den) return 0;
|
||||
else if(a.num && b.num) return (a.num>>31) - (b.num>>31);
|
||||
else return INT_MIN;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert rational to double.
|
||||
* @param a rational to convert
|
||||
* @return (double) a
|
||||
*/
|
||||
static inline double av_q2d(AVRational a){
|
||||
return a.num / (double) a.den;
|
||||
}
|
||||
|
||||
/**
|
||||
* Reduce a fraction.
|
||||
* This is useful for framerate calculations.
|
||||
* @param dst_num destination numerator
|
||||
* @param dst_den destination denominator
|
||||
* @param num source numerator
|
||||
* @param den source denominator
|
||||
* @param max the maximum allowed for dst_num & dst_den
|
||||
* @return 1 if exact, 0 otherwise
|
||||
*/
|
||||
int av_reduce(int *dst_num, int *dst_den, int64_t num, int64_t den, int64_t max);
|
||||
|
||||
/**
|
||||
* Multiply two rationals.
|
||||
* @param b first rational
|
||||
* @param c second rational
|
||||
* @return b*c
|
||||
*/
|
||||
AVRational av_mul_q(AVRational b, AVRational c) av_const;
|
||||
|
||||
/**
|
||||
* Divide one rational by another.
|
||||
* @param b first rational
|
||||
* @param c second rational
|
||||
* @return b/c
|
||||
*/
|
||||
AVRational av_div_q(AVRational b, AVRational c) av_const;
|
||||
|
||||
/**
|
||||
* Add two rationals.
|
||||
* @param b first rational
|
||||
* @param c second rational
|
||||
* @return b+c
|
||||
*/
|
||||
AVRational av_add_q(AVRational b, AVRational c) av_const;
|
||||
|
||||
/**
|
||||
* Subtract one rational from another.
|
||||
* @param b first rational
|
||||
* @param c second rational
|
||||
* @return b-c
|
||||
*/
|
||||
AVRational av_sub_q(AVRational b, AVRational c) av_const;
|
||||
|
||||
/**
|
||||
* Invert a rational.
|
||||
* @param q value
|
||||
* @return 1 / q
|
||||
*/
|
||||
static av_always_inline AVRational av_inv_q(AVRational q)
|
||||
{
|
||||
AVRational r = { q.den, q.num };
|
||||
return r;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert a double precision floating point number to a rational.
|
||||
* inf is expressed as {1,0} or {-1,0} depending on the sign.
|
||||
*
|
||||
* @param d double to convert
|
||||
* @param max the maximum allowed numerator and denominator
|
||||
* @return (AVRational) d
|
||||
*/
|
||||
AVRational av_d2q(double d, int max) av_const;
|
||||
|
||||
/**
|
||||
* @return 1 if q1 is nearer to q than q2, -1 if q2 is nearer
|
||||
* than q1, 0 if they have the same distance.
|
||||
*/
|
||||
int av_nearer_q(AVRational q, AVRational q1, AVRational q2);
|
||||
|
||||
/**
|
||||
* Find the nearest value in q_list to q.
|
||||
* @param q_list an array of rationals terminated by {0, 0}
|
||||
* @return the index of the nearest value found in the array
|
||||
*/
|
||||
int av_find_nearest_q_idx(AVRational q, const AVRational* q_list);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
#endif /* AVUTIL_RATIONAL_H */
|
||||
75
3rdparty/include/ffmpeg_/libavutil/ripemd.h
vendored
75
3rdparty/include/ffmpeg_/libavutil/ripemd.h
vendored
@@ -1,75 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2007 Michael Niedermayer <michaelni@gmx.at>
|
||||
* Copyright (C) 2013 James Almer <jamrial@gmail.com>
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef AVUTIL_RIPEMD_H
|
||||
#define AVUTIL_RIPEMD_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "attributes.h"
|
||||
#include "version.h"
|
||||
|
||||
/**
|
||||
* @defgroup lavu_ripemd RIPEMD
|
||||
* @ingroup lavu_crypto
|
||||
* @{
|
||||
*/
|
||||
|
||||
extern const int av_ripemd_size;
|
||||
|
||||
struct AVRIPEMD;
|
||||
|
||||
/**
|
||||
* Allocate an AVRIPEMD context.
|
||||
*/
|
||||
struct AVRIPEMD *av_ripemd_alloc(void);
|
||||
|
||||
/**
|
||||
* Initialize RIPEMD hashing.
|
||||
*
|
||||
* @param context pointer to the function context (of size av_ripemd_size)
|
||||
* @param bits number of bits in digest (128, 160, 256 or 320 bits)
|
||||
* @return zero if initialization succeeded, -1 otherwise
|
||||
*/
|
||||
int av_ripemd_init(struct AVRIPEMD* context, int bits);
|
||||
|
||||
/**
|
||||
* Update hash value.
|
||||
*
|
||||
* @param context hash function context
|
||||
* @param data input data to update hash with
|
||||
* @param len input data length
|
||||
*/
|
||||
void av_ripemd_update(struct AVRIPEMD* context, const uint8_t* data, unsigned int len);
|
||||
|
||||
/**
|
||||
* Finish hashing and output digest value.
|
||||
*
|
||||
* @param context hash function context
|
||||
* @param digest buffer where output digest value is stored
|
||||
*/
|
||||
void av_ripemd_final(struct AVRIPEMD* context, uint8_t *digest);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
#endif /* AVUTIL_RIPEMD_H */
|
||||
256
3rdparty/include/ffmpeg_/libavutil/samplefmt.h
vendored
256
3rdparty/include/ffmpeg_/libavutil/samplefmt.h
vendored
@@ -1,256 +0,0 @@
|
||||
/*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef AVUTIL_SAMPLEFMT_H
|
||||
#define AVUTIL_SAMPLEFMT_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "avutil.h"
|
||||
#include "attributes.h"
|
||||
|
||||
/**
|
||||
* Audio Sample Formats
|
||||
*
|
||||
* @par
|
||||
* The data described by the sample format is always in native-endian order.
|
||||
* Sample values can be expressed by native C types, hence the lack of a signed
|
||||
* 24-bit sample format even though it is a common raw audio data format.
|
||||
*
|
||||
* @par
|
||||
* The floating-point formats are based on full volume being in the range
|
||||
* [-1.0, 1.0]. Any values outside this range are beyond full volume level.
|
||||
*
|
||||
* @par
|
||||
* The data layout as used in av_samples_fill_arrays() and elsewhere in FFmpeg
|
||||
* (such as AVFrame in libavcodec) is as follows:
|
||||
*
|
||||
* For planar sample formats, each audio channel is in a separate data plane,
|
||||
* and linesize is the buffer size, in bytes, for a single plane. All data
|
||||
* planes must be the same size. For packed sample formats, only the first data
|
||||
* plane is used, and samples for each channel are interleaved. In this case,
|
||||
* linesize is the buffer size, in bytes, for the 1 plane.
|
||||
*/
|
||||
enum AVSampleFormat {
|
||||
AV_SAMPLE_FMT_NONE = -1,
|
||||
AV_SAMPLE_FMT_U8, ///< unsigned 8 bits
|
||||
AV_SAMPLE_FMT_S16, ///< signed 16 bits
|
||||
AV_SAMPLE_FMT_S32, ///< signed 32 bits
|
||||
AV_SAMPLE_FMT_FLT, ///< float
|
||||
AV_SAMPLE_FMT_DBL, ///< double
|
||||
|
||||
AV_SAMPLE_FMT_U8P, ///< unsigned 8 bits, planar
|
||||
AV_SAMPLE_FMT_S16P, ///< signed 16 bits, planar
|
||||
AV_SAMPLE_FMT_S32P, ///< signed 32 bits, planar
|
||||
AV_SAMPLE_FMT_FLTP, ///< float, planar
|
||||
AV_SAMPLE_FMT_DBLP, ///< double, planar
|
||||
|
||||
AV_SAMPLE_FMT_NB ///< Number of sample formats. DO NOT USE if linking dynamically
|
||||
};
|
||||
|
||||
/**
|
||||
* Return the name of sample_fmt, or NULL if sample_fmt is not
|
||||
* recognized.
|
||||
*/
|
||||
const char *av_get_sample_fmt_name(enum AVSampleFormat sample_fmt);
|
||||
|
||||
/**
|
||||
* Return a sample format corresponding to name, or AV_SAMPLE_FMT_NONE
|
||||
* on error.
|
||||
*/
|
||||
enum AVSampleFormat av_get_sample_fmt(const char *name);
|
||||
|
||||
/**
|
||||
* Return the planar<->packed alternative form of the given sample format, or
|
||||
* AV_SAMPLE_FMT_NONE on error. If the passed sample_fmt is already in the
|
||||
* requested planar/packed format, the format returned is the same as the
|
||||
* input.
|
||||
*/
|
||||
enum AVSampleFormat av_get_alt_sample_fmt(enum AVSampleFormat sample_fmt, int planar);
|
||||
|
||||
/**
|
||||
* Get the packed alternative form of the given sample format.
|
||||
*
|
||||
* If the passed sample_fmt is already in packed format, the format returned is
|
||||
* the same as the input.
|
||||
*
|
||||
* @return the packed alternative form of the given sample format or
|
||||
AV_SAMPLE_FMT_NONE on error.
|
||||
*/
|
||||
enum AVSampleFormat av_get_packed_sample_fmt(enum AVSampleFormat sample_fmt);
|
||||
|
||||
/**
|
||||
* Get the planar alternative form of the given sample format.
|
||||
*
|
||||
* If the passed sample_fmt is already in planar format, the format returned is
|
||||
* the same as the input.
|
||||
*
|
||||
* @return the planar alternative form of the given sample format or
|
||||
AV_SAMPLE_FMT_NONE on error.
|
||||
*/
|
||||
enum AVSampleFormat av_get_planar_sample_fmt(enum AVSampleFormat sample_fmt);
|
||||
|
||||
/**
|
||||
* Generate a string corresponding to the sample format with
|
||||
* sample_fmt, or a header if sample_fmt is negative.
|
||||
*
|
||||
* @param buf the buffer where to write the string
|
||||
* @param buf_size the size of buf
|
||||
* @param sample_fmt the number of the sample format to print the
|
||||
* corresponding info string, or a negative value to print the
|
||||
* corresponding header.
|
||||
* @return the pointer to the filled buffer or NULL if sample_fmt is
|
||||
* unknown or in case of other errors
|
||||
*/
|
||||
char *av_get_sample_fmt_string(char *buf, int buf_size, enum AVSampleFormat sample_fmt);
|
||||
|
||||
#if FF_API_GET_BITS_PER_SAMPLE_FMT
|
||||
/**
|
||||
* @deprecated Use av_get_bytes_per_sample() instead.
|
||||
*/
|
||||
attribute_deprecated
|
||||
int av_get_bits_per_sample_fmt(enum AVSampleFormat sample_fmt);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Return number of bytes per sample.
|
||||
*
|
||||
* @param sample_fmt the sample format
|
||||
* @return number of bytes per sample or zero if unknown for the given
|
||||
* sample format
|
||||
*/
|
||||
int av_get_bytes_per_sample(enum AVSampleFormat sample_fmt);
|
||||
|
||||
/**
|
||||
* Check if the sample format is planar.
|
||||
*
|
||||
* @param sample_fmt the sample format to inspect
|
||||
* @return 1 if the sample format is planar, 0 if it is interleaved
|
||||
*/
|
||||
int av_sample_fmt_is_planar(enum AVSampleFormat sample_fmt);
|
||||
|
||||
/**
|
||||
* Get the required buffer size for the given audio parameters.
|
||||
*
|
||||
* @param[out] linesize calculated linesize, may be NULL
|
||||
* @param nb_channels the number of channels
|
||||
* @param nb_samples the number of samples in a single channel
|
||||
* @param sample_fmt the sample format
|
||||
* @param align buffer size alignment (0 = default, 1 = no alignment)
|
||||
* @return required buffer size, or negative error code on failure
|
||||
*/
|
||||
int av_samples_get_buffer_size(int *linesize, int nb_channels, int nb_samples,
|
||||
enum AVSampleFormat sample_fmt, int align);
|
||||
|
||||
/**
|
||||
* Fill plane data pointers and linesize for samples with sample
|
||||
* format sample_fmt.
|
||||
*
|
||||
* The audio_data array is filled with the pointers to the samples data planes:
|
||||
* for planar, set the start point of each channel's data within the buffer,
|
||||
* for packed, set the start point of the entire buffer only.
|
||||
*
|
||||
* The value pointed to by linesize is set to the aligned size of each
|
||||
* channel's data buffer for planar layout, or to the aligned size of the
|
||||
* buffer for all channels for packed layout.
|
||||
*
|
||||
* The buffer in buf must be big enough to contain all the samples
|
||||
* (use av_samples_get_buffer_size() to compute its minimum size),
|
||||
* otherwise the audio_data pointers will point to invalid data.
|
||||
*
|
||||
* @see enum AVSampleFormat
|
||||
* The documentation for AVSampleFormat describes the data layout.
|
||||
*
|
||||
* @param[out] audio_data array to be filled with the pointer for each channel
|
||||
* @param[out] linesize calculated linesize, may be NULL
|
||||
* @param buf the pointer to a buffer containing the samples
|
||||
* @param nb_channels the number of channels
|
||||
* @param nb_samples the number of samples in a single channel
|
||||
* @param sample_fmt the sample format
|
||||
* @param align buffer size alignment (0 = default, 1 = no alignment)
|
||||
* @return >=0 on success or a negative error code on failure
|
||||
* @todo return minimum size in bytes required for the buffer in case
|
||||
* of success at the next bump
|
||||
*/
|
||||
int av_samples_fill_arrays(uint8_t **audio_data, int *linesize,
|
||||
const uint8_t *buf,
|
||||
int nb_channels, int nb_samples,
|
||||
enum AVSampleFormat sample_fmt, int align);
|
||||
|
||||
/**
|
||||
* Allocate a samples buffer for nb_samples samples, and fill data pointers and
|
||||
* linesize accordingly.
|
||||
* The allocated samples buffer can be freed by using av_freep(&audio_data[0])
|
||||
* Allocated data will be initialized to silence.
|
||||
*
|
||||
* @see enum AVSampleFormat
|
||||
* The documentation for AVSampleFormat describes the data layout.
|
||||
*
|
||||
* @param[out] audio_data array to be filled with the pointer for each channel
|
||||
* @param[out] linesize aligned size for audio buffer(s), may be NULL
|
||||
* @param nb_channels number of audio channels
|
||||
* @param nb_samples number of samples per channel
|
||||
* @param align buffer size alignment (0 = default, 1 = no alignment)
|
||||
* @return >=0 on success or a negative error code on failure
|
||||
* @todo return the size of the allocated buffer in case of success at the next bump
|
||||
* @see av_samples_fill_arrays()
|
||||
* @see av_samples_alloc_array_and_samples()
|
||||
*/
|
||||
int av_samples_alloc(uint8_t **audio_data, int *linesize, int nb_channels,
|
||||
int nb_samples, enum AVSampleFormat sample_fmt, int align);
|
||||
|
||||
/**
|
||||
* Allocate a data pointers array, samples buffer for nb_samples
|
||||
* samples, and fill data pointers and linesize accordingly.
|
||||
*
|
||||
* This is the same as av_samples_alloc(), but also allocates the data
|
||||
* pointers array.
|
||||
*
|
||||
* @see av_samples_alloc()
|
||||
*/
|
||||
int av_samples_alloc_array_and_samples(uint8_t ***audio_data, int *linesize, int nb_channels,
|
||||
int nb_samples, enum AVSampleFormat sample_fmt, int align);
|
||||
|
||||
/**
|
||||
* Copy samples from src to dst.
|
||||
*
|
||||
* @param dst destination array of pointers to data planes
|
||||
* @param src source array of pointers to data planes
|
||||
* @param dst_offset offset in samples at which the data will be written to dst
|
||||
* @param src_offset offset in samples at which the data will be read from src
|
||||
* @param nb_samples number of samples to be copied
|
||||
* @param nb_channels number of audio channels
|
||||
* @param sample_fmt audio sample format
|
||||
*/
|
||||
int av_samples_copy(uint8_t **dst, uint8_t * const *src, int dst_offset,
|
||||
int src_offset, int nb_samples, int nb_channels,
|
||||
enum AVSampleFormat sample_fmt);
|
||||
|
||||
/**
|
||||
* Fill an audio buffer with silence.
|
||||
*
|
||||
* @param audio_data array of pointers to data planes
|
||||
* @param offset offset in samples at which to start filling
|
||||
* @param nb_samples number of samples to fill
|
||||
* @param nb_channels number of audio channels
|
||||
* @param sample_fmt audio sample format
|
||||
*/
|
||||
int av_samples_set_silence(uint8_t **audio_data, int offset, int nb_samples,
|
||||
int nb_channels, enum AVSampleFormat sample_fmt);
|
||||
|
||||
#endif /* AVUTIL_SAMPLEFMT_H */
|
||||
74
3rdparty/include/ffmpeg_/libavutil/sha.h
vendored
74
3rdparty/include/ffmpeg_/libavutil/sha.h
vendored
@@ -1,74 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2007 Michael Niedermayer <michaelni@gmx.at>
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef AVUTIL_SHA_H
|
||||
#define AVUTIL_SHA_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "attributes.h"
|
||||
#include "version.h"
|
||||
|
||||
/**
|
||||
* @defgroup lavu_sha SHA
|
||||
* @ingroup lavu_crypto
|
||||
* @{
|
||||
*/
|
||||
|
||||
extern const int av_sha_size;
|
||||
|
||||
struct AVSHA;
|
||||
|
||||
/**
|
||||
* Allocate an AVSHA context.
|
||||
*/
|
||||
struct AVSHA *av_sha_alloc(void);
|
||||
|
||||
/**
|
||||
* Initialize SHA-1 or SHA-2 hashing.
|
||||
*
|
||||
* @param context pointer to the function context (of size av_sha_size)
|
||||
* @param bits number of bits in digest (SHA-1 - 160 bits, SHA-2 224 or 256 bits)
|
||||
* @return zero if initialization succeeded, -1 otherwise
|
||||
*/
|
||||
int av_sha_init(struct AVSHA* context, int bits);
|
||||
|
||||
/**
|
||||
* Update hash value.
|
||||
*
|
||||
* @param context hash function context
|
||||
* @param data input data to update hash with
|
||||
* @param len input data length
|
||||
*/
|
||||
void av_sha_update(struct AVSHA* context, const uint8_t* data, unsigned int len);
|
||||
|
||||
/**
|
||||
* Finish hashing and output digest value.
|
||||
*
|
||||
* @param context hash function context
|
||||
* @param digest buffer where output digest value is stored
|
||||
*/
|
||||
void av_sha_final(struct AVSHA* context, uint8_t *digest);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
#endif /* AVUTIL_SHA_H */
|
||||
75
3rdparty/include/ffmpeg_/libavutil/sha512.h
vendored
75
3rdparty/include/ffmpeg_/libavutil/sha512.h
vendored
@@ -1,75 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2007 Michael Niedermayer <michaelni@gmx.at>
|
||||
* Copyright (C) 2013 James Almer <jamrial@gmail.com>
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef AVUTIL_SHA512_H
|
||||
#define AVUTIL_SHA512_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "attributes.h"
|
||||
#include "version.h"
|
||||
|
||||
/**
|
||||
* @defgroup lavu_sha512 SHA512
|
||||
* @ingroup lavu_crypto
|
||||
* @{
|
||||
*/
|
||||
|
||||
extern const int av_sha512_size;
|
||||
|
||||
struct AVSHA512;
|
||||
|
||||
/**
|
||||
* Allocate an AVSHA512 context.
|
||||
*/
|
||||
struct AVSHA512 *av_sha512_alloc(void);
|
||||
|
||||
/**
|
||||
* Initialize SHA-2 512 hashing.
|
||||
*
|
||||
* @param context pointer to the function context (of size av_sha512_size)
|
||||
* @param bits number of bits in digest (224, 256, 384 or 512 bits)
|
||||
* @return zero if initialization succeeded, -1 otherwise
|
||||
*/
|
||||
int av_sha512_init(struct AVSHA512* context, int bits);
|
||||
|
||||
/**
|
||||
* Update hash value.
|
||||
*
|
||||
* @param context hash function context
|
||||
* @param data input data to update hash with
|
||||
* @param len input data length
|
||||
*/
|
||||
void av_sha512_update(struct AVSHA512* context, const uint8_t* data, unsigned int len);
|
||||
|
||||
/**
|
||||
* Finish hashing and output digest value.
|
||||
*
|
||||
* @param context hash function context
|
||||
* @param digest buffer where output digest value is stored
|
||||
*/
|
||||
void av_sha512_final(struct AVSHA512* context, uint8_t *digest);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
#endif /* AVUTIL_SHA512_H */
|
||||
41
3rdparty/include/ffmpeg_/libavutil/time.h
vendored
41
3rdparty/include/ffmpeg_/libavutil/time.h
vendored
@@ -1,41 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2000-2003 Fabrice Bellard
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef AVUTIL_TIME_H
|
||||
#define AVUTIL_TIME_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/**
|
||||
* Get the current time in microseconds.
|
||||
*/
|
||||
int64_t av_gettime(void);
|
||||
|
||||
/**
|
||||
* Sleep for a period of time. Although the duration is expressed in
|
||||
* microseconds, the actual delay may be rounded to the precision of the
|
||||
* system timer.
|
||||
*
|
||||
* @param usec Number of microseconds to sleep.
|
||||
* @return zero on success or (negative) error code.
|
||||
*/
|
||||
int av_usleep(unsigned usec);
|
||||
|
||||
#endif /* AVUTIL_TIME_H */
|
||||
140
3rdparty/include/ffmpeg_/libavutil/timecode.h
vendored
140
3rdparty/include/ffmpeg_/libavutil/timecode.h
vendored
@@ -1,140 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2006 Smartjog S.A.S, Baptiste Coudurier <baptiste.coudurier@gmail.com>
|
||||
* Copyright (c) 2011-2012 Smartjog S.A.S, Clément Bœsch <clement.boesch@smartjog.com>
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Timecode helpers header
|
||||
*/
|
||||
|
||||
#ifndef AVUTIL_TIMECODE_H
|
||||
#define AVUTIL_TIMECODE_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include "rational.h"
|
||||
|
||||
#define AV_TIMECODE_STR_SIZE 16
|
||||
|
||||
enum AVTimecodeFlag {
|
||||
AV_TIMECODE_FLAG_DROPFRAME = 1<<0, ///< timecode is drop frame
|
||||
AV_TIMECODE_FLAG_24HOURSMAX = 1<<1, ///< timecode wraps after 24 hours
|
||||
AV_TIMECODE_FLAG_ALLOWNEGATIVE = 1<<2, ///< negative time values are allowed
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
int start; ///< timecode frame start (first base frame number)
|
||||
uint32_t flags; ///< flags such as drop frame, +24 hours support, ...
|
||||
AVRational rate; ///< frame rate in rational form
|
||||
unsigned fps; ///< frame per second; must be consistent with the rate field
|
||||
} AVTimecode;
|
||||
|
||||
/**
|
||||
* Adjust frame number for NTSC drop frame time code.
|
||||
*
|
||||
* @param framenum frame number to adjust
|
||||
* @param fps frame per second, 30 or 60
|
||||
* @return adjusted frame number
|
||||
* @warning adjustment is only valid in NTSC 29.97 and 59.94
|
||||
*/
|
||||
int av_timecode_adjust_ntsc_framenum2(int framenum, int fps);
|
||||
|
||||
/**
|
||||
* Convert frame number to SMPTE 12M binary representation.
|
||||
*
|
||||
* @param tc timecode data correctly initialized
|
||||
* @param framenum frame number
|
||||
* @return the SMPTE binary representation
|
||||
*
|
||||
* @note Frame number adjustment is automatically done in case of drop timecode,
|
||||
* you do NOT have to call av_timecode_adjust_ntsc_framenum2().
|
||||
* @note The frame number is relative to tc->start.
|
||||
* @note Color frame (CF), binary group flags (BGF) and biphase mark polarity
|
||||
* correction (PC) bits are set to zero.
|
||||
*/
|
||||
uint32_t av_timecode_get_smpte_from_framenum(const AVTimecode *tc, int framenum);
|
||||
|
||||
/**
|
||||
* Load timecode string in buf.
|
||||
*
|
||||
* @param buf destination buffer, must be at least AV_TIMECODE_STR_SIZE long
|
||||
* @param tc timecode data correctly initialized
|
||||
* @param framenum frame number
|
||||
* @return the buf parameter
|
||||
*
|
||||
* @note Timecode representation can be a negative timecode and have more than
|
||||
* 24 hours, but will only be honored if the flags are correctly set.
|
||||
* @note The frame number is relative to tc->start.
|
||||
*/
|
||||
char *av_timecode_make_string(const AVTimecode *tc, char *buf, int framenum);
|
||||
|
||||
/**
|
||||
* Get the timecode string from the SMPTE timecode format.
|
||||
*
|
||||
* @param buf destination buffer, must be at least AV_TIMECODE_STR_SIZE long
|
||||
* @param tcsmpte the 32-bit SMPTE timecode
|
||||
* @param prevent_df prevent the use of a drop flag when it is known the DF bit
|
||||
* is arbitrary
|
||||
* @return the buf parameter
|
||||
*/
|
||||
char *av_timecode_make_smpte_tc_string(char *buf, uint32_t tcsmpte, int prevent_df);
|
||||
|
||||
/**
|
||||
* Get the timecode string from the 25-bit timecode format (MPEG GOP format).
|
||||
*
|
||||
* @param buf destination buffer, must be at least AV_TIMECODE_STR_SIZE long
|
||||
* @param tc25bit the 25-bits timecode
|
||||
* @return the buf parameter
|
||||
*/
|
||||
char *av_timecode_make_mpeg_tc_string(char *buf, uint32_t tc25bit);
|
||||
|
||||
/**
|
||||
* Init a timecode struct with the passed parameters.
|
||||
*
|
||||
* @param log_ctx a pointer to an arbitrary struct of which the first field
|
||||
* is a pointer to an AVClass struct (used for av_log)
|
||||
* @param tc pointer to an allocated AVTimecode
|
||||
* @param rate frame rate in rational form
|
||||
* @param flags miscellaneous flags such as drop frame, +24 hours, ...
|
||||
* (see AVTimecodeFlag)
|
||||
* @param frame_start the first frame number
|
||||
* @return 0 on success, AVERROR otherwise
|
||||
*/
|
||||
int av_timecode_init(AVTimecode *tc, AVRational rate, int flags, int frame_start, void *log_ctx);
|
||||
|
||||
/**
|
||||
* Parse timecode representation (hh:mm:ss[:;.]ff).
|
||||
*
|
||||
* @param log_ctx a pointer to an arbitrary struct of which the first field is a
|
||||
* pointer to an AVClass struct (used for av_log).
|
||||
* @param tc pointer to an allocated AVTimecode
|
||||
* @param rate frame rate in rational form
|
||||
* @param str timecode string which will determine the frame start
|
||||
* @return 0 on success, AVERROR otherwise
|
||||
*/
|
||||
int av_timecode_init_from_string(AVTimecode *tc, AVRational rate, const char *str, void *log_ctx);
|
||||
|
||||
/**
|
||||
* Check if the timecode feature is available for the given frame rate
|
||||
*
|
||||
* @return 0 if supported, <0 otherwise
|
||||
*/
|
||||
int av_timecode_check_frame_rate(AVRational rate);
|
||||
|
||||
#endif /* AVUTIL_TIMECODE_H */
|
||||
74
3rdparty/include/ffmpeg_/libavutil/timestamp.h
vendored
74
3rdparty/include/ffmpeg_/libavutil/timestamp.h
vendored
@@ -1,74 +0,0 @@
|
||||
/*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file
|
||||
* timestamp utils, mostly useful for debugging/logging purposes
|
||||
*/
|
||||
|
||||
#ifndef AVUTIL_TIMESTAMP_H
|
||||
#define AVUTIL_TIMESTAMP_H
|
||||
|
||||
#include "common.h"
|
||||
|
||||
#define AV_TS_MAX_STRING_SIZE 32
|
||||
|
||||
/**
|
||||
* Fill the provided buffer with a string containing a timestamp
|
||||
* representation.
|
||||
*
|
||||
* @param buf a buffer with size in bytes of at least AV_TS_MAX_STRING_SIZE
|
||||
* @param ts the timestamp to represent
|
||||
* @return the buffer in input
|
||||
*/
|
||||
static inline char *av_ts_make_string(char *buf, int64_t ts)
|
||||
{
|
||||
if (ts == AV_NOPTS_VALUE) snprintf(buf, AV_TS_MAX_STRING_SIZE, "NOPTS");
|
||||
else snprintf(buf, AV_TS_MAX_STRING_SIZE, "%"PRId64, ts);
|
||||
return buf;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convenience macro, the return value should be used only directly in
|
||||
* function arguments but never stand-alone.
|
||||
*/
|
||||
#define av_ts2str(ts) av_ts_make_string((char[AV_TS_MAX_STRING_SIZE]){0}, ts)
|
||||
|
||||
/**
|
||||
* Fill the provided buffer with a string containing a timestamp time
|
||||
* representation.
|
||||
*
|
||||
* @param buf a buffer with size in bytes of at least AV_TS_MAX_STRING_SIZE
|
||||
* @param ts the timestamp to represent
|
||||
* @param tb the timebase of the timestamp
|
||||
* @return the buffer in input
|
||||
*/
|
||||
static inline char *av_ts_make_time_string(char *buf, int64_t ts, AVRational *tb)
|
||||
{
|
||||
if (ts == AV_NOPTS_VALUE) snprintf(buf, AV_TS_MAX_STRING_SIZE, "NOPTS");
|
||||
else snprintf(buf, AV_TS_MAX_STRING_SIZE, "%.6g", av_q2d(*tb) * ts);
|
||||
return buf;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convenience macro, the return value should be used only directly in
|
||||
* function arguments but never stand-alone.
|
||||
*/
|
||||
#define av_ts2timestr(ts, tb) av_ts_make_time_string((char[AV_TS_MAX_STRING_SIZE]){0}, ts, tb)
|
||||
|
||||
#endif /* AVUTIL_TIMESTAMP_H */
|
||||
144
3rdparty/include/ffmpeg_/libavutil/version.h
vendored
144
3rdparty/include/ffmpeg_/libavutil/version.h
vendored
@@ -1,144 +0,0 @@
|
||||
/*
|
||||
* copyright (c) 2003 Fabrice Bellard
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef AVUTIL_VERSION_H
|
||||
#define AVUTIL_VERSION_H
|
||||
|
||||
/**
|
||||
* @defgroup preproc_misc Preprocessor String Macros
|
||||
*
|
||||
* String manipulation macros
|
||||
*
|
||||
* @{
|
||||
*/
|
||||
|
||||
#define AV_STRINGIFY(s) AV_TOSTRING(s)
|
||||
#define AV_TOSTRING(s) #s
|
||||
|
||||
#define AV_GLUE(a, b) a ## b
|
||||
#define AV_JOIN(a, b) AV_GLUE(a, b)
|
||||
|
||||
#define AV_PRAGMA(s) _Pragma(#s)
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/**
|
||||
* @defgroup version_utils Library Version Macros
|
||||
*
|
||||
* Useful to check and match library version in order to maintain
|
||||
* backward compatibility.
|
||||
*
|
||||
* @{
|
||||
*/
|
||||
|
||||
#define AV_VERSION_INT(a, b, c) (a<<16 | b<<8 | c)
|
||||
#define AV_VERSION_DOT(a, b, c) a ##.## b ##.## c
|
||||
#define AV_VERSION(a, b, c) AV_VERSION_DOT(a, b, c)
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @file
|
||||
* @ingroup lavu
|
||||
* Libavutil version macros
|
||||
*/
|
||||
|
||||
/**
|
||||
* @defgroup lavu_ver Version and Build diagnostics
|
||||
*
|
||||
* Macros and function useful to check at compiletime and at runtime
|
||||
* which version of libavutil is in use.
|
||||
*
|
||||
* @{
|
||||
*/
|
||||
|
||||
#define LIBAVUTIL_VERSION_MAJOR 52
|
||||
#define LIBAVUTIL_VERSION_MINOR 38
|
||||
#define LIBAVUTIL_VERSION_MICRO 100
|
||||
|
||||
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
|
||||
LIBAVUTIL_VERSION_MINOR, \
|
||||
LIBAVUTIL_VERSION_MICRO)
|
||||
#define LIBAVUTIL_VERSION AV_VERSION(LIBAVUTIL_VERSION_MAJOR, \
|
||||
LIBAVUTIL_VERSION_MINOR, \
|
||||
LIBAVUTIL_VERSION_MICRO)
|
||||
#define LIBAVUTIL_BUILD LIBAVUTIL_VERSION_INT
|
||||
|
||||
#define LIBAVUTIL_IDENT "Lavu" AV_STRINGIFY(LIBAVUTIL_VERSION)
|
||||
|
||||
/**
|
||||
* @}
|
||||
*
|
||||
* @defgroup depr_guards Deprecation guards
|
||||
* FF_API_* defines may be placed below to indicate public API that will be
|
||||
* dropped at a future version bump. The defines themselves are not part of
|
||||
* the public API and may change, break or disappear at any time.
|
||||
*
|
||||
* @{
|
||||
*/
|
||||
|
||||
#ifndef FF_API_GET_BITS_PER_SAMPLE_FMT
|
||||
#define FF_API_GET_BITS_PER_SAMPLE_FMT (LIBAVUTIL_VERSION_MAJOR < 53)
|
||||
#endif
|
||||
#ifndef FF_API_FIND_OPT
|
||||
#define FF_API_FIND_OPT (LIBAVUTIL_VERSION_MAJOR < 53)
|
||||
#endif
|
||||
#ifndef FF_API_OLD_AVOPTIONS
|
||||
#define FF_API_OLD_AVOPTIONS (LIBAVUTIL_VERSION_MAJOR < 53)
|
||||
#endif
|
||||
#ifndef FF_API_PIX_FMT
|
||||
#define FF_API_PIX_FMT (LIBAVUTIL_VERSION_MAJOR < 53)
|
||||
#endif
|
||||
#ifndef FF_API_CONTEXT_SIZE
|
||||
#define FF_API_CONTEXT_SIZE (LIBAVUTIL_VERSION_MAJOR < 53)
|
||||
#endif
|
||||
#ifndef FF_API_PIX_FMT_DESC
|
||||
#define FF_API_PIX_FMT_DESC (LIBAVUTIL_VERSION_MAJOR < 53)
|
||||
#endif
|
||||
#ifndef FF_API_AV_REVERSE
|
||||
#define FF_API_AV_REVERSE (LIBAVUTIL_VERSION_MAJOR < 53)
|
||||
#endif
|
||||
#ifndef FF_API_AUDIOCONVERT
|
||||
#define FF_API_AUDIOCONVERT (LIBAVUTIL_VERSION_MAJOR < 53)
|
||||
#endif
|
||||
#ifndef FF_API_CPU_FLAG_MMX2
|
||||
#define FF_API_CPU_FLAG_MMX2 (LIBAVUTIL_VERSION_MAJOR < 53)
|
||||
#endif
|
||||
#ifndef FF_API_SAMPLES_UTILS_RETURN_ZERO
|
||||
#define FF_API_SAMPLES_UTILS_RETURN_ZERO (LIBAVUTIL_VERSION_MAJOR < 53)
|
||||
#endif
|
||||
#ifndef FF_API_LLS_PRIVATE
|
||||
#define FF_API_LLS_PRIVATE (LIBAVUTIL_VERSION_MAJOR < 53)
|
||||
#endif
|
||||
#ifndef FF_API_AVFRAME_LAVC
|
||||
#define FF_API_AVFRAME_LAVC (LIBAVUTIL_VERSION_MAJOR < 53)
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
#endif /* AVUTIL_VERSION_H */
|
||||
|
||||
62
3rdparty/include/ffmpeg_/libavutil/xtea.h
vendored
62
3rdparty/include/ffmpeg_/libavutil/xtea.h
vendored
@@ -1,62 +0,0 @@
|
||||
/*
|
||||
* A 32-bit implementation of the XTEA algorithm
|
||||
* Copyright (c) 2012 Samuel Pitoiset
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef AVUTIL_XTEA_H
|
||||
#define AVUTIL_XTEA_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/**
|
||||
* @defgroup lavu_xtea XTEA
|
||||
* @ingroup lavu_crypto
|
||||
* @{
|
||||
*/
|
||||
|
||||
typedef struct AVXTEA {
|
||||
uint32_t key[16];
|
||||
} AVXTEA;
|
||||
|
||||
/**
|
||||
* Initialize an AVXTEA context.
|
||||
*
|
||||
* @param ctx an AVXTEA context
|
||||
* @param key a key of 16 bytes used for encryption/decryption
|
||||
*/
|
||||
void av_xtea_init(struct AVXTEA *ctx, const uint8_t key[16]);
|
||||
|
||||
/**
|
||||
* Encrypt or decrypt a buffer using a previously initialized context.
|
||||
*
|
||||
* @param ctx an AVXTEA context
|
||||
* @param dst destination array, can be equal to src
|
||||
* @param src source array, can be equal to dst
|
||||
* @param count number of 8 byte blocks
|
||||
* @param iv initialization vector for CBC mode, if NULL then ECB will be used
|
||||
* @param decrypt 0 for encryption, 1 for decryption
|
||||
*/
|
||||
void av_xtea_crypt(struct AVXTEA *ctx, uint8_t *dst, const uint8_t *src,
|
||||
int count, uint8_t *iv, int decrypt);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
#endif /* AVUTIL_XTEA_H */
|
||||
362
3rdparty/include/ffmpeg_/libswscale/swscale.h
vendored
362
3rdparty/include/ffmpeg_/libswscale/swscale.h
vendored
@@ -1,362 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2001-2011 Michael Niedermayer <michaelni@gmx.at>
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef SWSCALE_SWSCALE_H
|
||||
#define SWSCALE_SWSCALE_H
|
||||
|
||||
/**
|
||||
* @file
|
||||
* @ingroup lsws
|
||||
* external API header
|
||||
*/
|
||||
|
||||
/**
|
||||
* @defgroup lsws Libswscale
|
||||
* @{
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "libavutil/avutil.h"
|
||||
#include "libavutil/log.h"
|
||||
#include "libavutil/pixfmt.h"
|
||||
#include "version.h"
|
||||
|
||||
/**
|
||||
* Return the LIBSWSCALE_VERSION_INT constant.
|
||||
*/
|
||||
unsigned swscale_version(void);
|
||||
|
||||
/**
|
||||
* Return the libswscale build-time configuration.
|
||||
*/
|
||||
const char *swscale_configuration(void);
|
||||
|
||||
/**
|
||||
* Return the libswscale license.
|
||||
*/
|
||||
const char *swscale_license(void);
|
||||
|
||||
/* values for the flags, the stuff on the command line is different */
|
||||
#define SWS_FAST_BILINEAR 1
|
||||
#define SWS_BILINEAR 2
|
||||
#define SWS_BICUBIC 4
|
||||
#define SWS_X 8
|
||||
#define SWS_POINT 0x10
|
||||
#define SWS_AREA 0x20
|
||||
#define SWS_BICUBLIN 0x40
|
||||
#define SWS_GAUSS 0x80
|
||||
#define SWS_SINC 0x100
|
||||
#define SWS_LANCZOS 0x200
|
||||
#define SWS_SPLINE 0x400
|
||||
|
||||
#define SWS_SRC_V_CHR_DROP_MASK 0x30000
|
||||
#define SWS_SRC_V_CHR_DROP_SHIFT 16
|
||||
|
||||
#define SWS_PARAM_DEFAULT 123456
|
||||
|
||||
#define SWS_PRINT_INFO 0x1000
|
||||
|
||||
//the following 3 flags are not completely implemented
|
||||
//internal chrominace subsampling info
|
||||
#define SWS_FULL_CHR_H_INT 0x2000
|
||||
//input subsampling info
|
||||
#define SWS_FULL_CHR_H_INP 0x4000
|
||||
#define SWS_DIRECT_BGR 0x8000
|
||||
#define SWS_ACCURATE_RND 0x40000
|
||||
#define SWS_BITEXACT 0x80000
|
||||
#define SWS_ERROR_DIFFUSION 0x800000
|
||||
|
||||
#if FF_API_SWS_CPU_CAPS
|
||||
/**
|
||||
* CPU caps are autodetected now, those flags
|
||||
* are only provided for API compatibility.
|
||||
*/
|
||||
#define SWS_CPU_CAPS_MMX 0x80000000
|
||||
#define SWS_CPU_CAPS_MMXEXT 0x20000000
|
||||
#define SWS_CPU_CAPS_MMX2 0x20000000
|
||||
#define SWS_CPU_CAPS_3DNOW 0x40000000
|
||||
#define SWS_CPU_CAPS_ALTIVEC 0x10000000
|
||||
#define SWS_CPU_CAPS_BFIN 0x01000000
|
||||
#define SWS_CPU_CAPS_SSE2 0x02000000
|
||||
#endif
|
||||
|
||||
#define SWS_MAX_REDUCE_CUTOFF 0.002
|
||||
|
||||
#define SWS_CS_ITU709 1
|
||||
#define SWS_CS_FCC 4
|
||||
#define SWS_CS_ITU601 5
|
||||
#define SWS_CS_ITU624 5
|
||||
#define SWS_CS_SMPTE170M 5
|
||||
#define SWS_CS_SMPTE240M 7
|
||||
#define SWS_CS_DEFAULT 5
|
||||
|
||||
/**
|
||||
* Return a pointer to yuv<->rgb coefficients for the given colorspace
|
||||
* suitable for sws_setColorspaceDetails().
|
||||
*
|
||||
* @param colorspace One of the SWS_CS_* macros. If invalid,
|
||||
* SWS_CS_DEFAULT is used.
|
||||
*/
|
||||
const int *sws_getCoefficients(int colorspace);
|
||||
|
||||
// when used for filters they must have an odd number of elements
|
||||
// coeffs cannot be shared between vectors
|
||||
typedef struct SwsVector {
|
||||
double *coeff; ///< pointer to the list of coefficients
|
||||
int length; ///< number of coefficients in the vector
|
||||
} SwsVector;
|
||||
|
||||
// vectors can be shared
|
||||
typedef struct SwsFilter {
|
||||
SwsVector *lumH;
|
||||
SwsVector *lumV;
|
||||
SwsVector *chrH;
|
||||
SwsVector *chrV;
|
||||
} SwsFilter;
|
||||
|
||||
struct SwsContext;
|
||||
|
||||
/**
|
||||
* Return a positive value if pix_fmt is a supported input format, 0
|
||||
* otherwise.
|
||||
*/
|
||||
int sws_isSupportedInput(enum AVPixelFormat pix_fmt);
|
||||
|
||||
/**
|
||||
* Return a positive value if pix_fmt is a supported output format, 0
|
||||
* otherwise.
|
||||
*/
|
||||
int sws_isSupportedOutput(enum AVPixelFormat pix_fmt);
|
||||
|
||||
/**
|
||||
* @param[in] pix_fmt the pixel format
|
||||
* @return a positive value if an endianness conversion for pix_fmt is
|
||||
* supported, 0 otherwise.
|
||||
*/
|
||||
int sws_isSupportedEndiannessConversion(enum AVPixelFormat pix_fmt);
|
||||
|
||||
/**
|
||||
* Allocate an empty SwsContext. This must be filled and passed to
|
||||
* sws_init_context(). For filling see AVOptions, options.c and
|
||||
* sws_setColorspaceDetails().
|
||||
*/
|
||||
struct SwsContext *sws_alloc_context(void);
|
||||
|
||||
/**
|
||||
* Initialize the swscaler context sws_context.
|
||||
*
|
||||
* @return zero or positive value on success, a negative value on
|
||||
* error
|
||||
*/
|
||||
int sws_init_context(struct SwsContext *sws_context, SwsFilter *srcFilter, SwsFilter *dstFilter);
|
||||
|
||||
/**
|
||||
* Free the swscaler context swsContext.
|
||||
* If swsContext is NULL, then does nothing.
|
||||
*/
|
||||
void sws_freeContext(struct SwsContext *swsContext);
|
||||
|
||||
#if FF_API_SWS_GETCONTEXT
|
||||
/**
|
||||
* Allocate and return an SwsContext. You need it to perform
|
||||
* scaling/conversion operations using sws_scale().
|
||||
*
|
||||
* @param srcW the width of the source image
|
||||
* @param srcH the height of the source image
|
||||
* @param srcFormat the source image format
|
||||
* @param dstW the width of the destination image
|
||||
* @param dstH the height of the destination image
|
||||
* @param dstFormat the destination image format
|
||||
* @param flags specify which algorithm and options to use for rescaling
|
||||
* @return a pointer to an allocated context, or NULL in case of error
|
||||
* @note this function is to be removed after a saner alternative is
|
||||
* written
|
||||
* @deprecated Use sws_getCachedContext() instead.
|
||||
*/
|
||||
struct SwsContext *sws_getContext(int srcW, int srcH, enum AVPixelFormat srcFormat,
|
||||
int dstW, int dstH, enum AVPixelFormat dstFormat,
|
||||
int flags, SwsFilter *srcFilter,
|
||||
SwsFilter *dstFilter, const double *param);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Scale the image slice in srcSlice and put the resulting scaled
|
||||
* slice in the image in dst. A slice is a sequence of consecutive
|
||||
* rows in an image.
|
||||
*
|
||||
* Slices have to be provided in sequential order, either in
|
||||
* top-bottom or bottom-top order. If slices are provided in
|
||||
* non-sequential order the behavior of the function is undefined.
|
||||
*
|
||||
* @param c the scaling context previously created with
|
||||
* sws_getContext()
|
||||
* @param srcSlice the array containing the pointers to the planes of
|
||||
* the source slice
|
||||
* @param srcStride the array containing the strides for each plane of
|
||||
* the source image
|
||||
* @param srcSliceY the position in the source image of the slice to
|
||||
* process, that is the number (counted starting from
|
||||
* zero) in the image of the first row of the slice
|
||||
* @param srcSliceH the height of the source slice, that is the number
|
||||
* of rows in the slice
|
||||
* @param dst the array containing the pointers to the planes of
|
||||
* the destination image
|
||||
* @param dstStride the array containing the strides for each plane of
|
||||
* the destination image
|
||||
* @return the height of the output slice
|
||||
*/
|
||||
int sws_scale(struct SwsContext *c, const uint8_t *const srcSlice[],
|
||||
const int srcStride[], int srcSliceY, int srcSliceH,
|
||||
uint8_t *const dst[], const int dstStride[]);
|
||||
|
||||
/**
|
||||
* @param dstRange flag indicating the while-black range of the output (1=jpeg / 0=mpeg)
|
||||
* @param srcRange flag indicating the while-black range of the input (1=jpeg / 0=mpeg)
|
||||
* @param table the yuv2rgb coefficients describing the output yuv space, normally ff_yuv2rgb_coeffs[x]
|
||||
* @param inv_table the yuv2rgb coefficients describing the input yuv space, normally ff_yuv2rgb_coeffs[x]
|
||||
* @param brightness 16.16 fixed point brightness correction
|
||||
* @param contrast 16.16 fixed point contrast correction
|
||||
* @param saturation 16.16 fixed point saturation correction
|
||||
* @return -1 if not supported
|
||||
*/
|
||||
int sws_setColorspaceDetails(struct SwsContext *c, const int inv_table[4],
|
||||
int srcRange, const int table[4], int dstRange,
|
||||
int brightness, int contrast, int saturation);
|
||||
|
||||
/**
|
||||
* @return -1 if not supported
|
||||
*/
|
||||
int sws_getColorspaceDetails(struct SwsContext *c, int **inv_table,
|
||||
int *srcRange, int **table, int *dstRange,
|
||||
int *brightness, int *contrast, int *saturation);
|
||||
|
||||
/**
|
||||
* Allocate and return an uninitialized vector with length coefficients.
|
||||
*/
|
||||
SwsVector *sws_allocVec(int length);
|
||||
|
||||
/**
|
||||
* Return a normalized Gaussian curve used to filter stuff
|
||||
* quality = 3 is high quality, lower is lower quality.
|
||||
*/
|
||||
SwsVector *sws_getGaussianVec(double variance, double quality);
|
||||
|
||||
/**
|
||||
* Allocate and return a vector with length coefficients, all
|
||||
* with the same value c.
|
||||
*/
|
||||
SwsVector *sws_getConstVec(double c, int length);
|
||||
|
||||
/**
|
||||
* Allocate and return a vector with just one coefficient, with
|
||||
* value 1.0.
|
||||
*/
|
||||
SwsVector *sws_getIdentityVec(void);
|
||||
|
||||
/**
|
||||
* Scale all the coefficients of a by the scalar value.
|
||||
*/
|
||||
void sws_scaleVec(SwsVector *a, double scalar);
|
||||
|
||||
/**
|
||||
* Scale all the coefficients of a so that their sum equals height.
|
||||
*/
|
||||
void sws_normalizeVec(SwsVector *a, double height);
|
||||
void sws_convVec(SwsVector *a, SwsVector *b);
|
||||
void sws_addVec(SwsVector *a, SwsVector *b);
|
||||
void sws_subVec(SwsVector *a, SwsVector *b);
|
||||
void sws_shiftVec(SwsVector *a, int shift);
|
||||
|
||||
/**
|
||||
* Allocate and return a clone of the vector a, that is a vector
|
||||
* with the same coefficients as a.
|
||||
*/
|
||||
SwsVector *sws_cloneVec(SwsVector *a);
|
||||
|
||||
/**
|
||||
* Print with av_log() a textual representation of the vector a
|
||||
* if log_level <= av_log_level.
|
||||
*/
|
||||
void sws_printVec2(SwsVector *a, AVClass *log_ctx, int log_level);
|
||||
|
||||
void sws_freeVec(SwsVector *a);
|
||||
|
||||
SwsFilter *sws_getDefaultFilter(float lumaGBlur, float chromaGBlur,
|
||||
float lumaSharpen, float chromaSharpen,
|
||||
float chromaHShift, float chromaVShift,
|
||||
int verbose);
|
||||
void sws_freeFilter(SwsFilter *filter);
|
||||
|
||||
/**
|
||||
* Check if context can be reused, otherwise reallocate a new one.
|
||||
*
|
||||
* If context is NULL, just calls sws_getContext() to get a new
|
||||
* context. Otherwise, checks if the parameters are the ones already
|
||||
* saved in context. If that is the case, returns the current
|
||||
* context. Otherwise, frees context and gets a new context with
|
||||
* the new parameters.
|
||||
*
|
||||
* Be warned that srcFilter and dstFilter are not checked, they
|
||||
* are assumed to remain the same.
|
||||
*/
|
||||
struct SwsContext *sws_getCachedContext(struct SwsContext *context,
|
||||
int srcW, int srcH, enum AVPixelFormat srcFormat,
|
||||
int dstW, int dstH, enum AVPixelFormat dstFormat,
|
||||
int flags, SwsFilter *srcFilter,
|
||||
SwsFilter *dstFilter, const double *param);
|
||||
|
||||
/**
|
||||
* Convert an 8-bit paletted frame into a frame with a color depth of 32 bits.
|
||||
*
|
||||
* The output frame will have the same packed format as the palette.
|
||||
*
|
||||
* @param src source frame buffer
|
||||
* @param dst destination frame buffer
|
||||
* @param num_pixels number of pixels to convert
|
||||
* @param palette array with [256] entries, which must match color arrangement (RGB or BGR) of src
|
||||
*/
|
||||
void sws_convertPalette8ToPacked32(const uint8_t *src, uint8_t *dst, int num_pixels, const uint8_t *palette);
|
||||
|
||||
/**
|
||||
* Convert an 8-bit paletted frame into a frame with a color depth of 24 bits.
|
||||
*
|
||||
* With the palette format "ABCD", the destination frame ends up with the format "ABC".
|
||||
*
|
||||
* @param src source frame buffer
|
||||
* @param dst destination frame buffer
|
||||
* @param num_pixels number of pixels to convert
|
||||
* @param palette array with [256] entries, which must match color arrangement (RGB or BGR) of src
|
||||
*/
|
||||
void sws_convertPalette8ToPacked24(const uint8_t *src, uint8_t *dst, int num_pixels, const uint8_t *palette);
|
||||
|
||||
/**
|
||||
* Get the AVClass for swsContext. It can be used in combination with
|
||||
* AV_OPT_SEARCH_FAKE_OBJ for examining options.
|
||||
*
|
||||
* @see av_opt_find().
|
||||
*/
|
||||
const AVClass *sws_get_class(void);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
#endif /* SWSCALE_SWSCALE_H */
|
||||
59
3rdparty/include/ffmpeg_/libswscale/version.h
vendored
59
3rdparty/include/ffmpeg_/libswscale/version.h
vendored
@@ -1,59 +0,0 @@
|
||||
/*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef SWSCALE_VERSION_H
|
||||
#define SWSCALE_VERSION_H
|
||||
|
||||
/**
|
||||
* @file
|
||||
* swscale version macros
|
||||
*/
|
||||
|
||||
#include "libavutil/avutil.h"
|
||||
|
||||
#define LIBSWSCALE_VERSION_MAJOR 2
|
||||
#define LIBSWSCALE_VERSION_MINOR 3
|
||||
#define LIBSWSCALE_VERSION_MICRO 100
|
||||
|
||||
#define LIBSWSCALE_VERSION_INT AV_VERSION_INT(LIBSWSCALE_VERSION_MAJOR, \
|
||||
LIBSWSCALE_VERSION_MINOR, \
|
||||
LIBSWSCALE_VERSION_MICRO)
|
||||
#define LIBSWSCALE_VERSION AV_VERSION(LIBSWSCALE_VERSION_MAJOR, \
|
||||
LIBSWSCALE_VERSION_MINOR, \
|
||||
LIBSWSCALE_VERSION_MICRO)
|
||||
#define LIBSWSCALE_BUILD LIBSWSCALE_VERSION_INT
|
||||
|
||||
#define LIBSWSCALE_IDENT "SwS" AV_STRINGIFY(LIBSWSCALE_VERSION)
|
||||
|
||||
/**
|
||||
* FF_API_* defines may be placed below to indicate public API that will be
|
||||
* dropped at a future version bump. The defines themselves are not part of
|
||||
* the public API and may change, break or disappear at any time.
|
||||
*/
|
||||
|
||||
#ifndef FF_API_SWS_GETCONTEXT
|
||||
#define FF_API_SWS_GETCONTEXT (LIBSWSCALE_VERSION_MAJOR < 3)
|
||||
#endif
|
||||
#ifndef FF_API_SWS_CPU_CAPS
|
||||
#define FF_API_SWS_CPU_CAPS (LIBSWSCALE_VERSION_MAJOR < 3)
|
||||
#endif
|
||||
#ifndef FF_API_SWS_FORMAT_NAME
|
||||
#define FF_API_SWS_FORMAT_NAME (LIBSWSCALE_VERSION_MAJOR < 3)
|
||||
#endif
|
||||
|
||||
#endif /* SWSCALE_VERSION_H */
|
||||
14
3rdparty/include/opencl/1.2/CL/cl_platform.h
vendored
14
3rdparty/include/opencl/1.2/CL/cl_platform.h
vendored
@@ -332,13 +332,13 @@ typedef unsigned int cl_GLenum;
|
||||
/* Define basic vector types */
|
||||
#if defined( __VEC__ )
|
||||
#include <altivec.h> /* may be omitted depending on compiler. AltiVec spec provides no way to detect whether the header is required. */
|
||||
typedef vector unsigned char __cl_uchar16;
|
||||
typedef vector signed char __cl_char16;
|
||||
typedef vector unsigned short __cl_ushort8;
|
||||
typedef vector signed short __cl_short8;
|
||||
typedef vector unsigned int __cl_uint4;
|
||||
typedef vector signed int __cl_int4;
|
||||
typedef vector float __cl_float4;
|
||||
typedef __vector unsigned char __cl_uchar16;
|
||||
typedef __vector signed char __cl_char16;
|
||||
typedef __vector unsigned short __cl_ushort8;
|
||||
typedef __vector signed short __cl_short8;
|
||||
typedef __vector unsigned int __cl_uint4;
|
||||
typedef __vector signed int __cl_int4;
|
||||
typedef __vector float __cl_float4;
|
||||
#define __CL_UCHAR16__ 1
|
||||
#define __CL_CHAR16__ 1
|
||||
#define __CL_USHORT8__ 1
|
||||
|
||||
2
3rdparty/ippicv/.gitignore
vendored
Normal file
2
3rdparty/ippicv/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
downloads/
|
||||
unpack/
|
||||
110
3rdparty/ippicv/downloader.cmake
vendored
Normal file
110
3rdparty/ippicv/downloader.cmake
vendored
Normal file
@@ -0,0 +1,110 @@
|
||||
#
|
||||
# The script downloads ICV package
|
||||
#
|
||||
# On return this will define:
|
||||
# OPENCV_ICV_PATH - path to unpacked downloaded package
|
||||
#
|
||||
|
||||
function(_icv_downloader)
|
||||
# Commit SHA in the opencv_3rdparty repo
|
||||
set(IPPICV_BINARIES_COMMIT "81a676001ca8075ada498583e4166079e5744668")
|
||||
# Define actual ICV versions
|
||||
if(APPLE)
|
||||
set(OPENCV_ICV_PACKAGE_NAME "ippicv_macosx_20151201.tgz")
|
||||
set(OPENCV_ICV_PACKAGE_HASH "4ff1fde9a7cfdfe7250bfcd8334e0f2f")
|
||||
set(OPENCV_ICV_PLATFORM "macosx")
|
||||
set(OPENCV_ICV_PACKAGE_SUBDIR "/ippicv_osx")
|
||||
elseif(UNIX)
|
||||
if(ANDROID AND NOT (ANDROID_ABI STREQUAL x86 OR ANDROID_ABI STREQUAL x86_64))
|
||||
return()
|
||||
endif()
|
||||
set(OPENCV_ICV_PACKAGE_NAME "ippicv_linux_20151201.tgz")
|
||||
set(OPENCV_ICV_PACKAGE_HASH "808b791a6eac9ed78d32a7666804320e")
|
||||
set(OPENCV_ICV_PLATFORM "linux")
|
||||
set(OPENCV_ICV_PACKAGE_SUBDIR "/ippicv_lnx")
|
||||
elseif(WIN32 AND NOT ARM)
|
||||
set(OPENCV_ICV_PACKAGE_NAME "ippicv_windows_20151201.zip")
|
||||
set(OPENCV_ICV_PACKAGE_HASH "04e81ce5d0e329c3fbc606ae32cad44d")
|
||||
set(OPENCV_ICV_PLATFORM "windows")
|
||||
set(OPENCV_ICV_PACKAGE_SUBDIR "/ippicv_win")
|
||||
else()
|
||||
return() # Not supported
|
||||
endif()
|
||||
|
||||
set(OPENCV_ICV_UNPACK_PATH "${CMAKE_CURRENT_LIST_DIR}/unpack")
|
||||
set(OPENCV_ICV_PATH "${OPENCV_ICV_UNPACK_PATH}${OPENCV_ICV_PACKAGE_SUBDIR}")
|
||||
|
||||
if(DEFINED OPENCV_ICV_PACKAGE_DOWNLOADED
|
||||
AND OPENCV_ICV_PACKAGE_DOWNLOADED STREQUAL OPENCV_ICV_PACKAGE_HASH
|
||||
AND EXISTS ${OPENCV_ICV_PATH})
|
||||
# Package has been downloaded and checked by the previous build
|
||||
set(OPENCV_ICV_PATH "${OPENCV_ICV_PATH}" PARENT_SCOPE)
|
||||
return()
|
||||
else()
|
||||
if(EXISTS ${OPENCV_ICV_UNPACK_PATH})
|
||||
message(STATUS "ICV: Removing previous unpacked package: ${OPENCV_ICV_UNPACK_PATH}")
|
||||
file(REMOVE_RECURSE ${OPENCV_ICV_UNPACK_PATH})
|
||||
endif()
|
||||
endif()
|
||||
unset(OPENCV_ICV_PACKAGE_DOWNLOADED CACHE)
|
||||
|
||||
set(OPENCV_ICV_PACKAGE_ARCHIVE "${CMAKE_CURRENT_LIST_DIR}/downloads/${OPENCV_ICV_PLATFORM}-${OPENCV_ICV_PACKAGE_HASH}/${OPENCV_ICV_PACKAGE_NAME}")
|
||||
get_filename_component(OPENCV_ICV_PACKAGE_ARCHIVE_DIR "${OPENCV_ICV_PACKAGE_ARCHIVE}" PATH)
|
||||
if(EXISTS "${OPENCV_ICV_PACKAGE_ARCHIVE}")
|
||||
file(MD5 "${OPENCV_ICV_PACKAGE_ARCHIVE}" archive_md5)
|
||||
if(NOT archive_md5 STREQUAL OPENCV_ICV_PACKAGE_HASH)
|
||||
message(WARNING "ICV: Local copy of ICV package has invalid MD5 hash: ${archive_md5} (expected: ${OPENCV_ICV_PACKAGE_HASH})")
|
||||
file(REMOVE "${OPENCV_ICV_PACKAGE_ARCHIVE}")
|
||||
file(REMOVE_RECURSE "${OPENCV_ICV_PACKAGE_ARCHIVE_DIR}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(NOT EXISTS "${OPENCV_ICV_PACKAGE_ARCHIVE}")
|
||||
if(NOT DEFINED OPENCV_ICV_URL)
|
||||
if(DEFINED ENV{OPENCV_ICV_URL})
|
||||
set(OPENCV_ICV_URL $ENV{OPENCV_ICV_URL})
|
||||
else()
|
||||
set(OPENCV_ICV_URL "https://raw.githubusercontent.com/Itseez/opencv_3rdparty/${IPPICV_BINARIES_COMMIT}/ippicv")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
file(MAKE_DIRECTORY ${OPENCV_ICV_PACKAGE_ARCHIVE_DIR})
|
||||
message(STATUS "ICV: Downloading ${OPENCV_ICV_PACKAGE_NAME}...")
|
||||
file(DOWNLOAD "${OPENCV_ICV_URL}/${OPENCV_ICV_PACKAGE_NAME}" "${OPENCV_ICV_PACKAGE_ARCHIVE}"
|
||||
TIMEOUT 600 STATUS __status
|
||||
EXPECTED_MD5 ${OPENCV_ICV_PACKAGE_HASH})
|
||||
if(NOT __status EQUAL 0)
|
||||
message(FATAL_ERROR "ICV: Failed to download ICV package: ${OPENCV_ICV_PACKAGE_NAME}. Status=${__status}")
|
||||
else()
|
||||
# Don't remove this code, because EXPECTED_MD5 parameter doesn't fail "file(DOWNLOAD)" step
|
||||
# on wrong hash
|
||||
file(MD5 "${OPENCV_ICV_PACKAGE_ARCHIVE}" archive_md5)
|
||||
if(NOT archive_md5 STREQUAL OPENCV_ICV_PACKAGE_HASH)
|
||||
message(FATAL_ERROR "ICV: Downloaded copy of ICV package has invalid MD5 hash: ${archive_md5} (expected: ${OPENCV_ICV_PACKAGE_HASH})")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
ocv_assert(EXISTS "${OPENCV_ICV_PACKAGE_ARCHIVE}")
|
||||
ocv_assert(NOT EXISTS "${OPENCV_ICV_UNPACK_PATH}")
|
||||
file(MAKE_DIRECTORY ${OPENCV_ICV_UNPACK_PATH})
|
||||
ocv_assert(EXISTS "${OPENCV_ICV_UNPACK_PATH}")
|
||||
|
||||
message(STATUS "ICV: Unpacking ${OPENCV_ICV_PACKAGE_NAME} to ${OPENCV_ICV_UNPACK_PATH}...")
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E tar xz "${OPENCV_ICV_PACKAGE_ARCHIVE}"
|
||||
WORKING_DIRECTORY "${OPENCV_ICV_UNPACK_PATH}"
|
||||
RESULT_VARIABLE __result)
|
||||
|
||||
if(NOT __result EQUAL 0)
|
||||
message(FATAL_ERROR "ICV: Failed to unpack ICV package from ${OPENCV_ICV_PACKAGE_ARCHIVE} to ${OPENCV_ICV_UNPACK_PATH} with error ${__result}")
|
||||
endif()
|
||||
|
||||
ocv_assert(EXISTS "${OPENCV_ICV_PATH}")
|
||||
|
||||
set(OPENCV_ICV_PACKAGE_DOWNLOADED "${OPENCV_ICV_PACKAGE_HASH}" CACHE INTERNAL "ICV package hash")
|
||||
|
||||
message(STATUS "ICV: Package successfully downloaded")
|
||||
set(OPENCV_ICV_PATH "${OPENCV_ICV_PATH}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
_icv_downloader()
|
||||
33
3rdparty/jinja2/AUTHORS
vendored
Normal file
33
3rdparty/jinja2/AUTHORS
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
Jinja is written and maintained by the Jinja Team and various
|
||||
contributors:
|
||||
|
||||
Lead Developer:
|
||||
|
||||
- Armin Ronacher <armin.ronacher@active-4.com>
|
||||
|
||||
Developers:
|
||||
|
||||
- Christoph Hack
|
||||
- Georg Brandl
|
||||
|
||||
Contributors:
|
||||
|
||||
- Bryan McLemore
|
||||
- Mickaël Guérin <kael@crocobox.org>
|
||||
- Cameron Knight
|
||||
- Lawrence Journal-World.
|
||||
- David Cramer
|
||||
|
||||
Patches and suggestions:
|
||||
|
||||
- Ronny Pfannschmidt
|
||||
- Axel Böhm
|
||||
- Alexey Melchakov
|
||||
- Bryan McLemore
|
||||
- Clovis Fabricio (nosklo)
|
||||
- Cameron Knight
|
||||
- Peter van Dijk (Habbie)
|
||||
- Stefan Ebner
|
||||
- Rene Leonhardt
|
||||
- Thomas Waldmann
|
||||
- Cory Benfield (Lukasa)
|
||||
31
3rdparty/jinja2/LICENSE
vendored
Normal file
31
3rdparty/jinja2/LICENSE
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
Copyright (c) 2009 by the Jinja Team, see AUTHORS for more details.
|
||||
|
||||
Some rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above
|
||||
copyright notice, this list of conditions and the following
|
||||
disclaimer in the documentation and/or other materials provided
|
||||
with the distribution.
|
||||
|
||||
* The names of the contributors may not be used to endorse or
|
||||
promote products derived from this software without specific
|
||||
prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
69
3rdparty/jinja2/__init__.py
vendored
Normal file
69
3rdparty/jinja2/__init__.py
vendored
Normal file
@@ -0,0 +1,69 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
jinja2
|
||||
~~~~~~
|
||||
|
||||
Jinja2 is a template engine written in pure Python. It provides a
|
||||
Django inspired non-XML syntax but supports inline expressions and
|
||||
an optional sandboxed environment.
|
||||
|
||||
Nutshell
|
||||
--------
|
||||
|
||||
Here a small example of a Jinja2 template::
|
||||
|
||||
{% extends 'base.html' %}
|
||||
{% block title %}Memberlist{% endblock %}
|
||||
{% block content %}
|
||||
<ul>
|
||||
{% for user in users %}
|
||||
<li><a href="{{ user.url }}">{{ user.username }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endblock %}
|
||||
|
||||
|
||||
:copyright: (c) 2010 by the Jinja Team.
|
||||
:license: BSD, see LICENSE for more details.
|
||||
"""
|
||||
__docformat__ = 'restructuredtext en'
|
||||
__version__ = '2.7.1'
|
||||
|
||||
# high level interface
|
||||
from jinja2.environment import Environment, Template
|
||||
|
||||
# loaders
|
||||
from jinja2.loaders import BaseLoader, FileSystemLoader, PackageLoader, \
|
||||
DictLoader, FunctionLoader, PrefixLoader, ChoiceLoader, \
|
||||
ModuleLoader
|
||||
|
||||
# bytecode caches
|
||||
from jinja2.bccache import BytecodeCache, FileSystemBytecodeCache, \
|
||||
MemcachedBytecodeCache
|
||||
|
||||
# undefined types
|
||||
from jinja2.runtime import Undefined, DebugUndefined, StrictUndefined
|
||||
|
||||
# exceptions
|
||||
from jinja2.exceptions import TemplateError, UndefinedError, \
|
||||
TemplateNotFound, TemplatesNotFound, TemplateSyntaxError, \
|
||||
TemplateAssertionError
|
||||
|
||||
# decorators and public utilities
|
||||
from jinja2.filters import environmentfilter, contextfilter, \
|
||||
evalcontextfilter
|
||||
from jinja2.utils import Markup, escape, clear_caches, \
|
||||
environmentfunction, evalcontextfunction, contextfunction, \
|
||||
is_undefined
|
||||
|
||||
__all__ = [
|
||||
'Environment', 'Template', 'BaseLoader', 'FileSystemLoader',
|
||||
'PackageLoader', 'DictLoader', 'FunctionLoader', 'PrefixLoader',
|
||||
'ChoiceLoader', 'BytecodeCache', 'FileSystemBytecodeCache',
|
||||
'MemcachedBytecodeCache', 'Undefined', 'DebugUndefined',
|
||||
'StrictUndefined', 'TemplateError', 'UndefinedError', 'TemplateNotFound',
|
||||
'TemplatesNotFound', 'TemplateSyntaxError', 'TemplateAssertionError',
|
||||
'ModuleLoader', 'environmentfilter', 'contextfilter', 'Markup', 'escape',
|
||||
'environmentfunction', 'contextfunction', 'clear_caches', 'is_undefined',
|
||||
'evalcontextfilter', 'evalcontextfunction'
|
||||
]
|
||||
150
3rdparty/jinja2/_compat.py
vendored
Normal file
150
3rdparty/jinja2/_compat.py
vendored
Normal file
@@ -0,0 +1,150 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
jinja2._compat
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
Some py2/py3 compatibility support based on a stripped down
|
||||
version of six so we don't have to depend on a specific version
|
||||
of it.
|
||||
|
||||
:copyright: Copyright 2013 by the Jinja team, see AUTHORS.
|
||||
:license: BSD, see LICENSE for details.
|
||||
"""
|
||||
import sys
|
||||
|
||||
PY2 = sys.version_info[0] == 2
|
||||
PYPY = hasattr(sys, 'pypy_translation_info')
|
||||
_identity = lambda x: x
|
||||
|
||||
|
||||
if not PY2:
|
||||
unichr = chr
|
||||
range_type = range
|
||||
text_type = str
|
||||
string_types = (str,)
|
||||
|
||||
iterkeys = lambda d: iter(d.keys())
|
||||
itervalues = lambda d: iter(d.values())
|
||||
iteritems = lambda d: iter(d.items())
|
||||
|
||||
import pickle
|
||||
from io import BytesIO, StringIO
|
||||
NativeStringIO = StringIO
|
||||
|
||||
def reraise(tp, value, tb=None):
|
||||
if value.__traceback__ is not tb:
|
||||
raise value.with_traceback(tb)
|
||||
raise value
|
||||
|
||||
ifilter = filter
|
||||
imap = map
|
||||
izip = zip
|
||||
intern = sys.intern
|
||||
|
||||
implements_iterator = _identity
|
||||
implements_to_string = _identity
|
||||
encode_filename = _identity
|
||||
get_next = lambda x: x.__next__
|
||||
|
||||
else:
|
||||
unichr = unichr
|
||||
text_type = unicode
|
||||
range_type = xrange
|
||||
string_types = (str, unicode)
|
||||
|
||||
iterkeys = lambda d: d.iterkeys()
|
||||
itervalues = lambda d: d.itervalues()
|
||||
iteritems = lambda d: d.iteritems()
|
||||
|
||||
import cPickle as pickle
|
||||
from cStringIO import StringIO as BytesIO, StringIO
|
||||
NativeStringIO = BytesIO
|
||||
|
||||
exec('def reraise(tp, value, tb=None):\n raise tp, value, tb')
|
||||
|
||||
from itertools import imap, izip, ifilter
|
||||
intern = intern
|
||||
|
||||
def implements_iterator(cls):
|
||||
cls.next = cls.__next__
|
||||
del cls.__next__
|
||||
return cls
|
||||
|
||||
def implements_to_string(cls):
|
||||
cls.__unicode__ = cls.__str__
|
||||
cls.__str__ = lambda x: x.__unicode__().encode('utf-8')
|
||||
return cls
|
||||
|
||||
get_next = lambda x: x.next
|
||||
|
||||
def encode_filename(filename):
|
||||
if isinstance(filename, unicode):
|
||||
return filename.encode('utf-8')
|
||||
return filename
|
||||
|
||||
try:
|
||||
next = next
|
||||
except NameError:
|
||||
def next(it):
|
||||
return it.next()
|
||||
|
||||
|
||||
def with_metaclass(meta, *bases):
|
||||
# This requires a bit of explanation: the basic idea is to make a
|
||||
# dummy metaclass for one level of class instanciation that replaces
|
||||
# itself with the actual metaclass. Because of internal type checks
|
||||
# we also need to make sure that we downgrade the custom metaclass
|
||||
# for one level to something closer to type (that's why __call__ and
|
||||
# __init__ comes back from type etc.).
|
||||
#
|
||||
# This has the advantage over six.with_metaclass in that it does not
|
||||
# introduce dummy classes into the final MRO.
|
||||
class metaclass(meta):
|
||||
__call__ = type.__call__
|
||||
__init__ = type.__init__
|
||||
def __new__(cls, name, this_bases, d):
|
||||
if this_bases is None:
|
||||
return type.__new__(cls, name, (), d)
|
||||
return meta(name, bases, d)
|
||||
return metaclass('temporary_class', None, {})
|
||||
|
||||
|
||||
try:
|
||||
from collections import Mapping as mapping_types
|
||||
except ImportError:
|
||||
import UserDict
|
||||
mapping_types = (UserDict.UserDict, UserDict.DictMixin, dict)
|
||||
|
||||
|
||||
# common types. These do exist in the special types module too which however
|
||||
# does not exist in IronPython out of the box. Also that way we don't have
|
||||
# to deal with implementation specific stuff here
|
||||
class _C(object):
|
||||
def method(self): pass
|
||||
def _func():
|
||||
yield None
|
||||
function_type = type(_func)
|
||||
generator_type = type(_func())
|
||||
method_type = type(_C().method)
|
||||
code_type = type(_C.method.__code__)
|
||||
try:
|
||||
raise TypeError()
|
||||
except TypeError:
|
||||
_tb = sys.exc_info()[2]
|
||||
traceback_type = type(_tb)
|
||||
frame_type = type(_tb.tb_frame)
|
||||
|
||||
|
||||
try:
|
||||
from urllib.parse import quote_from_bytes as url_quote
|
||||
except ImportError:
|
||||
from urllib import quote as url_quote
|
||||
|
||||
|
||||
try:
|
||||
from thread import allocate_lock
|
||||
except ImportError:
|
||||
try:
|
||||
from threading import Lock as allocate_lock
|
||||
except ImportError:
|
||||
from dummy_thread import allocate_lock
|
||||
132
3rdparty/jinja2/_stringdefs.py
vendored
Normal file
132
3rdparty/jinja2/_stringdefs.py
vendored
Normal file
File diff suppressed because one or more lines are too long
311
3rdparty/jinja2/bccache.py
vendored
Normal file
311
3rdparty/jinja2/bccache.py
vendored
Normal file
@@ -0,0 +1,311 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
jinja2.bccache
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
This module implements the bytecode cache system Jinja is optionally
|
||||
using. This is useful if you have very complex template situations and
|
||||
the compiliation of all those templates slow down your application too
|
||||
much.
|
||||
|
||||
Situations where this is useful are often forking web applications that
|
||||
are initialized on the first request.
|
||||
|
||||
:copyright: (c) 2010 by the Jinja Team.
|
||||
:license: BSD.
|
||||
"""
|
||||
from os import path, listdir
|
||||
import sys
|
||||
import marshal
|
||||
import tempfile
|
||||
import fnmatch
|
||||
from hashlib import sha1
|
||||
from jinja2.utils import open_if_exists
|
||||
from jinja2._compat import BytesIO, pickle, PY2, text_type
|
||||
|
||||
|
||||
# marshal works better on 3.x, one hack less required
|
||||
if not PY2:
|
||||
marshal_dump = marshal.dump
|
||||
marshal_load = marshal.load
|
||||
else:
|
||||
|
||||
def marshal_dump(code, f):
|
||||
if isinstance(f, file):
|
||||
marshal.dump(code, f)
|
||||
else:
|
||||
f.write(marshal.dumps(code))
|
||||
|
||||
def marshal_load(f):
|
||||
if isinstance(f, file):
|
||||
return marshal.load(f)
|
||||
return marshal.loads(f.read())
|
||||
|
||||
|
||||
bc_version = 2
|
||||
|
||||
# magic version used to only change with new jinja versions. With 2.6
|
||||
# we change this to also take Python version changes into account. The
|
||||
# reason for this is that Python tends to segfault if fed earlier bytecode
|
||||
# versions because someone thought it would be a good idea to reuse opcodes
|
||||
# or make Python incompatible with earlier versions.
|
||||
bc_magic = 'j2'.encode('ascii') + \
|
||||
pickle.dumps(bc_version, 2) + \
|
||||
pickle.dumps((sys.version_info[0] << 24) | sys.version_info[1])
|
||||
|
||||
|
||||
class Bucket(object):
|
||||
"""Buckets are used to store the bytecode for one template. It's created
|
||||
and initialized by the bytecode cache and passed to the loading functions.
|
||||
|
||||
The buckets get an internal checksum from the cache assigned and use this
|
||||
to automatically reject outdated cache material. Individual bytecode
|
||||
cache subclasses don't have to care about cache invalidation.
|
||||
"""
|
||||
|
||||
def __init__(self, environment, key, checksum):
|
||||
self.environment = environment
|
||||
self.key = key
|
||||
self.checksum = checksum
|
||||
self.reset()
|
||||
|
||||
def reset(self):
|
||||
"""Resets the bucket (unloads the bytecode)."""
|
||||
self.code = None
|
||||
|
||||
def load_bytecode(self, f):
|
||||
"""Loads bytecode from a file or file like object."""
|
||||
# make sure the magic header is correct
|
||||
magic = f.read(len(bc_magic))
|
||||
if magic != bc_magic:
|
||||
self.reset()
|
||||
return
|
||||
# the source code of the file changed, we need to reload
|
||||
checksum = pickle.load(f)
|
||||
if self.checksum != checksum:
|
||||
self.reset()
|
||||
return
|
||||
self.code = marshal_load(f)
|
||||
|
||||
def write_bytecode(self, f):
|
||||
"""Dump the bytecode into the file or file like object passed."""
|
||||
if self.code is None:
|
||||
raise TypeError('can\'t write empty bucket')
|
||||
f.write(bc_magic)
|
||||
pickle.dump(self.checksum, f, 2)
|
||||
marshal_dump(self.code, f)
|
||||
|
||||
def bytecode_from_string(self, string):
|
||||
"""Load bytecode from a string."""
|
||||
self.load_bytecode(BytesIO(string))
|
||||
|
||||
def bytecode_to_string(self):
|
||||
"""Return the bytecode as string."""
|
||||
out = BytesIO()
|
||||
self.write_bytecode(out)
|
||||
return out.getvalue()
|
||||
|
||||
|
||||
class BytecodeCache(object):
|
||||
"""To implement your own bytecode cache you have to subclass this class
|
||||
and override :meth:`load_bytecode` and :meth:`dump_bytecode`. Both of
|
||||
these methods are passed a :class:`~jinja2.bccache.Bucket`.
|
||||
|
||||
A very basic bytecode cache that saves the bytecode on the file system::
|
||||
|
||||
from os import path
|
||||
|
||||
class MyCache(BytecodeCache):
|
||||
|
||||
def __init__(self, directory):
|
||||
self.directory = directory
|
||||
|
||||
def load_bytecode(self, bucket):
|
||||
filename = path.join(self.directory, bucket.key)
|
||||
if path.exists(filename):
|
||||
with open(filename, 'rb') as f:
|
||||
bucket.load_bytecode(f)
|
||||
|
||||
def dump_bytecode(self, bucket):
|
||||
filename = path.join(self.directory, bucket.key)
|
||||
with open(filename, 'wb') as f:
|
||||
bucket.write_bytecode(f)
|
||||
|
||||
A more advanced version of a filesystem based bytecode cache is part of
|
||||
Jinja2.
|
||||
"""
|
||||
|
||||
def load_bytecode(self, bucket):
|
||||
"""Subclasses have to override this method to load bytecode into a
|
||||
bucket. If they are not able to find code in the cache for the
|
||||
bucket, it must not do anything.
|
||||
"""
|
||||
raise NotImplementedError()
|
||||
|
||||
def dump_bytecode(self, bucket):
|
||||
"""Subclasses have to override this method to write the bytecode
|
||||
from a bucket back to the cache. If it unable to do so it must not
|
||||
fail silently but raise an exception.
|
||||
"""
|
||||
raise NotImplementedError()
|
||||
|
||||
def clear(self):
|
||||
"""Clears the cache. This method is not used by Jinja2 but should be
|
||||
implemented to allow applications to clear the bytecode cache used
|
||||
by a particular environment.
|
||||
"""
|
||||
|
||||
def get_cache_key(self, name, filename=None):
|
||||
"""Returns the unique hash key for this template name."""
|
||||
hash = sha1(name.encode('utf-8'))
|
||||
if filename is not None:
|
||||
filename = '|' + filename
|
||||
if isinstance(filename, text_type):
|
||||
filename = filename.encode('utf-8')
|
||||
hash.update(filename)
|
||||
return hash.hexdigest()
|
||||
|
||||
def get_source_checksum(self, source):
|
||||
"""Returns a checksum for the source."""
|
||||
return sha1(source.encode('utf-8')).hexdigest()
|
||||
|
||||
def get_bucket(self, environment, name, filename, source):
|
||||
"""Return a cache bucket for the given template. All arguments are
|
||||
mandatory but filename may be `None`.
|
||||
"""
|
||||
key = self.get_cache_key(name, filename)
|
||||
checksum = self.get_source_checksum(source)
|
||||
bucket = Bucket(environment, key, checksum)
|
||||
self.load_bytecode(bucket)
|
||||
return bucket
|
||||
|
||||
def set_bucket(self, bucket):
|
||||
"""Put the bucket into the cache."""
|
||||
self.dump_bytecode(bucket)
|
||||
|
||||
|
||||
class FileSystemBytecodeCache(BytecodeCache):
|
||||
"""A bytecode cache that stores bytecode on the filesystem. It accepts
|
||||
two arguments: The directory where the cache items are stored and a
|
||||
pattern string that is used to build the filename.
|
||||
|
||||
If no directory is specified the system temporary items folder is used.
|
||||
|
||||
The pattern can be used to have multiple separate caches operate on the
|
||||
same directory. The default pattern is ``'__jinja2_%s.cache'``. ``%s``
|
||||
is replaced with the cache key.
|
||||
|
||||
>>> bcc = FileSystemBytecodeCache('/tmp/jinja_cache', '%s.cache')
|
||||
|
||||
This bytecode cache supports clearing of the cache using the clear method.
|
||||
"""
|
||||
|
||||
def __init__(self, directory=None, pattern='__jinja2_%s.cache'):
|
||||
if directory is None:
|
||||
directory = tempfile.gettempdir()
|
||||
self.directory = directory
|
||||
self.pattern = pattern
|
||||
|
||||
def _get_cache_filename(self, bucket):
|
||||
return path.join(self.directory, self.pattern % bucket.key)
|
||||
|
||||
def load_bytecode(self, bucket):
|
||||
f = open_if_exists(self._get_cache_filename(bucket), 'rb')
|
||||
if f is not None:
|
||||
try:
|
||||
bucket.load_bytecode(f)
|
||||
finally:
|
||||
f.close()
|
||||
|
||||
def dump_bytecode(self, bucket):
|
||||
f = open(self._get_cache_filename(bucket), 'wb')
|
||||
try:
|
||||
bucket.write_bytecode(f)
|
||||
finally:
|
||||
f.close()
|
||||
|
||||
def clear(self):
|
||||
# imported lazily here because google app-engine doesn't support
|
||||
# write access on the file system and the function does not exist
|
||||
# normally.
|
||||
from os import remove
|
||||
files = fnmatch.filter(listdir(self.directory), self.pattern % '*')
|
||||
for filename in files:
|
||||
try:
|
||||
remove(path.join(self.directory, filename))
|
||||
except OSError:
|
||||
pass
|
||||
|
||||
|
||||
class MemcachedBytecodeCache(BytecodeCache):
|
||||
"""This class implements a bytecode cache that uses a memcache cache for
|
||||
storing the information. It does not enforce a specific memcache library
|
||||
(tummy's memcache or cmemcache) but will accept any class that provides
|
||||
the minimal interface required.
|
||||
|
||||
Libraries compatible with this class:
|
||||
|
||||
- `werkzeug <http://werkzeug.pocoo.org/>`_.contrib.cache
|
||||
- `python-memcached <http://www.tummy.com/Community/software/python-memcached/>`_
|
||||
- `cmemcache <http://gijsbert.org/cmemcache/>`_
|
||||
|
||||
(Unfortunately the django cache interface is not compatible because it
|
||||
does not support storing binary data, only unicode. You can however pass
|
||||
the underlying cache client to the bytecode cache which is available
|
||||
as `django.core.cache.cache._client`.)
|
||||
|
||||
The minimal interface for the client passed to the constructor is this:
|
||||
|
||||
.. class:: MinimalClientInterface
|
||||
|
||||
.. method:: set(key, value[, timeout])
|
||||
|
||||
Stores the bytecode in the cache. `value` is a string and
|
||||
`timeout` the timeout of the key. If timeout is not provided
|
||||
a default timeout or no timeout should be assumed, if it's
|
||||
provided it's an integer with the number of seconds the cache
|
||||
item should exist.
|
||||
|
||||
.. method:: get(key)
|
||||
|
||||
Returns the value for the cache key. If the item does not
|
||||
exist in the cache the return value must be `None`.
|
||||
|
||||
The other arguments to the constructor are the prefix for all keys that
|
||||
is added before the actual cache key and the timeout for the bytecode in
|
||||
the cache system. We recommend a high (or no) timeout.
|
||||
|
||||
This bytecode cache does not support clearing of used items in the cache.
|
||||
The clear method is a no-operation function.
|
||||
|
||||
.. versionadded:: 2.7
|
||||
Added support for ignoring memcache errors through the
|
||||
`ignore_memcache_errors` parameter.
|
||||
"""
|
||||
|
||||
def __init__(self, client, prefix='jinja2/bytecode/', timeout=None,
|
||||
ignore_memcache_errors=True):
|
||||
self.client = client
|
||||
self.prefix = prefix
|
||||
self.timeout = timeout
|
||||
self.ignore_memcache_errors = ignore_memcache_errors
|
||||
|
||||
def load_bytecode(self, bucket):
|
||||
try:
|
||||
code = self.client.get(self.prefix + bucket.key)
|
||||
except Exception:
|
||||
if not self.ignore_memcache_errors:
|
||||
raise
|
||||
code = None
|
||||
if code is not None:
|
||||
bucket.bytecode_from_string(code)
|
||||
|
||||
def dump_bytecode(self, bucket):
|
||||
args = (self.prefix + bucket.key, bucket.bytecode_to_string())
|
||||
if self.timeout is not None:
|
||||
args += (self.timeout,)
|
||||
try:
|
||||
self.client.set(*args)
|
||||
except Exception:
|
||||
if not self.ignore_memcache_errors:
|
||||
raise
|
||||
1640
3rdparty/jinja2/compiler.py
vendored
Normal file
1640
3rdparty/jinja2/compiler.py
vendored
Normal file
File diff suppressed because it is too large
Load Diff
32
3rdparty/jinja2/constants.py
vendored
Normal file
32
3rdparty/jinja2/constants.py
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
jinja.constants
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
Various constants.
|
||||
|
||||
:copyright: (c) 2010 by the Jinja Team.
|
||||
:license: BSD, see LICENSE for more details.
|
||||
"""
|
||||
|
||||
|
||||
#: list of lorem ipsum words used by the lipsum() helper function
|
||||
LOREM_IPSUM_WORDS = u'''\
|
||||
a ac accumsan ad adipiscing aenean aliquam aliquet amet ante aptent arcu at
|
||||
auctor augue bibendum blandit class commodo condimentum congue consectetuer
|
||||
consequat conubia convallis cras cubilia cum curabitur curae cursus dapibus
|
||||
diam dictum dictumst dignissim dis dolor donec dui duis egestas eget eleifend
|
||||
elementum elit enim erat eros est et etiam eu euismod facilisi facilisis fames
|
||||
faucibus felis fermentum feugiat fringilla fusce gravida habitant habitasse hac
|
||||
hendrerit hymenaeos iaculis id imperdiet in inceptos integer interdum ipsum
|
||||
justo lacinia lacus laoreet lectus leo libero ligula litora lobortis lorem
|
||||
luctus maecenas magna magnis malesuada massa mattis mauris metus mi molestie
|
||||
mollis montes morbi mus nam nascetur natoque nec neque netus nibh nisi nisl non
|
||||
nonummy nostra nulla nullam nunc odio orci ornare parturient pede pellentesque
|
||||
penatibus per pharetra phasellus placerat platea porta porttitor posuere
|
||||
potenti praesent pretium primis proin pulvinar purus quam quis quisque rhoncus
|
||||
ridiculus risus rutrum sagittis sapien scelerisque sed sem semper senectus sit
|
||||
sociis sociosqu sodales sollicitudin suscipit suspendisse taciti tellus tempor
|
||||
tempus tincidunt torquent tortor tristique turpis ullamcorper ultrices
|
||||
ultricies urna ut varius vehicula vel velit venenatis vestibulum vitae vivamus
|
||||
viverra volutpat vulputate'''
|
||||
337
3rdparty/jinja2/debug.py
vendored
Normal file
337
3rdparty/jinja2/debug.py
vendored
Normal file
@@ -0,0 +1,337 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
jinja2.debug
|
||||
~~~~~~~~~~~~
|
||||
|
||||
Implements the debug interface for Jinja. This module does some pretty
|
||||
ugly stuff with the Python traceback system in order to achieve tracebacks
|
||||
with correct line numbers, locals and contents.
|
||||
|
||||
:copyright: (c) 2010 by the Jinja Team.
|
||||
:license: BSD, see LICENSE for more details.
|
||||
"""
|
||||
import sys
|
||||
import traceback
|
||||
from types import TracebackType
|
||||
from jinja2.utils import missing, internal_code
|
||||
from jinja2.exceptions import TemplateSyntaxError
|
||||
from jinja2._compat import iteritems, reraise, code_type
|
||||
|
||||
# on pypy we can take advantage of transparent proxies
|
||||
try:
|
||||
from __pypy__ import tproxy
|
||||
except ImportError:
|
||||
tproxy = None
|
||||
|
||||
|
||||
# how does the raise helper look like?
|
||||
try:
|
||||
exec("raise TypeError, 'foo'")
|
||||
except SyntaxError:
|
||||
raise_helper = 'raise __jinja_exception__[1]'
|
||||
except TypeError:
|
||||
raise_helper = 'raise __jinja_exception__[0], __jinja_exception__[1]'
|
||||
|
||||
|
||||
class TracebackFrameProxy(object):
|
||||
"""Proxies a traceback frame."""
|
||||
|
||||
def __init__(self, tb):
|
||||
self.tb = tb
|
||||
self._tb_next = None
|
||||
|
||||
@property
|
||||
def tb_next(self):
|
||||
return self._tb_next
|
||||
|
||||
def set_next(self, next):
|
||||
if tb_set_next is not None:
|
||||
try:
|
||||
tb_set_next(self.tb, next and next.tb or None)
|
||||
except Exception:
|
||||
# this function can fail due to all the hackery it does
|
||||
# on various python implementations. We just catch errors
|
||||
# down and ignore them if necessary.
|
||||
pass
|
||||
self._tb_next = next
|
||||
|
||||
@property
|
||||
def is_jinja_frame(self):
|
||||
return '__jinja_template__' in self.tb.tb_frame.f_globals
|
||||
|
||||
def __getattr__(self, name):
|
||||
return getattr(self.tb, name)
|
||||
|
||||
|
||||
def make_frame_proxy(frame):
|
||||
proxy = TracebackFrameProxy(frame)
|
||||
if tproxy is None:
|
||||
return proxy
|
||||
def operation_handler(operation, *args, **kwargs):
|
||||
if operation in ('__getattribute__', '__getattr__'):
|
||||
return getattr(proxy, args[0])
|
||||
elif operation == '__setattr__':
|
||||
proxy.__setattr__(*args, **kwargs)
|
||||
else:
|
||||
return getattr(proxy, operation)(*args, **kwargs)
|
||||
return tproxy(TracebackType, operation_handler)
|
||||
|
||||
|
||||
class ProcessedTraceback(object):
|
||||
"""Holds a Jinja preprocessed traceback for printing or reraising."""
|
||||
|
||||
def __init__(self, exc_type, exc_value, frames):
|
||||
assert frames, 'no frames for this traceback?'
|
||||
self.exc_type = exc_type
|
||||
self.exc_value = exc_value
|
||||
self.frames = frames
|
||||
|
||||
# newly concatenate the frames (which are proxies)
|
||||
prev_tb = None
|
||||
for tb in self.frames:
|
||||
if prev_tb is not None:
|
||||
prev_tb.set_next(tb)
|
||||
prev_tb = tb
|
||||
prev_tb.set_next(None)
|
||||
|
||||
def render_as_text(self, limit=None):
|
||||
"""Return a string with the traceback."""
|
||||
lines = traceback.format_exception(self.exc_type, self.exc_value,
|
||||
self.frames[0], limit=limit)
|
||||
return ''.join(lines).rstrip()
|
||||
|
||||
def render_as_html(self, full=False):
|
||||
"""Return a unicode string with the traceback as rendered HTML."""
|
||||
from jinja2.debugrenderer import render_traceback
|
||||
return u'%s\n\n<!--\n%s\n-->' % (
|
||||
render_traceback(self, full=full),
|
||||
self.render_as_text().decode('utf-8', 'replace')
|
||||
)
|
||||
|
||||
@property
|
||||
def is_template_syntax_error(self):
|
||||
"""`True` if this is a template syntax error."""
|
||||
return isinstance(self.exc_value, TemplateSyntaxError)
|
||||
|
||||
@property
|
||||
def exc_info(self):
|
||||
"""Exception info tuple with a proxy around the frame objects."""
|
||||
return self.exc_type, self.exc_value, self.frames[0]
|
||||
|
||||
@property
|
||||
def standard_exc_info(self):
|
||||
"""Standard python exc_info for re-raising"""
|
||||
tb = self.frames[0]
|
||||
# the frame will be an actual traceback (or transparent proxy) if
|
||||
# we are on pypy or a python implementation with support for tproxy
|
||||
if type(tb) is not TracebackType:
|
||||
tb = tb.tb
|
||||
return self.exc_type, self.exc_value, tb
|
||||
|
||||
|
||||
def make_traceback(exc_info, source_hint=None):
|
||||
"""Creates a processed traceback object from the exc_info."""
|
||||
exc_type, exc_value, tb = exc_info
|
||||
if isinstance(exc_value, TemplateSyntaxError):
|
||||
exc_info = translate_syntax_error(exc_value, source_hint)
|
||||
initial_skip = 0
|
||||
else:
|
||||
initial_skip = 1
|
||||
return translate_exception(exc_info, initial_skip)
|
||||
|
||||
|
||||
def translate_syntax_error(error, source=None):
|
||||
"""Rewrites a syntax error to please traceback systems."""
|
||||
error.source = source
|
||||
error.translated = True
|
||||
exc_info = (error.__class__, error, None)
|
||||
filename = error.filename
|
||||
if filename is None:
|
||||
filename = '<unknown>'
|
||||
return fake_exc_info(exc_info, filename, error.lineno)
|
||||
|
||||
|
||||
def translate_exception(exc_info, initial_skip=0):
|
||||
"""If passed an exc_info it will automatically rewrite the exceptions
|
||||
all the way down to the correct line numbers and frames.
|
||||
"""
|
||||
tb = exc_info[2]
|
||||
frames = []
|
||||
|
||||
# skip some internal frames if wanted
|
||||
for x in range(initial_skip):
|
||||
if tb is not None:
|
||||
tb = tb.tb_next
|
||||
initial_tb = tb
|
||||
|
||||
while tb is not None:
|
||||
# skip frames decorated with @internalcode. These are internal
|
||||
# calls we can't avoid and that are useless in template debugging
|
||||
# output.
|
||||
if tb.tb_frame.f_code in internal_code:
|
||||
tb = tb.tb_next
|
||||
continue
|
||||
|
||||
# save a reference to the next frame if we override the current
|
||||
# one with a faked one.
|
||||
next = tb.tb_next
|
||||
|
||||
# fake template exceptions
|
||||
template = tb.tb_frame.f_globals.get('__jinja_template__')
|
||||
if template is not None:
|
||||
lineno = template.get_corresponding_lineno(tb.tb_lineno)
|
||||
tb = fake_exc_info(exc_info[:2] + (tb,), template.filename,
|
||||
lineno)[2]
|
||||
|
||||
frames.append(make_frame_proxy(tb))
|
||||
tb = next
|
||||
|
||||
# if we don't have any exceptions in the frames left, we have to
|
||||
# reraise it unchanged.
|
||||
# XXX: can we backup here? when could this happen?
|
||||
if not frames:
|
||||
reraise(exc_info[0], exc_info[1], exc_info[2])
|
||||
|
||||
return ProcessedTraceback(exc_info[0], exc_info[1], frames)
|
||||
|
||||
|
||||
def fake_exc_info(exc_info, filename, lineno):
|
||||
"""Helper for `translate_exception`."""
|
||||
exc_type, exc_value, tb = exc_info
|
||||
|
||||
# figure the real context out
|
||||
if tb is not None:
|
||||
real_locals = tb.tb_frame.f_locals.copy()
|
||||
ctx = real_locals.get('context')
|
||||
if ctx:
|
||||
locals = ctx.get_all()
|
||||
else:
|
||||
locals = {}
|
||||
for name, value in iteritems(real_locals):
|
||||
if name.startswith('l_') and value is not missing:
|
||||
locals[name[2:]] = value
|
||||
|
||||
# if there is a local called __jinja_exception__, we get
|
||||
# rid of it to not break the debug functionality.
|
||||
locals.pop('__jinja_exception__', None)
|
||||
else:
|
||||
locals = {}
|
||||
|
||||
# assamble fake globals we need
|
||||
globals = {
|
||||
'__name__': filename,
|
||||
'__file__': filename,
|
||||
'__jinja_exception__': exc_info[:2],
|
||||
|
||||
# we don't want to keep the reference to the template around
|
||||
# to not cause circular dependencies, but we mark it as Jinja
|
||||
# frame for the ProcessedTraceback
|
||||
'__jinja_template__': None
|
||||
}
|
||||
|
||||
# and fake the exception
|
||||
code = compile('\n' * (lineno - 1) + raise_helper, filename, 'exec')
|
||||
|
||||
# if it's possible, change the name of the code. This won't work
|
||||
# on some python environments such as google appengine
|
||||
try:
|
||||
if tb is None:
|
||||
location = 'template'
|
||||
else:
|
||||
function = tb.tb_frame.f_code.co_name
|
||||
if function == 'root':
|
||||
location = 'top-level template code'
|
||||
elif function.startswith('block_'):
|
||||
location = 'block "%s"' % function[6:]
|
||||
else:
|
||||
location = 'template'
|
||||
code = code_type(0, code.co_nlocals, code.co_stacksize,
|
||||
code.co_flags, code.co_code, code.co_consts,
|
||||
code.co_names, code.co_varnames, filename,
|
||||
location, code.co_firstlineno,
|
||||
code.co_lnotab, (), ())
|
||||
except:
|
||||
pass
|
||||
|
||||
# execute the code and catch the new traceback
|
||||
try:
|
||||
exec(code, globals, locals)
|
||||
except:
|
||||
exc_info = sys.exc_info()
|
||||
new_tb = exc_info[2].tb_next
|
||||
|
||||
# return without this frame
|
||||
return exc_info[:2] + (new_tb,)
|
||||
|
||||
|
||||
def _init_ugly_crap():
|
||||
"""This function implements a few ugly things so that we can patch the
|
||||
traceback objects. The function returned allows resetting `tb_next` on
|
||||
any python traceback object. Do not attempt to use this on non cpython
|
||||
interpreters
|
||||
"""
|
||||
import ctypes
|
||||
from types import TracebackType
|
||||
|
||||
# figure out side of _Py_ssize_t
|
||||
if hasattr(ctypes.pythonapi, 'Py_InitModule4_64'):
|
||||
_Py_ssize_t = ctypes.c_int64
|
||||
else:
|
||||
_Py_ssize_t = ctypes.c_int
|
||||
|
||||
# regular python
|
||||
class _PyObject(ctypes.Structure):
|
||||
pass
|
||||
_PyObject._fields_ = [
|
||||
('ob_refcnt', _Py_ssize_t),
|
||||
('ob_type', ctypes.POINTER(_PyObject))
|
||||
]
|
||||
|
||||
# python with trace
|
||||
if hasattr(sys, 'getobjects'):
|
||||
class _PyObject(ctypes.Structure):
|
||||
pass
|
||||
_PyObject._fields_ = [
|
||||
('_ob_next', ctypes.POINTER(_PyObject)),
|
||||
('_ob_prev', ctypes.POINTER(_PyObject)),
|
||||
('ob_refcnt', _Py_ssize_t),
|
||||
('ob_type', ctypes.POINTER(_PyObject))
|
||||
]
|
||||
|
||||
class _Traceback(_PyObject):
|
||||
pass
|
||||
_Traceback._fields_ = [
|
||||
('tb_next', ctypes.POINTER(_Traceback)),
|
||||
('tb_frame', ctypes.POINTER(_PyObject)),
|
||||
('tb_lasti', ctypes.c_int),
|
||||
('tb_lineno', ctypes.c_int)
|
||||
]
|
||||
|
||||
def tb_set_next(tb, next):
|
||||
"""Set the tb_next attribute of a traceback object."""
|
||||
if not (isinstance(tb, TracebackType) and
|
||||
(next is None or isinstance(next, TracebackType))):
|
||||
raise TypeError('tb_set_next arguments must be traceback objects')
|
||||
obj = _Traceback.from_address(id(tb))
|
||||
if tb.tb_next is not None:
|
||||
old = _Traceback.from_address(id(tb.tb_next))
|
||||
old.ob_refcnt -= 1
|
||||
if next is None:
|
||||
obj.tb_next = ctypes.POINTER(_Traceback)()
|
||||
else:
|
||||
next = _Traceback.from_address(id(next))
|
||||
next.ob_refcnt += 1
|
||||
obj.tb_next = ctypes.pointer(next)
|
||||
|
||||
return tb_set_next
|
||||
|
||||
|
||||
# try to get a tb_set_next implementation if we don't have transparent
|
||||
# proxies.
|
||||
tb_set_next = None
|
||||
if tproxy is None:
|
||||
try:
|
||||
tb_set_next = _init_ugly_crap()
|
||||
except:
|
||||
pass
|
||||
del _init_ugly_crap
|
||||
43
3rdparty/jinja2/defaults.py
vendored
Normal file
43
3rdparty/jinja2/defaults.py
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
jinja2.defaults
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
Jinja default filters and tags.
|
||||
|
||||
:copyright: (c) 2010 by the Jinja Team.
|
||||
:license: BSD, see LICENSE for more details.
|
||||
"""
|
||||
from jinja2._compat import range_type
|
||||
from jinja2.utils import generate_lorem_ipsum, Cycler, Joiner
|
||||
|
||||
|
||||
# defaults for the parser / lexer
|
||||
BLOCK_START_STRING = '{%'
|
||||
BLOCK_END_STRING = '%}'
|
||||
VARIABLE_START_STRING = '{{'
|
||||
VARIABLE_END_STRING = '}}'
|
||||
COMMENT_START_STRING = '{#'
|
||||
COMMENT_END_STRING = '#}'
|
||||
LINE_STATEMENT_PREFIX = None
|
||||
LINE_COMMENT_PREFIX = None
|
||||
TRIM_BLOCKS = False
|
||||
LSTRIP_BLOCKS = False
|
||||
NEWLINE_SEQUENCE = '\n'
|
||||
KEEP_TRAILING_NEWLINE = False
|
||||
|
||||
|
||||
# default filters, tests and namespace
|
||||
from jinja2.filters import FILTERS as DEFAULT_FILTERS
|
||||
from jinja2.tests import TESTS as DEFAULT_TESTS
|
||||
DEFAULT_NAMESPACE = {
|
||||
'range': range_type,
|
||||
'dict': lambda **kw: kw,
|
||||
'lipsum': generate_lorem_ipsum,
|
||||
'cycler': Cycler,
|
||||
'joiner': Joiner
|
||||
}
|
||||
|
||||
|
||||
# export all constants
|
||||
__all__ = tuple(x for x in locals().keys() if x.isupper())
|
||||
1191
3rdparty/jinja2/environment.py
vendored
Normal file
1191
3rdparty/jinja2/environment.py
vendored
Normal file
File diff suppressed because it is too large
Load Diff
146
3rdparty/jinja2/exceptions.py
vendored
Normal file
146
3rdparty/jinja2/exceptions.py
vendored
Normal file
@@ -0,0 +1,146 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
jinja2.exceptions
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
Jinja exceptions.
|
||||
|
||||
:copyright: (c) 2010 by the Jinja Team.
|
||||
:license: BSD, see LICENSE for more details.
|
||||
"""
|
||||
from jinja2._compat import imap, text_type, PY2, implements_to_string
|
||||
|
||||
|
||||
class TemplateError(Exception):
|
||||
"""Baseclass for all template errors."""
|
||||
|
||||
if PY2:
|
||||
def __init__(self, message=None):
|
||||
if message is not None:
|
||||
message = text_type(message).encode('utf-8')
|
||||
Exception.__init__(self, message)
|
||||
|
||||
@property
|
||||
def message(self):
|
||||
if self.args:
|
||||
message = self.args[0]
|
||||
if message is not None:
|
||||
return message.decode('utf-8', 'replace')
|
||||
|
||||
def __unicode__(self):
|
||||
return self.message or u''
|
||||
else:
|
||||
def __init__(self, message=None):
|
||||
Exception.__init__(self, message)
|
||||
|
||||
@property
|
||||
def message(self):
|
||||
if self.args:
|
||||
message = self.args[0]
|
||||
if message is not None:
|
||||
return message
|
||||
|
||||
|
||||
@implements_to_string
|
||||
class TemplateNotFound(IOError, LookupError, TemplateError):
|
||||
"""Raised if a template does not exist."""
|
||||
|
||||
# looks weird, but removes the warning descriptor that just
|
||||
# bogusly warns us about message being deprecated
|
||||
message = None
|
||||
|
||||
def __init__(self, name, message=None):
|
||||
IOError.__init__(self)
|
||||
if message is None:
|
||||
message = name
|
||||
self.message = message
|
||||
self.name = name
|
||||
self.templates = [name]
|
||||
|
||||
def __str__(self):
|
||||
return self.message
|
||||
|
||||
|
||||
class TemplatesNotFound(TemplateNotFound):
|
||||
"""Like :class:`TemplateNotFound` but raised if multiple templates
|
||||
are selected. This is a subclass of :class:`TemplateNotFound`
|
||||
exception, so just catching the base exception will catch both.
|
||||
|
||||
.. versionadded:: 2.2
|
||||
"""
|
||||
|
||||
def __init__(self, names=(), message=None):
|
||||
if message is None:
|
||||
message = u'none of the templates given were found: ' + \
|
||||
u', '.join(imap(text_type, names))
|
||||
TemplateNotFound.__init__(self, names and names[-1] or None, message)
|
||||
self.templates = list(names)
|
||||
|
||||
|
||||
@implements_to_string
|
||||
class TemplateSyntaxError(TemplateError):
|
||||
"""Raised to tell the user that there is a problem with the template."""
|
||||
|
||||
def __init__(self, message, lineno, name=None, filename=None):
|
||||
TemplateError.__init__(self, message)
|
||||
self.lineno = lineno
|
||||
self.name = name
|
||||
self.filename = filename
|
||||
self.source = None
|
||||
|
||||
# this is set to True if the debug.translate_syntax_error
|
||||
# function translated the syntax error into a new traceback
|
||||
self.translated = False
|
||||
|
||||
def __str__(self):
|
||||
# for translated errors we only return the message
|
||||
if self.translated:
|
||||
return self.message
|
||||
|
||||
# otherwise attach some stuff
|
||||
location = 'line %d' % self.lineno
|
||||
name = self.filename or self.name
|
||||
if name:
|
||||
location = 'File "%s", %s' % (name, location)
|
||||
lines = [self.message, ' ' + location]
|
||||
|
||||
# if the source is set, add the line to the output
|
||||
if self.source is not None:
|
||||
try:
|
||||
line = self.source.splitlines()[self.lineno - 1]
|
||||
except IndexError:
|
||||
line = None
|
||||
if line:
|
||||
lines.append(' ' + line.strip())
|
||||
|
||||
return u'\n'.join(lines)
|
||||
|
||||
|
||||
class TemplateAssertionError(TemplateSyntaxError):
|
||||
"""Like a template syntax error, but covers cases where something in the
|
||||
template caused an error at compile time that wasn't necessarily caused
|
||||
by a syntax error. However it's a direct subclass of
|
||||
:exc:`TemplateSyntaxError` and has the same attributes.
|
||||
"""
|
||||
|
||||
|
||||
class TemplateRuntimeError(TemplateError):
|
||||
"""A generic runtime error in the template engine. Under some situations
|
||||
Jinja may raise this exception.
|
||||
"""
|
||||
|
||||
|
||||
class UndefinedError(TemplateRuntimeError):
|
||||
"""Raised if a template tries to operate on :class:`Undefined`."""
|
||||
|
||||
|
||||
class SecurityError(TemplateRuntimeError):
|
||||
"""Raised if a template tries to do something insecure if the
|
||||
sandbox is enabled.
|
||||
"""
|
||||
|
||||
|
||||
class FilterArgumentError(TemplateRuntimeError):
|
||||
"""This error is raised if a filter was called with inappropriate
|
||||
arguments
|
||||
"""
|
||||
636
3rdparty/jinja2/ext.py
vendored
Normal file
636
3rdparty/jinja2/ext.py
vendored
Normal file
@@ -0,0 +1,636 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
jinja2.ext
|
||||
~~~~~~~~~~
|
||||
|
||||
Jinja extensions allow to add custom tags similar to the way django custom
|
||||
tags work. By default two example extensions exist: an i18n and a cache
|
||||
extension.
|
||||
|
||||
:copyright: (c) 2010 by the Jinja Team.
|
||||
:license: BSD.
|
||||
"""
|
||||
from jinja2 import nodes
|
||||
from jinja2.defaults import BLOCK_START_STRING, \
|
||||
BLOCK_END_STRING, VARIABLE_START_STRING, VARIABLE_END_STRING, \
|
||||
COMMENT_START_STRING, COMMENT_END_STRING, LINE_STATEMENT_PREFIX, \
|
||||
LINE_COMMENT_PREFIX, TRIM_BLOCKS, NEWLINE_SEQUENCE, \
|
||||
KEEP_TRAILING_NEWLINE, LSTRIP_BLOCKS
|
||||
from jinja2.environment import Environment
|
||||
from jinja2.runtime import concat
|
||||
from jinja2.exceptions import TemplateAssertionError, TemplateSyntaxError
|
||||
from jinja2.utils import contextfunction, import_string, Markup
|
||||
from jinja2._compat import next, with_metaclass, string_types, iteritems
|
||||
|
||||
|
||||
# the only real useful gettext functions for a Jinja template. Note
|
||||
# that ugettext must be assigned to gettext as Jinja doesn't support
|
||||
# non unicode strings.
|
||||
GETTEXT_FUNCTIONS = ('_', 'gettext', 'ngettext')
|
||||
|
||||
|
||||
class ExtensionRegistry(type):
|
||||
"""Gives the extension an unique identifier."""
|
||||
|
||||
def __new__(cls, name, bases, d):
|
||||
rv = type.__new__(cls, name, bases, d)
|
||||
rv.identifier = rv.__module__ + '.' + rv.__name__
|
||||
return rv
|
||||
|
||||
|
||||
class Extension(with_metaclass(ExtensionRegistry, object)):
|
||||
"""Extensions can be used to add extra functionality to the Jinja template
|
||||
system at the parser level. Custom extensions are bound to an environment
|
||||
but may not store environment specific data on `self`. The reason for
|
||||
this is that an extension can be bound to another environment (for
|
||||
overlays) by creating a copy and reassigning the `environment` attribute.
|
||||
|
||||
As extensions are created by the environment they cannot accept any
|
||||
arguments for configuration. One may want to work around that by using
|
||||
a factory function, but that is not possible as extensions are identified
|
||||
by their import name. The correct way to configure the extension is
|
||||
storing the configuration values on the environment. Because this way the
|
||||
environment ends up acting as central configuration storage the
|
||||
attributes may clash which is why extensions have to ensure that the names
|
||||
they choose for configuration are not too generic. ``prefix`` for example
|
||||
is a terrible name, ``fragment_cache_prefix`` on the other hand is a good
|
||||
name as includes the name of the extension (fragment cache).
|
||||
"""
|
||||
|
||||
#: if this extension parses this is the list of tags it's listening to.
|
||||
tags = set()
|
||||
|
||||
#: the priority of that extension. This is especially useful for
|
||||
#: extensions that preprocess values. A lower value means higher
|
||||
#: priority.
|
||||
#:
|
||||
#: .. versionadded:: 2.4
|
||||
priority = 100
|
||||
|
||||
def __init__(self, environment):
|
||||
self.environment = environment
|
||||
|
||||
def bind(self, environment):
|
||||
"""Create a copy of this extension bound to another environment."""
|
||||
rv = object.__new__(self.__class__)
|
||||
rv.__dict__.update(self.__dict__)
|
||||
rv.environment = environment
|
||||
return rv
|
||||
|
||||
def preprocess(self, source, name, filename=None):
|
||||
"""This method is called before the actual lexing and can be used to
|
||||
preprocess the source. The `filename` is optional. The return value
|
||||
must be the preprocessed source.
|
||||
"""
|
||||
return source
|
||||
|
||||
def filter_stream(self, stream):
|
||||
"""It's passed a :class:`~jinja2.lexer.TokenStream` that can be used
|
||||
to filter tokens returned. This method has to return an iterable of
|
||||
:class:`~jinja2.lexer.Token`\s, but it doesn't have to return a
|
||||
:class:`~jinja2.lexer.TokenStream`.
|
||||
|
||||
In the `ext` folder of the Jinja2 source distribution there is a file
|
||||
called `inlinegettext.py` which implements a filter that utilizes this
|
||||
method.
|
||||
"""
|
||||
return stream
|
||||
|
||||
def parse(self, parser):
|
||||
"""If any of the :attr:`tags` matched this method is called with the
|
||||
parser as first argument. The token the parser stream is pointing at
|
||||
is the name token that matched. This method has to return one or a
|
||||
list of multiple nodes.
|
||||
"""
|
||||
raise NotImplementedError()
|
||||
|
||||
def attr(self, name, lineno=None):
|
||||
"""Return an attribute node for the current extension. This is useful
|
||||
to pass constants on extensions to generated template code.
|
||||
|
||||
::
|
||||
|
||||
self.attr('_my_attribute', lineno=lineno)
|
||||
"""
|
||||
return nodes.ExtensionAttribute(self.identifier, name, lineno=lineno)
|
||||
|
||||
def call_method(self, name, args=None, kwargs=None, dyn_args=None,
|
||||
dyn_kwargs=None, lineno=None):
|
||||
"""Call a method of the extension. This is a shortcut for
|
||||
:meth:`attr` + :class:`jinja2.nodes.Call`.
|
||||
"""
|
||||
if args is None:
|
||||
args = []
|
||||
if kwargs is None:
|
||||
kwargs = []
|
||||
return nodes.Call(self.attr(name, lineno=lineno), args, kwargs,
|
||||
dyn_args, dyn_kwargs, lineno=lineno)
|
||||
|
||||
|
||||
@contextfunction
|
||||
def _gettext_alias(__context, *args, **kwargs):
|
||||
return __context.call(__context.resolve('gettext'), *args, **kwargs)
|
||||
|
||||
|
||||
def _make_new_gettext(func):
|
||||
@contextfunction
|
||||
def gettext(__context, __string, **variables):
|
||||
rv = __context.call(func, __string)
|
||||
if __context.eval_ctx.autoescape:
|
||||
rv = Markup(rv)
|
||||
return rv % variables
|
||||
return gettext
|
||||
|
||||
|
||||
def _make_new_ngettext(func):
|
||||
@contextfunction
|
||||
def ngettext(__context, __singular, __plural, __num, **variables):
|
||||
variables.setdefault('num', __num)
|
||||
rv = __context.call(func, __singular, __plural, __num)
|
||||
if __context.eval_ctx.autoescape:
|
||||
rv = Markup(rv)
|
||||
return rv % variables
|
||||
return ngettext
|
||||
|
||||
|
||||
class InternationalizationExtension(Extension):
|
||||
"""This extension adds gettext support to Jinja2."""
|
||||
tags = set(['trans'])
|
||||
|
||||
# TODO: the i18n extension is currently reevaluating values in a few
|
||||
# situations. Take this example:
|
||||
# {% trans count=something() %}{{ count }} foo{% pluralize
|
||||
# %}{{ count }} fooss{% endtrans %}
|
||||
# something is called twice here. One time for the gettext value and
|
||||
# the other time for the n-parameter of the ngettext function.
|
||||
|
||||
def __init__(self, environment):
|
||||
Extension.__init__(self, environment)
|
||||
environment.globals['_'] = _gettext_alias
|
||||
environment.extend(
|
||||
install_gettext_translations=self._install,
|
||||
install_null_translations=self._install_null,
|
||||
install_gettext_callables=self._install_callables,
|
||||
uninstall_gettext_translations=self._uninstall,
|
||||
extract_translations=self._extract,
|
||||
newstyle_gettext=False
|
||||
)
|
||||
|
||||
def _install(self, translations, newstyle=None):
|
||||
gettext = getattr(translations, 'ugettext', None)
|
||||
if gettext is None:
|
||||
gettext = translations.gettext
|
||||
ngettext = getattr(translations, 'ungettext', None)
|
||||
if ngettext is None:
|
||||
ngettext = translations.ngettext
|
||||
self._install_callables(gettext, ngettext, newstyle)
|
||||
|
||||
def _install_null(self, newstyle=None):
|
||||
self._install_callables(
|
||||
lambda x: x,
|
||||
lambda s, p, n: (n != 1 and (p,) or (s,))[0],
|
||||
newstyle
|
||||
)
|
||||
|
||||
def _install_callables(self, gettext, ngettext, newstyle=None):
|
||||
if newstyle is not None:
|
||||
self.environment.newstyle_gettext = newstyle
|
||||
if self.environment.newstyle_gettext:
|
||||
gettext = _make_new_gettext(gettext)
|
||||
ngettext = _make_new_ngettext(ngettext)
|
||||
self.environment.globals.update(
|
||||
gettext=gettext,
|
||||
ngettext=ngettext
|
||||
)
|
||||
|
||||
def _uninstall(self, translations):
|
||||
for key in 'gettext', 'ngettext':
|
||||
self.environment.globals.pop(key, None)
|
||||
|
||||
def _extract(self, source, gettext_functions=GETTEXT_FUNCTIONS):
|
||||
if isinstance(source, string_types):
|
||||
source = self.environment.parse(source)
|
||||
return extract_from_ast(source, gettext_functions)
|
||||
|
||||
def parse(self, parser):
|
||||
"""Parse a translatable tag."""
|
||||
lineno = next(parser.stream).lineno
|
||||
num_called_num = False
|
||||
|
||||
# find all the variables referenced. Additionally a variable can be
|
||||
# defined in the body of the trans block too, but this is checked at
|
||||
# a later state.
|
||||
plural_expr = None
|
||||
plural_expr_assignment = None
|
||||
variables = {}
|
||||
while parser.stream.current.type != 'block_end':
|
||||
if variables:
|
||||
parser.stream.expect('comma')
|
||||
|
||||
# skip colon for python compatibility
|
||||
if parser.stream.skip_if('colon'):
|
||||
break
|
||||
|
||||
name = parser.stream.expect('name')
|
||||
if name.value in variables:
|
||||
parser.fail('translatable variable %r defined twice.' %
|
||||
name.value, name.lineno,
|
||||
exc=TemplateAssertionError)
|
||||
|
||||
# expressions
|
||||
if parser.stream.current.type == 'assign':
|
||||
next(parser.stream)
|
||||
variables[name.value] = var = parser.parse_expression()
|
||||
else:
|
||||
variables[name.value] = var = nodes.Name(name.value, 'load')
|
||||
|
||||
if plural_expr is None:
|
||||
if isinstance(var, nodes.Call):
|
||||
plural_expr = nodes.Name('_trans', 'load')
|
||||
variables[name.value] = plural_expr
|
||||
plural_expr_assignment = nodes.Assign(
|
||||
nodes.Name('_trans', 'store'), var)
|
||||
else:
|
||||
plural_expr = var
|
||||
num_called_num = name.value == 'num'
|
||||
|
||||
parser.stream.expect('block_end')
|
||||
|
||||
plural = plural_names = None
|
||||
have_plural = False
|
||||
referenced = set()
|
||||
|
||||
# now parse until endtrans or pluralize
|
||||
singular_names, singular = self._parse_block(parser, True)
|
||||
if singular_names:
|
||||
referenced.update(singular_names)
|
||||
if plural_expr is None:
|
||||
plural_expr = nodes.Name(singular_names[0], 'load')
|
||||
num_called_num = singular_names[0] == 'num'
|
||||
|
||||
# if we have a pluralize block, we parse that too
|
||||
if parser.stream.current.test('name:pluralize'):
|
||||
have_plural = True
|
||||
next(parser.stream)
|
||||
if parser.stream.current.type != 'block_end':
|
||||
name = parser.stream.expect('name')
|
||||
if name.value not in variables:
|
||||
parser.fail('unknown variable %r for pluralization' %
|
||||
name.value, name.lineno,
|
||||
exc=TemplateAssertionError)
|
||||
plural_expr = variables[name.value]
|
||||
num_called_num = name.value == 'num'
|
||||
parser.stream.expect('block_end')
|
||||
plural_names, plural = self._parse_block(parser, False)
|
||||
next(parser.stream)
|
||||
referenced.update(plural_names)
|
||||
else:
|
||||
next(parser.stream)
|
||||
|
||||
# register free names as simple name expressions
|
||||
for var in referenced:
|
||||
if var not in variables:
|
||||
variables[var] = nodes.Name(var, 'load')
|
||||
|
||||
if not have_plural:
|
||||
plural_expr = None
|
||||
elif plural_expr is None:
|
||||
parser.fail('pluralize without variables', lineno)
|
||||
|
||||
node = self._make_node(singular, plural, variables, plural_expr,
|
||||
bool(referenced),
|
||||
num_called_num and have_plural)
|
||||
node.set_lineno(lineno)
|
||||
if plural_expr_assignment is not None:
|
||||
return [plural_expr_assignment, node]
|
||||
else:
|
||||
return node
|
||||
|
||||
def _parse_block(self, parser, allow_pluralize):
|
||||
"""Parse until the next block tag with a given name."""
|
||||
referenced = []
|
||||
buf = []
|
||||
while 1:
|
||||
if parser.stream.current.type == 'data':
|
||||
buf.append(parser.stream.current.value.replace('%', '%%'))
|
||||
next(parser.stream)
|
||||
elif parser.stream.current.type == 'variable_begin':
|
||||
next(parser.stream)
|
||||
name = parser.stream.expect('name').value
|
||||
referenced.append(name)
|
||||
buf.append('%%(%s)s' % name)
|
||||
parser.stream.expect('variable_end')
|
||||
elif parser.stream.current.type == 'block_begin':
|
||||
next(parser.stream)
|
||||
if parser.stream.current.test('name:endtrans'):
|
||||
break
|
||||
elif parser.stream.current.test('name:pluralize'):
|
||||
if allow_pluralize:
|
||||
break
|
||||
parser.fail('a translatable section can have only one '
|
||||
'pluralize section')
|
||||
parser.fail('control structures in translatable sections are '
|
||||
'not allowed')
|
||||
elif parser.stream.eos:
|
||||
parser.fail('unclosed translation block')
|
||||
else:
|
||||
assert False, 'internal parser error'
|
||||
|
||||
return referenced, concat(buf)
|
||||
|
||||
def _make_node(self, singular, plural, variables, plural_expr,
|
||||
vars_referenced, num_called_num):
|
||||
"""Generates a useful node from the data provided."""
|
||||
# no variables referenced? no need to escape for old style
|
||||
# gettext invocations only if there are vars.
|
||||
if not vars_referenced and not self.environment.newstyle_gettext:
|
||||
singular = singular.replace('%%', '%')
|
||||
if plural:
|
||||
plural = plural.replace('%%', '%')
|
||||
|
||||
# singular only:
|
||||
if plural_expr is None:
|
||||
gettext = nodes.Name('gettext', 'load')
|
||||
node = nodes.Call(gettext, [nodes.Const(singular)],
|
||||
[], None, None)
|
||||
|
||||
# singular and plural
|
||||
else:
|
||||
ngettext = nodes.Name('ngettext', 'load')
|
||||
node = nodes.Call(ngettext, [
|
||||
nodes.Const(singular),
|
||||
nodes.Const(plural),
|
||||
plural_expr
|
||||
], [], None, None)
|
||||
|
||||
# in case newstyle gettext is used, the method is powerful
|
||||
# enough to handle the variable expansion and autoescape
|
||||
# handling itself
|
||||
if self.environment.newstyle_gettext:
|
||||
for key, value in iteritems(variables):
|
||||
# the function adds that later anyways in case num was
|
||||
# called num, so just skip it.
|
||||
if num_called_num and key == 'num':
|
||||
continue
|
||||
node.kwargs.append(nodes.Keyword(key, value))
|
||||
|
||||
# otherwise do that here
|
||||
else:
|
||||
# mark the return value as safe if we are in an
|
||||
# environment with autoescaping turned on
|
||||
node = nodes.MarkSafeIfAutoescape(node)
|
||||
if variables:
|
||||
node = nodes.Mod(node, nodes.Dict([
|
||||
nodes.Pair(nodes.Const(key), value)
|
||||
for key, value in variables.items()
|
||||
]))
|
||||
return nodes.Output([node])
|
||||
|
||||
|
||||
class ExprStmtExtension(Extension):
|
||||
"""Adds a `do` tag to Jinja2 that works like the print statement just
|
||||
that it doesn't print the return value.
|
||||
"""
|
||||
tags = set(['do'])
|
||||
|
||||
def parse(self, parser):
|
||||
node = nodes.ExprStmt(lineno=next(parser.stream).lineno)
|
||||
node.node = parser.parse_tuple()
|
||||
return node
|
||||
|
||||
|
||||
class LoopControlExtension(Extension):
|
||||
"""Adds break and continue to the template engine."""
|
||||
tags = set(['break', 'continue'])
|
||||
|
||||
def parse(self, parser):
|
||||
token = next(parser.stream)
|
||||
if token.value == 'break':
|
||||
return nodes.Break(lineno=token.lineno)
|
||||
return nodes.Continue(lineno=token.lineno)
|
||||
|
||||
|
||||
class WithExtension(Extension):
|
||||
"""Adds support for a django-like with block."""
|
||||
tags = set(['with'])
|
||||
|
||||
def parse(self, parser):
|
||||
node = nodes.Scope(lineno=next(parser.stream).lineno)
|
||||
assignments = []
|
||||
while parser.stream.current.type != 'block_end':
|
||||
lineno = parser.stream.current.lineno
|
||||
if assignments:
|
||||
parser.stream.expect('comma')
|
||||
target = parser.parse_assign_target()
|
||||
parser.stream.expect('assign')
|
||||
expr = parser.parse_expression()
|
||||
assignments.append(nodes.Assign(target, expr, lineno=lineno))
|
||||
node.body = assignments + \
|
||||
list(parser.parse_statements(('name:endwith',),
|
||||
drop_needle=True))
|
||||
return node
|
||||
|
||||
|
||||
class AutoEscapeExtension(Extension):
|
||||
"""Changes auto escape rules for a scope."""
|
||||
tags = set(['autoescape'])
|
||||
|
||||
def parse(self, parser):
|
||||
node = nodes.ScopedEvalContextModifier(lineno=next(parser.stream).lineno)
|
||||
node.options = [
|
||||
nodes.Keyword('autoescape', parser.parse_expression())
|
||||
]
|
||||
node.body = parser.parse_statements(('name:endautoescape',),
|
||||
drop_needle=True)
|
||||
return nodes.Scope([node])
|
||||
|
||||
|
||||
def extract_from_ast(node, gettext_functions=GETTEXT_FUNCTIONS,
|
||||
babel_style=True):
|
||||
"""Extract localizable strings from the given template node. Per
|
||||
default this function returns matches in babel style that means non string
|
||||
parameters as well as keyword arguments are returned as `None`. This
|
||||
allows Babel to figure out what you really meant if you are using
|
||||
gettext functions that allow keyword arguments for placeholder expansion.
|
||||
If you don't want that behavior set the `babel_style` parameter to `False`
|
||||
which causes only strings to be returned and parameters are always stored
|
||||
in tuples. As a consequence invalid gettext calls (calls without a single
|
||||
string parameter or string parameters after non-string parameters) are
|
||||
skipped.
|
||||
|
||||
This example explains the behavior:
|
||||
|
||||
>>> from jinja2 import Environment
|
||||
>>> env = Environment()
|
||||
>>> node = env.parse('{{ (_("foo"), _(), ngettext("foo", "bar", 42)) }}')
|
||||
>>> list(extract_from_ast(node))
|
||||
[(1, '_', 'foo'), (1, '_', ()), (1, 'ngettext', ('foo', 'bar', None))]
|
||||
>>> list(extract_from_ast(node, babel_style=False))
|
||||
[(1, '_', ('foo',)), (1, 'ngettext', ('foo', 'bar'))]
|
||||
|
||||
For every string found this function yields a ``(lineno, function,
|
||||
message)`` tuple, where:
|
||||
|
||||
* ``lineno`` is the number of the line on which the string was found,
|
||||
* ``function`` is the name of the ``gettext`` function used (if the
|
||||
string was extracted from embedded Python code), and
|
||||
* ``message`` is the string itself (a ``unicode`` object, or a tuple
|
||||
of ``unicode`` objects for functions with multiple string arguments).
|
||||
|
||||
This extraction function operates on the AST and is because of that unable
|
||||
to extract any comments. For comment support you have to use the babel
|
||||
extraction interface or extract comments yourself.
|
||||
"""
|
||||
for node in node.find_all(nodes.Call):
|
||||
if not isinstance(node.node, nodes.Name) or \
|
||||
node.node.name not in gettext_functions:
|
||||
continue
|
||||
|
||||
strings = []
|
||||
for arg in node.args:
|
||||
if isinstance(arg, nodes.Const) and \
|
||||
isinstance(arg.value, string_types):
|
||||
strings.append(arg.value)
|
||||
else:
|
||||
strings.append(None)
|
||||
|
||||
for arg in node.kwargs:
|
||||
strings.append(None)
|
||||
if node.dyn_args is not None:
|
||||
strings.append(None)
|
||||
if node.dyn_kwargs is not None:
|
||||
strings.append(None)
|
||||
|
||||
if not babel_style:
|
||||
strings = tuple(x for x in strings if x is not None)
|
||||
if not strings:
|
||||
continue
|
||||
else:
|
||||
if len(strings) == 1:
|
||||
strings = strings[0]
|
||||
else:
|
||||
strings = tuple(strings)
|
||||
yield node.lineno, node.node.name, strings
|
||||
|
||||
|
||||
class _CommentFinder(object):
|
||||
"""Helper class to find comments in a token stream. Can only
|
||||
find comments for gettext calls forwards. Once the comment
|
||||
from line 4 is found, a comment for line 1 will not return a
|
||||
usable value.
|
||||
"""
|
||||
|
||||
def __init__(self, tokens, comment_tags):
|
||||
self.tokens = tokens
|
||||
self.comment_tags = comment_tags
|
||||
self.offset = 0
|
||||
self.last_lineno = 0
|
||||
|
||||
def find_backwards(self, offset):
|
||||
try:
|
||||
for _, token_type, token_value in \
|
||||
reversed(self.tokens[self.offset:offset]):
|
||||
if token_type in ('comment', 'linecomment'):
|
||||
try:
|
||||
prefix, comment = token_value.split(None, 1)
|
||||
except ValueError:
|
||||
continue
|
||||
if prefix in self.comment_tags:
|
||||
return [comment.rstrip()]
|
||||
return []
|
||||
finally:
|
||||
self.offset = offset
|
||||
|
||||
def find_comments(self, lineno):
|
||||
if not self.comment_tags or self.last_lineno > lineno:
|
||||
return []
|
||||
for idx, (token_lineno, _, _) in enumerate(self.tokens[self.offset:]):
|
||||
if token_lineno > lineno:
|
||||
return self.find_backwards(self.offset + idx)
|
||||
return self.find_backwards(len(self.tokens))
|
||||
|
||||
|
||||
def babel_extract(fileobj, keywords, comment_tags, options):
|
||||
"""Babel extraction method for Jinja templates.
|
||||
|
||||
.. versionchanged:: 2.3
|
||||
Basic support for translation comments was added. If `comment_tags`
|
||||
is now set to a list of keywords for extraction, the extractor will
|
||||
try to find the best preceeding comment that begins with one of the
|
||||
keywords. For best results, make sure to not have more than one
|
||||
gettext call in one line of code and the matching comment in the
|
||||
same line or the line before.
|
||||
|
||||
.. versionchanged:: 2.5.1
|
||||
The `newstyle_gettext` flag can be set to `True` to enable newstyle
|
||||
gettext calls.
|
||||
|
||||
.. versionchanged:: 2.7
|
||||
A `silent` option can now be provided. If set to `False` template
|
||||
syntax errors are propagated instead of being ignored.
|
||||
|
||||
:param fileobj: the file-like object the messages should be extracted from
|
||||
:param keywords: a list of keywords (i.e. function names) that should be
|
||||
recognized as translation functions
|
||||
:param comment_tags: a list of translator tags to search for and include
|
||||
in the results.
|
||||
:param options: a dictionary of additional options (optional)
|
||||
:return: an iterator over ``(lineno, funcname, message, comments)`` tuples.
|
||||
(comments will be empty currently)
|
||||
"""
|
||||
extensions = set()
|
||||
for extension in options.get('extensions', '').split(','):
|
||||
extension = extension.strip()
|
||||
if not extension:
|
||||
continue
|
||||
extensions.add(import_string(extension))
|
||||
if InternationalizationExtension not in extensions:
|
||||
extensions.add(InternationalizationExtension)
|
||||
|
||||
def getbool(options, key, default=False):
|
||||
return options.get(key, str(default)).lower() in \
|
||||
('1', 'on', 'yes', 'true')
|
||||
|
||||
silent = getbool(options, 'silent', True)
|
||||
environment = Environment(
|
||||
options.get('block_start_string', BLOCK_START_STRING),
|
||||
options.get('block_end_string', BLOCK_END_STRING),
|
||||
options.get('variable_start_string', VARIABLE_START_STRING),
|
||||
options.get('variable_end_string', VARIABLE_END_STRING),
|
||||
options.get('comment_start_string', COMMENT_START_STRING),
|
||||
options.get('comment_end_string', COMMENT_END_STRING),
|
||||
options.get('line_statement_prefix') or LINE_STATEMENT_PREFIX,
|
||||
options.get('line_comment_prefix') or LINE_COMMENT_PREFIX,
|
||||
getbool(options, 'trim_blocks', TRIM_BLOCKS),
|
||||
getbool(options, 'lstrip_blocks', LSTRIP_BLOCKS),
|
||||
NEWLINE_SEQUENCE,
|
||||
getbool(options, 'keep_trailing_newline', KEEP_TRAILING_NEWLINE),
|
||||
frozenset(extensions),
|
||||
cache_size=0,
|
||||
auto_reload=False
|
||||
)
|
||||
|
||||
if getbool(options, 'newstyle_gettext'):
|
||||
environment.newstyle_gettext = True
|
||||
|
||||
source = fileobj.read().decode(options.get('encoding', 'utf-8'))
|
||||
try:
|
||||
node = environment.parse(source)
|
||||
tokens = list(environment.lex(environment.preprocess(source)))
|
||||
except TemplateSyntaxError as e:
|
||||
if not silent:
|
||||
raise
|
||||
# skip templates with syntax errors
|
||||
return
|
||||
|
||||
finder = _CommentFinder(tokens, comment_tags)
|
||||
for lineno, func, message in extract_from_ast(node, keywords):
|
||||
yield lineno, func, message, finder.find_comments(lineno)
|
||||
|
||||
|
||||
#: nicer import names
|
||||
i18n = InternationalizationExtension
|
||||
do = ExprStmtExtension
|
||||
loopcontrols = LoopControlExtension
|
||||
with_ = WithExtension
|
||||
autoescape = AutoEscapeExtension
|
||||
987
3rdparty/jinja2/filters.py
vendored
Normal file
987
3rdparty/jinja2/filters.py
vendored
Normal file
@@ -0,0 +1,987 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
jinja2.filters
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
Bundled jinja filters.
|
||||
|
||||
:copyright: (c) 2010 by the Jinja Team.
|
||||
:license: BSD, see LICENSE for more details.
|
||||
"""
|
||||
import re
|
||||
import math
|
||||
|
||||
from random import choice
|
||||
from operator import itemgetter
|
||||
from itertools import groupby
|
||||
from jinja2.utils import Markup, escape, pformat, urlize, soft_unicode, \
|
||||
unicode_urlencode
|
||||
from jinja2.runtime import Undefined
|
||||
from jinja2.exceptions import FilterArgumentError
|
||||
from jinja2._compat import next, imap, string_types, text_type, iteritems
|
||||
|
||||
|
||||
_word_re = re.compile(r'\w+(?u)')
|
||||
|
||||
|
||||
def contextfilter(f):
|
||||
"""Decorator for marking context dependent filters. The current
|
||||
:class:`Context` will be passed as first argument.
|
||||
"""
|
||||
f.contextfilter = True
|
||||
return f
|
||||
|
||||
|
||||
def evalcontextfilter(f):
|
||||
"""Decorator for marking eval-context dependent filters. An eval
|
||||
context object is passed as first argument. For more information
|
||||
about the eval context, see :ref:`eval-context`.
|
||||
|
||||
.. versionadded:: 2.4
|
||||
"""
|
||||
f.evalcontextfilter = True
|
||||
return f
|
||||
|
||||
|
||||
def environmentfilter(f):
|
||||
"""Decorator for marking evironment dependent filters. The current
|
||||
:class:`Environment` is passed to the filter as first argument.
|
||||
"""
|
||||
f.environmentfilter = True
|
||||
return f
|
||||
|
||||
|
||||
def make_attrgetter(environment, attribute):
|
||||
"""Returns a callable that looks up the given attribute from a
|
||||
passed object with the rules of the environment. Dots are allowed
|
||||
to access attributes of attributes. Integer parts in paths are
|
||||
looked up as integers.
|
||||
"""
|
||||
if not isinstance(attribute, string_types) \
|
||||
or ('.' not in attribute and not attribute.isdigit()):
|
||||
return lambda x: environment.getitem(x, attribute)
|
||||
attribute = attribute.split('.')
|
||||
def attrgetter(item):
|
||||
for part in attribute:
|
||||
if part.isdigit():
|
||||
part = int(part)
|
||||
item = environment.getitem(item, part)
|
||||
return item
|
||||
return attrgetter
|
||||
|
||||
|
||||
def do_forceescape(value):
|
||||
"""Enforce HTML escaping. This will probably double escape variables."""
|
||||
if hasattr(value, '__html__'):
|
||||
value = value.__html__()
|
||||
return escape(text_type(value))
|
||||
|
||||
|
||||
def do_urlencode(value):
|
||||
"""Escape strings for use in URLs (uses UTF-8 encoding). It accepts both
|
||||
dictionaries and regular strings as well as pairwise iterables.
|
||||
|
||||
.. versionadded:: 2.7
|
||||
"""
|
||||
itemiter = None
|
||||
if isinstance(value, dict):
|
||||
itemiter = iteritems(value)
|
||||
elif not isinstance(value, string_types):
|
||||
try:
|
||||
itemiter = iter(value)
|
||||
except TypeError:
|
||||
pass
|
||||
if itemiter is None:
|
||||
return unicode_urlencode(value)
|
||||
return u'&'.join(unicode_urlencode(k) + '=' +
|
||||
unicode_urlencode(v) for k, v in itemiter)
|
||||
|
||||
|
||||
@evalcontextfilter
|
||||
def do_replace(eval_ctx, s, old, new, count=None):
|
||||
"""Return a copy of the value with all occurrences of a substring
|
||||
replaced with a new one. The first argument is the substring
|
||||
that should be replaced, the second is the replacement string.
|
||||
If the optional third argument ``count`` is given, only the first
|
||||
``count`` occurrences are replaced:
|
||||
|
||||
.. sourcecode:: jinja
|
||||
|
||||
{{ "Hello World"|replace("Hello", "Goodbye") }}
|
||||
-> Goodbye World
|
||||
|
||||
{{ "aaaaargh"|replace("a", "d'oh, ", 2) }}
|
||||
-> d'oh, d'oh, aaargh
|
||||
"""
|
||||
if count is None:
|
||||
count = -1
|
||||
if not eval_ctx.autoescape:
|
||||
return text_type(s).replace(text_type(old), text_type(new), count)
|
||||
if hasattr(old, '__html__') or hasattr(new, '__html__') and \
|
||||
not hasattr(s, '__html__'):
|
||||
s = escape(s)
|
||||
else:
|
||||
s = soft_unicode(s)
|
||||
return s.replace(soft_unicode(old), soft_unicode(new), count)
|
||||
|
||||
|
||||
def do_upper(s):
|
||||
"""Convert a value to uppercase."""
|
||||
return soft_unicode(s).upper()
|
||||
|
||||
|
||||
def do_lower(s):
|
||||
"""Convert a value to lowercase."""
|
||||
return soft_unicode(s).lower()
|
||||
|
||||
|
||||
@evalcontextfilter
|
||||
def do_xmlattr(_eval_ctx, d, autospace=True):
|
||||
"""Create an SGML/XML attribute string based on the items in a dict.
|
||||
All values that are neither `none` nor `undefined` are automatically
|
||||
escaped:
|
||||
|
||||
.. sourcecode:: html+jinja
|
||||
|
||||
<ul{{ {'class': 'my_list', 'missing': none,
|
||||
'id': 'list-%d'|format(variable)}|xmlattr }}>
|
||||
...
|
||||
</ul>
|
||||
|
||||
Results in something like this:
|
||||
|
||||
.. sourcecode:: html
|
||||
|
||||
<ul class="my_list" id="list-42">
|
||||
...
|
||||
</ul>
|
||||
|
||||
As you can see it automatically prepends a space in front of the item
|
||||
if the filter returned something unless the second parameter is false.
|
||||
"""
|
||||
rv = u' '.join(
|
||||
u'%s="%s"' % (escape(key), escape(value))
|
||||
for key, value in iteritems(d)
|
||||
if value is not None and not isinstance(value, Undefined)
|
||||
)
|
||||
if autospace and rv:
|
||||
rv = u' ' + rv
|
||||
if _eval_ctx.autoescape:
|
||||
rv = Markup(rv)
|
||||
return rv
|
||||
|
||||
|
||||
def do_capitalize(s):
|
||||
"""Capitalize a value. The first character will be uppercase, all others
|
||||
lowercase.
|
||||
"""
|
||||
return soft_unicode(s).capitalize()
|
||||
|
||||
|
||||
def do_title(s):
|
||||
"""Return a titlecased version of the value. I.e. words will start with
|
||||
uppercase letters, all remaining characters are lowercase.
|
||||
"""
|
||||
rv = []
|
||||
for item in re.compile(r'([-\s]+)(?u)').split(s):
|
||||
if not item:
|
||||
continue
|
||||
rv.append(item[0].upper() + item[1:].lower())
|
||||
return ''.join(rv)
|
||||
|
||||
|
||||
def do_dictsort(value, case_sensitive=False, by='key'):
|
||||
"""Sort a dict and yield (key, value) pairs. Because python dicts are
|
||||
unsorted you may want to use this function to order them by either
|
||||
key or value:
|
||||
|
||||
.. sourcecode:: jinja
|
||||
|
||||
{% for item in mydict|dictsort %}
|
||||
sort the dict by key, case insensitive
|
||||
|
||||
{% for item in mydict|dictsort(true) %}
|
||||
sort the dict by key, case sensitive
|
||||
|
||||
{% for item in mydict|dictsort(false, 'value') %}
|
||||
sort the dict by key, case insensitive, sorted
|
||||
normally and ordered by value.
|
||||
"""
|
||||
if by == 'key':
|
||||
pos = 0
|
||||
elif by == 'value':
|
||||
pos = 1
|
||||
else:
|
||||
raise FilterArgumentError('You can only sort by either '
|
||||
'"key" or "value"')
|
||||
def sort_func(item):
|
||||
value = item[pos]
|
||||
if isinstance(value, string_types) and not case_sensitive:
|
||||
value = value.lower()
|
||||
return value
|
||||
|
||||
return sorted(value.items(), key=sort_func)
|
||||
|
||||
|
||||
@environmentfilter
|
||||
def do_sort(environment, value, reverse=False, case_sensitive=False,
|
||||
attribute=None):
|
||||
"""Sort an iterable. Per default it sorts ascending, if you pass it
|
||||
true as first argument it will reverse the sorting.
|
||||
|
||||
If the iterable is made of strings the third parameter can be used to
|
||||
control the case sensitiveness of the comparison which is disabled by
|
||||
default.
|
||||
|
||||
.. sourcecode:: jinja
|
||||
|
||||
{% for item in iterable|sort %}
|
||||
...
|
||||
{% endfor %}
|
||||
|
||||
It is also possible to sort by an attribute (for example to sort
|
||||
by the date of an object) by specifying the `attribute` parameter:
|
||||
|
||||
.. sourcecode:: jinja
|
||||
|
||||
{% for item in iterable|sort(attribute='date') %}
|
||||
...
|
||||
{% endfor %}
|
||||
|
||||
.. versionchanged:: 2.6
|
||||
The `attribute` parameter was added.
|
||||
"""
|
||||
if not case_sensitive:
|
||||
def sort_func(item):
|
||||
if isinstance(item, string_types):
|
||||
item = item.lower()
|
||||
return item
|
||||
else:
|
||||
sort_func = None
|
||||
if attribute is not None:
|
||||
getter = make_attrgetter(environment, attribute)
|
||||
def sort_func(item, processor=sort_func or (lambda x: x)):
|
||||
return processor(getter(item))
|
||||
return sorted(value, key=sort_func, reverse=reverse)
|
||||
|
||||
|
||||
def do_default(value, default_value=u'', boolean=False):
|
||||
"""If the value is undefined it will return the passed default value,
|
||||
otherwise the value of the variable:
|
||||
|
||||
.. sourcecode:: jinja
|
||||
|
||||
{{ my_variable|default('my_variable is not defined') }}
|
||||
|
||||
This will output the value of ``my_variable`` if the variable was
|
||||
defined, otherwise ``'my_variable is not defined'``. If you want
|
||||
to use default with variables that evaluate to false you have to
|
||||
set the second parameter to `true`:
|
||||
|
||||
.. sourcecode:: jinja
|
||||
|
||||
{{ ''|default('the string was empty', true) }}
|
||||
"""
|
||||
if isinstance(value, Undefined) or (boolean and not value):
|
||||
return default_value
|
||||
return value
|
||||
|
||||
|
||||
@evalcontextfilter
|
||||
def do_join(eval_ctx, value, d=u'', attribute=None):
|
||||
"""Return a string which is the concatenation of the strings in the
|
||||
sequence. The separator between elements is an empty string per
|
||||
default, you can define it with the optional parameter:
|
||||
|
||||
.. sourcecode:: jinja
|
||||
|
||||
{{ [1, 2, 3]|join('|') }}
|
||||
-> 1|2|3
|
||||
|
||||
{{ [1, 2, 3]|join }}
|
||||
-> 123
|
||||
|
||||
It is also possible to join certain attributes of an object:
|
||||
|
||||
.. sourcecode:: jinja
|
||||
|
||||
{{ users|join(', ', attribute='username') }}
|
||||
|
||||
.. versionadded:: 2.6
|
||||
The `attribute` parameter was added.
|
||||
"""
|
||||
if attribute is not None:
|
||||
value = imap(make_attrgetter(eval_ctx.environment, attribute), value)
|
||||
|
||||
# no automatic escaping? joining is a lot eaiser then
|
||||
if not eval_ctx.autoescape:
|
||||
return text_type(d).join(imap(text_type, value))
|
||||
|
||||
# if the delimiter doesn't have an html representation we check
|
||||
# if any of the items has. If yes we do a coercion to Markup
|
||||
if not hasattr(d, '__html__'):
|
||||
value = list(value)
|
||||
do_escape = False
|
||||
for idx, item in enumerate(value):
|
||||
if hasattr(item, '__html__'):
|
||||
do_escape = True
|
||||
else:
|
||||
value[idx] = text_type(item)
|
||||
if do_escape:
|
||||
d = escape(d)
|
||||
else:
|
||||
d = text_type(d)
|
||||
return d.join(value)
|
||||
|
||||
# no html involved, to normal joining
|
||||
return soft_unicode(d).join(imap(soft_unicode, value))
|
||||
|
||||
|
||||
def do_center(value, width=80):
|
||||
"""Centers the value in a field of a given width."""
|
||||
return text_type(value).center(width)
|
||||
|
||||
|
||||
@environmentfilter
|
||||
def do_first(environment, seq):
|
||||
"""Return the first item of a sequence."""
|
||||
try:
|
||||
return next(iter(seq))
|
||||
except StopIteration:
|
||||
return environment.undefined('No first item, sequence was empty.')
|
||||
|
||||
|
||||
@environmentfilter
|
||||
def do_last(environment, seq):
|
||||
"""Return the last item of a sequence."""
|
||||
try:
|
||||
return next(iter(reversed(seq)))
|
||||
except StopIteration:
|
||||
return environment.undefined('No last item, sequence was empty.')
|
||||
|
||||
|
||||
@environmentfilter
|
||||
def do_random(environment, seq):
|
||||
"""Return a random item from the sequence."""
|
||||
try:
|
||||
return choice(seq)
|
||||
except IndexError:
|
||||
return environment.undefined('No random item, sequence was empty.')
|
||||
|
||||
|
||||
def do_filesizeformat(value, binary=False):
|
||||
"""Format the value like a 'human-readable' file size (i.e. 13 kB,
|
||||
4.1 MB, 102 Bytes, etc). Per default decimal prefixes are used (Mega,
|
||||
Giga, etc.), if the second parameter is set to `True` the binary
|
||||
prefixes are used (Mebi, Gibi).
|
||||
"""
|
||||
bytes = float(value)
|
||||
base = binary and 1024 or 1000
|
||||
prefixes = [
|
||||
(binary and 'KiB' or 'kB'),
|
||||
(binary and 'MiB' or 'MB'),
|
||||
(binary and 'GiB' or 'GB'),
|
||||
(binary and 'TiB' or 'TB'),
|
||||
(binary and 'PiB' or 'PB'),
|
||||
(binary and 'EiB' or 'EB'),
|
||||
(binary and 'ZiB' or 'ZB'),
|
||||
(binary and 'YiB' or 'YB')
|
||||
]
|
||||
if bytes == 1:
|
||||
return '1 Byte'
|
||||
elif bytes < base:
|
||||
return '%d Bytes' % bytes
|
||||
else:
|
||||
for i, prefix in enumerate(prefixes):
|
||||
unit = base ** (i + 2)
|
||||
if bytes < unit:
|
||||
return '%.1f %s' % ((base * bytes / unit), prefix)
|
||||
return '%.1f %s' % ((base * bytes / unit), prefix)
|
||||
|
||||
|
||||
def do_pprint(value, verbose=False):
|
||||
"""Pretty print a variable. Useful for debugging.
|
||||
|
||||
With Jinja 1.2 onwards you can pass it a parameter. If this parameter
|
||||
is truthy the output will be more verbose (this requires `pretty`)
|
||||
"""
|
||||
return pformat(value, verbose=verbose)
|
||||
|
||||
|
||||
@evalcontextfilter
|
||||
def do_urlize(eval_ctx, value, trim_url_limit=None, nofollow=False):
|
||||
"""Converts URLs in plain text into clickable links.
|
||||
|
||||
If you pass the filter an additional integer it will shorten the urls
|
||||
to that number. Also a third argument exists that makes the urls
|
||||
"nofollow":
|
||||
|
||||
.. sourcecode:: jinja
|
||||
|
||||
{{ mytext|urlize(40, true) }}
|
||||
links are shortened to 40 chars and defined with rel="nofollow"
|
||||
"""
|
||||
rv = urlize(value, trim_url_limit, nofollow)
|
||||
if eval_ctx.autoescape:
|
||||
rv = Markup(rv)
|
||||
return rv
|
||||
|
||||
|
||||
def do_indent(s, width=4, indentfirst=False):
|
||||
"""Return a copy of the passed string, each line indented by
|
||||
4 spaces. The first line is not indented. If you want to
|
||||
change the number of spaces or indent the first line too
|
||||
you can pass additional parameters to the filter:
|
||||
|
||||
.. sourcecode:: jinja
|
||||
|
||||
{{ mytext|indent(2, true) }}
|
||||
indent by two spaces and indent the first line too.
|
||||
"""
|
||||
indention = u' ' * width
|
||||
rv = (u'\n' + indention).join(s.splitlines())
|
||||
if indentfirst:
|
||||
rv = indention + rv
|
||||
return rv
|
||||
|
||||
|
||||
def do_truncate(s, length=255, killwords=False, end='...'):
|
||||
"""Return a truncated copy of the string. The length is specified
|
||||
with the first parameter which defaults to ``255``. If the second
|
||||
parameter is ``true`` the filter will cut the text at length. Otherwise
|
||||
it will discard the last word. If the text was in fact
|
||||
truncated it will append an ellipsis sign (``"..."``). If you want a
|
||||
different ellipsis sign than ``"..."`` you can specify it using the
|
||||
third parameter.
|
||||
|
||||
.. sourcecode:: jinja
|
||||
|
||||
{{ "foo bar"|truncate(5) }}
|
||||
-> "foo ..."
|
||||
{{ "foo bar"|truncate(5, True) }}
|
||||
-> "foo b..."
|
||||
"""
|
||||
if len(s) <= length:
|
||||
return s
|
||||
elif killwords:
|
||||
return s[:length] + end
|
||||
words = s.split(' ')
|
||||
result = []
|
||||
m = 0
|
||||
for word in words:
|
||||
m += len(word) + 1
|
||||
if m > length:
|
||||
break
|
||||
result.append(word)
|
||||
result.append(end)
|
||||
return u' '.join(result)
|
||||
|
||||
@environmentfilter
|
||||
def do_wordwrap(environment, s, width=79, break_long_words=True,
|
||||
wrapstring=None):
|
||||
"""
|
||||
Return a copy of the string passed to the filter wrapped after
|
||||
``79`` characters. You can override this default using the first
|
||||
parameter. If you set the second parameter to `false` Jinja will not
|
||||
split words apart if they are longer than `width`. By default, the newlines
|
||||
will be the default newlines for the environment, but this can be changed
|
||||
using the wrapstring keyword argument.
|
||||
|
||||
.. versionadded:: 2.7
|
||||
Added support for the `wrapstring` parameter.
|
||||
"""
|
||||
if not wrapstring:
|
||||
wrapstring = environment.newline_sequence
|
||||
import textwrap
|
||||
return wrapstring.join(textwrap.wrap(s, width=width, expand_tabs=False,
|
||||
replace_whitespace=False,
|
||||
break_long_words=break_long_words))
|
||||
|
||||
|
||||
def do_wordcount(s):
|
||||
"""Count the words in that string."""
|
||||
return len(_word_re.findall(s))
|
||||
|
||||
|
||||
def do_int(value, default=0):
|
||||
"""Convert the value into an integer. If the
|
||||
conversion doesn't work it will return ``0``. You can
|
||||
override this default using the first parameter.
|
||||
"""
|
||||
try:
|
||||
return int(value)
|
||||
except (TypeError, ValueError):
|
||||
# this quirk is necessary so that "42.23"|int gives 42.
|
||||
try:
|
||||
return int(float(value))
|
||||
except (TypeError, ValueError):
|
||||
return default
|
||||
|
||||
|
||||
def do_float(value, default=0.0):
|
||||
"""Convert the value into a floating point number. If the
|
||||
conversion doesn't work it will return ``0.0``. You can
|
||||
override this default using the first parameter.
|
||||
"""
|
||||
try:
|
||||
return float(value)
|
||||
except (TypeError, ValueError):
|
||||
return default
|
||||
|
||||
|
||||
def do_format(value, *args, **kwargs):
|
||||
"""
|
||||
Apply python string formatting on an object:
|
||||
|
||||
.. sourcecode:: jinja
|
||||
|
||||
{{ "%s - %s"|format("Hello?", "Foo!") }}
|
||||
-> Hello? - Foo!
|
||||
"""
|
||||
if args and kwargs:
|
||||
raise FilterArgumentError('can\'t handle positional and keyword '
|
||||
'arguments at the same time')
|
||||
return soft_unicode(value) % (kwargs or args)
|
||||
|
||||
|
||||
def do_trim(value):
|
||||
"""Strip leading and trailing whitespace."""
|
||||
return soft_unicode(value).strip()
|
||||
|
||||
|
||||
def do_striptags(value):
|
||||
"""Strip SGML/XML tags and replace adjacent whitespace by one space.
|
||||
"""
|
||||
if hasattr(value, '__html__'):
|
||||
value = value.__html__()
|
||||
return Markup(text_type(value)).striptags()
|
||||
|
||||
|
||||
def do_slice(value, slices, fill_with=None):
|
||||
"""Slice an iterator and return a list of lists containing
|
||||
those items. Useful if you want to create a div containing
|
||||
three ul tags that represent columns:
|
||||
|
||||
.. sourcecode:: html+jinja
|
||||
|
||||
<div class="columwrapper">
|
||||
{%- for column in items|slice(3) %}
|
||||
<ul class="column-{{ loop.index }}">
|
||||
{%- for item in column %}
|
||||
<li>{{ item }}</li>
|
||||
{%- endfor %}
|
||||
</ul>
|
||||
{%- endfor %}
|
||||
</div>
|
||||
|
||||
If you pass it a second argument it's used to fill missing
|
||||
values on the last iteration.
|
||||
"""
|
||||
seq = list(value)
|
||||
length = len(seq)
|
||||
items_per_slice = length // slices
|
||||
slices_with_extra = length % slices
|
||||
offset = 0
|
||||
for slice_number in range(slices):
|
||||
start = offset + slice_number * items_per_slice
|
||||
if slice_number < slices_with_extra:
|
||||
offset += 1
|
||||
end = offset + (slice_number + 1) * items_per_slice
|
||||
tmp = seq[start:end]
|
||||
if fill_with is not None and slice_number >= slices_with_extra:
|
||||
tmp.append(fill_with)
|
||||
yield tmp
|
||||
|
||||
|
||||
def do_batch(value, linecount, fill_with=None):
|
||||
"""
|
||||
A filter that batches items. It works pretty much like `slice`
|
||||
just the other way round. It returns a list of lists with the
|
||||
given number of items. If you provide a second parameter this
|
||||
is used to fill up missing items. See this example:
|
||||
|
||||
.. sourcecode:: html+jinja
|
||||
|
||||
<table>
|
||||
{%- for row in items|batch(3, ' ') %}
|
||||
<tr>
|
||||
{%- for column in row %}
|
||||
<td>{{ column }}</td>
|
||||
{%- endfor %}
|
||||
</tr>
|
||||
{%- endfor %}
|
||||
</table>
|
||||
"""
|
||||
result = []
|
||||
tmp = []
|
||||
for item in value:
|
||||
if len(tmp) == linecount:
|
||||
yield tmp
|
||||
tmp = []
|
||||
tmp.append(item)
|
||||
if tmp:
|
||||
if fill_with is not None and len(tmp) < linecount:
|
||||
tmp += [fill_with] * (linecount - len(tmp))
|
||||
yield tmp
|
||||
|
||||
|
||||
def do_round(value, precision=0, method='common'):
|
||||
"""Round the number to a given precision. The first
|
||||
parameter specifies the precision (default is ``0``), the
|
||||
second the rounding method:
|
||||
|
||||
- ``'common'`` rounds either up or down
|
||||
- ``'ceil'`` always rounds up
|
||||
- ``'floor'`` always rounds down
|
||||
|
||||
If you don't specify a method ``'common'`` is used.
|
||||
|
||||
.. sourcecode:: jinja
|
||||
|
||||
{{ 42.55|round }}
|
||||
-> 43.0
|
||||
{{ 42.55|round(1, 'floor') }}
|
||||
-> 42.5
|
||||
|
||||
Note that even if rounded to 0 precision, a float is returned. If
|
||||
you need a real integer, pipe it through `int`:
|
||||
|
||||
.. sourcecode:: jinja
|
||||
|
||||
{{ 42.55|round|int }}
|
||||
-> 43
|
||||
"""
|
||||
if not method in ('common', 'ceil', 'floor'):
|
||||
raise FilterArgumentError('method must be common, ceil or floor')
|
||||
if method == 'common':
|
||||
return round(value, precision)
|
||||
func = getattr(math, method)
|
||||
return func(value * (10 ** precision)) / (10 ** precision)
|
||||
|
||||
|
||||
@environmentfilter
|
||||
def do_groupby(environment, value, attribute):
|
||||
"""Group a sequence of objects by a common attribute.
|
||||
|
||||
If you for example have a list of dicts or objects that represent persons
|
||||
with `gender`, `first_name` and `last_name` attributes and you want to
|
||||
group all users by genders you can do something like the following
|
||||
snippet:
|
||||
|
||||
.. sourcecode:: html+jinja
|
||||
|
||||
<ul>
|
||||
{% for group in persons|groupby('gender') %}
|
||||
<li>{{ group.grouper }}<ul>
|
||||
{% for person in group.list %}
|
||||
<li>{{ person.first_name }} {{ person.last_name }}</li>
|
||||
{% endfor %}</ul></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
Additionally it's possible to use tuple unpacking for the grouper and
|
||||
list:
|
||||
|
||||
.. sourcecode:: html+jinja
|
||||
|
||||
<ul>
|
||||
{% for grouper, list in persons|groupby('gender') %}
|
||||
...
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
As you can see the item we're grouping by is stored in the `grouper`
|
||||
attribute and the `list` contains all the objects that have this grouper
|
||||
in common.
|
||||
|
||||
.. versionchanged:: 2.6
|
||||
It's now possible to use dotted notation to group by the child
|
||||
attribute of another attribute.
|
||||
"""
|
||||
expr = make_attrgetter(environment, attribute)
|
||||
return sorted(map(_GroupTuple, groupby(sorted(value, key=expr), expr)))
|
||||
|
||||
|
||||
class _GroupTuple(tuple):
|
||||
__slots__ = ()
|
||||
grouper = property(itemgetter(0))
|
||||
list = property(itemgetter(1))
|
||||
|
||||
def __new__(cls, xxx_todo_changeme):
|
||||
(key, value) = xxx_todo_changeme
|
||||
return tuple.__new__(cls, (key, list(value)))
|
||||
|
||||
|
||||
@environmentfilter
|
||||
def do_sum(environment, iterable, attribute=None, start=0):
|
||||
"""Returns the sum of a sequence of numbers plus the value of parameter
|
||||
'start' (which defaults to 0). When the sequence is empty it returns
|
||||
start.
|
||||
|
||||
It is also possible to sum up only certain attributes:
|
||||
|
||||
.. sourcecode:: jinja
|
||||
|
||||
Total: {{ items|sum(attribute='price') }}
|
||||
|
||||
.. versionchanged:: 2.6
|
||||
The `attribute` parameter was added to allow suming up over
|
||||
attributes. Also the `start` parameter was moved on to the right.
|
||||
"""
|
||||
if attribute is not None:
|
||||
iterable = imap(make_attrgetter(environment, attribute), iterable)
|
||||
return sum(iterable, start)
|
||||
|
||||
|
||||
def do_list(value):
|
||||
"""Convert the value into a list. If it was a string the returned list
|
||||
will be a list of characters.
|
||||
"""
|
||||
return list(value)
|
||||
|
||||
|
||||
def do_mark_safe(value):
|
||||
"""Mark the value as safe which means that in an environment with automatic
|
||||
escaping enabled this variable will not be escaped.
|
||||
"""
|
||||
return Markup(value)
|
||||
|
||||
|
||||
def do_mark_unsafe(value):
|
||||
"""Mark a value as unsafe. This is the reverse operation for :func:`safe`."""
|
||||
return text_type(value)
|
||||
|
||||
|
||||
def do_reverse(value):
|
||||
"""Reverse the object or return an iterator the iterates over it the other
|
||||
way round.
|
||||
"""
|
||||
if isinstance(value, string_types):
|
||||
return value[::-1]
|
||||
try:
|
||||
return reversed(value)
|
||||
except TypeError:
|
||||
try:
|
||||
rv = list(value)
|
||||
rv.reverse()
|
||||
return rv
|
||||
except TypeError:
|
||||
raise FilterArgumentError('argument must be iterable')
|
||||
|
||||
|
||||
@environmentfilter
|
||||
def do_attr(environment, obj, name):
|
||||
"""Get an attribute of an object. ``foo|attr("bar")`` works like
|
||||
``foo["bar"]`` just that always an attribute is returned and items are not
|
||||
looked up.
|
||||
|
||||
See :ref:`Notes on subscriptions <notes-on-subscriptions>` for more details.
|
||||
"""
|
||||
try:
|
||||
name = str(name)
|
||||
except UnicodeError:
|
||||
pass
|
||||
else:
|
||||
try:
|
||||
value = getattr(obj, name)
|
||||
except AttributeError:
|
||||
pass
|
||||
else:
|
||||
if environment.sandboxed and not \
|
||||
environment.is_safe_attribute(obj, name, value):
|
||||
return environment.unsafe_undefined(obj, name)
|
||||
return value
|
||||
return environment.undefined(obj=obj, name=name)
|
||||
|
||||
|
||||
@contextfilter
|
||||
def do_map(*args, **kwargs):
|
||||
"""Applies a filter on a sequence of objects or looks up an attribute.
|
||||
This is useful when dealing with lists of objects but you are really
|
||||
only interested in a certain value of it.
|
||||
|
||||
The basic usage is mapping on an attribute. Imagine you have a list
|
||||
of users but you are only interested in a list of usernames:
|
||||
|
||||
.. sourcecode:: jinja
|
||||
|
||||
Users on this page: {{ users|map(attribute='username')|join(', ') }}
|
||||
|
||||
Alternatively you can let it invoke a filter by passing the name of the
|
||||
filter and the arguments afterwards. A good example would be applying a
|
||||
text conversion filter on a sequence:
|
||||
|
||||
.. sourcecode:: jinja
|
||||
|
||||
Users on this page: {{ titles|map('lower')|join(', ') }}
|
||||
|
||||
.. versionadded:: 2.7
|
||||
"""
|
||||
context = args[0]
|
||||
seq = args[1]
|
||||
|
||||
if len(args) == 2 and 'attribute' in kwargs:
|
||||
attribute = kwargs.pop('attribute')
|
||||
if kwargs:
|
||||
raise FilterArgumentError('Unexpected keyword argument %r' %
|
||||
next(iter(kwargs)))
|
||||
func = make_attrgetter(context.environment, attribute)
|
||||
else:
|
||||
try:
|
||||
name = args[2]
|
||||
args = args[3:]
|
||||
except LookupError:
|
||||
raise FilterArgumentError('map requires a filter argument')
|
||||
func = lambda item: context.environment.call_filter(
|
||||
name, item, args, kwargs, context=context)
|
||||
|
||||
if seq:
|
||||
for item in seq:
|
||||
yield func(item)
|
||||
|
||||
|
||||
@contextfilter
|
||||
def do_select(*args, **kwargs):
|
||||
"""Filters a sequence of objects by appying a test to either the object
|
||||
or the attribute and only selecting the ones with the test succeeding.
|
||||
|
||||
Example usage:
|
||||
|
||||
.. sourcecode:: jinja
|
||||
|
||||
{{ numbers|select("odd") }}
|
||||
|
||||
.. versionadded:: 2.7
|
||||
"""
|
||||
return _select_or_reject(args, kwargs, lambda x: x, False)
|
||||
|
||||
|
||||
@contextfilter
|
||||
def do_reject(*args, **kwargs):
|
||||
"""Filters a sequence of objects by appying a test to either the object
|
||||
or the attribute and rejecting the ones with the test succeeding.
|
||||
|
||||
Example usage:
|
||||
|
||||
.. sourcecode:: jinja
|
||||
|
||||
{{ numbers|reject("odd") }}
|
||||
|
||||
.. versionadded:: 2.7
|
||||
"""
|
||||
return _select_or_reject(args, kwargs, lambda x: not x, False)
|
||||
|
||||
|
||||
@contextfilter
|
||||
def do_selectattr(*args, **kwargs):
|
||||
"""Filters a sequence of objects by appying a test to either the object
|
||||
or the attribute and only selecting the ones with the test succeeding.
|
||||
|
||||
Example usage:
|
||||
|
||||
.. sourcecode:: jinja
|
||||
|
||||
{{ users|selectattr("is_active") }}
|
||||
{{ users|selectattr("email", "none") }}
|
||||
|
||||
.. versionadded:: 2.7
|
||||
"""
|
||||
return _select_or_reject(args, kwargs, lambda x: x, True)
|
||||
|
||||
|
||||
@contextfilter
|
||||
def do_rejectattr(*args, **kwargs):
|
||||
"""Filters a sequence of objects by appying a test to either the object
|
||||
or the attribute and rejecting the ones with the test succeeding.
|
||||
|
||||
.. sourcecode:: jinja
|
||||
|
||||
{{ users|rejectattr("is_active") }}
|
||||
{{ users|rejectattr("email", "none") }}
|
||||
|
||||
.. versionadded:: 2.7
|
||||
"""
|
||||
return _select_or_reject(args, kwargs, lambda x: not x, True)
|
||||
|
||||
|
||||
def _select_or_reject(args, kwargs, modfunc, lookup_attr):
|
||||
context = args[0]
|
||||
seq = args[1]
|
||||
if lookup_attr:
|
||||
try:
|
||||
attr = args[2]
|
||||
except LookupError:
|
||||
raise FilterArgumentError('Missing parameter for attribute name')
|
||||
transfunc = make_attrgetter(context.environment, attr)
|
||||
off = 1
|
||||
else:
|
||||
off = 0
|
||||
transfunc = lambda x: x
|
||||
|
||||
try:
|
||||
name = args[2 + off]
|
||||
args = args[3 + off:]
|
||||
func = lambda item: context.environment.call_test(
|
||||
name, item, args, kwargs)
|
||||
except LookupError:
|
||||
func = bool
|
||||
|
||||
if seq:
|
||||
for item in seq:
|
||||
if modfunc(func(transfunc(item))):
|
||||
yield item
|
||||
|
||||
|
||||
FILTERS = {
|
||||
'attr': do_attr,
|
||||
'replace': do_replace,
|
||||
'upper': do_upper,
|
||||
'lower': do_lower,
|
||||
'escape': escape,
|
||||
'e': escape,
|
||||
'forceescape': do_forceescape,
|
||||
'capitalize': do_capitalize,
|
||||
'title': do_title,
|
||||
'default': do_default,
|
||||
'd': do_default,
|
||||
'join': do_join,
|
||||
'count': len,
|
||||
'dictsort': do_dictsort,
|
||||
'sort': do_sort,
|
||||
'length': len,
|
||||
'reverse': do_reverse,
|
||||
'center': do_center,
|
||||
'indent': do_indent,
|
||||
'title': do_title,
|
||||
'capitalize': do_capitalize,
|
||||
'first': do_first,
|
||||
'last': do_last,
|
||||
'map': do_map,
|
||||
'random': do_random,
|
||||
'reject': do_reject,
|
||||
'rejectattr': do_rejectattr,
|
||||
'filesizeformat': do_filesizeformat,
|
||||
'pprint': do_pprint,
|
||||
'truncate': do_truncate,
|
||||
'wordwrap': do_wordwrap,
|
||||
'wordcount': do_wordcount,
|
||||
'int': do_int,
|
||||
'float': do_float,
|
||||
'string': soft_unicode,
|
||||
'list': do_list,
|
||||
'urlize': do_urlize,
|
||||
'format': do_format,
|
||||
'trim': do_trim,
|
||||
'striptags': do_striptags,
|
||||
'select': do_select,
|
||||
'selectattr': do_selectattr,
|
||||
'slice': do_slice,
|
||||
'batch': do_batch,
|
||||
'sum': do_sum,
|
||||
'abs': abs,
|
||||
'round': do_round,
|
||||
'groupby': do_groupby,
|
||||
'safe': do_mark_safe,
|
||||
'xmlattr': do_xmlattr,
|
||||
'urlencode': do_urlencode
|
||||
}
|
||||
733
3rdparty/jinja2/lexer.py
vendored
Normal file
733
3rdparty/jinja2/lexer.py
vendored
Normal file
@@ -0,0 +1,733 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
jinja2.lexer
|
||||
~~~~~~~~~~~~
|
||||
|
||||
This module implements a Jinja / Python combination lexer. The
|
||||
`Lexer` class provided by this module is used to do some preprocessing
|
||||
for Jinja.
|
||||
|
||||
On the one hand it filters out invalid operators like the bitshift
|
||||
operators we don't allow in templates. On the other hand it separates
|
||||
template code and python code in expressions.
|
||||
|
||||
:copyright: (c) 2010 by the Jinja Team.
|
||||
:license: BSD, see LICENSE for more details.
|
||||
"""
|
||||
import re
|
||||
|
||||
from operator import itemgetter
|
||||
from collections import deque
|
||||
from jinja2.exceptions import TemplateSyntaxError
|
||||
from jinja2.utils import LRUCache
|
||||
from jinja2._compat import next, iteritems, implements_iterator, text_type, \
|
||||
intern
|
||||
|
||||
|
||||
# cache for the lexers. Exists in order to be able to have multiple
|
||||
# environments with the same lexer
|
||||
_lexer_cache = LRUCache(50)
|
||||
|
||||
# static regular expressions
|
||||
whitespace_re = re.compile(r'\s+', re.U)
|
||||
string_re = re.compile(r"('([^'\\]*(?:\\.[^'\\]*)*)'"
|
||||
r'|"([^"\\]*(?:\\.[^"\\]*)*)")', re.S)
|
||||
integer_re = re.compile(r'\d+')
|
||||
|
||||
# we use the unicode identifier rule if this python version is able
|
||||
# to handle unicode identifiers, otherwise the standard ASCII one.
|
||||
try:
|
||||
compile('föö', '<unknown>', 'eval')
|
||||
except SyntaxError:
|
||||
name_re = re.compile(r'\b[a-zA-Z_][a-zA-Z0-9_]*\b')
|
||||
else:
|
||||
from jinja2 import _stringdefs
|
||||
name_re = re.compile(r'[%s][%s]*' % (_stringdefs.xid_start,
|
||||
_stringdefs.xid_continue))
|
||||
|
||||
float_re = re.compile(r'(?<!\.)\d+\.\d+')
|
||||
newline_re = re.compile(r'(\r\n|\r|\n)')
|
||||
|
||||
# internal the tokens and keep references to them
|
||||
TOKEN_ADD = intern('add')
|
||||
TOKEN_ASSIGN = intern('assign')
|
||||
TOKEN_COLON = intern('colon')
|
||||
TOKEN_COMMA = intern('comma')
|
||||
TOKEN_DIV = intern('div')
|
||||
TOKEN_DOT = intern('dot')
|
||||
TOKEN_EQ = intern('eq')
|
||||
TOKEN_FLOORDIV = intern('floordiv')
|
||||
TOKEN_GT = intern('gt')
|
||||
TOKEN_GTEQ = intern('gteq')
|
||||
TOKEN_LBRACE = intern('lbrace')
|
||||
TOKEN_LBRACKET = intern('lbracket')
|
||||
TOKEN_LPAREN = intern('lparen')
|
||||
TOKEN_LT = intern('lt')
|
||||
TOKEN_LTEQ = intern('lteq')
|
||||
TOKEN_MOD = intern('mod')
|
||||
TOKEN_MUL = intern('mul')
|
||||
TOKEN_NE = intern('ne')
|
||||
TOKEN_PIPE = intern('pipe')
|
||||
TOKEN_POW = intern('pow')
|
||||
TOKEN_RBRACE = intern('rbrace')
|
||||
TOKEN_RBRACKET = intern('rbracket')
|
||||
TOKEN_RPAREN = intern('rparen')
|
||||
TOKEN_SEMICOLON = intern('semicolon')
|
||||
TOKEN_SUB = intern('sub')
|
||||
TOKEN_TILDE = intern('tilde')
|
||||
TOKEN_WHITESPACE = intern('whitespace')
|
||||
TOKEN_FLOAT = intern('float')
|
||||
TOKEN_INTEGER = intern('integer')
|
||||
TOKEN_NAME = intern('name')
|
||||
TOKEN_STRING = intern('string')
|
||||
TOKEN_OPERATOR = intern('operator')
|
||||
TOKEN_BLOCK_BEGIN = intern('block_begin')
|
||||
TOKEN_BLOCK_END = intern('block_end')
|
||||
TOKEN_VARIABLE_BEGIN = intern('variable_begin')
|
||||
TOKEN_VARIABLE_END = intern('variable_end')
|
||||
TOKEN_RAW_BEGIN = intern('raw_begin')
|
||||
TOKEN_RAW_END = intern('raw_end')
|
||||
TOKEN_COMMENT_BEGIN = intern('comment_begin')
|
||||
TOKEN_COMMENT_END = intern('comment_end')
|
||||
TOKEN_COMMENT = intern('comment')
|
||||
TOKEN_LINESTATEMENT_BEGIN = intern('linestatement_begin')
|
||||
TOKEN_LINESTATEMENT_END = intern('linestatement_end')
|
||||
TOKEN_LINECOMMENT_BEGIN = intern('linecomment_begin')
|
||||
TOKEN_LINECOMMENT_END = intern('linecomment_end')
|
||||
TOKEN_LINECOMMENT = intern('linecomment')
|
||||
TOKEN_DATA = intern('data')
|
||||
TOKEN_INITIAL = intern('initial')
|
||||
TOKEN_EOF = intern('eof')
|
||||
|
||||
# bind operators to token types
|
||||
operators = {
|
||||
'+': TOKEN_ADD,
|
||||
'-': TOKEN_SUB,
|
||||
'/': TOKEN_DIV,
|
||||
'//': TOKEN_FLOORDIV,
|
||||
'*': TOKEN_MUL,
|
||||
'%': TOKEN_MOD,
|
||||
'**': TOKEN_POW,
|
||||
'~': TOKEN_TILDE,
|
||||
'[': TOKEN_LBRACKET,
|
||||
']': TOKEN_RBRACKET,
|
||||
'(': TOKEN_LPAREN,
|
||||
')': TOKEN_RPAREN,
|
||||
'{': TOKEN_LBRACE,
|
||||
'}': TOKEN_RBRACE,
|
||||
'==': TOKEN_EQ,
|
||||
'!=': TOKEN_NE,
|
||||
'>': TOKEN_GT,
|
||||
'>=': TOKEN_GTEQ,
|
||||
'<': TOKEN_LT,
|
||||
'<=': TOKEN_LTEQ,
|
||||
'=': TOKEN_ASSIGN,
|
||||
'.': TOKEN_DOT,
|
||||
':': TOKEN_COLON,
|
||||
'|': TOKEN_PIPE,
|
||||
',': TOKEN_COMMA,
|
||||
';': TOKEN_SEMICOLON
|
||||
}
|
||||
|
||||
reverse_operators = dict([(v, k) for k, v in iteritems(operators)])
|
||||
assert len(operators) == len(reverse_operators), 'operators dropped'
|
||||
operator_re = re.compile('(%s)' % '|'.join(re.escape(x) for x in
|
||||
sorted(operators, key=lambda x: -len(x))))
|
||||
|
||||
ignored_tokens = frozenset([TOKEN_COMMENT_BEGIN, TOKEN_COMMENT,
|
||||
TOKEN_COMMENT_END, TOKEN_WHITESPACE,
|
||||
TOKEN_WHITESPACE, TOKEN_LINECOMMENT_BEGIN,
|
||||
TOKEN_LINECOMMENT_END, TOKEN_LINECOMMENT])
|
||||
ignore_if_empty = frozenset([TOKEN_WHITESPACE, TOKEN_DATA,
|
||||
TOKEN_COMMENT, TOKEN_LINECOMMENT])
|
||||
|
||||
|
||||
def _describe_token_type(token_type):
|
||||
if token_type in reverse_operators:
|
||||
return reverse_operators[token_type]
|
||||
return {
|
||||
TOKEN_COMMENT_BEGIN: 'begin of comment',
|
||||
TOKEN_COMMENT_END: 'end of comment',
|
||||
TOKEN_COMMENT: 'comment',
|
||||
TOKEN_LINECOMMENT: 'comment',
|
||||
TOKEN_BLOCK_BEGIN: 'begin of statement block',
|
||||
TOKEN_BLOCK_END: 'end of statement block',
|
||||
TOKEN_VARIABLE_BEGIN: 'begin of print statement',
|
||||
TOKEN_VARIABLE_END: 'end of print statement',
|
||||
TOKEN_LINESTATEMENT_BEGIN: 'begin of line statement',
|
||||
TOKEN_LINESTATEMENT_END: 'end of line statement',
|
||||
TOKEN_DATA: 'template data / text',
|
||||
TOKEN_EOF: 'end of template'
|
||||
}.get(token_type, token_type)
|
||||
|
||||
|
||||
def describe_token(token):
|
||||
"""Returns a description of the token."""
|
||||
if token.type == 'name':
|
||||
return token.value
|
||||
return _describe_token_type(token.type)
|
||||
|
||||
|
||||
def describe_token_expr(expr):
|
||||
"""Like `describe_token` but for token expressions."""
|
||||
if ':' in expr:
|
||||
type, value = expr.split(':', 1)
|
||||
if type == 'name':
|
||||
return value
|
||||
else:
|
||||
type = expr
|
||||
return _describe_token_type(type)
|
||||
|
||||
|
||||
def count_newlines(value):
|
||||
"""Count the number of newline characters in the string. This is
|
||||
useful for extensions that filter a stream.
|
||||
"""
|
||||
return len(newline_re.findall(value))
|
||||
|
||||
|
||||
def compile_rules(environment):
|
||||
"""Compiles all the rules from the environment into a list of rules."""
|
||||
e = re.escape
|
||||
rules = [
|
||||
(len(environment.comment_start_string), 'comment',
|
||||
e(environment.comment_start_string)),
|
||||
(len(environment.block_start_string), 'block',
|
||||
e(environment.block_start_string)),
|
||||
(len(environment.variable_start_string), 'variable',
|
||||
e(environment.variable_start_string))
|
||||
]
|
||||
|
||||
if environment.line_statement_prefix is not None:
|
||||
rules.append((len(environment.line_statement_prefix), 'linestatement',
|
||||
r'^[ \t\v]*' + e(environment.line_statement_prefix)))
|
||||
if environment.line_comment_prefix is not None:
|
||||
rules.append((len(environment.line_comment_prefix), 'linecomment',
|
||||
r'(?:^|(?<=\S))[^\S\r\n]*' +
|
||||
e(environment.line_comment_prefix)))
|
||||
|
||||
return [x[1:] for x in sorted(rules, reverse=True)]
|
||||
|
||||
|
||||
class Failure(object):
|
||||
"""Class that raises a `TemplateSyntaxError` if called.
|
||||
Used by the `Lexer` to specify known errors.
|
||||
"""
|
||||
|
||||
def __init__(self, message, cls=TemplateSyntaxError):
|
||||
self.message = message
|
||||
self.error_class = cls
|
||||
|
||||
def __call__(self, lineno, filename):
|
||||
raise self.error_class(self.message, lineno, filename)
|
||||
|
||||
|
||||
class Token(tuple):
|
||||
"""Token class."""
|
||||
__slots__ = ()
|
||||
lineno, type, value = (property(itemgetter(x)) for x in range(3))
|
||||
|
||||
def __new__(cls, lineno, type, value):
|
||||
return tuple.__new__(cls, (lineno, intern(str(type)), value))
|
||||
|
||||
def __str__(self):
|
||||
if self.type in reverse_operators:
|
||||
return reverse_operators[self.type]
|
||||
elif self.type == 'name':
|
||||
return self.value
|
||||
return self.type
|
||||
|
||||
def test(self, expr):
|
||||
"""Test a token against a token expression. This can either be a
|
||||
token type or ``'token_type:token_value'``. This can only test
|
||||
against string values and types.
|
||||
"""
|
||||
# here we do a regular string equality check as test_any is usually
|
||||
# passed an iterable of not interned strings.
|
||||
if self.type == expr:
|
||||
return True
|
||||
elif ':' in expr:
|
||||
return expr.split(':', 1) == [self.type, self.value]
|
||||
return False
|
||||
|
||||
def test_any(self, *iterable):
|
||||
"""Test against multiple token expressions."""
|
||||
for expr in iterable:
|
||||
if self.test(expr):
|
||||
return True
|
||||
return False
|
||||
|
||||
def __repr__(self):
|
||||
return 'Token(%r, %r, %r)' % (
|
||||
self.lineno,
|
||||
self.type,
|
||||
self.value
|
||||
)
|
||||
|
||||
|
||||
@implements_iterator
|
||||
class TokenStreamIterator(object):
|
||||
"""The iterator for tokenstreams. Iterate over the stream
|
||||
until the eof token is reached.
|
||||
"""
|
||||
|
||||
def __init__(self, stream):
|
||||
self.stream = stream
|
||||
|
||||
def __iter__(self):
|
||||
return self
|
||||
|
||||
def __next__(self):
|
||||
token = self.stream.current
|
||||
if token.type is TOKEN_EOF:
|
||||
self.stream.close()
|
||||
raise StopIteration()
|
||||
next(self.stream)
|
||||
return token
|
||||
|
||||
|
||||
@implements_iterator
|
||||
class TokenStream(object):
|
||||
"""A token stream is an iterable that yields :class:`Token`\s. The
|
||||
parser however does not iterate over it but calls :meth:`next` to go
|
||||
one token ahead. The current active token is stored as :attr:`current`.
|
||||
"""
|
||||
|
||||
def __init__(self, generator, name, filename):
|
||||
self._iter = iter(generator)
|
||||
self._pushed = deque()
|
||||
self.name = name
|
||||
self.filename = filename
|
||||
self.closed = False
|
||||
self.current = Token(1, TOKEN_INITIAL, '')
|
||||
next(self)
|
||||
|
||||
def __iter__(self):
|
||||
return TokenStreamIterator(self)
|
||||
|
||||
def __bool__(self):
|
||||
return bool(self._pushed) or self.current.type is not TOKEN_EOF
|
||||
__nonzero__ = __bool__ # py2
|
||||
|
||||
eos = property(lambda x: not x, doc="Are we at the end of the stream?")
|
||||
|
||||
def push(self, token):
|
||||
"""Push a token back to the stream."""
|
||||
self._pushed.append(token)
|
||||
|
||||
def look(self):
|
||||
"""Look at the next token."""
|
||||
old_token = next(self)
|
||||
result = self.current
|
||||
self.push(result)
|
||||
self.current = old_token
|
||||
return result
|
||||
|
||||
def skip(self, n=1):
|
||||
"""Got n tokens ahead."""
|
||||
for x in range(n):
|
||||
next(self)
|
||||
|
||||
def next_if(self, expr):
|
||||
"""Perform the token test and return the token if it matched.
|
||||
Otherwise the return value is `None`.
|
||||
"""
|
||||
if self.current.test(expr):
|
||||
return next(self)
|
||||
|
||||
def skip_if(self, expr):
|
||||
"""Like :meth:`next_if` but only returns `True` or `False`."""
|
||||
return self.next_if(expr) is not None
|
||||
|
||||
def __next__(self):
|
||||
"""Go one token ahead and return the old one"""
|
||||
rv = self.current
|
||||
if self._pushed:
|
||||
self.current = self._pushed.popleft()
|
||||
elif self.current.type is not TOKEN_EOF:
|
||||
try:
|
||||
self.current = next(self._iter)
|
||||
except StopIteration:
|
||||
self.close()
|
||||
return rv
|
||||
|
||||
def close(self):
|
||||
"""Close the stream."""
|
||||
self.current = Token(self.current.lineno, TOKEN_EOF, '')
|
||||
self._iter = None
|
||||
self.closed = True
|
||||
|
||||
def expect(self, expr):
|
||||
"""Expect a given token type and return it. This accepts the same
|
||||
argument as :meth:`jinja2.lexer.Token.test`.
|
||||
"""
|
||||
if not self.current.test(expr):
|
||||
expr = describe_token_expr(expr)
|
||||
if self.current.type is TOKEN_EOF:
|
||||
raise TemplateSyntaxError('unexpected end of template, '
|
||||
'expected %r.' % expr,
|
||||
self.current.lineno,
|
||||
self.name, self.filename)
|
||||
raise TemplateSyntaxError("expected token %r, got %r" %
|
||||
(expr, describe_token(self.current)),
|
||||
self.current.lineno,
|
||||
self.name, self.filename)
|
||||
try:
|
||||
return self.current
|
||||
finally:
|
||||
next(self)
|
||||
|
||||
|
||||
def get_lexer(environment):
|
||||
"""Return a lexer which is probably cached."""
|
||||
key = (environment.block_start_string,
|
||||
environment.block_end_string,
|
||||
environment.variable_start_string,
|
||||
environment.variable_end_string,
|
||||
environment.comment_start_string,
|
||||
environment.comment_end_string,
|
||||
environment.line_statement_prefix,
|
||||
environment.line_comment_prefix,
|
||||
environment.trim_blocks,
|
||||
environment.lstrip_blocks,
|
||||
environment.newline_sequence,
|
||||
environment.keep_trailing_newline)
|
||||
lexer = _lexer_cache.get(key)
|
||||
if lexer is None:
|
||||
lexer = Lexer(environment)
|
||||
_lexer_cache[key] = lexer
|
||||
return lexer
|
||||
|
||||
|
||||
class Lexer(object):
|
||||
"""Class that implements a lexer for a given environment. Automatically
|
||||
created by the environment class, usually you don't have to do that.
|
||||
|
||||
Note that the lexer is not automatically bound to an environment.
|
||||
Multiple environments can share the same lexer.
|
||||
"""
|
||||
|
||||
def __init__(self, environment):
|
||||
# shortcuts
|
||||
c = lambda x: re.compile(x, re.M | re.S)
|
||||
e = re.escape
|
||||
|
||||
# lexing rules for tags
|
||||
tag_rules = [
|
||||
(whitespace_re, TOKEN_WHITESPACE, None),
|
||||
(float_re, TOKEN_FLOAT, None),
|
||||
(integer_re, TOKEN_INTEGER, None),
|
||||
(name_re, TOKEN_NAME, None),
|
||||
(string_re, TOKEN_STRING, None),
|
||||
(operator_re, TOKEN_OPERATOR, None)
|
||||
]
|
||||
|
||||
# assemble the root lexing rule. because "|" is ungreedy
|
||||
# we have to sort by length so that the lexer continues working
|
||||
# as expected when we have parsing rules like <% for block and
|
||||
# <%= for variables. (if someone wants asp like syntax)
|
||||
# variables are just part of the rules if variable processing
|
||||
# is required.
|
||||
root_tag_rules = compile_rules(environment)
|
||||
|
||||
# block suffix if trimming is enabled
|
||||
block_suffix_re = environment.trim_blocks and '\\n?' or ''
|
||||
|
||||
# strip leading spaces if lstrip_blocks is enabled
|
||||
prefix_re = {}
|
||||
if environment.lstrip_blocks:
|
||||
# use '{%+' to manually disable lstrip_blocks behavior
|
||||
no_lstrip_re = e('+')
|
||||
# detect overlap between block and variable or comment strings
|
||||
block_diff = c(r'^%s(.*)' % e(environment.block_start_string))
|
||||
# make sure we don't mistake a block for a variable or a comment
|
||||
m = block_diff.match(environment.comment_start_string)
|
||||
no_lstrip_re += m and r'|%s' % e(m.group(1)) or ''
|
||||
m = block_diff.match(environment.variable_start_string)
|
||||
no_lstrip_re += m and r'|%s' % e(m.group(1)) or ''
|
||||
|
||||
# detect overlap between comment and variable strings
|
||||
comment_diff = c(r'^%s(.*)' % e(environment.comment_start_string))
|
||||
m = comment_diff.match(environment.variable_start_string)
|
||||
no_variable_re = m and r'(?!%s)' % e(m.group(1)) or ''
|
||||
|
||||
lstrip_re = r'^[ \t]*'
|
||||
block_prefix_re = r'%s%s(?!%s)|%s\+?' % (
|
||||
lstrip_re,
|
||||
e(environment.block_start_string),
|
||||
no_lstrip_re,
|
||||
e(environment.block_start_string),
|
||||
)
|
||||
comment_prefix_re = r'%s%s%s|%s\+?' % (
|
||||
lstrip_re,
|
||||
e(environment.comment_start_string),
|
||||
no_variable_re,
|
||||
e(environment.comment_start_string),
|
||||
)
|
||||
prefix_re['block'] = block_prefix_re
|
||||
prefix_re['comment'] = comment_prefix_re
|
||||
else:
|
||||
block_prefix_re = '%s' % e(environment.block_start_string)
|
||||
|
||||
self.newline_sequence = environment.newline_sequence
|
||||
self.keep_trailing_newline = environment.keep_trailing_newline
|
||||
|
||||
# global lexing rules
|
||||
self.rules = {
|
||||
'root': [
|
||||
# directives
|
||||
(c('(.*?)(?:%s)' % '|'.join(
|
||||
[r'(?P<raw_begin>(?:\s*%s\-|%s)\s*raw\s*(?:\-%s\s*|%s))' % (
|
||||
e(environment.block_start_string),
|
||||
block_prefix_re,
|
||||
e(environment.block_end_string),
|
||||
e(environment.block_end_string)
|
||||
)] + [
|
||||
r'(?P<%s_begin>\s*%s\-|%s)' % (n, r, prefix_re.get(n,r))
|
||||
for n, r in root_tag_rules
|
||||
])), (TOKEN_DATA, '#bygroup'), '#bygroup'),
|
||||
# data
|
||||
(c('.+'), TOKEN_DATA, None)
|
||||
],
|
||||
# comments
|
||||
TOKEN_COMMENT_BEGIN: [
|
||||
(c(r'(.*?)((?:\-%s\s*|%s)%s)' % (
|
||||
e(environment.comment_end_string),
|
||||
e(environment.comment_end_string),
|
||||
block_suffix_re
|
||||
)), (TOKEN_COMMENT, TOKEN_COMMENT_END), '#pop'),
|
||||
(c('(.)'), (Failure('Missing end of comment tag'),), None)
|
||||
],
|
||||
# blocks
|
||||
TOKEN_BLOCK_BEGIN: [
|
||||
(c('(?:\-%s\s*|%s)%s' % (
|
||||
e(environment.block_end_string),
|
||||
e(environment.block_end_string),
|
||||
block_suffix_re
|
||||
)), TOKEN_BLOCK_END, '#pop'),
|
||||
] + tag_rules,
|
||||
# variables
|
||||
TOKEN_VARIABLE_BEGIN: [
|
||||
(c('\-%s\s*|%s' % (
|
||||
e(environment.variable_end_string),
|
||||
e(environment.variable_end_string)
|
||||
)), TOKEN_VARIABLE_END, '#pop')
|
||||
] + tag_rules,
|
||||
# raw block
|
||||
TOKEN_RAW_BEGIN: [
|
||||
(c('(.*?)((?:\s*%s\-|%s)\s*endraw\s*(?:\-%s\s*|%s%s))' % (
|
||||
e(environment.block_start_string),
|
||||
block_prefix_re,
|
||||
e(environment.block_end_string),
|
||||
e(environment.block_end_string),
|
||||
block_suffix_re
|
||||
)), (TOKEN_DATA, TOKEN_RAW_END), '#pop'),
|
||||
(c('(.)'), (Failure('Missing end of raw directive'),), None)
|
||||
],
|
||||
# line statements
|
||||
TOKEN_LINESTATEMENT_BEGIN: [
|
||||
(c(r'\s*(\n|$)'), TOKEN_LINESTATEMENT_END, '#pop')
|
||||
] + tag_rules,
|
||||
# line comments
|
||||
TOKEN_LINECOMMENT_BEGIN: [
|
||||
(c(r'(.*?)()(?=\n|$)'), (TOKEN_LINECOMMENT,
|
||||
TOKEN_LINECOMMENT_END), '#pop')
|
||||
]
|
||||
}
|
||||
|
||||
def _normalize_newlines(self, value):
|
||||
"""Called for strings and template data to normalize it to unicode."""
|
||||
return newline_re.sub(self.newline_sequence, value)
|
||||
|
||||
def tokenize(self, source, name=None, filename=None, state=None):
|
||||
"""Calls tokeniter + tokenize and wraps it in a token stream.
|
||||
"""
|
||||
stream = self.tokeniter(source, name, filename, state)
|
||||
return TokenStream(self.wrap(stream, name, filename), name, filename)
|
||||
|
||||
def wrap(self, stream, name=None, filename=None):
|
||||
"""This is called with the stream as returned by `tokenize` and wraps
|
||||
every token in a :class:`Token` and converts the value.
|
||||
"""
|
||||
for lineno, token, value in stream:
|
||||
if token in ignored_tokens:
|
||||
continue
|
||||
elif token == 'linestatement_begin':
|
||||
token = 'block_begin'
|
||||
elif token == 'linestatement_end':
|
||||
token = 'block_end'
|
||||
# we are not interested in those tokens in the parser
|
||||
elif token in ('raw_begin', 'raw_end'):
|
||||
continue
|
||||
elif token == 'data':
|
||||
value = self._normalize_newlines(value)
|
||||
elif token == 'keyword':
|
||||
token = value
|
||||
elif token == 'name':
|
||||
value = str(value)
|
||||
elif token == 'string':
|
||||
# try to unescape string
|
||||
try:
|
||||
value = self._normalize_newlines(value[1:-1]) \
|
||||
.encode('ascii', 'backslashreplace') \
|
||||
.decode('unicode-escape')
|
||||
except Exception as e:
|
||||
msg = str(e).split(':')[-1].strip()
|
||||
raise TemplateSyntaxError(msg, lineno, name, filename)
|
||||
# if we can express it as bytestring (ascii only)
|
||||
# we do that for support of semi broken APIs
|
||||
# as datetime.datetime.strftime. On python 3 this
|
||||
# call becomes a noop thanks to 2to3
|
||||
try:
|
||||
value = str(value)
|
||||
except UnicodeError:
|
||||
pass
|
||||
elif token == 'integer':
|
||||
value = int(value)
|
||||
elif token == 'float':
|
||||
value = float(value)
|
||||
elif token == 'operator':
|
||||
token = operators[value]
|
||||
yield Token(lineno, token, value)
|
||||
|
||||
def tokeniter(self, source, name, filename=None, state=None):
|
||||
"""This method tokenizes the text and returns the tokens in a
|
||||
generator. Use this method if you just want to tokenize a template.
|
||||
"""
|
||||
source = text_type(source)
|
||||
lines = source.splitlines()
|
||||
if self.keep_trailing_newline and source:
|
||||
for newline in ('\r\n', '\r', '\n'):
|
||||
if source.endswith(newline):
|
||||
lines.append('')
|
||||
break
|
||||
source = '\n'.join(lines)
|
||||
pos = 0
|
||||
lineno = 1
|
||||
stack = ['root']
|
||||
if state is not None and state != 'root':
|
||||
assert state in ('variable', 'block'), 'invalid state'
|
||||
stack.append(state + '_begin')
|
||||
else:
|
||||
state = 'root'
|
||||
statetokens = self.rules[stack[-1]]
|
||||
source_length = len(source)
|
||||
|
||||
balancing_stack = []
|
||||
|
||||
while 1:
|
||||
# tokenizer loop
|
||||
for regex, tokens, new_state in statetokens:
|
||||
m = regex.match(source, pos)
|
||||
# if no match we try again with the next rule
|
||||
if m is None:
|
||||
continue
|
||||
|
||||
# we only match blocks and variables if braces / parentheses
|
||||
# are balanced. continue parsing with the lower rule which
|
||||
# is the operator rule. do this only if the end tags look
|
||||
# like operators
|
||||
if balancing_stack and \
|
||||
tokens in ('variable_end', 'block_end',
|
||||
'linestatement_end'):
|
||||
continue
|
||||
|
||||
# tuples support more options
|
||||
if isinstance(tokens, tuple):
|
||||
for idx, token in enumerate(tokens):
|
||||
# failure group
|
||||
if token.__class__ is Failure:
|
||||
raise token(lineno, filename)
|
||||
# bygroup is a bit more complex, in that case we
|
||||
# yield for the current token the first named
|
||||
# group that matched
|
||||
elif token == '#bygroup':
|
||||
for key, value in iteritems(m.groupdict()):
|
||||
if value is not None:
|
||||
yield lineno, key, value
|
||||
lineno += value.count('\n')
|
||||
break
|
||||
else:
|
||||
raise RuntimeError('%r wanted to resolve '
|
||||
'the token dynamically'
|
||||
' but no group matched'
|
||||
% regex)
|
||||
# normal group
|
||||
else:
|
||||
data = m.group(idx + 1)
|
||||
if data or token not in ignore_if_empty:
|
||||
yield lineno, token, data
|
||||
lineno += data.count('\n')
|
||||
|
||||
# strings as token just are yielded as it.
|
||||
else:
|
||||
data = m.group()
|
||||
# update brace/parentheses balance
|
||||
if tokens == 'operator':
|
||||
if data == '{':
|
||||
balancing_stack.append('}')
|
||||
elif data == '(':
|
||||
balancing_stack.append(')')
|
||||
elif data == '[':
|
||||
balancing_stack.append(']')
|
||||
elif data in ('}', ')', ']'):
|
||||
if not balancing_stack:
|
||||
raise TemplateSyntaxError('unexpected \'%s\'' %
|
||||
data, lineno, name,
|
||||
filename)
|
||||
expected_op = balancing_stack.pop()
|
||||
if expected_op != data:
|
||||
raise TemplateSyntaxError('unexpected \'%s\', '
|
||||
'expected \'%s\'' %
|
||||
(data, expected_op),
|
||||
lineno, name,
|
||||
filename)
|
||||
# yield items
|
||||
if data or tokens not in ignore_if_empty:
|
||||
yield lineno, tokens, data
|
||||
lineno += data.count('\n')
|
||||
|
||||
# fetch new position into new variable so that we can check
|
||||
# if there is a internal parsing error which would result
|
||||
# in an infinite loop
|
||||
pos2 = m.end()
|
||||
|
||||
# handle state changes
|
||||
if new_state is not None:
|
||||
# remove the uppermost state
|
||||
if new_state == '#pop':
|
||||
stack.pop()
|
||||
# resolve the new state by group checking
|
||||
elif new_state == '#bygroup':
|
||||
for key, value in iteritems(m.groupdict()):
|
||||
if value is not None:
|
||||
stack.append(key)
|
||||
break
|
||||
else:
|
||||
raise RuntimeError('%r wanted to resolve the '
|
||||
'new state dynamically but'
|
||||
' no group matched' %
|
||||
regex)
|
||||
# direct state name given
|
||||
else:
|
||||
stack.append(new_state)
|
||||
statetokens = self.rules[stack[-1]]
|
||||
# we are still at the same position and no stack change.
|
||||
# this means a loop without break condition, avoid that and
|
||||
# raise error
|
||||
elif pos2 == pos:
|
||||
raise RuntimeError('%r yielded empty string without '
|
||||
'stack change' % regex)
|
||||
# publish new function and start again
|
||||
pos = pos2
|
||||
break
|
||||
# if loop terminated without break we haven't found a single match
|
||||
# either we are at the end of the file or we have a problem
|
||||
else:
|
||||
# end of text
|
||||
if pos >= source_length:
|
||||
return
|
||||
# something went wrong
|
||||
raise TemplateSyntaxError('unexpected char %r at %d' %
|
||||
(source[pos], pos), lineno,
|
||||
name, filename)
|
||||
471
3rdparty/jinja2/loaders.py
vendored
Normal file
471
3rdparty/jinja2/loaders.py
vendored
Normal file
@@ -0,0 +1,471 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
jinja2.loaders
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
Jinja loader classes.
|
||||
|
||||
:copyright: (c) 2010 by the Jinja Team.
|
||||
:license: BSD, see LICENSE for more details.
|
||||
"""
|
||||
import os
|
||||
import sys
|
||||
import weakref
|
||||
from types import ModuleType
|
||||
from os import path
|
||||
from hashlib import sha1
|
||||
from jinja2.exceptions import TemplateNotFound
|
||||
from jinja2.utils import open_if_exists, internalcode
|
||||
from jinja2._compat import string_types, iteritems
|
||||
|
||||
|
||||
def split_template_path(template):
|
||||
"""Split a path into segments and perform a sanity check. If it detects
|
||||
'..' in the path it will raise a `TemplateNotFound` error.
|
||||
"""
|
||||
pieces = []
|
||||
for piece in template.split('/'):
|
||||
if path.sep in piece \
|
||||
or (path.altsep and path.altsep in piece) or \
|
||||
piece == path.pardir:
|
||||
raise TemplateNotFound(template)
|
||||
elif piece and piece != '.':
|
||||
pieces.append(piece)
|
||||
return pieces
|
||||
|
||||
|
||||
class BaseLoader(object):
|
||||
"""Baseclass for all loaders. Subclass this and override `get_source` to
|
||||
implement a custom loading mechanism. The environment provides a
|
||||
`get_template` method that calls the loader's `load` method to get the
|
||||
:class:`Template` object.
|
||||
|
||||
A very basic example for a loader that looks up templates on the file
|
||||
system could look like this::
|
||||
|
||||
from jinja2 import BaseLoader, TemplateNotFound
|
||||
from os.path import join, exists, getmtime
|
||||
|
||||
class MyLoader(BaseLoader):
|
||||
|
||||
def __init__(self, path):
|
||||
self.path = path
|
||||
|
||||
def get_source(self, environment, template):
|
||||
path = join(self.path, template)
|
||||
if not exists(path):
|
||||
raise TemplateNotFound(template)
|
||||
mtime = getmtime(path)
|
||||
with file(path) as f:
|
||||
source = f.read().decode('utf-8')
|
||||
return source, path, lambda: mtime == getmtime(path)
|
||||
"""
|
||||
|
||||
#: if set to `False` it indicates that the loader cannot provide access
|
||||
#: to the source of templates.
|
||||
#:
|
||||
#: .. versionadded:: 2.4
|
||||
has_source_access = True
|
||||
|
||||
def get_source(self, environment, template):
|
||||
"""Get the template source, filename and reload helper for a template.
|
||||
It's passed the environment and template name and has to return a
|
||||
tuple in the form ``(source, filename, uptodate)`` or raise a
|
||||
`TemplateNotFound` error if it can't locate the template.
|
||||
|
||||
The source part of the returned tuple must be the source of the
|
||||
template as unicode string or a ASCII bytestring. The filename should
|
||||
be the name of the file on the filesystem if it was loaded from there,
|
||||
otherwise `None`. The filename is used by python for the tracebacks
|
||||
if no loader extension is used.
|
||||
|
||||
The last item in the tuple is the `uptodate` function. If auto
|
||||
reloading is enabled it's always called to check if the template
|
||||
changed. No arguments are passed so the function must store the
|
||||
old state somewhere (for example in a closure). If it returns `False`
|
||||
the template will be reloaded.
|
||||
"""
|
||||
if not self.has_source_access:
|
||||
raise RuntimeError('%s cannot provide access to the source' %
|
||||
self.__class__.__name__)
|
||||
raise TemplateNotFound(template)
|
||||
|
||||
def list_templates(self):
|
||||
"""Iterates over all templates. If the loader does not support that
|
||||
it should raise a :exc:`TypeError` which is the default behavior.
|
||||
"""
|
||||
raise TypeError('this loader cannot iterate over all templates')
|
||||
|
||||
@internalcode
|
||||
def load(self, environment, name, globals=None):
|
||||
"""Loads a template. This method looks up the template in the cache
|
||||
or loads one by calling :meth:`get_source`. Subclasses should not
|
||||
override this method as loaders working on collections of other
|
||||
loaders (such as :class:`PrefixLoader` or :class:`ChoiceLoader`)
|
||||
will not call this method but `get_source` directly.
|
||||
"""
|
||||
code = None
|
||||
if globals is None:
|
||||
globals = {}
|
||||
|
||||
# first we try to get the source for this template together
|
||||
# with the filename and the uptodate function.
|
||||
source, filename, uptodate = self.get_source(environment, name)
|
||||
|
||||
# try to load the code from the bytecode cache if there is a
|
||||
# bytecode cache configured.
|
||||
bcc = environment.bytecode_cache
|
||||
if bcc is not None:
|
||||
bucket = bcc.get_bucket(environment, name, filename, source)
|
||||
code = bucket.code
|
||||
|
||||
# if we don't have code so far (not cached, no longer up to
|
||||
# date) etc. we compile the template
|
||||
if code is None:
|
||||
code = environment.compile(source, name, filename)
|
||||
|
||||
# if the bytecode cache is available and the bucket doesn't
|
||||
# have a code so far, we give the bucket the new code and put
|
||||
# it back to the bytecode cache.
|
||||
if bcc is not None and bucket.code is None:
|
||||
bucket.code = code
|
||||
bcc.set_bucket(bucket)
|
||||
|
||||
return environment.template_class.from_code(environment, code,
|
||||
globals, uptodate)
|
||||
|
||||
|
||||
class FileSystemLoader(BaseLoader):
|
||||
"""Loads templates from the file system. This loader can find templates
|
||||
in folders on the file system and is the preferred way to load them.
|
||||
|
||||
The loader takes the path to the templates as string, or if multiple
|
||||
locations are wanted a list of them which is then looked up in the
|
||||
given order:
|
||||
|
||||
>>> loader = FileSystemLoader('/path/to/templates')
|
||||
>>> loader = FileSystemLoader(['/path/to/templates', '/other/path'])
|
||||
|
||||
Per default the template encoding is ``'utf-8'`` which can be changed
|
||||
by setting the `encoding` parameter to something else.
|
||||
"""
|
||||
|
||||
def __init__(self, searchpath, encoding='utf-8'):
|
||||
if isinstance(searchpath, string_types):
|
||||
searchpath = [searchpath]
|
||||
self.searchpath = list(searchpath)
|
||||
self.encoding = encoding
|
||||
|
||||
def get_source(self, environment, template):
|
||||
pieces = split_template_path(template)
|
||||
for searchpath in self.searchpath:
|
||||
filename = path.join(searchpath, *pieces)
|
||||
f = open_if_exists(filename)
|
||||
if f is None:
|
||||
continue
|
||||
try:
|
||||
contents = f.read().decode(self.encoding)
|
||||
finally:
|
||||
f.close()
|
||||
|
||||
mtime = path.getmtime(filename)
|
||||
def uptodate():
|
||||
try:
|
||||
return path.getmtime(filename) == mtime
|
||||
except OSError:
|
||||
return False
|
||||
return contents, filename, uptodate
|
||||
raise TemplateNotFound(template)
|
||||
|
||||
def list_templates(self):
|
||||
found = set()
|
||||
for searchpath in self.searchpath:
|
||||
for dirpath, dirnames, filenames in os.walk(searchpath):
|
||||
for filename in filenames:
|
||||
template = os.path.join(dirpath, filename) \
|
||||
[len(searchpath):].strip(os.path.sep) \
|
||||
.replace(os.path.sep, '/')
|
||||
if template[:2] == './':
|
||||
template = template[2:]
|
||||
if template not in found:
|
||||
found.add(template)
|
||||
return sorted(found)
|
||||
|
||||
|
||||
class PackageLoader(BaseLoader):
|
||||
"""Load templates from python eggs or packages. It is constructed with
|
||||
the name of the python package and the path to the templates in that
|
||||
package::
|
||||
|
||||
loader = PackageLoader('mypackage', 'views')
|
||||
|
||||
If the package path is not given, ``'templates'`` is assumed.
|
||||
|
||||
Per default the template encoding is ``'utf-8'`` which can be changed
|
||||
by setting the `encoding` parameter to something else. Due to the nature
|
||||
of eggs it's only possible to reload templates if the package was loaded
|
||||
from the file system and not a zip file.
|
||||
"""
|
||||
|
||||
def __init__(self, package_name, package_path='templates',
|
||||
encoding='utf-8'):
|
||||
from pkg_resources import DefaultProvider, ResourceManager, \
|
||||
get_provider
|
||||
provider = get_provider(package_name)
|
||||
self.encoding = encoding
|
||||
self.manager = ResourceManager()
|
||||
self.filesystem_bound = isinstance(provider, DefaultProvider)
|
||||
self.provider = provider
|
||||
self.package_path = package_path
|
||||
|
||||
def get_source(self, environment, template):
|
||||
pieces = split_template_path(template)
|
||||
p = '/'.join((self.package_path,) + tuple(pieces))
|
||||
if not self.provider.has_resource(p):
|
||||
raise TemplateNotFound(template)
|
||||
|
||||
filename = uptodate = None
|
||||
if self.filesystem_bound:
|
||||
filename = self.provider.get_resource_filename(self.manager, p)
|
||||
mtime = path.getmtime(filename)
|
||||
def uptodate():
|
||||
try:
|
||||
return path.getmtime(filename) == mtime
|
||||
except OSError:
|
||||
return False
|
||||
|
||||
source = self.provider.get_resource_string(self.manager, p)
|
||||
return source.decode(self.encoding), filename, uptodate
|
||||
|
||||
def list_templates(self):
|
||||
path = self.package_path
|
||||
if path[:2] == './':
|
||||
path = path[2:]
|
||||
elif path == '.':
|
||||
path = ''
|
||||
offset = len(path)
|
||||
results = []
|
||||
def _walk(path):
|
||||
for filename in self.provider.resource_listdir(path):
|
||||
fullname = path + '/' + filename
|
||||
if self.provider.resource_isdir(fullname):
|
||||
_walk(fullname)
|
||||
else:
|
||||
results.append(fullname[offset:].lstrip('/'))
|
||||
_walk(path)
|
||||
results.sort()
|
||||
return results
|
||||
|
||||
|
||||
class DictLoader(BaseLoader):
|
||||
"""Loads a template from a python dict. It's passed a dict of unicode
|
||||
strings bound to template names. This loader is useful for unittesting:
|
||||
|
||||
>>> loader = DictLoader({'index.html': 'source here'})
|
||||
|
||||
Because auto reloading is rarely useful this is disabled per default.
|
||||
"""
|
||||
|
||||
def __init__(self, mapping):
|
||||
self.mapping = mapping
|
||||
|
||||
def get_source(self, environment, template):
|
||||
if template in self.mapping:
|
||||
source = self.mapping[template]
|
||||
return source, None, lambda: source == self.mapping.get(template)
|
||||
raise TemplateNotFound(template)
|
||||
|
||||
def list_templates(self):
|
||||
return sorted(self.mapping)
|
||||
|
||||
|
||||
class FunctionLoader(BaseLoader):
|
||||
"""A loader that is passed a function which does the loading. The
|
||||
function becomes the name of the template passed and has to return either
|
||||
an unicode string with the template source, a tuple in the form ``(source,
|
||||
filename, uptodatefunc)`` or `None` if the template does not exist.
|
||||
|
||||
>>> def load_template(name):
|
||||
... if name == 'index.html':
|
||||
... return '...'
|
||||
...
|
||||
>>> loader = FunctionLoader(load_template)
|
||||
|
||||
The `uptodatefunc` is a function that is called if autoreload is enabled
|
||||
and has to return `True` if the template is still up to date. For more
|
||||
details have a look at :meth:`BaseLoader.get_source` which has the same
|
||||
return value.
|
||||
"""
|
||||
|
||||
def __init__(self, load_func):
|
||||
self.load_func = load_func
|
||||
|
||||
def get_source(self, environment, template):
|
||||
rv = self.load_func(template)
|
||||
if rv is None:
|
||||
raise TemplateNotFound(template)
|
||||
elif isinstance(rv, string_types):
|
||||
return rv, None, None
|
||||
return rv
|
||||
|
||||
|
||||
class PrefixLoader(BaseLoader):
|
||||
"""A loader that is passed a dict of loaders where each loader is bound
|
||||
to a prefix. The prefix is delimited from the template by a slash per
|
||||
default, which can be changed by setting the `delimiter` argument to
|
||||
something else::
|
||||
|
||||
loader = PrefixLoader({
|
||||
'app1': PackageLoader('mypackage.app1'),
|
||||
'app2': PackageLoader('mypackage.app2')
|
||||
})
|
||||
|
||||
By loading ``'app1/index.html'`` the file from the app1 package is loaded,
|
||||
by loading ``'app2/index.html'`` the file from the second.
|
||||
"""
|
||||
|
||||
def __init__(self, mapping, delimiter='/'):
|
||||
self.mapping = mapping
|
||||
self.delimiter = delimiter
|
||||
|
||||
def get_loader(self, template):
|
||||
try:
|
||||
prefix, name = template.split(self.delimiter, 1)
|
||||
loader = self.mapping[prefix]
|
||||
except (ValueError, KeyError):
|
||||
raise TemplateNotFound(template)
|
||||
return loader, name
|
||||
|
||||
def get_source(self, environment, template):
|
||||
loader, name = self.get_loader(template)
|
||||
try:
|
||||
return loader.get_source(environment, name)
|
||||
except TemplateNotFound:
|
||||
# re-raise the exception with the correct fileame here.
|
||||
# (the one that includes the prefix)
|
||||
raise TemplateNotFound(template)
|
||||
|
||||
@internalcode
|
||||
def load(self, environment, name, globals=None):
|
||||
loader, local_name = self.get_loader(name)
|
||||
try:
|
||||
return loader.load(environment, local_name)
|
||||
except TemplateNotFound:
|
||||
# re-raise the exception with the correct fileame here.
|
||||
# (the one that includes the prefix)
|
||||
raise TemplateNotFound(name)
|
||||
|
||||
def list_templates(self):
|
||||
result = []
|
||||
for prefix, loader in iteritems(self.mapping):
|
||||
for template in loader.list_templates():
|
||||
result.append(prefix + self.delimiter + template)
|
||||
return result
|
||||
|
||||
|
||||
class ChoiceLoader(BaseLoader):
|
||||
"""This loader works like the `PrefixLoader` just that no prefix is
|
||||
specified. If a template could not be found by one loader the next one
|
||||
is tried.
|
||||
|
||||
>>> loader = ChoiceLoader([
|
||||
... FileSystemLoader('/path/to/user/templates'),
|
||||
... FileSystemLoader('/path/to/system/templates')
|
||||
... ])
|
||||
|
||||
This is useful if you want to allow users to override builtin templates
|
||||
from a different location.
|
||||
"""
|
||||
|
||||
def __init__(self, loaders):
|
||||
self.loaders = loaders
|
||||
|
||||
def get_source(self, environment, template):
|
||||
for loader in self.loaders:
|
||||
try:
|
||||
return loader.get_source(environment, template)
|
||||
except TemplateNotFound:
|
||||
pass
|
||||
raise TemplateNotFound(template)
|
||||
|
||||
@internalcode
|
||||
def load(self, environment, name, globals=None):
|
||||
for loader in self.loaders:
|
||||
try:
|
||||
return loader.load(environment, name, globals)
|
||||
except TemplateNotFound:
|
||||
pass
|
||||
raise TemplateNotFound(name)
|
||||
|
||||
def list_templates(self):
|
||||
found = set()
|
||||
for loader in self.loaders:
|
||||
found.update(loader.list_templates())
|
||||
return sorted(found)
|
||||
|
||||
|
||||
class _TemplateModule(ModuleType):
|
||||
"""Like a normal module but with support for weak references"""
|
||||
|
||||
|
||||
class ModuleLoader(BaseLoader):
|
||||
"""This loader loads templates from precompiled templates.
|
||||
|
||||
Example usage:
|
||||
|
||||
>>> loader = ChoiceLoader([
|
||||
... ModuleLoader('/path/to/compiled/templates'),
|
||||
... FileSystemLoader('/path/to/templates')
|
||||
... ])
|
||||
|
||||
Templates can be precompiled with :meth:`Environment.compile_templates`.
|
||||
"""
|
||||
|
||||
has_source_access = False
|
||||
|
||||
def __init__(self, path):
|
||||
package_name = '_jinja2_module_templates_%x' % id(self)
|
||||
|
||||
# create a fake module that looks for the templates in the
|
||||
# path given.
|
||||
mod = _TemplateModule(package_name)
|
||||
if isinstance(path, string_types):
|
||||
path = [path]
|
||||
else:
|
||||
path = list(path)
|
||||
mod.__path__ = path
|
||||
|
||||
sys.modules[package_name] = weakref.proxy(mod,
|
||||
lambda x: sys.modules.pop(package_name, None))
|
||||
|
||||
# the only strong reference, the sys.modules entry is weak
|
||||
# so that the garbage collector can remove it once the
|
||||
# loader that created it goes out of business.
|
||||
self.module = mod
|
||||
self.package_name = package_name
|
||||
|
||||
@staticmethod
|
||||
def get_template_key(name):
|
||||
return 'tmpl_' + sha1(name.encode('utf-8')).hexdigest()
|
||||
|
||||
@staticmethod
|
||||
def get_module_filename(name):
|
||||
return ModuleLoader.get_template_key(name) + '.py'
|
||||
|
||||
@internalcode
|
||||
def load(self, environment, name, globals=None):
|
||||
key = self.get_template_key(name)
|
||||
module = '%s.%s' % (self.package_name, key)
|
||||
mod = getattr(self.module, module, None)
|
||||
if mod is None:
|
||||
try:
|
||||
mod = __import__(module, None, None, ['root'])
|
||||
except ImportError:
|
||||
raise TemplateNotFound(name)
|
||||
|
||||
# remove the entry from sys.modules, we only want the attribute
|
||||
# on the module object we have stored on the loader.
|
||||
sys.modules.pop(module, None)
|
||||
|
||||
return environment.template_class.from_module_dict(
|
||||
environment, mod.__dict__, globals)
|
||||
234
3rdparty/jinja2/markupsafe/__init__.py
vendored
Normal file
234
3rdparty/jinja2/markupsafe/__init__.py
vendored
Normal file
@@ -0,0 +1,234 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
markupsafe
|
||||
~~~~~~~~~~
|
||||
|
||||
Implements a Markup string.
|
||||
|
||||
:copyright: (c) 2010 by Armin Ronacher.
|
||||
:license: BSD, see LICENSE for more details.
|
||||
"""
|
||||
import re
|
||||
from ._compat import text_type, string_types, int_types, \
|
||||
unichr, PY2
|
||||
|
||||
|
||||
__all__ = ['Markup', 'soft_unicode', 'escape', 'escape_silent']
|
||||
|
||||
|
||||
_striptags_re = re.compile(r'(<!--.*?-->|<[^>]*>)')
|
||||
_entity_re = re.compile(r'&([^;]+);')
|
||||
|
||||
|
||||
class Markup(text_type):
|
||||
r"""Marks a string as being safe for inclusion in HTML/XML output without
|
||||
needing to be escaped. This implements the `__html__` interface a couple
|
||||
of frameworks and web applications use. :class:`Markup` is a direct
|
||||
subclass of `unicode` and provides all the methods of `unicode` just that
|
||||
it escapes arguments passed and always returns `Markup`.
|
||||
|
||||
The `escape` function returns markup objects so that double escaping can't
|
||||
happen.
|
||||
|
||||
The constructor of the :class:`Markup` class can be used for three
|
||||
different things: When passed an unicode object it's assumed to be safe,
|
||||
when passed an object with an HTML representation (has an `__html__`
|
||||
method) that representation is used, otherwise the object passed is
|
||||
converted into a unicode string and then assumed to be safe:
|
||||
|
||||
>>> Markup("Hello <em>World</em>!")
|
||||
Markup(u'Hello <em>World</em>!')
|
||||
>>> class Foo(object):
|
||||
... def __html__(self):
|
||||
... return '<a href="#">foo</a>'
|
||||
...
|
||||
>>> Markup(Foo())
|
||||
Markup(u'<a href="#">foo</a>')
|
||||
|
||||
If you want object passed being always treated as unsafe you can use the
|
||||
:meth:`escape` classmethod to create a :class:`Markup` object:
|
||||
|
||||
>>> Markup.escape("Hello <em>World</em>!")
|
||||
Markup(u'Hello <em>World</em>!')
|
||||
|
||||
Operations on a markup string are markup aware which means that all
|
||||
arguments are passed through the :func:`escape` function:
|
||||
|
||||
>>> em = Markup("<em>%s</em>")
|
||||
>>> em % "foo & bar"
|
||||
Markup(u'<em>foo & bar</em>')
|
||||
>>> strong = Markup("<strong>%(text)s</strong>")
|
||||
>>> strong % {'text': '<blink>hacker here</blink>'}
|
||||
Markup(u'<strong><blink>hacker here</blink></strong>')
|
||||
>>> Markup("<em>Hello</em> ") + "<foo>"
|
||||
Markup(u'<em>Hello</em> <foo>')
|
||||
"""
|
||||
__slots__ = ()
|
||||
|
||||
def __new__(cls, base=u'', encoding=None, errors='strict'):
|
||||
if hasattr(base, '__html__'):
|
||||
base = base.__html__()
|
||||
if encoding is None:
|
||||
return text_type.__new__(cls, base)
|
||||
return text_type.__new__(cls, base, encoding, errors)
|
||||
|
||||
def __html__(self):
|
||||
return self
|
||||
|
||||
def __add__(self, other):
|
||||
if isinstance(other, string_types) or hasattr(other, '__html__'):
|
||||
return self.__class__(super(Markup, self).__add__(self.escape(other)))
|
||||
return NotImplemented
|
||||
|
||||
def __radd__(self, other):
|
||||
if hasattr(other, '__html__') or isinstance(other, string_types):
|
||||
return self.escape(other).__add__(self)
|
||||
return NotImplemented
|
||||
|
||||
def __mul__(self, num):
|
||||
if isinstance(num, int_types):
|
||||
return self.__class__(text_type.__mul__(self, num))
|
||||
return NotImplemented
|
||||
__rmul__ = __mul__
|
||||
|
||||
def __mod__(self, arg):
|
||||
if isinstance(arg, tuple):
|
||||
arg = tuple(_MarkupEscapeHelper(x, self.escape) for x in arg)
|
||||
else:
|
||||
arg = _MarkupEscapeHelper(arg, self.escape)
|
||||
return self.__class__(text_type.__mod__(self, arg))
|
||||
|
||||
def __repr__(self):
|
||||
return '%s(%s)' % (
|
||||
self.__class__.__name__,
|
||||
text_type.__repr__(self)
|
||||
)
|
||||
|
||||
def join(self, seq):
|
||||
return self.__class__(text_type.join(self, map(self.escape, seq)))
|
||||
join.__doc__ = text_type.join.__doc__
|
||||
|
||||
def split(self, *args, **kwargs):
|
||||
return list(map(self.__class__, text_type.split(self, *args, **kwargs)))
|
||||
split.__doc__ = text_type.split.__doc__
|
||||
|
||||
def rsplit(self, *args, **kwargs):
|
||||
return list(map(self.__class__, text_type.rsplit(self, *args, **kwargs)))
|
||||
rsplit.__doc__ = text_type.rsplit.__doc__
|
||||
|
||||
def splitlines(self, *args, **kwargs):
|
||||
return list(map(self.__class__, text_type.splitlines(self, *args, **kwargs)))
|
||||
splitlines.__doc__ = text_type.splitlines.__doc__
|
||||
|
||||
def unescape(self):
|
||||
r"""Unescape markup again into an text_type string. This also resolves
|
||||
known HTML4 and XHTML entities:
|
||||
|
||||
>>> Markup("Main » <em>About</em>").unescape()
|
||||
u'Main \xbb <em>About</em>'
|
||||
"""
|
||||
from _constants import HTML_ENTITIES
|
||||
def handle_match(m):
|
||||
name = m.group(1)
|
||||
if name in HTML_ENTITIES:
|
||||
return unichr(HTML_ENTITIES[name])
|
||||
try:
|
||||
if name[:2] in ('#x', '#X'):
|
||||
return unichr(int(name[2:], 16))
|
||||
elif name.startswith('#'):
|
||||
return unichr(int(name[1:]))
|
||||
except ValueError:
|
||||
pass
|
||||
return u''
|
||||
return _entity_re.sub(handle_match, text_type(self))
|
||||
|
||||
def striptags(self):
|
||||
r"""Unescape markup into an text_type string and strip all tags. This
|
||||
also resolves known HTML4 and XHTML entities. Whitespace is
|
||||
normalized to one:
|
||||
|
||||
>>> Markup("Main » <em>About</em>").striptags()
|
||||
u'Main \xbb About'
|
||||
"""
|
||||
stripped = u' '.join(_striptags_re.sub('', self).split())
|
||||
return Markup(stripped).unescape()
|
||||
|
||||
@classmethod
|
||||
def escape(cls, s):
|
||||
"""Escape the string. Works like :func:`escape` with the difference
|
||||
that for subclasses of :class:`Markup` this function would return the
|
||||
correct subclass.
|
||||
"""
|
||||
rv = escape(s)
|
||||
if rv.__class__ is not cls:
|
||||
return cls(rv)
|
||||
return rv
|
||||
|
||||
def make_wrapper(name):
|
||||
orig = getattr(text_type, name)
|
||||
def func(self, *args, **kwargs):
|
||||
args = _escape_argspec(list(args), enumerate(args), self.escape)
|
||||
#_escape_argspec(kwargs, kwargs.iteritems(), None)
|
||||
return self.__class__(orig(self, *args, **kwargs))
|
||||
func.__name__ = orig.__name__
|
||||
func.__doc__ = orig.__doc__
|
||||
return func
|
||||
|
||||
for method in '__getitem__', 'capitalize', \
|
||||
'title', 'lower', 'upper', 'replace', 'ljust', \
|
||||
'rjust', 'lstrip', 'rstrip', 'center', 'strip', \
|
||||
'translate', 'expandtabs', 'swapcase', 'zfill':
|
||||
locals()[method] = make_wrapper(method)
|
||||
|
||||
# new in python 2.5
|
||||
if hasattr(text_type, 'partition'):
|
||||
def partition(self, sep):
|
||||
return tuple(map(self.__class__,
|
||||
text_type.partition(self, self.escape(sep))))
|
||||
def rpartition(self, sep):
|
||||
return tuple(map(self.__class__,
|
||||
text_type.rpartition(self, self.escape(sep))))
|
||||
|
||||
# new in python 2.6
|
||||
if hasattr(text_type, 'format'):
|
||||
format = make_wrapper('format')
|
||||
|
||||
# not in python 3
|
||||
if hasattr(text_type, '__getslice__'):
|
||||
__getslice__ = make_wrapper('__getslice__')
|
||||
|
||||
del method, make_wrapper
|
||||
|
||||
|
||||
def _escape_argspec(obj, iterable, escape):
|
||||
"""Helper for various string-wrapped functions."""
|
||||
for key, value in iterable:
|
||||
if hasattr(value, '__html__') or isinstance(value, string_types):
|
||||
obj[key] = escape(value)
|
||||
return obj
|
||||
|
||||
|
||||
class _MarkupEscapeHelper(object):
|
||||
"""Helper for Markup.__mod__"""
|
||||
|
||||
def __init__(self, obj, escape):
|
||||
self.obj = obj
|
||||
self.escape = escape
|
||||
|
||||
__getitem__ = lambda s, x: _MarkupEscapeHelper(s.obj[x], s.escape)
|
||||
__unicode__ = __str__ = lambda s: text_type(s.escape(s.obj))
|
||||
__repr__ = lambda s: str(s.escape(repr(s.obj)))
|
||||
__int__ = lambda s: int(s.obj)
|
||||
__float__ = lambda s: float(s.obj)
|
||||
|
||||
|
||||
# we have to import it down here as the speedups and native
|
||||
# modules imports the markup type which is define above.
|
||||
try:
|
||||
from _speedups import escape, escape_silent, soft_unicode
|
||||
except ImportError:
|
||||
from ._native import escape, escape_silent, soft_unicode
|
||||
|
||||
if not PY2:
|
||||
soft_str = soft_unicode
|
||||
__all__.append('soft_str')
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user