On Fri, 6 Mar 2020, Andreas Rheinhardt wrote:
Marton Balint:
The packet durations might not be set properly which can cause the MXF muxer
to write more than one packet of a stream to an edit unit messing up the
constant byte per element index...
Also use nb_samples directly to calculate dts of audio packets because adding
packet durations might not be precise.
Signed-off-by: Marton Balint <c...@passwd.hu>
---
libavformat/audiointerleave.c | 12 +++++++++---
libavformat/audiointerleave.h | 3 ++-
libavformat/gxfenc.c | 2 +-
libavformat/mxfenc.c | 2 +-
4 files changed, 13 insertions(+), 6 deletions(-)
diff --git a/libavformat/audiointerleave.c b/libavformat/audiointerleave.c
index 2e83031bd6..0643159770 100644
--- a/libavformat/audiointerleave.c
+++ b/libavformat/audiointerleave.c
@@ -40,6 +40,7 @@ void ff_audio_interleave_close(AVFormatContext *s)
int ff_audio_interleave_init(AVFormatContext *s,
const int samples_per_frame,
+ const int frame_duration,
AVRational time_base)
{
int i;
@@ -48,6 +49,10 @@ int ff_audio_interleave_init(AVFormatContext *s,
av_log(s, AV_LOG_ERROR, "timebase not set for audio interleave\n");
return AVERROR(EINVAL);
}
+ if (!frame_duration) {
+ av_log(s, AV_LOG_ERROR, "frame_duration not set for audio
interleave\n");
+ return AVERROR(EINVAL);
+ }
Shouldn't this be an assert given that we know that it is known at
compiletime that this error can't be triggered?
It depends on how you _define_ the audiointerleave API. Just because it is
impossible to trigger in current code does not mean that it should be
an assert.
The main reason I prefer it this way is that there are similar checks for
other parameters of the init function.
Regards,
Marton
_______________________________________________
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".