gstreamer_core/gst/gsttaskpool.h
author hgs
Fri, 30 Apr 2010 19:11:56 -0500
changeset 19 24ed0baaf8e5
parent 16 8e837d1bf446
permissions -rw-r--r--
201017
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
16
hgs
parents:
diff changeset
     1
/* GStreamer
hgs
parents:
diff changeset
     2
 * Copyright (C) <2009> Wim Taymans <wim.taymans@gmail.com>
hgs
parents:
diff changeset
     3
 *
hgs
parents:
diff changeset
     4
 * gsttaskpool.h: Pool for creating streaming threads
hgs
parents:
diff changeset
     5
 *
hgs
parents:
diff changeset
     6
 * This library is free software; you can redistribute it and/or
hgs
parents:
diff changeset
     7
 * modify it under the terms of the GNU Library General Public
hgs
parents:
diff changeset
     8
 * License as published by the Free Software Foundation; either
hgs
parents:
diff changeset
     9
 * version 2 of the License, or (at your option) any later version.
hgs
parents:
diff changeset
    10
 *
hgs
parents:
diff changeset
    11
 * This library is distributed in the hope that it will be useful,
hgs
parents:
diff changeset
    12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
hgs
parents:
diff changeset
    13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
hgs
parents:
diff changeset
    14
 * Library General Public License for more details.
hgs
parents:
diff changeset
    15
 *
hgs
parents:
diff changeset
    16
 * You should have received a copy of the GNU Library General Public
hgs
parents:
diff changeset
    17
 * License along with this library; if not, write to the
hgs
parents:
diff changeset
    18
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
hgs
parents:
diff changeset
    19
 * Boston, MA 02111-1307, USA.
hgs
parents:
diff changeset
    20
 */
hgs
parents:
diff changeset
    21
hgs
parents:
diff changeset
    22
#ifndef __GST_TASK_POOL_H__
hgs
parents:
diff changeset
    23
#define __GST_TASK_POOL_H__
hgs
parents:
diff changeset
    24
hgs
parents:
diff changeset
    25
#include <gst/gstobject.h>
hgs
parents:
diff changeset
    26
hgs
parents:
diff changeset
    27
G_BEGIN_DECLS
hgs
parents:
diff changeset
    28
hgs
parents:
diff changeset
    29
/* --- standard type macros --- */
hgs
parents:
diff changeset
    30
#define GST_TYPE_TASK_POOL             (gst_task_pool_get_type ())
hgs
parents:
diff changeset
    31
#define GST_TASK_POOL(pool)            (G_TYPE_CHECK_INSTANCE_CAST ((pool), GST_TYPE_TASK_POOL, GstTaskPool))
hgs
parents:
diff changeset
    32
#define GST_IS_TASK_POOL(pool)         (G_TYPE_CHECK_INSTANCE_TYPE ((pool), GST_TYPE_TASK_POOL))
hgs
parents:
diff changeset
    33
#define GST_TASK_POOL_CLASS(pclass)    (G_TYPE_CHECK_CLASS_CAST ((pclass), GST_TYPE_TASK_POOL, GstTaskPoolClass))
hgs
parents:
diff changeset
    34
#define GST_IS_TASK_POOL_CLASS(pclass) (G_TYPE_CHECK_CLASS_TYPE ((pclass), GST_TYPE_TASK_POOL))
hgs
parents:
diff changeset
    35
#define GST_TASK_POOL_GET_CLASS(pool)  (G_TYPE_INSTANCE_GET_CLASS ((pool), GST_TYPE_TASK_POOL, GstTaskPoolClass))
hgs
parents:
diff changeset
    36
#define GST_TASK_POOL_CAST(pool)       ((GstTaskPool*)(pool))
hgs
parents:
diff changeset
    37
hgs
parents:
diff changeset
    38
typedef struct _GstTaskPool GstTaskPool;
hgs
parents:
diff changeset
    39
typedef struct _GstTaskPoolClass GstTaskPoolClass;
hgs
parents:
diff changeset
    40
hgs
parents:
diff changeset
    41
typedef void   (*GstTaskPoolFunction)          (void *data);
hgs
parents:
diff changeset
    42
hgs
parents:
diff changeset
    43
/**
hgs
parents:
diff changeset
    44
 * GstTaskPool:
hgs
parents:
diff changeset
    45
 *
hgs
parents:
diff changeset
    46
 * The #GstTaskPool object.
hgs
parents:
diff changeset
    47
 */
hgs
parents:
diff changeset
    48
