mirror of
https://github.com/mackron/miniaudio.git
synced 2026-04-22 00:06:59 +02:00
API CHANGE: Remove mapping from data sources.
This has proven to be exceptionally un-useful in practice and the maintenance cost just isn't worth it.
This commit is contained in:
@@ -75,8 +75,6 @@ static ma_data_source_vtable g_ma_libopus_ds_vtable =
|
|||||||
{
|
{
|
||||||
ma_libopus_ds_read,
|
ma_libopus_ds_read,
|
||||||
ma_libopus_ds_seek,
|
ma_libopus_ds_seek,
|
||||||
NULL, /* onMap() */
|
|
||||||
NULL, /* onUnmap() */
|
|
||||||
ma_libopus_ds_get_data_format,
|
ma_libopus_ds_get_data_format,
|
||||||
ma_libopus_ds_get_cursor,
|
ma_libopus_ds_get_cursor,
|
||||||
ma_libopus_ds_get_length
|
ma_libopus_ds_get_length
|
||||||
|
|||||||
@@ -76,8 +76,6 @@ static ma_data_source_vtable g_ma_libvorbis_ds_vtable =
|
|||||||
{
|
{
|
||||||
ma_libvorbis_ds_read,
|
ma_libvorbis_ds_read,
|
||||||
ma_libvorbis_ds_seek,
|
ma_libvorbis_ds_seek,
|
||||||
NULL, /* onMap() */
|
|
||||||
NULL, /* onUnmap() */
|
|
||||||
ma_libvorbis_ds_get_data_format,
|
ma_libvorbis_ds_get_data_format,
|
||||||
ma_libvorbis_ds_get_cursor,
|
ma_libvorbis_ds_get_cursor,
|
||||||
ma_libvorbis_ds_get_length
|
ma_libvorbis_ds_get_length
|
||||||
|
|||||||
-58
@@ -5950,8 +5950,6 @@ typedef struct
|
|||||||
{
|
{
|
||||||
ma_result (* onRead)(ma_data_source* pDataSource, void* pFramesOut, ma_uint64 frameCount, ma_uint64* pFramesRead);
|
ma_result (* onRead)(ma_data_source* pDataSource, void* pFramesOut, ma_uint64 frameCount, ma_uint64* pFramesRead);
|
||||||
ma_result (* onSeek)(ma_data_source* pDataSource, ma_uint64 frameIndex);
|
ma_result (* onSeek)(ma_data_source* pDataSource, ma_uint64 frameIndex);
|
||||||
ma_result (* onMap)(ma_data_source* pDataSource, void** ppFramesOut, ma_uint64* pFrameCount); /* Returns MA_AT_END if the end has been reached. This should be considered successful. */
|
|
||||||
ma_result (* onUnmap)(ma_data_source* pDataSource, ma_uint64 frameCount);
|
|
||||||
ma_result (* onGetDataFormat)(ma_data_source* pDataSource, ma_format* pFormat, ma_uint32* pChannels, ma_uint32* pSampleRate);
|
ma_result (* onGetDataFormat)(ma_data_source* pDataSource, ma_format* pFormat, ma_uint32* pChannels, ma_uint32* pSampleRate);
|
||||||
ma_result (* onGetCursor)(ma_data_source* pDataSource, ma_uint64* pCursor);
|
ma_result (* onGetCursor)(ma_data_source* pDataSource, ma_uint64* pCursor);
|
||||||
ma_result (* onGetLength)(ma_data_source* pDataSource, ma_uint64* pLength);
|
ma_result (* onGetLength)(ma_data_source* pDataSource, ma_uint64* pLength);
|
||||||
@@ -5984,8 +5982,6 @@ MA_API void ma_data_source_uninit(ma_data_source* pDataSource);
|
|||||||
MA_API ma_result ma_data_source_read_pcm_frames(ma_data_source* pDataSource, void* pFramesOut, ma_uint64 frameCount, ma_uint64* pFramesRead, ma_bool32 loop); /* Must support pFramesOut = NULL in which case a forward seek should be performed. */
|
MA_API ma_result ma_data_source_read_pcm_frames(ma_data_source* pDataSource, void* pFramesOut, ma_uint64 frameCount, ma_uint64* pFramesRead, ma_bool32 loop); /* Must support pFramesOut = NULL in which case a forward seek should be performed. */
|
||||||
MA_API ma_result ma_data_source_seek_pcm_frames(ma_data_source* pDataSource, ma_uint64 frameCount, ma_uint64* pFramesSeeked, ma_bool32 loop); /* Can only seek forward. Equivalent to ma_data_source_read_pcm_frames(pDataSource, NULL, frameCount); */
|
MA_API ma_result ma_data_source_seek_pcm_frames(ma_data_source* pDataSource, ma_uint64 frameCount, ma_uint64* pFramesSeeked, ma_bool32 loop); /* Can only seek forward. Equivalent to ma_data_source_read_pcm_frames(pDataSource, NULL, frameCount); */
|
||||||
MA_API ma_result ma_data_source_seek_to_pcm_frame(ma_data_source* pDataSource, ma_uint64 frameIndex);
|
MA_API ma_result ma_data_source_seek_to_pcm_frame(ma_data_source* pDataSource, ma_uint64 frameIndex);
|
||||||
MA_API ma_result ma_data_source_map(ma_data_source* pDataSource, void** ppFramesOut, ma_uint64* pFrameCount); /* Returns MA_NOT_IMPLEMENTED if mapping is not supported. */
|
|
||||||
MA_API ma_result ma_data_source_unmap(ma_data_source* pDataSource, ma_uint64 frameCount); /* Returns MA_AT_END if the end has been reached. */
|
|
||||||
MA_API ma_result ma_data_source_get_data_format(ma_data_source* pDataSource, ma_format* pFormat, ma_uint32* pChannels, ma_uint32* pSampleRate);
|
MA_API ma_result ma_data_source_get_data_format(ma_data_source* pDataSource, ma_format* pFormat, ma_uint32* pChannels, ma_uint32* pSampleRate);
|
||||||
MA_API ma_result ma_data_source_get_cursor_in_pcm_frames(ma_data_source* pDataSource, ma_uint64* pCursor);
|
MA_API ma_result ma_data_source_get_cursor_in_pcm_frames(ma_data_source* pDataSource, ma_uint64* pCursor);
|
||||||
MA_API ma_result ma_data_source_get_length_in_pcm_frames(ma_data_source* pDataSource, ma_uint64* pLength); /* Returns MA_NOT_IMPLEMENTED if the length is unknown or cannot be determined. Decoders can return this. */
|
MA_API ma_result ma_data_source_get_length_in_pcm_frames(ma_data_source* pDataSource, ma_uint64* pLength); /* Returns MA_NOT_IMPLEMENTED if the length is unknown or cannot be determined. Decoders can return this. */
|
||||||
@@ -43780,34 +43776,6 @@ MA_API ma_result ma_data_source_seek_to_pcm_frame(ma_data_source* pDataSource, m
|
|||||||
return pDataSourceBase->vtable->onSeek(pDataSource, pDataSourceBase->rangeBegInFrames + frameIndex);
|
return pDataSourceBase->vtable->onSeek(pDataSource, pDataSourceBase->rangeBegInFrames + frameIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
MA_API ma_result ma_data_source_map(ma_data_source* pDataSource, void** ppFramesOut, ma_uint64* pFrameCount)
|
|
||||||
{
|
|
||||||
ma_data_source_base* pDataSourceBase = (ma_data_source_base*)pDataSource;
|
|
||||||
if (pDataSourceBase == NULL) {
|
|
||||||
return MA_INVALID_ARGS;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pDataSourceBase->vtable->onMap == NULL) {
|
|
||||||
return MA_NOT_IMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
return pDataSourceBase->vtable->onMap(pDataSource, ppFramesOut, pFrameCount);
|
|
||||||
}
|
|
||||||
|
|
||||||
MA_API ma_result ma_data_source_unmap(ma_data_source* pDataSource, ma_uint64 frameCount)
|
|
||||||
{
|
|
||||||
ma_data_source_base* pDataSourceBase = (ma_data_source_base*)pDataSource;
|
|
||||||
if (pDataSourceBase == NULL) {
|
|
||||||
return MA_INVALID_ARGS;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pDataSourceBase->vtable->onUnmap == NULL) {
|
|
||||||
return MA_NOT_IMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
return pDataSourceBase->vtable->onUnmap(pDataSource, frameCount);
|
|
||||||
}
|
|
||||||
|
|
||||||
MA_API ma_result ma_data_source_get_data_format(ma_data_source* pDataSource, ma_format* pFormat, ma_uint32* pChannels, ma_uint32* pSampleRate)
|
MA_API ma_result ma_data_source_get_data_format(ma_data_source* pDataSource, ma_format* pFormat, ma_uint32* pChannels, ma_uint32* pSampleRate)
|
||||||
{
|
{
|
||||||
ma_data_source_base* pDataSourceBase = (ma_data_source_base*)pDataSource;
|
ma_data_source_base* pDataSourceBase = (ma_data_source_base*)pDataSource;
|
||||||
@@ -44146,16 +44114,6 @@ static ma_result ma_audio_buffer_ref__data_source_on_seek(ma_data_source* pDataS
|
|||||||
return ma_audio_buffer_ref_seek_to_pcm_frame((ma_audio_buffer_ref*)pDataSource, frameIndex);
|
return ma_audio_buffer_ref_seek_to_pcm_frame((ma_audio_buffer_ref*)pDataSource, frameIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
static ma_result ma_audio_buffer_ref__data_source_on_map(ma_data_source* pDataSource, void** ppFramesOut, ma_uint64* pFrameCount)
|
|
||||||
{
|
|
||||||
return ma_audio_buffer_ref_map((ma_audio_buffer_ref*)pDataSource, ppFramesOut, pFrameCount);
|
|
||||||
}
|
|
||||||
|
|
||||||
static ma_result ma_audio_buffer_ref__data_source_on_unmap(ma_data_source* pDataSource, ma_uint64 frameCount)
|
|
||||||
{
|
|
||||||
return ma_audio_buffer_ref_unmap((ma_audio_buffer_ref*)pDataSource, frameCount);
|
|
||||||
}
|
|
||||||
|
|
||||||
static ma_result ma_audio_buffer_ref__data_source_on_get_data_format(ma_data_source* pDataSource, ma_format* pFormat, ma_uint32* pChannels, ma_uint32* pSampleRate)
|
static ma_result ma_audio_buffer_ref__data_source_on_get_data_format(ma_data_source* pDataSource, ma_format* pFormat, ma_uint32* pChannels, ma_uint32* pSampleRate)
|
||||||
{
|
{
|
||||||
ma_audio_buffer_ref* pAudioBufferRef = (ma_audio_buffer_ref*)pDataSource;
|
ma_audio_buffer_ref* pAudioBufferRef = (ma_audio_buffer_ref*)pDataSource;
|
||||||
@@ -44189,8 +44147,6 @@ static ma_data_source_vtable g_ma_audio_buffer_ref_data_source_vtable =
|
|||||||
{
|
{
|
||||||
ma_audio_buffer_ref__data_source_on_read,
|
ma_audio_buffer_ref__data_source_on_read,
|
||||||
ma_audio_buffer_ref__data_source_on_seek,
|
ma_audio_buffer_ref__data_source_on_seek,
|
||||||
ma_audio_buffer_ref__data_source_on_map,
|
|
||||||
ma_audio_buffer_ref__data_source_on_unmap,
|
|
||||||
ma_audio_buffer_ref__data_source_on_get_data_format,
|
ma_audio_buffer_ref__data_source_on_get_data_format,
|
||||||
ma_audio_buffer_ref__data_source_on_get_cursor,
|
ma_audio_buffer_ref__data_source_on_get_cursor,
|
||||||
ma_audio_buffer_ref__data_source_on_get_length
|
ma_audio_buffer_ref__data_source_on_get_length
|
||||||
@@ -47066,8 +47022,6 @@ static ma_data_source_vtable g_ma_wav_ds_vtable =
|
|||||||
{
|
{
|
||||||
ma_wav_ds_read,
|
ma_wav_ds_read,
|
||||||
ma_wav_ds_seek,
|
ma_wav_ds_seek,
|
||||||
NULL, /* onMap() */
|
|
||||||
NULL, /* onUnmap() */
|
|
||||||
ma_wav_ds_get_data_format,
|
ma_wav_ds_get_data_format,
|
||||||
ma_wav_ds_get_cursor,
|
ma_wav_ds_get_cursor,
|
||||||
ma_wav_ds_get_length
|
ma_wav_ds_get_length
|
||||||
@@ -47707,8 +47661,6 @@ static ma_data_source_vtable g_ma_flac_ds_vtable =
|
|||||||
{
|
{
|
||||||
ma_flac_ds_read,
|
ma_flac_ds_read,
|
||||||
ma_flac_ds_seek,
|
ma_flac_ds_seek,
|
||||||
NULL, /* onMap() */
|
|
||||||
NULL, /* onUnmap() */
|
|
||||||
ma_flac_ds_get_data_format,
|
ma_flac_ds_get_data_format,
|
||||||
ma_flac_ds_get_cursor,
|
ma_flac_ds_get_cursor,
|
||||||
ma_flac_ds_get_length
|
ma_flac_ds_get_length
|
||||||
@@ -48339,8 +48291,6 @@ static ma_data_source_vtable g_ma_mp3_ds_vtable =
|
|||||||
{
|
{
|
||||||
ma_mp3_ds_read,
|
ma_mp3_ds_read,
|
||||||
ma_mp3_ds_seek,
|
ma_mp3_ds_seek,
|
||||||
NULL, /* onMap() */
|
|
||||||
NULL, /* onUnmap() */
|
|
||||||
ma_mp3_ds_get_data_format,
|
ma_mp3_ds_get_data_format,
|
||||||
ma_mp3_ds_get_cursor,
|
ma_mp3_ds_get_cursor,
|
||||||
ma_mp3_ds_get_length
|
ma_mp3_ds_get_length
|
||||||
@@ -48987,8 +48937,6 @@ static ma_data_source_vtable g_ma_stbvorbis_ds_vtable =
|
|||||||
{
|
{
|
||||||
ma_stbvorbis_ds_read,
|
ma_stbvorbis_ds_read,
|
||||||
ma_stbvorbis_ds_seek,
|
ma_stbvorbis_ds_seek,
|
||||||
NULL, /* onMap() */
|
|
||||||
NULL, /* onUnmap() */
|
|
||||||
ma_stbvorbis_ds_get_data_format,
|
ma_stbvorbis_ds_get_data_format,
|
||||||
ma_stbvorbis_ds_get_cursor,
|
ma_stbvorbis_ds_get_cursor,
|
||||||
ma_stbvorbis_ds_get_length
|
ma_stbvorbis_ds_get_length
|
||||||
@@ -49767,8 +49715,6 @@ static ma_data_source_vtable g_ma_decoder_data_source_vtable =
|
|||||||
{
|
{
|
||||||
ma_decoder__data_source_on_read,
|
ma_decoder__data_source_on_read,
|
||||||
ma_decoder__data_source_on_seek,
|
ma_decoder__data_source_on_seek,
|
||||||
NULL, /* onMap */
|
|
||||||
NULL, /* onUnmap */
|
|
||||||
ma_decoder__data_source_on_get_data_format,
|
ma_decoder__data_source_on_get_data_format,
|
||||||
ma_decoder__data_source_on_get_cursor,
|
ma_decoder__data_source_on_get_cursor,
|
||||||
ma_decoder__data_source_on_get_length
|
ma_decoder__data_source_on_get_length
|
||||||
@@ -51544,8 +51490,6 @@ static ma_data_source_vtable g_ma_waveform_data_source_vtable =
|
|||||||
{
|
{
|
||||||
ma_waveform__data_source_on_read,
|
ma_waveform__data_source_on_read,
|
||||||
ma_waveform__data_source_on_seek,
|
ma_waveform__data_source_on_seek,
|
||||||
NULL, /* onMap */
|
|
||||||
NULL, /* onUnmap */
|
|
||||||
ma_waveform__data_source_on_get_data_format,
|
ma_waveform__data_source_on_get_data_format,
|
||||||
ma_waveform__data_source_on_get_cursor,
|
ma_waveform__data_source_on_get_cursor,
|
||||||
NULL /* onGetLength. There's no notion of a length in waveforms. */
|
NULL /* onGetLength. There's no notion of a length in waveforms. */
|
||||||
@@ -51964,8 +51908,6 @@ static ma_data_source_vtable g_ma_noise_data_source_vtable =
|
|||||||
{
|
{
|
||||||
ma_noise__data_source_on_read,
|
ma_noise__data_source_on_read,
|
||||||
ma_noise__data_source_on_seek, /* No-op for noise. */
|
ma_noise__data_source_on_seek, /* No-op for noise. */
|
||||||
NULL, /* onMap */
|
|
||||||
NULL, /* onUnmap */
|
|
||||||
ma_noise__data_source_on_get_data_format,
|
ma_noise__data_source_on_get_data_format,
|
||||||
NULL, /* onGetCursor. No notion of a cursor for noise. */
|
NULL, /* onGetCursor. No notion of a cursor for noise. */
|
||||||
NULL /* onGetLength. No notion of a length for noise. */
|
NULL /* onGetLength. No notion of a length for noise. */
|
||||||
|
|||||||
+65
-83
@@ -1555,8 +1555,6 @@ MA_API ma_result ma_resource_manager_data_stream_init_w(ma_resource_manager* pRe
|
|||||||
MA_API ma_result ma_resource_manager_data_stream_uninit(ma_resource_manager_data_stream* pDataStream);
|
MA_API ma_result ma_resource_manager_data_stream_uninit(ma_resource_manager_data_stream* pDataStream);
|
||||||
MA_API ma_result ma_resource_manager_data_stream_read_pcm_frames(ma_resource_manager_data_stream* pDataStream, void* pFramesOut, ma_uint64 frameCount, ma_uint64* pFramesRead);
|
MA_API ma_result ma_resource_manager_data_stream_read_pcm_frames(ma_resource_manager_data_stream* pDataStream, void* pFramesOut, ma_uint64 frameCount, ma_uint64* pFramesRead);
|
||||||
MA_API ma_result ma_resource_manager_data_stream_seek_to_pcm_frame(ma_resource_manager_data_stream* pDataStream, ma_uint64 frameIndex);
|
MA_API ma_result ma_resource_manager_data_stream_seek_to_pcm_frame(ma_resource_manager_data_stream* pDataStream, ma_uint64 frameIndex);
|
||||||
MA_API ma_result ma_resource_manager_data_stream_map(ma_resource_manager_data_stream* pDataStream, void** ppFramesOut, ma_uint64* pFrameCount);
|
|
||||||
MA_API ma_result ma_resource_manager_data_stream_unmap(ma_resource_manager_data_stream* pDataStream, ma_uint64 frameCount);
|
|
||||||
MA_API ma_result ma_resource_manager_data_stream_get_data_format(ma_resource_manager_data_stream* pDataStream, ma_format* pFormat, ma_uint32* pChannels, ma_uint32* pSampleRate);
|
MA_API ma_result ma_resource_manager_data_stream_get_data_format(ma_resource_manager_data_stream* pDataStream, ma_format* pFormat, ma_uint32* pChannels, ma_uint32* pSampleRate);
|
||||||
MA_API ma_result ma_resource_manager_data_stream_get_cursor_in_pcm_frames(ma_resource_manager_data_stream* pDataStream, ma_uint64* pCursor);
|
MA_API ma_result ma_resource_manager_data_stream_get_cursor_in_pcm_frames(ma_resource_manager_data_stream* pDataStream, ma_uint64* pCursor);
|
||||||
MA_API ma_result ma_resource_manager_data_stream_get_length_in_pcm_frames(ma_resource_manager_data_stream* pDataStream, ma_uint64* pLength);
|
MA_API ma_result ma_resource_manager_data_stream_get_length_in_pcm_frames(ma_resource_manager_data_stream* pDataStream, ma_uint64* pLength);
|
||||||
@@ -1572,8 +1570,6 @@ MA_API ma_result ma_resource_manager_data_source_init_copy(ma_resource_manager*
|
|||||||
MA_API ma_result ma_resource_manager_data_source_uninit(ma_resource_manager_data_source* pDataSource);
|
MA_API ma_result ma_resource_manager_data_source_uninit(ma_resource_manager_data_source* pDataSource);
|
||||||
MA_API ma_result ma_resource_manager_data_source_read_pcm_frames(ma_resource_manager_data_source* pDataSource, void* pFramesOut, ma_uint64 frameCount, ma_uint64* pFramesRead);
|
MA_API ma_result ma_resource_manager_data_source_read_pcm_frames(ma_resource_manager_data_source* pDataSource, void* pFramesOut, ma_uint64 frameCount, ma_uint64* pFramesRead);
|
||||||
MA_API ma_result ma_resource_manager_data_source_seek_to_pcm_frame(ma_resource_manager_data_source* pDataSource, ma_uint64 frameIndex);
|
MA_API ma_result ma_resource_manager_data_source_seek_to_pcm_frame(ma_resource_manager_data_source* pDataSource, ma_uint64 frameIndex);
|
||||||
MA_API ma_result ma_resource_manager_data_source_map(ma_resource_manager_data_source* pDataSource, void** ppFramesOut, ma_uint64* pFrameCount);
|
|
||||||
MA_API ma_result ma_resource_manager_data_source_unmap(ma_resource_manager_data_source* pDataSource, ma_uint64 frameCount);
|
|
||||||
MA_API ma_result ma_resource_manager_data_source_get_data_format(ma_resource_manager_data_source* pDataSource, ma_format* pFormat, ma_uint32* pChannels, ma_uint32* pSampleRate);
|
MA_API ma_result ma_resource_manager_data_source_get_data_format(ma_resource_manager_data_source* pDataSource, ma_format* pFormat, ma_uint32* pChannels, ma_uint32* pSampleRate);
|
||||||
MA_API ma_result ma_resource_manager_data_source_get_cursor_in_pcm_frames(ma_resource_manager_data_source* pDataSource, ma_uint64* pCursor);
|
MA_API ma_result ma_resource_manager_data_source_get_cursor_in_pcm_frames(ma_resource_manager_data_source* pDataSource, ma_uint64* pCursor);
|
||||||
MA_API ma_result ma_resource_manager_data_source_get_length_in_pcm_frames(ma_resource_manager_data_source* pDataSource, ma_uint64* pLength);
|
MA_API ma_result ma_resource_manager_data_source_get_length_in_pcm_frames(ma_resource_manager_data_source* pDataSource, ma_uint64* pLength);
|
||||||
@@ -2566,8 +2562,6 @@ static ma_data_source_vtable g_ma_paged_audio_buffer_data_source_vtable =
|
|||||||
{
|
{
|
||||||
ma_paged_audio_buffer__data_source_on_read,
|
ma_paged_audio_buffer__data_source_on_read,
|
||||||
ma_paged_audio_buffer__data_source_on_seek,
|
ma_paged_audio_buffer__data_source_on_seek,
|
||||||
NULL, /* onMap */
|
|
||||||
NULL, /* onUnmap */
|
|
||||||
ma_paged_audio_buffer__data_source_on_get_data_format,
|
ma_paged_audio_buffer__data_source_on_get_data_format,
|
||||||
ma_paged_audio_buffer__data_source_on_get_cursor,
|
ma_paged_audio_buffer__data_source_on_get_cursor,
|
||||||
ma_paged_audio_buffer__data_source_on_get_length
|
ma_paged_audio_buffer__data_source_on_get_length
|
||||||
@@ -8275,8 +8269,6 @@ static ma_data_source_vtable g_ma_resource_manager_data_buffer_vtable =
|
|||||||
{
|
{
|
||||||
ma_resource_manager_data_buffer_cb__read_pcm_frames,
|
ma_resource_manager_data_buffer_cb__read_pcm_frames,
|
||||||
ma_resource_manager_data_buffer_cb__seek_to_pcm_frame,
|
ma_resource_manager_data_buffer_cb__seek_to_pcm_frame,
|
||||||
NULL, /* onMap */
|
|
||||||
NULL, /* onUnmap */
|
|
||||||
ma_resource_manager_data_buffer_cb__get_data_format,
|
ma_resource_manager_data_buffer_cb__get_data_format,
|
||||||
ma_resource_manager_data_buffer_cb__get_cursor_in_pcm_frames,
|
ma_resource_manager_data_buffer_cb__get_cursor_in_pcm_frames,
|
||||||
ma_resource_manager_data_buffer_cb__get_length_in_pcm_frames
|
ma_resource_manager_data_buffer_cb__get_length_in_pcm_frames
|
||||||
@@ -8928,16 +8920,6 @@ static ma_result ma_resource_manager_data_stream_cb__seek_to_pcm_frame(ma_data_s
|
|||||||
return ma_resource_manager_data_stream_seek_to_pcm_frame((ma_resource_manager_data_stream*)pDataSource, frameIndex);
|
return ma_resource_manager_data_stream_seek_to_pcm_frame((ma_resource_manager_data_stream*)pDataSource, frameIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
static ma_result ma_resource_manager_data_stream_cb__map(ma_data_source* pDataSource, void** ppFramesOut, ma_uint64* pFrameCount)
|
|
||||||
{
|
|
||||||
return ma_resource_manager_data_stream_map((ma_resource_manager_data_stream*)pDataSource, ppFramesOut, pFrameCount);
|
|
||||||
}
|
|
||||||
|
|
||||||
static ma_result ma_resource_manager_data_stream_cb__unmap(ma_data_source* pDataSource, ma_uint64 frameCount)
|
|
||||||
{
|
|
||||||
return ma_resource_manager_data_stream_unmap((ma_resource_manager_data_stream*)pDataSource, frameCount);
|
|
||||||
}
|
|
||||||
|
|
||||||
static ma_result ma_resource_manager_data_stream_cb__get_data_format(ma_data_source* pDataSource, ma_format* pFormat, ma_uint32* pChannels, ma_uint32* pSampleRate)
|
static ma_result ma_resource_manager_data_stream_cb__get_data_format(ma_data_source* pDataSource, ma_format* pFormat, ma_uint32* pChannels, ma_uint32* pSampleRate)
|
||||||
{
|
{
|
||||||
return ma_resource_manager_data_stream_get_data_format((ma_resource_manager_data_stream*)pDataSource, pFormat, pChannels, pSampleRate);
|
return ma_resource_manager_data_stream_get_data_format((ma_resource_manager_data_stream*)pDataSource, pFormat, pChannels, pSampleRate);
|
||||||
@@ -8957,8 +8939,6 @@ static ma_data_source_vtable g_ma_resource_manager_data_stream_vtable =
|
|||||||
{
|
{
|
||||||
ma_resource_manager_data_stream_cb__read_pcm_frames,
|
ma_resource_manager_data_stream_cb__read_pcm_frames,
|
||||||
ma_resource_manager_data_stream_cb__seek_to_pcm_frame,
|
ma_resource_manager_data_stream_cb__seek_to_pcm_frame,
|
||||||
ma_resource_manager_data_stream_cb__map,
|
|
||||||
ma_resource_manager_data_stream_cb__unmap,
|
|
||||||
ma_resource_manager_data_stream_cb__get_data_format,
|
ma_resource_manager_data_stream_cb__get_data_format,
|
||||||
ma_resource_manager_data_stream_cb__get_cursor_in_pcm_frames,
|
ma_resource_manager_data_stream_cb__get_cursor_in_pcm_frames,
|
||||||
ma_resource_manager_data_stream_cb__get_length_in_pcm_frames
|
ma_resource_manager_data_stream_cb__get_length_in_pcm_frames
|
||||||
@@ -9179,69 +9159,8 @@ static void ma_resource_manager_data_stream_fill_pages(ma_resource_manager_data_
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MA_API ma_result ma_resource_manager_data_stream_read_pcm_frames(ma_resource_manager_data_stream* pDataStream, void* pFramesOut, ma_uint64 frameCount, ma_uint64* pFramesRead)
|
|
||||||
{
|
|
||||||
ma_result result = MA_SUCCESS;
|
|
||||||
ma_uint64 totalFramesProcessed;
|
|
||||||
ma_format format;
|
|
||||||
ma_uint32 channels;
|
|
||||||
|
|
||||||
/* Safety. */
|
static ma_result ma_resource_manager_data_stream_map(ma_resource_manager_data_stream* pDataStream, void** ppFramesOut, ma_uint64* pFrameCount)
|
||||||
if (pFramesRead != NULL) {
|
|
||||||
*pFramesRead = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* We cannot be using the data source after it's been uninitialized. */
|
|
||||||
MA_ASSERT(ma_resource_manager_data_stream_result(pDataStream) != MA_UNAVAILABLE);
|
|
||||||
|
|
||||||
if (pDataStream == NULL) {
|
|
||||||
return MA_INVALID_ARGS;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ma_resource_manager_data_stream_result(pDataStream) != MA_SUCCESS) {
|
|
||||||
return MA_INVALID_OPERATION;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Don't attempt to read while we're in the middle of seeking. Tell the caller that we're busy. */
|
|
||||||
if (ma_resource_manager_data_stream_seek_counter(pDataStream) > 0) {
|
|
||||||
return MA_BUSY;
|
|
||||||
}
|
|
||||||
|
|
||||||
ma_resource_manager_data_stream_get_data_format(pDataStream, &format, &channels, NULL);
|
|
||||||
|
|
||||||
/* Reading is implemented in terms of map/unmap. We need to run this in a loop because mapping is clamped against page boundaries. */
|
|
||||||
totalFramesProcessed = 0;
|
|
||||||
while (totalFramesProcessed < frameCount) {
|
|
||||||
void* pMappedFrames;
|
|
||||||
ma_uint64 mappedFrameCount;
|
|
||||||
|
|
||||||
mappedFrameCount = frameCount - totalFramesProcessed;
|
|
||||||
result = ma_resource_manager_data_stream_map(pDataStream, &pMappedFrames, &mappedFrameCount);
|
|
||||||
if (result != MA_SUCCESS) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Copy the mapped data to the output buffer if we have one. It's allowed for pFramesOut to be NULL in which case a relative forward seek is performed. */
|
|
||||||
if (pFramesOut != NULL) {
|
|
||||||
ma_copy_pcm_frames(ma_offset_pcm_frames_ptr(pFramesOut, totalFramesProcessed, format, channels), pMappedFrames, mappedFrameCount, format, channels);
|
|
||||||
}
|
|
||||||
|
|
||||||
totalFramesProcessed += mappedFrameCount;
|
|
||||||
|
|
||||||
result = ma_resource_manager_data_stream_unmap(pDataStream, mappedFrameCount);
|
|
||||||
if (result != MA_SUCCESS) {
|
|
||||||
break; /* This is really bad - will only get an error here if we failed to post a job to the queue for loading the next page. */
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pFramesRead != NULL) {
|
|
||||||
*pFramesRead = totalFramesProcessed;
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
MA_API ma_result ma_resource_manager_data_stream_map(ma_resource_manager_data_stream* pDataStream, void** ppFramesOut, ma_uint64* pFrameCount)
|
|
||||||
{
|
{
|
||||||
ma_uint64 framesAvailable;
|
ma_uint64 framesAvailable;
|
||||||
ma_uint64 frameCount = 0;
|
ma_uint64 frameCount = 0;
|
||||||
@@ -9315,7 +9234,7 @@ static void ma_resource_manager_data_stream_set_absolute_cursor(ma_resource_mana
|
|||||||
c89atomic_exchange_64(&pDataStream->absoluteCursor, absoluteCursor);
|
c89atomic_exchange_64(&pDataStream->absoluteCursor, absoluteCursor);
|
||||||
}
|
}
|
||||||
|
|
||||||
MA_API ma_result ma_resource_manager_data_stream_unmap(ma_resource_manager_data_stream* pDataStream, ma_uint64 frameCount)
|
static ma_result ma_resource_manager_data_stream_unmap(ma_resource_manager_data_stream* pDataStream, ma_uint64 frameCount)
|
||||||
{
|
{
|
||||||
ma_uint32 newRelativeCursor;
|
ma_uint32 newRelativeCursor;
|
||||||
ma_uint32 pageSizeInFrames;
|
ma_uint32 pageSizeInFrames;
|
||||||
@@ -9369,6 +9288,69 @@ MA_API ma_result ma_resource_manager_data_stream_unmap(ma_resource_manager_data_
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
MA_API ma_result ma_resource_manager_data_stream_read_pcm_frames(ma_resource_manager_data_stream* pDataStream, void* pFramesOut, ma_uint64 frameCount, ma_uint64* pFramesRead)
|
||||||
|
{
|
||||||
|
ma_result result = MA_SUCCESS;
|
||||||
|
ma_uint64 totalFramesProcessed;
|
||||||
|
ma_format format;
|
||||||
|
ma_uint32 channels;
|
||||||
|
|
||||||
|
/* Safety. */
|
||||||
|
if (pFramesRead != NULL) {
|
||||||
|
*pFramesRead = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* We cannot be using the data source after it's been uninitialized. */
|
||||||
|
MA_ASSERT(ma_resource_manager_data_stream_result(pDataStream) != MA_UNAVAILABLE);
|
||||||
|
|
||||||
|
if (pDataStream == NULL) {
|
||||||
|
return MA_INVALID_ARGS;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ma_resource_manager_data_stream_result(pDataStream) != MA_SUCCESS) {
|
||||||
|
return MA_INVALID_OPERATION;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Don't attempt to read while we're in the middle of seeking. Tell the caller that we're busy. */
|
||||||
|
if (ma_resource_manager_data_stream_seek_counter(pDataStream) > 0) {
|
||||||
|
return MA_BUSY;
|
||||||
|
}
|
||||||
|
|
||||||
|
ma_resource_manager_data_stream_get_data_format(pDataStream, &format, &channels, NULL);
|
||||||
|
|
||||||
|
/* Reading is implemented in terms of map/unmap. We need to run this in a loop because mapping is clamped against page boundaries. */
|
||||||
|
totalFramesProcessed = 0;
|
||||||
|
while (totalFramesProcessed < frameCount) {
|
||||||
|
void* pMappedFrames;
|
||||||
|
ma_uint64 mappedFrameCount;
|
||||||
|
|
||||||
|
mappedFrameCount = frameCount - totalFramesProcessed;
|
||||||
|
result = ma_resource_manager_data_stream_map(pDataStream, &pMappedFrames, &mappedFrameCount);
|
||||||
|
if (result != MA_SUCCESS) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Copy the mapped data to the output buffer if we have one. It's allowed for pFramesOut to be NULL in which case a relative forward seek is performed. */
|
||||||
|
if (pFramesOut != NULL) {
|
||||||
|
ma_copy_pcm_frames(ma_offset_pcm_frames_ptr(pFramesOut, totalFramesProcessed, format, channels), pMappedFrames, mappedFrameCount, format, channels);
|
||||||
|
}
|
||||||
|
|
||||||
|
totalFramesProcessed += mappedFrameCount;
|
||||||
|
|
||||||
|
result = ma_resource_manager_data_stream_unmap(pDataStream, mappedFrameCount);
|
||||||
|
if (result != MA_SUCCESS) {
|
||||||
|
break; /* This is really bad - will only get an error here if we failed to post a job to the queue for loading the next page. */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pFramesRead != NULL) {
|
||||||
|
*pFramesRead = totalFramesProcessed;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
MA_API ma_result ma_resource_manager_data_stream_seek_to_pcm_frame(ma_resource_manager_data_stream* pDataStream, ma_uint64 frameIndex)
|
MA_API ma_result ma_resource_manager_data_stream_seek_to_pcm_frame(ma_resource_manager_data_stream* pDataStream, ma_uint64 frameIndex)
|
||||||
{
|
{
|
||||||
ma_job job;
|
ma_job job;
|
||||||
|
|||||||
Reference in New Issue
Block a user