Added CHANGES-0.9 doc, updated status of other docs.
authorWim Taymans <wim.taymans@gmail.com>
Thu, 30 Jun 2005 12:18:19 +0000 (12:18 +0000)
committerWim Taymans <wim.taymans@gmail.com>
Thu, 30 Jun 2005 12:18:19 +0000 (12:18 +0000)
Original commit message from CVS:
* CHANGES-0.9:
* docs/design/draft-ghostpads.txt:
* docs/design/draft-push-pull.txt:
* docs/design/draft-query.txt:
* docs/design/part-TODO.txt:
* docs/design/part-query.txt:
Added CHANGES-0.9 doc, updated status of other docs.

* gst/gstquery.h:
Remove "hmm" macro

CHANGES-0.9 [new file with mode: 0644]
ChangeLog
docs/design/draft-ghostpads.txt
docs/design/draft-push-pull.txt
docs/design/draft-query.txt [deleted file]
docs/design/part-TODO.txt
docs/design/part-query.txt
gst/gstquery.h

diff --git a/CHANGES-0.9 b/CHANGES-0.9
new file mode 100644 (file)
index 0000000..67acb54
--- /dev/null
@@ -0,0 +1,42 @@
+Changes in the 0.9 version
+--------------------------
+
+ - Refcounting and API revised for thread safety, see rules in
+   docs/design/part-MT-refcounting.txt
+
+ - Scheduling is now done by the elements, they start/stop
+   processing threads themselves. This removes the need for 
+   a separate scheduler.
+
+ - State changes now happen from sink to source. This makes sure
+   that downstream elements are ready to process data when upstream
+   starts producing.
+
+ - EOS/ERROR/... does not change the state of elements anymore. This
+   means that when the application sets the state on an element, it
+   remains in this state.
+
+ - GMainLoop integration. Information on the state of the pipeline
+   is now received in the mainloop.
+
+ - Events move separate from the datastream, this allows for both
+   in and out of sync delivery of events.
+
+ - Generic _pull() replaced by _pull_region() so that random access
+   can be made faster.
+
+ - data passing happens from PAUSED, called the preroll phase. In this
+   state no data is rendered but it is queued in the sinks.
+
+ - negotiation simplified. Caps are now attached to buffers and travel
+   along with the datastream. 
+
+ - GstBuffer is now subclassable.
+
+ - Ghostpads now look and feel like real pads.
+
+ - New Seeking/flushing policy.
+
+ - Addition of base classes and helper functions in the core to abstract
+   away the harder parts of plugin development.
index 6e7caa8..1496111 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,18 @@
 2005-06-30  Wim Taymans  <wim@fluendo.com>
 
+       * CHANGES-0.9:
+       * docs/design/draft-ghostpads.txt:
+       * docs/design/draft-push-pull.txt:
+       * docs/design/draft-query.txt:
+       * docs/design/part-TODO.txt:
+       * docs/design/part-query.txt:
+       Added CHANGES-0.9 doc, updated status of other docs.
+       
+       * gst/gstquery.h:
+       Remove "hmm" macro
+
+2005-06-30  Wim Taymans  <wim@fluendo.com>
+
        * gst/base/gstbasesink.c: (gst_base_sink_preroll_queue_empty),
        (gst_base_sink_preroll_queue_flush), (gst_base_sink_handle_object),
        (gst_base_sink_change_state):
index 3794392..0bde945 100644 (file)
@@ -3,7 +3,7 @@ Ghostpads
 
 Status:
 
-  DRAFT.
+  DRAFT.  DEPRECATED by better current implementation.
 
 
 Purpose:
index 739373c..1fbd267 100644 (file)
@@ -3,7 +3,7 @@ DRAFT push-pull scheduling
 
 Status
 
-  DRAFT
+  DRAFT. DEPRECATED by better current implementation.
 
 Observations:
 
