Skip to content

Commit ed9421e

Browse files
authored
* Add FFV1 (#7)
* Update OpenJPH (performance+ bug fix) * Improve page appearance
1 parent 5591b1d commit ed9421e

23 files changed

+799
-241
lines changed

.gitmodules

+4
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,7 @@
1919
[submodule "ext/lodepng"]
2020
path = ext/lodepng
2121
url = https://github.com/lvandeve/lodepng.git
22+
[submodule "ext/ffmpeg"]
23+
path = ext/ffmpeg
24+
url = https://github.com/FFmpeg/FFmpeg.git
25+
shallow = true

CMakeLists.txt

+32-15
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,27 @@ include_directories(ext/libjxl/experimental/fast_lossless ext/libjxl/lib/include
5353
add_library(fast_lossless ext/libjxl/experimental/fast_lossless/fast_lossless.cc)
5454
add_subdirectory(ext/libjxl)
5555

56+
# ffmpeg
57+
58+
# CONFIGURE_COMMAND ./configure --disable-avdevice --disable-avformat --disable-swresample --disable-swscale --disable-avfilter --disable-doc --disable-programs --prefix=${FFMPEG_INSTALL_DIR}
59+
60+
61+
include(ExternalProject)
62+
set(FFMPEG_INSTALL_DIR ${CMAKE_BINARY_DIR}/ext/ffmpeg)
63+
ExternalProject_Add(ffmpeg
64+
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/ext/ffmpeg
65+
CONFIGURE_COMMAND ./configure --disable-avdevice --disable-avformat --disable-swresample --disable-swscale --disable-avfilter --disable-doc --disable-programs --disable-everything --enable-encoder=ffv1 --enable-decoder=ffv1 --prefix=${FFMPEG_INSTALL_DIR}
66+
BUILD_COMMAND make -j${CONCURRENCY}
67+
BUILD_IN_SOURCE TRUE
68+
)
69+
include_directories(${PROJECT_BINARY_DIR}/ext/ffmpeg/include)
70+
add_library(libavcodec STATIC IMPORTED)
71+
add_dependencies(libavcodec ffmpeg)
72+
set_target_properties(libavcodec PROPERTIES IMPORTED_LOCATION ${FFMPEG_INSTALL_DIR}/lib/libavcodec.a)
73+
add_library(libavutil STATIC IMPORTED)
74+
add_dependencies(libavutil ffmpeg)
75+
set_target_properties(libavutil PROPERTIES IMPORTED_LOCATION ${FFMPEG_INSTALL_DIR}/lib/libavutil.a)
76+
5677
# md5
5778

5879
include_directories(ext/crypto-algorithms)
@@ -62,23 +83,19 @@ add_library(md5 ext/crypto-algorithms/md5.c)
6283

6384
file(GLOB LIBENCH_SRC_FILES src/main/cpp/*)
6485
add_executable(libench ${LIBENCH_SRC_FILES} ext/lodepng/lodepng.cpp)
65-
target_link_libraries(libench openjph md5 jxl jxl_threads fast_lossless ${KDU_LIBRARY} ${CMAKE_DL_LIBS})
66-
67-
#if(1)
68-
# message("Including Kakadu SDK: ${KDU_LIBRARY}")
69-
# target_compile_definitions(libench PRIVATE KDU_PRESENT=${KDU_PRESENT})
70-
#
71-
# target_link_libraries(libench ${KDU_LIBRARY} ${CMAKE_DL_LIBS})
72-
#endif()
86+
target_link_libraries(libench openjph md5 jxl jxl_threads fast_lossless libavcodec libavutil ${KDU_LIBRARY} ${CMAKE_DL_LIBS})
7387

7488
# tests
7589

7690
enable_testing()
7791

78-
add_test(NAME "ojph" COMMAND libench j2k_ojph ${PROJECT_SOURCE_DIR}/src/test/resources/test1.png)
79-
add_test(NAME "qoi-rgb" COMMAND libench qoi ${PROJECT_SOURCE_DIR}/src/test/resources/test1.png)
80-
add_test(NAME "qoi-rgba" COMMAND libench qoi ${PROJECT_SOURCE_DIR}/src/test/resources/rgba.png)
81-
add_test(NAME "jxl-rgb" COMMAND libench jxl ${PROJECT_SOURCE_DIR}/src/test/resources/test1.png)
82-
add_test(NAME "jxl-rgba" COMMAND libench jxl -r 1 --dir . ${PROJECT_SOURCE_DIR}/src/test/resources/rgba.png)
83-
add_test(NAME "kdu-ht" COMMAND libench j2k_kduht ${PROJECT_SOURCE_DIR}/src/test/resources/test1.png)
84-
add_test(NAME "png" COMMAND libench png ${PROJECT_SOURCE_DIR}/src/test/resources/test1.png)
92+
add_test(NAME "j2k_ht_ojph" COMMAND libench j2k_ht_ojph ${PROJECT_SOURCE_DIR}/src/test/resources/images/test1.png)
93+
add_test(NAME "qoi-rgb" COMMAND libench qoi ${PROJECT_SOURCE_DIR}/src/test/resources/images/test1.png)
94+
add_test(NAME "qoi-rgba" COMMAND libench qoi ${PROJECT_SOURCE_DIR}/src/test/resources/images/rgba.png)
95+
add_test(NAME "jxl-rgb" COMMAND libench jxl ${PROJECT_SOURCE_DIR}/src/test/resources/images/test1.png)
96+
add_test(NAME "jxl-rgba" COMMAND libench jxl -r 1 --dir . ${PROJECT_SOURCE_DIR}/src/test/resources/images/rgba.png)
97+
add_test(NAME "j2k_ht_kdu" COMMAND libench j2k_ht_kdu ${PROJECT_SOURCE_DIR}/src/test/resources/images/test1.png)
98+
add_test(NAME "j2k_1_kdu" COMMAND libench j2k_1_kdu ${PROJECT_SOURCE_DIR}/src/test/resources/images/test1.png)
99+
add_test(NAME "png" COMMAND libench png ${PROJECT_SOURCE_DIR}/src/test/resources/images/test1.png)
100+
add_test(NAME "ffv1" COMMAND libench ffv1 ${PROJECT_SOURCE_DIR}/src/test/resources/images/test1.png)
101+
add_test(NAME "ffv1-rgba" COMMAND libench ffv1 ${PROJECT_SOURCE_DIR}/src/test/resources/images/rgba.png)

Pipfile

+1
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,4 @@ python_version = "3"
1616

1717
[dev-packages]
1818
pylint = "==2.11.1"
19+
autopep8 = "*"

Pipfile.lock

+129-111
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ext/OpenJPH

Submodule OpenJPH updated 54 files

ext/ffmpeg

Submodule ffmpeg added at 9ab20b1

src/main/cpp/codec.h

+26-7
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,11 @@ namespace libench {
99
struct CodestreamBuffer {
1010
uint8_t* codestream;
1111
size_t size;
12+
uint8_t* init_data;
13+
size_t init_data_size;
14+
15+
CodestreamBuffer()
16+
: codestream(NULL), size(0), init_data(NULL), init_data_size(0) {}
1217
};
1318

1419
struct PixelBuffer {
@@ -21,19 +26,33 @@ struct PixelBuffer {
2126
class Encoder {
2227
public:
2328
virtual CodestreamBuffer encodeRGB8(const uint8_t* pixels,
24-
uint32_t width,
25-
uint32_t height) = 0;
29+
uint32_t width,
30+
uint32_t height) = 0;
2631

2732
virtual CodestreamBuffer encodeRGBA8(const uint8_t* pixels,
28-
uint32_t width,
29-
uint32_t height) = 0;
33+
uint32_t width,
34+
uint32_t height) = 0;
35+
36+
virtual ~Encoder() {}
3037
};
3138

3239
class Decoder {
3340
public:
34-
virtual PixelBuffer decodeRGB8(const uint8_t* codestream, size_t size) = 0;
35-
36-
virtual PixelBuffer decodeRGBA8(const uint8_t* codestream, size_t size) = 0;
41+
virtual PixelBuffer decodeRGB8(const uint8_t* codestream,
42+
size_t size,
43+
uint32_t width,
44+
uint32_t height,
45+
const uint8_t* init_data,
46+
size_t init_data_size) = 0;
47+
48+
virtual PixelBuffer decodeRGBA8(const uint8_t* codestream,
49+
size_t size,
50+
uint32_t width,
51+
uint32_t height,
52+
const uint8_t* init_data,
53+
size_t init_data_size) = 0;
54+
55+
virtual ~Decoder() {}
3756
};
3857

3958
}; // namespace libench

0 commit comments

Comments
 (0)