diff --git a/libavformat/pva.c b/libavformat/pva.c
index f819b832d1f293fa69f0d92423ef77afb7378949..760f7fc90e7f202b6ef5b41faa1b80bde80894c9 100644
--- a/libavformat/pva.c
+++ b/libavformat/pva.c
@@ -79,6 +79,10 @@ static int pva_read_packet(AVFormatContext *s, AVPacket *pkt) {
         av_log(s, AV_LOG_ERROR, "invalid syncword\n");
         return AVERROR(EIO);
     }
+    if (streamid != PVA_VIDEO_PAYLOAD && streamid != PVA_AUDIO_PAYLOAD) {
+        av_log(s, AV_LOG_ERROR, "invalid streamid\n");
+        return AVERROR(EIO);
+    }
     if (reserved != 0x55) {
         av_log(s, AV_LOG_WARNING, "expected reserved byte to be 0x55\n");
     }