Re: RFR: 8277309: Add support for H.265/HEVC to HTTP Live Streaming [v3]

2022-03-17 Thread Alexander Matveev
On Fri, 18 Mar 2022 02:20:11 GMT, Alexander Matveev  
wrote:

>> - Added support for fragmented MP4 with HEVC/H.265, H.264 and AAC. 
>>  - Added support for elementary AAC streams without any container for audio 
>> only streams.
>>  - Added "aacparse" plugin from GStreamer. Required on Linux, since decoder 
>> cannot handle AAC elementary streams directly. DirectShow decoder works 
>> without it.
>>  - DirectShow H.264 decoder on Windows and H.265/H.264 decoder on Linux will 
>> be reloaded when fMP4 stream changes resolution. Dynamic format change did 
>> not worked for these streams on Windows and Linux.
>
> Alexander Matveev has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   8277309: Add support for H.265/HEVC to HTTP Live Streaming [v3]

Fixed several issues found during additional testing:
- sendHeader was true by default which caused sending first and second segment 
together for MP2TS and MP3/AAC elementary streams. This variable should be true 
only for fragmented MP4.
- Removed G_SIGNAL_NO_RECURSE flag from javasource signals. From GLib doc 
"G_SIGNAL_NO_RECURSE - Signals being emitted for an object while currently 
being in emission for this very object will not be emitted recursively, but 
instead cause the first emission to be restarted." Basically it caused skipping 
data segments since in some cases loadNextSegment() was called twice. We do use 
signal mechanism from separate thread when reading duration. This issue is 
intermittent. All GStreamer provided elements do not use G_SIGNAL_NO_RECURSE 
flag, so not sure why javasource was using it.
- Fixed duration calculation. We should not count duration of header, since 
header does not contain any data.
- Added code which will adjust PTS during rendering to start with 0, otherwise 
(after duration fix) we will drop frames with PTS > duration. Note: In fMP4 HLS 
streams PTS starts with N and goes upto duration + N. Our rendering code 
expects start with 0 and stop at duration.
- Minor code cleanup and removal of unnecessary "if (segment.start != 0)" check 
in hlsprogressbuffer.

-

PR: https://git.openjdk.java.net/jfx/pull/726


Re: RFR: 8277309: Add support for H.265/HEVC to HTTP Live Streaming [v3]

2022-03-17 Thread Alexander Matveev
> - Added support for fragmented MP4 with HEVC/H.265, H.264 and AAC. 
>  - Added support for elementary AAC streams without any container for audio 
> only streams.
>  - Added "aacparse" plugin from GStreamer. Required on Linux, since decoder 
> cannot handle AAC elementary streams directly. DirectShow decoder works 
> without it.
>  - DirectShow H.264 decoder on Windows and H.265/H.264 decoder on Linux will 
> be reloaded when fMP4 stream changes resolution. Dynamic format change did 
> not worked for these streams on Windows and Linux.

Alexander Matveev has updated the pull request incrementally with one 
additional commit since the last revision:

  8277309: Add support for H.265/HEVC to HTTP Live Streaming [v3]

-

Changes:
  - all: https://git.openjdk.java.net/jfx/pull/726/files
  - new: https://git.openjdk.java.net/jfx/pull/726/files/08ce8569..49b6b2e4

Webrevs:
 - full: https://webrevs.openjdk.java.net/?repo=jfx&pr=726&range=02
 - incr: https://webrevs.openjdk.java.net/?repo=jfx&pr=726&range=01-02

  Stats: 84 lines in 5 files changed: 51 ins; 17 del; 16 mod
  Patch: https://git.openjdk.java.net/jfx/pull/726.diff
  Fetch: git fetch https://git.openjdk.java.net/jfx pull/726/head:pull/726

PR: https://git.openjdk.java.net/jfx/pull/726


RFR: 8283346: Optimize observable ArrayList creation in FXCollections

2022-03-17 Thread Marius Hanl
This simple PR optimizes the observable `ArrayList` creation by using the 
ArrayList constructor/array size so that the underlying array will be 
initialized at the correct size which will speed up the creation as the array 
does not need to grow as a result of the `addAll` call.

I also added tests which will succeed before and after to verify that nothing 
got broken by this change.
Also I made a benchmark test. Results:

Old: `ListBenchmark.init  thrpt   25  722,842 ± 26,930  ops/s`
New: `ListBenchmark.init  thrpt   25  29262,274 ± 2088,712  ops/s`

Benchmark code


import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.Scope;
import org.openjdk.jmh.annotations.Setup;
import org.openjdk.jmh.annotations.State;
import org.openjdk.jmh.annotations.TearDown;

import java.util.ArrayList;
import java.util.List;

@State(Scope.Benchmark)
public class ListBenchmark {

List strings;

@Setup
public void setup() {
strings = new ArrayList<>();
for(int i = 0; i< 10;i++) {
strings.add("abc: " + i);
}
}

@TearDown
public void tearDown() {
strings = null;
}

@Benchmark
public ObservableList init() {
return FXCollections.observableArrayList(strings);
}
}




