143 lines
4.5 KiB
Diff
143 lines
4.5 KiB
Diff
From 88f6aeb90e1f3138eaa4f1ffd44d34b51dd43192 Mon Sep 17 00:00:00 2001
|
|
From: Nicolas Dufresne <nicolas.dufresne@collabora.com>
|
|
Date: Wed, 15 Nov 2023 19:18:18 -0500
|
|
Subject: [PATCH 63/68] v4l2codecs: h264dec: Remove dead and broken code
|
|
|
|
Its not possible with the current uAPI to ask the driver for the QP
|
|
range.
|
|
Upstream-Status: Pending
|
|
---
|
|
sys/v4l2codecs/gstv4l2codech264enc.c | 40 +++++-----------------------
|
|
sys/v4l2codecs/gstv4l2encoder.c | 25 -----------------
|
|
2 files changed, 7 insertions(+), 58 deletions(-)
|
|
|
|
diff --git a/sys/v4l2codecs/gstv4l2codech264enc.c b/sys/v4l2codecs/gstv4l2codech264enc.c
|
|
index b1617c9..967fd4d 100644
|
|
--- a/sys/v4l2codecs/gstv4l2codech264enc.c
|
|
+++ b/sys/v4l2codecs/gstv4l2codech264enc.c
|
|
@@ -58,18 +58,6 @@ static GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE ("src",
|
|
"profile = (string) { main, constrained-baseline, baseline}")
|
|
);
|
|
|
|
-
|
|
-#define H264ENC_DEFAULT_KEYFRAME_INTERVAL 30
|
|
-
|
|
-#define H264_MAX_QUALITY 63
|
|
-#define H264_MIN_QUALITY 0
|
|
-
|
|
-#define H264_DEFAULT_BITRATE 100000
|
|
-
|
|
-/* Scale factor for bitrate (HRD bit_rate_scale: min = 6) */
|
|
-#define SX_BITRATE 6
|
|
-/* Scale factor for cpb_size (HRD cpb_size_scale: min = 4) */
|
|
-#define SX_CPB_SIZE 4
|
|
/* Maximum sizes for common headers (in bits) */
|
|
#define MAX_SPS_HDR_SIZE 16473
|
|
#define MAX_VUI_PARAMS_SIZE 210
|
|
@@ -77,8 +65,6 @@ static GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE ("src",
|
|
#define MAX_PPS_HDR_SIZE 101
|
|
#define MAX_SLICE_HDR_SIZE 397 + 2572 + 6670 + 2402
|
|
|
|
-#define MAX_GOP_SIZE 1024
|
|
-
|
|
#define SPS_SIZE 4 + GST_ROUND_UP_8 (MAX_SPS_HDR_SIZE + MAX_VUI_PARAMS_SIZE + \
|
|
2 * MAX_HRD_PARAMS_SIZE) / 8
|
|
#define PPS_SIZE 4 + GST_ROUND_UP_8 (MAX_PPS_HDR_SIZE) / 8
|
|
@@ -93,7 +79,6 @@ struct _GstV4l2CodecH264Enc
|
|
gint height;
|
|
gint width_in_macroblocks;
|
|
gint height_in_macroblocks;
|
|
- guint qp_max, qp_min;
|
|
guint64 targeted_bitrate;
|
|
gboolean cabac;
|
|
guint cabac_init_idc;
|
|
@@ -699,9 +684,6 @@ gst_v4l2_codec_h264_enc_set_format (GstVideoEncoder * encoder,
|
|
return FALSE;
|
|
}
|
|
|
|
- gst_v4l2_codec_h264_enc_get_qp_range (self->encoder, &self->qp_min,
|
|
- &self->qp_max);
|
|
-
|
|
gst_v4l2_codec_h264_enc_init_sps_pps (self, state);
|
|
|
|
return TRUE;
|
|
@@ -911,6 +893,7 @@ gst_v4l2_codec_h264_enc_fill_encode_params (GstH264Encoder * encoder,
|
|
self->encode_params.cabac_init_idc = self->cabac_init_idc;
|
|
|
|
self->encode_params.pic_init_qp_minus26 = self->pps.pic_init_qp_minus26;
|
|
+
|
|
self->encode_params.chroma_qp_index_offset = self->pps.chroma_qp_index_offset;
|
|
self->encode_params.disable_deblocking_filter_idc = 0;
|
|
}
|
|
@@ -922,21 +905,9 @@ gst_v4l2_codec_h264_enc_fill_encode_rc (GstH264Encoder * encoder,
|
|
GstV4l2CodecH264Enc *self = GST_V4L2_CODEC_H264_ENC (encoder);
|
|
|
|
/* Rate Control */
|
|
- self->encode_rc.qp = self->pps.pic_init_qp_minus26 + 26; //encoder->rc.qp;
|
|
- self->encode_rc.qp_min = self->qp_min;
|
|
- self->encode_rc.qp_max = self->qp_max;
|
|
-}
|
|
-
|
|
-static guint
|
|
-gst_v4l2_codec_h264_enc_check_qp_range (GstV4l2CodecH264Enc * self,
|
|
- GstH264Frame * h264_frame)
|
|
-{
|
|
- if (h264_frame->quality > self->qp_max)
|
|
- return self->qp_max;
|
|
- if (h264_frame->quality < self->qp_min)
|
|
- return self->qp_min;
|
|
-
|
|
- return h264_frame->quality;
|
|
+ self->encode_rc.qp = h264_frame->quality;
|
|
+ self->encode_rc.qp_min = 0;
|
|
+ self->encode_rc.qp_max = 51;
|
|
}
|
|
|
|
static GstFlowReturn
|
|
@@ -988,6 +959,9 @@ gst_v4l2_codec_h264_enc_encode_frame (GstH264Encoder * encoder,
|
|
goto done;
|
|
}
|
|
|
|
+ GST_DEBUG_OBJECT (self, "encode h264 frame with quality = %d",
|
|
+ h264_frame->quality);
|
|
+
|
|
request = gst_v4l2_encoder_alloc_request (self->encoder,
|
|
frame->system_frame_number, frame->input_buffer, frame->output_buffer);
|
|
|
|
diff --git a/sys/v4l2codecs/gstv4l2encoder.c b/sys/v4l2codecs/gstv4l2encoder.c
|
|
index 85f0457..27f03e9 100644
|
|
--- a/sys/v4l2codecs/gstv4l2encoder.c
|
|
+++ b/sys/v4l2codecs/gstv4l2encoder.c
|
|
@@ -1520,28 +1520,3 @@ gst_v4l2_codec_vp8_enc_get_qp_range (GstV4l2Encoder * self,
|
|
|
|
return TRUE;
|
|
}
|
|
-
|
|
-gboolean
|
|
-gst_v4l2_codec_h264_enc_get_qp_range (GstV4l2Encoder * self,
|
|
- guint * qp_min, guint * qp_max)
|
|
-{
|
|
- gint ret;
|
|
- struct v4l2_query_ext_ctrl control = {
|
|
- .id = V4L2_CID_STATELESS_H264_ENCODE_RC,
|
|
- };
|
|
-
|
|
- *qp_max = 127;
|
|
- *qp_min = 0;
|
|
-
|
|
- ret = ioctl (self->video_fd, VIDIOC_QUERY_EXT_CTRL, &control);
|
|
- if (ret < 0) {
|
|
- GST_DEBUG_OBJECT (self, "unable to retrieve encoder qp, use default");
|
|
- return FALSE;
|
|
- }
|
|
-
|
|
- *qp_max = control.maximum;
|
|
- *qp_min = control.minimum;
|
|
- GST_DEBUG_OBJECT (self, "encoder qp min %d qp max %d", *qp_min, *qp_max);
|
|
-
|
|
- return TRUE;
|
|
-}
|
|
--
|
|
2.25.1
|
|
|