Use double instead of float for pts.

Patch by Dan Oscarsson, Dan D Oscarsson A tieto D com 


git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30298 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
cehoyos 2010-01-12 23:03:03 +00:00
parent 0dd5d0937a
commit 2b3a5105ff
1 changed files with 7 additions and 7 deletions

View File

@ -97,7 +97,7 @@ typedef struct {
unsigned char *start; unsigned char *start;
uint16_t payload_size; uint16_t payload_size;
es_stream_type_t type, subtype; es_stream_type_t type, subtype;
float pts, last_pts; double pts, last_pts;
int pid; int pid;
char lang[4]; char lang[4];
int last_cc; // last cc code (-1 if first packet) int last_cc; // last cc code (-1 if first packet)
@ -219,8 +219,8 @@ typedef struct {
typedef struct { typedef struct {
uint64_t size; uint64_t size;
float duration; float duration;
float first_pts; double first_pts;
float last_pts; double last_pts;
} TS_stream_info; } TS_stream_info;
typedef struct { typedef struct {
@ -1255,7 +1255,7 @@ static int mp4_parse_sl_packet(pmt_t *pmt, uint8_t *buf, uint16_t packet_len, in
return -1; return -1;
} }
pes_es->pts = (float) v / (float) sl->ts_resolution; pes_es->pts = (double) v / (double) sl->ts_resolution;
mp_msg(MSGT_DEMUXER,MSGL_DBG2, "CTS: %d bits, value: %"PRIu64"/%d = %.3f\n", sl->ts_len, v, sl->ts_resolution, pes_es->pts); mp_msg(MSGT_DEMUXER,MSGL_DBG2, "CTS: %d bits, value: %"PRIu64"/%d = %.3f\n", sl->ts_len, v, sl->ts_resolution, pes_es->pts);
} }
@ -1398,7 +1398,7 @@ static int pes_parse2(unsigned char *buf, uint16_t packet_len, ES_stream_t *es,
pts |= p[12] << 7 ; pts |= p[12] << 7 ;
pts |= (p[13] & 0xFE) >> 1 ; pts |= (p[13] & 0xFE) >> 1 ;
es->pts = pts / 90000.0f; es->pts = pts / (double)90000.0f;
} }
else else
es->pts = 0.0f; es->pts = 0.0f;
@ -3277,8 +3277,8 @@ static void demux_seek_ts(demuxer_t *demuxer, float rel_seek_secs, float audio_d
{ {
if(sh_audio && !d_audio->eof && d_video->pts && d_audio->pts) if(sh_audio && !d_audio->eof && d_video->pts && d_audio->pts)
{ {
float a_pts=d_audio->pts; double a_pts=d_audio->pts;
a_pts+=(ds_tell_pts(d_audio)-sh_audio->a_in_buffer_len)/(float)sh_audio->i_bps; a_pts+=(ds_tell_pts(d_audio)-sh_audio->a_in_buffer_len)/(double)sh_audio->i_bps;
if(d_video->pts > a_pts) if(d_video->pts > a_pts)
{ {
skip_audio_frame(sh_audio); // sync audio skip_audio_frame(sh_audio); // sync audio