diff options
author | Uoti Urpala <uau@glyph.nonexistent.invalid> | 2010-03-10 00:00:06 +0200 |
---|---|---|
committer | Uoti Urpala <uau@glyph.nonexistent.invalid> | 2010-03-10 00:00:06 +0200 |
commit | c37f09693d0edb632c80f8f38ecdb2faf3547f7f (patch) | |
tree | 44df07eacb522a97bbecd7a3a0f93e8d6a933003 /libmpdemux | |
parent | 22a06c4ae5672c1dd629918d0a279b8af24e35c3 (diff) | |
parent | 2aafb808284d74edab6e5320e1114f5c74d5881e (diff) | |
download | mpv-c37f09693d0edb632c80f8f38ecdb2faf3547f7f.tar.bz2 mpv-c37f09693d0edb632c80f8f38ecdb2faf3547f7f.tar.xz |
Merge svn changes up to r30643
Diffstat (limited to 'libmpdemux')
35 files changed, 303 insertions, 121 deletions
diff --git a/libmpdemux/aac_hdr.c b/libmpdemux/aac_hdr.c index 1866288349..aed06f0e28 100644 --- a/libmpdemux/aac_hdr.c +++ b/libmpdemux/aac_hdr.c @@ -19,6 +19,7 @@ */ #include <stdint.h> +#include "aac_hdr.h" /// \param srate (out) sample rate /// \param num (out) number of audio frames in this ADTS frame diff --git a/libmpdemux/aac_hdr.h b/libmpdemux/aac_hdr.h new file mode 100644 index 0000000000..be56368925 --- /dev/null +++ b/libmpdemux/aac_hdr.h @@ -0,0 +1,26 @@ +/* + * This file is part of MPlayer. + * + * MPlayer is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * MPlayer is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with MPlayer; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#ifndef MPLAYER_AAC_HDR_H +#define MPLAYER_AAC_HDR_H + +#include <stdint.h> + +int aac_parse_frame(uint8_t *buf, int *srate, int *num); + +#endif /* MPLAYER_AAC_HDR_H */ diff --git a/libmpdemux/asfheader.c b/libmpdemux/asfheader.c index 95d5f18e7f..8096ef1240 100644 --- a/libmpdemux/asfheader.c +++ b/libmpdemux/asfheader.c @@ -29,12 +29,13 @@ #include "help_mp.h" #include "stream/stream.h" +#include "aviprint.h" #include "demuxer.h" #include "stheader.h" #include "asf.h" - #include "asfguid.h" +#include "asfheader.h" typedef struct { // must be 0 for metadata record, might be non-zero for metadata lib record @@ -135,10 +136,6 @@ int asf_check_header(demuxer_t *demuxer){ return DEMUXER_TYPE_ASF; } -void print_wave_header(WAVEFORMATEX *h, int verbose_level); -void print_video_header(BITMAPINFOHEADER *h, int verbose_level); - - static int get_ext_stream_properties(char *buf, int buf_len, int stream_num, struct asf_priv* asf, int is_video) { int pos=0; diff --git a/libmpdemux/asfheader.h b/libmpdemux/asfheader.h new file mode 100644 index 0000000000..9c239f7987 --- /dev/null +++ b/libmpdemux/asfheader.h @@ -0,0 +1,28 @@ +/* + * This file is part of MPlayer. + * + * MPlayer is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * MPlayer is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with MPlayer; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#ifndef MPLAYER_ASFHEADER_H +#define MPLAYER_ASFHEADER_H + +#include "asf.h" +#include "demuxer.h" + +int asf_check_header(demuxer_t *demuxer); +int read_asf_header(demuxer_t *demuxer, struct asf_priv *asf); + +#endif /* MPLAYER_ASFHEADER_H */ diff --git a/libmpdemux/aviheader.c b/libmpdemux/aviheader.c index 6cfd668051..a3dd2ebc98 100644 --- a/libmpdemux/aviheader.c +++ b/libmpdemux/aviheader.c @@ -28,22 +28,12 @@ #include "stream/stream.h" #include "demuxer.h" #include "stheader.h" - +#include "aviprint.h" #include "aviheader.h" #include "libavutil/common.h" static MainAVIHeader avih; -void print_avih(MainAVIHeader *h, int verbose_level); -void print_avih_flags(MainAVIHeader *h, int verbose_level); -void print_strh(AVIStreamHeader *h, int verbose_level); -void print_wave_header(WAVEFORMATEX *h, int verbose_level); -void print_video_header(BITMAPINFOHEADER *h, int verbose_level); -void print_index(AVIINDEXENTRY *idx,int idx_size, int verbose_level); -void print_avistdindex_chunk(avistdindex_chunk *h, int verbose_level); -void print_avisuperindex_chunk(avisuperindex_chunk *h, int verbose_level); -void print_vprp(VideoPropHeader *vprp, int verbose_level); - static int odml_get_vstream_id(int id, unsigned char res[]) { unsigned char *p = (unsigned char *)&id; @@ -59,7 +49,8 @@ static int odml_get_vstream_id(int id, unsigned char res[]) return 0; } -static int avi_idx_cmp(const void *elem1,const void *elem2) { +static int avi_idx_cmp(const void *elem1, const void *elem2) +{ register off_t a = AVI_IDX_OFFSET((AVIINDEXENTRY *)elem1); register off_t b = AVI_IDX_OFFSET((AVIINDEXENTRY *)elem2); return (a > b) - (b > a); diff --git a/libmpdemux/aviheader.h b/libmpdemux/aviheader.h index 4074f6bb03..6740c249ce 100644 --- a/libmpdemux/aviheader.h +++ b/libmpdemux/aviheader.h @@ -24,6 +24,7 @@ #include "config.h" /* get correct definition of HAVE_BIGENDIAN */ #include "libavutil/common.h" #include "mpbswap.h" +#include "demuxer.h" #ifndef mmioFOURCC #define mmioFOURCC( ch0, ch1, ch2, ch3 ) \ @@ -374,4 +375,6 @@ typedef struct { #define AVI_IDX_OFFSET(x) ((((uint64_t)(x)->dwFlags&0xffff0000)<<16)+(x)->dwChunkOffset) +void read_avi_header(demuxer_t *demuxer, int index_mode); + #endif /* MPLAYER_AVIHEADER_H */ diff --git a/libmpdemux/aviprint.c b/libmpdemux/aviprint.c index af90251424..dc992d5f97 100644 --- a/libmpdemux/aviprint.c +++ b/libmpdemux/aviprint.c @@ -29,6 +29,7 @@ #include "aviheader.h" #include "ms_hdr.h" +#include "aviprint.h" //#include "codec-cfg.h" //#include "stheader.h" diff --git a/libmpdemux/aviprint.h b/libmpdemux/aviprint.h new file mode 100644 index 0000000000..0f0f6c8e8d --- /dev/null +++ b/libmpdemux/aviprint.h @@ -0,0 +1,34 @@ +/* + * This file is part of MPlayer. + * + * MPlayer is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * MPlayer is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with MPlayer; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#ifndef MPLAYER_AVIPRINT_H +#define MPLAYER_AVIPRINT_H + +#include "ms_hdr.h" +#include "aviheader.h" + +void print_avih_flags(MainAVIHeader *h, int verbose_level); +void print_avih(MainAVIHeader *h, int verbose_level); +void print_strh(AVIStreamHeader *h, int verbose_level); +void print_wave_header(WAVEFORMATEX *h, int verbose_level); +void print_video_header(BITMAPINFOHEADER *h, int verbose_level); +void print_index(AVIINDEXENTRY *idx, int idx_size, int verbose_level); +void print_avistdindex_chunk(avistdindex_chunk *h, int verbose_level); +void print_avisuperindex_chunk(avisuperindex_chunk *h, int verbose_level); + +#endif /* MPLAYER_AVIPRINT_H */ diff --git a/libmpdemux/demux_aac.c b/libmpdemux/demux_aac.c index 2ebbb2995e..cfbedfc8c1 100644 --- a/libmpdemux/demux_aac.c +++ b/libmpdemux/demux_aac.c @@ -28,7 +28,7 @@ #include "demuxer.h" #include "parse_es.h" #include "stheader.h" - +#include "aac_hdr.h" #include "ms_hdr.h" typedef struct { @@ -39,12 +39,6 @@ typedef struct { int bitrate; /// bitrate computed as size/time } aac_priv_t; -/// \param srate (out) sample rate -/// \param num (out) number of audio frames in this ADTS frame -/// \return size of the ADTS frame in bytes -/// aac_parse_frames needs a buffer at least 8 bytes long -int aac_parse_frame(uint8_t *buf, int *srate, int *num); - static int demux_aac_init(demuxer_t *demuxer) { aac_priv_t *priv; diff --git a/libmpdemux/demux_asf.c b/libmpdemux/demux_asf.c index 4d7490e7f8..113b01e372 100644 --- a/libmpdemux/demux_asf.c +++ b/libmpdemux/demux_asf.c @@ -30,16 +30,12 @@ #include "stream/stream.h" #include "asf.h" +#include "asfheader.h" #include "demuxer.h" - +#include "libmpcodecs/dec_audio.h" #include "libvo/fastmemcpy.h" #include "ffmpeg_files/intreadwrite.h" -// defined at asfheader.c: - -int asf_check_header(demuxer_t *demuxer); -int read_asf_header(demuxer_t *demuxer,struct asf_priv* asf); - // based on asf file-format doc by Eugene [http://divx.euro.ru] /** @@ -550,8 +546,6 @@ static int demux_asf_fill_buffer(demuxer_t *demux, demux_stream_t *ds){ #include "stheader.h" -void skip_audio_frame(sh_audio_t *sh_audio); - static void demux_seek_asf(demuxer_t *demuxer,float rel_seek_secs,float audio_delay,int flags){ struct asf_priv* asf = demuxer->priv; demux_stream_t *d_audio=demuxer->audio; diff --git a/libmpdemux/demux_audio.c b/libmpdemux/demux_audio.c index 43ee3113ce..6c62e5fdc5 100644 --- a/libmpdemux/demux_audio.c +++ b/libmpdemux/demux_audio.c @@ -23,6 +23,7 @@ #include <stdlib.h> #include <stdio.h> #include "stream/stream.h" +#include "aviprint.h" #include "demuxer.h" #include "stheader.h" #include "genres.h" @@ -62,8 +63,6 @@ typedef struct mp3_hdr { struct mp3_hdr *next; } mp3_hdr_t; -void print_wave_header(WAVEFORMATEX *h, int verbose_level); - int hr_mp3_seek = 0; /** diff --git a/libmpdemux/demux_avi.c b/libmpdemux/demux_avi.c index e554606d14..a104be57bc 100644 --- a/libmpdemux/demux_avi.c +++ b/libmpdemux/demux_avi.c @@ -30,12 +30,9 @@ #include "stream/stream.h" #include "demuxer.h" #include "stheader.h" - +#include "demux_ogg.h" #include "aviheader.h" -demuxer_t* init_avi_with_ogg(demuxer_t* demuxer); -int demux_ogg_open(demuxer_t* demuxer); - extern const demuxer_desc_t demuxer_desc_avi_ni; extern const demuxer_desc_t demuxer_desc_avi_nini; @@ -43,7 +40,7 @@ extern const demuxer_desc_t demuxer_desc_avi_nini; int pts_from_bps=1; // Select ds from ID -static demux_stream_t* demux_avi_select_stream(demuxer_t *demux, +static demux_stream_t *demux_avi_select_stream(demuxer_t *demux, unsigned int id) { int stream_id=avi_stream_id(id); @@ -308,7 +305,8 @@ do{ // return value: // 0 = EOF or no stream found // 1 = successfully read a packet -static int demux_avi_fill_buffer_ni(demuxer_t *demux,demux_stream_t* ds){ +static int demux_avi_fill_buffer_ni(demuxer_t *demux, demux_stream_t *ds) +{ avi_priv_t *priv=demux->priv; unsigned int id=0; unsigned int len; @@ -376,7 +374,8 @@ do{ // return value: // 0 = EOF or no stream found // 1 = successfully read a packet -static int demux_avi_fill_buffer_nini(demuxer_t *demux,demux_stream_t* ds){ +static int demux_avi_fill_buffer_nini(demuxer_t *demux, demux_stream_t *ds) +{ avi_priv_t *priv=demux->priv; unsigned int id=0; unsigned int len; @@ -432,8 +431,6 @@ int index_mode=-1; // -1=untouched 0=don't use index 1=use (generate) index char *index_file_save = NULL, *index_file_load = NULL; int force_ni=0; // force non-interleaved AVI parsing -void read_avi_header(demuxer_t *demuxer,int index_mode); - static demuxer_t* demux_open_avi(demuxer_t* demuxer){ demux_stream_t *d_audio=demuxer->audio; demux_stream_t *d_video=demuxer->video; @@ -592,7 +589,9 @@ static demuxer_t* demux_open_avi(demuxer_t* demuxer){ } -static void demux_seek_avi(demuxer_t *demuxer,float rel_seek_secs,float audio_delay,int flags){ +static void demux_seek_avi(demuxer_t *demuxer, float rel_seek_secs, + float audio_delay, int flags) +{ avi_priv_t *priv=demuxer->priv; demux_stream_t *d_audio=demuxer->audio; demux_stream_t *d_video=demuxer->video; @@ -765,7 +764,8 @@ static void demux_seek_avi(demuxer_t *demuxer,float rel_seek_secs,float audio_de } -static void demux_close_avi(demuxer_t *demuxer) { +static void demux_close_avi(demuxer_t *demuxer) +{ avi_priv_t* priv=demuxer->priv; if(!priv) diff --git a/libmpdemux/demux_gif.c b/libmpdemux/demux_gif.c index a85963931a..f18c807626 100644 --- a/libmpdemux/demux_gif.c +++ b/libmpdemux/demux_gif.c @@ -47,7 +47,8 @@ typedef struct { #ifndef CONFIG_GIF_TVT_HACK // not supported by certain versions of the library -int my_read_gif(GifFileType *gif, uint8_t *buf, int len) { +static int my_read_gif(GifFileType *gif, uint8_t *buf, int len) +{ return stream_read(gif->UserData, buf, len); } #endif diff --git a/libmpdemux/demux_lavf.c b/libmpdemux/demux_lavf.c index ec8b4e7a77..8e9208b71c 100644 --- a/libmpdemux/demux_lavf.c +++ b/libmpdemux/demux_lavf.c @@ -31,6 +31,7 @@ #include "av_opts.h" #include "stream/stream.h" +#include "aviprint.h" #include "demuxer.h" #include "stheader.h" #include "m_option.h" @@ -79,9 +80,6 @@ typedef struct lavf_priv_t{ int cur_program; }lavf_priv_t; -void print_wave_header(WAVEFORMATEX *h, int verbose_level); -void print_video_header(BITMAPINFOHEADER *h, int verbose_level); - static int mp_read(void *opaque, uint8_t *buf, int size) { stream_t *stream = opaque; int ret; diff --git a/libmpdemux/demux_mkv.c b/libmpdemux/demux_mkv.c index 67e26a0730..24101d516e 100644 --- a/libmpdemux/demux_mkv.c +++ b/libmpdemux/demux_mkv.c @@ -36,6 +36,7 @@ #include "stheader.h" #include "ebml.h" #include "matroska.h" +#include "demux_real.h" #include "mp_msg.h" #include "help_mp.h" @@ -1886,10 +1887,6 @@ static void handle_subtitles(demuxer_t *demuxer, mkv_track_t *track, ds_add_packet(demuxer->sub, dp); } -double real_fix_timestamp(unsigned char *buf, unsigned int timestamp, - unsigned int format, int64_t *kf_base, int *kf_pts, - double *pts); - static void handle_realvideo(demuxer_t *demuxer, mkv_track_t *track, uint8_t *buffer, uint32_t size, int block_bref) { diff --git a/libmpdemux/demux_mov.c b/libmpdemux/demux_mov.c index 97eae374e9..eabff7d9f5 100644 --- a/libmpdemux/demux_mov.c +++ b/libmpdemux/demux_mov.c @@ -67,6 +67,7 @@ #include "libvo/sub.h" +#include "demux_mov.h" #include "qtpalette.h" #include "parse_mp4.h" // .MP4 specific stuff diff --git a/libmpdemux/demux_mov.h b/libmpdemux/demux_mov.h new file mode 100644 index 0000000000..8aa515c349 --- /dev/null +++ b/libmpdemux/demux_mov.h @@ -0,0 +1,24 @@ +/* + * This file is part of MPlayer. + * + * MPlayer is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * MPlayer is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with MPlayer; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#ifndef MPLAYER_DEMUX_MOV_H +#define MPLAYER_DEMUX_MOV_H + +unsigned int store_ughvlc(unsigned char *s, unsigned int v); + +#endif /* MPLAYER_DEMUX_MOV_H */ diff --git a/libmpdemux/demux_mpg.c b/libmpdemux/demux_mpg.c index 1e994afa41..227af229f5 100644 --- a/libmpdemux/demux_mpg.c +++ b/libmpdemux/demux_mpg.c @@ -815,7 +815,8 @@ static int demux_mpg_gxf_fill_buffer(demuxer_t *demux, demux_stream_t *ds) { return 1; } -static int demux_mpg_fill_buffer(demuxer_t *demux, demux_stream_t *ds){ +static int demux_mpg_fill_buffer(demuxer_t *demux, demux_stream_t *ds) +{ unsigned int head=0; int skipped=0; int max_packs=256; // 512kbyte @@ -824,11 +825,9 @@ int ret=0; // System stream do{ demux->filepos=stream_tell(demux->stream); -#if 1 //lame workaround: this is needed to show the progress bar when playing dvdnav:// //(ths poor guy doesn't know teh length of the stream at startup) demux->movi_end = demux->stream->end_pos; -#endif head=stream_read_dword(demux->stream); if((head&0xFFFFFF00)!=0x100){ // sync... @@ -902,7 +901,9 @@ do{ void skip_audio_frame(sh_audio_t *sh_audio); -static void demux_seek_mpg(demuxer_t *demuxer,float rel_seek_secs,float audio_delay, int flags){ +static void demux_seek_mpg(demuxer_t *demuxer, float rel_seek_secs, + float audio_delay, int flags) +{ demux_stream_t *d_audio=demuxer->audio; demux_stream_t *d_video=demuxer->video; sh_audio_t *sh_audio=d_audio->sh; @@ -1008,7 +1009,8 @@ static void demux_seek_mpg(demuxer_t *demuxer,float rel_seek_secs,float audio_de } } -static int demux_mpg_control(demuxer_t *demuxer,int cmd, void *arg){ +static int demux_mpg_control(demuxer_t *demuxer, int cmd, void *arg) +{ mpg_demuxer_t *mpg_d=(mpg_demuxer_t*)demuxer->priv; switch(cmd) { diff --git a/libmpdemux/demux_ogg.c b/libmpdemux/demux_ogg.c index 2bd6781cf2..e453f61ad4 100644 --- a/libmpdemux/demux_ogg.c +++ b/libmpdemux/demux_ogg.c @@ -32,6 +32,9 @@ #include "demuxer.h" #include "stheader.h" #include "ffmpeg_files/intreadwrite.h" +#include "aviprint.h" +#include "demux_mov.h" +#include "demux_ogg.h" #define FOURCC_VORBIS mmioFOURCC('v', 'r', 'b', 's') #define FOURCC_SPEEX mmioFOURCC('s', 'p', 'x', ' ') @@ -177,7 +180,8 @@ extern char *dvdsub_lang, *audio_lang; static subtitle ogg_sub; //FILE* subout; -static void demux_ogg_add_sub (ogg_stream_t* os,ogg_packet* pack) { +static void demux_ogg_add_sub(ogg_stream_t *os, ogg_packet *pack) +{ int lcv; char *packet = pack->packet; @@ -365,7 +369,32 @@ static int demux_ogg_check_lang(const char *clang, const char *langlist) return 0; } -static int demux_ogg_sub_reverse_id(demuxer_t *demuxer, int id); +/** \brief Change the current subtitle stream and return its ID. + + \param demuxer The demuxer whose subtitle stream will be changed. + \param new_num The number of the new subtitle track. The number must be + between 0 and ogg_d->n_text - 1. + + \returns The Ogg stream number ( = page serial number) of the newly selected + track. +*/ +static int demux_ogg_sub_id(demuxer_t *demuxer, int index) +{ + ogg_demuxer_t *ogg_d = demuxer->priv; + return (index < 0) ? index : (index >= ogg_d->n_text) ? -1 : ogg_d->text_ids[index]; +} + +/** \brief Translate the ogg track number into the subtitle number. + * \param demuxer The demuxer about whose subtitles we are inquiring. + * \param id The ogg track number of the subtitle track. + */ +static int demux_ogg_sub_reverse_id(demuxer_t *demuxer, int id) { + ogg_demuxer_t *ogg_d = demuxer->priv; + int i; + for (i = 0; i < ogg_d->n_text; i++) + if (ogg_d->text_ids[i] == id) return i; + return -1; +} /// Try to print out comments and also check for LANGUAGE= tag static void demux_ogg_check_comments(demuxer_t *d, ogg_stream_t *os, int id, vorbis_comment *vc) @@ -513,7 +542,8 @@ static int demux_ogg_add_packet(demux_stream_t* ds,ogg_stream_t* os,int id,ogg_p /// if -forceidx build a table of all syncpoints to make seeking easier /// otherwise try to get at least the final_granulepos -static void demux_ogg_scan_stream(demuxer_t* demuxer) { +static void demux_ogg_scan_stream(demuxer_t *demuxer) +{ ogg_demuxer_t* ogg_d = demuxer->priv; stream_t *s = demuxer->stream; ogg_sync_state* sync = &ogg_d->sync; @@ -635,40 +665,6 @@ static void demux_ogg_scan_stream(demuxer_t* demuxer) { } -void print_wave_header(WAVEFORMATEX *h, int verbose_level); -void print_video_header(BITMAPINFOHEADER *h, int verbose_level); - -/* defined in demux_mov.c */ -unsigned int store_ughvlc(unsigned char *s, unsigned int v); - -/** \brief Change the current subtitle stream and return its ID. - - \param demuxer The demuxer whose subtitle stream will be changed. - \param new_num The number of the new subtitle track. The number must be - between 0 and ogg_d->n_text - 1. - - \returns The Ogg stream number ( = page serial number) of the newly selected - track. -*/ -int demux_ogg_sub_id(demuxer_t *demuxer, int index) { - ogg_demuxer_t *ogg_d = demuxer->priv; - return (index < 0) ? index : (index >= ogg_d->n_text) ? -1 : ogg_d->text_ids[index]; -} - -/** \brief Translate the ogg track number into the subtitle number. - * \param demuxer The demuxer about whose subtitles we are inquiring. - * \param id The ogg track number of the subtitle track. - */ -static int demux_ogg_sub_reverse_id(demuxer_t *demuxer, int id) { - ogg_demuxer_t *ogg_d = demuxer->priv; - int i; - for (i = 0; i < ogg_d->n_text; i++) - if (ogg_d->text_ids[i] == id) return i; - return -1; -} - -static void demux_close_ogg(demuxer_t* demuxer); - static void fixup_vorbis_wf(sh_audio_t *sh, ogg_demuxer_t *od) { int i, offset; diff --git a/libmpdemux/demux_ogg.h b/libmpdemux/demux_ogg.h new file mode 100644 index 0000000000..0bdc30b910 --- /dev/null +++ b/libmpdemux/demux_ogg.h @@ -0,0 +1,27 @@ +/* + * This file is part of MPlayer. + * + * MPlayer is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * MPlayer is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with MPlayer; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#ifndef MPLAYER_DEMUX_OGG_H +#define MPLAYER_DEMUX_OGG_H + +#include "demuxer.h" + +int demux_ogg_open(demuxer_t *demuxer); +demuxer_t *init_avi_with_ogg(demuxer_t *demuxer); + +#endif /* MPLAYER_DEMUX_OGG_H */ diff --git a/libmpdemux/demux_real.c b/libmpdemux/demux_real.c index 8f3a46d56c..8171a1298e 100644 --- a/libmpdemux/demux_real.c +++ b/libmpdemux/demux_real.c @@ -45,8 +45,10 @@ #include "mpbswap.h" #include "stream/stream.h" +#include "aviprint.h" #include "demuxer.h" #include "stheader.h" +#include "demux_real.h" //#define mp_dbg(mod,lev, args... ) mp_msg_c((mod<<8)|lev, ## args ) @@ -495,7 +497,6 @@ double real_fix_timestamp(unsigned char *buf, unsigned int timestamp, unsigned i int pict_type; unsigned int orig_kf; -#if 1 if(format==mmioFOURCC('R','V','3','0') || format==mmioFOURCC('R','V','4','0')){ if(format==mmioFOURCC('R','V','3','0')){ SKIP_BITS(3); @@ -530,7 +531,6 @@ double real_fix_timestamp(unsigned char *buf, unsigned int timestamp, unsigned i } mp_msg(MSGT_DEMUX, MSGL_DBG2,"\nTS: %08X -> %08X (%04X) %d %02X %02X %02X %02X %5u\n",timestamp,kf,orig_kf,pict_type,s[0],s[1],s[2],s[3],pts?kf-(unsigned int)(*pts*1000.0):0); } -#endif v_pts=kf*0.001f; // if(pts && (v_pts<*pts || !kf)) v_pts=*pts+frametime; if(pts) *pts=v_pts; @@ -1090,8 +1090,6 @@ discard: return 0; } -void print_wave_header(WAVEFORMATEX *h, int verbose_level); - static demuxer_t* demux_open_real(demuxer_t* demuxer) { real_priv_t* priv = demuxer->priv; diff --git a/libmpdemux/demux_real.h b/libmpdemux/demux_real.h new file mode 100644 index 0000000000..9c58bbf89a --- /dev/null +++ b/libmpdemux/demux_real.h @@ -0,0 +1,28 @@ +/* + * This file is part of MPlayer. + * + * MPlayer is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later versio |