On Mon, 30 Jan 2017, Peter Große wrote:
Bandwidth information is required in the manifest, but not always
provided by the demuxer. In that case calculate the bandwith based
on the size and duration of the first segment.
Signed-off-by: Peter Große <[email protected]>
---
v3: replaced unnecessary casts to double
---
libavformat/dashenc.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/libavformat/dashenc.c b/libavformat/dashenc.c
index 98722cd..21acb90 100644
--- a/libavformat/dashenc.c
+++ b/libavformat/dashenc.c
@@ -834,6 +834,16 @@ static int dash_flush(AVFormatContext *s, int final, int
stream)
if (ret < 0)
break;
}
+
+ if (!os->bit_rate) {
+ // calculate average bitrate of first segment
+ int64_t bitrate = (int64_t) range_length * 8 * AV_TIME_BASE /
(os->max_pts - os->start_pts);
+ if (bitrate >= 0) {
+ os->bit_rate = bitrate;
+ snprintf(os->bandwidth_str, sizeof(os->bandwidth_str),
+ " bandwidth=\"%d\"", os->bit_rate);
+ }
+ }
add_segment(os, filename, os->start_pts, os->max_pts - os->start_pts,
start_pos, range_length, index_length);
av_log(s, AV_LOG_VERBOSE, "Representation %d media segment %d written to:
%s\n", i, os->segment_index, full_path);
}
--
2.10.2
LGTM, thanks
// Martin
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel