On 28-04-2019 03:40 PM, Hendrik Leppkes wrote:
On Sun, Apr 28, 2019 at 11:57 AM Michael Niedermayer
<mich...@niedermayer.cc> wrote:
On Sat, Apr 27, 2019 at 10:01:53AM +0530, Gyan wrote:

On 27-04-2019 01:32 AM, Michael Niedermayer wrote:
On Fri, Apr 26, 2019 at 06:38:37PM +0530, Gyan wrote:
  mux.c |    9 ++++++++-
  1 file changed, 8 insertions(+), 1 deletion(-)
d94a699f5dbc31a8ee8b7d1bdb33004d9cd95d46  
0001-avformat-mux-skip-parameter-and-pts-checks-for-data-.patch
 From 5ec154870d9c559037598b41736bf5b216a756e0 Mon Sep 17 00:00:00 2001
From: Gyan Doshi <ffm...@gyani.pro>
Date: Fri, 26 Apr 2019 18:31:33 +0530
Subject: [PATCH] avformat/mux: skip parameter and pts checks for data muxer

Allows to dump a malformed stream for external inspection or repair.
---
  libavformat/mux.c | 9 ++++++++-
  1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/libavformat/mux.c b/libavformat/mux.c
index 83fe1de78f..3699b572f2 100644
--- a/libavformat/mux.c
+++ b/libavformat/mux.c
@@ -290,6 +290,9 @@ FF_ENABLE_DEPRECATION_WARNINGS
          goto fail;
      }
+    if (!strcmp(of->name, "data"))
+        goto bypass;
+
      for (i = 0; i < s->nb_streams; i++) {
          st  = s->streams[i];
          par = st->codecpar;
@@ -409,6 +412,7 @@ FF_ENABLE_DEPRECATION_WARNINGS
          av_dict_set(&s->metadata, e->key, NULL, 0);
      }
+bypass:
I think this skips a bit more than what would make sense
(for example priv_data allocation but thats not the only odd thing)

also iam not sure this is the ideal approuch.
I mean "I want to dump inavlid data in a data muxer for debug"
that seems a potentially valid request for other muxers too
like the image muxer producing individual files per frame and
so on
What would be the ideal approach?
I guess the ideal approuch would be to allow the developer who needs
this to override the check when the muxer in use can actually saftely
mux it without the specific check.
There are for example muxers which would not function properly with
backward going dts or something like that

We already have a variety of flags in place, like if a muxer doesn't
care for timestamps at all, flag it AVFMT_NOTIMESTAMPS, and have code
that checks timestamps check for this flag. Checks based on muxer
names seem generally always wrong.
AVFMT_NOTIMESTAMPS is somewhat overloaded. There are formats which don't _write_ timestamps but still have some code which looks at them e.g. image2 muxer or the mxf family of muxers. Some lavf code like compute_muxer_pkt_fields is still run even for formats with the noTS flag.  lavf simply ignores errors for formats with the flag set. However, if the dumped stream is audio with no  sample rate set, then init_pts will fail and so would compute. Hence the selection of muxer by name.

Gyan
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to