summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--demux/demux.c13
-rw-r--r--demux/demux.h2
-rw-r--r--demux/demux_rawvideo.c21
3 files changed, 15 insertions, 21 deletions
diff --git a/demux/demux.c b/demux/demux.c
index b143c702c0..f0cb28ab1d 100644
--- a/demux/demux.c
+++ b/demux/demux.c
@@ -403,19 +403,6 @@ void ds_add_packet(demux_stream_t *ds, demux_packet_t *dp)
ds->demuxer->video->packs);
}
-void ds_read_packet(demux_stream_t *ds, stream_t *stream, int len,
- double pts, int64_t pos, bool keyframe)
-{
- demux_packet_t *dp = new_demux_packet(len);
- len = stream_read(stream, dp->buffer, len);
- resize_demux_packet(dp, len);
- dp->pts = pts;
- dp->pos = pos;
- dp->keyframe = keyframe;
- // append packet to DS stream:
- ds_add_packet(ds, dp);
-}
-
static bool demux_check_queue_full(demuxer_t *demux)
{
int apacks = demux->audio ? demux->audio->packs : 0;
diff --git a/demux/demux.h b/demux/demux.h
index 84ed95ceb2..eb5de265b3 100644
--- a/demux/demux.h
+++ b/demux/demux.h
@@ -254,8 +254,6 @@ void free_demuxer(struct demuxer *demuxer);
int demuxer_add_packet(demuxer_t *demuxer, struct sh_stream *stream,
demux_packet_t *dp);
void ds_add_packet(struct demux_stream *ds, struct demux_packet *dp);
-void ds_read_packet(struct demux_stream *ds, struct stream *stream, int len,
- double pts, int64_t pos, bool keyframe);
int demux_fill_buffer(struct demuxer *demux, struct demux_stream *ds);
int ds_fill_buffer(struct demux_stream *ds);
diff --git a/demux/demux_rawvideo.c b/demux/demux_rawvideo.c
index 6834bfb23a..a4eaaa2a8c 100644
--- a/demux/demux_rawvideo.c
+++ b/demux/demux_rawvideo.c
@@ -131,12 +131,21 @@ static demuxer_t* demux_rawvideo_open(demuxer_t* demuxer) {
}
static int demux_rawvideo_fill_buffer(demuxer_t* demuxer, demux_stream_t *ds) {
- sh_video_t* sh = demuxer->video->gsh->video;
- int64_t pos;
- if(demuxer->stream->eof) return 0;
- if(ds!=demuxer->video) return 0;
- pos = stream_tell(demuxer->stream);
- ds_read_packet(ds,demuxer->stream,imgsize,(pos/imgsize)*sh->frametime,pos,0x10);
+ int64_t spos = stream_tell(demuxer->stream);
+ demux_packet_t* dp;
+ int size;
+
+ if(demuxer->stream->eof)
+ return 0;
+
+ dp = new_demux_packet(imgsize);
+ dp->pos = (spos - demuxer->movi_start);
+ dp->pts = dp->pos / (float)(imgsize);
+
+ size = stream_read(demuxer->stream, dp->buffer, imgsize);
+ resize_demux_packet(dp, size);
+ ds_add_packet(ds, dp);
+
return 1;
}