summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUoti Urpala <uau@symbol.nonexistent.invalid>2008-04-23 07:01:31 +0300
committerUoti Urpala <uau@symbol.nonexistent.invalid>2008-04-23 13:48:38 +0300
commitc0c914effd94324362e4ca70204f1b08783f6121 (patch)
tree5e0c11787d1e44b03dc27c877cd43195c75cf630
parentf518cf7ea99e9282508f551ecb43892f6aabcbc4 (diff)
downloadmpv-c0c914effd94324362e4ca70204f1b08783f6121.tar.bz2
mpv-c0c914effd94324362e4ca70204f1b08783f6121.tar.xz
Move audio_id and video_id to options struct
-rw-r--r--cfg-common-opts.h10
-rw-r--r--command.c40
-rw-r--r--defaultopts.c2
-rw-r--r--mencoder.c16
-rw-r--r--mplayer.c11
-rw-r--r--mplayer.h2
-rw-r--r--options.h2
-rw-r--r--stream/asf_mmst_streaming.c3
-rw-r--r--stream/asf_streaming.c18
-rw-r--r--stream/network.h3
10 files changed, 55 insertions, 52 deletions
diff --git a/cfg-common-opts.h b/cfg-common-opts.h
index ac5572a860..79971f8c26 100644
--- a/cfg-common-opts.h
+++ b/cfg-common-opts.h
@@ -115,10 +115,10 @@
{"loadidx", &index_file_load, CONF_TYPE_STRING, 0, 0, 0, NULL},
// select audio/video/subtitle stream
- {"aid", &audio_id, CONF_TYPE_INT, CONF_RANGE, 0, 8190, NULL},
- {"vid", &video_id, CONF_TYPE_INT, CONF_RANGE, 0, 8190, NULL},
+ INTRANGE("aid", audio_id, 0, 8190, 0),
+ INTRANGE("vid", video_id, 0, 8190, 0),
{"sid", &dvdsub_id, CONF_TYPE_INT, CONF_RANGE, 0, 8190, NULL},
- {"novideo", &video_id, CONF_TYPE_FLAG, 0, -1, -2, NULL},
+ FLAG_CONSTANTS("novideo", video_id, -1, -2, 0),
{ "hr-mp3-seek", &hr_mp3_seek, CONF_TYPE_FLAG, 0, 0, 1, NULL },
{ "nohr-mp3-seek", &hr_mp3_seek, CONF_TYPE_FLAG, 0, 1, 0, NULL},
@@ -196,8 +196,8 @@
#endif
// disable audio
- {"sound", &audio_id, CONF_TYPE_FLAG, 0, -2, -1, NULL},
- {"nosound", &audio_id, CONF_TYPE_FLAG, 0, -1, -2, NULL},
+ FLAG_CONSTANTS("sound", audio_id, -2, -1, 0),
+ FLAG_CONSTANTS("nosound", audio_id, -1, -2, 0),
{"af*", &af_cfg.list, CONF_TYPE_STRING_LIST, 0, 0, 0, NULL},
{"af-adv", audio_filter_conf, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL},
diff --git a/command.c b/command.c
index aadfe36040..b19cdbcd3c 100644
--- a/command.c
+++ b/command.c
@@ -793,6 +793,7 @@ static int mp_property_balance(m_option_t * prop, int action, void *arg,
static int mp_property_audio(m_option_t * prop, int action, void *arg,
MPContext * mpctx)
{
+ struct MPOpts *opts = &mpctx->opts;
int current_id = -1, tmp;
switch (action) {
@@ -801,7 +802,7 @@ static int mp_property_audio(m_option_t * prop, int action, void *arg,
return M_PROPERTY_UNAVAILABLE;
if (!arg)
return M_PROPERTY_ERROR;
- *(int *) arg = audio_id;
+ *(int *) arg = opts->audio_id;
return M_PROPERTY_OK;
case M_PROPERTY_PRINT:
if (!mpctx->sh_audio)
@@ -809,7 +810,7 @@ static int mp_property_audio(m_option_t * prop, int action, void *arg,
if (!arg)
return M_PROPERTY_ERROR;
- if (audio_id < 0)
+ if (opts->audio_id < 0)
*(char **) arg = strdup(MSGTR_Disabled);
else {
char lang[40] = MSGTR_Unknown;
@@ -818,7 +819,7 @@ static int mp_property_audio(m_option_t * prop, int action, void *arg,
av_strlcpy(lang, sh->lang, 40);
#ifdef USE_DVDREAD
else if (mpctx->stream->type == STREAMTYPE_DVD) {
- int code = dvd_lang_from_aid(mpctx->stream, audio_id);
+ int code = dvd_lang_from_aid(mpctx->stream, opts->audio_id);
if (code) {
lang[0] = code >> 8;
lang[1] = code;
@@ -829,10 +830,10 @@ static int mp_property_audio(m_option_t * prop, int action, void *arg,
#ifdef USE_DVDNAV
else if (mpctx->stream->type == STREAMTYPE_DVDNAV)
- dvdnav_lang_from_aid(mpctx->stream, audio_id, lang);
+ dvdnav_lang_from_aid(mpctx->stream, opts->audio_id, lang);
#endif
*(char **) arg = malloc(64);
- snprintf(*(char **) arg, 64, "(%d) %s", audio_id, lang);
+ snprintf(*(char **) arg, 64, "(%d) %s", opts->audio_id, lang);
}
return M_PROPERTY_OK;
@@ -843,12 +844,12 @@ static int mp_property_audio(m_option_t * prop, int action, void *arg,
else
tmp = -1;
current_id = mpctx->demuxer->audio->id;
- audio_id = demuxer_switch_audio(mpctx->demuxer, tmp);
- if (audio_id == -2
- || (audio_id > -1
+ opts->audio_id = demuxer_switch_audio(mpctx->demuxer, tmp);
+ if (opts->audio_id == -2
+ || (opts->audio_id > -1
&& mpctx->demuxer->audio->id != current_id && current_id != -2))
uninit_player(mpctx, INITIALIZED_AO | INITIALIZED_ACODEC);
- if (audio_id > -1 && mpctx->demuxer->audio->id != current_id) {
+ if (opts->audio_id > -1 && mpctx->demuxer->audio->id != current_id) {
sh_audio_t *sh2;
sh2 = mpctx->demuxer->a_streams[mpctx->demuxer->audio->id];
if (sh2) {
@@ -857,7 +858,7 @@ static int mp_property_audio(m_option_t * prop, int action, void *arg,
reinit_audio_chain(mpctx);
}
}
- mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_AUDIO_TRACK=%d\n", audio_id);
+ mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_AUDIO_TRACK=%d\n", opts->audio_id);
return M_PROPERTY_OK;
default:
return M_PROPERTY_NOT_IMPLEMENTED;
@@ -869,6 +870,7 @@ static int mp_property_audio(m_option_t * prop, int action, void *arg,
static int mp_property_video(m_option_t * prop, int action, void *arg,
MPContext * mpctx)
{
+ struct MPOpts *opts = &mpctx->opts;
int current_id = -1, tmp;
switch (action) {
@@ -877,7 +879,7 @@ static int mp_property_video(m_option_t * prop, int action, void *arg,
return M_PROPERTY_UNAVAILABLE;
if (!arg)
return M_PROPERTY_ERROR;
- *(int *) arg = video_id;
+ *(int *) arg = opts->video_id;
return M_PROPERTY_OK;
case M_PROPERTY_PRINT:
if (!mpctx->sh_video)
@@ -885,12 +887,12 @@ static int mp_property_video(m_option_t * prop, int action, void *arg,
if (!arg)
return M_PROPERTY_ERROR;
- if (video_id < 0)
+ if (opts->video_id < 0)
*(char **) arg = strdup(MSGTR_Disabled);
else {
char lang[40] = MSGTR_Unknown;
*(char **) arg = malloc(64);
- snprintf(*(char **) arg, 64, "(%d) %s", video_id, lang);
+ snprintf(*(char **) arg, 64, "(%d) %s", opts->video_id, lang);
}
return M_PROPERTY_OK;
@@ -901,13 +903,13 @@ static int mp_property_video(m_option_t * prop, int action, void *arg,
tmp = *((int *) arg);
else
tmp = -1;
- video_id = demuxer_switch_video(mpctx->demuxer, tmp);
- if (video_id == -2
- || (video_id > -1 && mpctx->demuxer->video->id != current_id
+ opts->video_id = demuxer_switch_video(mpctx->demuxer, tmp);
+ if (opts->video_id == -2
+ || (opts->video_id > -1 && mpctx->demuxer->video->id != current_id
&& current_id != -2))
uninit_player(mpctx, INITIALIZED_VCODEC |
- (mpctx->opts.fixed_vo && video_id != -2 ? 0 : INITIALIZED_VO));
- if (video_id > -1 && mpctx->demuxer->video->id != current_id) {
+ (mpctx->opts.fixed_vo && opts->video_id != -2 ? 0 : INITIALIZED_VO));
+ if (opts->video_id > -1 && mpctx->demuxer->video->id != current_id) {
sh_video_t *sh2;
sh2 = mpctx->demuxer->v_streams[mpctx->demuxer->video->id];
if (sh2) {
@@ -916,7 +918,7 @@ static int mp_property_video(m_option_t * prop, int action, void *arg,
reinit_video_chain(mpctx);
}
}
- mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_VIDEO_TRACK=%d\n", video_id);
+ mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_VIDEO_TRACK=%d\n", opts->video_id);
return M_PROPERTY_OK;
default:
diff --git a/defaultopts.c b/defaultopts.c
index d9d65747b5..029584c0c8 100644
--- a/defaultopts.c
+++ b/defaultopts.c
@@ -10,6 +10,8 @@ void set_default_mplayer_options(struct MPOpts *opts)
.fixed_vo = 0,
.loop_times = -1,
.user_correct_pts = -1,
+ .audio_id = -1,
+ .video_id = -1,
.playback_speed = 1.,
};
}
diff --git a/mencoder.c b/mencoder.c
index d47a1cded2..43784f98d2 100644
--- a/mencoder.c
+++ b/mencoder.c
@@ -112,8 +112,6 @@ float stream_cache_seek_min_percent=50.0;
#define cache_fill_status 0
#endif
-int audio_id=-1;
-int video_id=-1;
int dvdsub_id=-2;
int vobsub_id=-1;
char* audio_lang=NULL;
@@ -584,14 +582,14 @@ play_next_file:
#ifdef USE_DVDREAD
if(stream->type==STREAMTYPE_DVD){
- if(audio_lang && audio_id==-1) audio_id=dvd_aid_from_lang(stream,audio_lang);
+ if(audio_lang && opts.audio_id==-1) opts.audio_id=dvd_aid_from_lang(stream,audio_lang);
if(dvdsub_lang && dvdsub_id==-2) dvdsub_id=dvd_sid_from_lang(stream,dvdsub_lang);
}
#endif
#ifdef USE_DVDNAV
if(stream->type==STREAMTYPE_DVDNAV){
- if(audio_lang && audio_id==-1) audio_id=dvdnav_aid_from_lang(stream,audio_lang);
+ if(audio_lang && opts.audio_id==-1) opts.audio_id=dvdnav_aid_from_lang(stream,audio_lang);
if(dvdsub_lang && dvdsub_id==-2) dvdsub_id=dvdnav_sid_from_lang(stream,dvdsub_lang);
}
#endif
@@ -600,17 +598,17 @@ if(stream->type==STREAMTYPE_DVDNAV){
if(stream_cache_size>0) stream_enable_cache(stream,stream_cache_size*1024,0,0);
- if(demuxer2) audio_id=-2; /* do NOT read audio packets... */
+ if(demuxer2) opts.audio_id=-2; /* do NOT read audio packets... */
- //demuxer=demux_open(stream,file_format,video_id,audio_id,dvdsub_id);
- demuxer=demux_open(&opts, stream,file_format,audio_id,video_id,dvdsub_id,filename);
+ //demuxer=demux_open(stream,file_format,opts.video_id,opts.audio_id,dvdsub_id);
+ demuxer=demux_open(&opts, stream,file_format,opts.audio_id,opts.video_id,dvdsub_id,filename);
if(!demuxer){
mp_msg(MSGT_DEMUXER, MSGL_FATAL, MSGTR_FormatNotRecognized);
mp_msg(MSGT_DEMUXER, MSGL_FATAL, MSGTR_CannotOpenDemuxer);
mencoder_exit(1,NULL);
}
- select_audio(demuxer, audio_id, audio_lang);
+ select_audio(demuxer, opts.audio_id, audio_lang);
if (dvdsub_id < 0 && dvdsub_lang)
dvdsub_id = demuxer_sub_track_by_lang(demuxer, dvdsub_lang);
@@ -662,7 +660,7 @@ sh_video=d_video->sh;
}
if(sh_audio && out_audio_codec<0){
- if(audio_id==-2)
+ if(opts.audio_id==-2)
mp_msg(MSGT_MENCODER,MSGL_ERR,MSGTR_DemuxerDoesntSupportNosound);
mp_msg(MSGT_MENCODER,MSGL_FATAL,MSGTR_NoAudioEncoderSelected);
mencoder_exit(1,NULL);
diff --git a/mplayer.c b/mplayer.c
index b1e3c8dbcc..5c98af2e92 100644
--- a/mplayer.c
+++ b/mplayer.c
@@ -243,9 +243,6 @@ extern char *demuxer_name; // override demuxer
extern char *audio_demuxer_name; // override audio demuxer
extern char *sub_demuxer_name; // override sub demuxer
-// streaming:
-int audio_id=-1;
-int video_id=-1;
int dvdsub_id=-2;
int vobsub_id=-1;
char* audio_lang=NULL;
@@ -3209,7 +3206,7 @@ if(stream_dump_type==5){
#ifdef USE_DVDREAD
if(mpctx->stream->type==STREAMTYPE_DVD){
current_module="dvd lang->id";
- if(audio_id==-1) audio_id=dvd_aid_from_lang(mpctx->stream,audio_lang);
+ if(opts->audio_id==-1) opts->audio_id=dvd_aid_from_lang(mpctx->stream,audio_lang);
if(dvdsub_lang && dvdsub_id==-2) dvdsub_id=-1;
if(dvdsub_lang && dvdsub_id==-1) dvdsub_id=dvd_sid_from_lang(mpctx->stream,dvdsub_lang);
// setup global sub numbering
@@ -3222,7 +3219,7 @@ if(mpctx->stream->type==STREAMTYPE_DVD){
#ifdef USE_DVDNAV
if(mpctx->stream->type==STREAMTYPE_DVDNAV){
current_module="dvdnav lang->id";
- if(audio_id==-1) audio_id=dvdnav_aid_from_lang(mpctx->stream,audio_lang);
+ if(opts->audio_id==-1) opts->audio_id=dvdnav_aid_from_lang(mpctx->stream,audio_lang);
if(dvdsub_lang && dvdsub_id==-2) dvdsub_id=-1;
if(dvdsub_lang && dvdsub_id==-1) dvdsub_id=dvdnav_sid_from_lang(mpctx->stream,dvdsub_lang);
// setup global sub numbering
@@ -3245,7 +3242,7 @@ if(stream_cache_size>0){
//============ Open DEMUXERS --- DETECT file type =======================
current_module="demux_open";
-mpctx->demuxer=demux_open(opts, mpctx->stream,mpctx->file_format,audio_id,video_id,dvdsub_id,filename);
+mpctx->demuxer=demux_open(opts, mpctx->stream,mpctx->file_format,opts->audio_id,opts->video_id,dvdsub_id,filename);
// HACK to get MOV Reference Files working
@@ -3350,7 +3347,7 @@ mpctx->d_video=mpctx->demuxer->video;
mpctx->d_sub=mpctx->demuxer->sub;
// select audio stream
-select_audio(mpctx->demuxer, audio_id, audio_lang);
+select_audio(mpctx->demuxer, opts->audio_id, audio_lang);
// DUMP STREAMS:
if((stream_dump_type)&&(stream_dump_type<4)){
diff --git a/mplayer.h b/mplayer.h
index e7af51c260..1b4bd62fc1 100644
--- a/mplayer.h
+++ b/mplayer.h
@@ -44,8 +44,6 @@ extern int frame_dropping;
extern int auto_quality;
-extern int audio_id;
-extern int video_id;
extern int dvdsub_id;
extern int vobsub_id;
diff --git a/options.h b/options.h
index 8078b3bb60..81617e27fb 100644
--- a/options.h
+++ b/options.h
@@ -12,6 +12,8 @@ typedef struct MPOpts {
int correct_pts;
int loop_times;
int user_correct_pts;
+ int audio_id;
+ int video_id;
float playback_speed;
} MPOpts;
diff --git a/stream/asf_mmst_streaming.c b/stream/asf_mmst_streaming.c
index 31536a9dae..a0b4295102 100644
--- a/stream/asf_mmst_streaming.c
+++ b/stream/asf_mmst_streaming.c
@@ -35,7 +35,7 @@
#include <inttypes.h>
#include "config.h"
-
+#include "options.h"
#include "mp_msg.h"
#include "help_mp.h"
@@ -648,6 +648,7 @@ int asf_mmst_streaming_start(stream_t *stream)
memset (data, 0, 40);
+ int audio_id = stream->opts->audio_id;
if (audio_id > 0) {
data[2] = 0xFF;
data[3] = 0xFF;
diff --git a/stream/asf_streaming.c b/stream/asf_streaming.c
index 448f41064d..1082ec374a 100644
--- a/stream/asf_streaming.c
+++ b/stream/asf_streaming.c
@@ -8,6 +8,7 @@
#include "config.h"
#include "mp_msg.h"
#include "help_mp.h"
+#include "options.h"
#ifndef HAVE_WINSOCK2
#define closesocket close
@@ -146,9 +147,6 @@ printf("0x%02X\n", stream_chunck->type );
return stream_chunck->size+4;
}
-extern int audio_id;
-extern int video_id;
-
static void close_s(stream_t *stream) {
close(stream->fd);
stream->fd=-1;
@@ -364,24 +362,24 @@ static int asf_streaming_parse_header(int fd, streaming_ctrl_t* streaming_ctrl)
return -1;
}
- if (audio_id > 0)
+ if (*streaming_ctrl->audio_id_ptr > 0)
// a audio stream was forced
- asf_ctrl->audio_id = audio_id;
+ asf_ctrl->audio_id = *streaming_ctrl->audio_id_ptr;
else if (a_idx >= 0)
asf_ctrl->audio_id = asf_ctrl->audio_streams[a_idx];
else if (asf_ctrl->n_audio) {
mp_msg(MSGT_NETWORK, MSGL_WARN, MSGTR_MPDEMUX_ASF_Bandwidth2SmallDeselectedAudio);
- audio_id = -2;
+ *streaming_ctrl->audio_id_ptr = -2;
}
- if (video_id > 0)
+ if (*streaming_ctrl->video_id_ptr > 0)
// a video stream was forced
- asf_ctrl->video_id = video_id;
+ asf_ctrl->video_id = *streaming_ctrl->video_id_ptr;
else if (v_idx >= 0)
asf_ctrl->video_id = asf_ctrl->video_streams[v_idx];
else if (asf_ctrl->n_video) {
mp_msg(MSGT_NETWORK, MSGL_WARN, MSGTR_MPDEMUX_ASF_Bandwidth2SmallDeselectedVideo);
- video_id = -2;
+ *streaming_ctrl->video_id_ptr = -2;
}
return 1;
@@ -817,6 +815,8 @@ static int open_s(stream_t *stream,int mode, void* opts, int* file_format) {
if( stream->streaming_ctrl==NULL ) {
return STREAM_ERROR;
}
+ stream->streaming_ctrl->audio_id_ptr = &stream->opts->audio_id;
+ stream->streaming_ctrl->video_id_ptr = &stream->opts->video_id;
stream->streaming_ctrl->bandwidth = network_bandwidth;
url = url_new(stream->url);
stream->streaming_ctrl->url = check4proxies(url);
diff --git a/stream/network.h b/stream/network.h
index 6aa0457fb2..2d3b96166e 100644
--- a/stream/network.h
+++ b/stream/network.h
@@ -46,6 +46,9 @@ typedef struct streaming_control {
int (*streaming_read)( int fd, char *buffer, int buffer_size, struct streaming_control *stream_ctrl );
int (*streaming_seek)( int fd, off_t pos, struct streaming_control *stream_ctrl );
void *data;
+ // hacks for asf
+ int *audio_id_ptr;
+ int *video_id_ptr;
} streaming_ctrl_t;
//int streaming_start( stream_t *stream, int *demuxer_type, URL_t *url );