diff --git a/docs/design/draft-query.txt b/docs/design/draft-query.txt
deleted file mode 100644 (file)
index 2e6b445..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-DRAFT Query
------------
-
-Status
-
-  Implemented, move me to design...
-
-Purpose
-
-  Queries are used to get information about the stream. 
-  A query is started on a specific pad and travels up or downstream.
-
-Types of queries
-
-  - get length of stream
-  - get position in stream
-  - get seeking capabilities
-  - get latency
-  - convert one value to another
-  - query supported formats
-  - query internal links.
-
-Current implementation
-
-  The current implementation of query requires pads to implement the 
-  following functions:
-
-     gboolean                (*GstPadConvertFunction)        (GstPad *pad,
-                                                              GstFormat src_format,  gint64  src_value,
-                                                              GstFormat *dest_format, gint64 *dest_value);
-     gboolean                (*GstPadQueryFunction)          (GstPad *pad, GstQueryType type,
-                                                              GstFormat *format, gint64  *value);
-     GList*                  (*GstPadIntLinkFunction)        (GstPad *pad);
-     const GstFormat*        (*GstPadFormatsFunction)        (GstPad *pad);
-     const GstEventMask*     (*GstPadEventMaskFunction)      (GstPad *pad);
-     const GstQueryType*     (*GstPadQueryTypeFunction)      (GstPad *pad);
-
-  Most of these functions are not very extensible in particular,
-  the queryfunction can only return one value.
-
-
-Requirements
-
-  - multiple return values, grouped together when they make sense.
-  - one pad function to perform the query
-  - extensible queries.
-
-Proposition
-
-  - define GstQuery extending GstData and containing a GstStructure (see GstMessage)
-  - define standard query types (see proposed types)
-  - define methods to create a parse the results in the GstQuery.
-  - define pad method:
-
-     gboolean                (*GstPadQueryFunction)          (GstPad *pad, GstQuery *query);
-
-    pad returns result in query structure and TRUE as result or FALSE when
-    query is not supported.
-
-Proposed types
-
- - GST_QUERY_SEEKING:
-   
-     - get info on how seeking can be done 
-         - getrange, with/without offset/size
-        - ranges where seeking is efficient (for caching network sources)
-        - flags describing seeking behaviour (forward, backward, segments,
-                    play backwards, ...)
-
- - GST_QUERY_POSITION:
-  
-     - get info on current position of the stream
-       - start position
-       - current position
-       - end position
-       - length
- - GST_QUERY_LATENCY:
-
-     - get amount of buffering 
-
- - GST_QUERY_CONVERT:
-
-     - convert format/value to another format/value pair.
-
- - GST_QUERY_FORMATS:
-
-     - return list of supported formats.
-
-Also????
-
- - GST_QUERY_CAPS:
-
index 3e8be67..af73ca1 100644 (file)
@@ -4,9 +4,6 @@
   to a duplicate name after adding it is therefore allowed and voids internal
   consistency.
 
-- check for race in _task_pause()/_stop() since the TASK_LOCK is not held by the
-  calling thread and the STREAM_LOCK not by the task code. 
-
 - only emit EOS in PLAYING. Make sure elements reemit the EOS message when going to
   PLAYING again.
 
   done by making the event contain a GstStructure with input/output values, similar
   to GstMessage.
 
-- implement state change order on get<->loop-get<->loop elements. This probably 
-  requires a backtracking algorithm.
-
 - implement iterators for traversing elements upstream or dowstream.
 
 - unlinking pads in the PAUSED state needs to make sure the stream thread is not
   executing code. Can this be done with a flush to unlock all downstream chain
   functions?
 
-- make the seek event return the time where the seek will happen so that GstPipeline
-  can update the stream time. This is linked with making the events return values.
-
 - implement clock selection as explained in part-gstpipeline.txt
 
index c957b91..2e6b445 100644 (file)
@@ -1,69 +1,93 @@
-Query
------
+DRAFT Query
+-----------
 
-Queries are used to get information about the state of the stream.
-Various queries exist such as get the total length and the position
+Status
 
-A query can be performed on a pad or on an element. Both the element
-and the pad query have default behaviour unless a custom query handler
-is installed.
+  Implemented, move me to design...
 
-The default pad query handler will forward the query to an internally
-linked pad. This internally linked pad is either obtained by calling
-the internal_links function of the pad or by using the default 
-function (which selects the pads with oposite directions from the parent
-element).
+Purpose
 
-The default element query function will select a random source pad to
-send the event to.
+  Queries are used to get information about the stream. 
+  A query is started on a specific pad and travels up or downstream.
 
