aboutsummaryrefslogtreecommitdiff
path: root/src/core/hle/service/audio
AgeCommit message (Collapse)Author
2019-07-01IAudioDevice::QueryAudioDeviceOutputEventDavid Marcec
The event should only be signaled when an output audio device gets changed. Example, Speaker to USB headset. We don't identify different devices internally yet so there's no need to signal the event yet.
2019-06-19Revert PR 2590.Fernando Sahmkow
Even though it has been proven that IAudioRenderer:SystemEvent is actually an automatic event. The current implementation of such event is all thought to be manual. Thus it's implementation needs to be corrected when doing such change. As it is right now this PR introduced a series of regressions on softlocks on multiple games. Therefore, this pr reverts such change until a correct implementation is made.
2019-06-19Merge pull request #2590 from lioncash/eventbunnei
service/audio/audren_u: Correct event reset type for the system event
2019-06-18service/audio/audren_u: Correct event reset type for the system eventLioncash
This is actually an auto-reset event in the audio service itself, not a manual one.
2019-06-16CleanupDavid Marcec
2019-06-16Impl'd IsUserAccountSwitchLocked, SetAudioOutVolume, GetAudioOutVolume & ↵David Marcec
Partial impl of GetAccumulatedSuspendedTickChangedEvent IPC-100 was changed to InitializeApplicationInfoOld instead of InitializeApplicationInfo. IPC-150 makes an indentical call to IPC-100 however does extra processing. They should not have the same name as it's quite confusing to debug.
2019-05-19Merge pull request #2439 from lioncash/audrenHexagon12
service/audren_u: Get rid of magic values within GetAudioRendererWorkBufferSize
2019-05-18core/kernel/object: Rename ResetType enum membersLioncash
Renames the members to more accurately indicate what they signify. "OneShot" and "Sticky" are kind of ambiguous identifiers for the reset types, and can be kind of misleading. Automatic and Manual communicate the kind of reset type in a clearer manner. Either the event is automatically reset, or it isn't and must be manually cleared. The "OneShot" and "Sticky" terminology is just a hold-over from Citra where the kernel had a third type of event reset type known as "Pulse". Given the Switch kernel only has two forms of event reset types, we don't need to keep the old terminology around anymore.
2019-04-30service/audren_u: Handle variadic command buffers in GetWorkBufferSize()Lioncash
Also introduced in REV5 was a variable-size audio command buffer. This also affects how the size of the work buffer should be determined, so we can add handling for this as well. Thankfully, no other alterations were made to how the work buffer size is calculated in 7.0.0-8.0.0. There were indeed changes made to to how some of the actual audio commands are generated though (particularly in REV7), however they don't apply here.
2019-04-30service/audren_u: Handle version 2 of performance frame info in ↵Lioncash
GetWorkBufferSize() Introduced in REV5. This is trivial to add support for, now that everything isn't a mess of random magic constant values. All this is, is a change in data type sizes as far as this function cares.
2019-04-30service/audren_u: Clean up work buffer calculationsLioncash
"Unmagics" quite a few magic constants within this code, making it much easier to understand. Particularly given this factors out specific sections into their own self-contained lambda functions.
2019-04-27service/audctl: Update documentation comments to be relative to 8.0.0Lioncash
The state of these service calls are still the same in version 8.0.0.
2019-04-18service/audctl: Implement GetTargetVolumeMin() and GetTargetVolumeMax()Lioncash
These two service functions are literally hardcoded to always return these values without any other error checking.
2019-04-11service: Update service function tablesLioncash
Updates function tables based off information from SwitchBrew.
2019-04-05Merge pull request #2334 from lioncash/overridebunnei
core: Add missing override specifiers where applicable
2019-04-04hle/service: Resolve unused variable warningsLioncash
In several places, we have request parsers where there's nothing to really parse, simply because the HLE function in question operates on buffers. In these cases we can just remove these instances altogether. In the other cases, we can retrieve the relevant members from the parser and at least log them out, giving them some use.
2019-04-04core: Add missing override specifiers where applicableLioncash
Applies the override specifier where applicable. In the case of destructors that are defaulted in their definition, they can simply be removed. This also removes the unnecessary inclusions being done in audin_u and audrec_u, given their close proximity.
2019-03-11hwopus: Leverage multistream API for decoding regular Opus packetsLioncash
After doing a little more reading up on the Opus codec, it turns out that the multistream API that is part of libopus can handle regular packets. Regular packets are just a degenerate case of multistream Opus packets, and all that's necessary is to pass the number of streams as 1 and provide a basic channel mapping, then everything works fine for that case. This allows us to get rid of the need to use both APIs in the future when implementing multistream variants in a follow-up PR, greatly simplifying the code that needs to be written.
2019-03-10Merge pull request #2207 from lioncash/hwopusbunnei
service/audio/hwopus: Move decoder state to its own class
2019-03-07service/audio/hwopus: Move decoder state to its own classLioncash
Moves the non-multistream specific state to its own class. This will be necessary to support the multistream variants of opus decoding.
2019-03-07service/audio/hwopus: Provide a name for the second word of OpusPacketHeaderLioncash
This indicates the entropy coder's final range.
2019-03-07service/audio/hwopus: Move Opus packet header out of the ↵Lioncash
IHardwareOpusDecoderManager This will be utilized by more than just that class in the future. This also renames it from OpusHeader to OpusPacketHeader to be more specific about what kind of header it is.
2019-03-07service/audio/hwopus: Enclose internals in an anonymous namespaceLioncash
Makes it impossible to violate the ODR, as well as providing a place for future changes.
2019-03-07service/audio/audout_u: Only actually stop the audio stream in StopAudioOut ↵Lioncash
if the stream is playing The service itself only does further actions if the stream is playing. If the stream is already stopped, then it just exits successfully.
2019-03-06hle/service/audio/audout_u: Correct lack of return in failure case of ↵Lioncash
AppendAudioOutBufferImpl() Previously we were overwriting the error case with a success code further down (which is definitely not what we should be doing here).
2019-03-05hle/service/audio: Extract audio error codes to a headerLioncash
Places all error codes in an easily includable header. This also corrects the unsupported error code (I accidentally used the hex value when I meant to use the decimal one).
2019-03-01Merge pull request #2180 from lioncash/audrenbunnei
service/audio: Provide an implementation of ExecuteAudioRendererRendering
2019-03-01service/audio/audren_u: Implement OpenAudioRendererAutoLioncash
This currently has the same behavior as the regular OpenAudioRenderer API function, so we can just move the code within OpenAudioRenderer to an internal function that both service functions call.
2019-03-01service/audio: Provide an implementation of ExecuteAudioRendererRenderingLioncash
This service function appears to do nothing noteworthy on the switch. All it does at the moment is either return an error code or abort the system. Given we obviously don't want to kill the system, we just opt for always returning the error code.
2019-02-27audio_core/audio_renderer: Name previously unknown parameters of ↵Lioncash
AudioRendererParameter Provides names for previously unknown entries (aside from the two u8 that appear to be padding bytes, and a single word that also appears to be reserved or padding). This will be useful in subsequent changes when unstubbing behavior related to the audio renderer services.
2019-02-15core_timing: Convert core timing into a classLioncash
Gets rid of the largest set of mutable global state within the core. This also paves a way for eliminating usages of GetInstance() on the System class as a follow-up. Note that no behavioral changes have been made, and this simply extracts the functionality into a class. This also has the benefit of making dependencies on the core timing functionality explicit within the relevant interfaces.
2019-02-01Merge pull request #2073 from lioncash/opusbunnei
hwopus: Implement DecodeInterleaved (the newest variant)
2019-01-30hwopus: Implement DecodeInterleavedLioncash
This functions almost identically to DecodeInterleavedWithPerfOld, however this function also has the ability to reset the decoder context. This is documented as a potentially desirable thing in the libopus manual in some circumstances as it says for the OPUS_RESET_STATE ctl: "This should be called when switching streams in order to prevent the back to back decoding from giving different result from one at a time decoding."
2019-01-29hwopus: Deduplicate the decoding code within DecodeInterleavedOld and ↵Lioncash
DecodeInterleavedWithPerfOld Keeps the logic in one spot for use by both functions.
2019-01-29hwopus: Replace std::optional<std::reference_wrapper<u64>> with u64*Lioncash
This doesn't really offer anything over the use of a direct pointer, so we can just use that instead.
2019-01-29hwopus: Mark local variables as const where applicableLioncash
Makes non-mutable state more explicit.
2019-01-29hwopus: Fill in the rest of the unknown service function namesLioncash
Filled in via information provided by SwitchBrew.
2019-01-29service/audio: Update function tablesLioncash
Updates function tables based off information provided by SwitchBrew.
2018-12-03Merge pull request #1803 from DarkLordZach/k-able-eventbunnei
kernel: Divide Event into ReadableEvent and WritableEvent
2018-12-01service/audio/audout_u: Amend constructor initialization list orderLioncash
Orders the constructor initializer list the same way the members of the class are declared. Prevents -Wreorder warnings
2018-11-29kernel/event: Reference ReadableEvent from WritableEventZach Hilman
2018-11-29core: Port all current usages of Event to Readable/WritableEventZach Hilman
2018-11-26Fixed hwopus compile errorDavid Marcec
2018-11-26Improved error messages in AM, HwOpus and NvMapDavid Marcec
2018-11-26Changed logging to be "Log before execution", Added more error logging, all ↵David Marcec
services should now log on some level
2018-11-22audout_u: Add support for multiple IAudioOut streams.bunnei
- Used by Undertale.
2018-11-16hwopus: DecodeInterleavedWithPerformance: Fix ordering of output parameters.bunnei
- Fixes audio issues with Pokemon: Let's Go Pikachu & Eevee.
2018-11-14service/audren_u: Forward RequestUpdateAuto through the same function as ↵Lioncash
RequestUpdate Based off RE, they both currently go through the same codepath with no difference in behavior.
2018-11-13hle/audren_u: Implement Get/SetRenderingTimeLimitLioncash
These appear to be a basic getter and setter pair, so these are fairly trivial to implement and get out of the way.
2018-11-02Fixed incorrect hwopus assertDavid Marcec