Hi Dafna,

On 2/15/19 2:05 PM, Dafna Hirschfeld wrote:
> Add the flag 'FWHT_FL_P_FRAME' to indicate that
> the frame is a p-frame so it needs the previous buffer
> as a reference frame. This is needed for the stateless
> codecs.
> 
> Signed-off-by: Dafna Hirschfeld <daf...@gmail.com>
> ---
>  drivers/media/platform/vicodec/codec-fwht.h      | 1 +
>  drivers/media/platform/vicodec/codec-v4l2-fwht.c | 2 ++
>  2 files changed, 3 insertions(+)
> 
> diff --git a/drivers/media/platform/vicodec/codec-fwht.h 
> b/drivers/media/platform/vicodec/codec-fwht.h
> index eab4a97aa132..c2b1f3cc9fed 100644
> --- a/drivers/media/platform/vicodec/codec-fwht.h
> +++ b/drivers/media/platform/vicodec/codec-fwht.h
> @@ -76,6 +76,7 @@
>  #define FWHT_FL_CHROMA_FULL_HEIGHT   BIT(7)
>  #define FWHT_FL_CHROMA_FULL_WIDTH    BIT(8)
>  #define FWHT_FL_ALPHA_IS_UNCOMPRESSED        BIT(9)
> +#define FWHT_FL_P_FRAME                      BIT(10)

I thought about this some more and I think we need two changes here:

1) invert the flag, so rename it to FWHT_FL_I_FRAME. It makes more sense
   to signal an I frame than it is to signal a P frame (there are a lot
   more P frames than I frames)

2) this requires that the version of the codec will have to be updated.
   So a stateless decoder can only handle version 3 and up.

It also means for the stateless decoder that the version number should be
part of struct v4l2_ctrl_fwht_params so the driver can reject older versions.

If possible, can you make a patch for vicodec for the current master that
implements these two changes? It would be desirable to get this in for 5.1.

Regards,

        Hans

>  
>  /* A 4-values flag - the number of components - 1 */
>  #define FWHT_FL_COMPONENTS_NUM_MSK   GENMASK(18, 16)
> diff --git a/drivers/media/platform/vicodec/codec-v4l2-fwht.c 
> b/drivers/media/platform/vicodec/codec-v4l2-fwht.c
> index 40b1f4901fd3..1c20b5685201 100644
> --- a/drivers/media/platform/vicodec/codec-v4l2-fwht.c
> +++ b/drivers/media/platform/vicodec/codec-v4l2-fwht.c
> @@ -257,6 +257,8 @@ int v4l2_fwht_encode(struct v4l2_fwht_state *state, u8 
> *p_in, u8 *p_out)
>               flags |= FWHT_FL_CR_IS_UNCOMPRESSED;
>       if (encoding & FWHT_ALPHA_UNENCODED)
>               flags |= FWHT_FL_ALPHA_IS_UNCOMPRESSED;
> +     if (encoding & FWHT_FRAME_PCODED)
> +             flags |= FWHT_FL_P_FRAME;
>       if (rf.height_div == 1)
>               flags |= FWHT_FL_CHROMA_FULL_HEIGHT;
>       if (rf.width_div == 1)
> 

Reply via email to