Mercurial > mplayer.hg
comparison libmpdemux/demux_ogg.c @ 11004:d48eccbbb984
FLAC decoding support via imported libmpflac.
TODO: fix FLAC-in-ogg decoding.
author | lumag |
---|---|
date | Sat, 04 Oct 2003 22:00:25 +0000 |
parents | 6e35326c742f |
children | db9ced943496 |
comparison
equal
deleted
inserted
replaced
11003:6111db8a76b5 | 11004:d48eccbbb984 |
---|---|
110 // Logical stream state | 110 // Logical stream state |
111 ogg_stream_state stream; | 111 ogg_stream_state stream; |
112 int hdr_packets; | 112 int hdr_packets; |
113 int vorbis; | 113 int vorbis; |
114 int theora; | 114 int theora; |
115 int flac; | |
115 } ogg_stream_t; | 116 } ogg_stream_t; |
116 | 117 |
117 typedef struct ogg_demuxer { | 118 typedef struct ogg_demuxer { |
118 /// Physical stream state | 119 /// Physical stream state |
119 ogg_sync_state sync; | 120 ogg_sync_state sync; |
360 os->lastpos++; | 361 os->lastpos++; |
361 *pts = (double)os->lastpos / (double)os->samplerate; | 362 *pts = (double)os->lastpos / (double)os->samplerate; |
362 } | 363 } |
363 } | 364 } |
364 #endif /* HAVE_OGGTHEORA */ | 365 #endif /* HAVE_OGGTHEORA */ |
366 # ifdef HAVE_FLAC | |
367 } else if (os->flac) { | |
368 /* we pass complete packets to flac, mustn't strip the header! */ | |
369 data = pack->packet; | |
370 #endif /* HAVE_FLAC */ | |
365 } else { | 371 } else { |
366 // Find data start | 372 // Find data start |
367 int16_t hdrlen = (*pack->packet & PACKET_LEN_BITS01)>>6; | 373 int16_t hdrlen = (*pack->packet & PACKET_LEN_BITS01)>>6; |
368 hdrlen |= (*pack->packet & PACKET_LEN_BITS2) <<1; | 374 hdrlen |= (*pack->packet & PACKET_LEN_BITS2) <<1; |
369 data = pack->packet + 1 + hdrlen; | 375 data = pack->packet + 1 + hdrlen; |
677 sh_v->fps, | 683 sh_v->fps, |
678 inf.aspect_numerator, inf.aspect_denominator); | 684 inf.aspect_numerator, inf.aspect_denominator); |
679 if(verbose>0) print_video_header(sh_v->bih); | 685 if(verbose>0) print_video_header(sh_v->bih); |
680 } | 686 } |
681 # endif /* HAVE_OGGTHEORA */ | 687 # endif /* HAVE_OGGTHEORA */ |
688 # ifdef HAVE_FLAC | |
689 } else if (pack.bytes >= 4 && !strncmp (&pack.packet[0], "fLaC", 4)) { | |
690 sh_a = new_sh_audio(demuxer,ogg_d->num_sub); | |
691 sh_a->format = mmioFOURCC('f', 'L', 'a', 'C'); | |
692 n_audio++; | |
693 ogg_d->subs[ogg_d->num_sub].flac = 1; | |
694 sh_a->wf = NULL; | |
695 mp_msg(MSGT_DEMUX,MSGL_V,"OGG : stream %d is FLAC\n",ogg_d->num_sub); | |
696 # endif /* HAVE_FLAC */ | |
697 | |
682 /// Check for old header | 698 /// Check for old header |
683 } else if(pack.bytes >= 142 && ! strncmp(&pack.packet[1],"Direct Show Samples embedded in Ogg",35) ) { | 699 } else if(pack.bytes >= 142 && ! strncmp(&pack.packet[1],"Direct Show Samples embedded in Ogg",35) ) { |
684 | 700 |
685 // Old video header | 701 // Old video header |
686 if(get_uint32 (pack.packet+96) == 0x05589f80 && pack.bytes >= 184) { | 702 if(get_uint32 (pack.packet+96) == 0x05589f80 && pack.bytes >= 184) { |