|
|
@@ -1293,13 +1293,16 @@ static int s5p_jpeg_querycap(struct file *file, void *priv,
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-static int enum_fmt(struct s5p_jpeg_fmt *sjpeg_formats, int n,
|
|
|
+static int enum_fmt(struct s5p_jpeg_ctx *ctx,
|
|
|
+ struct s5p_jpeg_fmt *sjpeg_formats, int n,
|
|
|
struct v4l2_fmtdesc *f, u32 type)
|
|
|
{
|
|
|
int i, num = 0;
|
|
|
+ unsigned int fmt_ver_flag = ctx->jpeg->variant->fmt_ver_flag;
|
|
|
|
|
|
for (i = 0; i < n; ++i) {
|
|
|
- if (sjpeg_formats[i].flags & type) {
|
|
|
+ if (sjpeg_formats[i].flags & type &&
|
|
|
+ sjpeg_formats[i].flags & fmt_ver_flag) {
|
|
|
/* index-th format of type type found ? */
|
|
|
if (num == f->index)
|
|
|
break;
|
|
|
@@ -1326,11 +1329,11 @@ static int s5p_jpeg_enum_fmt_vid_cap(struct file *file, void *priv,
|
|
|
struct s5p_jpeg_ctx *ctx = fh_to_ctx(priv);
|
|
|
|
|
|
if (ctx->mode == S5P_JPEG_ENCODE)
|
|
|
- return enum_fmt(sjpeg_formats, SJPEG_NUM_FORMATS, f,
|
|
|
+ return enum_fmt(ctx, sjpeg_formats, SJPEG_NUM_FORMATS, f,
|
|
|
SJPEG_FMT_FLAG_ENC_CAPTURE);
|
|
|
|
|
|
- return enum_fmt(sjpeg_formats, SJPEG_NUM_FORMATS, f,
|
|
|
- SJPEG_FMT_FLAG_DEC_CAPTURE);
|
|
|
+ return enum_fmt(ctx, sjpeg_formats, SJPEG_NUM_FORMATS, f,
|
|
|
+ SJPEG_FMT_FLAG_DEC_CAPTURE);
|
|
|
}
|
|
|
|
|
|
static int s5p_jpeg_enum_fmt_vid_out(struct file *file, void *priv,
|
|
|
@@ -1339,11 +1342,11 @@ static int s5p_jpeg_enum_fmt_vid_out(struct file *file, void *priv,
|
|
|
struct s5p_jpeg_ctx *ctx = fh_to_ctx(priv);
|
|
|
|
|
|
if (ctx->mode == S5P_JPEG_ENCODE)
|
|
|
- return enum_fmt(sjpeg_formats, SJPEG_NUM_FORMATS, f,
|
|
|
+ return enum_fmt(ctx, sjpeg_formats, SJPEG_NUM_FORMATS, f,
|
|
|
SJPEG_FMT_FLAG_ENC_OUTPUT);
|
|
|
|
|
|
- return enum_fmt(sjpeg_formats, SJPEG_NUM_FORMATS, f,
|
|
|
- SJPEG_FMT_FLAG_DEC_OUTPUT);
|
|
|
+ return enum_fmt(ctx, sjpeg_formats, SJPEG_NUM_FORMATS, f,
|
|
|
+ SJPEG_FMT_FLAG_DEC_OUTPUT);
|
|
|
}
|
|
|
|
|
|
static struct s5p_jpeg_q_data *get_q_data(struct s5p_jpeg_ctx *ctx,
|