diff --git a/dlls/winmm/winealsa/audio.c b/dlls/winmm/winealsa/audio.c index 7df7cb485a6..0a0388283dd 100644 --- a/dlls/winmm/winealsa/audio.c +++ b/dlls/winmm/winealsa/audio.c @@ -284,7 +284,9 @@ static DWORD bytes_to_mmtime(LPMMTIME lpTime, DWORD position, TRACE("TIME_MS=%lu\n", lpTime->u.ms); break; case TIME_SMPTE: + lpTime->u.smpte.fps = 30; position = position / (format->Format.wBitsPerSample / 8 * format->Format.nChannels); + position += (format->Format.nSamplesPerSec / lpTime->u.smpte.fps) - 1; /* round up */ lpTime->u.smpte.sec = position / format->Format.nSamplesPerSec; position -= lpTime->u.smpte.sec * format->Format.nSamplesPerSec; lpTime->u.smpte.min = lpTime->u.smpte.sec / 60; @@ -293,12 +295,6 @@ static DWORD bytes_to_mmtime(LPMMTIME lpTime, DWORD position, lpTime->u.smpte.min -= 60 * lpTime->u.smpte.hour; lpTime->u.smpte.fps = 30; lpTime->u.smpte.frame = position * lpTime->u.smpte.fps / format->Format.nSamplesPerSec; - position -= lpTime->u.smpte.frame * format->Format.nSamplesPerSec / lpTime->u.smpte.fps; - if (position != 0) - { - /* Round up */ - lpTime->u.smpte.frame++; - } TRACE("TIME_SMPTE=%02u:%02u:%02u:%02u\n", lpTime->u.smpte.hour, lpTime->u.smpte.min, lpTime->u.smpte.sec, lpTime->u.smpte.frame); diff --git a/dlls/winmm/winearts/audio.c b/dlls/winmm/winearts/audio.c index 1826baf44fc..798a958a1ab 100644 --- a/dlls/winmm/winearts/audio.c +++ b/dlls/winmm/winearts/audio.c @@ -238,7 +238,9 @@ static DWORD bytes_to_mmtime(LPMMTIME lpTime, DWORD position, TRACE("TIME_MS=%lu\n", lpTime->u.ms); break; case TIME_SMPTE: + lpTime->u.smpte.fps = 30; position = position / (format->wBitsPerSample / 8 * format->wf.nChannels); + position += (format->wf.nSamplesPerSec / lpTime->u.smpte.fps) - 1; /* round up */ lpTime->u.smpte.sec = position / format->wf.nSamplesPerSec; position -= lpTime->u.smpte.sec * format->wf.nSamplesPerSec; lpTime->u.smpte.min = lpTime->u.smpte.sec / 60; @@ -247,12 +249,6 @@ static DWORD bytes_to_mmtime(LPMMTIME lpTime, DWORD position, lpTime->u.smpte.min -= 60 * lpTime->u.smpte.hour; lpTime->u.smpte.fps = 30; lpTime->u.smpte.frame = position * lpTime->u.smpte.fps / format->wf.nSamplesPerSec; - position -= lpTime->u.smpte.frame * format->wf.nSamplesPerSec / lpTime->u.smpte.fps; - if (position != 0) - { - /* Round up */ - lpTime->u.smpte.frame++; - } TRACE("TIME_SMPTE=%02u:%02u:%02u:%02u\n", lpTime->u.smpte.hour, lpTime->u.smpte.min, lpTime->u.smpte.sec, lpTime->u.smpte.frame); diff --git a/dlls/winmm/wineaudioio/audio.c b/dlls/winmm/wineaudioio/audio.c index ec30db0be33..45cb0ab0666 100644 --- a/dlls/winmm/wineaudioio/audio.c +++ b/dlls/winmm/wineaudioio/audio.c @@ -197,21 +197,17 @@ static DWORD bytes_to_mmtime(LPMMTIME lpTime, DWORD position, TRACE("TIME_MS=%lu\n", lpTime->u.ms); break; case TIME_SMPTE: - position = position / (format->wBitsPerSample / 8 * format->wf.nChannels); - lpTime->u.smpte.sec = position / format->wf.nSamplesPerSec; - position -= lpTime->u.smpte.sec * format->wf.nSamplesPerSec; + lpTime->u.smpte.fps = 30; + position = position / (format->Format.wBitsPerSample / 8 * format->Format.nChannels); + position += (format->Format.nSamplesPerSec / lpTime->u.smpte.fps) - 1; /* round up */ + lpTime->u.smpte.sec = position / format->Format.nSamplesPerSec; + position -= lpTime->u.smpte.sec * format->Format.nSamplesPerSec; lpTime->u.smpte.min = lpTime->u.smpte.sec / 60; lpTime->u.smpte.sec -= 60 * lpTime->u.smpte.min; lpTime->u.smpte.hour = lpTime->u.smpte.min / 60; lpTime->u.smpte.min -= 60 * lpTime->u.smpte.hour; lpTime->u.smpte.fps = 30; - lpTime->u.smpte.frame = position * lpTime->u.smpte.fps / format->wf.nSamplesPerSec; - position -= lpTime->u.smpte.frame * format->wf.nSamplesPerSec / lpTime->u.smpte.fps; - if (position != 0) - { - /* Round up */ - lpTime->u.smpte.frame++; - } + lpTime->u.smpte.frame = position * lpTime->u.smpte.fps / format->Format.nSamplesPerSec; TRACE("TIME_SMPTE=%02u:%02u:%02u:%02u\n", lpTime->u.smpte.hour, lpTime->u.smpte.min, lpTime->u.smpte.sec, lpTime->u.smpte.frame); diff --git a/dlls/winmm/winejack/audio.c b/dlls/winmm/winejack/audio.c index c6373225557..6401bce1d52 100644 --- a/dlls/winmm/winejack/audio.c +++ b/dlls/winmm/winejack/audio.c @@ -233,7 +233,9 @@ static DWORD bytes_to_mmtime(LPMMTIME lpTime, DWORD position, TRACE("TIME_MS=%lu\n", lpTime->u.ms); break; case TIME_SMPTE: + lpTime->u.smpte.fps = 30; position = position / (format->wBitsPerSample / 8 * format->wf.nChannels); + position += (format->wf.nSamplesPerSec / lpTime->u.smpte.fps) - 1; /* round up */ lpTime->u.smpte.sec = position / format->wf.nSamplesPerSec; position -= lpTime->u.smpte.sec * format->wf.nSamplesPerSec; lpTime->u.smpte.min = lpTime->u.smpte.sec / 60; @@ -242,12 +244,6 @@ static DWORD bytes_to_mmtime(LPMMTIME lpTime, DWORD position, lpTime->u.smpte.min -= 60 * lpTime->u.smpte.hour; lpTime->u.smpte.fps = 30; lpTime->u.smpte.frame = position * lpTime->u.smpte.fps / format->wf.nSamplesPerSec; - position -= lpTime->u.smpte.frame * format->wf.nSamplesPerSec / lpTime->u.smpte.fps; - if (position != 0) - { - /* Round up */ - lpTime->u.smpte.frame++; - } TRACE("TIME_SMPTE=%02u:%02u:%02u:%02u\n", lpTime->u.smpte.hour, lpTime->u.smpte.min, lpTime->u.smpte.sec, lpTime->u.smpte.frame); diff --git a/dlls/winmm/winenas/audio.c b/dlls/winmm/winenas/audio.c index 25f4122a3ee..1736e2363bb 100644 --- a/dlls/winmm/winenas/audio.c +++ b/dlls/winmm/winenas/audio.c @@ -295,7 +295,9 @@ static DWORD bytes_to_mmtime(LPMMTIME lpTime, DWORD position, TRACE("TIME_MS=%lu\n", lpTime->u.ms); break; case TIME_SMPTE: + lpTime->u.smpte.fps = 30; position = position / (format->wBitsPerSample / 8 * format->wf.nChannels); + position += (format->wf.nSamplesPerSec / lpTime->u.smpte.fps) - 1; /* round up */ lpTime->u.smpte.sec = position / format->wf.nSamplesPerSec; position -= lpTime->u.smpte.sec * format->wf.nSamplesPerSec; lpTime->u.smpte.min = lpTime->u.smpte.sec / 60; @@ -304,12 +306,6 @@ static DWORD bytes_to_mmtime(LPMMTIME lpTime, DWORD position, lpTime->u.smpte.min -= 60 * lpTime->u.smpte.hour; lpTime->u.smpte.fps = 30; lpTime->u.smpte.frame = position * lpTime->u.smpte.fps / format->wf.nSamplesPerSec; - position -= lpTime->u.smpte.frame * format->wf.nSamplesPerSec / lpTime->u.smpte.fps; - if (position != 0) - { - /* Round up */ - lpTime->u.smpte.frame++; - } TRACE("TIME_SMPTE=%02u:%02u:%02u:%02u\n", lpTime->u.smpte.hour, lpTime->u.smpte.min, lpTime->u.smpte.sec, lpTime->u.smpte.frame);