diff options
Diffstat (limited to 'demux/demux_rawvideo.c')
-rw-r--r-- | demux/demux_rawvideo.c | 21 |
1 files changed, 15 insertions, 6 deletions
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; } |