Esempio n. 1
0
def main():
    # Enable standard application logging
    lib.SDL_LogSetPriority(lib.SDL_LOG_CATEGORY_APPLICATION,
                           lib.SDL_LOG_PRIORITY_INFO)

    # Load the SDL library
    if lib.SDL_Init(lib.SDL_INIT_AUDIO) < 0:
        lib.SDL_LogError(
            lib.SDL_LOG_CATEGORY_APPLICATION,
            "Couldn't initialize SDL: %s\n" % (lib.SDL_GetError()))
        return (1)

    # Print available audio drivers
    n = lib.SDL_GetNumAudioDrivers()
    if n == 0:
        lib.SDL_Log("No built-in audio drivers\n\n")
    else:
        lib.SDL_Log("Built-in audio drivers:\n")
        for i in range(n):
            lib.SDL_Log("  %s\n" % ffi.string(lib.SDL_GetAudioDriver(i)))
        lib.SDL_Log("\n")

    lib.SDL_Log("Using audio driver: %s\n\n" %
                ffi.string(lib.SDL_GetCurrentAudioDriver()))

    print_devices(0)
    print_devices(1)

    lib.SDL_Quit()
    return 0
Esempio n. 2
0
def main():
    # Enable standard application logging
    lib.SDL_LogSetPriority(lib.SDL_LOG_CATEGORY_APPLICATION,
                           lib.SDL_LOG_PRIORITY_INFO)

    # Load the SDL library
    if lib.SDL_Init(lib.SDL_INIT_AUDIO) < 0:
        lib.SDL_LogError(
            lib.SDL_LOG_CATEGORY_APPLICATION,
            "Couldn't initialize SDL: %s\n" % (lib.SDL_GetError()))
        return 1

    if len(sys.argv) > 1:
        filename = sys.argv[1]
    else:
        filename = "sample.wav"

    # Load the wave file into memory
    rwops = lib.SDL_RWFromFile(filename, "rb")

    if lib.SDL_LoadWAV_RW(rwops, 1, wave.spec, wave.sound_p,
                          wave.soundlen_p) == ffi.NULL:
        lib.SDL_LogError(
            lib.SDL_LOG_CATEGORY_APPLICATION,
            "Couldn't load %s: %s\n" % (filename, lib.SDL_GetError()))
        quit(1)
    else:
        print("Loaded " + filename)

    wave.spec.callback = ffi.callback("SDL_AudioCallback", fillerup)

    # Show the list of available drivers
    lib.SDL_Log("Available audio drivers:")
    for i in range(lib.SDL_GetNumAudioDrivers()):
        lib.SDL_Log("%i: %s" % (i, ffi.string(lib.SDL_GetAudioDriver(i))))

    # Initialize fillerup() variables
    if lib.SDL_OpenAudio(wave.spec, ffi.NULL) < 0:
        lib.SDL_LogError(lib.SDL_LOG_CATEGORY_APPLICATION,
                         "Couldn't open audio: %s\n" % (lib.SDL_GetError()))
        lib.SDL_FreeWAV(wave.sound)
        quit(2)

    lib.SDL_Log("Using audio driver: %s\n" %
                (ffi.string(lib.SDL_GetCurrentAudioDriver())))

    # Let the audio run
    lib.SDL_PauseAudio(0)
    while not done and (lib.SDL_GetAudioStatus() == lib.SDL_AUDIO_PLAYING):
        lib.SDL_Delay(1000)

    # Clean up on signal
    lib.SDL_CloseAudio()
    lib.SDL_FreeWAV(wave.sound_p[0])
    lib.SDL_Quit()
    return 0
Esempio n. 3
0
def joystickGetGUIDString(a0):
    """
    ``void SDL_JoystickGetGUIDString(SDL_JoystickGUID, char *, int)``

    Return a string representation for this guid. pszGUID must point to at
    least 33 bytes (32 for the string plus a NULL terminator).
    """
    buf = ffi.new('char *', 33)
    lib.SDL_JoystickGetGUIDString(unbox(a0), buf, 33)
    return ffi.string(buffer)
Esempio n. 4
0
def print_devices(iscapture):
    typestr = "capture" if iscapture else "output"
    n = lib.SDL_GetNumAudioDevices(iscapture)

    print("%s devices" % typestr)

    if n == -1:
        lib.SDL_Log("  Driver can't detect specific %s devices.\n\n" %
                    (typestr))
    elif n == 0:
        lib.SDL_Log("  No %s devices found.\n\n" % (typestr))
    else:
        for i in range(n):
            lib.SDL_Log("  %s\n" %
                        ffi.string(lib.SDL_GetAudioDeviceName(i, iscapture), ))
        lib.SDL_Log("\n")
Esempio n. 5
0
 def __init__(self):
     message = ffi.string(lib.SDL_GetError()).decode('utf-8')
     assert message, 'SDL reports no error.'  # don't call us when there is no error!
     Exception.__init__(self, message)