struct _GstTaskPool {
hgs
parents:
diff changeset
    49
  GstObject      object;
hgs
parents:
diff changeset
    50
hgs
parents:
diff changeset
    51
  /*< private >*/
hgs
parents:
diff changeset
    52
  GThreadPool   *pool;
hgs
parents:
diff changeset
    53
hgs
parents:
diff changeset
    54
  gpointer _gst_reserved[GST_PADDING];
hgs
parents:
diff changeset
    55
};
hgs
parents:
diff changeset
    56
hgs
parents:
diff changeset
    57
/**
hgs
parents:
diff changeset
    58
 * GstTaskPoolClass:
hgs
parents:
diff changeset
    59
 * @parent_class: the parent class structure
hgs
parents:
diff changeset
    60
 * @prepare: prepare the threadpool
hgs
parents:
diff changeset
    61
 * @cleanup: make sure all threads are stopped
hgs
parents:
diff changeset
    62
 * @push: start a new thread
hgs
parents:
diff changeset
    63
 * @join: join a thread
hgs
parents:
diff changeset
    64
 *
hgs
parents:
diff changeset
    65
 * The #GstTaskPoolClass object.
hgs
parents:
diff changeset
    66
 */
hgs
parents:
diff changeset
    67
struct _GstTaskPoolClass {
hgs
parents:
diff changeset
    68
  GstObjectClass parent_class;
hgs
parents:
diff changeset
    69
hgs
parents:
diff changeset
    70
  /*< public >*/
hgs
parents:
diff changeset
    71
  void      (*prepare)  (GstTaskPool *pool, GError **error);
hgs
parents:
diff changeset
    72
  void      (*cleanup)  (GstTaskPool *pool);
hgs
parents:
diff changeset
    73
hgs
parents:
diff changeset
    74
  gpointer  (*push)     (GstTaskPool *pool, GstTaskPoolFunction func,
hgs
parents:
diff changeset
    75
                         gpointer user_data, GError **error);
hgs
parents:
diff changeset
    76
  void      (*join)     (GstTaskPool *pool, gpointer id);
hgs
parents:
diff changeset
    77
hgs
parents:
diff changeset
    78
  /*< private >*/
hgs
parents:
diff changeset
    79
  gpointer _gst_reserved[GST_PADDING];
hgs
parents:
diff changeset
    80
};
hgs
parents:
diff changeset
    81
#ifdef __SYMBIAN32__
hgs
parents:
diff changeset
    82
IMPORT_C
hgs
parents:
diff changeset
    83
#endif
hgs
parents:
diff changeset
    84
hgs
parents:
diff changeset
    85
hgs
parents:
diff changeset
    86
GType           gst_task_pool_get_type    (void);
hgs
parents:
diff changeset
    87
#ifdef __SYMBIAN32__
hgs
parents:
diff changeset
    88
IMPORT_C
hgs
parents:
diff changeset
    89
#endif
hgs
parents:
diff changeset
    90
hgs
parents:
diff changeset
    91
hgs
parents:
diff changeset
    92
GstTaskPool *   gst_task_pool_new         (void);
hgs
parents:
diff changeset
    93
#ifdef __SYMBIAN32__
hgs
parents:
diff changeset
    94
IMPORT_C
hgs
parents:
diff changeset
    95
#endif
hgs
parents:
diff changeset
    96
hgs
parents:
diff changeset
    97
void            gst_task_pool_prepare     (GstTaskPool *pool, GError **error);
hgs
parents:
diff changeset
    98
#ifdef __SYMBIAN32__
hgs
parents:
diff changeset
    99
IMPORT_C
hgs
parents:
diff changeset
   100
#endif
hgs
parents:
diff changeset
   101
hgs
parents:
diff changeset
   102
hgs
parents:
diff changeset
   103
gpointer        gst_task_pool_push        (GstTaskPool *pool, GstTaskPoolFunction func, 
hgs
parents:
diff changeset
   104
                                           gpointer user_data, GError **error);
hgs
parents:
diff changeset
   105
#ifdef __SYMBIAN32__
hgs
parents:
diff changeset
   106
IMPORT_C
hgs
parents:
diff changeset
   107
#endif
hgs
parents:
diff changeset
   108
hgs
parents:
diff changeset
   109
void            gst_task_pool_join        (GstTaskPool *pool, gpointer id);
hgs
parents:
diff changeset
   110
#ifdef __SYMBIAN32__
hgs
parents:
diff changeset
   111
IMPORT_C
hgs
parents:
diff changeset
   112
#endif
hgs
parents:
diff changeset
   113
hgs
parents:
diff changeset
   114
hgs
parents:
diff changeset
   115
void		gst_task_pool_cleanup     (GstTaskPool *pool);
hgs
parents:
diff changeset
   116
hgs
parents:
diff changeset
   117
G_END_DECLS
hgs
parents:
diff changeset
   118
hgs
parents:
diff changeset
   119
#endif /* __GST_TASK_POOL_H__ */