command: redo ancient TV/DVB/PVR commands

Convert all these commands to properties. (Except tv_last_channel, not
sure what to do with this.) Also, internally, don't access stream
details directly, but dispatch commands with stream ctrls.

Many of the new properties are a bit strange, because they're write-
only. Also remove some OSD output these commands produced, because I
couldn't be bothered to port these.

In general, this makes everything much cleaner, and will also make it
easier to e.g. move the demuxer to its own thread.

Don't bother updating input.conf, but changes.rst documents how old
commands map to the new ones.

Mostly untested, due to lack of hardware.
This commit is contained in:
wm4
2014-06-09 23:38:28 +02:00
parent 9420eb5a07
commit e033f3c8bc
14 changed files with 262 additions and 210 deletions

View File

@@ -142,6 +142,8 @@ struct pvr_t {
int stream_type;
};
static int pvr_stream_control(struct stream *s, int cmd, void *arg);
static struct pvr_t *
pvr_init (void)
{
@@ -1608,6 +1610,7 @@ pvr_stream_open (stream_t *stream)
stream->type = STREAMTYPE_PVR;
stream->fill_buffer = pvr_stream_read;
stream->close = pvr_stream_close;
stream->control = pvr_stream_control;
return STREAM_OK;
}
@@ -1698,6 +1701,28 @@ pvr_force_freq_step (stream_t *stream, int step)
return force_freq_step (pvr, step);
}
static int pvr_stream_control(struct stream *s, int cmd, void *arg)
{
switch (cmd) {
case STREAM_CTRL_SET_TV_FREQ:
pvr_set_freq(s, (int)(*(float *)arg + 0.5f));
return STREAM_OK;
case STREAM_CTRL_GET_TV_FREQ:
*(float *)arg = pvr_get_current_frequency(s);
return STREAM_OK;
case STREAM_CTRL_TV_SET_CHAN:
pvr_set_channel(s, (char *)arg);
return STREAM_OK;
case STREAM_CTRL_TV_STEP_CHAN:
pvr_set_channel_step(s, *(int *)arg);
return STREAM_OK;
case STREAM_CTRL_TV_LAST_CHAN:
pvr_set_lastchannel(s);
return STREAM_OK;
}
return STREAM_UNSUPPORTED;
}
const stream_info_t stream_info_pvr = {
.name = "pvr",
.open = pvr_stream_open,