mirror of
https://github.com/ZDoom/qzdoom.git
synced 2024-11-10 14:51:51 +00:00
Revert "- Implemented loop-accurate time position reporting into DUMB"
This reverts commit 153721b1c9f4cde62fa17d6aef56f782b37384bf. Conflicts: dumb/include/dumb.h dumb/include/internal/tarray.h dumb/src/helpers/tarray.c dumb/src/it/itrender.c
This commit is contained in:
parent
d0f1df1132
commit
8a6dfabedb
10 changed files with 8 additions and 316 deletions
|
@ -39,7 +39,6 @@ add_library( dumb
|
||||||
src/helpers/memfile.c
|
src/helpers/memfile.c
|
||||||
src/helpers/clickrem.c
|
src/helpers/clickrem.c
|
||||||
src/helpers/barray.c
|
src/helpers/barray.c
|
||||||
src/helpers/tarray.c
|
|
||||||
src/it/xmeffect.c
|
src/it/xmeffect.c
|
||||||
src/it/readxm2.c
|
src/it/readxm2.c
|
||||||
src/it/readxm.c
|
src/it/readxm.c
|
||||||
|
|
|
@ -606,10 +606,6 @@ typedef void (*DUH_SIGRENDERER_GET_CURRENT_SAMPLE)(
|
||||||
sample_t *samples
|
sample_t *samples
|
||||||
);
|
);
|
||||||
|
|
||||||
typedef int32 (*DUH_SIGRENDERER_GET_POSITION)(
|
|
||||||
sigrenderer_t *sigrenderer
|
|
||||||
);
|
|
||||||
|
|
||||||
typedef void (*DUH_END_SIGRENDERER)(sigrenderer_t *sigrenderer);
|
typedef void (*DUH_END_SIGRENDERER)(sigrenderer_t *sigrenderer);
|
||||||
|
|
||||||
typedef void (*DUH_UNLOAD_SIGDATA)(sigdata_t *sigdata);
|
typedef void (*DUH_UNLOAD_SIGDATA)(sigdata_t *sigdata);
|
||||||
|
@ -625,7 +621,6 @@ typedef struct DUH_SIGTYPE_DESC
|
||||||
DUH_SIGRENDERER_SET_SIGPARAM sigrenderer_set_sigparam;
|
DUH_SIGRENDERER_SET_SIGPARAM sigrenderer_set_sigparam;
|
||||||
DUH_SIGRENDERER_GENERATE_SAMPLES sigrenderer_generate_samples;
|
DUH_SIGRENDERER_GENERATE_SAMPLES sigrenderer_generate_samples;
|
||||||
DUH_SIGRENDERER_GET_CURRENT_SAMPLE sigrenderer_get_current_sample;
|
DUH_SIGRENDERER_GET_CURRENT_SAMPLE sigrenderer_get_current_sample;
|
||||||
DUH_SIGRENDERER_GET_POSITION sigrenderer_get_position;
|
|
||||||
DUH_END_SIGRENDERER end_sigrenderer;
|
DUH_END_SIGRENDERER end_sigrenderer;
|
||||||
DUH_UNLOAD_SIGDATA unload_sigdata;
|
DUH_UNLOAD_SIGDATA unload_sigdata;
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,7 +33,6 @@
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
|
||||||
#include "barray.h"
|
#include "barray.h"
|
||||||
#include "tarray.h"
|
|
||||||
|
|
||||||
|
|
||||||
/** TO DO: THINK ABOUT THE FOLLOWING:
|
/** TO DO: THINK ABOUT THE FOLLOWING:
|
||||||
|
@ -724,21 +723,6 @@ struct DUMB_IT_SIGRENDERER
|
||||||
#ifdef BIT_ARRAY_BULLSHIT
|
#ifdef BIT_ARRAY_BULLSHIT
|
||||||
/* bit array, which rows are played, only checked by pattern break or loop commands */
|
/* bit array, which rows are played, only checked by pattern break or loop commands */
|
||||||
void * played;
|
void * played;
|
||||||
|
|
||||||
/*
|
|
||||||
Loop indicator for internal processes, may also be useful for external processes
|
|
||||||
0 - Not looped
|
|
||||||
1 - Looped
|
|
||||||
-1 - Continued past loop
|
|
||||||
*/
|
|
||||||
int looped;
|
|
||||||
|
|
||||||
/*
|
|
||||||
Kept until looped
|
|
||||||
*/
|
|
||||||
LONG_LONG time_played;
|
|
||||||
|
|
||||||
void * row_timekeeper;
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int32 gvz_time;
|
int32 gvz_time;
|
||||||
|
|
|
@ -1,31 +0,0 @@
|
||||||
#ifndef _T_ARRAY_H_
|
|
||||||
#define _T_ARRAY_H_
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
#ifndef LONG_LONG
|
|
||||||
#if defined __GNUC__ || defined __INTEL_COMPILER || defined __MWERKS__
|
|
||||||
#define LONG_LONG long long
|
|
||||||
#elif defined _MSC_VER || defined __WATCOMC__
|
|
||||||
#define LONG_LONG __int64
|
|
||||||
#elif defined __sgi
|
|
||||||
#define LONG_LONG long long
|
|
||||||
#else
|
|
||||||
#error 64-bit integer type unknown
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void * timekeeping_array_create(size_t size);
|
|
||||||
void timekeeping_array_destroy(void * array);
|
|
||||||
void * timekeeping_array_dup(void * array);
|
|
||||||
|
|
||||||
void timekeeping_array_reset(void * array, size_t loop_start);
|
|
||||||
|
|
||||||
void timekeeping_array_push(void * array, size_t index, LONG_LONG time);
|
|
||||||
void timekeeping_array_bump(void * array, size_t index);
|
|
||||||
|
|
||||||
unsigned int timekeeping_array_get_count(void * array, size_t index);
|
|
||||||
|
|
||||||
LONG_LONG timekeeping_array_get_item(void * array, size_t index);
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -37,7 +37,6 @@ SOURCES += \
|
||||||
../../src/helpers/memfile.c \
|
../../src/helpers/memfile.c \
|
||||||
../../src/helpers/clickrem.c \
|
../../src/helpers/clickrem.c \
|
||||||
../../src/helpers/barray.c \
|
../../src/helpers/barray.c \
|
||||||
../../src/helpers/tarray.c \
|
|
||||||
../../src/it/xmeffect.c \
|
../../src/it/xmeffect.c \
|
||||||
../../src/it/readxm2.c \
|
../../src/it/readxm2.c \
|
||||||
../../src/it/readxm.c \
|
../../src/it/readxm.c \
|
||||||
|
@ -109,7 +108,6 @@ HEADERS += \
|
||||||
../../include/internal/it.h \
|
../../include/internal/it.h \
|
||||||
../../include/internal/dumb.h \
|
../../include/internal/dumb.h \
|
||||||
../../include/internal/barray.h \
|
../../include/internal/barray.h \
|
||||||
../../include/internal/tarray.h \
|
|
||||||
../../include/internal/aldumb.h \
|
../../include/internal/aldumb.h \
|
||||||
../../include/internal/sinc_resampler.h \
|
../../include/internal/sinc_resampler.h \
|
||||||
../../include/internal/stack_alloc.h \
|
../../include/internal/stack_alloc.h \
|
||||||
|
|
|
@ -147,15 +147,7 @@ int DUMBEXPORT duh_sigrenderer_get_n_channels(DUH_SIGRENDERER *sigrenderer)
|
||||||
|
|
||||||
int32 DUMBEXPORT duh_sigrenderer_get_position(DUH_SIGRENDERER *sigrenderer)
|
int32 DUMBEXPORT duh_sigrenderer_get_position(DUH_SIGRENDERER *sigrenderer)
|
||||||
{
|
{
|
||||||
DUH_SIGRENDERER_GET_POSITION proc;
|
return sigrenderer ? sigrenderer->pos : -1;
|
||||||
|
|
||||||
if (!sigrenderer) return -1;
|
|
||||||
|
|
||||||
proc = sigrenderer->desc->sigrenderer_get_position;
|
|
||||||
if (proc)
|
|
||||||
return (*proc)(sigrenderer->sigrenderer);
|
|
||||||
else
|
|
||||||
return sigrenderer->pos;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,175 +0,0 @@
|
||||||
#include "internal/tarray.h"
|
|
||||||
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
/*
|
|
||||||
Structures which contain the play times of each pattern and row combination in the song,
|
|
||||||
not guaranteed to be valid for the whole song until the loop status is no longer zero.
|
|
||||||
The initial count and restart count will both be zero on song start, then both will be
|
|
||||||
incremented until the song loops. Restart count will be reset to zero on loop for all
|
|
||||||
rows which have a time equal to or greater than the loop start point, so time keeping
|
|
||||||
functions will know which timestamp the song is currently located at.
|
|
||||||
|
|
||||||
Timestamp lists are guaranteed to be allocated in blocks of 16 timestamps at a time.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
We don't need full timekeeping because the player loop only wants the first play time
|
|
||||||
of the loop start order/row. We also don't really want full timekeeping because it
|
|
||||||
involves a lot of memory allocations, which is also slow.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#undef FULL_TIMEKEEPING
|
|
||||||
|
|
||||||
typedef struct DUMB_IT_ROW_TIME
|
|
||||||
{
|
|
||||||
unsigned int count, restart_count;
|
|
||||||
#ifndef FULL_TIMEKEEPING
|
|
||||||
LONG_LONG first_time;
|
|
||||||
#else
|
|
||||||
LONG_LONG * times;
|
|
||||||
#endif
|
|
||||||
} DUMB_IT_ROW_TIME;
|
|
||||||
|
|
||||||
void * timekeeping_array_create(size_t size)
|
|
||||||
{
|
|
||||||
size_t * _size = (size_t *) calloc( 1, sizeof(size_t) + sizeof(DUMB_IT_ROW_TIME) * size );
|
|
||||||
if ( _size ) {
|
|
||||||
*_size = size;
|
|
||||||
}
|
|
||||||
return _size;
|
|
||||||
}
|
|
||||||
|
|
||||||
void timekeeping_array_destroy(void * array)
|
|
||||||
{
|
|
||||||
#ifdef FULL_TIMEKEEPING
|
|
||||||
size_t i;
|
|
||||||
size_t * size = (size_t *) array;
|
|
||||||
DUMB_IT_ROW_TIME * s = (DUMB_IT_ROW_TIME *)(size + 1);
|
|
||||||
|
|
||||||
for (i = 0; i < *size; i++) {
|
|
||||||
if (s[i].times) free(s[i].times);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
free(array);
|
|
||||||
}
|
|
||||||
|
|
||||||
void * timekeeping_array_dup(void * array)
|
|
||||||
{
|
|
||||||
size_t i;
|
|
||||||
size_t * size = (size_t *) array;
|
|
||||||
DUMB_IT_ROW_TIME * s = (DUMB_IT_ROW_TIME *)(size + 1);
|
|
||||||
size_t * new_size = (size_t *) calloc( 1, sizeof(size_t) + sizeof(DUMB_IT_ROW_TIME) * *size );
|
|
||||||
if ( new_size ) {
|
|
||||||
DUMB_IT_ROW_TIME * new_s = (DUMB_IT_ROW_TIME *)(new_size + 1);
|
|
||||||
|
|
||||||
*new_size = *size;
|
|
||||||
|
|
||||||
for (i = 0; i < *size; i++) {
|
|
||||||
new_s[i].count = s[i].count;
|
|
||||||
new_s[i].restart_count = s[i].restart_count;
|
|
||||||
|
|
||||||
#ifndef FULL_TIMEKEEPING
|
|
||||||
new_s[i].first_time = s[i].first_time;
|
|
||||||
#else
|
|
||||||
if ( s[i].times ) {
|
|
||||||
size_t time_count = ( s[i].count + 15 ) & ~15;
|
|
||||||
new_s[i].times = (LONG_LONG *) malloc( sizeof(LONG_LONG) * time_count );
|
|
||||||
if ( new_s[i].times == (void *)0 ) {
|
|
||||||
timekeeping_array_destroy( new_size );
|
|
||||||
return (void *) 0;
|
|
||||||
}
|
|
||||||
memcpy( new_s[i].times, s[i].times, sizeof(LONG_LONG) * s[i].count );
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return new_size;
|
|
||||||
}
|
|
||||||
|
|
||||||
void timekeeping_array_reset(void * array, size_t loop_start)
|
|
||||||
{
|
|
||||||
size_t i;
|
|
||||||
size_t * size = (size_t *) array;
|
|
||||||
DUMB_IT_ROW_TIME * s = (DUMB_IT_ROW_TIME *)(size + 1);
|
|
||||||
|
|
||||||
DUMB_IT_ROW_TIME * s_loop_start = s + loop_start;
|
|
||||||
LONG_LONG loop_start_time;
|
|
||||||
|
|
||||||
if ( loop_start >= *size || s_loop_start->count < 1 ) return;
|
|
||||||
|
|
||||||
#ifndef FULL_TIMEKEEPING
|
|
||||||
loop_start_time = s_loop_start->first_time;
|
|
||||||
#else
|
|
||||||
loop_start_time = s_loop_start->times[0];
|
|
||||||
#endif
|
|
||||||
|
|
||||||
for ( i = 0; i < *size; i++ ) {
|
|
||||||
#ifndef FULL_TIMEKEEPING
|
|
||||||
if ( s[i].count && s[i].first_time >= loop_start_time ) {
|
|
||||||
#else
|
|
||||||
if ( s[i].count && s[i].times[0] >= loop_start_time ) {
|
|
||||||
#endif
|
|
||||||
s[i].restart_count = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void timekeeping_array_push(void * array, size_t index, LONG_LONG time)
|
|
||||||
{
|
|
||||||
#ifdef FULL_TIMEKEEPING
|
|
||||||
size_t i;
|
|
||||||
size_t time_count;
|
|
||||||
#endif
|
|
||||||
size_t * size = (size_t *) array;
|
|
||||||
DUMB_IT_ROW_TIME * s = (DUMB_IT_ROW_TIME *)(size + 1);
|
|
||||||
|
|
||||||
if (index >= *size) return;
|
|
||||||
|
|
||||||
#ifndef FULL_TIMEKEEPING
|
|
||||||
if ( !s[index].count++ )
|
|
||||||
s[index].first_time = time;
|
|
||||||
#else
|
|
||||||
time_count = ( s[index].count + 16 ) & ~15;
|
|
||||||
|
|
||||||
s[index].times = (LONG_LONG *) realloc( s[index].times, sizeof(LONG_LONG) * time_count );
|
|
||||||
|
|
||||||
s[index].times[s[index].count++] = time;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void timekeeping_array_bump(void * array, size_t index)
|
|
||||||
{
|
|
||||||
size_t * size = (size_t *) array;
|
|
||||||
DUMB_IT_ROW_TIME * s = (DUMB_IT_ROW_TIME *)(size + 1);
|
|
||||||
|
|
||||||
if (index >= *size) return;
|
|
||||||
|
|
||||||
s[index].restart_count++;
|
|
||||||
}
|
|
||||||
|
|
||||||
unsigned int timekeeping_array_get_count(void * array, size_t index)
|
|
||||||
{
|
|
||||||
size_t * size = (size_t *) array;
|
|
||||||
DUMB_IT_ROW_TIME * s = (DUMB_IT_ROW_TIME *)(size + 1);
|
|
||||||
|
|
||||||
if (index >= *size) return 0;
|
|
||||||
|
|
||||||
return s[index].count;
|
|
||||||
}
|
|
||||||
|
|
||||||
LONG_LONG timekeeping_array_get_item(void * array, size_t index)
|
|
||||||
{
|
|
||||||
size_t * size = (size_t *) array;
|
|
||||||
DUMB_IT_ROW_TIME * s = (DUMB_IT_ROW_TIME *)(size + 1);
|
|
||||||
|
|
||||||
if (index >= *size || s[index].restart_count >= s[index].count) return 0;
|
|
||||||
|
|
||||||
#ifndef FULL_TIMEKEEPING
|
|
||||||
return s[index].first_time;
|
|
||||||
#else
|
|
||||||
return s[index].times[s[index].restart_count];
|
|
||||||
#endif
|
|
||||||
}
|
|
|
@ -352,8 +352,6 @@ static DUMB_IT_SIGRENDERER *dup_sigrenderer(DUMB_IT_SIGRENDERER *src, int n_chan
|
||||||
|
|
||||||
#ifdef BIT_ARRAY_BULLSHIT
|
#ifdef BIT_ARRAY_BULLSHIT
|
||||||
dst->played = bit_array_dup(src->played);
|
dst->played = bit_array_dup(src->played);
|
||||||
|
|
||||||
dst->row_timekeeper = timekeeping_array_dup(src->row_timekeeper);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
dst->gvz_time = src->gvz_time;
|
dst->gvz_time = src->gvz_time;
|
||||||
|
@ -2219,9 +2217,6 @@ Yxy This uses a table 4 times larger (hence 4 times slower) than
|
||||||
bit_array_set(sigrenderer->played, sigrenderer->order * 256 + sigrenderer->row);
|
bit_array_set(sigrenderer->played, sigrenderer->order * 256 + sigrenderer->row);
|
||||||
#endif
|
#endif
|
||||||
sigrenderer->speed = 0;
|
sigrenderer->speed = 0;
|
||||||
#ifdef BIT_ARRAY_BULLSHIT
|
|
||||||
sigrenderer->looped = 1;
|
|
||||||
#endif
|
|
||||||
if (sigrenderer->callbacks->xm_speed_zero && (*sigrenderer->callbacks->xm_speed_zero)(sigrenderer->callbacks->xm_speed_zero_data))
|
if (sigrenderer->callbacks->xm_speed_zero && (*sigrenderer->callbacks->xm_speed_zero)(sigrenderer->callbacks->xm_speed_zero_data))
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -4242,10 +4237,6 @@ static int process_tick(DUMB_IT_SIGRENDERER *sigrenderer)
|
||||||
*/
|
*/
|
||||||
#endif
|
#endif
|
||||||
bit_array_set(sigrenderer->played, sigrenderer->order * 256 + sigrenderer->row);
|
bit_array_set(sigrenderer->played, sigrenderer->order * 256 + sigrenderer->row);
|
||||||
if (sigrenderer->looped == 0) {
|
|
||||||
timekeeping_array_push(sigrenderer->row_timekeeper, sigrenderer->order * 256 + sigrenderer->row, sigrenderer->time_played);
|
|
||||||
}
|
|
||||||
timekeeping_array_bump(sigrenderer->row_timekeeper, sigrenderer->order * 256 + sigrenderer->row);
|
|
||||||
{
|
{
|
||||||
int n;
|
int n;
|
||||||
for (n = 0; n < DUMB_IT_N_CHANNELS; n++)
|
for (n = 0; n < DUMB_IT_N_CHANNELS; n++)
|
||||||
|
@ -4343,8 +4334,6 @@ static int process_tick(DUMB_IT_SIGRENDERER *sigrenderer)
|
||||||
/* Fix play tracking and timekeeping for orders containing skip commands */
|
/* Fix play tracking and timekeeping for orders containing skip commands */
|
||||||
for (n = 0; n < 256; n++) {
|
for (n = 0; n < 256; n++) {
|
||||||
bit_array_set(sigrenderer->played, sigrenderer->processorder * 256 + n);
|
bit_array_set(sigrenderer->played, sigrenderer->processorder * 256 + n);
|
||||||
timekeeping_array_push(sigrenderer->row_timekeeper, sigrenderer->processorder * 256 + n, sigrenderer->time_played);
|
|
||||||
timekeeping_array_bump(sigrenderer->row_timekeeper, sigrenderer->processorder * 256 + n);
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -4369,9 +4358,6 @@ static int process_tick(DUMB_IT_SIGRENDERER *sigrenderer)
|
||||||
&& bit_array_test(sigrenderer->played, sigrenderer->processorder * 256 + sigrenderer->processrow)
|
&& bit_array_test(sigrenderer->played, sigrenderer->processorder * 256 + sigrenderer->processrow)
|
||||||
#endif
|
#endif
|
||||||
) {
|
) {
|
||||||
#ifdef BIT_ARRAY_BULLSHIT
|
|
||||||
sigrenderer->looped = 1;
|
|
||||||
#endif
|
|
||||||
if (sigrenderer->callbacks->loop) {
|
if (sigrenderer->callbacks->loop) {
|
||||||
if ((*sigrenderer->callbacks->loop)(sigrenderer->callbacks->loop_data))
|
if ((*sigrenderer->callbacks->loop)(sigrenderer->callbacks->loop_data))
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -4466,9 +4452,6 @@ static int process_tick(DUMB_IT_SIGRENDERER *sigrenderer)
|
||||||
sigrenderer->gvz_time += (int)(t >> 16);
|
sigrenderer->gvz_time += (int)(t >> 16);
|
||||||
sigrenderer->gvz_sub_time = (int)t & 65535;
|
sigrenderer->gvz_sub_time = (int)t & 65535;
|
||||||
if (sigrenderer->gvz_time >= 65536 * 12) {
|
if (sigrenderer->gvz_time >= 65536 * 12) {
|
||||||
#ifdef BIT_ARRAY_BULLSHIT
|
|
||||||
sigrenderer->looped = 1;
|
|
||||||
#endif
|
|
||||||
if ((*sigrenderer->callbacks->global_volume_zero)(sigrenderer->callbacks->global_volume_zero_data))
|
if ((*sigrenderer->callbacks->global_volume_zero)(sigrenderer->callbacks->global_volume_zero_data))
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -5283,10 +5266,6 @@ static DUMB_IT_SIGRENDERER *init_sigrenderer(DUMB_IT_SIGDATA *sigdata, int n_cha
|
||||||
|
|
||||||
#ifdef BIT_ARRAY_BULLSHIT
|
#ifdef BIT_ARRAY_BULLSHIT
|
||||||
sigrenderer->played = bit_array_create(sigdata->n_orders * 256);
|
sigrenderer->played = bit_array_create(sigdata->n_orders * 256);
|
||||||
|
|
||||||
sigrenderer->looped = 0;
|
|
||||||
sigrenderer->time_played = 0;
|
|
||||||
sigrenderer->row_timekeeper = timekeeping_array_create(sigdata->n_orders * 256);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -5305,8 +5284,6 @@ static DUMB_IT_SIGRENDERER *init_sigrenderer(DUMB_IT_SIGDATA *sigdata, int n_cha
|
||||||
/* Fix for played order detection for songs which have skips at the start of the orders list */
|
/* Fix for played order detection for songs which have skips at the start of the orders list */
|
||||||
for (n = 0; n < 256; n++) {
|
for (n = 0; n < 256; n++) {
|
||||||
bit_array_set(sigrenderer->played, order * 256 + n);
|
bit_array_set(sigrenderer->played, order * 256 + n);
|
||||||
timekeeping_array_push(sigrenderer->row_timekeeper, order * 256 + n, 0);
|
|
||||||
timekeeping_array_bump(sigrenderer->row_timekeeper, order * 256 + n);
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -5319,6 +5296,10 @@ static DUMB_IT_SIGRENDERER *init_sigrenderer(DUMB_IT_SIGDATA *sigdata, int n_cha
|
||||||
sigrenderer->time_left = 0;
|
sigrenderer->time_left = 0;
|
||||||
sigrenderer->sub_time_left = 0;
|
sigrenderer->sub_time_left = 0;
|
||||||
|
|
||||||
|
#ifdef BIT_ARRAY_BULLSHIT
|
||||||
|
sigrenderer->played = bit_array_create(sigdata->n_orders * 256);
|
||||||
|
#endif
|
||||||
|
|
||||||
sigrenderer->gvz_time = 0;
|
sigrenderer->gvz_time = 0;
|
||||||
sigrenderer->gvz_sub_time = 0;
|
sigrenderer->gvz_sub_time = 0;
|
||||||
|
|
||||||
|
@ -5504,8 +5485,7 @@ static int32 it_sigrenderer_get_samples(
|
||||||
int32 pos;
|
int32 pos;
|
||||||
int dt;
|
int dt;
|
||||||
int32 todo;
|
int32 todo;
|
||||||
int ret;
|
LONG_LONG t;
|
||||||
LONG_LONG time_left, t;
|
|
||||||
|
|
||||||
if (sigrenderer->order < 0) return 0; // problematic
|
if (sigrenderer->order < 0) return 0; // problematic
|
||||||
|
|
||||||
|
@ -5518,8 +5498,7 @@ static int32 it_sigrenderer_get_samples(
|
||||||
if (!samples) volume = 0;
|
if (!samples) volume = 0;
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
time_left = ((LONG_LONG)sigrenderer->time_left << 16) | sigrenderer->sub_time_left;
|
todo = (long)((((LONG_LONG)sigrenderer->time_left << 16) | sigrenderer->sub_time_left) / dt);
|
||||||
todo = (long)(time_left / dt);
|
|
||||||
|
|
||||||
if (todo >= size)
|
if (todo >= size)
|
||||||
break;
|
break;
|
||||||
|
@ -5533,28 +5512,9 @@ static int32 it_sigrenderer_get_samples(
|
||||||
sigrenderer->sub_time_left = (int32)t & 65535;
|
sigrenderer->sub_time_left = (int32)t & 65535;
|
||||||
sigrenderer->time_left += (int32)(t >> 16);
|
sigrenderer->time_left += (int32)(t >> 16);
|
||||||
|
|
||||||
#ifdef BIT_ARRAY_BULLSHIT
|
if (process_tick(sigrenderer)) {
|
||||||
sigrenderer->time_played += time_left;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
ret = process_tick(sigrenderer);
|
|
||||||
|
|
||||||
if (ret) {
|
|
||||||
sigrenderer->order = -1;
|
sigrenderer->order = -1;
|
||||||
sigrenderer->row = -1;
|
sigrenderer->row = -1;
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef BIT_ARRAY_BULLSHIT
|
|
||||||
if (sigrenderer->looped == 1) {
|
|
||||||
sigrenderer->looped = -1;
|
|
||||||
size = 0;
|
|
||||||
timekeeping_array_reset(sigrenderer->row_timekeeper, sigrenderer->order * 256 + sigrenderer->row);
|
|
||||||
sigrenderer->time_played = timekeeping_array_get_item(sigrenderer->row_timekeeper, sigrenderer->order * 256 + sigrenderer->row);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (ret) {
|
|
||||||
return pos;
|
return pos;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5567,10 +5527,6 @@ static int32 it_sigrenderer_get_samples(
|
||||||
sigrenderer->sub_time_left = (int32)t & 65535;
|
sigrenderer->sub_time_left = (int32)t & 65535;
|
||||||
sigrenderer->time_left += (int32)(t >> 16);
|
sigrenderer->time_left += (int32)(t >> 16);
|
||||||
|
|
||||||
#ifdef BIT_ARRAY_BULLSHIT
|
|
||||||
sigrenderer->time_played += (LONG_LONG)size * dt;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (samples)
|
if (samples)
|
||||||
dumb_remove_clicks_array(sigrenderer->n_channels, sigrenderer->click_remover, samples, pos, 512.0f / delta);
|
dumb_remove_clicks_array(sigrenderer->n_channels, sigrenderer->click_remover, samples, pos, 512.0f / delta);
|
||||||
|
|
||||||
|
@ -5622,8 +5578,6 @@ void _dumb_it_end_sigrenderer(sigrenderer_t *vsigrenderer)
|
||||||
|
|
||||||
#ifdef BIT_ARRAY_BULLSHIT
|
#ifdef BIT_ARRAY_BULLSHIT
|
||||||
bit_array_destroy(sigrenderer->played);
|
bit_array_destroy(sigrenderer->played);
|
||||||
|
|
||||||
timekeeping_array_destroy(sigrenderer->row_timekeeper);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
free(vsigrenderer);
|
free(vsigrenderer);
|
||||||
|
@ -5632,17 +5586,6 @@ void _dumb_it_end_sigrenderer(sigrenderer_t *vsigrenderer)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef BIT_ARRAY_BULLSHIT
|
|
||||||
static int32 it_sigrenderer_get_position(sigrenderer_t *vsigrenderer)
|
|
||||||
{
|
|
||||||
DUMB_IT_SIGRENDERER *sigrenderer = vsigrenderer;
|
|
||||||
|
|
||||||
return (int32)(sigrenderer->time_played >> 16);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
DUH_SIGTYPE_DESC _dumb_sigtype_it = {
|
DUH_SIGTYPE_DESC _dumb_sigtype_it = {
|
||||||
SIGTYPE_IT,
|
SIGTYPE_IT,
|
||||||
NULL,
|
NULL,
|
||||||
|
@ -5650,11 +5593,6 @@ DUH_SIGTYPE_DESC _dumb_sigtype_it = {
|
||||||
NULL,
|
NULL,
|
||||||
&it_sigrenderer_get_samples,
|
&it_sigrenderer_get_samples,
|
||||||
&it_sigrenderer_get_current_sample,
|
&it_sigrenderer_get_current_sample,
|
||||||
#ifdef BIT_ARRAY_BULLSHIT
|
|
||||||
&it_sigrenderer_get_position,
|
|
||||||
#else
|
|
||||||
NULL,
|
|
||||||
#endif
|
|
||||||
&_dumb_it_end_sigrenderer,
|
&_dumb_it_end_sigrenderer,
|
||||||
&_dumb_it_unload_sigdata
|
&_dumb_it_unload_sigdata
|
||||||
};
|
};
|
||||||
|
|
|
@ -118,7 +118,6 @@
|
||||||
<ClCompile Include="..\..\src\helpers\sampbuf.c" />
|
<ClCompile Include="..\..\src\helpers\sampbuf.c" />
|
||||||
<ClCompile Include="..\..\src\helpers\silence.c" />
|
<ClCompile Include="..\..\src\helpers\silence.c" />
|
||||||
<ClCompile Include="..\..\src\helpers\stdfile.c" />
|
<ClCompile Include="..\..\src\helpers\stdfile.c" />
|
||||||
<ClCompile Include="..\..\src\helpers\tarray.c" />
|
|
||||||
<ClCompile Include="..\..\src\it\itmisc.c" />
|
<ClCompile Include="..\..\src\it\itmisc.c" />
|
||||||
<ClCompile Include="..\..\src\it\itorder.c" />
|
<ClCompile Include="..\..\src\it\itorder.c" />
|
||||||
<ClCompile Include="..\..\src\it\itrender.c" />
|
<ClCompile Include="..\..\src\it\itrender.c" />
|
||||||
|
@ -210,7 +209,6 @@
|
||||||
<ClInclude Include="..\..\include\internal\lpc.h" />
|
<ClInclude Include="..\..\include\internal\lpc.h" />
|
||||||
<ClInclude Include="..\..\include\internal\riff.h" />
|
<ClInclude Include="..\..\include\internal\riff.h" />
|
||||||
<ClInclude Include="..\..\include\internal\stack_alloc.h" />
|
<ClInclude Include="..\..\include\internal\stack_alloc.h" />
|
||||||
<ClInclude Include="..\..\include\internal\tarray.h" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
<ImportGroup Label="ExtensionTargets">
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
|
|
@ -279,9 +279,6 @@
|
||||||
<ClCompile Include="..\..\src\helpers\resampler.c">
|
<ClCompile Include="..\..\src\helpers\resampler.c">
|
||||||
<Filter>src\helpers</Filter>
|
<Filter>src\helpers</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\src\helpers\tarray.c">
|
|
||||||
<Filter>src\helpers</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="..\..\include\dumb.h">
|
<ClInclude Include="..\..\include\dumb.h">
|
||||||
|
@ -314,9 +311,6 @@
|
||||||
<ClInclude Include="..\..\include\internal\resampler.h">
|
<ClInclude Include="..\..\include\internal\resampler.h">
|
||||||
<Filter>include\internal</Filter>
|
<Filter>include\internal</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\include\internal\tarray.h">
|
|
||||||
<Filter>include\internal</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<CustomBuild Include="..\..\src\helpers\resamp3.inc">
|
<CustomBuild Include="..\..\src\helpers\resamp3.inc">
|
||||||
|
|
Loading…
Reference in a new issue