Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
f768f898
O
Opencv
项目概览
Greenplum
/
Opencv
大约 1 年 前同步成功
通知
7
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
Opencv
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
f768f898
编写于
6月 04, 2019
作者:
A
Alexander Alekhin
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #14704 from alalek:fix_missing_files_libjpeg_turbo_2.0.2
上级
1f75c67c
68e220e7
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
279 addition
and
2 deletion
+279
-2
3rdparty/libjpeg-turbo/CMakeLists.txt
3rdparty/libjpeg-turbo/CMakeLists.txt
+3
-2
3rdparty/libjpeg-turbo/src/jcicc.c
3rdparty/libjpeg-turbo/src/jcicc.c
+105
-0
3rdparty/libjpeg-turbo/src/jdicc.c
3rdparty/libjpeg-turbo/src/jdicc.c
+171
-0
未找到文件。
3rdparty/libjpeg-turbo/CMakeLists.txt
浏览文件 @
f768f898
...
...
@@ -78,10 +78,11 @@ configure_file(jconfigint.h.in jconfigint.h)
include_directories
(
${
CMAKE_CURRENT_BINARY_DIR
}
${
CMAKE_CURRENT_SOURCE_DIR
}
/src
)
set
(
JPEG_SOURCES jcapimin.c jcapistd.c jccoefct.c jccolor.c jcdctmgr.c jchuff.c
set
(
JPEG_SOURCES
jcapimin.c jcapistd.c jccoefct.c jccolor.c jcdctmgr.c jchuff.c jcicc.c
jcinit.c jcmainct.c jcmarker.c jcmaster.c jcomapi.c jcparam.c jcphuff.c
jcprepct.c jcsample.c jctrans.c jdapimin.c jdapistd.c jdatadst.c jdatasrc.c
jdcoefct.c jdcolor.c jddctmgr.c jdhuff.c jdinput.c jdmainct.c jdmarker.c
jdcoefct.c jdcolor.c jddctmgr.c jdhuff.c jdi
cc.c jdi
nput.c jdmainct.c jdmarker.c
jdmaster.c jdmerge.c jdphuff.c jdpostct.c jdsample.c jdtrans.c jerror.c
jfdctflt.c jfdctfst.c jfdctint.c jidctflt.c jidctfst.c jidctint.c jidctred.c
jquant1.c jquant2.c jutils.c jmemmgr.c jmemnobs.c
)
...
...
3rdparty/libjpeg-turbo/src/jcicc.c
0 → 100644
浏览文件 @
f768f898
/*
* jcicc.c
*
* Copyright (C) 1997-1998, Thomas G. Lane, Todd Newman.
* Copyright (C) 2017, D. R. Commander.
* For conditions of distribution and use, see the accompanying README.ijg
* file.
*
* This file provides code to write International Color Consortium (ICC) device
* profiles embedded in JFIF JPEG image files. The ICC has defined a standard
* for including such data in JPEG "APP2" markers. The code given here does
* not know anything about the internal structure of the ICC profile data; it
* just knows how to embed the profile data in a JPEG file while writing it.
*/
#define JPEG_INTERNALS
#include "jinclude.h"
#include "jpeglib.h"
#include "jerror.h"
/*
* Since an ICC profile can be larger than the maximum size of a JPEG marker
* (64K), we need provisions to split it into multiple markers. The format
* defined by the ICC specifies one or more APP2 markers containing the
* following data:
* Identifying string ASCII "ICC_PROFILE\0" (12 bytes)
* Marker sequence number 1 for first APP2, 2 for next, etc (1 byte)
* Number of markers Total number of APP2's used (1 byte)
* Profile data (remainder of APP2 data)
* Decoders should use the marker sequence numbers to reassemble the profile,
* rather than assuming that the APP2 markers appear in the correct sequence.
*/
#define ICC_MARKER (JPEG_APP0 + 2)
/* JPEG marker code for ICC */
#define ICC_OVERHEAD_LEN 14
/* size of non-profile data in APP2 */
#define MAX_BYTES_IN_MARKER 65533
/* maximum data len of a JPEG marker */
#define MAX_DATA_BYTES_IN_MARKER (MAX_BYTES_IN_MARKER - ICC_OVERHEAD_LEN)
/*
* This routine writes the given ICC profile data into a JPEG file. It *must*
* be called AFTER calling jpeg_start_compress() and BEFORE the first call to
* jpeg_write_scanlines(). (This ordering ensures that the APP2 marker(s) will
* appear after the SOI and JFIF or Adobe markers, but before all else.)
*/
GLOBAL
(
void
)
jpeg_write_icc_profile
(
j_compress_ptr
cinfo
,
const
JOCTET
*
icc_data_ptr
,
unsigned
int
icc_data_len
)
{
unsigned
int
num_markers
;
/* total number of markers we'll write */
int
cur_marker
=
1
;
/* per spec, counting starts at 1 */
unsigned
int
length
;
/* number of bytes to write in this marker */
if
(
icc_data_ptr
==
NULL
||
icc_data_len
==
0
)
ERREXIT
(
cinfo
,
JERR_BUFFER_SIZE
);
if
(
cinfo
->
global_state
<
CSTATE_SCANNING
)
ERREXIT1
(
cinfo
,
JERR_BAD_STATE
,
cinfo
->
global_state
);
/* Calculate the number of markers we'll need, rounding up of course */
num_markers
=
icc_data_len
/
MAX_DATA_BYTES_IN_MARKER
;
if
(
num_markers
*
MAX_DATA_BYTES_IN_MARKER
!=
icc_data_len
)
num_markers
++
;
while
(
icc_data_len
>
0
)
{
/* length of profile to put in this marker */
length
=
icc_data_len
;
if
(
length
>
MAX_DATA_BYTES_IN_MARKER
)
length
=
MAX_DATA_BYTES_IN_MARKER
;
icc_data_len
-=
length
;
/* Write the JPEG marker header (APP2 code and marker length) */
jpeg_write_m_header
(
cinfo
,
ICC_MARKER
,
(
unsigned
int
)(
length
+
ICC_OVERHEAD_LEN
));
/* Write the marker identifying string "ICC_PROFILE" (null-terminated). We
* code it in this less-than-transparent way so that the code works even if
* the local character set is not ASCII.
*/
jpeg_write_m_byte
(
cinfo
,
0x49
);
jpeg_write_m_byte
(
cinfo
,
0x43
);
jpeg_write_m_byte
(
cinfo
,
0x43
);
jpeg_write_m_byte
(
cinfo
,
0x5F
);
jpeg_write_m_byte
(
cinfo
,
0x50
);
jpeg_write_m_byte
(
cinfo
,
0x52
);
jpeg_write_m_byte
(
cinfo
,
0x4F
);
jpeg_write_m_byte
(
cinfo
,
0x46
);
jpeg_write_m_byte
(
cinfo
,
0x49
);
jpeg_write_m_byte
(
cinfo
,
0x4C
);
jpeg_write_m_byte
(
cinfo
,
0x45
);
jpeg_write_m_byte
(
cinfo
,
0x0
);
/* Add the sequencing info */
jpeg_write_m_byte
(
cinfo
,
cur_marker
);
jpeg_write_m_byte
(
cinfo
,
(
int
)
num_markers
);
/* Add the profile data */
while
(
length
--
)
{
jpeg_write_m_byte
(
cinfo
,
*
icc_data_ptr
);
icc_data_ptr
++
;
}
cur_marker
++
;
}
}
3rdparty/libjpeg-turbo/src/jdicc.c
0 → 100644
浏览文件 @
f768f898
/*
* jdicc.c
*
* Copyright (C) 1997-1998, Thomas G. Lane, Todd Newman.
* Copyright (C) 2017, D. R. Commander.
* For conditions of distribution and use, see the accompanying README.ijg
* file.
*
* This file provides code to read International Color Consortium (ICC) device
* profiles embedded in JFIF JPEG image files. The ICC has defined a standard
* for including such data in JPEG "APP2" markers. The code given here does
* not know anything about the internal structure of the ICC profile data; it
* just knows how to get the profile data from a JPEG file while reading it.
*/
#define JPEG_INTERNALS
#include "jinclude.h"
#include "jpeglib.h"
#include "jerror.h"
#ifndef HAVE_STDLIB_H
/* <stdlib.h> should declare malloc() */
extern
void
*
malloc
(
size_t
size
);
#endif
#define ICC_MARKER (JPEG_APP0 + 2)
/* JPEG marker code for ICC */
#define ICC_OVERHEAD_LEN 14
/* size of non-profile data in APP2 */
/*
* Handy subroutine to test whether a saved marker is an ICC profile marker.
*/
LOCAL
(
boolean
)
marker_is_icc
(
jpeg_saved_marker_ptr
marker
)
{
return
marker
->
marker
==
ICC_MARKER
&&
marker
->
data_length
>=
ICC_OVERHEAD_LEN
&&
/* verify the identifying string */
GETJOCTET
(
marker
->
data
[
0
])
==
0x49
&&
GETJOCTET
(
marker
->
data
[
1
])
==
0x43
&&
GETJOCTET
(
marker
->
data
[
2
])
==
0x43
&&
GETJOCTET
(
marker
->
data
[
3
])
==
0x5F
&&
GETJOCTET
(
marker
->
data
[
4
])
==
0x50
&&
GETJOCTET
(
marker
->
data
[
5
])
==
0x52
&&
GETJOCTET
(
marker
->
data
[
6
])
==
0x4F
&&
GETJOCTET
(
marker
->
data
[
7
])
==
0x46
&&
GETJOCTET
(
marker
->
data
[
8
])
==
0x49
&&
GETJOCTET
(
marker
->
data
[
9
])
==
0x4C
&&
GETJOCTET
(
marker
->
data
[
10
])
==
0x45
&&
GETJOCTET
(
marker
->
data
[
11
])
==
0x0
;
}
/*
* See if there was an ICC profile in the JPEG file being read; if so,
* reassemble and return the profile data.
*
* TRUE is returned if an ICC profile was found, FALSE if not. If TRUE is
* returned, *icc_data_ptr is set to point to the returned data, and
* *icc_data_len is set to its length.
*
* IMPORTANT: the data at *icc_data_ptr is allocated with malloc() and must be
* freed by the caller with free() when the caller no longer needs it.
* (Alternatively, we could write this routine to use the IJG library's memory
* allocator, so that the data would be freed implicitly when
* jpeg_finish_decompress() is called. But it seems likely that many
* applications will prefer to have the data stick around after decompression
* finishes.)
*/
GLOBAL
(
boolean
)
jpeg_read_icc_profile
(
j_decompress_ptr
cinfo
,
JOCTET
**
icc_data_ptr
,
unsigned
int
*
icc_data_len
)
{
jpeg_saved_marker_ptr
marker
;
int
num_markers
=
0
;
int
seq_no
;
JOCTET
*
icc_data
;
unsigned
int
total_length
;
#define MAX_SEQ_NO 255
/* sufficient since marker numbers are bytes */
char
marker_present
[
MAX_SEQ_NO
+
1
];
/* 1 if marker found */
unsigned
int
data_length
[
MAX_SEQ_NO
+
1
];
/* size of profile data in marker */
unsigned
int
data_offset
[
MAX_SEQ_NO
+
1
];
/* offset for data in marker */
if
(
icc_data_ptr
==
NULL
||
icc_data_len
==
NULL
)
ERREXIT
(
cinfo
,
JERR_BUFFER_SIZE
);
if
(
cinfo
->
global_state
<
DSTATE_READY
)
ERREXIT1
(
cinfo
,
JERR_BAD_STATE
,
cinfo
->
global_state
);
*
icc_data_ptr
=
NULL
;
/* avoid confusion if FALSE return */
*
icc_data_len
=
0
;
/* This first pass over the saved markers discovers whether there are
* any ICC markers and verifies the consistency of the marker numbering.
*/
for
(
seq_no
=
1
;
seq_no
<=
MAX_SEQ_NO
;
seq_no
++
)
marker_present
[
seq_no
]
=
0
;
for
(
marker
=
cinfo
->
marker_list
;
marker
!=
NULL
;
marker
=
marker
->
next
)
{
if
(
marker_is_icc
(
marker
))
{
if
(
num_markers
==
0
)
num_markers
=
GETJOCTET
(
marker
->
data
[
13
]);
else
if
(
num_markers
!=
GETJOCTET
(
marker
->
data
[
13
]))
{
WARNMS
(
cinfo
,
JWRN_BOGUS_ICC
);
/* inconsistent num_markers fields */
return
FALSE
;
}
seq_no
=
GETJOCTET
(
marker
->
data
[
12
]);
if
(
seq_no
<=
0
||
seq_no
>
num_markers
)
{
WARNMS
(
cinfo
,
JWRN_BOGUS_ICC
);
/* bogus sequence number */
return
FALSE
;
}
if
(
marker_present
[
seq_no
])
{
WARNMS
(
cinfo
,
JWRN_BOGUS_ICC
);
/* duplicate sequence numbers */
return
FALSE
;
}
marker_present
[
seq_no
]
=
1
;
data_length
[
seq_no
]
=
marker
->
data_length
-
ICC_OVERHEAD_LEN
;
}
}
if
(
num_markers
==
0
)
return
FALSE
;
/* Check for missing markers, count total space needed,
* compute offset of each marker's part of the data.
*/
total_length
=
0
;
for
(
seq_no
=
1
;
seq_no
<=
num_markers
;
seq_no
++
)
{
if
(
marker_present
[
seq_no
]
==
0
)
{
WARNMS
(
cinfo
,
JWRN_BOGUS_ICC
);
/* missing sequence number */
return
FALSE
;
}
data_offset
[
seq_no
]
=
total_length
;
total_length
+=
data_length
[
seq_no
];
}
if
(
total_length
==
0
)
{
WARNMS
(
cinfo
,
JWRN_BOGUS_ICC
);
/* found only empty markers? */
return
FALSE
;
}
/* Allocate space for assembled data */
icc_data
=
(
JOCTET
*
)
malloc
(
total_length
*
sizeof
(
JOCTET
));
if
(
icc_data
==
NULL
)
ERREXIT1
(
cinfo
,
JERR_OUT_OF_MEMORY
,
11
);
/* oops, out of memory */
/* and fill it in */
for
(
marker
=
cinfo
->
marker_list
;
marker
!=
NULL
;
marker
=
marker
->
next
)
{
if
(
marker_is_icc
(
marker
))
{
JOCTET
FAR
*
src_ptr
;
JOCTET
*
dst_ptr
;
unsigned
int
length
;
seq_no
=
GETJOCTET
(
marker
->
data
[
12
]);
dst_ptr
=
icc_data
+
data_offset
[
seq_no
];
src_ptr
=
marker
->
data
+
ICC_OVERHEAD_LEN
;
length
=
data_length
[
seq_no
];
while
(
length
--
)
{
*
dst_ptr
++
=
*
src_ptr
++
;
}
}
}
*
icc_data_ptr
=
icc_data
;
*
icc_data_len
=
total_length
;
return
TRUE
;
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录