diff options
author | Max Kellermann <max@duempel.org> | 2014-01-24 16:18:21 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2014-01-24 16:33:33 +0100 |
commit | f8bfea8bae44134e8002db869fd4ec137d1c0d6e (patch) | |
tree | d370391baccbbc4c23306656aec3751a7ffc95ae /src/input/MmsInputPlugin.cxx | |
parent | e199c33c6e9eb2f1aa588073f49f44de274985d5 (diff) | |
download | mpd-f8bfea8bae44134e8002db869fd4ec137d1c0d6e.tar.gz mpd-f8bfea8bae44134e8002db869fd4ec137d1c0d6e.tar.xz mpd-f8bfea8bae44134e8002db869fd4ec137d1c0d6e.zip |
Input*: move to input/
Diffstat (limited to 'src/input/MmsInputPlugin.cxx')
-rw-r--r-- | src/input/MmsInputPlugin.cxx | 127 |
1 files changed, 0 insertions, 127 deletions
diff --git a/src/input/MmsInputPlugin.cxx b/src/input/MmsInputPlugin.cxx deleted file mode 100644 index 8f946ae5e..000000000 --- a/src/input/MmsInputPlugin.cxx +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright (C) 2003-2014 The Music Player Daemon Project - * http://www.musicpd.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ - -#include "config.h" -#include "MmsInputPlugin.hxx" -#include "InputStream.hxx" -#include "InputPlugin.hxx" -#include "util/StringUtil.hxx" -#include "util/Error.hxx" -#include "util/Domain.hxx" - -#include <libmms/mmsx.h> - -struct MmsInputStream { - InputStream base; - - mmsx_t *mms; - - bool eof; - - MmsInputStream(const char *uri, - Mutex &mutex, Cond &cond, - mmsx_t *_mms) - :base(input_plugin_mms, uri, mutex, cond), - mms(_mms), eof(false) { - /* XX is this correct? at least this selects the ffmpeg - decoder, which seems to work fine*/ - base.mime = "audio/x-ms-wma"; - - base.ready = true; - } - - ~MmsInputStream() { - mmsx_close(mms); - } -}; - -static constexpr Domain mms_domain("mms"); - -static InputStream * -input_mms_open(const char *url, - Mutex &mutex, Cond &cond, - Error &error) -{ - if (!StringStartsWith(url, "mms://") && - !StringStartsWith(url, "mmsh://") && - !StringStartsWith(url, "mmst://") && - !StringStartsWith(url, "mmsu://")) - return nullptr; - - const auto mms = mmsx_connect(nullptr, nullptr, url, 128 * 1024); - if (mms == nullptr) { - error.Set(mms_domain, "mmsx_connect() failed"); - return nullptr; - } - - auto m = new MmsInputStream(url, mutex, cond, mms); - return &m->base; -} - -static size_t -input_mms_read(InputStream *is, void *ptr, size_t size, - Error &error) -{ - MmsInputStream *m = (MmsInputStream *)is; - int ret; - - ret = mmsx_read(nullptr, m->mms, (char *)ptr, size); - if (ret <= 0) { - if (ret < 0) - error.SetErrno("mmsx_read() failed"); - - m->eof = true; - return false; - } - - is->offset += ret; - - return (size_t)ret; -} - -static void -input_mms_close(InputStream *is) -{ - MmsInputStream *m = (MmsInputStream *)is; - - delete m; -} - -static bool -input_mms_eof(InputStream *is) -{ - MmsInputStream *m = (MmsInputStream *)is; - - return m->eof; -} - -const InputPlugin input_plugin_mms = { - "mms", - nullptr, - nullptr, - input_mms_open, - input_mms_close, - nullptr, - nullptr, - nullptr, - nullptr, - input_mms_read, - input_mms_eof, - nullptr, -}; |