aboutsummaryrefslogtreecommitdiffstats
path: root/examples/alffplay.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Update to C++14Chris Robinson2020-03-221-1/+1
|
* Remove AL_SOFT_map_buffer from alffplay and add AL_SOFT_callback_bufferChris Robinson2020-02-231-153/+365
| | | | | | | The former doesn't really help too much since buffers still need to be (re)filled and (de)queued individually. A callback buffer, on the other hand, allows for greater efficiency since it just needs to write into a ring buffer that the mixer will directly read from.
* Get the audio sync once per update in alffplayChris Robinson2020-01-131-29/+27
|
* Finalize AL_SOFT_bformat_exChris Robinson2020-01-051-12/+12
|
* Make the new direct channel remix extension publicChris Robinson2019-12-281-7/+12
|
* Test the B-Format buffer extension in alffplayChris Robinson2019-12-021-9/+43
|
* Avoid implicit conversions with the examples and utilsChris Robinson2019-09-121-42/+44
|
* Cleanup the examples' includesChris Robinson2019-07-291-8/+23
|
* Increase the video picture queue size to 24Chris Robinson2019-07-261-1/+1
|
* Only redraw the image when necessaryChris Robinson2019-07-231-5/+16
|
* Only send packets as neededChris Robinson2019-07-231-39/+49
|
* Use a local variable to track the decoded ptsChris Robinson2019-07-201-6/+5
|
* Set the initial clock time closer to starting playbackChris Robinson2019-07-201-15/+13
|
* Restructure codec send/receive callsChris Robinson2019-07-191-75/+64
| | | | | | | | | In particular, after an initial fill of the codec's internal buffer, each receive_frame call is followed by one or more send_packet calls. For asynchronous codecs, this has the effect of letting the codec work while the handler thread is waiting for an AVFrame structure to become available or waiting for more decoded data to be needed. For synchronous codecs, this makes the send_packet calls use up time that would be spent waiting.
* Receive video frames in a loopChris Robinson2019-07-161-40/+50
|
* Use atomics for the picture queueChris Robinson2019-07-141-29/+35
|
* Don't use the same mutex for the video clockChris Robinson2019-07-141-16/+14
|
* Receive frames directly into the picture's AVFrameChris Robinson2019-07-141-34/+19
|
* Don't use one texture per picture in alffplayChris Robinson2019-07-141-79/+60
|
* Handle alffplay video using continuous renderingChris Robinson2019-07-121-291/+236
|
* Try to improve alffplay timing againChris Robinson2019-07-111-25/+38
|
* Some clean up to use uniform initializationChris Robinson2019-07-101-24/+24
|
* Improve alffplay video clock timingChris Robinson2019-07-091-7/+12
|
* Rework packet handling in alffplayChris Robinson2019-07-081-228/+170
| | | | | | | | | | Turns out avcodec_send_packet is what can invoke the decode for serialized codecs, so don't call that in the parse handler thread. The packet queue is used to get the compressed data from the parse handler to the audio/video threads. Additionally, don't serialize the video frame preparation with the decode thread.
* Somewhat simplify alffplay playback timingChris Robinson2019-07-061-49/+29
|
* Properly set DisableVideo to trueChris Robinson2019-06-301-1/+1
|
* Add an option to disable video in alffplayChris Robinson2019-06-301-1/+4
|
* Use a proper flag to indicate audio is prepared in alffplayChris Robinson2019-03-011-14/+9
|
* Unlock the audio decoder mutex before disabling events in alffplayChris Robinson2019-02-251-2/+3
| | | | | The callback may be waiting on the mutex, but disabling the callback needs any current invocation to finish first.
* Fixed alffplay underrun recovery timingChris Robinson2019-02-041-33/+26
|
* Partially handle ambisonics in alffplayChris Robinson2019-01-271-28/+98
| | | | | | | | | This is currently really only applicable to Opus-encoded files. It assumes AmbiX (SN3D normalization, ACN ordering) and only comes into play when the channel layout is blank. FFmpeg/libavcodec doesn't have a way to detect B-Format input or what normalization and ordering it uses. Note in particular .amb files do not play correctly (libavcodec seems to apply a default channel layout for 4-channel wav-type files, regardless of its channel mask value).
* Replace a couple more C-style castsChris Robinson2019-01-081-3/+2
|
* Avoid using old style castsFilip Gawin2019-01-081-14/+14
| | | | | | To think about: examples/alffplay.cpp:600 OpenAL32/Include/alMain.h:295
* Use nullptr in cpp filesFilip Gawin2019-01-071-1/+1
|
* Try to improve alffplay underrun device time adjustmentChris Robinson2018-11-201-1/+1
|
* Improve audio underrun recordery in alffplayChris Robinson2018-11-181-0/+12
| | | | | Now it has a better idea to skip samples during refill instead of after restarting.
* Use the common init/close functions for alffplayChris Robinson2018-10-101-33/+14
|
* Allow building alffplay without experimental extensionsChris Robinson2018-10-081-12/+42
|
* Add an alffplay option to play stereo streams with wide anglesChris Robinson2018-05-171-10/+34
|
* Added missing string include to alffplayHenri Hyyryläinen2018-03-301-0/+1
|
* fix building on freebsd (clang)Alexey Elymanov2018-02-201-0/+1
| | | fixes error: 'pow' is not a member of 'std'
* Handle disconnected events in alffplayChris Robinson2018-02-031-4/+18
|
* Signal a condition variable when a buffer completes in alffplayChris Robinson2018-02-011-4/+9
|
* Don't print buffer completed events in alffplayChris Robinson2018-01-311-0/+6
|
* Use std::array instead of a plain array in alffplayChris Robinson2018-01-281-4/+4
|
* Enable events in alffplayChris Robinson2018-01-241-0/+73
|
* Use a new proper buffer function with a flags parameterChris Robinson2018-01-231-12/+11
| | | | | | Rather than hackily combining bit flags with the format, to increase the number of potential flags. alBufferData now behaves as if calling alBufferStorageSOFT with a flags value of 0.
* Test mapped buffers in alffplayChris Robinson2018-01-231-14/+68
|
* Remove alffplay's duplicate ALC_SOFT_device_clock declarationsChris Robinson2018-01-151-14/+0
|
* Finalize ALC_SOFT_device_clockChris Robinson2018-01-151-4/+1
|