-

Commit messages:
 - 8283346: Optimized observable array list creation

Changes: https://git.openjdk.java.net/jfx/pull/758/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jfx&pr=758&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8283346
  Stats: 47 lines in 2 files changed: 41 ins; 2 del; 4 mod
  Patch: https://git.openjdk.java.net/jfx/pull/758.diff
  Fetch: git fetch https://git.openjdk.java.net/jfx pull/758/head:pull/758

PR: https://git.openjdk.java.net/jfx/pull/758


[jfx11u] RFR: 8197991: Selecting many items in a TableView is very slow

2022-03-17 Thread Johan Vos
Co-authored-by: Naohiro Yoshimoto 
Reviewed-by: kcr, aghaisas

-

Commit messages:
 - 8197991: Selecting many items in a TableView is very slow

Changes: https://git.openjdk.java.net/jfx11u/pull/82/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jfx11u&pr=82&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8197991
  Stats: 403 lines in 5 files changed: 357 ins; 40 del; 6 mod
  Patch: https://git.openjdk.java.net/jfx11u/pull/82.diff
  Fetch: git fetch https://git.openjdk.java.net/jfx11u pull/82/head:pull/82

PR: https://git.openjdk.java.net/jfx11u/pull/82


[jfx11u] RFR: 8203463: [Accessibility, Narrator] NPE in TableView

2022-03-17 Thread Johan Vos
Reviewed-by: kcr

-

Commit messages:
 - 8203463: [Accessibility, Narrator] NPE in TableView

Changes: https://git.openjdk.java.net/jfx11u/pull/81/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jfx11u&pr=81&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8203463
  Stats: 1 line in 1 file changed: 1 ins; 0 del; 0 mod
  Patch: https://git.openjdk.java.net/jfx11u/pull/81.diff
  Fetch: git fetch https://git.openjdk.java.net/jfx11u pull/81/head:pull/81

PR: https://git.openjdk.java.net/jfx11u/pull/81


Promote addEventHandler/removeEventHandler to EventTarget interface

2022-03-17 Thread Michael Strauß
I'm working on an application that uses the JavaFX event system
extensively, and I'm finding it quite hard to use common code for
event handler registrations.

The problem is that the `EventTarget` interface contains no
addEventHandler/removeEventHandler methods, and as a consequence of
that, code that uses `EventTarget` ends up requiring lots of brittle
instanceof tests to call these methods on all the different
implementations of `EventTarget`.

There are three buckets of `EventTarget` implementations:

1) Implementations that declare the following methods:
 void addEventHandler(EventType,
EventHandler);
 void removeEventHandler(EventType,
EventHandler);
 void addEventFilter(EventType, EventHandler);
 void removeEventFilter(EventType,
EventHandler);
--> Node, Scene, Window, Transform, Task, Service

2) Implementations that declare the following methods:
 void addEventHandler(EventType, EventHandler);
 void removeEventHandler(EventType, EventHandler);
--> MenuItem, TreeItem, TableColumnBase

(Note that the EventHandler argument ist parameterized as
EventHandler, not EventHandler as in the first set of
methods.)

3) Implementations that don't declare any methods to add or remove
event handlers:
--> Dialog, Tab


I think the situation can be improved by promoting the bucket 1
methods to the `EventTarget` interface, so they can be used
consistently across all implementations of `EventTarget`.

This works seamlessly for bucket 1 and bucket 3 implementations.

With bucket 2, there's the problem that, inconsistently, the
EventHandler argument is not a lower-bounded wildcard.
Unfortunately, a method with an EventHandler parameter cannot
implement an interface method that expects EventHandler.

However, since the erasure of the method remains the same, changing
the method signature would technically be a binary-compatible change.

Do you think this is a useful improvement?


Integrated: 8270867: Debug build of WebKit 613.1 fails on Linux

2022-03-17 Thread Peter Zhelezniakov
On Wed, 16 Mar 2022 07:54:57 GMT, Peter Zhelezniakov  wrote:

> The file `wtf/linux/MemoryPressureLinux.cpp` was renamed 
> `wtf/unix/MemoryPressureUnix.cpp` in https://trac.webkit.org/changeset/261428 
> . In the openjfx workspace, both files are present. I'm removing the old file.

This pull request has now been integrated.

Changeset: eb7fa5dd
Author:Peter Zhelezniakov 
URL:   
https://git.openjdk.java.net/jfx/commit/eb7fa5dd1c0911bca15576060691d884d29895a1
Stats: 142 lines in 2 files changed: 1 ins; 141 del; 0 mod

8270867: Debug build of WebKit 613.1 fails on Linux

Reviewed-by: kcr, jbhaskar

-

PR: https://git.openjdk.java.net/jfx/pull/756