Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
From: Soft Works <softworkz@hotmail.com>
To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Subject: Re: [FFmpeg-devel] [PATCH 1/8] lavc/avcodec: simplify codec id/type validity checking
Date: Sun, 5 Jun 2022 05:23:18 +0000
Message-ID: <DM8P223MB0365783CC5AF48817C137226BAA39@DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM> (raw)
In-Reply-To: <20220323155720.20017-1-anton@khirnov.net>



> -----Original Message-----
> From: ffmpeg-devel <ffmpeg-devel-bounces@ffmpeg.org> On Behalf Of Anton
> Khirnov
> Sent: Wednesday, March 23, 2022 4:57 PM
> To: ffmpeg-devel@ffmpeg.org
> Subject: [FFmpeg-devel] [PATCH 1/8] lavc/avcodec: simplify codec id/type
> validity checking
> 
> On entry to avcodec_open2(), the type and id either have to be
> UNKNOWN/NONE or have to match the codec to be used.
> ---
>  libavcodec/avcodec.c | 14 ++++++--------
>  1 file changed, 6 insertions(+), 8 deletions(-)
> 
> diff --git a/libavcodec/avcodec.c b/libavcodec/avcodec.c
> index fbe4a5e413..dbaa9f78a2 100644
> --- a/libavcodec/avcodec.c
> +++ b/libavcodec/avcodec.c
> @@ -158,17 +158,15 @@ int attribute_align_arg avcodec_open2(AVCodecContext
> *avctx, const AVCodec *code
>          codec = avctx->codec;
>      codec2 = ffcodec(codec);
> 
> -    if ((avctx->codec_type == AVMEDIA_TYPE_UNKNOWN || avctx->codec_type ==
> codec->type) &&
> -        avctx->codec_id == AV_CODEC_ID_NONE) {
> -        avctx->codec_type = codec->type;
> -        avctx->codec_id   = codec->id;
> -    }
> -    if (avctx->codec_id != codec->id || (avctx->codec_type != codec->type &&
> -                                         avctx->codec_type !=
> AVMEDIA_TYPE_ATTACHMENT)) {
> +    if ((avctx->codec_type != AVMEDIA_TYPE_UNKNOWN && avctx->codec_type !=
> codec->type) ||
> +        (avctx->codec_id   != AV_CODEC_ID_NONE     && avctx->codec_id   !=
> codec->id)) {
>          av_log(avctx, AV_LOG_ERROR, "Codec type or id mismatches\n");
>          return AVERROR(EINVAL);
>      }
> -    avctx->codec = codec;
> +
> +    avctx->codec_type = codec->type;
> +    avctx->codec_id   = codec->id;
> +    avctx->codec      = codec;
> 
>      if (avctx->extradata_size < 0 || avctx->extradata_size >=
> FF_MAX_EXTRADATA_SIZE)
>          return AVERROR(EINVAL);
> --

This is causing a regression in ffprobe. 

The commit removes the special-case check for AVMEDIA_TYPE_ATTACHMENT which 
was required for ffprobe and had been added with e83c716e16c52fa56a78274408f7628e5dc719da.

The demand from the commit message is not yet guaranteed to be fulfilled:

> On entry to avcodec_open2(), the type and id either have to be
> UNKNOWN/NONE or have to match the codec to be used.

I have one verified example (maybe a second will follow), which is an MKV with
an attachment "stream" of type "text".
The found codec will be textdec of type 'subtitle' even though the stream type
is attachment. Without the special condition for attachment streams, this 
is now causing ffprobe to error out with non-zero exit code and incomplete 
output.


------------------------------------------------------------------------
Example:
  
  [...]
  Stream #0:9: Attachment: text
    Metadata:
      filename        : textfile.text
      mimetype        : text/plain
[text @ 000001AC32310340] Codec type or id mismatches
Could not open codec for input stream 9
------------------------------------------------------------------------

Regards,
softworkz
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

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

  parent reply	other threads:[~2022-06-05  5:23 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-23 15:57 Anton Khirnov
2022-03-23 15:57 ` [FFmpeg-devel] [PATCH 2/8] lavc/avcodec: only allocate the encoding frame for encoders Anton Khirnov
2022-03-23 16:29   ` James Almer
2022-04-11  8:39     ` [FFmpeg-devel] [PATCH] lavc/encode: drop EncodeSimpleContext Anton Khirnov
2022-04-11  9:16       ` Paul B Mahol
2022-04-11 16:32       ` James Almer
2022-03-23 15:57 ` [FFmpeg-devel] [PATCH 3/8] lavc: move default get_buffer2() to its own file Anton Khirnov
2022-03-23 15:57 ` [FFmpeg-devel] [PATCH 4/8] lavc/snow: only allocate mconly_picture for decoding Anton Khirnov
2022-03-24 23:07   ` Michael Niedermayer
2022-04-11  8:49     ` [FFmpeg-devel] [PATCH] " Anton Khirnov
2022-04-11 19:28       ` Michael Niedermayer
2022-04-13 10:21         ` Anton Khirnov
2022-03-23 15:57 ` [FFmpeg-devel] [PATCH 5/8] lavc/encode: add an encoder-specific get_buffer() variant Anton Khirnov
2022-03-23 16:26   ` James Almer
2022-04-11  9:05     ` [FFmpeg-devel] [PATCH] " Anton Khirnov
2022-03-23 15:57 ` [FFmpeg-devel] [PATCH 6/8] lavc/avcodec: only allocate decoding packets for decoders Anton Khirnov
2022-04-13 14:51   ` Andreas Rheinhardt
2022-03-23 15:57 ` [FFmpeg-devel] [PATCH 7/8] lavc/pthread_frame: do not copy AVCodecInternal contents Anton Khirnov
2022-03-23 15:57 ` [FFmpeg-devel] [PATCH 8/8] lavc: drop a confusing message about "thread emulation" Anton Khirnov
2022-04-13 10:23 ` [FFmpeg-devel] [PATCH 1/8] lavc/avcodec: simplify codec id/type validity checking Anton Khirnov
2022-06-05  5:23 ` Soft Works [this message]
2022-06-05  7:01 ` Anton Khirnov
2022-06-05  7:54   ` Soft Works
2022-06-05  7:59     ` Soft Works
2022-06-05  8:20   ` Anton Khirnov
2022-06-05  8:55     ` Paul B Mahol
2022-06-05  8:55     ` Soft Works
2022-06-05  9:15     ` Soft Works
2022-06-05 10:42     ` Anton Khirnov
2022-06-05 10:55       ` Soft Works
2022-06-05 11:10       ` Soft Works
2022-06-05 13:20       ` Anton Khirnov
2022-06-05 14:06         ` Soft Works

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=DM8P223MB0365783CC5AF48817C137226BAA39@DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM \
    --to=softworkz@hotmail.com \
    --cc=ffmpeg-devel@ffmpeg.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
		ffmpegdev@gitmailbox.com
	public-inbox-index ffmpegdev

Example config snippet for mirrors.


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git