mirror of https://gitee.com/openkylin/linux.git
media: vicodec: Add a flag for I-frames in fwht header
Add a flag 'FWHT_FL_I_FRAME' that indicates that this is an I-frame. This requires incrementing to version 3 This flag is needed for the upcoming stateless FWHT decoder since it has to know if an encoded frame is an I or a P frame. Signed-off-by: Dafna Hirschfeld <dafna3@gmail.com> [hverkuil-cisco@xs4all.nl: added the last paragraph of the commit msg] Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
This commit is contained in:
parent
73a1d43293
commit
75e3e5b85d
|
@ -56,7 +56,7 @@
|
|||
#define FWHT_MAGIC1 0x4f4f4f4f
|
||||
#define FWHT_MAGIC2 0xffffffff
|
||||
|
||||
#define FWHT_VERSION 2
|
||||
#define FWHT_VERSION 3
|
||||
|
||||
/* Set if this is an interlaced format */
|
||||
#define FWHT_FL_IS_INTERLACED BIT(0)
|
||||
|
@ -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_I_FRAME BIT(10)
|
||||
|
||||
/* A 4-values flag - the number of components - 1 */
|
||||
#define FWHT_FL_COMPONENTS_NUM_MSK GENMASK(18, 16)
|
||||
|
|
|
@ -218,6 +218,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_I_FRAME;
|
||||
if (rf.height_div == 1)
|
||||
flags |= FWHT_FL_CHROMA_FULL_HEIGHT;
|
||||
if (rf.width_div == 1)
|
||||
|
@ -265,7 +267,7 @@ int v4l2_fwht_decode(struct v4l2_fwht_state *state, u8 *p_in, u8 *p_out)
|
|||
|
||||
flags = ntohl(state->header.flags);
|
||||
|
||||
if (version == FWHT_VERSION) {
|
||||
if (version >= 2) {
|
||||
if ((flags & FWHT_FL_PIXENC_MSK) != info->pixenc)
|
||||
return -EINVAL;
|
||||
components_num = 1 + ((flags & FWHT_FL_COMPONENTS_NUM_MSK) >>
|
||||
|
|
|
@ -339,7 +339,7 @@ info_from_header(const struct fwht_cframe_hdr *p_hdr)
|
|||
unsigned int pixenc = 0;
|
||||
unsigned int version = ntohl(p_hdr->version);
|
||||
|
||||
if (version == FWHT_VERSION) {
|
||||
if (version >= 2) {
|
||||
components_num = 1 + ((flags & FWHT_FL_COMPONENTS_NUM_MSK) >>
|
||||
FWHT_FL_COMPONENTS_NUM_OFFSET);
|
||||
pixenc = (flags & FWHT_FL_PIXENC_MSK);
|
||||
|
@ -362,7 +362,7 @@ static bool is_header_valid(const struct fwht_cframe_hdr *p_hdr)
|
|||
if (w < MIN_WIDTH || w > MAX_WIDTH || h < MIN_HEIGHT || h > MAX_HEIGHT)
|
||||
return false;
|
||||
|
||||
if (version == FWHT_VERSION) {
|
||||
if (version >= 2) {
|
||||
unsigned int components_num = 1 +
|
||||
((flags & FWHT_FL_COMPONENTS_NUM_MSK) >>
|
||||
FWHT_FL_COMPONENTS_NUM_OFFSET);
|
||||
|
|
Loading…
Reference in New Issue