Changeset 3788
- Timestamp:
- 2008-11-17 11:59:19 (2 months ago)
- Files:
-
- liboggz/trunk/src/liboggz/oggz_read.c (modified) (12 diffs)
- liboggz/trunk/src/liboggz/oggz_write.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
liboggz/trunk/src/liboggz/oggz_read.c
r3773 r3788 251 251 252 252 OggzBufferedPacket * 253 oggz_read_new_pbuffer_entry(OGGZ *oggz, ogg_packet *packet, 254 ogg_int64_t granulepos, long serialno, oggz_stream_t * stream, 253 oggz_read_new_pbuffer_entry(OGGZ *oggz, ogg_packet *packet, 254 ogg_int64_t granulepos, long serialno, oggz_stream_t * stream, 255 255 OggzReader *reader) { 256 256 … … 271 271 void 272 272 oggz_read_free_pbuffer_entry(OggzBufferedPacket *p) { 273 273 274 274 free(p->packet.packet); 275 275 free(p); … … 284 284 if (p->calced_granulepos == -1 && p->stream->last_granulepos != -1) { 285 285 int content = oggz_stream_get_content(p->oggz, p->serialno); 286 p->calced_granulepos = 286 p->calced_granulepos = 287 287 oggz_auto_calculate_gp_backwards(content, p->stream->last_granulepos, 288 288 p->stream, &(p->packet), p->stream->last_packet); 289 289 290 290 p->stream->last_granulepos = p->calced_granulepos; 291 291 p->stream->last_packet = &(p->packet); … … 316 316 317 317 if (p->stream->read_packet) { 318 p->stream->read_packet(p->oggz, &(p->packet), p->serialno, 318 p->stream->read_packet(p->oggz, &(p->packet), p->serialno, 319 319 p->stream->read_user_data); 320 320 } else if (p->reader->read_packet) { 321 p->reader->read_packet(p->oggz, &(p->packet), p->serialno, 321 p->reader->read_packet(p->oggz, &(p->packet), p->serialno, 322 322 p->reader->read_user_data); 323 323 } … … 405 405 406 406 stream->packetno++; 407 407 408 408 /* got a packet. process it */ 409 409 granulepos = op->granulepos; 410 410 411 411 content = oggz_stream_get_content(oggz, serialno); 412 412 413 413 /* 414 414 * if we have no metrics for this stream yet, then generate them 415 */ 416 if 415 */ 416 if 417 417 ( 418 (!stream->metric || (content == OGGZ_CONTENT_SKELETON)) 419 && 418 (!stream->metric || (content == OGGZ_CONTENT_SKELETON)) 419 && 420 420 (oggz->flags & OGGZ_AUTO) 421 ) 421 ) 422 422 { 423 423 oggz_auto_read_bos_packet (oggz, op, serialno, NULL); … … 426 426 /* attempt to determine granulepos for this packet */ 427 427 if (oggz->flags & OGGZ_AUTO) { 428 reader->current_granulepos = 429 oggz_auto_calculate_granulepos (content, granulepos, stream, op); 428 reader->current_granulepos = 429 oggz_auto_calculate_granulepos (content, granulepos, stream, op); 430 430 /* make sure that we accept any "real" gaps in the granulepos 431 431 */ … … 437 437 } 438 438 stream->last_granulepos = reader->current_granulepos; 439 439 440 440 /* set unit on last packet of page */ 441 if 441 if 442 442 ( 443 443 (oggz->metric || stream->metric) && reader->current_granulepos != -1 444 ) 444 ) 445 445 { 446 446 reader->current_unit = … … 451 451 oggz_auto_read_comments (oggz, stream, serialno, op); 452 452 } 453 453 454 454 if (oggz->flags & OGGZ_AUTO) { 455 455 456 456 /* 457 * while we are getting invalid granulepos values, store the 457 * while we are getting invalid granulepos values, store the 458 458 * incoming packets in a dlist */ 459 459 if (reader->current_granulepos == -1) { 460 460 OggzBufferedPacket *p = oggz_read_new_pbuffer_entry( 461 oggz, &packet, reader->current_granulepos, 461 oggz, &packet, reader->current_granulepos, 462 462 serialno, stream, reader); 463 463 … … 477 477 478 478 /* 479 * fix up the stream granulepos 479 * fix up the stream granulepos 480 480 */ 481 481 stream->last_granulepos = gp_stored; … … 483 483 if (!oggz_dlist_is_empty(oggz->packet_buffer)) { 484 484 OggzBufferedPacket *p = oggz_read_new_pbuffer_entry( 485 oggz, &packet, reader->current_granulepos, 485 oggz, &packet, reader->current_granulepos, 486 486 serialno, stream, reader); 487 487 … … 543 543 oggz_auto_identify_page (oggz, &og, serialno); 544 544 } 545 545 546 546 os = &stream->ogg_stream; 547 547 … … 629 629 if (bytes_read > 0) { 630 630 ogg_sync_wrote (&reader->ogg_sync, bytes_read); 631 631 632 632 remaining -= bytes_read; 633 633 nread += bytes_read; 634 634 635 635 cb_ret = oggz_read_sync (oggz); 636 636 } liboggz/trunk/src/liboggz/oggz_write.c
r3787 r3788 657 657 printf("oggz_writer_make_packet: cb_ret is %d\n", cb_ret); 658 658 #endif 659 659 660 660 if (cb_ret == 0 && next_zpacket == NULL) return OGGZ_WRITE_EMPTY; 661 661 … … 671 671 672 672 if (oggz == NULL) return OGGZ_ERR_BAD_OGGZ; 673 673 674 674 writer = &oggz->x.writer; 675 675 … … 823 823 * we can't finish just yet. Instead we need to force a page flush, 824 824 * and write the page out. So we set flushing and no_more_packets to 825 * 1. This causes oggz_page_init to flush the page, then we 825 * 1. This causes oggz_page_init to flush the page, then we 826 826 * will switch the state to OGGZ_WRITING_PAGES, which will trigger 827 827 * the writing code below.