Bug 831 - GLMediaPlayer: Use lock free Multithreaded Decoding (StreamWorker) decoupled from user animation thread.
Summary: GLMediaPlayer: Use lock free Multithreaded Decoding (StreamWorker) decoupled ...
Status: RESOLVED FIXED
Alias: None
Product: Jogl
Classification: JogAmp
Component: core (show other bugs)
Version: 2
Hardware: All all
: --- enhancement
Assignee: Sven Gothel
URL:
Depends on:
Blocks: 806
  Show dependency treegraph
 
Reported: 2013-09-09 16:15 CEST by Sven Gothel
Modified: 2013-09-09 16:53 CEST (History)
2 users (show)

See Also:
Type: ---
SCM Refs:
gluegen 77687335f7fae3727c902c678b9525e6f4631da1 gluegen 30475c6bbeb9a5d48899b281ead8bb305679028d gluegen f9f881e59c78e3036cb3f956bc97cfc3197f620d gluegen 32a0435414ef69640fc0816c7b7891535a6aec49 gluegen 0931943b4498eafe857a47dbfa19592caef51546 gluegen ae1dd6990fb4f0f20cc908916a9cb68f0be866ff jogl 6332e13b2f0aa9818d37802302f04c90a4fa4239 jogl e05e3a4ec36708b35eea9a2db67f6007b68564cf jogl f53b7713e5eb58a86faf0db06db8be35cfa413d9 jogl bc3776633ccad81199a96ff8116195133d862395 jogl c37629ea8fdcb11f7f8a18e37a4cde57d4ba6a01 jogl 16324775161ad34672a1506fd707107ac04b4437 jogl c200045aa661cf82474c2b3c1db0ac69db40452a jogl 3f262a9f4653a09b28a84442378428c18b64775f jogl 2cb284545a2a0fd35762a104fee8107234808389 jogl c1b44f3f26a8e44d34dc79850716174a8b36ad91 jogl f18a94b3defef16e98badd6d99f2422609aa56c5 jogl c6555b09c455d0db238e4cf57ee3efd4e426f215 jogl 4dc4a32720e7b176e6811c0eaa8ddc060e1468da jogl 474ce65081ecd452215bc07ab866666cb11ca8b1 jogl d9e4b27179102a8f082532abc8beaa603395e113 jogl 413762735dc54a82fbc98e6b7909543cbbd8622a jogl deae6def7a818d3189bec403f8cde2ad9936d416 jogl d0e01cb5c0ec3e48b8a9b9b79a7795b214c6e3ea jogl 517371b2c200783890e2f6a173748cf65d3c8c91 jogl 8cdbfb676ea31c6719e6f6e8ae7a44e060a5987f jogl 8130f54fa3d7cdde59f4a88af081c44ddfb2c7f0 jogl 1b4edb60e8c91621d93033b8732b2cdef0e7ebe7 jogl 07201cfd793f47729caf8667acad41ed1869bf32 jogl 871c7cac1939e6c7fbcd33aa031b7861f63da6ae jogl e28a3b39e1e8caf3f6cf3bfe82efdaae818a6c7b
Workaround: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Sven Gothel 2013-09-09 16:15:55 CEST
The GLMediaPlayer implementation shall utilize a lock-free ringbuffer
and perform decoding on a separate 'stream-worker' thread.

This shall allow to utilize GLMediaPlayer in a non blocking fashion,
as well as using multiple non-blocking instances within one-scene.
Comment 1 Sven Gothel 2013-09-09 16:36:36 CEST
Some cherry picked changes from the git commits:

- AudioSink (ALAudioSink) works multithreaded
  - Added: play/pause/flush

- AudioSink.AudioFormat refined

- GLMediaPlayer.State refined

- GLMediaPlayer. events refined, incl. error states

- StreamWorker added (see API doc)
  - Proper error propagation

- Non blocking getNextTexture()

- Use non blocking LFRingbuffer (new in GlueGen)

- Use passive non-blocking video synchronization

- Use URI instead of URL

- Add volume control

- Detect END_OF_STREAM_PTS

- Fix audio- and video-only playback

- Reduce 'frame-drop' to 'every 2nd only' pattern

- Split initGLStream(..) -> initStream(..) + initGL(GL)

- FFMPEG:
  - glFinish() in native code where it's required