-The pad query function has the following prototype:
+Types of queries
 
-    gboolean (*GstPadQueryFunction) (GstPad *pad, GstQueryType type,
-                                     GstFormat *format, gint64  *value);
+  - get length of stream
+  - get position in stream
+  - get seeking capabilities
+  - get latency
+  - convert one value to another
+  - query supported formats
+  - query internal links.
 
-The query function can return a single value in one of the defined
-formats.
+Current implementation
 
-The function returns TRUE if the query could be performed. The returned
-values are undefined when this function returns FALSE.
+  The current implementation of query requires pads to implement the 
+  following functions:
 
+     gboolean                (*GstPadConvertFunction)        (GstPad *pad,
+                                                              GstFormat src_format,  gint64  src_value,
+                                                              GstFormat *dest_format, gint64 *dest_value);
+     gboolean                (*GstPadQueryFunction)          (GstPad *pad, GstQueryType type,
+                                                              GstFormat *format, gint64  *value);
+     GList*                  (*GstPadIntLinkFunction)        (GstPad *pad);
+     const GstFormat*        (*GstPadFormatsFunction)        (GstPad *pad);
+     const GstEventMask*     (*GstPadEventMaskFunction)      (GstPad *pad);
+     const GstQueryType*     (*GstPadQueryTypeFunction)      (GstPad *pad);
 
-Query types
------------
+  Most of these functions are not very extensible in particular,
+  the queryfunction can only return one value.
+
+
+Requirements
+
+  - multiple return values, grouped together when they make sense.
+  - one pad function to perform the query
+  - extensible queries.
 
- GST_QUERY_TOTAL:
+Proposition
 
-   get the total length of the stream in the given format.
+  - define GstQuery extending GstData and containing a GstStructure (see GstMessage)
+  - define standard query types (see proposed types)
+  - define methods to create a parse the results in the GstQuery.
+  - define pad method:
 
- GST_QUERY_POSITION:
+     gboolean                (*GstPadQueryFunction)          (GstPad *pad, GstQuery *query);
 
-   get the current position in the stream in the given format.
+    pad returns result in query structure and TRUE as result or FALSE when
+    query is not supported.
 
- GST_QUERY_LATENCY:
+Proposed types
 
-   get the latency introduced in the stream in the given format.
-   This query can be used to retrieve how much data is queued in a
-   queue or in a hardware device such as an audio sink.
+ - GST_QUERY_SEEKING:
+   
+     - get info on how seeking can be done 
+         - getrange, with/without offset/size
+        - ranges where seeking is efficient (for caching network sources)
+        - flags describing seeking behaviour (forward, backward, segments,
+                    play backwards, ...)
 
- GST_QUERY_JITTER:
+ - GST_QUERY_POSITION:
+  
+     - get info on current position of the stream
+       - start position
+       - current position
+       - end position
+       - length
+ - GST_QUERY_LATENCY:
 
-   Get the jitter, this is the difference between the expected and real
-   time a buffer is captured or played.
+     - get amount of buffering 
 
GST_QUERY_START:
- GST_QUERY_CONVERT:
 
-   Query the position in the stream where the last start position was
-   configured. When a seek was performed to play a stream from A to B,
-   this query will return A.
+     - convert format/value to another format/value pair.
 
GST_QUERY_SEGMENT_END:
- GST_QUERY_FORMATS:
 
-   Query the position in the stream where the last end position was
-   configured. When a seek was performed to play a stream from A to B,
-   this query will return B.
+     - return list of supported formats.
 
- GST_QUERY_RATE:
+Also????
 
-   Query the current playback rate of the stream.
+ - GST_QUERY_CAPS:
 
index 8fe3d32..8e5ef41 100644 (file)
@@ -156,10 +156,6 @@ GstQuery * gst_query_new_application       (GstQueryType type,
 
 GstStructure *  gst_query_get_structure                (GstQuery *query);
 
-/* hmm */
-#define GST_QUERY_POSITION_GET_FORMAT(q) \
-    (gst_structure_get_int ((q)->structure, "format"))
-
 G_END_DECLS
 
 #endif /* __GST_QUERY_H__ */