[gst-devel] gst-player / videosink oddness ...

Michael Meeks michael at ximian.com
Tue May 7 06:07:04 CEST 2002

Hi Guys,

	I was just having an idle read of gst-player, with a view to making the
'double size' / 'half size' thing work [ for me ].

	I was somewhat amazed at several things in there;

	Firstly - a structure is shared with some evil cut and paste action cf:

	gst-player/libs/gst/player/gstvideowidget.h (GstXHook)

struct _GstXHook {
  gulong id;
  void (*free_info) (GstXHook *hook);  
  Display *display;
  Window window;
  GC gc;
  GdkRectangle rect;

	gst-plugins/sys/videosink/gstximage.c (GstXImageInfo)

struct _GstXImageInfo {
  GstImageInfo info;
  Display *display;
  Window window;
  GC gc;
  gint x, y, w, h;

	These seem to be copies - with the GstXImageInfo being written 
out. [ quite why GstXImageInfo is called an 'ImageInfo' since it appears
to contain nothing at all related to images is a mystery to me ].

	So - poking inside gstvideowidget I see people hacking around inside
the 'hook' a pointer to which is passed [ it seems ] to the videosink -
which in it's various incarnations seems to use the 'width' and 'height'
properties rather more sensibly than whatever it does with the hook
information [ which I stopped chasing at that stage ].

	So - the question is - why is this unmaintainable cut and paste
happening ? is it not possible to achieve the same effect with a simple
freeze / property set set set set / thaw ? Or better just share the
structure in some shared header - it's a real shame the GType system
can't cope with structured types [ as the CORBA one can / has to ].

	Where does the hook data go to in the end ? and what is the relation of
the various 'width' / 'height' properties to the hook data's width /
height ? - how is the requested as opposed to the current width / height
of eg. sdlvideosink differentiated ? or is that something you have to
store in your app ?

	Also - it seems there is a lot of X hackery going on in there; would
not a GtkSocket be more appropriate ?




 mmeeks at gnu.org  <><, Pseudo Engineer, itinerant idiot

More information about the gstreamer-devel mailing list