aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLimin Wang <lance.lmwang@gmail.com>2021-10-11 23:37:17 +0800
committerLimin Wang <lance.lmwang@gmail.com>2021-10-17 16:54:03 +0800
commitb07437f956f911dd76abb2ab0d5f3204a85e34da (patch)
treed0cbe9aba40fbab5eb60b3e21dcdd3967cf6e8b5
parent84c73102d933c9b7f64f504196c91edddad99618 (diff)
downloadffmpeg-b07437f956f911dd76abb2ab0d5f3204a85e34da.tar.gz
avformat/rtpdec_rfc4175: add support for exactframerate
Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
-rw-r--r--libavformat/rtpdec_rfc4175.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/libavformat/rtpdec_rfc4175.c b/libavformat/rtpdec_rfc4175.c
index 712c6830f9..060f725d3c 100644
--- a/libavformat/rtpdec_rfc4175.c
+++ b/libavformat/rtpdec_rfc4175.c
@@ -25,9 +25,11 @@
#include "rtpdec_formats.h"
#include "libavutil/avstring.h"
#include "libavutil/pixdesc.h"
+#include "libavutil/parseutils.h"
struct PayloadContext {
char *sampling;
+ AVRational framerate;
int depth;
int width;
int height;
@@ -69,6 +71,11 @@ static int rfc4175_parse_format(AVStream *stream, PayloadContext *data)
stream->codecpar->bits_per_coded_sample = av_get_bits_per_pixel(desc);
data->frame_size = data->width * data->height * data->pgroup / data->xinc;
+ if (data->framerate.den > 0) {
+ stream->avg_frame_rate = data->framerate;
+ stream->codecpar->bit_rate = data->frame_size * av_q2d(data->framerate) * 8;
+ }
+
return 0;
}
@@ -84,6 +91,10 @@ static int rfc4175_parse_fmtp(AVFormatContext *s, AVStream *stream,
data->sampling = av_strdup(value);
else if (!strncmp(attr, "depth", 5))
data->depth = atoi(value);
+ else if (!strncmp(attr, "exactframerate", 14)) {
+ if (av_parse_video_rate(&data->framerate, value) < 0)
+ return AVERROR(EINVAL);
+ }
return 0;
}