gnomemm r1486 - in gstreamermm/trunk: . gstreamer/gstreamermm gstreamer/gstreamermm/private gstreamer/src



Author: jaalburqu
Date: Thu May  1 01:43:55 2008
New Revision: 1486
URL: http://svn.gnome.org/viewvc/gnomemm?rev=1486&view=rev

Log:
2008-04-30  Josà Alburquerque  <jaalburqu svn gnome org>

	* gstreamer/gstreamermm/Makefile.am: Added taglist.{h,c} to extra
	files that should be compiled because both are generated by adding 
	taglist.hg to list of files in Makefile_list_of_hg.am_fragment,
	editing the *.h file and then removing the *.hg from list of files in
	Makefile_list_of_hg.am_fragment (see comments on this in ChangeLog)

	* gstreamer/gstreamermm/private/taglist_p.h: Added this file for same
	reasons as above (otherwise build process would generate this file
	automatically)

	* gstreamer/src/buffer.hg: Removed completed TODO's

	* gstreamer/src/element.hg: Changed GQuark to const Glib::QueryQuark&

	* gstreamer/src/event.ccg:
	* gstreamer/src/event.hg: Added EventTag::create() and
	EventTag::parse(); Used forward declarations of Gst::Structure and
	Gst::TagList instead of including *.h files in header file

	* gstreamer/src/message.ccg:
	* gstreamer/src/message.hg: Added MessageTag class with create() and
	parse() methods; Used forward declarations instead of including *.h
	files in header file

Added:
   gstreamermm/trunk/gstreamer/gstreamermm/private/taglist_p.h
Modified:
   gstreamermm/trunk/ChangeLog
   gstreamermm/trunk/gstreamer/gstreamermm/Makefile.am
   gstreamermm/trunk/gstreamer/src/buffer.hg
   gstreamermm/trunk/gstreamer/src/element.hg
   gstreamermm/trunk/gstreamer/src/event.ccg
   gstreamermm/trunk/gstreamer/src/event.hg
   gstreamermm/trunk/gstreamer/src/message.ccg
   gstreamermm/trunk/gstreamer/src/message.hg

Modified: gstreamermm/trunk/gstreamer/gstreamermm/Makefile.am
==============================================================================
--- gstreamermm/trunk/gstreamer/gstreamermm/Makefile.am	(original)
+++ gstreamermm/trunk/gstreamer/gstreamermm/Makefile.am	Thu May  1 01:43:55 2008
@@ -13,12 +13,12 @@
 
 sublib_files_extra_posix_cc = 
 sublib_files_extra_win32_cc =
-sublib_files_extra_general_cc = init.cc miniobject.cc object.cc version.cc wrap.cc gst_wrap_init.cc
+sublib_files_extra_general_cc = init.cc miniobject.cc object.cc version.cc wrap.cc gst_wrap_init.cc taglist.cc
 sublib_files_extra_general_deprecated_cc = 
 
 sublib_files_extra_posix_h = 
 sublib_files_extra_win32_h =
-sublib_files_extra_general_h = init.h miniobject.h object.h version.h wrap.h gst_wrap_init.h
+sublib_files_extra_general_h = init.h miniobject.h object.h version.h wrap.h gst_wrap_init.h taglist.h
 sublib_files_extra_general_deprecated_h = 
 
 include $(top_srcdir)/build_shared/Makefile_build.am_fragment

Added: gstreamermm/trunk/gstreamer/gstreamermm/private/taglist_p.h
==============================================================================
--- (empty file)
+++ gstreamermm/trunk/gstreamer/gstreamermm/private/taglist_p.h	Thu May  1 01:43:55 2008
@@ -0,0 +1,8 @@
+// -*- c++ -*-
+// Generated by gtkmmproc -- DO NOT MODIFY!
+#ifndef _GSTREAMERMM_TAGLIST_P_H
+#define _GSTREAMERMM_TAGLIST_P_H
+
+
+#endif /* _GSTREAMERMM_TAGLIST_P_H */
+

Modified: gstreamermm/trunk/gstreamer/src/buffer.hg
==============================================================================
--- gstreamermm/trunk/gstreamer/src/buffer.hg	(original)
+++ gstreamermm/trunk/gstreamer/src/buffer.hg	Thu May  1 01:43:55 2008
@@ -70,16 +70,11 @@
   //This is const because it always returns a new buffer:
   _WRAP_METHOD(Glib::RefPtr<Buffer> make_metadata_writable() const, gst_buffer_make_metadata_writable)
 
