diff --git a/ffplay.c b/ffplay.c
index cb62614f36972874f9bdee78375a90013e7ae777..c8d768fb270894efe54d849cf9595e7c4281b186 100644
--- a/ffplay.c
+++ b/ffplay.c
@@ -1504,7 +1504,8 @@ static int get_video_frame(VideoState *is, AVFrame *frame, int64_t *pts, AVPacke
         return 0;
     }
 
-    avcodec_decode_video2(is->video_st->codec, frame, &got_picture, pkt);
+    if(avcodec_decode_video2(is->video_st->codec, frame, &got_picture, pkt) < 0)
+        return -1;
 
     if (got_picture) {
         int ret = 1;
@@ -1667,6 +1668,7 @@ static int video_thread(void *arg)
         while (is->paused && !is->videoq.abort_request)
             SDL_Delay(10);
 
+        avcodec_get_frame_defaults(frame);
         ret = get_video_frame(is, frame, &pts_int, &pkt);
         if (ret < 0)
             goto the_end;