[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;


 * 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_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>);


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