-  // TODO: Do we need to hand code this to throw an exception when the C API returns NULL ?
   _WRAP_METHOD(Glib::RefPtr<Caps> get_caps(), gst_buffer_get_caps)
   _WRAP_METHOD(Glib::RefPtr<Caps const> get_caps() const, gst_buffer_get_caps, constversion)
-
   _WRAP_METHOD(void set_caps(const Glib::RefPtr<Caps>& caps), gst_buffer_set_caps)
-
-  // TODO: Do we need to hand code this to throw an exception when the C API returns NULL ?
   _WRAP_METHOD(Glib::RefPtr<Buffer> create_sub(const guint& offset, const guint& size), gst_buffer_create_sub)
   _WRAP_METHOD(Glib::RefPtr<Buffer const> create_sub(const guint& offset, const guint& size) const, gst_buffer_create_sub, constversion)
-
   _WRAP_METHOD(bool is_span_fast(const Glib::RefPtr<Buffer>& other_buffer) const, gst_buffer_is_span_fast)
 
   //This is const because it always returns a new buffer:

Modified: gstreamermm/trunk/gstreamer/src/element.hg
==============================================================================
--- gstreamermm/trunk/gstreamer/src/element.hg	(original)
+++ gstreamermm/trunk/gstreamer/src/element.hg	Thu May  1 01:43:55 2008
@@ -175,7 +175,7 @@
   _WRAP_METHOD(StateChangeReturn change_state(StateChange transition), gst_element_change_state)
 
   //TODO: Change the parameter order?
-  _WRAP_METHOD(void post_message(MessageType message_type, GQuark domain, int code, const Glib::ustring& message, const Glib::ustring& debug, const Glib::ustring& filename, const Glib::ustring& function_name, int line_number), gst_element_message_full)
+  _WRAP_METHOD(void post_message(MessageType message_type, const Glib::QueryQuark& domain, int code, const Glib::ustring& message, const Glib::ustring& debug, const Glib::ustring& filename, const Glib::ustring& function_name, int line_number), gst_element_message_full)
   _WRAP_METHOD(bool post_message(const Glib::RefPtr<Message>& message), gst_element_post_message)
 
   _WRAP_METHOD(Glib::ArrayHandle<QueryType> get_query_types() const, gst_element_get_query_types)

Modified: gstreamermm/trunk/gstreamer/src/event.ccg
==============================================================================
--- gstreamermm/trunk/gstreamer/src/event.ccg	(original)
+++ gstreamermm/trunk/gstreamer/src/event.ccg	Thu May  1 01:43:55 2008
@@ -20,6 +20,8 @@
  */
 
 #include <gst/gstenumtypes.h>
+#include <gstreamermm/structure.h>
+#include <gstreamermm/taglist.h>
 _PINCLUDE(gstreamermm/private/miniobject_p.h)
 
 namespace Gst
@@ -200,13 +202,19 @@
 {
 }
 
-//TODO: Glib::RefPtr<Event> EventTag::create(TagList& taglist)
-//TODO: {
-//TODO: }
-
-//TODO: void EventTag::parse(TagList& taglist)
-//TODO: {
-//TODO: }
+Glib::RefPtr<Event> EventTag::create(TagList& taglist)
+{
+  GstEvent* event = gst_event_new_tag(taglist.gobj());
+  return Gst::Event::wrap(event, false);
+}
+
+void EventTag::parse(TagList& taglist)
+{
+  GstTagList* gst_taglist = gst_tag_list_new();
+  gst_event_parse_tag(gobj(), &gst_taglist);
+  TagList parsed_taglist(gst_taglist);
+  taglist.swap(parsed_taglist);
+}
 
 Glib::RefPtr<Event> Event::wrap(GstEvent* event, bool take_copy) {
 

Modified: gstreamermm/trunk/gstreamer/src/event.hg
==============================================================================
--- gstreamermm/trunk/gstreamer/src/event.hg	(original)
+++ gstreamermm/trunk/gstreamer/src/event.hg	Thu May  1 01:43:55 2008
@@ -20,10 +20,9 @@
  */
 
 #include <gst/gstevent.h>
-#include <gstreamermm/miniobject.h>
-#include <gstreamermm/structure.h>
 #include <gstreamermm/wrap.h>
 #include <gstreamermm/format.h>
+#include <gstreamermm/clock.h>
 
 _DEFS(gstreamermm,gst)
 
@@ -59,6 +58,9 @@
 _WRAP_ENUM(SeekFlags, GstSeekFlags)
 _WRAP_ENUM(EventTypeFlags, GstEventTypeFlags)
 
+class Structure;
+class TagList;
+
 /** Get a printable name for the given event type.
  *
  * @param type the event type
@@ -498,8 +500,16 @@
 public:
   explicit EventTag(GstEvent* event);
 
-  //TODO: static Glib::RefPtr<Event> create(TagList& taglist);
-  //TODO: void parse(TagList& taglist);
+  /** Generates a metadata tag event from the given taglist.
+   * @param taglist metadata list
+   * @return a new Gst::Event
+   */
+  static Glib::RefPtr<Event> create(TagList& taglist);
+
+  /** Parses a tag event and stores the results in the given taglist location.
+   * @param taglist pointer to metadata list 
+   */
+  void parse(TagList& taglist);
 };
 
 } //namespace Gst

