Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Libpng
提交
55fbff35
T
Third Party Libpng
项目概览
OpenHarmony
/
Third Party Libpng
大约 1 年 前同步成功
通知
4
Star
22
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
Third Party Libpng
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
55fbff35
编写于
5月 17, 2011
作者:
G
Glenn Randers-Pehrson
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[devel] Consistently use "n-bit", not "n bit" in comments.
上级
1921e6db
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
32 addition
and
32 deletion
+32
-32
png.c
png.c
+27
-27
pngread.c
pngread.c
+2
-2
pngrtran.c
pngrtran.c
+3
-3
未找到文件。
png.c
浏览文件 @
55fbff35
...
...
@@ -1791,16 +1791,16 @@ png_64bit_product (long v1, long v2, unsigned long *hi_product,
/* Fixed point gamma.
*
* To calculate gamma this code implements fast log() and exp() calls using only
* fixed point arithmetic. This code has sufficient precision for either 8
or
*
16
bit sample values.
* fixed point arithmetic. This code has sufficient precision for either 8
-bit
*
or 16-
bit sample values.
*
* The tables used here were calculated using simple 'bc' programs, but C double
* precision floating point arithmetic would work fine. The programs are given
* at the head of each table.
*
* 8
bit log table
* 8
-
bit log table
* This is a table of -log(value/255)/log(2) for 'value' in the range 128 to
* 255, so it's the base 2 logarithm of a normalized 8
bit floating point
* 255, so it's the base 2 logarithm of a normalized 8
-
bit floating point
* mantissa. The numbers are 32 bit fractions.
*/
static
png_uint_32
...
...
@@ -1832,8 +1832,8 @@ png_8bit_l2[128] =
172473545U
,
147538590U
,
122703574U
,
97967701U
,
73330182U
,
48790236U
,
24347096U
,
0U
#if 0
/* The following are the values for 16
bit tables - these work fine for the 8
* bit conversions but produce very slightly larger errors in the 16
bit log
/* The following are the values for 16
-
bit tables - these work fine for the 8
* bit conversions but produce very slightly larger errors in the 16
-
bit log
* (about 1.2 as opposed to 0.7 absolute error in the final value). To use
* these all the shifts below must be adjusted appropriately.
*/
...
...
@@ -1878,11 +1878,11 @@ png_log8bit(unsigned int x)
return
(
png_int_32
)((
lg2
<<
16
)
+
((
png_8bit_l2
[
x
-
128
]
+
32768
)
>>
16
));
}
/* The above gives exact (to 16 binary places) log2 values for 8
bit images,
* for 16
bit images we use the most significant 8 bits of the 16
bit value to
/* The above gives exact (to 16 binary places) log2 values for 8
-
bit images,
* for 16
-bit images we use the most significant 8 bits of the 16-
bit value to
* get an approximation then multiply the approximation by a correction factor
* determined by the remaining up to 8 bits. This requires an additional step
* in the 16
bit case.
* in the 16
-
bit case.
*
* We want log2(value/65535), we have log2(v'/255), where:
*
...
...
@@ -1891,8 +1891,8 @@ png_log8bit(unsigned int x)
*
* So f is value/v', which is equal to (256+v''/v') since v' is in the range 128
* to 255 and v'' is in the range 0 to 255 f will be in the range 256 to less
* than 258. The final factor also needs to correct for the fact that our 8
bit
* value is scaled by 255, whereas the 16
bit values must be scaled by 65535.
* than 258. The final factor also needs to correct for the fact that our 8
-
bit
* value is scaled by 255, whereas the 16
-
bit values must be scaled by 65535.
*
* This gives a final formula using a calculated value 'x' which is value/v' and
* scaling by 65536 to match the above table:
...
...
@@ -1902,7 +1902,7 @@ png_log8bit(unsigned int x)
* Since these numbers are so close to '1' we can use simple linear
* interpolation between the two end values 256/257 (result -368.61) and 258/257
* (result 367.179). The values used below are scaled by a further 64 to give
* 16
bit precision in the interpolation:
* 16
-
bit precision in the interpolation:
*
* Start (256): -23591
* Zero (257): 0
...
...
@@ -1960,11 +1960,11 @@ png_log16bit(png_uint_32 x)
}
/* The 'exp()' case must invert the above, taking a 20 bit fixed point
* logarithmic value and returning a 16 or 8
bit number as appropriate. In
* logarithmic value and returning a 16 or 8
-
bit number as appropriate. In
* each case only the low 16 bits are relevant - the fraction - since the
* integer bits (the top 4) simply determine a shift.
*
* The worst case is the 16
bit distinction between 65535 and 65534, this
* The worst case is the 16
-
bit distinction between 65535 and 65534, this
* requires perhaps spurious accuracty in the decoding of the logarithm to
* distinguish log2(65535/65534.5) - 10^-5 or 17 bits. There is little chance
* of getting this accuracy in practice.
...
...
@@ -2123,9 +2123,9 @@ png_gamma_16bit_correct(unsigned int value, png_fixed_point gamma_val)
}
/* This does the right thing based on the bit_depth field of the
* png_struct, interpreting values as 8
or 16
bit. While the result
* is nominally a 16
bit value if bit depth is 8 then the result is
* 8
bit (as are the arguments.)
* png_struct, interpreting values as 8
-bit or 16-
bit. While the result
* is nominally a 16
-
bit value if bit depth is 8 then the result is
* 8
-
bit (as are the arguments.)
*/
png_uint_16
/* PRIVATE */
png_gamma_correct
(
png_structp
png_ptr
,
unsigned
int
value
,
...
...
@@ -2148,7 +2148,7 @@ png_gamma_significant(png_fixed_point gamma_val)
gamma_val
>
PNG_FP_1
+
PNG_GAMMA_THRESHOLD_FIXED
;
}
/* Internal function to build a single 16
bit table - the table consists of
/* Internal function to build a single 16
-
bit table - the table consists of
* 'num' 256 entry subtables, where 'num' is determined by 'shift' - the amount
* to shift the input values right (or 16-number_of_signifiant_bits).
*
...
...
@@ -2175,7 +2175,7 @@ png_build_16bit_table(png_structp png_ptr, png_uint_16pp *ptable,
(
png_uint_16p
)
png_malloc
(
png_ptr
,
256
*
png_sizeof
(
png_uint_16
));
/* The 'threshold' test is repeated here because it can arise for one of
* the 16
bit tables even if the others don't hit it.
* the 16
-
bit tables even if the others don't hit it.
*/
if
(
png_gamma_significant
(
gamma_val
))
{
...
...
@@ -2237,7 +2237,7 @@ png_build_16to8_table(png_structp png_ptr, png_uint_16pp *ptable,
(
png_uint_16pp
)
png_calloc
(
png_ptr
,
num
*
png_sizeof
(
png_uint_16p
));
/* 'num' is the number of tables and also the number of low bits of low
* bits of the input 16
bit value used to select a table. Each table is
* bits of the input 16
-
bit value used to select a table. Each table is
* itself index by the high 8 bits of the value.
*/
for
(
i
=
0
;
i
<
num
;
i
++
)
...
...
@@ -2255,16 +2255,16 @@ png_build_16to8_table(png_structp png_ptr, png_uint_16pp *ptable,
* value.
*
* The boundary values are 0.5,1.5..253.5,254.5. Since these are 9 bit
* values the code below uses a 16
bit value in i; the values start at
* values the code below uses a 16
-
bit value in i; the values start at
* 128.5 (for 0.5) and step by 257, for a total of 254 values (the last
* entries are filled with 255). Start i at 128 and fill all 'last'
* table entries <= 'max'
*/
last
=
0
;
for
(
i
=
0
;
i
<
255
;
++
i
)
/* 8
bit output value */
for
(
i
=
0
;
i
<
255
;
++
i
)
/* 8
-
bit output value */
{
/* Find the corresponding maximum input value */
png_uint_16
out
=
(
png_uint_16
)(
i
*
257U
);
/* 16
bit output value */
png_uint_16
out
=
(
png_uint_16
)(
i
*
257U
);
/* 16
-
bit output value */
/* Find the boundary value in 16 bits: */
png_uint_32
bound
=
png_gamma_16bit_correct
(
out
+
128U
,
gamma_val
);
...
...
@@ -2287,7 +2287,7 @@ png_build_16to8_table(png_structp png_ptr, png_uint_16pp *ptable,
}
}
/* Build a single 8
bit table: same as the 16
bit case but much simpler (and
/* Build a single 8
-bit table: same as the 16-
bit case but much simpler (and
* typically much faster). Note that libpng currently does no sBIT processing
* (apparently contrary to the spec) so a 256 entry table is always generated.
*/
...
...
@@ -2352,7 +2352,7 @@ png_build_gamma_table(png_structp png_ptr, int bit_depth)
else
sig_bit
=
png_ptr
->
sig_bit
.
gray
;
/* 16
bit gamma code uses this equation:
/* 16
-
bit gamma code uses this equation:
*
* ov = table[(iv & 0xff) >> gamma_shift][iv >> 8]
*
...
...
@@ -2367,7 +2367,7 @@ png_build_gamma_table(png_structp png_ptr, int bit_depth)
*
* So the table 'n' corresponds to all those 'iv' of:
*
* <all high 8
bit values><n << gamma_shift>..<(n+1 << gamma_shift)-1>
* <all high 8
-
bit values><n << gamma_shift>..<(n+1 << gamma_shift)-1>
*
*/
if
(
sig_bit
>
0
&&
sig_bit
<
16U
)
...
...
@@ -2394,7 +2394,7 @@ png_build_gamma_table(png_structp png_ptr, int bit_depth)
#ifdef PNG_16BIT_SUPPORTED
/* NOTE: prior to 1.5.3 this test used to include PNG_BACKGROUND (now
* PNG_COMPOSE). This effectively smashed the background calculation for
* 16
bit output because the 8
bit table assumes the result will be reduced
* 16
-bit output because the 8-
bit table assumes the result will be reduced
* to 8 bits.
*/
if
(
png_ptr
->
transformations
&
PNG_16_TO_8
)
...
...
pngread.c
浏览文件 @
55fbff35
...
...
@@ -1287,7 +1287,7 @@ png_read_png(png_structp png_ptr, png_infop info_ptr,
/* -------------- image transformations start here ------------------- */
#ifdef PNG_READ_16_TO_8_SUPPORTED
/* Tell libpng to strip 16
bit/color files down to 8 bits per color.
/* Tell libpng to strip 16
-
bit/color files down to 8 bits per color.
*/
if
(
transforms
&
PNG_TRANSFORM_STRIP_16
)
png_set_strip_16
(
png_ptr
);
...
...
@@ -1368,7 +1368,7 @@ png_read_png(png_structp png_ptr, png_infop info_ptr,
#endif
#ifdef PNG_READ_SWAP_SUPPORTED
/* Swap bytes of 16
bit files to least significant byte first */
/* Swap bytes of 16
-
bit files to least significant byte first */
if
(
transforms
&
PNG_TRANSFORM_SWAP_ENDIAN
)
png_set_swap
(
png_ptr
);
#endif
...
...
pngrtran.c
浏览文件 @
55fbff35
...
...
@@ -133,7 +133,7 @@ png_set_background(png_structp png_ptr,
#endif
/* READ_BACKGROUND */
#ifdef PNG_READ_16_TO_8_SUPPORTED
/* Strip 16
bit depth files to 8
bit depth */
/* Strip 16
-bit depth files to 8-
bit depth */
void
PNGAPI
png_set_strip_16
(
png_structp
png_ptr
)
{
...
...
@@ -342,7 +342,7 @@ png_set_alpha_mode(png_structp png_ptr, int mode, double output_gamma)
#endif
#ifdef PNG_READ_QUANTIZE_SUPPORTED
/* Dither file to 8
bit. Supply a palette, the current number
/* Dither file to 8
-
bit. Supply a palette, the current number
* of elements in the palette, the maximum number of elements
* allowed, and a histogram if possible. If the current number
* of colors is greater then the maximum number, the palette will be
...
...
@@ -872,7 +872,7 @@ png_set_tRNS_to_alpha(png_structp png_ptr)
#endif
/* defined(PNG_READ_EXPAND_SUPPORTED) */
#ifdef PNG_READ_EXPAND_16_SUPPORTED
/* Expand to 16
bit channels, expand the tRNS chunk too (because otherwise
/* Expand to 16
-
bit channels, expand the tRNS chunk too (because otherwise
* it may not work correctly.)
*/
void
PNGAPI
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录