Hi!

Attached patch from MIKEH / Elemental is apparently meant to implement setting h264 bitrate. It makes no difference for the sample from ticket #3392.

I have no idea how to attribute the patch.

Please comment, Carl Eugen
diff --git a/libavcodec/h264_ps.c b/libavcodec/h264_ps.c
index 2013670..2f48f72 100644
--- a/libavcodec/h264_ps.c
+++ b/libavcodec/h264_ps.c
@@ -130,6 +130,7 @@ static const uint8_t default_scaling8[2][64] = {
 static inline int decode_hrd_parameters(H264Context *h, SPS *sps)
 {
     int cpb_count, i;
+    int bit_rate_scale, bit_rate_value = 0;
     cpb_count = get_ue_golomb_31(&h->gb) + 1;
 
     if (cpb_count > 32U) {
@@ -137,13 +138,15 @@ static inline int decode_hrd_parameters(H264Context *h, SPS *sps)
         return AVERROR_INVALIDDATA;
     }
 
-    get_bits(&h->gb, 4); /* bit_rate_scale */
+    bit_rate_scale = get_bits(&h->gb, 4); /* bit_rate_scale */
     get_bits(&h->gb, 4); /* cpb_size_scale */
     for (i = 0; i < cpb_count; i++) {
-        get_ue_golomb_long(&h->gb); /* bit_rate_value_minus1 */
+        bit_rate_value = get_ue_golomb_long(&h->gb); /* bit_rate_value_minus1 */
         get_ue_golomb_long(&h->gb); /* cpb_size_value_minus1 */
         get_bits1(&h->gb);          /* cbr_flag */
     }
+    if (bit_rate_value)
+        h->avctx->bit_rate = bit_rate_value + 1 << bit_rate_scale + 6;
     sps->initial_cpb_removal_delay_length = get_bits(&h->gb, 5) + 1;
     sps->cpb_removal_delay_length         = get_bits(&h->gb, 5) + 1;
     sps->dpb_output_delay_length          = get_bits(&h->gb, 5) + 1;
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to