[linux-dvb] What do you think of mpsys library ? (for ca_zap)

Kenneth Aafløy lists at kenneth.aafloy.net
Sat Apr 2 00:28:20 CEST 2005


On Saturday 02 April 2005 00:13, Johannes Stezenbach wrote:
> Kenneth Aafløy wrote:
> > } vid_dev_info_t;
> 
> Please don't use typedefs unless you are explicitly defining
> opaque data types. It makes it more difficult to see what's going on.

I'm wondering if you recentment is against the typedef in general or the
implementation of a clean api. The api will be well documented, and so
will the new typedefed types? I was merily following the alsa api here,
so I'm not in any way married to it yet! Any suggestions is very much
welcome, please prove why your suggestion will produce a cleaner api.

> > ... :)
> > int vid_dev_set_hierarchy(vid_dev_t *, vid_dev_hierarchy_t);
> 
> I don't think this is useful. If you want to tune you pass all data
> you have in one call.

Well, if we are going to be general, then why not do it properly?
I had an idea earlier, please look at what is presented below.

I was actually thinking more along the lines of this, once other pieces started
to present themselves, which I belive is a strong argument for pondering on the
api for a while before any library is conceived;

Kenneth

tune.h
-------------------------------------------------------------------------------
/**
 * Create a new channel for which the parameters is already known or is to be
 * tried to tune to.
 */
int vid_create_channel(vid_channel_t **, vid_dev_t *);

/**
 * Store the channel into the existing hierarchy of channels that the library
 * manages.
 *
 * \note The channel will be owned by the library after this call succeds.
 */
int vid_store_channel(vid_channel_t *);

/**
 * Free a channel that has been created and not passed to store_channel,
 * but is to be disposed of.
 */
int vid_free_channel(vid_channel_t *);

/**
 * Tune to the channel handle.
 */
int vid_dev_tune(vid_dev_t *, vid_channel_t *);

/**
 * NULL is returned if the device has not been tuned yet.
 */
vid_channel_t * vid_get_current_channel(vid_dev_t *);

/**
 * Set/Get the frequency of the channel.
 * XXX - uint64_t ??
 */
int vid_channel_set_frequency(vid_channel_t *, unsigned long frequency);
unsigned long vid_channel_get_frequency(vid_channel_t *);

/**
 * Set/Get DVB/ATSC parameters of the channel.
 * XXX - combined struct ??
 */

typedef enum _vid_channel_param {
        VID_CHANNEL_PARAM_INVERSION,
        VID_CHANNEL_PARAM_FEC_RATE,
        VID_CHANNEL_PARAM_LOW_FEC_RATE,
        VID_CHANNEL_PARAM_MODULATION,
        VID_CHANNEL_PARAM_BANDWIDTH,
        VID_CHANNEL_PARAM_TRANSMISSION_MODE,
        VID_CHANNEL_PARAM_GUARD_INTERVAL,
        VID_CHANNEL_PARAM_HIERARCHY,

        VID_CHANNEL_PARAM_LAST
} vid_channel_param_t;

int vid_channel_set_param(vid_channel_param_t, int value);
int vid_channel_get_param(vid_channel_param_t);

/* TODO:
 * get/set_param(vid_channel_param_t, <type>);
 */


record.h
-------------------------------------------------------------------------------

typedef struct _vid_rec vid_rec_t;
typedef struct _vid_rec_component vid_component_t;

/**
 * Open for recording any recording available on the device.
 */
int vid_rec_open(vid_rec_t **, vid_dev_t *);

/**
 * Open for recording on channel given.
 */
int vid_rec_open(vid_rec_t **, vid_channel_t *);

int vid_rec_close(vid_rec_t *);

/**
 * Get the current components of the channel that it is possible to record.
 */
int vid_rec_get_components(const vid_rec_component_t **, vid_rec_t *);

int vid_rec_add_component(vid_rec_t *, vid_rec_component_t *);
int vid_rec_remove_component(vid_rec_t *, vid_rec_component_t *);


int vid_rec_start(vid_rec_t *);
int vid_rec_stop(vid_rec_t *);

/**
 * Pause the recording, data will be lost.
 */
int vid_rec_pause(vid_rec_t *);




More information about the linux-dvb mailing list