Browse Source

Dmitry Baikov jackmp-time patch: add jack_get_time, jack_time_to_frames, jack_frames_to_time.

git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@1444 0c269be4-1314-0410-8aa9-9f06e86f4224
tags/0.63
sletz 18 years ago
parent
commit
36c7cdec17
2 changed files with 43 additions and 4 deletions
  1. +4
    -0
      ChangeLog
  2. +39
    -4
      common/JackAPI.cpp

+ 4
- 0
ChangeLog View File

@@ -2,6 +2,10 @@
Jackdmp changes log
---------------------------

2007-04-23 Stephane Letz <letz@grame.fr>

* Dmitry Baikov jackmp-time patch: add jack_get_time, jack_time_to_frames, jack_frames_to_time.

2007-04-01 Stephane Letz <letz@grame.fr>

* Merge JackGraphManager Remove and Release method in a unique Release method.


+ 39
- 4
common/JackAPI.cpp View File

@@ -139,6 +139,9 @@ extern "C"
jack_port_id_t port_id);
EXPORT int jack_engine_takeover_timebase (jack_client_t *);
EXPORT jack_nframes_t jack_frames_since_cycle_start (const jack_client_t *);
EXPORT jack_time_t jack_get_time(const jack_client_t *client);
EXPORT jack_nframes_t jack_time_to_frames(const jack_client_t *client, jack_time_t time);
EXPORT jack_time_t jack_frames_to_time(const jack_client_t *client, jack_nframes_t frames);
EXPORT jack_nframes_t jack_frame_time (const jack_client_t *);
EXPORT jack_nframes_t jack_last_frame_time (const jack_client_t *client);
EXPORT float jack_cpu_load (jack_client_t *client);
@@ -193,7 +196,7 @@ extern "C"
jack_status_t *status, ...);
EXPORT jack_status_t jack_internal_client_unload (jack_client_t *client,
jack_intclient_t intclient);
#ifdef __cplusplus
}
#endif
@@ -1015,21 +1018,48 @@ EXPORT jack_nframes_t jack_frames_since_cycle_start(const jack_client_t* ext_cli
return (jack_nframes_t) floor((((float)GetEngineControl()->fSampleRate) / 1000000.0f) * (GetMicroSeconds() - timer.fCurrentCallback));
}

EXPORT jack_nframes_t jack_frame_time(const jack_client_t* ext_client)
EXPORT jack_time_t jack_get_time(jack_client_t *client)
{
return GetMicroSeconds();
}

EXPORT jack_time_t jack_frames_to_time(const jack_client_t* ext_client, jack_nframes_t frames)
{
#ifdef __CLIENTDEBUG__
JackLibGlobals::CheckContext();
#endif
JackClient* client = (JackClient*)ext_client;
if (client == NULL) {
jack_error("jack_frames_to_time called with a NULL client");
return 0;
} else {
JackTimer timer;
GetEngineControl()->ReadFrameTime(&timer);
if (timer.fInitialized) {
return timer.fCurrentWakeup +
(long) rint(((double) ((frames - timer.fFrames)) *
((jack_time_t)(timer.fNextWakeUp - timer.fCurrentWakeup))) / GetEngineControl()->fBufferSize);
} else {
return 0;
}
}
}

EXPORT jack_nframes_t jack_time_to_frames(const jack_client_t* ext_client, jack_time_t time)
{
#ifdef __CLIENTDEBUG__
JackLibGlobals::CheckContext();
#endif
JackClient* client = (JackClient*)ext_client;
if (client == NULL) {
jack_error("jack_frame_time called with a NULL client");
jack_error("jack_time_to_frames called with a NULL client");
return 0;
} else {
JackTimer timer;
GetEngineControl()->ReadFrameTime(&timer);
if (timer.fInitialized) {
return timer.fFrames +
(long) rint(((double) ((jack_time_t)(GetMicroSeconds() - timer.fCurrentWakeup)) /
(long) rint(((double) ((time - timer.fCurrentWakeup)) /
((jack_time_t)(timer.fNextWakeUp - timer.fCurrentWakeup))) * GetEngineControl()->fBufferSize);
} else {
return 0;
@@ -1037,6 +1067,11 @@ EXPORT jack_nframes_t jack_frame_time(const jack_client_t* ext_client)
}
}

EXPORT jack_nframes_t jack_frame_time(const jack_client_t* ext_client)
{
return jack_time_to_frames(ext_client, GetMicroSeconds());
}

EXPORT jack_nframes_t jack_last_frame_time(const jack_client_t* ext_client)
{
#ifdef __CLIENTDEBUG__


Loading…
Cancel
Save