diff --git a/ext/vp8/gstvp8dec.c b/ext/vp8/gstvp8dec.c
index 4376f4b..ecdf37c 100644
--- a/ext/vp8/gstvp8dec.c
+++ b/ext/vp8/gstvp8dec.c
@@ -495,6 +495,7 @@ gst_vp8_dec_handle_frame (GstBaseVideoDecoder * decoder, GstVideoFrame * frame)
     }
   } else {
     /* Invisible frame */
+    frame->not_frame = 1;
     gst_base_video_decoder_finish_frame (decoder, frame);
   }
 
diff --git a/gst-libs/gst/video/gstbasevideocodec.h b/gst-libs/gst/video/gstbasevideocodec.h
index c1e3712..4300b34 100644
--- a/gst-libs/gst/video/gstbasevideocodec.h
+++ b/gst-libs/gst/video/gstbasevideocodec.h
@@ -118,6 +118,7 @@ struct _GstVideoFrame
   int distance_from_sync;
   gboolean is_sync_point;
   gboolean is_eos;
+  gboolean not_frame;
 
   GstBuffer *sink_buffer;
   GstBuffer *src_buffer;
diff --git a/gst-libs/gst/video/gstbasevideodecoder.c b/gst-libs/gst/video/gstbasevideodecoder.c
index 0278abc..eb6bca8 100644
--- a/gst-libs/gst/video/gstbasevideodecoder.c
+++ b/gst-libs/gst/video/gstbasevideodecoder.c
@@ -1397,6 +1397,9 @@ gst_base_video_decoder_finish_frame (GstBaseVideoDecoder * base_video_decoder,
         l->data);
   g_list_free (events);
 
+  if (frame->not_frame)
+    goto done;
+
   if (GST_CLOCK_TIME_IS_VALID (frame->presentation_timestamp)) {
     if (frame->presentation_timestamp != base_video_decoder->timestamp_offset) {
       GST_DEBUG_OBJECT (base_video_decoder,
