Exemplo n.º 1
0
static void uninit(sh_audio_t *sh)
{
    HRESULT ret;
    acm_context_t *priv = sh->context;

retry:
    ret = acmStreamClose(priv->handle, 0);

    if (ret)
    switch(ret)
    {
	case ACMERR_BUSY:
	case ACMERR_CANCELED:
	    mp_msg(MSGT_WIN32, MSGL_DBG2, "ACM_Decoder: stream busy, waiting..\n");
	    usec_sleep(100000000);
	    goto retry;
	case ACMERR_UNPREPARED:
	case ACMERR_NOTPOSSIBLE:
	    return;
	default:
	    mp_msg(MSGT_WIN32, MSGL_WARN, "ACM_Decoder: unknown error occurred: %ld\n", ret);
	    return;
    }

    MSACM_UnregisterAllDrivers();

    free(priv->o_wf);
    free(priv);
}
Exemplo n.º 2
0
/***********************************************************************
 *           DllMain (MSACM32.init)
 */
BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
    TRACE("%p 0x%x %p\n", hInstDLL, fdwReason, lpvReserved);

    switch (fdwReason) {
    case DLL_PROCESS_ATTACH:
        DisableThreadLibraryCalls(hInstDLL);
        MSACM_hHeap = HeapCreate(0, 0x10000, 0);
        MSACM_hInstance32 = hInstDLL;
        MSACM_RegisterAllDrivers();
	break;
    case DLL_PROCESS_DETACH:
        MSACM_UnregisterAllDrivers();
        if (lpvReserved) break;
        HeapDestroy(MSACM_hHeap);
	break;
    default:
	break;
    }
    return TRUE;
}