From: James Courtier-D. <jcd...@us...> - 2001-08-31 01:07:57
|
Update of /cvsroot/xine/xine-lib/src/liblpcm In directory usw-pr-cvs1:/tmp/cvs-serv7832/xine-lib/src/liblpcm Modified Files: xine_decoder.c Log Message: Improved rate sensing. Index: xine_decoder.c =================================================================== RCS file: /cvsroot/xine/xine-lib/src/liblpcm/xine_decoder.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- xine_decoder.c 2001/08/30 23:43:49 1.3 +++ xine_decoder.c 2001/08/31 01:07:55 1.4 @@ -43,6 +43,7 @@ uint32_t pts; uint32_t last_pts; + uint32_t last_size; uint32_t rate; ao_instance_t *audio_out; @@ -63,6 +64,7 @@ this->output_open = 0; this->pts = 0; this->last_pts = 0; + this->last_size = 0; this->rate = 0; } @@ -71,16 +73,14 @@ lpcm_decoder_t *this = (lpcm_decoder_t *) this_gen; int16_t *sample_buffer=(int16_t *)buf->content; - - if (buf->decoder_info[0] == 0) - return; - if (buf->PTS > 0) { this->last_pts=this->pts; this->pts = buf->PTS; - } + if (buf->decoder_info[0] == 0) + return; if ((this->last_pts > 0) && (this->pts > 0) && (this->rate == 0)) { - this->rate=(45000 * buf->size)/(this->pts-this->last_pts); + this->rate=(22500 * this->last_size)/(this->pts-this->last_pts); } + this->last_size=buf->size; if (this->rate == 0) return; if (!this->output_open) { @@ -104,7 +104,7 @@ if (this->output_open) this->audio_out->close (this->audio_out); - + printf("LPCM:Close\n"); this->output_open = 0; } |