diff options
Diffstat (limited to 'stream/stream.h')
-rw-r--r-- | stream/stream.h | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/stream/stream.h b/stream/stream.h index 1ff94a331c..40ea321bc4 100644 --- a/stream/stream.h +++ b/stream/stream.h @@ -112,6 +112,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; struct stream; @@ -157,6 +160,8 @@ typedef struct stream { void* cache_data; void* priv; // used for DVD, TV, RTSP etc char* url; // strdup() of filename/url + char *lavf_type; // name of expected demuxer type for lavf + struct MPOpts *opts; #ifdef CONFIG_NETWORK streaming_ctrl_t *streaming_ctrl; #endif @@ -284,12 +289,11 @@ inline static int stream_seek(stream_t *s,off_t pos){ mp_dbg(MSGT_DEMUX, MSGL_DBG3, "seek to 0x%qX\n",(long long)pos); - if(s->eof) - return 0; if(pos<s->pos){ off_t x=pos-(s->pos-s->buf_len); if(x>=0){ s->buf_pos=x; + s->eof = 0; // putchar('*');fflush(stdout); return 1; } @@ -316,24 +320,27 @@ 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(const char* filename,char** options,int* file_format); -stream_t* open_stream_full(const char* filename,int mode, char** options, int* file_format); -stream_t* open_output_stream(const char* filename,char** options); +stream_t *open_stream(const char *filename, struct MPOpts *options, + int *file_format); +stream_t *open_stream_full(const char *filename,int mode, + struct MPOpts *options, int *file_format); +stream_t *open_output_stream(const 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)); +struct input_ctx; +void stream_set_interrupt_callback(int (*cb)(struct input_ctx*, int), + struct input_ctx *ctx); /// Call the interrupt checking callback if there is one and /// wait for time milliseconds int stream_check_interrupt(int time); extern int dvd_title; -extern int dvd_chapter; -extern int dvd_last_chapter; extern int dvd_angle; extern char * audio_stream; |