Some samples in the wild are missing headers that are expected by the
specification but in practice do not affect decoding.
---

Lovely ogm files...

 libavformat/oggdec.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/libavformat/oggdec.c b/libavformat/oggdec.c
index d8f89b8..6c87181 100644
--- a/libavformat/oggdec.c
+++ b/libavformat/oggdec.c
@@ -477,9 +477,13 @@ static int ogg_get_headers(AVFormatContext *s)

         if (os->codec && os->codec->nb_header &&
             os->nb_header < os->codec->nb_header) {
-            av_log(s, AV_LOG_ERROR,
-                   "Headers mismatch for stream %d\n", i);
-            return AVERROR_INVALIDDATA;
+            if (s->error_recognition & AV_EF_EXPLODE) {
+                av_log(s, AV_LOG_ERROR,
+                       "Headers mismatch for stream %d: "
+                       "expected %d received %d\n",
+                       i, os->codec->nb_header, os->nb_header);
+                return AVERROR_INVALIDDATA;
+            }
         }
         if (os->start_granule != OGG_NOGRANULE_VALUE)
             os->lastpts = s->streams[i]->start_time =
--
1.8.2.1

_______________________________________________
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to