Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // compile with gcc -o oggpagesizes -logg oggpagesizes.c
- #include <stdio.h>
- #include <ogg/ogg.h>
- ogg_sync_state oss;
- ogg_stream_state os;
- int serialno = -1;
- int main(int argc, char *argv[]){
- if(argc < 2){
- printf("no file\n");
- return -1;
- }
- FILE *f = fopen(argv[1], "r");
- if(!f){
- printf("fopen fail\n");
- return -1;
- }
- ogg_sync_init(&oss);
- ogg_stream_init(&os, -1);
- int maxbody = 0;
- int maxpacket = 0;
- while(!feof(f)){
- char *buf = ogg_sync_buffer(&oss, 8192);
- int read = fread(buf, 1, 8192, f);
- ogg_sync_wrote(&oss, read);
- while(1){
- ogg_page op;
- int res = ogg_sync_pageout(&oss, &op);
- if(res == 1){
- printf("header %d body %d\n", op.header_len, op.body_len);
- maxbody = op.body_len > maxbody ? op.body_len : maxbody;
- if(serialno != ogg_page_serialno(&op)){
- printf("now reading serialno %d\n", serialno);
- serialno = ogg_page_serialno(&op);
- ogg_stream_reset_serialno(&os, serialno);
- }
- int res = ogg_stream_pagein(&os, &op);
- printf("ogg_stream_pagein %d\n", res);
- while(1){
- ogg_packet opkt;
- int res = ogg_stream_packetout(&os, &opkt);
- if(res == 1){
- printf(" packet %d\n", opkt.bytes);
- maxpacket = opkt.bytes > maxpacket ? opkt.bytes : maxpacket;
- }else{
- printf("ogg_stream_packetout %d\n", res);
- break;
- }
- }
- }else{
- break;
- }
- }
- }
- printf("max body %d\n", maxbody);
- printf("max packet %d\n", maxpacket);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement