Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
From: Bernardo Pilarz via ffmpeg-devel <ffmpeg-devel@ffmpeg.org>
To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Cc: Bernardo Pilarz <bernardo.pilarz@aitek.it>
Subject: Re: [FFmpeg-devel] [PATCH] avcodec/avformat: Added codec_name to AVCodecContext and AVCodecParameters
Date: Wed, 3 Jul 2024 11:56:23 +0200
Message-ID: <20f24967-a341-4eba-adaf-5a0592d3c98f@aitek.it> (raw)
In-Reply-To: <171999784133.21847.14283142110470102625@lain.khirnov.net>

On 03/07/2024 11:10, Anton Khirnov wrote:
> Quoting Bernardo Pilarz via ffmpeg-devel (2024-07-03 10:10:15)
>>>> +    char *codec_name;
>>>>         const struct AVCodec  *codec;
>>>>         enum AVCodecID     codec_id; /* see AV_CODEC_ID_xxx */
>>>>
>>> Adding a new field here is an ABI break, it would need to go at the
>>> end of the struct.
>>>
>>> In general, I feel like this might be better served to go into
>>> metadata though, especially as very few containers have a string codec
>>> identifier to begin with.
>> I would be very glad to do it the right way, but I need some guidance
>> since this is the first time I try to contribute to FFmpeg.
>>
>> The problem that I am trying to solve is receiving metadata from an RTSP
>> stream (in example, ONVIF metadata identified by the codec name
>> 'vcd.onvif.metadata').
>> This is data that the application will want to handle on its own (and
>> not through FFmpeg).
>>
>> Can you guide me on how to do this properly?
> First of all, this should definitely NOT go into AVCodecContext, since
> the entire premise is that we have no codec ID and hence no decoders or
> encoders, so a codec context makes no sense.
>
> Next, the idea that you can define a generic container-independent
> "codec name" sounds dubious to me, as they are not universally
> standardized. You'd either have to define precisely what can the API
> caller expect in there, or make this a private AV_OPT_FLAG_EXPORT option
> of your demuxer. I'd suggest the second, as it's much simpler, though
> IIRC we do not yet support per-stream private options.
>
I ended up adding it to the AVCodecContext because 
'avformat_find_stream_info()' invokes 'avcodec_parameters_to_context()' 
followed by 'avcodec_parameters_from_context()', thereby overwriting the 
entire 'codecpar' field of each stream in my format context.
This also means that an AVCodecContext is in fact created even for 
streams with no codec ID.

It's not clear to me how I can use AV_OPT_FLAG_EXPORT (it's my fault 
because I don't know the library so well).
It might very well be the solution I am looking for, but I need some 
help in understanding how to implement it.

The basic problem is I need to get the "codec name" information that is 
available in 'sdp_parse_rtpmap()' and is completely lost when the codec 
is not supported by FFmpeg.
By the way, we are talking of AVMEDIA_TYPE_DATA streams, and codecs that 
are potentially custom/not widespread and therefore should probably be 
handled by the application rather than by ffmpeg itself.

P.S.: I am currently only using FFmpeg to grab an RTSP stream. The audio 
and video streams might very well get decoded using FFmpeg later on, but 
so far I am only concerned with getting the compressed packets and being 
able to read their declared codec names.


-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.

_______________________________________________
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".

  reply	other threads:[~2024-07-03  9:56 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-07-03  7:47 Bernardo Pilarz via ffmpeg-devel
2024-07-03  8:02 ` Hendrik Leppkes
2024-07-03  8:10   ` Bernardo Pilarz via ffmpeg-devel
2024-07-03  9:10     ` Anton Khirnov
2024-07-03  9:56       ` Bernardo Pilarz via ffmpeg-devel [this message]
2024-07-03 12:30         ` Bernardo Pilarz via ffmpeg-devel
  -- strict thread matches above, loose matches on Subject: below --
2024-07-02 13:03 Bernardo Pilarz via ffmpeg-devel

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=20f24967-a341-4eba-adaf-5a0592d3c98f@aitek.it \
    --to=ffmpeg-devel@ffmpeg.org \
    --cc=bernardo.pilarz@aitek.it \
    /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