Mercurial > mplayer.hg
changeset 5424:e6d180ceb1ef
changed int -> float for proper PTS calculation (works just as well as the
old method)
author | melanson |
---|---|
date | Sun, 31 Mar 2002 18:29:09 +0000 |
parents | 1a87310b5ca9 |
children | f3a451b6f794 |
files | libmpdemux/demux_roq.c |
diffstat | 1 files changed, 3 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/libmpdemux/demux_roq.c Sun Mar 31 18:28:00 2002 +0000 +++ b/libmpdemux/demux_roq.c Sun Mar 31 18:29:09 2002 +0000 @@ -26,22 +26,13 @@ #define CHUNK_TYPE_AUDIO 0 #define CHUNK_TYPE_VIDEO 1 -// Pick a number, any number (but not 1); make it large enough (any number -// over, say, 50, should work well). I don't know why this works, but it -// does. For some reason, setting a frame's PTS value to -// (frame number) / (fps) -// when fps is small (20-30) doesn't work. But multiplying the PTS by -// n / n -// where n is some non-small number works PTS miracles. -#define RANDOM_FPS_MULTIPLIER 162 - typedef struct roq_chunk_t { int chunk_type; off_t chunk_offset; int chunk_size; - int video_chunk_number; // in the case of a video chunk + float video_chunk_number; // in the case of a video chunk int running_audio_sample_count; // for an audio chunk } roq_chunk_t; @@ -88,7 +79,6 @@ if (roq_chunk.chunk_type == CHUNK_TYPE_AUDIO) ds_read_packet(demuxer->audio, demuxer->stream, roq_chunk.chunk_size, -// roq_chunk.running_audio_sample_count / 22050, 0, roq_chunk.chunk_offset, 0); else @@ -154,7 +144,7 @@ sh_video->format = mmioFOURCC('R', 'o', 'Q', 'V'); // constant frame rate - sh_video->fps = fps * RANDOM_FPS_MULTIPLIER; + sh_video->fps = fps; sh_video->frametime = 1 / sh_video->fps; } } @@ -217,7 +207,7 @@ stream_tell(demuxer->stream) - 8; roq_data->chunks[roq_data->total_chunks].chunk_size = chunk_size + 8; roq_data->chunks[roq_data->total_chunks].video_chunk_number = - roq_data->total_video_chunks++ * RANDOM_FPS_MULTIPLIER; + roq_data->total_video_chunks++; stream_skip(demuxer->stream, chunk_size); roq_data->total_chunks++;