[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-multimedia
Subject:    PATCH: Arts::VideoPlayObject + mpeglib adapted
From:       Nikolas Zimmermann <wildfox () kde ! org>
Date:       2001-07-11 10:31:51
[Download RAW message or body]

Hi guys,

here is a patch, which adds support for Video Embedding,
ie. into Konqueror.

It's not stable, but this is a mpeglib issue!
This patch is definately _not_ for KDE 2.2
but a kind of RFC and technology preview.

Comments?

Bye
 Bye
  Niko

-- 
Nikolas Zimmermann
wildfox@kde.org
["mpeglib.diff" (text/x-diff)]

Index: lib/decoder/decoderPlugin.h
===================================================================
RCS file: /home/kde/kdemultimedia/mpeglib/lib/decoder/decoderPlugin.h,v
retrieving revision 1.3
diff -u -p -b -r1.3 decoderPlugin.h
--- lib/decoder/decoderPlugin.h	2000/11/23 18:43:20	1.3
+++ lib/decoder/decoderPlugin.h	2001/07/11 10:39:08
@@ -120,6 +120,9 @@ class DecoderPlugin {
   int waitForStreamState(int state);
   PluginInfo* getPluginInfo();
 
+  // Needed for Video Embedding
+  int x11WindowId() { return output->x11WindowId(); }
+  
   // never use this!
   void* idleThread();
 
Index: lib/output/artsOutputStream.cpp
===================================================================
RCS file: /home/kde/kdemultimedia/mpeglib/lib/output/artsOutputStream.cpp,v
retrieving revision 1.9
diff -u -p -b -r1.9 artsOutputStream.cpp
--- lib/output/artsOutputStream.cpp	2001/06/10 13:43:49	1.9
+++ lib/output/artsOutputStream.cpp	2001/07/11 10:39:08
@@ -141,6 +141,9 @@ int ArtsOutputStream::openWindow(int wid
   return back;
 }
 
+int ArtsOutputStream::x11WindowId() {
+ return x11Window->x11WindowId();
+}
 
 void ArtsOutputStream::closeWindow() {
   threadQueue->waitForExclusiveAccess();
Index: lib/output/artsOutputStream.h
===================================================================
RCS file: /home/kde/kdemultimedia/mpeglib/lib/output/artsOutputStream.h,v
retrieving revision 1.4
diff -u -p -b -r1.4 artsOutputStream.h
--- lib/output/artsOutputStream.h	2000/12/05 15:28:59	1.4
+++ lib/output/artsOutputStream.h	2001/07/11 10:39:08
@@ -93,6 +93,7 @@ class ArtsOutputStream : public OutputSt
   // Video part
 
   int openWindow(int width, int height,const char *title);
+  int x11WindowId();
   void closeWindow();
   void flushWindow();
 
Index: lib/output/dspX11OutputStream.cpp
===================================================================
RCS file: /home/kde/kdemultimedia/mpeglib/lib/output/dspX11OutputStream.cpp,v
retrieving revision 1.9
diff -u -p -b -r1.9 dspX11OutputStream.cpp
--- lib/output/dspX11OutputStream.cpp	2001/06/05 18:55:39	1.9
+++ lib/output/dspX11OutputStream.cpp	2001/07/11 10:39:08
@@ -138,6 +138,10 @@ int DspX11OutputStream::openWindow(int w
   return back;
 }
 
+int DspX11OutputStream::x11WindowId() {
+  return x11Window->x11WindowId();
+}
+
 
 void DspX11OutputStream::closeWindow() {
   x11Window->closeWindow();
Index: lib/output/dspX11OutputStream.h
===================================================================
RCS file: /home/kde/kdemultimedia/mpeglib/lib/output/dspX11OutputStream.h,v
retrieving revision 1.4
diff -u -p -b -r1.4 dspX11OutputStream.h
--- lib/output/dspX11OutputStream.h	2001/05/01 16:12:51	1.4
+++ lib/output/dspX11OutputStream.h	2001/07/11 10:39:08
@@ -63,6 +63,7 @@ class DspX11OutputStream : public Output
   // Video Output
 
   int openWindow(int width, int height,const char *title);
+  int x11WindowId();
   void closeWindow();
   void flushWindow();
 
Index: lib/output/outputStream.cpp
===================================================================
RCS file: /home/kde/kdemultimedia/mpeglib/lib/output/outputStream.cpp,v
retrieving revision 1.7
diff -u -p -b -r1.7 outputStream.cpp
--- lib/output/outputStream.cpp	2001/06/10 13:43:49	1.7
+++ lib/output/outputStream.cpp	2001/07/11 10:39:08
@@ -130,6 +130,10 @@ int OutputStream::openWindow(int , int ,
   return true;
 }
 
+int OutputStream::x11WindowId() {
+ cout << "direct virtual call OutputStream::x11WindowId()" << endl;
+ return -1;
+}
 
 void OutputStream::closeWindow() {
   cerr << "direct virtual call OutputStream::closeWindow"<<endl;
Index: lib/output/outputStream.h
===================================================================
RCS file: /home/kde/kdemultimedia/mpeglib/lib/output/outputStream.h,v
retrieving revision 1.3
diff -u -p -b -r1.3 outputStream.h
--- lib/output/outputStream.h	2000/11/23 18:43:21	1.3
+++ lib/output/outputStream.h	2001/07/11 10:39:08
@@ -118,6 +118,7 @@ class OutputStream {
   // Video Output
   virtual int videoInit();
   virtual int openWindow(int width, int height,const char *title);
+  virtual int x11WindowId();
   virtual void closeWindow();
   virtual void flushWindow();
   
Index: lib/output/windowOut.cpp
===================================================================
RCS file: /home/kde/kdemultimedia/mpeglib/lib/output/windowOut.cpp,v
retrieving revision 1.2
diff -u -p -b -r1.2 windowOut.cpp
--- lib/output/windowOut.cpp	2000/08/08 16:21:28	1.2
+++ lib/output/windowOut.cpp	2001/07/11 10:39:08
@@ -34,6 +34,9 @@ int WindowOut::openWindow(int width, int
   return renderMachine->openWindow(width,height,title);
 }
 
+int WindowOut::x11WindowId() {
+ return renderMachine->x11WindowId();
+}
 
 void WindowOut::flushWindow() {
   renderMachine->flushWindow();
Index: lib/output/windowOut.h
===================================================================
RCS file: /home/kde/kdemultimedia/mpeglib/lib/output/windowOut.h,v
retrieving revision 1.3
diff -u -p -b -r1.3 windowOut.h
--- lib/output/windowOut.h	2000/08/08 16:21:28	1.3
+++ lib/output/windowOut.h	2001/07/11 10:39:08
@@ -35,6 +35,7 @@ class WindowOut {
   ~WindowOut();
 
   int openWindow(int width, int height,const char *title);
+  int x11WindowId();
   void closeWindow();
   void flushWindow();
 
Index: lib/util/render/renderMachine.cpp
===================================================================
RCS file: /home/kde/kdemultimedia/mpeglib/lib/util/render/renderMachine.cpp,v
retrieving revision 1.10
diff -u -p -b -r1.10 renderMachine.cpp
--- lib/util/render/renderMachine.cpp	2001/01/07 19:56:24	1.10
+++ lib/util/render/renderMachine.cpp	2001/07/11 10:39:09
@@ -58,13 +58,15 @@ void RenderMachine::waitRestTime() {
 
 }
 
+int RenderMachine::x11WindowId()
+{
+	return surface->x11WindowId();
+}
 
 
-
 int RenderMachine::openWindow(int width, 
 			      int height,const char *title) {
-
-  if (surface->open(width,height,title)) {
+if (surface->open(width,height,title)) {
     pictureArray=new PictureArray(width, height);
     
     return switchToMode(initialMode);
Index: lib/util/render/renderMachine.h
===================================================================
RCS file: /home/kde/kdemultimedia/mpeglib/lib/util/render/renderMachine.h,v
retrieving revision 1.5
diff -u -p -b -r1.5 renderMachine.h
--- lib/util/render/renderMachine.h	2000/12/06 18:42:07	1.5
+++ lib/util/render/renderMachine.h	2001/07/11 10:39:09
@@ -70,6 +70,7 @@ class RenderMachine {
   ~RenderMachine();
 
   int openWindow(int width, int height,const char *title);
+  int x11WindowId();
   void closeWindow();
   void flushWindow();
 
Index: lib/util/render/surface.cpp
===================================================================
RCS file: /home/kde/kdemultimedia/mpeglib/lib/util/render/surface.cpp,v
retrieving revision 1.4
diff -u -p -b -r1.4 surface.cpp
--- lib/util/render/surface.cpp	2000/12/06 18:42:07	1.4
+++ lib/util/render/surface.cpp	2001/07/11 10:39:09
@@ -65,6 +65,11 @@ int Surface::getImageMode() {
   return 0;
 }
 
+int Surface::x11WindowId() {
+  cout << "direct virtual call  Surface::x11WindowId " << endl;
+  return -1;
+}
+
 ImageBase *Surface::findImage(int)
 {
   cout << "direct virtual call: Surface::findImage  "<<endl;
Index: lib/util/render/surface.h
===================================================================
RCS file: /home/kde/kdemultimedia/mpeglib/lib/util/render/surface.h,v
retrieving revision 1.3
diff -u -p -b -r1.3 surface.h
--- lib/util/render/surface.h	2000/12/06 18:42:07	1.3
+++ lib/util/render/surface.h	2001/07/11 10:39:09
@@ -37,6 +37,7 @@ class Surface {
   virtual int getWidth();
   virtual int getDepth();
   virtual int getImageMode();
+  virtual int x11WindowId();
 
   virtual ImageBase *findImage(int imageMode);
 
Index: lib/util/render/x11/x11Surface.cpp
===================================================================
RCS file: /home/kde/kdemultimedia/mpeglib/lib/util/render/x11/x11Surface.cpp,v
retrieving revision 1.17
diff -u -p -b -r1.17 x11Surface.cpp
--- lib/util/render/x11/x11Surface.cpp	2001/02/25 19:17:27	1.17
+++ lib/util/render/x11/x11Surface.cpp	2001/07/11 10:39:09
@@ -38,10 +38,11 @@ static int dummy(Display* , XErrorEvent*
 #endif
 
 X11Surface::X11Surface() {
-
   xWindow=(XWindow *)malloc(sizeof(XWindow));
   xWindow->lOpen=false;
   xWindow->x = xWindow->y = 0;
+  xWindow->window = 0;
+  m_windowIdAvailable = false;
   
   imageMode=_IMAGE_NONE;
 
@@ -91,6 +92,12 @@ int X11Surface::isOpen() {
   return xWindow->lOpen;
 }
 
+int X11Surface::x11WindowId() {
+  if(m_windowIdAvailable)
+  	return xWindow->window;
+  else
+    return -1;
+}
 
 int X11Surface::open(int width, int height,const char *title, bool border) {
 
@@ -147,6 +154,7 @@ int X11Surface::open(int width, int heig
 				(border) ? CWBackingStore : CWBackPixel|CWOverrideRedirect,
 				&attributes);
   
+  m_windowIdAvailable = true;
   if(!xWindow->window) {
     printf("\nX initialisation error:\n *** %s\n",ERR_XI_STR[ERR_XI_WINDOW]);
     printf("check ipcs and delete resources with ipcrm\n"); 
Index: lib/util/render/x11/x11Surface.h
===================================================================
RCS file: /home/kde/kdemultimedia/mpeglib/lib/util/render/x11/x11Surface.h,v
retrieving revision 1.4
diff -u -p -b -r1.4 x11Surface.h
--- lib/util/render/x11/x11Surface.h	2000/12/06 18:42:08	1.4
+++ lib/util/render/x11/x11Surface.h	2001/07/11 10:39:09
@@ -52,6 +52,7 @@ class X11Surface : public Surface {
   int getWidth();
   int getDepth();
   int getImageMode();
+  int x11WindowId();
   
   ImageBase *findImage(int mode);
 	  
@@ -73,5 +74,6 @@ class X11Surface : public Surface {
 
  private:
   int initX11();
+  bool m_windowIdAvailable;
 };
 #endif

["mpeglib_artsplug.diff" (text/x-diff)]

Index: decoderBaseObject.idl
===================================================================
RCS file: /home/kde/kdemultimedia/mpeglib_artsplug/decoderBaseObject.idl,v
retrieving revision 1.6
diff -u -p -b -r1.6 decoderBaseObject.idl
--- decoderBaseObject.idl	2001/06/13 19:38:56	1.6
+++ decoderBaseObject.idl	2001/07/11 10:38:49
@@ -29,7 +29,7 @@ interface WAVPlayObject : DecoderBaseObj
 };
 
 
-interface MPGPlayObject : DecoderBaseObject
+interface MPGPlayObject : DecoderBaseObject, Arts::VideoPlayObject
 {
   out audio stream left,right;
 };
Index: decoderBaseObject_impl.cpp
===================================================================
RCS file: /home/kde/kdemultimedia/mpeglib_artsplug/decoderBaseObject_impl.cpp,v
retrieving revision 1.22
diff -u -p -b -r1.22 decoderBaseObject_impl.cpp
--- decoderBaseObject_impl.cpp	2001/06/13 19:38:56	1.22
+++ decoderBaseObject_impl.cpp	2001/07/11 10:38:52
@@ -464,8 +464,6 @@ void DecoderBaseObject_impl::shudownPlug
   setStreamState(_THREADSTATE_CLOSED);
 }
 
-
-
 void DecoderBaseObject_impl::setStreamState(int state) {
 
   switch (state) {
Index: decoderBaseObject_impl.h
===================================================================
RCS file: /home/kde/kdemultimedia/mpeglib_artsplug/decoderBaseObject_impl.h,v
retrieving revision 1.10
diff -u -p -b -r1.10 decoderBaseObject_impl.h
--- decoderBaseObject_impl.h	2001/06/13 19:38:56	1.10
+++ decoderBaseObject_impl.h	2001/07/11 10:38:52
@@ -48,11 +48,10 @@ class DecoderBaseObject_impl :
   virtual public Arts::StdSynthModule,
   virtual public DecoderBaseObject_skel {
 
-
   poState _state;
-  DecoderPlugin* decoderPlugin;
   InputStream* inputStream;
   ArtsOutputStream* outputStream;
+  
   double flpos;
   float startTime;
   int instance;
@@ -96,6 +95,8 @@ public:
   void calculateBlock(unsigned long samples,float* left,float* right);
   void streamEnd();
 
+  DecoderPlugin* decoderPlugin;
+  
  private:
   void shudownPlugins();
   int getBufferSize();
Index: mpgPlayObject_impl.cpp
===================================================================
RCS file: /home/kde/kdemultimedia/mpeglib_artsplug/mpgPlayObject_impl.cpp,v
retrieving revision 1.2
diff -u -p -b -r1.2 mpgPlayObject_impl.cpp
--- mpgPlayObject_impl.cpp	2000/09/30 20:45:10	1.2
+++ mpgPlayObject_impl.cpp	2001/07/11 10:38:52
@@ -20,6 +20,7 @@
 
 MPGPlayObject_impl::MPGPlayObject_impl() {
   arts_debug("MPGPlayObject_impl");
+  m_fullscreen = false;
 }
 
 MPGPlayObject_impl::~MPGPlayObject_impl() {
@@ -35,6 +36,17 @@ void MPGPlayObject_impl::calculateBlock(
   DecoderBaseObject_impl::calculateBlock(samples,left,right);
 }
 
+long int MPGPlayObject_impl::x11WindowId() {
+ return decoderPlugin->x11WindowId();
+}
+
+bool MPGPlayObject_impl::fullscreen() {
+ return m_fullscreen;
+}
+
+void MPGPlayObject_impl::fullscreen(bool value) {
+ m_fullscreen = value;
+}
 
 
 REGISTER_IMPLEMENTATION(MPGPlayObject_impl);
Index: mpgPlayObject_impl.h
===================================================================
RCS file: /home/kde/kdemultimedia/mpeglib_artsplug/mpgPlayObject_impl.h,v
retrieving revision 1.3
diff -u -p -b -r1.3 mpgPlayObject_impl.h
--- mpgPlayObject_impl.h	2001/05/01 11:07:15	1.3
+++ mpgPlayObject_impl.h	2001/07/11 10:38:52
@@ -33,9 +33,14 @@ public:
 
   DecoderPlugin* createPlugin();
 
+  long int x11WindowId();
+  void fullscreen(bool value);
+  bool fullscreen();
 
-
   void calculateBlock(unsigned long samples);
+
+private:
+  bool m_fullscreen;
 
 };
 

["kaboodle.diff" (text/x-diff)]

? videoembed.cpp
? videoembed.h
Index: Makefile.am
===================================================================
RCS file: /home/kde/kdenonbeta/kaboodle/Makefile.am,v
retrieving revision 1.11
diff -u -p -b -r1.11 Makefile.am
--- Makefile.am	2001/07/11 03:24:22	1.11
+++ Makefile.am	2001/07/11 10:38:08
@@ -9,7 +9,8 @@ libkaboodlepart_la_SOURCES = conf.cpp \
 	engine.cpp \
 	kaboodle_factory.cpp \
 	kaboodle_part.cpp \
-	player.cpp
+	player.cpp \
+	videoembed.cpp
 
 libkaboodlepart_la_LDFLAGS = $(KDE_RPATH) $(KDE_PLUGIN) $(all_libraries) 
 libkaboodlepart_la_LIBADD = $(LIB_KFILE) $(LIB_KPARTS) -lqtmcop \
                -lkmedia2_idl -lsoundserver_idl -lartskde
Index: engine.cpp
===================================================================
RCS file: /home/kde/kdenonbeta/kaboodle/engine.cpp,v
retrieving revision 1.15
diff -u -p -b -r1.15 engine.cpp
--- engine.cpp	2001/07/06 21:30:53	1.15
+++ engine.cpp	2001/07/11 10:38:10
@@ -33,6 +33,7 @@ extern "C"
 #include <kmimetype.h>
 #include <kstddirs.h>
 #include <kurl.h>
+#include <qtimer.h>
 #include <qfile.h>
 #include <qdir.h>
 
@@ -79,6 +80,8 @@ Engine::Engine(QObject *parent)
 		KMessageBox::error(0, i18n("There was an error communicating to the aRts \
daemon."), i18n("Danger, Will Robinson!"));  exit(0);
 	}
+
+	m_videoEmbeddable = false;
 }
 
 Engine::~Engine()
@@ -104,9 +107,26 @@ bool Engine::reload(void)
 	if(!initArts()) return false;
 	KPlayObjectFactory factory(d->server);
 	d->playobj = factory.createPlayObject(d->file, true);
+	
+	// Embeddable Video Support
+	Arts::VideoPlayObject po = Arts::DynamicCast(d->playobj->object());
+	if(!po.isNull())
+		m_videoEmbeddable = true;
+	else
+		m_videoEmbeddable = false;
+
 	return !d->playobj->object().isNull();
 }
 
+void Engine::getVideoId()
+{
+	Arts::VideoPlayObject po = Arts::DynamicCast(d->playobj->object());
+	if(po.x11WindowId() != -1)
+		emit x11WindowId(po.x11WindowId());
+	else
+		QTimer::singleShot(0, this, SLOT(getVideoId()));
+}
+
 void Engine::play()
 {
 	if(!d->playobj->object().isNull())
@@ -114,8 +134,19 @@ void Engine::play()
 		switch(d->playobj->state())
 		{
 		case Arts::posIdle:
+			{
 			reload();
-			// fallthrough
+				Arts::VideoPlayObject po = Arts::DynamicCast(d->playobj->object());
+				d->playobj->play();
+				if(!po.isNull())
+				{
+					if(po.x11WindowId() != -1)
+						emit x11WindowId(po.x11WindowId());
+					else
+						QTimer::singleShot(0, this, SLOT(getVideoId()));
+				}
+			}
+			break;
 		case Arts::posPaused:
 			d->playobj->play();
 			break;
Index: engine.h
===================================================================
RCS file: /home/kde/kdenonbeta/kaboodle/engine.h,v
retrieving revision 1.3
diff -u -p -b -r1.3 engine.h
--- engine.h	2001/04/23 19:00:30	1.3
+++ engine.h	2001/07/11 10:38:10
@@ -85,10 +85,18 @@ public:
 	long position(); // NOT unsigned
 	unsigned long length();
 
+signals:
+	void x11WindowId(int);
+
+private slots:
+	void getVideoId();
+	
 private:
 	bool initArts();
 	bool reload(void);
 
+	bool m_videoEmbeddable;
+	
 	class EnginePrivate;
 	EnginePrivate *d;
 };
Index: kaboodle_part.cpp
===================================================================
RCS file: /home/kde/kdenonbeta/kaboodle/kaboodle_part.cpp,v
retrieving revision 1.18
diff -u -p -b -r1.18 kaboodle_part.cpp
--- kaboodle_part.cpp	2001/07/06 21:27:26	1.18
+++ kaboodle_part.cpp	2001/07/11 10:38:10
@@ -35,6 +35,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE 
 #include <qtooltip.h>
 #include <qwidget.h>
 
+#include "engine.h"
 #include "kaboodle_part.h"
 
 static QButton *createButton(const QIconSet &_iconset, const QString \
&_tip, QObject *_receiver, const char *_slot, QWidget *_parent) @@ -54,41 \
+55,47 @@ KaboodlePart::KaboodlePart(QWidget *pare  , mPlayButton(0)
 	, mPauseButton(0)
 	, mStopButton(0)
+	, m_videoEmbed(0)
 {
 	setInstance(KaboodleFactory::instance());
 
 	player = new Player(this);
 
-	QWidget *box = new QWidget(parent);
-	box->setFocusPolicy(QWidget::ClickFocus);
-	box->setAcceptDrops(true);
-	box->show();
+	m_hbox = new QHBox(parent);
+	m_hbox->setSpacing(KDialog::spacingHint());
+	m_hbox->setMargin(KDialog::marginHint());
+
+	m_box = new QWidget(m_hbox);
+	m_box->setFocusPolicy(QWidget::ClickFocus);
+	m_box->setAcceptDrops(true);
 
-	KParts::Part::setWidget(box);
+	QHBoxLayout *layout = new QHBoxLayout(m_box);
+	layout->setSpacing(KDialog::spacingHint());
+	layout->setMargin(KDialog::marginHint());
+	layout->setAutoAdd(true);
+
+	KParts::Part::setWidget(m_hbox);
 
 	if(viaBrowser)
 	{
 		mExtension = new KaboodleBrowserExtension(this);
 		mExtension->setURLDropHandlingEnabled(true);
-	}
 
-	QHBoxLayout *layout = new QHBoxLayout(box);
-	layout->setSpacing(KDialog::spacingHint());
-	layout->setMargin(KDialog::marginHint());
-	layout->setAutoAdd(true);
+		connect(player->engine(), SIGNAL(x11WindowId(int)), \
SLOT(embedVideo(int))); +	}
 
 	if(showButtons)
 	{
-		mPlayButton = createButton(BarIconSet("1rightarrow"), i18n("Play"), \
                player, SLOT(play()), box);
-		mPauseButton = createButton(BarIconSet("player_pause"), i18n("Pause"), \
                player, SLOT(pause()), box);
-		mStopButton = createButton(BarIconSet("player_stop"), i18n("Stop"), \
this, SLOT(stop()), box); +		mPlayButton = \
createButton(BarIconSet("1rightarrow"), i18n("Play"), player, SLOT(play()), \
m_box); +		mPauseButton = createButton(BarIconSet("player_pause"), \
i18n("Pause"), player, SLOT(pause()), m_box); +		mStopButton = \
createButton(BarIconSet("player_stop"), i18n("Stop"), this, SLOT(stop()), \
m_box);  }
 
-	mSeeker = new L33tSlider(0, 1000, 10, 0, L33tSlider::Horizontal, box);
+	mSeeker = new L33tSlider(0, 1000, 10, 0, L33tSlider::Horizontal, m_box);
 	mSeeker->setTickmarks(QSlider::NoMarks);
 	mSeeker->show();
 
-	mElapsed = new QLCDNumber(5, box);
+	mElapsed = new QLCDNumber(5, m_box);
 	mElapsed->setSegmentStyle(QLCDNumber::Flat);
 	mElapsed->setFrameStyle(QFrame::Panel);
 	mElapsed->setFrameShadow(QFrame::Sunken);
@@ -136,6 +143,13 @@ KaboodlePart::~KaboodlePart()
 	delete player;
 }
 
+void KaboodlePart::embedVideo(int wid)
+{
+	m_videoEmbed = new VideoEmbed(m_hbox);
+	m_videoEmbed->embed(wid);
+	m_videoEmbed->show();
+}
+
 void KaboodlePart::openFile(const KURL &url)
 {
 	player->openFile(url);
@@ -247,6 +261,12 @@ void KaboodlePart::skipToWrapper(int sec
 void KaboodlePart::stop()
 {
 	player->stop();
+
+	if(m_videoEmbed != 0)
+	{
+		delete m_videoEmbed;
+		m_videoEmbed = 0;
+	}
 }
 
 void KaboodlePart::loop()
Index: kaboodle_part.h
===================================================================
RCS file: /home/kde/kdenonbeta/kaboodle/kaboodle_part.h,v
retrieving revision 1.10
diff -u -p -b -r1.10 kaboodle_part.h
--- kaboodle_part.h	2001/07/06 21:27:26	1.10
+++ kaboodle_part.h	2001/07/11 10:38:10
@@ -30,9 +30,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE 
 #include <kstdaction.h>
 #include <qwidget.h>
 #include <qhbox.h>
+#include <qlayout.h>
 #include <qlcdnumber.h>
 #include <qevent.h>
 
+#include "videoembed.h"
 #include "kaboodle_factory.h"
 #include "controls.h"
 #include "player.h"
@@ -79,6 +81,8 @@ public slots:
 	void sliderMoved(int);
 	void skipToWrapper(int);
 
+	void embedVideo(int);
+	
 signals:
 	void skipTo(unsigned long);
 
@@ -99,6 +103,10 @@ private:
 	L33tSlider *mSeeker;
 	QLCDNumber *mElapsed;
 	
+	QHBox *m_hbox;
+	QHBoxLayout *m_layout;
+	QWidget *m_box;
+	VideoEmbed *m_videoEmbed;
 	KAction *mPlay, *mPause, *mStop;
 	QButton *mPlayButton, *mPauseButton, *mStopButton;
 	KToggleAction *mLoop;
Index: player.h
===================================================================
RCS file: /home/kde/kdenonbeta/kaboodle/player.h,v
retrieving revision 1.8
diff -u -p -b -r1.8 player.h
--- player.h	2001/04/20 00:22:43	1.8
+++ player.h	2001/07/11 10:38:10
@@ -37,6 +37,7 @@ class Player : public QObject
 {
 Q_OBJECT
 
+friend class KaboodlePart;
 public:
 	Player(QObject *parent = 0);
 	~Player();
@@ -159,6 +160,9 @@ signals:
 
 private slots:
 	void tickerTimeout();
+
+protected:
+	Engine *engine() { return mEngine; }
 
 private:
 	Engine *mEngine;


["arts.diff" (text/x-diff)]

Index: kmedia2.idl
===================================================================
RCS file: /home/kde/kdelibs/arts/soundserver/kmedia2.idl,v
retrieving revision 1.9
diff -u -p -b -r1.9 kmedia2.idl
--- kmedia2.idl	2001/06/12 21:00:29	1.9
+++ kmedia2.idl	2001/07/11 10:40:45
@@ -117,6 +117,14 @@ interface PlayObject : PlayObject_privat
     void halt();
 };
 
+interface VideoPlayObject {
+	attribute boolean fullscreen;
+	 /**
+	  * returns the X11 Window Id
+	  */
+	long x11WindowId();
+};
+
 /**
  * use this to create new PlayObjects for media
  */

_______________________________________________
Kde-multimedia mailing list
Kde-multimedia@master.kde.org
http://master.kde.org/mailman/listinfo/kde-multimedia


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic