summaryrefslogtreecommitdiffstats
path: root/stream
diff options
context:
space:
mode:
authorUoti Urpala <uau@symbol.nonexistent.invalid>2008-04-23 06:35:36 +0300
committerUoti Urpala <uau@symbol.nonexistent.invalid>2008-04-23 13:48:38 +0300
commitf518cf7ea99e9282508f551ecb43892f6aabcbc4 (patch)
tree76c85c7cdbb4d1e10679faf86c4bf8336598d6bc /stream
parent9e7dfe3fa34ca05fb63cd34369f7c847b777516d (diff)
downloadmpv-f518cf7ea99e9282508f551ecb43892f6aabcbc4.tar.bz2
mpv-f518cf7ea99e9282508f551ecb43892f6aabcbc4.tar.xz
Add option pointer to stream struct (at least temporarily)
The stream code does not access many option variables directly, but it does access some such as audio_id and network_bandwidth (and does that without including proper headers for them). Add option pointer to the stream struct to allow access to those variables. Remove the unused (always NULL) and clumsy-looking char** options parameter in the open_stream call and replace it with the option pointer. The parameter is currently only set in the main open_stream() call in MPlayer.c and not in any other locations that can open a stream. In the long term it might be better to pass a more limited set of values somehow, but this should do for now.
Diffstat (limited to 'stream')
-rw-r--r--stream/open.c3
-rw-r--r--stream/stream.c26
-rw-r--r--stream/stream.h8
3 files changed, 18 insertions, 19 deletions
diff --git a/stream/open.c b/stream/open.c
index 0ec0222c32..dad7c49db7 100644
--- a/stream/open.c
+++ b/stream/open.c
@@ -30,7 +30,8 @@ int dvd_title=0;
// Open a new stream (stdin/file/vcd/url)
-stream_t* open_stream(char* filename,char** options, int* file_format){
+stream_t* open_stream(char* filename, struct MPOpts *options, int* file_format)
+{
// Check if playlist or unknown
if (*file_format != DEMUXER_TYPE_PLAYLIST){
*file_format=DEMUXER_TYPE_UNKNOWN;
diff --git a/stream/stream.c b/stream/stream.c
index f9ce23cfb8..ded692eca0 100644
--- a/stream/stream.c
+++ b/stream/stream.c
@@ -121,9 +121,11 @@ static const stream_info_t* const auto_open_streams[] = {
NULL
};
-static stream_t* open_stream_plugin(const stream_info_t* sinfo,char* filename,int mode,
- char** options, int* file_format, int* ret,
- char** redirected_url) {
+static stream_t *open_stream_plugin(const stream_info_t *sinfo, char *filename,
+ int mode, struct MPOpts *options,
+ int *file_format, int *ret,
+ char **redirected_url)
+{
void* arg = NULL;
stream_t* s;
m_struct_t* desc = (m_struct_t*)sinfo->opts;
@@ -140,18 +142,9 @@ static stream_t* open_stream_plugin(const stream_info_t* sinfo,char* filename,in
return NULL;
}
}
- if(options) {
- int i;
- for(i = 0 ; options[i] != NULL ; i += 2) {
- mp_msg(MSGT_OPEN,MSGL_DBG2, "Set stream arg %s=%s\n",
- options[i],options[i+1]);
- if(!m_struct_set(desc,arg,options[i],options[i+1]))
- mp_msg(MSGT_OPEN,MSGL_WARN, "Failed to set stream option %s=%s\n",
- options[i],options[i+1]);
- }
- }
}
s = new_stream(-2,-2);
+ s->opts = options;
s->url=strdup(filename);
s->flags |= mode;
*ret = sinfo->open(s,mode,arg,file_format);
@@ -188,7 +181,9 @@ static stream_t* open_stream_plugin(const stream_info_t* sinfo,char* filename,in
}
-stream_t* open_stream_full(char* filename,int mode, char** options, int* file_format) {
+stream_t *open_stream_full(char *filename,int mode, struct MPOpts *options,
+ int* file_format)
+{
int i,j,l,r;
const stream_info_t* sinfo;
stream_t* s;
@@ -230,7 +225,8 @@ stream_t* open_stream_full(char* filename,int mode, char** options, int* file_fo
return NULL;
}
-stream_t* open_output_stream(char* filename,char** options) {
+stream_t *open_output_stream(char *filename, struct MPOpts *options)
+{
int file_format; //unused
if(!filename) {
mp_msg(MSGT_OPEN,MSGL_ERR,"open_output_stream(), NULL filename, report this bug\n");
diff --git a/stream/stream.h b/stream/stream.h
index e53d0f971b..f7c8c018e7 100644
--- a/stream/stream.h
+++ b/stream/stream.h
@@ -112,6 +112,7 @@ typedef struct stream_st {
void* cache_data;
void* priv; // used for DVD, TV, RTSP etc
char* url; // strdup() of filename/url
+ struct MPOpts *opts;
#ifdef MPLAYER_NETWORK
streaming_ctrl_t *streaming_ctrl;
#endif
@@ -288,14 +289,15 @@ inline static int stream_skip(stream_t *s,off_t len){
return 1;
}
+struct MPOpts;
void stream_reset(stream_t *s);
int stream_control(stream_t *s, int cmd, void *arg);
stream_t* new_stream(int fd,int type);
void free_stream(stream_t *s);
stream_t* new_memory_stream(unsigned char* data,int len);
-stream_t* open_stream(char* filename,char** options,int* file_format);
-stream_t* open_stream_full(char* filename,int mode, char** options, int* file_format);
-stream_t* open_output_stream(char* filename,char** options);
+stream_t* open_stream(char* filename, struct MPOpts *options,int* file_format);
+stream_t* open_stream_full(char* filename,int mode, struct MPOpts *options, int* file_format);
+stream_t* open_output_stream(char* filename,struct MPOpts *options);
/// Set the callback to be used by libstream to check for user
/// interruption during long blocking operations (cache filling, etc).
void stream_set_interrupt_callback(int (*cb)(int));