Merge branch 'upstream/1.16' into tizen_gst_1.16.2
[platform/upstream/gst-plugins-good.git] / ext / soup / gstsouphttpsrc.h
index 378f49c..458fa2a 100644 (file)
@@ -9,7 +9,7 @@
  * This library is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more 
+ * Library General Public License for more
  */
 
 #ifndef __GST_SOUP_HTTP_SRC_H__
@@ -49,6 +49,8 @@ struct _GstSoupHTTPSrc {
   GstPushSrc element;
 
   gchar *location;             /* Full URI. */
+  gchar *redirection_uri;      /* Full URI after redirections. */
+  gboolean redirection_permanent; /* Permanent or temporary redirect? */
   gchar *user_agent;           /* User-Agent HTTP header. */
   gboolean automatic_redirect; /* Follow redirects. */
   SoupURI *proxy;              /* HTTP proxy URI. */
@@ -57,17 +59,16 @@ struct _GstSoupHTTPSrc {
   gchar *proxy_id;             /* Authentication user id for proxy URI. */
   gchar *proxy_pw;             /* Authentication user password for proxy URI. */
   gchar **cookies;             /* HTTP request cookies. */
-  GMainContext *context;       /* I/O context. */
-  GMainLoop *loop;             /* Event loop. */
   SoupSession *session;        /* Async context. */
-  GstSoupHTTPSrcSessionIOStatus session_io_status;
-                               /* Async I/O status. */
+  gboolean session_is_shared;
+  SoupSession *external_session; /* Shared via GstContext */
+  gboolean forced_external_session; /* If session was explicitly set from application */
   SoupMessage *msg;            /* Request message. */
-  GstFlowReturn ret;           /* Return code from callback. */
-  GstBuffer **outbuf;          /* Return buffer allocated by callback. */
-  gboolean interrupted;        /* Signal unlock(). */
-  gboolean retry;              /* Should attempt to reconnect. */
+  gint retry_count;            /* Number of retries since we received data */
+  gint max_retries;            /* Maximum number of retries */
+  gchar *method;               /* HTTP method */
 
+  gboolean got_headers;        /* Already received headers from the server */
   gboolean have_size;          /* Received and parsed Content-Length
                                   header. */
   guint64 content_size;        /* Value of Content-Length header. */
@@ -75,16 +76,56 @@ struct _GstSoupHTTPSrc {
   gboolean seekable;           /* FALSE if the server does not support
                                   Range. */
   guint64 request_position;    /* Seek to this position. */
+  guint64 stop_position;       /* Stop at this position. */
+  gboolean have_body;          /* Indicates if it has just been signaled the
+                                * end of the message body. This is used to
+                                * decide if an out of range request should be
+                                * handled as an error or EOS when the content
+                                * size is unknown */
+  gboolean keep_alive;         /* Use keep-alive sessions */
+  gboolean ssl_strict;
+  gchar *ssl_ca_file;
+  gboolean ssl_use_system_ca_file;
+  GTlsDatabase *tls_database;
+  GTlsInteraction *tls_interaction;
+
+  GCancellable *cancellable;
+  GInputStream *input_stream;
+
+  gint reduce_blocksize_count;
+  gint increase_blocksize_count;
+  guint minimum_blocksize;
 
   /* Shoutcast/icecast metadata extraction handling. */
   gboolean iradio_mode;
-  GstCaps *icy_caps;
+  GstCaps *src_caps;
   gchar *iradio_name;
   gchar *iradio_genre;
   gchar *iradio_url;
-  gchar *iradio_title;
+
+  GstStructure *extra_headers;
+#ifdef TIZEN_FEATURE_SOUP_MODIFICATION
+  SoupCookieJar *cookie_jar;
+#endif
+  SoupLoggerLogLevel log_level;/* Soup HTTP session logger level */
+
+  gboolean compress;
 
   guint timeout;
+
+  GMutex mutex;
+  GCond have_headers_cond;
+
+  GstEvent *http_headers_event;
+
+  gint64 last_socket_read_time;
+
+#ifdef TIZEN_FEATURE_SOUP_MODIFICATION
+  gchar *dash_oldest_segment;
+  gchar *dash_newest_segment;
+  guint64 received_total;    /* temp: for debugging */
+  guint dlna_opt;            /* DLNA server option */
+#endif  
 };
 
 struct _GstSoupHTTPSrcClass {