[Mesa-dev] [PATCH v3 4/8] radeon/uvd:add uvd hevc enc hw ib implementation

Mark Thompson sw at jkqxz.net
Sat Feb 10 16:20:50 UTC 2018


On 09/02/18 20:35, James Zhu wrote:
> Implement required IBs for UVD HEVC encode.
> 
> Signed-off-by: James Zhu <James.Zhu at amd.com>
> ---
>  src/gallium/drivers/radeon/radeon_uvd_enc_1_1.c | 1115 +++++++++++++++++++++++
>  1 file changed, 1115 insertions(+)
>  create mode 100644 src/gallium/drivers/radeon/radeon_uvd_enc_1_1.c
> 
> diff --git a/src/gallium/drivers/radeon/radeon_uvd_enc_1_1.c b/src/gallium/drivers/radeon/radeon_uvd_enc_1_1.c
> new file mode 100644
> index 0000000..2b8156e
> --- /dev/null
> +++ b/src/gallium/drivers/radeon/radeon_uvd_enc_1_1.c
> @@ -0,0 +1,1115 @@
> ...
> +
> +static void
> +radeon_uvd_enc_emulation_prevention(struct radeon_uvd_encoder *enc,
> +                                    unsigned char byte)
> +{
> +   if (enc->emulation_prevention) {
> +      if ((enc->num_zeros >= 2)
> +          && ((byte == 0x00) || (byte == 0x01) || (byte == 0x03))) {

Shouldn't { 0, 0, 2 } also trigger emulation prevention?  Or am I not understanding what this function does?

> +         radeon_uvd_enc_output_one_byte(enc, 0x03);
> +         enc->bits_output += 8;
> +         enc->num_zeros = 0;
> +      }
> +      enc->num_zeros = (byte == 0 ? (enc->num_zeros + 1) : 0);
> +   }
> +}
> +
> ...

Thanks,

- Mark


More information about the mesa-dev mailing list