diff options
Diffstat (limited to 'demux/demux.h')
-rw-r--r-- | demux/demux.h | 96 |
1 files changed, 3 insertions, 93 deletions
diff --git a/demux/demux.h b/demux/demux.h index 20e6ba7a66..aa36d2f224 100644 --- a/demux/demux.h +++ b/demux/demux.h @@ -32,42 +32,17 @@ struct MPOpts; -#if (__GNUC__ >= 3) -#define likely(x) __builtin_expect((x) != 0, 1) -#define unlikely(x) __builtin_expect((x) != 0, 0) -#else -#define likely(x) (x) -#define unlikely(x) (x) -#endif - #define MAX_PACKS 4096 #define MAX_PACK_BYTES 0x8000000 // 128 MiB enum demuxer_type { DEMUXER_TYPE_UNKNOWN = 0, - DEMUXER_TYPE_MPEG_PS, - DEMUXER_TYPE_AVI, - DEMUXER_TYPE_AVI_NI, - DEMUXER_TYPE_AVI_NINI, - DEMUXER_TYPE_ASF, DEMUXER_TYPE_TV, - DEMUXER_TYPE_Y4M, DEMUXER_TYPE_MF, DEMUXER_TYPE_RAWAUDIO, DEMUXER_TYPE_RAWVIDEO, - DEMUXER_TYPE_MPEG_ES, - DEMUXER_TYPE_MPEG4_ES, - DEMUXER_TYPE_H264_ES, - DEMUXER_TYPE_MPEG_PES, - DEMUXER_TYPE_MPEG_GXF, - DEMUXER_TYPE_GIF, - DEMUXER_TYPE_MPEG_TS, DEMUXER_TYPE_MATROSKA, DEMUXER_TYPE_LAVF, - DEMUXER_TYPE_NSV, - DEMUXER_TYPE_AVS, - DEMUXER_TYPE_AAC, - DEMUXER_TYPE_MPC, DEMUXER_TYPE_MNG, DEMUXER_TYPE_EDL, DEMUXER_TYPE_CUE, @@ -132,27 +107,12 @@ typedef struct demux_stream { demux_packet_t *first; // read to current buffer from here demux_packet_t *last; // append new packets from input stream to here demux_packet_t *current; // needed for refcounting of the buffer - int id; // stream ID (for multiple audio/video streams) struct demuxer *demuxer; // parent demuxer structure (stream handler) -// ---- asf ----- - struct demux_packet *asf_packet; // read asf fragments here - int asf_seq; // ---- stream header ---- - void *sh; // points to sh_audio or sh_video + struct sh_stream *gsh; } demux_stream_t; -typedef struct demuxer_info { - char *name; - char *author; - char *encoder; - char *comments; - char *copyright; -} demuxer_info_t; - #define MAX_SH_STREAMS 256 -#define MAX_A_STREAMS MAX_SH_STREAMS -#define MAX_V_STREAMS MAX_SH_STREAMS -#define MAX_S_STREAMS MAX_SH_STREAMS struct demuxer; @@ -256,11 +216,6 @@ typedef struct demuxer { struct demux_stream *video; // video buffer/demuxer struct demux_stream *sub; // dvd subtitle buffer/demuxer - // stream headers: - struct sh_audio *a_streams[MAX_SH_STREAMS]; - struct sh_video *v_streams[MAX_SH_STREAMS]; - struct sh_sub *s_streams[MAX_SH_STREAMS]; - struct sh_stream **streams; int num_streams; @@ -300,15 +255,6 @@ struct demux_packet *demux_copy_packet(struct demux_packet *dp); #define SIZE_MAX ((size_t)-1) #endif -static inline void *realloc_struct(void *ptr, size_t nmemb, size_t size) -{ - if (nmemb > SIZE_MAX / size) { - free(ptr); - return NULL; - } - return realloc(ptr, nmemb * size); -} - void free_demuxer(struct demuxer *demuxer); int demuxer_add_packet(demuxer_t *demuxer, struct sh_stream *stream, @@ -320,27 +266,11 @@ void ds_read_packet(struct demux_stream *ds, struct stream *stream, int len, int demux_fill_buffer(struct demuxer *demux, struct demux_stream *ds); int ds_fill_buffer(struct demux_stream *ds); -static inline int64_t ds_tell(struct demux_stream *ds) -{ - return (ds->dpos - ds->buffer_size) + ds->buffer_pos; -} - static inline int ds_tell_pts(struct demux_stream *ds) { return (ds->pts_bytes - ds->buffer_size) + ds->buffer_pos; } -int demux_read_data(struct demux_stream *ds, unsigned char *mem, int len); -int demux_pattern_3(struct demux_stream *ds, unsigned char *mem, int maxlen, - int *read, uint32_t pattern); - -#define demux_peekc(ds) ( \ - (likely(ds->buffer_pos<ds->buffer_size)) ? ds->buffer[ds->buffer_pos] \ - : ((unlikely(!ds_fill_buffer(ds))) ? (-1) : ds->buffer[ds->buffer_pos])) -#define demux_getc(ds) ( \ - (likely(ds->buffer_pos<ds->buffer_size)) ? ds->buffer[ds->buffer_pos++] \ - : ((unlikely(!ds_fill_buffer(ds))) ? (-1) : ds->buffer[ds->buffer_pos++])) - void ds_free_packs(struct demux_stream *ds); int ds_get_packet(struct demux_stream *ds, unsigned char **start); int ds_get_packet_pts(struct demux_stream *ds, unsigned char **start, @@ -348,39 +278,19 @@ int ds_get_packet_pts(struct demux_stream *ds, unsigned char **start, struct demux_packet *ds_get_packet_sub(demux_stream_t *ds); struct demux_packet *ds_get_packet2(struct demux_stream *ds, bool repeat_last); double ds_get_next_pts(struct demux_stream *ds); -int ds_parse(struct demux_stream *sh, uint8_t **buffer, int *len, double pts, - int64_t pos); -void ds_clear_parser(struct demux_stream *sh); - -static inline int avi_stream_id(unsigned int id) -{ - unsigned char a, b; - a = id - '0'; - b = (id >> 8) - '0'; - if (a>9 || b>9) - return 100; // invalid ID - return a * 10 + b; -} struct demuxer *demux_open(struct MPOpts *opts, struct stream *stream, - int file_format, int aid, int vid, int sid, - char *filename); + int file_format, char *filename); struct demuxer *demux_open_withparams(struct MPOpts *opts, struct stream *stream, int file_format, - char *force_format, int audio_id, - int video_id, int sub_id, char *filename, + char *force_format, char *filename, struct demuxer_params *params); void demux_flush(struct demuxer *demuxer); int demux_seek(struct demuxer *demuxer, float rel_seek_secs, float audio_delay, int flags); -// AVI demuxer params: -extern int index_mode; // -1=untouched 0=don't use index 1=use (generate) index -extern int force_ni; -extern int pts_from_bps; - int demux_info_add(struct demuxer *demuxer, const char *opt, const char *param); int demux_info_add_bstr(struct demuxer *demuxer, struct bstr opt, struct bstr param); |