[Jahshaka-cvs] openlibraries/src/openmedialib/py Makefile.am, NONE, 1.1 ml.cpp, NONE, 1.1 py.cpp, N
Status: Beta
Brought to you by:
jahshaka
From: Charles Y. <lil...@us...> - 2006-10-04 02:45:42
|
Update of /cvsroot/openlibraries/openlibraries/src/openmedialib/py In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv13952 Added Files: Makefile.am ml.cpp py.cpp py.hpp Log Message: + Introduces oml python bindings (NB: This needs to be hooked up to the dev studio solution) --- NEW FILE: ml.cpp --- // ml - A media library representation. // Copyright (C) 2005-2006 VM Inc. // Released under the LGPL. // For more information, see http://www.openlibraries.org. #include <openpluginlib/py/python.hpp> #include <openmedialib/ml/openmedialib_plugin.hpp> #include <openmedialib/ml/frame.hpp> #include <openmedialib/py/py.hpp> namespace fs = boost::filesystem; namespace ml = olib::openmedialib; namespace pl = olib::openpluginlib; namespace py = boost::python; namespace olib { namespace openmedialib { namespace ml { namespace detail { void py_audio( ) { py::class_<ml::audio_type, boost::noncopyable, ml::audio_type_ptr>( "audio", py::no_init ) .def( "frequency", &ml::audio_type::frequency ) .def( "channels", &ml::audio_type::channels ) .def( "samples", &ml::audio_type::samples ) .def( "af", &ml::audio_type::af ) .def( "pts", &ml::audio_type::pts ) .def( "set_pts", &ml::audio_type::set_pts ) .def( "position", &ml::audio_type::position ) .def( "set_position", &ml::audio_type::set_position ) .def( "size", &ml::audio_type::size ) ; } void py_frame( ) { py::class_<ml::frame_type, boost::noncopyable, ml::frame_type_ptr>( "frame", py::no_init ) .def( "set_image", &ml::frame_type::set_image ) .def( "get_image", &ml::frame_type::get_image ) .def( "set_audio", &ml::frame_type::set_audio ) .def( "get_audio", &ml::frame_type::get_audio ) .def( "set_pts", &ml::frame_type::set_pts ) .def( "get_pts", &ml::frame_type::get_pts ) .def( "set_position", &ml::frame_type::set_position ) .def( "get_position", &ml::frame_type::get_position ) .def( "set_duration", &ml::frame_type::set_duration ) .def( "get_duration", &ml::frame_type::get_duration ) .def( "set_sar", &ml::frame_type::set_sar ) .def( "get_sar", &ml::frame_type::get_sar ) .def( "aspect_ratio", &ml::frame_type::aspect_ratio ) ; } void py_input( ) { py::class_<ml::input_type, boost::noncopyable, ml::input_type_ptr>( "input", py::no_init ) .def( "get_uri", &ml::input_type::get_uri ) .def( "get_mime_type", &ml::input_type::get_mime_type ) .def( "has_video", &ml::input_type::has_video ) .def( "has_audio", &ml::input_type::has_audio ) .def( "get_fps", &ml::input_type::get_fps ) .def( "get_frames", &ml::input_type::get_frames ) .def( "is_seekable", &ml::input_type::is_seekable ) .def( "get_video_streams", &ml::input_type::get_video_streams ) .def( "get_width", &ml::input_type::get_width ) .def( "get_height", &ml::input_type::get_height ) .def( "get_audio_streams", &ml::input_type::get_audio_streams ) .def( "set_video_stream", &ml::input_type::set_video_stream ) .def( "set_audio_stream", &ml::input_type::set_audio_stream ) .def( "fps", &ml::input_type::fps ) .def( "get_duration", &ml::input_type::get_duration ) .def( "set_process_flags", &ml::input_type::set_process_flags ) .def( "get_process_flags", &ml::input_type::get_process_flags ) .def( "seek", &ml::input_type::seek ) .def( "seek_time", &ml::input_type::seek_time ) .def( "get_position", &ml::input_type::get_position ) .def( "fetch", &ml::input_type::fetch ) .def( "refresh_cache", &ml::input_type::refresh_cache ) ; } void py_store( ) { py::class_<ml::store_type, boost::noncopyable, ml::store_type_ptr>( "store", py::no_init ) .def( "init", &ml::store_type::init ) .def( "push", &ml::store_type::push ) .def( "flush", &ml::store_type::flush ) .def( "complete", &ml::store_type::complete ) .def( "empty", &ml::store_type::empty ) ; } ml::input_type_ptr load_input( const pl::opl_ptr& ptr, const std::string& path ) { boost::shared_ptr<ml::openmedialib_plugin> plug = boost::shared_dynamic_cast<ml::openmedialib_plugin>( ptr ); if( !plug ) return ml::input_type_ptr( ); ml::input_type_ptr input = plug->load( fs::path( path, fs::native ) ); if( !input ) return ml::input_type_ptr( ); return input; } ml::store_type_ptr load_store( const pl::opl_ptr& ptr, const std::string& path, const ml::frame_type_ptr &frame ) { boost::shared_ptr<ml::openmedialib_plugin> plug = boost::shared_dynamic_cast<ml::openmedialib_plugin>( ptr ); if( !plug ) return ml::store_type_ptr( ); ml::store_type_ptr store = plug->store( pl::to_wstring( path ), frame ); if( !store ) return ml::store_type_ptr( ); return store; } ml::input_type_ptr create_input( const std::string &resource ) { return ml::create_input( pl::to_wstring( resource ) ); } ml::store_type_ptr create_store( const std::string &resource, const ml::frame_type_ptr &frame ) { return ml::create_store( pl::to_wstring( resource ), frame ); } void py_plugin( ) { py::def( "load_input", &detail::load_input ); py::def( "load_store", &detail::load_store ); py::def( "create_input", &detail::create_input ); py::def( "create_store", &detail::create_store ); py::def( "audio_resample", &ml::audio_resample ); } } } } } --- NEW FILE: py.hpp --- // ml - A media library representation. // Copyright (C) 2005-2006 VM Inc. // Released under the LGPL. // For more information, see http://www.openlibraries.org. #ifndef PY_INC_ #define PY_INC_ namespace olib { namespace openmedialib { namespace ml { namespace detail { void py_input( ); void py_store( ); void py_frame( ); void py_audio( ); void py_plugin( ); } } } } #endif --- NEW FILE: py.cpp --- // ml - A media library representation. // Copyright (C) 2005-2006 VM Inc. // Released under the LGPL. // For more information, see http://www.openlibraries.org. #include <openpluginlib/py/python.hpp> #include <openmedialib/py/py.hpp> namespace ml = olib::openmedialib::ml; BOOST_PYTHON_MODULE( openmedialib ) { ml::detail::py_audio( ); ml::detail::py_frame( ); ml::detail::py_input( ); ml::detail::py_store( ); ml::detail::py_plugin( ); } --- NEW FILE: Makefile.am --- # # # libdir = $(OPENMEDIALIB_LIBPATH) if HAVE_PYTHON lib_LTLIBRARIES = libopenmedialib_py.la libopenmedialib_py_la_SOURCES = \ ml.cpp \ py.hpp \ py.cpp libopenmedialib_py_la_CXXFLAGS = \ $(OLIB_CXXFLAGS) \ $(BOOST_INCLUDE_PATH) \ $(PYTHON_INCLUDE_PATH) libopenmedialib_py_la_LIBADD = \ $(BOOST_PYTHON_LIBS) \ $(top_builddir)/src/openmedialib/ml/libopenmedialib_ml.la \ $(top_builddir)/src/openpluginlib/pl/libopenpluginlib_pl.la libopenmedialib_py_la_LDFLAGS = \ $(OLIB_LDFLAGS) \ $(BOOST_LIB_PATH) \ $(BOOST_LIB_RPATH) \ -version-info $(OL_LT_CURRENT):$(OL_LT_REVISION):$(OL_LT_AGE) endif install-exec-hook: if HAVE_PYTHON mkdir -p $(DESTDIR)$(prefix)/$(OL_LIBNAME)/python$(PYTHON_VERSION)/site-packages ln -sf $(libdir)/libopenmedialib_py.$(SHARED_EXT) $(DESTDIR)$(prefix)/$(OL_LIBNAME)/python$(PYTHON_VERSION)/site-packages/openmedialib.so endif uninstall-hook: if HAVE_PYTHON rm -rf $(DESTDIR)$(prefix)/$(OL_LIBNAME)/python$(PYTHON_VERSION)/site-packages/openmedialib.so endif |