comparison libmpdemux/demux_ogg.c @ 18465:c3c68110f601

10^100l c++ declarations
author rfelker
date Sat, 13 May 2006 05:48:16 +0000
parents 9300d63e235c
children 3a624063cbc9
comparison
equal deleted inserted replaced
18464:4fd5519c1526 18465:c3c68110f601
6 #include <stdlib.h> 6 #include <stdlib.h>
7 #include <stdio.h> 7 #include <stdio.h>
8 #include <string.h> 8 #include <string.h>
9 #include <assert.h> 9 #include <assert.h>
10 #include <math.h> 10 #include <math.h>
11 #include <limits.h>
11 12
12 #include "mp_msg.h" 13 #include "mp_msg.h"
13 #include "help_mp.h" 14 #include "help_mp.h"
14 #include "stream.h" 15 #include "stream.h"
15 #include "demuxer.h" 16 #include "demuxer.h"
346 if(*pack->packet & PACKET_TYPE_HEADER) 347 if(*pack->packet & PACKET_TYPE_HEADER)
347 os->hdr_packets++; 348 os->hdr_packets++;
348 else if (ogg_d->vi_inited) 349 else if (ogg_d->vi_inited)
349 { 350 {
350 vorbis_info *vi; 351 vorbis_info *vi;
352 int32_t blocksize;
351 353
352 // When we dump the audio, there is no vi, but we don't care of timestamp in this case 354 // When we dump the audio, there is no vi, but we don't care of timestamp in this case
353 vi = &(ogg_d->vi); 355 vi = &(ogg_d->vi);
354 int32_t blocksize = vorbis_packet_blocksize(vi,pack) / samplesize; 356 blocksize = vorbis_packet_blocksize(vi,pack) / samplesize;
355 // Calculate the timestamp if the packet don't have any 357 // Calculate the timestamp if the packet don't have any
356 if(pack->granulepos == -1) { 358 if(pack->granulepos == -1) {
357 pack->granulepos = os->lastpos; 359 pack->granulepos = os->lastpos;
358 if(os->lastsize > 0) 360 if(os->lastsize > 0)
359 pack->granulepos += os->lastsize; 361 pack->granulepos += os->lastsize;
661 float pts; 663 float pts;
662 int flags; 664 int flags;
663 demux_ogg_read_packet(os,&op,context,&pts,&flags,samplesize); 665 demux_ogg_read_packet(os,&op,context,&pts,&flags,samplesize);
664 if(op.granulepos >= 0) ogg_d->final_granulepos = op.granulepos; 666 if(op.granulepos >= 0) ogg_d->final_granulepos = op.granulepos;
665 if(index_mode == 2 && (flags || (os->vorbis && op.granulepos >= 0))) { 667 if(index_mode == 2 && (flags || (os->vorbis && op.granulepos >= 0))) {
666 ogg_d->syncpoints = (ogg_syncpoint_t*)realloc(ogg_d->syncpoints,(ogg_d->num_syncpoint+1)*sizeof(ogg_syncpoint_t)); 668 if (ogg_d->num_syncpoint > SIZE_MAX / sizeof(ogg_syncpoint_t) - 1) break;
669 ogg_d->syncpoints = realloc_struct(ogg_d->syncpoints,(ogg_d->num_syncpoint+1), sizeof(ogg_syncpoint_t));
667 ogg_d->syncpoints[ogg_d->num_syncpoint].granulepos = op.granulepos; 670 ogg_d->syncpoints[ogg_d->num_syncpoint].granulepos = op.granulepos;
668 ogg_d->syncpoints[ogg_d->num_syncpoint].page_pos = (ogg_page_continued(page) && p == 0) ? last_pos : pos; 671 ogg_d->syncpoints[ogg_d->num_syncpoint].page_pos = (ogg_page_continued(page) && p == 0) ? last_pos : pos;
669 ogg_d->num_syncpoint++; 672 ogg_d->num_syncpoint++;
670 } 673 }
671 p++; 674 p++;