diff --git a/DOCS/man/en/options.rst b/DOCS/man/en/options.rst index 58b1345922..e534b1aeb1 100644 --- a/DOCS/man/en/options.rst +++ b/DOCS/man/en/options.rst @@ -1691,8 +1691,8 @@ OPTIONS You can also try to use ``--no-correct-pts`` for files with completely broken timestamps. -``--pvr=`` - This option tunes various encoding properties of the PVR capture module. +``--pvr-...`` + These options tune various encoding properties of the PVR capture module. It has to be used with any hardware MPEG encoder based card supported by the V4L2 driver. The Hauppauge WinTV PVR-150/250/350/500 and all IVTV based cards are known as PVR capture cards. Be aware that only Linux @@ -1700,52 +1700,51 @@ OPTIONS For hardware capture of an MPEG stream and watching it with mpv, use ``pvr://`` as a movie URL. - Available options are: - ``aspect=<0-3>`` - Specify input aspect ratio: +``--pvr-aspect=<0-3>`` + Specify input aspect ratio: - :0: 1:1 - :1: 4:3 (default) - :2: 16:9 - :3: 2.21:1 + :0: 1:1 + :1: 4:3 (default) + :2: 16:9 + :3: 2.21:1 - ``arate=<32000-48000>`` - Specify encoding audio rate (default: 48000 Hz, available: 32000, - 44100 and 48000 Hz). +``--pvr-arate=<32000-48000>`` + Specify encoding audio rate (default: 48000 Hz, available: 32000, + 44100 and 48000 Hz). - ``alayer=<1-3>`` - Specify MPEG audio layer encoding (default: 2). +``--pvr-alayer=<1-3>`` + Specify MPEG audio layer encoding (default: 2). - ``abitrate=<32-448>`` - Specify audio encoding bitrate in kbps (default: 384). +``--pvr-abitrate=<32-448>`` + Specify audio encoding bitrate in kbps (default: 384). - ``amode=`` - Specify audio encoding mode. Available preset values are 'stereo', - 'joint_stereo', 'dual' and 'mono' (default: stereo). +``--pvr-amode=`` + Specify audio encoding mode. Available preset values are 'stereo', + 'joint_stereo', 'dual' and 'mono' (default: stereo). - ``vbitrate=`` - Specify average video bitrate encoding in Mbps (default: 6). +``--pvr-vbitrate=`` + Specify average video bitrate encoding in Mbps (default: 6). - ``vmode=`` - Specify video encoding mode: +``--pvr-vmode=`` + Specify video encoding mode: - :vbr: Variable BitRate (default) - :cbr: Constant BitRate + :vbr: Variable BitRate (default) + :cbr: Constant BitRate - ``vpeak=`` - Specify peak video bitrate encoding in Mbps (only useful for VBR - encoding, default: 9.6). +``--pvr-vpeak=`` + Specify peak video bitrate encoding in Mbps (only useful for VBR + encoding, default: 9.6). - ``fmt=`` - Choose an MPEG format for encoding: +``--pvr-fmt=`` + Choose an MPEG format for encoding: - :ps: MPEG-2 Program Stream (default) - :ts: MPEG-2 Transport Stream - :mpeg1: MPEG-1 System Stream - :vcd: Video CD compatible stream - :svcd: Super Video CD compatible stream - :dvd: DVD compatible stream + :ps: MPEG-2 Program Stream (default) + :ts: MPEG-2 Transport Stream + :mpeg1: MPEG-1 System Stream + :vcd: Video CD compatible stream + :svcd: Super Video CD compatible stream + :dvd: DVD compatible stream ``--quiet`` Make console output less verbose; in particular, prevents the status line diff --git a/options/options.c b/options/options.c index a4d2ebe430..466049a91c 100644 --- a/options/options.c +++ b/options/options.c @@ -63,31 +63,7 @@ static void print_help(struct mp_log *log) } extern const struct m_sub_options tv_params_conf; - -extern int pvr_param_aspect_ratio; -extern int pvr_param_sample_rate; -extern int pvr_param_audio_layer; -extern int pvr_param_audio_bitrate; -extern char *pvr_param_audio_mode; -extern int pvr_param_bitrate; -extern char *pvr_param_bitrate_mode; -extern int pvr_param_bitrate_peak; -extern char *pvr_param_stream_type; - -#if HAVE_PVR -static const m_option_t pvropts_conf[]={ - {"aspect", &pvr_param_aspect_ratio, CONF_TYPE_INT, 0, 1, 4, NULL}, - {"arate", &pvr_param_sample_rate, CONF_TYPE_INT, 0, 32000, 48000, NULL}, - {"alayer", &pvr_param_audio_layer, CONF_TYPE_INT, 0, 1, 2, NULL}, - {"abitrate", &pvr_param_audio_bitrate, CONF_TYPE_INT, 0, 32, 448, NULL}, - {"amode", &pvr_param_audio_mode, CONF_TYPE_STRING, 0, 0, 0, NULL}, - {"vbitrate", &pvr_param_bitrate, CONF_TYPE_INT, 0, 0, 0, NULL}, - {"vmode", &pvr_param_bitrate_mode, CONF_TYPE_STRING, 0, 0, 0, NULL}, - {"vpeak", &pvr_param_bitrate_peak, CONF_TYPE_INT, 0, 0, 0, NULL}, - {"fmt", &pvr_param_stream_type, CONF_TYPE_STRING, 0, 0, 0, NULL}, - {NULL, NULL, 0, 0, 0, 0, NULL} -}; -#endif /* HAVE_PVR */ +extern const struct m_sub_options stream_pvr_conf; extern const m_option_t dvbin_opts_conf[]; extern const m_option_t lavfdopts_conf[]; @@ -269,7 +245,7 @@ const m_option_t mp_opts[] = { OPT_SUBSTRUCT("tv", tv_params, tv_params_conf, 0), #endif /* HAVE_TV */ #if HAVE_PVR - {"pvr", (void *) pvropts_conf, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL}, + OPT_SUBSTRUCT("pvr", stream_pvr_opts, stream_pvr_conf, 0), #endif /* HAVE_PVR */ #if HAVE_DVBIN {"dvbin", (void *) dvbin_opts_conf, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL}, diff --git a/options/options.h b/options/options.h index 2451c5f82e..ec572fe1d1 100644 --- a/options/options.h +++ b/options/options.h @@ -239,6 +239,7 @@ typedef struct MPOpts { char *network_tls_ca_file; struct tv_params *tv_params; + struct pvr_params *stream_pvr_opts; struct lavc_param { int fast; diff --git a/stream/frequencies.c b/stream/frequencies.c index ff020fabe6..9f5be330e5 100644 --- a/stream/frequencies.c +++ b/stream/frequencies.c @@ -1210,6 +1210,4 @@ const struct CHANLISTS chanlists[] = { { NULL, NULL, 0 } /* EOF */ }; -int chantab = 5; -const struct CHANLIST *chanlist = europe_west; -int chancount = CHAN_COUNT(europe_west); +const int chancount = CHAN_COUNT(europe_west); diff --git a/stream/frequencies.h b/stream/frequencies.h index 87a5a1fb4f..3439412f6d 100644 --- a/stream/frequencies.h +++ b/stream/frequencies.h @@ -124,10 +124,6 @@ struct CHANLISTS { /* --------------------------------------------------------------------- */ extern const struct CHANLISTS chanlists[]; -//extern struct STRTAB chanlist_names[]; - -extern int chantab; -extern const struct CHANLIST *chanlist; -extern int chancount; +extern const int chancount; #endif /* MPLAYER_FREQUENCIES_H */ diff --git a/stream/pvr.h b/stream/pvr.h deleted file mode 100644 index b596c98dd3..0000000000 --- a/stream/pvr.h +++ /dev/null @@ -1,91 +0,0 @@ -/* - * stream layer for hardware MPEG 1/2/4 encoders a.k.a PVR - * (such as WinTV PVR-150/250/350/500 (a.k.a IVTV), pvrusb2 and cx88) - * See http://ivtvdriver.org/index.php/Main_Page for more details on the - * cards supported by the ivtv driver. - * - * Copyright (C) 2006 Benjamin Zores - * Copyright (C) 2007 Sven Gothel (Channel Navigation) - * - * This file is part of MPlayer. - * - * MPlayer is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * MPlayer is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with MPlayer; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ - -#ifndef MPLAYER_PVR_H -#define MPLAYER_PVR_H - -#include "stream.h" -#include "tv.h" - -/** - * @brief Get the current station name. - * The pointer is valid, till the stream is closed. - * @return The stream's station name - */ -const char *pvr_get_current_stationname (stream_t *stream); - -/** - * @brief Get the current channel name. - * The pointer is valid, till the stream is closed. - * @return The stream's channel name - */ -const char *pvr_get_current_channelname (stream_t *stream); - -/** - * @brief Get the current frequency. - * @return frequency - */ -int pvr_get_current_frequency (stream_t *stream); - -/** - * @brief Set the current station using the channel name. - * This function will fail, - * if the channel does not exist, or the station is not enabled - * @return 0 if the station is available, otherwise -1 - */ -int pvr_set_channel (stream_t *stream, const char *channel); - -/** - * @brief Set the current station using to the last set channel - * @return 0 if the station is available, otherwise -1 - */ -int pvr_set_lastchannel (stream_t *stream); - -/** - * @brief Set the current channel using the frequency. - * This function will fail, - * if the frequency does not exist, or the station is not enabled - * @return 0 if the station is available, otherwise -1 - */ -int pvr_set_freq (stream_t *stream, int freq); - -/** - * @brief Set the current station while stepping. - * This function will fail, - * if the station does not exist, or the station is not enabled - * @return 0 if the station is available, otherwise -1 - */ -int pvr_set_channel_step (stream_t *stream, int step); - -/** - * @brief Set the current frequency while stepping - * This function will fail, - * if the frequency is invalid, i.e. <0 - * @return 0 if success, otherwise -1 - */ -int pvr_force_freq_step (stream_t *stream, int step); - -#endif /* MPLAYER_PVR_H */ diff --git a/stream/stream_pvr.c b/stream/stream_pvr.c index 9cdf509325..5ba42c4048 100644 --- a/stream/stream_pvr.c +++ b/stream/stream_pvr.c @@ -48,8 +48,7 @@ #include "options/options.h" #include "stream.h" -#include "pvr.h" - +#include "tv.h" #include "frequencies.h" #define PVR_DEFAULT_DEVICE "/dev/video0" @@ -81,15 +80,34 @@ #define PVR_STATION_NAME_SIZE 256 /* command line arguments */ -int pvr_param_aspect_ratio = 0; -int pvr_param_sample_rate = 0; -int pvr_param_audio_layer = 0; -int pvr_param_audio_bitrate = 0; -char *pvr_param_audio_mode = NULL; -int pvr_param_bitrate = 0; -char *pvr_param_bitrate_mode = NULL; -int pvr_param_bitrate_peak = 0; -char *pvr_param_stream_type = NULL; +struct pvr_params { + int aspect_ratio; + int sample_rate; + int audio_layer; + int audio_bitrate; + char *audio_mode; + int bitrate; + char *bitrate_mode; + int bitrate_peak; + char *stream_type; +}; + +#define OPT_BASE_STRUCT struct pvr_params +const struct m_sub_options stream_pvr_conf = { + .opts = (const m_option_t[]) { + OPT_INT("aspect", aspect_ratio, 0), + OPT_INT("arate", sample_rate, 0), + OPT_INT("alayer", audio_layer, 0), + OPT_INT("abitrate", audio_bitrate, 0), + OPT_STRING("amode", audio_mode, 0), + OPT_INT("vbitrate", bitrate, 0), + OPT_STRING("vmode", bitrate_mode, 0), + OPT_INT("vpeak", bitrate_peak, 0), + OPT_STRING("fmt", stream_type, 0), + {0} + }, + .size = sizeof(struct pvr_params), +}; #define BUFSTRCPY(d, s) av_strlcpy(d, s, sizeof(d)) #define BUFPRINTF(d, ...) snprintf(d, sizeof(d), __VA_ARGS__) @@ -112,8 +130,10 @@ typedef struct stationlist_s { struct pvr_t { struct mp_log *log; tv_param_t *tv_params; + struct pvr_params *params; int dev_fd; char *video_dev; + int chantab; /* v4l2 params */ int mute; @@ -154,6 +174,7 @@ pvr_init (void) pvr = calloc (1, sizeof (struct pvr_t)); pvr->dev_fd = -1; pvr->video_dev = strdup (PVR_DEFAULT_DEVICE); + pvr->chantab = 5; /* v4l2 params */ pvr->mute = 0; @@ -213,10 +234,10 @@ copycreate_stationlist (struct pvr_t *pvr, stationlist_t *stationlist, int num) { int i; - if (chantab < 0 || !stationlist) + if (pvr->chantab < 0 || !stationlist) return -1; - num = FFMAX (num, chanlists[chantab].count); + num = FFMAX (num, chanlists[pvr->chantab].count); free (stationlist->list); stationlist->list = NULL; @@ -235,13 +256,13 @@ copycreate_stationlist (struct pvr_t *pvr, stationlist_t *stationlist, int num) /* transport the channel list data to our extented struct */ stationlist->total = num; - BUFSTRCPY(stationlist->name, chanlists[chantab].name); + BUFSTRCPY(stationlist->name, chanlists[pvr->chantab].name); - for (i = 0; i < chanlists[chantab].count; i++) + for (i = 0; i < chanlists[pvr->chantab].count; i++) { stationlist->list[i].station[0]= '\0'; /* no station name yet */ - BUFSTRCPY(stationlist->list[i].name, chanlists[chantab].list[i].name); - stationlist->list[i].freq = chanlists[chantab].list[i].freq; + BUFSTRCPY(stationlist->list[i].name, chanlists[pvr->chantab].list[i].name); + stationlist->list[i].freq = chanlists[pvr->chantab].list[i].freq; stationlist->list[i].enabled = 1; /* default enabled */ stationlist->enabled++; stationlist->used++; @@ -417,23 +438,23 @@ parse_setup_stationlist (struct pvr_t *pvr) { if (!strcasecmp (chanlists[i].name, pvr->tv_params->chanlist)) { - chantab = i; + pvr->chantab = i; break; } } if (!chanlists[i].name) { MP_ERR(pvr, "%s unable to find channel list %s, using default %s\n", - LOG_LEVEL_V4L2, pvr->tv_params->chanlist, chanlists[chantab].name); + LOG_LEVEL_V4L2, pvr->tv_params->chanlist, chanlists[pvr->chantab].name); } else { MP_INFO(pvr, "%s select channel list %s, entries %d\n", LOG_LEVEL_V4L2, - chanlists[chantab].name, chanlists[chantab].count); + chanlists[pvr->chantab].name, chanlists[pvr->chantab].count); } } - if (0 > chantab) + if (0 > pvr->chantab) { MP_FATAL(pvr, "%s No channel list selected, giving up\n", LOG_LEVEL_V4L2); return -1; @@ -733,29 +754,6 @@ set_station_by_channelname_or_freq (struct pvr_t *pvr, const char *channel, return (pvr->freq > 0) ? 0 : -1; } -static int -force_freq_step (struct pvr_t *pvr, int step) -{ - int freq; - - if (!pvr) - return -1; - - freq = pvr->freq+step; - - if (freq) - { - MP_INFO(pvr, "%s Force Frequency %d + %d = %d \n", LOG_LEVEL_V4L2, - pvr->freq, step, freq); - - pvr->freq = freq; - - return set_v4l2_freq (pvr); - } - - return -1; -} - static void parse_encoder_options (struct pvr_t *pvr) { @@ -763,13 +761,13 @@ parse_encoder_options (struct pvr_t *pvr) return; /* -pvr aspect=digit */ - if (pvr_param_aspect_ratio >= 0 && pvr_param_aspect_ratio <= 3) - pvr->aspect = pvr_param_aspect_ratio; + if (pvr->params->aspect_ratio >= 0 && pvr->params->aspect_ratio <= 3) + pvr->aspect = pvr->params->aspect_ratio; /* -pvr arate=x */ - if (pvr_param_sample_rate != 0) + if (pvr->params->sample_rate != 0) { - switch (pvr_param_sample_rate) + switch (pvr->params->sample_rate) { case 32000: pvr->samplerate = V4L2_MPEG_AUDIO_SAMPLING_FREQ_32000; @@ -786,19 +784,19 @@ parse_encoder_options (struct pvr_t *pvr) } /* -pvr alayer=x */ - if (pvr_param_audio_layer == 1) + if (pvr->params->audio_layer == 1) pvr->layer = V4L2_MPEG_AUDIO_ENCODING_LAYER_1; - else if (pvr_param_audio_layer == 2) + else if (pvr->params->audio_layer == 2) pvr->layer = V4L2_MPEG_AUDIO_ENCODING_LAYER_2; - else if (pvr_param_audio_layer == 3) + else if (pvr->params->audio_layer == 3) pvr->layer = V4L2_MPEG_AUDIO_ENCODING_LAYER_3; /* -pvr abitrate=x */ - if (pvr_param_audio_bitrate != 0) + if (pvr->params->audio_bitrate != 0) { if (pvr->layer == V4L2_MPEG_AUDIO_ENCODING_LAYER_1) { - switch (pvr_param_audio_bitrate) + switch (pvr->params->audio_bitrate) { case 32: pvr->audio_rate = V4L2_MPEG_AUDIO_L1_BITRATE_32K; @@ -849,7 +847,7 @@ parse_encoder_options (struct pvr_t *pvr) else if (pvr->layer == V4L2_MPEG_AUDIO_ENCODING_LAYER_2) { - switch (pvr_param_audio_bitrate) + switch (pvr->params->audio_bitrate) { case 32: pvr->audio_rate = V4L2_MPEG_AUDIO_L2_BITRATE_32K; @@ -900,7 +898,7 @@ parse_encoder_options (struct pvr_t *pvr) else if (pvr->layer == V4L2_MPEG_AUDIO_ENCODING_LAYER_3) { - switch (pvr_param_audio_bitrate) + switch (pvr->params->audio_bitrate) { case 32: pvr->audio_rate = V4L2_MPEG_AUDIO_L3_BITRATE_32K; @@ -951,49 +949,49 @@ parse_encoder_options (struct pvr_t *pvr) } /* -pvr amode=x */ - if (pvr_param_audio_mode) + if (pvr->params->audio_mode) { - if (!strcmp (pvr_param_audio_mode, PVR_AUDIO_MODE_ARG_STEREO)) + if (!strcmp (pvr->params->audio_mode, PVR_AUDIO_MODE_ARG_STEREO)) pvr->audio_mode = V4L2_MPEG_AUDIO_MODE_STEREO; - else if (!strcmp (pvr_param_audio_mode, PVR_AUDIO_MODE_ARG_JOINT_STEREO)) + else if (!strcmp (pvr->params->audio_mode, PVR_AUDIO_MODE_ARG_JOINT_STEREO)) pvr->audio_mode = V4L2_MPEG_AUDIO_MODE_JOINT_STEREO; - else if (!strcmp (pvr_param_audio_mode, PVR_AUDIO_MODE_ARG_DUAL)) + else if (!strcmp (pvr->params->audio_mode, PVR_AUDIO_MODE_ARG_DUAL)) pvr->audio_mode = V4L2_MPEG_AUDIO_MODE_DUAL; - else if (!strcmp (pvr_param_audio_mode, PVR_AUDIO_MODE_ARG_MONO)) + else if (!strcmp (pvr->params->audio_mode, PVR_AUDIO_MODE_ARG_MONO)) pvr->audio_mode = V4L2_MPEG_AUDIO_MODE_MONO; } /* -pvr vbitrate=x */ - if (pvr_param_bitrate) - pvr->bitrate = pvr_param_bitrate; + if (pvr->params->bitrate) + pvr->bitrate = pvr->params->bitrate; /* -pvr vmode=x */ - if (pvr_param_bitrate_mode) + if (pvr->params->bitrate_mode) { - if (!strcmp (pvr_param_bitrate_mode, PVR_VIDEO_BITRATE_MODE_ARG_VBR)) + if (!strcmp (pvr->params->bitrate_mode, PVR_VIDEO_BITRATE_MODE_ARG_VBR)) pvr->bitrate_mode = V4L2_MPEG_VIDEO_BITRATE_MODE_VBR; - else if (!strcmp (pvr_param_bitrate_mode, PVR_VIDEO_BITRATE_MODE_ARG_CBR)) + else if (!strcmp (pvr->params->bitrate_mode, PVR_VIDEO_BITRATE_MODE_ARG_CBR)) pvr->bitrate_mode = V4L2_MPEG_VIDEO_BITRATE_MODE_CBR; } /* -pvr vpeak=x */ - if (pvr_param_bitrate_peak) - pvr->bitrate_peak = pvr_param_bitrate_peak; + if (pvr->params->bitrate_peak) + pvr->bitrate_peak = pvr->params->bitrate_peak; /* -pvr fmt=x */ - if (pvr_param_stream_type) + if (pvr->params->stream_type) { - if (!strcmp (pvr_param_stream_type, PVR_VIDEO_STREAM_TYPE_PS)) + if (!strcmp (pvr->params->stream_type, PVR_VIDEO_STREAM_TYPE_PS)) pvr->stream_type = V4L2_MPEG_STREAM_TYPE_MPEG2_PS; - else if (!strcmp (pvr_param_stream_type, PVR_VIDEO_STREAM_TYPE_TS)) + else if (!strcmp (pvr->params->stream_type, PVR_VIDEO_STREAM_TYPE_TS)) pvr->stream_type = V4L2_MPEG_STREAM_TYPE_MPEG2_TS; - else if (!strcmp (pvr_param_stream_type, PVR_VIDEO_STREAM_TYPE_MPEG1)) + else if (!strcmp (pvr->params->stream_type, PVR_VIDEO_STREAM_TYPE_MPEG1)) pvr->stream_type = V4L2_MPEG_STREAM_TYPE_MPEG1_SS; - else if (!strcmp (pvr_param_stream_type, PVR_VIDEO_STREAM_TYPE_DVD)) + else if (!strcmp (pvr->params->stream_type, PVR_VIDEO_STREAM_TYPE_DVD)) pvr->stream_type = V4L2_MPEG_STREAM_TYPE_MPEG2_DVD; - else if (!strcmp (pvr_param_stream_type, PVR_VIDEO_STREAM_TYPE_VCD)) + else if (!strcmp (pvr->params->stream_type, PVR_VIDEO_STREAM_TYPE_VCD)) pvr->stream_type = V4L2_MPEG_STREAM_TYPE_MPEG1_VCD; - else if (!strcmp (pvr_param_stream_type, PVR_VIDEO_STREAM_TYPE_SVCD)) + else if (!strcmp (pvr->params->stream_type, PVR_VIDEO_STREAM_TYPE_SVCD)) pvr->stream_type = V4L2_MPEG_STREAM_TYPE_MPEG2_SVCD; } } @@ -1523,6 +1521,7 @@ pvr_stream_open (stream_t *stream) pvr = pvr_init (); pvr->tv_params = stream->opts->tv_params; pvr->log = stream->log; + pvr->params = stream->opts->stream_pvr_opts; /** * if the url, i.e. 'pvr://8', contains the channel, use it, @@ -1620,7 +1619,8 @@ pvr_stream_open (stream_t *stream) /* PVR Public API access */ -const char * +#if 0 +static const char * pvr_get_current_stationname (stream_t *stream) { struct pvr_t *pvr; @@ -1638,7 +1638,7 @@ pvr_get_current_stationname (stream_t *stream) return NULL; } -const char * +static const char * pvr_get_current_channelname (stream_t *stream) { struct pvr_t *pvr = (struct pvr_t *) stream->priv; @@ -1650,8 +1650,9 @@ pvr_get_current_channelname (stream_t *stream) return NULL; } +#endif -int +static int pvr_get_current_frequency (stream_t *stream) { struct pvr_t *pvr = (struct pvr_t *) stream->priv; @@ -1659,7 +1660,7 @@ pvr_get_current_frequency (stream_t *stream) return pvr->freq; } -int +static int pvr_set_channel (stream_t *stream, const char * channel) { struct pvr_t *pvr = (struct pvr_t *) stream->priv; @@ -1667,7 +1668,7 @@ pvr_set_channel (stream_t *stream, const char * channel) return set_station_by_channelname_or_freq (pvr, channel, -1, 1); } -int +static int pvr_set_lastchannel (stream_t *stream) { struct pvr_t *pvr = (struct pvr_t *) stream->priv; @@ -1680,7 +1681,7 @@ pvr_set_lastchannel (stream_t *stream) return -1; } -int +static int pvr_set_freq (stream_t *stream, int freq) { struct pvr_t *pvr = (struct pvr_t *) stream->priv; @@ -1688,7 +1689,7 @@ pvr_set_freq (stream_t *stream, int freq) return set_station_by_channelname_or_freq (pvr, NULL, freq, 1); } -int +static int pvr_set_channel_step (stream_t *stream, int step) { struct pvr_t *pvr = (struct pvr_t *) stream->priv; @@ -1696,14 +1697,6 @@ pvr_set_channel_step (stream_t *stream, int step) return set_station_by_step (pvr, step, 1); } -int -pvr_force_freq_step (stream_t *stream, int step) -{ - struct pvr_t *pvr = (struct pvr_t *) stream->priv; - - return force_freq_step (pvr, step); -} - static int pvr_stream_control(struct stream *s, int cmd, void *arg) { switch (cmd) {