aboutsummaryrefslogtreecommitdiff
path: root/src/core/hle/service/audio
AgeCommit message (Collapse)Author
2019-09-05Merge pull request #2834 from Morph1984/audrenu_QueryAudioDeviceInputEventDavid
audren_u: Stub IAudioDevice::QueryAudioDeviceInputEvent
2019-09-03Add Kernel::EventPair audio_input_device_switch_event;Morph1984
2019-09-03remove <f32>Morph1984
We can remove this since its already a f32 value
2019-09-03audren_u: Stub IAudioDevice::QueryAudioDeviceInputEventMorph1984
2019-09-03explicitly represent 1 as a float (1.0f instead of 1)Morph1984
2019-09-03Change u32 -> f32Morph1984
Volume is a f32 value. (SwIPC describes it as a u32, but it is actually f32 as corroborated by switchbrew docs and SetAudioDeviceOutputVolume) ```cpp const f32 volume = rp.Pop<f32>(); ```
2019-09-03service/audio/audren_u: Stub IAudioDevice::GetAudioDeviceOutputVolumeMorph1984
2019-07-19service/audren_u: Handle audio USB output revision queries in ↵Lioncash
ListAudioDeviceName() Audio devices use the supplied revision information in order to determine if USB audio output is able to be supported. In this case, we can only really handle using this revision information in ListAudioDeviceName(), where it checks if USB audio output is supported before supplying it as a device name. A few other scenarios exist where the revision info is checked, such as: - Early exiting from SetAudioDeviceOutputVolume if USB audio is attempted to be set when that device is unsupported. - Early exiting and returning 0.0f in GetAudioDeviceOutputVolume when USB output volume is queried and it's an unsupported device. - Falling back to AHUB headphones in GetActiveAudioDeviceName when the device type is USB output, but is unsupported based off the revision info. In order for these changes to also be implemented, a few other changes to the interface need to be made. Given we now properly handle everything about ListAudioDeviceName(), we no longer need to describe it as a stubbed function.
2019-07-19service/audren_u: Move revision testing code out of AudRenULioncash
The revision querying facilities are used by more than just audren. e.g. audio devices can use this to test whether or not USB audio output is supported. This will be used within the following change.
2019-07-19service/audio: Remove global system accessorsLioncash
Trims out the lingering reliance on global state out of the audio code.
2019-07-19service/audren_u: Remove unnecessary return value from ↵Lioncash
GetActiveAudioDeviceName() This service function only ever returns a result and nothing more.
2019-07-19service/audren_u: Report proper device namesLioncash
AudioDevice and AudioInterface aren't valid device names on the Switch. We should also be returning consistent names in GetActiveAudioDeviceName(). While we're at it, we can also handle proper name output in ListAudioDeviceName, by returning all the available devices on the Switch.
2019-07-13Clang formatDavid Marcec
2019-07-13"AudioRenderer" thread should have a unique nameDavid Marcec
Creating multiple "AudioRenderer" threads cause the previous thread to be overwritten. The thread will name be renamed to AudioRenderer-InstanceX, where X is the current instance number.
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.