diff options
author | rtognimp <rtognimp@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2005-08-05 19:57:47 +0000 |
---|---|---|
committer | rtognimp <rtognimp@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2005-08-05 19:57:47 +0000 |
commit | cd68e1618b17b525bd49757b2f5e245a6cb1a495 (patch) | |
tree | c67656ff189654b818ade76a8f5bd0b7d1bf7f91 /libmpdemux/demux_film.c | |
parent | adfe956dc385d6588eb2ab74828f9a905821adf4 (diff) | |
download | mpv-cd68e1618b17b525bd49757b2f5e245a6cb1a495.tar.bz2 mpv-cd68e1618b17b525bd49757b2f5e245a6cb1a495.tar.xz |
Demuxer modularization
Demuxer selection by name with -demuxer command (bakward compatible)
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@16176 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux/demux_film.c')
-rw-r--r-- | libmpdemux/demux_film.c | 36 |
1 files changed, 32 insertions, 4 deletions
diff --git a/libmpdemux/demux_film.c b/libmpdemux/demux_film.c index 4c19448785..7d42055d37 100644 --- a/libmpdemux/demux_film.c +++ b/libmpdemux/demux_film.c @@ -46,7 +46,7 @@ typedef struct _film_data_t unsigned int film_version; } film_data_t; -void demux_seek_film(demuxer_t *demuxer, float rel_seek_secs, int flags) +static void demux_seek_film(demuxer_t *demuxer, float rel_seek_secs, int flags) { film_data_t *film_data = (film_data_t *)demuxer->priv; int new_current_chunk=(flags&1)?0:film_data->current_chunk; @@ -83,7 +83,7 @@ printf (" (flags = %X) actual new chunk = %d (syncinfo1 = %08X)\n", // return value: // 0 = EOF or no stream found // 1 = successfully read a packet -int demux_film_fill_buffer(demuxer_t *demuxer) +static int demux_film_fill_buffer(demuxer_t *demuxer, demux_stream_t *ds) { int i; unsigned char byte_swap; @@ -206,7 +206,7 @@ int demux_film_fill_buffer(demuxer_t *demuxer) return 1; } -demuxer_t* demux_open_film(demuxer_t* demuxer) +static demuxer_t* demux_open_film(demuxer_t* demuxer) { sh_video_t *sh_video = NULL; sh_audio_t *sh_audio = NULL; @@ -436,7 +436,7 @@ demuxer_t* demux_open_film(demuxer_t* demuxer) return demuxer; } -void demux_close_film(demuxer_t* demuxer) { +static void demux_close_film(demuxer_t* demuxer) { film_data_t *film_data = demuxer->priv; if(!film_data) @@ -446,3 +446,31 @@ void demux_close_film(demuxer_t* demuxer) { free(film_data); } + +static int film_check_file(demuxer_t* demuxer) +{ + int signature=stream_read_fourcc(demuxer->stream); + + // check for the FILM file magic number + if(signature==mmioFOURCC('F', 'I', 'L', 'M')) + return DEMUXER_TYPE_FILM; + + return 0; +} + + +demuxer_desc_t demuxer_desc_film = { + "FILM/CPK demuxer for Sega Saturn CD-ROM games", + "film", + "FILM", + "Mike Melanson", + "", + DEMUXER_TYPE_FILM, + 0, // unsafe autodetect (short signature) + film_check_file, + demux_film_fill_buffer, + demux_open_film, + demux_close_film, + demux_seek_film, + NULL +}; |