efl/src/lib/ecore_audio/ecore_audio_obj_in.h

278 lines
7.6 KiB
C

#ifndef ECORE_AUDIO_OBJ_IN_H
#define ECORE_AUDIO_OBJ_IN_H
#include <Eina.h>
#include <Eo.h>
#ifdef EAPI
#undef EAPI
#endif
#ifdef __GNUC__
#if __GNUC__ >= 4
#define EAPI __attribute__ ((visibility("default")))
#else
#define EAPI
#endif
#else
#define EAPI
#endif
/**
* @file ecore_audio_obj_in.h
* @brief Ecore_Audio Input Object
*/
#ifdef __cplusplus
extern "C"
{
#endif
/**
* @defgroup ecore_audio_obj_in - Ecore_Audio input object
* @ingroup Ecore_Audio_Group
* @{
*/
#define ECORE_AUDIO_OBJ_IN_CLASS ecore_audio_obj_in_class_get() /**< Ecore_Audio input object class */
/**
* @brief Get the Eo class ID
*
* @return The Eo class ID
*/
const Eo_Class *ecore_audio_obj_in_class_get() EINA_CONST;
extern EAPI Eo_Op ECORE_AUDIO_OBJ_IN_BASE_ID;
enum Ecore_Audio_Obj_In_Sub_Ids
{
ECORE_AUDIO_OBJ_IN_SUB_ID_SPEED_SET,
ECORE_AUDIO_OBJ_IN_SUB_ID_SPEED_GET,
ECORE_AUDIO_OBJ_IN_SUB_ID_SAMPLERATE_SET,
ECORE_AUDIO_OBJ_IN_SUB_ID_SAMPLERATE_GET,
ECORE_AUDIO_OBJ_IN_SUB_ID_CHANNELS_SET,
ECORE_AUDIO_OBJ_IN_SUB_ID_CHANNELS_GET,
ECORE_AUDIO_OBJ_IN_SUB_ID_PRELOADED_SET,
ECORE_AUDIO_OBJ_IN_SUB_ID_PRELOADED_GET,
ECORE_AUDIO_OBJ_IN_SUB_ID_LOOPED_SET,
ECORE_AUDIO_OBJ_IN_SUB_ID_LOOPED_GET,
ECORE_AUDIO_OBJ_IN_SUB_ID_LENGTH_SET,
ECORE_AUDIO_OBJ_IN_SUB_ID_LENGTH_GET,
ECORE_AUDIO_OBJ_IN_SUB_ID_READ,
ECORE_AUDIO_OBJ_IN_SUB_ID_READ_INTERNAL,
ECORE_AUDIO_OBJ_IN_SUB_ID_SEEK,
ECORE_AUDIO_OBJ_IN_SUB_ID_OUTPUT_GET,
ECORE_AUDIO_OBJ_IN_SUB_ID_REMAINING_GET,
ECORE_AUDIO_OBJ_IN_SUB_ID_LAST
};
#define ECORE_AUDIO_OBJ_IN_ID(sub_id) (ECORE_AUDIO_OBJ_IN_BASE_ID + EO_TYPECHECK(enum Ecore_Audio_Obj_In_Sub_Ids, sub_id))
/**
* @brief Set the playback speed of the input
*
* @since 1.8
*
* @param[in] speed The speed, 1.0 is the default
*/
#define ecore_audio_obj_in_speed_set(speed) ECORE_AUDIO_OBJ_IN_ID(ECORE_AUDIO_OBJ_IN_SUB_ID_SPEED_SET), EO_TYPECHECK(double, speed)
/**
* @brief Get the playback speed of the input
*
* @since 1.8
*
* This will trigger the ECORE_AUDIO_EV_IN_SAMPLERATE_CHANGED event.
*
* @param[out] speed The speed
*/
#define ecore_audio_obj_in_speed_get(speed) ECORE_AUDIO_OBJ_IN_ID(ECORE_AUDIO_OBJ_IN_SUB_ID_SPEED_GET), EO_TYPECHECK(double *, speed)
/**
* @brief Set the sample-rate of the input
*
* @since 1.8
*
* This will trigger the ECORE_AUDIO_EV_IN_SAMPLERATE_CHANGED event.
*
* @param[in] samplerate The samplerate in Hz
*/
#define ecore_audio_obj_in_samplerate_set(samplerate) ECORE_AUDIO_OBJ_IN_ID(ECORE_AUDIO_OBJ_IN_SUB_ID_SAMPLERATE_SET), EO_TYPECHECK(int, samplerate)
/**
* @brief Get the sample-rate of the input
*
* @since 1.8
*
* @param[out] samplerate The samplerate in Hz
*/
#define ecore_audio_obj_in_samplerate_get(samplerate) ECORE_AUDIO_OBJ_IN_ID(ECORE_AUDIO_OBJ_IN_SUB_ID_SAMPLERATE_GET), EO_TYPECHECK(int *, samplerate)
/**
* @brief Set the amount of channels the input has
*
* @since 1.8
*
* @param[in] channels The number of channels
*/
#define ecore_audio_obj_in_channels_set(channels) ECORE_AUDIO_OBJ_IN_ID(ECORE_AUDIO_OBJ_IN_SUB_ID_CHANNELS_SET), EO_TYPECHECK(int, channels)
/**
* @brief Get the amount of channels the input has
*
* @since 1.8
*
* @param[out] channels The number of channels
*/
#define ecore_audio_obj_in_channels_get(channels) ECORE_AUDIO_OBJ_IN_ID(ECORE_AUDIO_OBJ_IN_SUB_ID_CHANNELS_GET), EO_TYPECHECK(int *, channels)
/**
* @brief Set the preloaded state of the input
*
* @since 1.8
*
* @param[in] preloaded EINA_TRUE if the input should be cached, EINA_FALSE otherwise
*/
#define ecore_audio_obj_in_preloaded_set(preloaded) ECORE_AUDIO_OBJ_IN_ID(ECORE_AUDIO_OBJ_IN_SUB_ID_PRELOADED_SET), EO_TYPECHECK(Eina_Bool, preloaded)
/**
* @brief Get the preloaded state of the input
*
* @since 1.8
*
* @param[out] preloaded EINA_TRUE if the input is cached, EINA_FALSE otherwise
*/
#define ecore_audio_obj_in_preloaded_get(preloaded) ECORE_AUDIO_OBJ_IN_ID(ECORE_AUDIO_OBJ_IN_SUB_ID_PRELOADED_GET), EO_TYPECHECK(Eina_Bool *, preloaded)
/**
* @brief Set the looped state of the input
*
* @since 1.8
*
* If the input is looped and reaches the end it will start from the
* beginning again. At the same time the event @ref ECORE_AUDIO_EV_IN_LOOPED
* will be emitted
*
* @param[in] looped EINA_TRUE if the input should be looped, EINA_FALSE otherwise
*/
#define ecore_audio_obj_in_looped_set(looped) ECORE_AUDIO_OBJ_IN_ID(ECORE_AUDIO_OBJ_IN_SUB_ID_LOOPED_SET), EO_TYPECHECK(Eina_Bool, looped)
/**
* @brief Get the looped state of the input
*
* @since 1.8
*
* @see ecore_audio_obj_in_looped_set
*
* @param[out] looped EINA_TRUE if the input is looped, EINA_FALSE otherwise
*/
#define ecore_audio_obj_in_looped_get(ret) ECORE_AUDIO_OBJ_IN_ID(ECORE_AUDIO_OBJ_IN_SUB_ID_LOOPED_GET), EO_TYPECHECK(Eina_Bool *, ret)
/**
* @brief Set the length of the input
*
* @since 1.8
*
* This function is only implemented by some classes
* (i.e. ECORE_AUDIO_OBJ_IN_TONE_CLASS)
*
* @param[in] length The length of the input in seconds
*/
#define ecore_audio_obj_in_length_set(length) ECORE_AUDIO_OBJ_IN_ID(ECORE_AUDIO_OBJ_IN_SUB_ID_LENGTH_SET), EO_TYPECHECK(double, length)
/**
* @brief Get the length of the input
*
* @since 1.8
*
* @param[out] ret The length of the input in seconds
*/
#define ecore_audio_obj_in_length_get(ret) ECORE_AUDIO_OBJ_IN_ID(ECORE_AUDIO_OBJ_IN_SUB_ID_LENGTH_GET), EO_TYPECHECK(double *, ret)
/**
* @brief Read from the input
*
* @since 1.8
*
* @param[out] buf The buffer to read into
* @param[in] len The amount of samples to read
* @param[out] ret The amount of samples written to buf
*/
#define ecore_audio_obj_in_read(buf, len, ret) ECORE_AUDIO_OBJ_IN_ID(ECORE_AUDIO_OBJ_IN_SUB_ID_READ), EO_TYPECHECK(void *, buf), EO_TYPECHECK(size_t, len), EO_TYPECHECK(ssize_t *, ret)
/**
* @brief Seek within the input
*
* @since 1.8
*
* @param[in] offs The offset in seconds
* @param[in] mode The seek mode. Is absolute with SEEK_SET, relative to the
* current position with SEEK_CUR and relative to the end with SEEK_END.
* @param[out] ret The current absolute position in seconds within the input
*/
#define ecore_audio_obj_in_seek(offs, mode, ret) ECORE_AUDIO_OBJ_IN_ID(ECORE_AUDIO_OBJ_IN_SUB_ID_SEEK), EO_TYPECHECK(double, offs), EO_TYPECHECK(int, mode), EO_TYPECHECK(double *, ret)
/**
* @brief Get the output that this input is attached to
*
* @since 1.8
*
* @param[out] ret The output
*/
#define ecore_audio_obj_in_output_get(ret) ECORE_AUDIO_OBJ_IN_ID(ECORE_AUDIO_OBJ_IN_SUB_ID_OUTPUT_GET), EO_TYPECHECK(Eo **, ret)
/**
* @brief Get the remaining time of the input
*
* @param[out] ret The amount of time in seconds left to play
*/
#define ecore_audio_obj_in_remaining_get(ret) ECORE_AUDIO_OBJ_IN_ID(ECORE_AUDIO_OBJ_IN_SUB_ID_REMAINING_GET), EO_TYPECHECK(double *, ret)
extern const Eo_Event_Description _ECORE_AUDIO_EV_IN_LOOPED;
/**
* @brief The input looped
*
* @since 1.8
*
* Emitted when @ref ecore_audio_obj_in_looped_set is set to EINA_TRUE and
* the input restarted playing after reaching the end.
*/
#define ECORE_AUDIO_EV_IN_LOOPED (&(_ECORE_AUDIO_EV_IN_LOOPED))
extern const Eo_Event_Description _ECORE_AUDIO_EV_IN_STOPPED;
/**
* @brief The input stopped playing
*
* @since 1.8
*
* Emitted when the input stopped playing after reaching the end.
*/
#define ECORE_AUDIO_EV_IN_STOPPED (&(_ECORE_AUDIO_EV_IN_STOPPED))
extern const Eo_Event_Description _ECORE_AUDIO_EV_IN_SAMPLERATE_CHANGED;
/**
* @brief The sample rate changed
*
* @since 1.8
*
* Emitted when the samplerate changed - this can happen if you call
* @ref ecore_audio_obj_in_samplerate_set or
* @ref ecore_audio_obj_in_speed_set.
*/
#define ECORE_AUDIO_EV_IN_SAMPLERATE_CHANGED (&(_ECORE_AUDIO_EV_IN_SAMPLERATE_CHANGED))
/**
* @}
*/
#ifdef __cplusplus
}
#endif
#endif