libnx/nx/include/switch/services/audrec.h
2021-05-31 17:43:02 +02:00

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);