Emoji and other supplementary-plane characters in titles, file names, and subtitle paths were corrupted on the Android MPV path, and malformed bytes from mpv logs could abort under CheckJNI. NewStringUTF/GetStringUTFChars speak JNI's modified UTF-8, not the standard UTF-8 mpv produces and consumes; the native lead-byte filter and the Kotlin surrogate scrubber ran on the wrong side of that conversion and could not recover it. Both directions now go through UTF-16 (NewString/GetStringChars) with a small JNI-free transcoder that replaces malformed input with U+FFFD, the same policy as shared/cpp/sanitize_utf8.h on desktop. The header is covered by the Android host native test harness.
21 lines
743 B
CMake
21 lines
743 B
CMake
cmake_minimum_required(VERSION 3.22.1)
|
|
project(dovi_bridge_test LANGUAGES CXX)
|
|
|
|
enable_testing()
|
|
|
|
add_executable(dovi_bridge_test dovi_bridge_test.cpp)
|
|
target_compile_features(dovi_bridge_test PRIVATE cxx_std_17)
|
|
target_include_directories(dovi_bridge_test PRIVATE fakes)
|
|
|
|
add_test(NAME dovi_bridge_test COMMAND dovi_bridge_test)
|
|
|
|
add_executable(ffmpeg_audio_buffer_test ffmpeg_audio_buffer_test.cpp)
|
|
target_compile_features(ffmpeg_audio_buffer_test PRIVATE cxx_std_17)
|
|
|
|
add_test(NAME ffmpeg_audio_buffer_test COMMAND ffmpeg_audio_buffer_test)
|
|
|
|
add_executable(mpv_utf8_convert_test mpv_utf8_convert_test.cpp)
|
|
target_compile_features(mpv_utf8_convert_test PRIVATE cxx_std_17)
|
|
|
|
add_test(NAME mpv_utf8_convert_test COMMAND mpv_utf8_convert_test)
|