Mercurial > mplayer.hg
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++; |