Modified: gstreamermm/trunk/gstreamer/src/message.ccg
==============================================================================
--- gstreamermm/trunk/gstreamer/src/message.ccg	(original)
+++ gstreamermm/trunk/gstreamer/src/message.ccg	Thu May  1 01:43:55 2008
@@ -20,6 +20,8 @@
  */
 
 #include <gst/gstenumtypes.h>
+#include <gstreamermm/structure.h>
+#include <gstreamermm/taglist.h>
 _PINCLUDE(gstreamermm/private/miniobject_p.h)
 
 namespace Gst
@@ -244,6 +246,24 @@
 {
 }
 
+MessageTag::MessageTag(GstMessage* castitem)
+: Message(castitem)
+{
+}
+
+Glib::RefPtr<Message> MessageTag::create(const Glib::RefPtr<Object>& src, TagList& taglist)
+{
+  GstMessage* message = gst_message_new_tag(src->gobj(), taglist.gobj());
+  return Gst::Message::wrap(message, false);
+}
+
+void MessageTag::parse(TagList& taglist)
+{
+  GstTagList* gst_tag_list = gst_tag_list_new();
+  gst_message_parse_tag(gobj(), &gst_tag_list);
+  TagList result(gst_tag_list);
+  taglist.swap(result);
+}
 
 Glib::RefPtr<Message> MessageBuffering::create(const Glib::RefPtr<Object>& src, int percent)
 {
@@ -350,6 +370,9 @@
     case GST_MESSAGE_INFO:
       result = Glib::RefPtr<Message>( new Gst::MessageInfo(message) );
       break;
+    case GST_MESSAGE_TAG:
+      result = Glib::RefPtr<Message>( new Gst::MessageTag(message) );
+      break;
     case GST_MESSAGE_BUFFERING:
       result = Glib::RefPtr<MessageBuffering>( new Gst::MessageBuffering(message) );
       break;
@@ -392,7 +415,6 @@
     case GST_MESSAGE_ASYNC_DONE:
       result = Glib::RefPtr<Message>( new Gst::MessageAsyncDone(message) );
       break;
-    //TODO?: case GST_MESSAGE_TAG:
     //TODO?: case GST_MESSAGE_STEP_DONE:
     //TODO?: case GST_MESSAGE_STRUCTURE_CHANGE:
     //TODO?: case GST_MESSAGE_STREAM_STATUS:

Modified: gstreamermm/trunk/gstreamer/src/message.hg
==============================================================================
--- gstreamermm/trunk/gstreamer/src/message.hg	(original)
+++ gstreamermm/trunk/gstreamer/src/message.hg	Thu May  1 01:43:55 2008
@@ -20,10 +20,9 @@
  */
 
 #include <gst/gstmessage.h>
-#include <gstreamermm/miniobject.h>
-#include <gstreamermm/structure.h>
 #include <gstreamermm/wrap.h>
 #include <gstreamermm/format.h>
+#include <gstreamermm/clock.h>
 #include <gstreamermm/enums.h>
 
 _DEFS(gstreamermm,gst)
@@ -36,6 +35,9 @@
 Glib::ustring get_name(MessageType t);
 Glib::QueryQuark get_quark(MessageType t);
 
+class Structure;
+class TagList;
+
 /** Gst::Message â Lightweight objects to signal the application of pipeline
  * events.
  * Messages are implemented as a subclass of Gst::MiniObject with a generic
@@ -180,9 +182,14 @@
   void parse(State& oldstate, State& newstate, State& pending);
 };
 
-//TODO:class MessageTag : public Message
-//TODO:{
-//TODO:}
+class MessageTag : public Message
+{
+public:
+  explicit MessageTag(GstMessage* castitem);
+
+  static Glib::RefPtr<Message> create(const Glib::RefPtr<Object>& src, TagList& taglist);
+  void parse(TagList& taglist);
+};
 
 class MessageBuffering : public Message
 {



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]