From: Julian S. <ju...@ju...> - 2005-10-23 13:40:35
|
I am just trying to add a proper rate-calculation to the MPEG2-TS demuxer, so that it is able to determine the correct length of a TS-Stream. Therefore I looked at the ts2ps sources. Now I added some code just after the video-pid autodetection in demux_ts_parse_packet. The only problem is, that I don't seem to be able to read the whole file to get the needed data. The first read in the while-loop I do works fine, but the second one gives me a size of 0 back - The file should be way longer, so this can't be the problem. Any ideas? The code looks basically like this: ----------- uint8_t mbuf[2096]; uint8_t buf[188*50]; if(!this->input->read(this->input, mbuf, 2096)) printf("Failed to read header\n"); for ( i = 0; i < 188 ; i++){ if ( mbuf[i] == 0x47 ) break; } if ( i == 188){ fprintf(stderr,"Not a TS\n"); } else { printf("FOUND TS\n"); memcpy(buf,mbuf+i,188-i); memcpy(buf+188-i,mbuf+1880,i); i = 188; } int count = 1; uint64_t l = 0; int haveread = 0; while(count>0) { uint16_t apid; int tmp_haveread = this->input->read(this->input, buf+i, 188*10-i); if(tmp_haveread>0) printf("read: %d\n", tmp_haveread); haveread += tmp_haveread; count = tmp_haveread+i; //printf("count: %d\n", count); if (count) l+= count; for(i=0; i<count; i+=188) { /* here comes the bitrate detection */ } } |