[FFmpeg-devel] [PATCH] Add the frame size attribute to SDP descriptions
Luca Abeni
lucabe72
Fri Jan 8 11:31:17 CET 2010
Martin Storsj? wrote:
[...]
>> 2) Not using c->{width,height}, but using the AVMetadata
>> infrastructure... This might be a little bit more complex, but
>> I believe it is more flexible, allowing the user to add more "a="
>> lines if needed (without needing to modify sdp.c every time).
>> My basic idea is that if the AVFormatContext contains a metadata
>> tag with key "key" and value "value", then the "a=key:value" line
>> is added to the SDP (the "title" metadata should be excluded
>> because it is already used for the "s=" line).
>
> That would at least be the most general thing, leaving the choice to the
> libavformat user. That'd also be good for adding the other 3gpp SDP
> headers mentioned in the same document.
Yes, this is why I had this idea.
> However, if e.g. transcoding a stream with ffmpeg, where the input file
> has some normal metadata, wouldn't these be copied into the SDP, resulting
> in completely bogus SDP entries?
Right... I did not think about this problem...
> Should the AVMetadata entries to be added
> to the SDP be tagged in some way, e.g. key = sdp:keyname, adding a
> a=keyname:value in that case?
This looks a good solution to the problem, thanks!
> As for setting this particular attribute - it includes the payload type
> number, which is set internally within the rtp muxer and sdp writer and
> not available to the libavformat user setting the AVMetadata entries, so
> setting it externally isn't too easy, if we don't make assumptions about
> in which way libavformat assigns the payload type numbers.
Yes... I thought about this problem. Right now, libavformat is using
dynamic payload type 96 for video and 97 for audio (so, externally setting
this attribute should not be a problem), but this might change in the
future.
I think the best solution would be to support some kind of "special keyword"
in the attribute value, which the SDP generator replaces with the payload
type. For example, something like "%PT 352-288" will generate "96 352-288"...
Anyway, this is becoming complex. If there is need for the "framesize"
attribute now, I can commit your patch with a comment... (hoping that
someone can provide the "correct patch" in a second time).
Let me know.
> Some other formats (such as AAC, H.264) add extradata to the SDP, so in
> those cases, you can't change parameters later on in the stream anyway.
I do not know about AAC, but H.264 does not require "out-of-band config
informations". In other words "sprop-parameters-set" is not mandatory, and
you can encode H.264 video without using CODEC_FLAG_GLOBAL_HEADER. This
will place SPS and PPS inline in the video stream and will allow changing
the video resolution. I've been told that some DVB-H channels do this (for
commercials, or similar reasons).
Thanks,
Luca
More information about the ffmpeg-devel
mailing list