On Thu, 3 Jul 2025 21:23:47 GMT, Alexander Matveev <almat...@openjdk.org> wrote:
>> After JDK-8287822 (https://bugs.openjdk.org/browse/JDK-8287822), mpeg file >> content is no longer played via GSTPlatform but via OSXPlatform. >> We need to correctly handle data in case the source is a file inside a jar, >> in which case CJavaInputStreamCallbacks is used. >> >> The 2 changes I made are: >> 1. Use ConnectionHolder instead of Locator for CJavaInputStreamCallbacks in >> case a jar resource is used. >> 2. In case of random access datasource, use readBlock instead of >> readNextBlock in AVMediaPlayer > > modules/javafx.media/src/main/native/jfxmedia/platform/osx/avf/AVFMediaPlayer.mm > line 806: > >> 804: >> 805: NSMutableData* readData = nil; >> 806: bool isRandomAccess = >> locatorStream->GetCallbacks()->IsRandomAccess(); > > `URIConnectionHolder` always return `false` for "jar" or "jrt" protocol. Why > it was added? In case of jar, the ConnectionHolder is a `MemoryConnectionHolder` (because Locator already has a cacheEntry) which has true for isRandomAccess. In case `readNextBlock` is used on a MemoryConnectionHolder, it seems all chuncks are asked and played simultaneously (bug in MemoryConnectionHolder.readNextBlock?). With `readBlock` the order and sequence seem to be ok. ------------- PR Review Comment: https://git.openjdk.org/jfx/pull/1839#discussion_r2185323239