summaryrefslogtreecommitdiffstats
path: root/libmpdemux/demux_ogg.c
diff options
context:
space:
mode:
authorlumag <lumag@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-10-04 22:00:25 +0000
committerlumag <lumag@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-10-04 22:00:25 +0000
commit1e880aa659cc8d82357c175d6142cfd0606eea22 (patch)
treee85a5a66e08f6ad71f8638470e19539c26a6bb54 /libmpdemux/demux_ogg.c
parent31235dd9a42beb26105918190af7cffc2f20ff07 (diff)
downloadmpv-1e880aa659cc8d82357c175d6142cfd0606eea22.tar.bz2
mpv-1e880aa659cc8d82357c175d6142cfd0606eea22.tar.xz
FLAC decoding support via imported libmpflac.
TODO: fix FLAC-in-ogg decoding. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@11005 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux/demux_ogg.c')
-rw-r--r--libmpdemux/demux_ogg.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/libmpdemux/demux_ogg.c b/libmpdemux/demux_ogg.c
index 9f64231f5f..03577ce039 100644
--- a/libmpdemux/demux_ogg.c
+++ b/libmpdemux/demux_ogg.c
@@ -112,6 +112,7 @@ typedef struct ogg_stream {
int hdr_packets;
int vorbis;
int theora;
+ int flac;
} ogg_stream_t;
typedef struct ogg_demuxer {
@@ -362,6 +363,11 @@ static unsigned char* demux_ogg_read_packet(ogg_stream_t* os,ogg_packet* pack,vo
}
}
#endif /* HAVE_OGGTHEORA */
+# ifdef HAVE_FLAC
+ } else if (os->flac) {
+ /* we pass complete packets to flac, mustn't strip the header! */
+ data = pack->packet;
+#endif /* HAVE_FLAC */
} else {
// Find data start
int16_t hdrlen = (*pack->packet & PACKET_LEN_BITS01)>>6;
@@ -679,6 +685,16 @@ int demux_ogg_open(demuxer_t* demuxer) {
if(verbose>0) print_video_header(sh_v->bih);
}
# endif /* HAVE_OGGTHEORA */
+# ifdef HAVE_FLAC
+ } else if (pack.bytes >= 4 && !strncmp (&pack.packet[0], "fLaC", 4)) {
+ sh_a = new_sh_audio(demuxer,ogg_d->num_sub);
+ sh_a->format = mmioFOURCC('f', 'L', 'a', 'C');
+ n_audio++;
+ ogg_d->subs[ogg_d->num_sub].flac = 1;
+ sh_a->wf = NULL;
+ mp_msg(MSGT_DEMUX,MSGL_V,"OGG : stream %d is FLAC\n",ogg_d->num_sub);
+# endif /* HAVE_FLAC */
+
/// Check for old header
} else if(pack.bytes >= 142 && ! strncmp(&pack.packet[1],"Direct Show Samples embedded in Ogg",35) ) {