Don't pass the "seekable" flag with every decoder_data() invocation. Since that flag won't change within the file, it is enough to pass it to decoder_initialized() once per file.
Everybody should use struct input_stream.
These plugins are not input plugins, they are decoder plugins. No CamelCase in the directory name.