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

Reply via email to