Mercurial > mplayer.hg
changeset 23882:d5be90343fac
Removing global variables from tv://
Step 1: introducing new structure, fixing tv:// stream
author | voroshil |
---|---|
date | Sun, 29 Jul 2007 10:11:24 +0000 |
parents | 5a5c7866921f |
children | d65439444b75 |
files | stream/stream_tv.c stream/tv.h |
diffstat | 2 files changed, 102 insertions(+), 19 deletions(-) [+] |
line wrap: on
line diff
--- a/stream/stream_tv.c Sun Jul 29 03:55:12 2007 +0000 +++ b/stream/stream_tv.c Sun Jul 29 10:11:24 2007 +0000 @@ -26,19 +26,55 @@ #include "libmpdemux/demuxer.h" #include "m_option.h" #include "m_struct.h" +#include "tv.h" #include <stdio.h> -static struct stream_priv_s { - /* if channels parameter exist here will be channel number otherwise - frequency */ - int input; - char* channel; -} stream_priv_dflts = { - -1, - NULL +tv_param_t stream_tv_defaults = { + NULL, //freq + NULL, //channel + "europe-east", //chanlist + "pal", //norm + 0, //automute +#ifdef HAVE_TV_V4L2 + -1, //normid +#endif + NULL, //device + "dummy", //driver + -1, //width + -1, //height + 0, //input, used in v4l and bttv + -1, //outfmt + -1.0, //fps + NULL, //channels + 0, //noaudio; + 0, //immediate; + 44100, //audiorate; + 0, //audio_id +#if defined(HAVE_TV_V4L) + -1, //amode + -1, //volume + -1, //bass + -1, //treble + -1, //balance + -1, //forcechan + 0, //force_audio + -1, //buffer_size + 0, //mjpeg + 2, //decimation + 90, //quality +#if defined(HAVE_ALSA9) || defined(HAVE_ALSA1X) + 0, //alsa +#endif + NULL, //adevice +#endif + 0, //brightness + 0, //contrast + 0, //hue + 0, //saturation }; -#define ST_OFF(f) M_ST_OFF(struct stream_priv_s,f) +#define ST_OFF(f) M_ST_OFF(tv_param_t,f) static m_option_t stream_opts_fields[] = { {"hostname", ST_OFF(channel), CONF_TYPE_STRING, 0, 0 ,0, NULL}, {"filename", ST_OFF(input), CONF_TYPE_INT, 0, 0 ,0, NULL}, @@ -47,27 +83,27 @@ static struct m_struct_st stream_opts = { "tv", - sizeof(struct stream_priv_s), - &stream_priv_dflts, + sizeof(tv_param_t), + &stream_tv_defaults, stream_opts_fields }; +static void +tv_stream_close (stream_t *stream) +{ + if(stream->priv) + m_struct_free(&stream_opts,stream->priv); + stream->priv=NULL; +} static int tv_stream_open (stream_t *stream, int mode, void *opts, int *file_format) { - extern char* tv_param_channel; - extern int tv_param_input; - struct stream_priv_s* p=(struct stream_priv_s*)opts; stream->type = STREAMTYPE_TV; + stream->priv = opts; + stream->close=tv_stream_close; *file_format = DEMUXER_TYPE_TV; - /* don't override input= option value if no input id is - passed in tv:// url */ - if(p->input!=-1) - tv_param_input=p->input; - if (p->channel) - tv_param_channel=strdup (p->channel); return STREAM_OK; }
--- a/stream/tv.h Sun Jul 29 03:55:12 2007 +0000 +++ b/stream/tv.h Sun Jul 29 10:11:24 2007 +0000 @@ -47,6 +47,52 @@ extern int tv_param_hue; extern int tv_param_saturation; +typedef struct tv_param_s { + char *freq; + char *channel; + char *chanlist; + char *norm; + int automute; +#ifdef HAVE_TV_V4L2 + int normid; +#endif + char *device; + char *driver; + int width; + int height; + int input; + int outfmt; + float fps; + char **channels; + int noaudio; + int immediate; + int audiorate; + int audio_id; +#if defined(HAVE_TV_V4L) + int amode; + int volume; + int bass; + int treble; + int balance; + int forcechan; + int force_audio; + int buffer_size; + int mjpeg; + int decimation; + int quality; +#if defined(HAVE_ALSA9) || defined(HAVE_ALSA1X) + int alsa; +#endif + char* adevice; +#endif + int brightness; + int contrast; + int hue; + int saturation; +} tv_param_t; + +extern tv_param_t stream_tv_defaults; + typedef struct tvi_info_s { struct tvi_handle_s * (*tvi_init)(char *device,char *adevice); @@ -78,6 +124,7 @@ int chanlist; const struct CHANLIST *chanlist_s; int channel; + tv_param_t * tv_param; } tvi_handle_t; typedef struct tv_channels_s {