[FFmpeg-devel] [PATCH 1/2] lavf/dvenc: improve error messaging
Stefano Sabatini
stefasab at gmail.com
Sun Jan 21 12:30:27 EET 2024
On date Sunday 2024-01-21 07:36:48 +0100, Anton Khirnov wrote:
> Quoting Stefano Sabatini (2024-01-20 16:24:07)
> > if ((c->sys->time_base.den != 25 && c->sys->time_base.den != 50) || c->sys->time_base.num != 1) {
> > - if (c->ast[0] && c->ast[0]->codecpar->sample_rate != 48000)
> > - goto bail_out;
> > - if (c->ast[1] && c->ast[1]->codecpar->sample_rate != 48000)
> > - goto bail_out;
> > + int j;
>
> No need to declare a loop variable outside of the loop. Also, there's
> already i.
fixed locally
> > - if (((c->n_ast > 1) && (c->sys->n_difchan < 2)) ||
> > - ((c->n_ast > 2) && (c->sys->n_difchan < 4))) {
> > - /* only 2 stereo pairs allowed in 50Mbps mode */
> > - goto bail_out;
> > + if ((c->n_ast > 1) && (c->sys->n_difchan < 2)) {
> > + av_log(s, AV_LOG_ERROR,
> > + "Invalid number of channels %d, only 1 stereo pairs is allowed in 25Mps mode.\n",
> > + c->n_ast);
> > + return AVERROR_INVALIDDATA;
> > + }
> > + if ((c->n_ast > 2) && (c->sys->n_difchan < 4)) {
> > + av_log(s, AV_LOG_ERROR,
> > + "Invalid number of channels %d, only 2 stereo pairs are allowed in 50Mps mode.\n",
> > + c->n_ast);
> > + return AVERROR_INVALIDDATA;
>
> Surely this can be done in one log statement.
Yes, but this would complicate the logic for small gain.
>
> > }
> >
> > /* Ok, everything seems to be in working order */
> > @@ -376,14 +427,14 @@ static DVMuxContext* dv_init_mux(AVFormatContext* s)
> > if (!c->ast[i])
> > continue;
> > c->audio_data[i] = av_fifo_alloc2(100 * MAX_AUDIO_FRAME_SIZE, 1, 0);
> > - if (!c->audio_data[i])
> > - goto bail_out;
> > + if (!c->audio_data[i]) {
> > + av_log(s, AV_LOG_ERROR,
> > + "Failed to allocate internal buffer.\n");
>
> Dedicated log messages for small malloc failures are useless bloat.
Dropped.
>
> > + return AVERROR(ENOMEM);
> > + }
> > }
> >
> > - return c;
> > -
> > -bail_out:
> > - return NULL;
> > + return 0;
> > }
> >
> > static int dv_write_header(AVFormatContext *s)
> > @@ -392,10 +443,10 @@ static int dv_write_header(AVFormatContext *s)
> > DVMuxContext *dvc = s->priv_data;
> > AVDictionaryEntry *tcr = av_dict_get(s->metadata, "timecode", NULL, 0);
> >
> > - if (!dv_init_mux(s)) {
> > + if (dv_init_mux(s) < 0) {
> > av_log(s, AV_LOG_ERROR, "Can't initialize DV format!\n"
> > "Make sure that you supply exactly two streams:\n"
>
> This seems inconsistent with the other checks.
Yes, probably it's better to drop this entirely since we have more
puntual reporting now (and "exactly two stream" is wrong)
>
> > - " video: 25fps or 29.97fps, audio: 2ch/48|44|32kHz/PCM\n"
> > + " video: 25fps or 29.97fps, audio: 2ch/48000|44100|32000Hz/PCM\n"
>
> This does not seem like an improvement.
44kHz != 44100
I could use 44.1 but this is not the unit used when setting the
option, so better to be explicit.
Thanks.
More information about the ffmpeg-devel
mailing list