summaryrefslogtreecommitdiffstats
path: root/libmpdemux
diff options
context:
space:
mode:
authorUoti Urpala <uau@glyph.nonexistent.invalid>2010-03-10 00:00:06 +0200
committerUoti Urpala <uau@glyph.nonexistent.invalid>2010-03-10 00:00:06 +0200
commitc37f09693d0edb632c80f8f38ecdb2faf3547f7f (patch)
tree44df07eacb522a97bbecd7a3a0f93e8d6a933003 /libmpdemux
parent22a06c4ae5672c1dd629918d0a279b8af24e35c3 (diff)
parent2aafb808284d74edab6e5320e1114f5c74d5881e (diff)
downloadmpv-c37f09693d0edb632c80f8f38ecdb2faf3547f7f.tar.bz2
mpv-c37f09693d0edb632c80f8f38ecdb2faf3547f7f.tar.xz
Merge svn changes up to r30643
Diffstat (limited to 'libmpdemux')
-rw-r--r--libmpdemux/aac_hdr.c1
-rw-r--r--libmpdemux/aac_hdr.h26
-rw-r--r--libmpdemux/asfheader.c7
-rw-r--r--libmpdemux/asfheader.h28
-rw-r--r--libmpdemux/aviheader.c15
-rw-r--r--libmpdemux/aviheader.h3
-rw-r--r--libmpdemux/aviprint.c1
-rw-r--r--libmpdemux/aviprint.h34
-rw-r--r--libmpdemux/demux_aac.c8
-rw-r--r--libmpdemux/demux_asf.c10
-rw-r--r--libmpdemux/demux_audio.c3
-rw-r--r--libmpdemux/demux_avi.c22
-rw-r--r--libmpdemux/demux_gif.c3
-rw-r--r--libmpdemux/demux_lavf.c4
-rw-r--r--libmpdemux/demux_mkv.c5
-rw-r--r--libmpdemux/demux_mov.c1
-rw-r--r--libmpdemux/demux_mov.h24
-rw-r--r--libmpdemux/demux_mpg.c12
-rw-r--r--libmpdemux/demux_ogg.c70
-rw-r--r--libmpdemux/demux_ogg.h27
-rw-r--r--libmpdemux/demux_real.c6
-rw-r--r--libmpdemux/demux_real.h28
-rw-r--r--libmpdemux/demux_realaud.c5
-rw-r--r--libmpdemux/demux_ts.c3
-rw-r--r--libmpdemux/demux_ts.h26
-rw-r--r--libmpdemux/demux_ty.c2
-rw-r--r--libmpdemux/demux_ty_osd.c1
-rw-r--r--libmpdemux/demux_ty_osd.h25
-rw-r--r--libmpdemux/demuxer.h6
-rw-r--r--libmpdemux/mp3_hdr.c2
-rw-r--r--libmpdemux/mpeg_hdr.h2
-rw-r--r--libmpdemux/ms_hdr.h2
-rw-r--r--libmpdemux/muxer_mpeg.c6
-rw-r--r--libmpdemux/parse_mp4.c3
-rw-r--r--libmpdemux/video.c3
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 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_REAL_H
+#define MPLAYER_DEMUX_REAL_H
+
+#include <stdint.h>
+
+double real_fix_timestamp(unsigned char *buf, unsigned int timestamp,
+ unsigned int format, int64_t *kf_base,
+ int *kf_pts, double *pts);
+
+#endif /* MPLAYER_DEMUX_RE