author | zecke <zecke> | 2002-07-02 15:25:38 (UTC) |
---|---|---|
committer | zecke <zecke> | 2002-07-02 15:25:38 (UTC) |
commit | e26bf96e2e4f2d1edf19e81dc67eace3cb8622dc (patch) (side-by-side diff) | |
tree | 0346837eed0c9acc55f25601e495a188fb1111fb | |
parent | d4a5bcbba0e6f67ef9d41e08c7d5ae598caa61a8 (diff) | |
download | opie-e26bf96e2e4f2d1edf19e81dc67eace3cb8622dc.zip opie-e26bf96e2e4f2d1edf19e81dc67eace3cb8622dc.tar.gz opie-e26bf96e2e4f2d1edf19e81dc67eace3cb8622dc.tar.bz2 |
my hacky null video output plugin
This will become our smart opie video widget
controller...
-rw-r--r-- | noncore/multimedia/opieplayer2/lib.cpp | 2 | ||||
-rw-r--r-- | noncore/multimedia/opieplayer2/mainTest.cpp | 2 | ||||
-rw-r--r-- | noncore/multimedia/opieplayer2/nullvideo.c | 137 | ||||
-rw-r--r-- | noncore/multimedia/opieplayer2/zeckeplayer.pro | 6 |
4 files changed, 142 insertions, 5 deletions
diff --git a/noncore/multimedia/opieplayer2/lib.cpp b/noncore/multimedia/opieplayer2/lib.cpp index ecaeeea..4b13f00 100644 --- a/noncore/multimedia/opieplayer2/lib.cpp +++ b/noncore/multimedia/opieplayer2/lib.cpp @@ -1,105 +1,105 @@ #include <stdio.h> #include <stdlib.h> //#include <qpe/qpeapplication.h> #include <qfile.h> #include "frame.h" -#include "xinelib.h" +#include "lib.h" using namespace XINE; Lib::Lib() { printf("Lib"); QCString str( getenv("HOME") ); str += "/Settings/opiexine.cf"; // get the configuration m_config = xine_config_file_init( str.data() ); // allocate oss for sound // and fb for framebuffer m_audioOutput= xine_load_audio_output_plugin( m_config, "oss") ; if (m_audioOutput == NULL ) printf("Failure\n"); else printf("Success\n"); // test code m_videoOutput = xine_load_video_output_plugin(m_config, "fb", VISUAL_TYPE_FB, 0 ); char** files = xine_list_video_output_plugins(3); char* out; int i = 0; while ( ( out = files[i] ) != 0 ) { printf("Audio %s\n", out ); i++; } m_xine = xine_init( m_videoOutput, m_audioOutput, m_config ); } Lib::~Lib() { delete m_config; xine_exit( m_xine ); delete m_videoOutput; //delete m_audioOutput; } QCString Lib::version() { QCString str( xine_get_str_version() ); return str; }; int Lib::majorVersion() { return xine_get_major_version(); } int Lib::minorVersion() { return xine_get_minor_version(); }; int Lib::subVersion() { return xine_get_sub_version(); } int Lib::play( const QString& fileName, int startPos, int start_time ) { QString str = fileName; return xine_play( m_xine, QFile::encodeName(str.utf8() ).data(), startPos, start_time); } void Lib::stop() { xine_stop(m_xine ); } void Lib::pause(){ xine_set_speed( m_xine, SPEED_PAUSE ); } int Lib::speed() { return xine_get_speed( m_xine ); } void Lib::setSpeed( int speed ) { xine_set_speed( m_xine, speed ); } int Lib::status(){ return xine_get_status( m_xine ); } int Lib::currentPosition(){ return xine_get_current_position( m_xine ); } int Lib::currentTime() { return xine_get_current_time( m_xine ); }; int Lib::length() { return xine_get_stream_length( m_xine ); } bool Lib::isSeekable() { return xine_is_stream_seekable(m_xine); } Frame Lib::currentFrame() { diff --git a/noncore/multimedia/opieplayer2/mainTest.cpp b/noncore/multimedia/opieplayer2/mainTest.cpp index f130c51..58a8b47 100644 --- a/noncore/multimedia/opieplayer2/mainTest.cpp +++ b/noncore/multimedia/opieplayer2/mainTest.cpp @@ -1,15 +1,15 @@ #include <stdlib.h> #include <stdio.h> -#include "xinelib.h" +#include "lib.h" int main( int argc, char *argv[] ) { printf("FixME\n"); //return 0; XINE::Lib lib; QString str = QString::fromLatin1( argv[1] ); lib.play( str ); for (;;); return 0; } diff --git a/noncore/multimedia/opieplayer2/nullvideo.c b/noncore/multimedia/opieplayer2/nullvideo.c new file mode 100644 index 0000000..c97800c --- a/dev/null +++ b/noncore/multimedia/opieplayer2/nullvideo.c @@ -0,0 +1,137 @@ + +/*#include <xine.h>*/ +#include <stdlib.h> +#include <stdio.h> + +#include <xine/video_out.h> +#include <xine/xine_internal.h> +#include <xine/xineutils.h> +#include <xine/configfile.h> + +typedef struct null_driver_s null_driver_t; + +struct null_driver_s { + vo_driver_t vo_driver; + uint32_t m_capabilities; + +}; +typedef struct opie_frame_s opie_frame_t; +struct opie_frame_s { + vo_frame_t frame; + char* name; + int version; + null_driver_t *output; +}; + +static uint32_t null_get_capabilities(vo_driver_t *self ){ + null_driver_t* this = (null_driver_t*)self; + return this->m_capabilities; +} + +/* take care of the frame*/ +static void null_frame_dispose( vo_frame_t* vo_img){ + opie_frame_t* frame = (opie_frame_t*)vo_img; + free (frame); +} +static void null_frame_field( vo_frame_t* frame, int inti ){ + /* not needed */ +} + +/* end take care of frames*/ + +static vo_frame_t* null_alloc_frame( vo_driver_t* self ){ + null_driver_t* this = (null_driver_t*)self; + opie_frame_t* frame = (opie_frame_t*)malloc ( sizeof(opie_frame_t) ); + memset( frame, 0, sizeof( opie_frame_t) ); + frame->name = "opie\0"; + frame->version = 1; + frame->output = this; + + /* initialize the frame*/ + frame->frame.driver = self; + /*frame.frame.free = null_frame_free;*/ + frame->frame.copy = NULL; + frame->frame.field = null_frame_field; + frame->frame.dispose = null_frame_dispose; + + return (vo_frame_t*) frame; +} +static void null_update_frame_format( vo_driver_t* self, vo_frame_t* img, + uint32_t width, uint32_t height, + int ratio_code, int format, int flags ){ + /* not needed now */ +} +static void null_display_frame( vo_driver_t* self, vo_frame_t *frame ){ + printf("display frame"); +} +static void null_overlay_blend( vo_driver_t* self, vo_frame_t* frame, + vo_overlay_t* overlay ){ + /* sure */ +} +static int null_get_property( vo_driver_t* self, + int property ){ + return 0; +} +static int null_set_property( vo_driver_t* self, + int property, + int value ){ + return value; +} +static void null_get_property_min_max( vo_driver_t* self, + int property, int *min, + int *max ){ + *max = 0; + *min = 0; +} +static int null_gui_data_exchange( vo_driver_t* self, + int data_type, + void *data ){ + return 0; +} +static void null_exit( vo_driver_t* self ){ + null_driver_t* this = (null_driver_t*)self; + free ( this ); +} +static int null_redraw_needed( vo_driver_t* self ){ + return 0; +} + + +vo_driver_t* init_video_out_plugin( config_values_t* conf, + void* video ){ + null_driver_t *vo; + vo = (null_driver_t*)malloc( sizeof(null_driver_t ) ); + /* memset? */ + + /* install callback handlers*/ + vo->vo_driver.get_capabilities = null_get_capabilities; + vo->vo_driver.alloc_frame = null_alloc_frame; + vo->vo_driver.update_frame_format = null_update_frame_format; + vo->vo_driver.display_frame = null_display_frame; + vo->vo_driver.overlay_blend = null_overlay_blend; + vo->vo_driver.get_property = null_get_property; + vo->vo_driver.set_property = null_set_property; + vo->vo_driver.get_property_min_max = null_get_property_min_max; + vo->vo_driver.gui_data_exchange = null_gui_data_exchange; + vo->vo_driver.exit = null_exit; + vo->vo_driver.redraw_needed = null_redraw_needed; + + + /* capabilities */ + vo->m_capabilities = /*VO_CAP_COPIES_IMAGE |*/ VO_CAP_YV12 | VO_CAP_BRIGHTNESS; + printf("done initialisation\n"); + return (vo_driver_t*) vo; +} + +static vo_info_t vo_info_null = { + 5, + "null plugin", + NULL, + VISUAL_TYPE_FB, + 5 +}; + +vo_info_t *get_video_out_plugin_info(){ + vo_info_null.description = _("xine video output plugin using null device"); + return &vo_info_null; +} diff --git a/noncore/multimedia/opieplayer2/zeckeplayer.pro b/noncore/multimedia/opieplayer2/zeckeplayer.pro index e63713f..2484c86 100644 --- a/noncore/multimedia/opieplayer2/zeckeplayer.pro +++ b/noncore/multimedia/opieplayer2/zeckeplayer.pro @@ -1,10 +1,10 @@ TEMPLATE = app DESTDIR = . #CONFIG = qt warn_on debug CONFIG = qt warn_on release HEADERS = frame.h lib.h -SOURCES = frame.cpp lib.cpp main.cpp -INCLUDEPATH += $(OPIEDIR)/include /usr/locale/include -DEPENDPATH += $(OPIEDIR)/include /usr/locale/include +SOURCES = nullvideo.o frame.cpp lib.cpp mainTest.cpp +INCLUDEPATH += $(OPIEDIR)/include /usr/include +DEPENDPATH += $(OPIEDIR)/include /usr/include LIBS += -lxine -lxineutils TARGET = zeckeplayer
\ No newline at end of file |