Initial community commit
This commit is contained in:
parent
537bcbc862
commit
fc06254474
16440 changed files with 4239995 additions and 2 deletions
54
Src/replicant/file/FilePlayback.h
Normal file
54
Src/replicant/file/FilePlayback.h
Normal file
|
@ -0,0 +1,54 @@
|
|||
#pragma once
|
||||
#include "player/svc_playback.h"
|
||||
#include "nx/nxstring.h"
|
||||
#include "nx/nxfile.h"
|
||||
#include "nswasabi/ServiceName.h"
|
||||
#include "nswasabi/PlaybackBase.h"
|
||||
#include "ifc_fileplayback.h"
|
||||
#include "replaygain/ifc_replaygain_settings.h"
|
||||
#include "FileMetadata.h"
|
||||
|
||||
// {60DB6A52-1A82-4C0D-A947-203549260758}
|
||||
static const GUID file_playback_guid =
|
||||
{ 0x60db6a52, 0x1a82, 0x4c0d, { 0xa9, 0x47, 0x20, 0x35, 0x49, 0x26, 0x7, 0x58 } };
|
||||
|
||||
class FilePlaybackService : public svc_playback
|
||||
{
|
||||
public:
|
||||
WASABI_SERVICE_NAME("File Playback");
|
||||
static GUID GetServiceGUID() { return file_playback_guid; }
|
||||
FilePlaybackService();
|
||||
int WASABICALL PlaybackService_CreatePlayback(unsigned int pass, nx_uri_t filename, ifc_player *player, ifc_playback **out_playback_object);
|
||||
};
|
||||
|
||||
class FilePlayback : public PlaybackBase, public ifc_fileplayback_parent
|
||||
{
|
||||
public:
|
||||
FilePlayback();
|
||||
~FilePlayback();
|
||||
ns_error_t Initialize(nx_uri_t filename, ifc_player *player);
|
||||
private:
|
||||
ns_error_t WASABICALL FilePlaybackParent_OpenOutput(const ifc_audioout::Parameters *parameters);
|
||||
ns_error_t WASABICALL FilePlaybackParent_Output(const void *audio_data, size_t audio_data_length, size_t *frames_consumed, double begin_position_seconds);
|
||||
ns_error_t WASABICALL FilePlaybackParent_OutputNonInterleaved(const void *audio_data, size_t audio_data_length, size_t *frames_consumed, double begin_position_seconds);
|
||||
ns_error_t WASABICALL FilePlaybackParent_OnMetadata(ifc_metadata *new_metadata);
|
||||
|
||||
ifc_fileplayback *implementation;
|
||||
nx_file_t file;
|
||||
ifc_audioout *out;
|
||||
bool paused;
|
||||
double last_position;
|
||||
ns_error_t exact_length, exact_bitrate;
|
||||
ifc_audioout::Parameters parameters;
|
||||
const uint8_t **output_pointers;
|
||||
ifc_metadata *implementation_metadata;
|
||||
FileMetadataRead *metadata;
|
||||
|
||||
ns_error_t Internal_Interrupt();
|
||||
ns_error_t OutputWait();
|
||||
ns_error_t WaitForClose();
|
||||
|
||||
/* Thread function */
|
||||
static nx_thread_return_t NXTHREADCALL FilePlayerThreadFunction(nx_thread_parameter_t param);
|
||||
nx_thread_return_t NXTHREADCALL DecodeLoop();
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue