Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  context.h

  Sprache: C
 

/* PipeWire */
/* SPDX-FileCopyrightText: Copyright © 2018 Wim Taymans */
/* SPDX-License-Identifier: MIT */

#ifndef PIPEWIRE_CONTEXT_H
#define PIPEWIRE_CONTEXT_H

#ifdef __cplusplus
extern "C" {
#endif

#include <spa/utils/defs.h>
#include <spa/utils/hook.h>

/** \defgroup pw_context Context
 *
 * \brief The PipeWire context object manages all locally available
 * resources. It is used by both clients and servers.
 *
 * The context is used to:
 *
 *  - Load modules and extend the functionality. This includes
 *    extending the protocol with new object types or creating
 *    any of the available objects.
 *
 *  - Create implementations of various objects like nodes,
 *    devices, factories, modules, etc.. This will usually also
 *    create pw_global objects that can then be shared with
 *    clients.
 *
 *  - Connect to another PipeWire instance (the main daemon, for
 *    example) and interact with it (See \ref page_core_api).
 *
 *  - Export a local implementation of an object to another
 *    instance.
 */


/**
 * \addtogroup pw_context
 * @{
 */

struct pw_context;

struct pw_global;
struct pw_impl_client;
struct pw_impl_node;

#include <pipewire/core.h>
#include <pipewire/loop.h>
#include <pipewire/properties.h>

/** context events emitted by the context object added with \ref pw_context_add_listener */
struct pw_context_events {
#define PW_VERSION_CONTEXT_EVENTS 1
 uint32_t version;

 /** The context is being destroyed */
 void (*destroy) (void *data);
 /** The context is being freed */
 void (*free) (void *data);
 /** a new client object is added */
 void (*check_access) (void *data, struct pw_impl_client *client);
 /** a new global object was added */
 void (*global_added) (void *data, struct pw_global *global);
 /** a global object was removed */
 void (*global_removed) (void *data, struct pw_global *global);

 /** a driver was added, since 0.3.75 version:1 */
 void (*driver_added) (void *data, struct pw_impl_node *node);
 /** a driver was removed, since 0.3.75 version:1 */
 void (*driver_removed) (void *data, struct pw_impl_node *node);
};

/** Make a new context object for a given main_loop. Ownership of the properties is taken, even
 * if the function returns NULL.
 *
 * \param main_loop A main loop to run in. This must stay alive unil pw_context_destroy() is called.
 * \param props extra properties
 * \param user_data_size extra user data size
 * \return The context object on success, or NULL on failure, in which case errno is set.
 * */

struct pw_context * pw_context_new(struct pw_loop *main_loop,
        struct pw_properties *props,
        size_t user_data_size);

/** destroy a context object, all resources except the main_loop will be destroyed */
void pw_context_destroy(struct pw_context *context);

/** Get the context user data */
void *pw_context_get_user_data(struct pw_context *context);

/** Add a new event listener to a context */
void pw_context_add_listener(struct pw_context *context,
     struct spa_hook *listener,
     const struct pw_context_events *events,
     void *data);

/** Get the context properties */
const struct pw_properties *pw_context_get_properties(struct pw_context *context);

/** Update the context properties */
int pw_context_update_properties(struct pw_context *context, const struct spa_dict *dict);

/** Get a config section for this context. Since 0.3.22, deprecated,
 * use pw_context_conf_section_for_each(). */

const char *pw_context_get_conf_section(struct pw_context *context, const char *section);
/** Parse a standard config section for this context. Since 0.3.22 */
int pw_context_parse_conf_section(struct pw_context *context,
  struct pw_properties *conf, const char *section);

/** update properties from a section into props. Since 0.3.45 */
int pw_context_conf_update_props(struct pw_context *context, const char *section,
  struct pw_properties *props);
/** emit callback for all config sections. Since 0.3.45 */
int pw_context_conf_section_for_each(struct pw_context *context, const char *section,
  int (*callback) (void *data, const char *location, const char *section,
   const char *str, size_t len),
  void *data);
/** emit callback for all matched properties. Since 0.3.46 */
int pw_context_conf_section_match_rules(struct pw_context *context, const char *section,
  const struct spa_dict *props,
  int (*callback) (void *data, const char *location, const char *action,
   const char *str, size_t len),
  void *data);

/** Get the context support objects */
const struct spa_support *pw_context_get_support(struct pw_context *context, uint32_t *n_support);

/** Get the context main loop. Returns the value passed to pw_context_new(). */
struct pw_loop *pw_context_get_main_loop(struct pw_context *context);

/** Get the context data loop. This loop runs on the realtime thread. This
 * acquires a loop from the generic data.rt class. Use pw_context_acquire_loop() instead.
 * Since 0.3.56 */

struct pw_data_loop *pw_context_get_data_loop(struct pw_context *context);

/** Get a data-loop.
 * Since 1.1.0 */

struct pw_loop *pw_context_acquire_loop(struct pw_context *context, const struct spa_dict *props);
/** Release a data-loop.
 * Since 1.1.0 */

void pw_context_release_loop(struct pw_context *context, struct pw_loop *loop);

/** Get the work queue from the context: Since 0.3.26 */
struct pw_work_queue *pw_context_get_work_queue(struct pw_context *context);

/** Get the memory pool from the context: Since 0.3.74 */
struct pw_mempool *pw_context_get_mempool(struct pw_context *context);

/** Iterate the globals of the context. The callback should return
 * 0 to fetch the next item, any other value stops the iteration and returns
 * the value. When all callbacks return 0, this function returns 0 when all
 * globals are iterated. */

int pw_context_for_each_global(struct pw_context *context,
       int (*callback) (void *data, struct pw_global *global),
       void *data);

/** Find a context global by id.
 *
 * \return The global on success, or NULL on failure. If id is \ref PW_ID_CORE,
 *         this function will always return a non-NULL value. */

struct pw_global *pw_context_find_global(struct pw_context *context, /**< the context */
          uint32_t id  /**< the global id */);

/** add a spa library for the given factory_name regex */
int pw_context_add_spa_lib(struct pw_context *context, const char *factory_regex, const char *lib);

/** find the library name for a spa factory */
const char * pw_context_find_spa_lib(struct pw_context *context, const char *factory_name);

/** Load a SPA handle from a context. On failure returns NULL and sets errno. */
struct spa_handle *pw_context_load_spa_handle(struct pw_context *context,
  const char *factory_name,
  const struct spa_dict *info);


/** data for registering export functions */
struct pw_export_type {
 struct spa_list link;
 const char *type;
 struct pw_proxy * (*func) (struct pw_core *core,
  const char *type, const struct spa_dict *props, void *object,
  size_t user_data_size);
};

/** register a type that can be exported on a context_proxy. This is usually used by
 * extension modules */

int pw_context_register_export_type(struct pw_context *context, struct pw_export_type *type);
/** find information about registered export type */
const struct pw_export_type *pw_context_find_export_type(struct pw_context *context, const char *type);

/** add an object to the context
 *
 * \param context The context.
 * \param type The type of the object, usually a `TYPE_INTERFACE_` value.
 * \param value The object value. Must last as long as the context and must
 *              be of the type corresponding to the type.
 * \return A negative number on failure (out of memory).
 * */

int pw_context_set_object(struct pw_context *context, const char *type, void *value);
/** get an object from the context
 *
 * \param context The context.
 * \param type The string corresponding to the object's interface.
 * \return The object, or NULL if the object does not exist.
 * */

void *pw_context_get_object(struct pw_context *context, const char *type);

/**
 * \}
 */

#ifdef __cplusplus
}
#endif

#endif /* PIPEWIRE_CONTEXT_H */

Messung V0.5 in Prozent
C=82 H=100 G=91

¤ Dauer der Verarbeitung: 0.15 Sekunden  (vorverarbeitet am  2026-08-25) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Statistik
#Sources=277311
#Domains=752002