mirror of
https://github.com/switchbrew/libnx.git
synced 2025-06-21 04:22:50 +02:00
51 lines
1.5 KiB
C
51 lines
1.5 KiB
C
/**
|
|
* @file audrec.h
|
|
* @brief Audio Recorder IPC wrapper.
|
|
* @author plutoo
|
|
* @copyright libnx Authors
|
|
*/
|
|
#pragma once
|
|
|
|
#include "../types.h"
|
|
#include "../audio/audio.h"
|
|
#include "../sf/service.h"
|
|
#include "../kernel/event.h"
|
|
|
|
typedef struct {
|
|
u64 released_ns;
|
|
u64 next_buffer_ptr;
|
|
u64 sample_buffer_ptr;
|
|
u64 sample_buffer_capacity;
|
|
u64 data_size;
|
|
u64 data_offset;
|
|
} FinalOutputRecorderBuffer;
|
|
|
|
typedef struct {
|
|
u32 sample_rate;
|
|
u32 channel_count;
|
|
} FinalOutputRecorderParameter;
|
|
|
|
typedef struct {
|
|
u32 sample_rate;
|
|
u32 channel_count;
|
|
u32 sample_format;
|
|
u32 state;
|
|
} FinalOutputRecorderParameterInternal;
|
|
|
|
typedef struct {
|
|
Service s;
|
|
} AudrecRecorder;
|
|
|
|
Result audrecInitialize(void);
|
|
void audrecExit(void);
|
|
Service* audrecGetServiceSession(void);
|
|
|
|
Result audrecOpenFinalOutputRecorder(AudrecRecorder* recorder_out, FinalOutputRecorderParameter* param_in, u64 aruid, FinalOutputRecorderParameterInternal* param_out);
|
|
|
|
Result audrecRecorderStart(AudrecRecorder* recorder);
|
|
Result audrecRecorderStop(AudrecRecorder* recorder);
|
|
Result audrecRecorderRegisterBufferEvent(AudrecRecorder* recorder, Event* out_event);
|
|
Result audrecRecorderAppendFinalOutputRecorderBuffer(AudrecRecorder* recorder, u64 buffer_client_ptr, FinalOutputRecorderBuffer* param);
|
|
Result audrecRecorderGetReleasedFinalOutputRecorderBuffers(AudrecRecorder* recorder, u64* out_buffers, u64* inout_count, u64* out_released);
|
|
void audrecRecorderClose(AudrecRecorder* recorder);
|