summaryrefslogtreecommitdiffstats
path: root/mpvcore
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2013-11-26 01:07:14 +0100
committerwm4 <wm4@nowhere>2013-11-26 01:07:32 +0100
commitfe73b14eb1e8ccfc49dc73e1dbeb6510ed1e9452 (patch)
tree34544c5f99417bdc37b25abeca98947acc65c93e /mpvcore
parent49f076d86dc8b9b451861c9a2a3c1726420a0914 (diff)
downloadmpv-fe73b14eb1e8ccfc49dc73e1dbeb6510ed1e9452.tar.bz2
mpv-fe73b14eb1e8ccfc49dc73e1dbeb6510ed1e9452.tar.xz
player: move code for skipping 0-sized video packets to demuxer
These packets have to be explicitly dropped, because usually libavcodec uses 0-sized packets to flush delayed frames, meaning just passing through these packets would have bad consequences. Normally, libavformat doesn't output 0-sized packets anyway. But I don't want to take any chances, so don't delete it, and just move it out of the way to demux.c.
Diffstat (limited to 'mpvcore')
-rw-r--r--mpvcore/player/video.c11
1 files changed, 1 insertions, 10 deletions
diff --git a/mpvcore/player/video.c b/mpvcore/player/video.c
index a3fef6d53c..65fc81d92c 100644
--- a/mpvcore/player/video.c
+++ b/mpvcore/player/video.c
@@ -295,16 +295,7 @@ double update_video(struct MPContext *mpctx, double endpts)
while (1) {
if (load_next_vo_frame(mpctx, false))
break;
- struct demux_packet *pkt = NULL;
- while (1) {
- pkt = demux_read_packet(d_video->header);
- if (!pkt || pkt->len)
- break;
- /* Packets with size 0 are assumed to not correspond to frames,
- * but to indicate the absence of a frame in formats like AVI
- * that must have packets at fixed timecode intervals. */
- talloc_free(pkt);
- }
+ struct demux_packet *pkt = demux_read_packet(d_video->header);
if (pkt && pkt->pts != MP_NOPTS_VALUE)
pkt->pts += mpctx->video_offset;
if (pkt && pkt->pts >= mpctx->hrseek_pts - .005)