media: amphion: decoder add support to sorenson spark format
Subsystems (2)
Ming Qian
maintainerv2 cover media: amphion: decoder add support to sorenson spark format
Sorenson Spark is an implementation of H.263 for use in Flash Video and Adobe Flash files.
amphion decoder can support decoding this video format.
v2
- correct the code in document
Ming Qian (2):
media: add Sorenson Spark video format
media: amphion: support to decode sorenson spark video
.../media/v4l/pixfmt-compressed.rst | 5 +++++ drivers/media/platform/amphion/vdec.c | 7 +++++++ drivers/media/platform/amphion/vpu_malone.c | 18 ++++++++++++++++++ drivers/media/v4l2-core/v4l2-ioctl.c | 1 + include/uapi/linux/videodev2.h | 1 + 5 files changed, 32 insertions(+)
Signature · 7 lines
2.38.1 _______________________________________________ linux-arm-kernel mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Ming Qian
maintainerPATCH v2 1/2 media: add Sorenson Spark video format
Sorenson Spark is an implementation of H.263 for use
in Flash Video and Adobe Flash files.
Sorenson Spark is an incomplete implementation of H.263. It differs mostly in header structure and ranges of the coefficients.
--- Documentation/userspace-api/media/v4l/pixfmt-compressed.rst | 5 +++++ drivers/media/v4l2-core/v4l2-ioctl.c | 1 + include/uapi/linux/videodev2.h | 1 + 3 files changed, 7 insertions(+)
Documentation/userspace-api/media/v4l/pixfmt-compressed.rst +5 -0
@@ -88,6 +88,11 @@ Compressed Formats - ``V4L2_PIX_FMT_H263`` - 'H263' - H263 video elementary stream. + * .. _V4L2-PIX-FMT-SPK: + + - ``V4L2_PIX_FMT_SPK`` + - 'SPK0' + - Sorenson Spark is an implementation of H.263 for use in Flash Video and Adobe Flash files * .. _V4L2-PIX-FMT-MPEG1: - ``V4L2_PIX_FMT_MPEG1``
drivers/media/v4l2-core/v4l2-ioctl.c +1 -0
@@ -1472,6 +1472,7 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt)case V4L2_PIX_FMT_HEVC_SLICE : descr ="HEVC Parsed Slice Data" ;break ;case V4L2_PIX_FMT_FWHT : descr ="FWHT" ;break ;/* used in vicodec */ case V4L2_PIX_FMT_FWHT_STATELESS : descr ="FWHT Stateless" ;break ;/* used in vicodec */ +case V4L2_PIX_FMT_SPK : descr ="Sorenson Spark" ;break ;case V4L2_PIX_FMT_CPIA1 : descr ="GSPCA CPiA YUV" ;break ;case V4L2_PIX_FMT_WNVA : descr ="WNVA" ;break ;case V4L2_PIX_FMT_SN9C10X : descr ="GSPCA SN9C10X" ;break ;
include/uapi/linux/videodev2.h +1 -0
@@ -739,6 +739,7 @@ struct v4l2_pix_format {#define V4L2_PIX_FMT_FWHT_STATELESS v4l2_fourcc('S', 'F', 'W', 'H')/* Stateless FWHT (vicodec) */ #define V4L2_PIX_FMT_H264_SLICE v4l2_fourcc('S', '2', '6', '4')/* H264 parsed slices */ #define V4L2_PIX_FMT_HEVC_SLICE v4l2_fourcc('S', '2', '6', '5')/* HEVC parsed slices */ +#define V4L2_PIX_FMT_SPK v4l2_fourcc('S', 'P', 'K', '0')/* Sorenson Spark */ /* Vendor-specific formats */ #define V4L2_PIX_FMT_CPIA1 v4l2_fourcc('C', 'P', 'I', 'A')/* cpia1 YUV */
Signature · 7 lines
2.38.1 _______________________________________________ linux-arm-kernel mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Re: [PATCH v2 1/2] media: add Sorenson Spark video format
Le jeudi 12 janvier 2023 à 17:04 +0800, Ming Qian a écrit :
Quoted 6 lines
Sorenson Spark is an implementation of H.263 for use
in Flash Video and Adobe Flash files.
Sorenson Spark is an incomplete implementation of H.263. It differs mostly in header structure and ranges of the coefficients.Signed-off-by Ming Qian <[email protected]>
Quoted 46 lines
--- Documentation/userspace-api/media/v4l/pixfmt-compressed.rst | 5 +++++ drivers/media/v4l2-core/v4l2-ioctl.c | 1 + include/uapi/linux/videodev2.h | 1 + 3 files changed, 7 insertions(+)Documentation/userspace-api/media/v4l/pixfmt-compressed.rst +5
-0@@ -88,6 +88,11 @@ Compressed Formats - ``V4L2_PIX_FMT_H263`` - 'H263' - H263 video elementary stream. + * .. _V4L2-PIX-FMT-SPK: + + - ``V4L2_PIX_FMT_SPK`` + - 'SPK0' + - Sorenson Spark is an implementation of H.263 for use in Flash Video and Adobe Flash files * .. _V4L2-PIX-FMT-MPEG1: - ``V4L2_PIX_FMT_MPEG1``drivers/media/v4l2-core/v4l2-ioctl.c +1
-0@@ -1472,6 +1472,7 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt)case V4L2_PIX_FMT_HEVC_SLICE : descr ="HEVC Parsed Slice Data" ;break ;case V4L2_PIX_FMT_FWHT : descr ="FWHT" ;break ;/* used in vicodec */ case V4L2_PIX_FMT_FWHT_STATELESS : descr ="FWHT Stateless" ;break ;/* used in vicodec */ +case V4L2_PIX_FMT_SPK : descr ="Sorenson Spark" ;break ;case V4L2_PIX_FMT_CPIA1 : descr ="GSPCA CPiA YUV" ;break ;case V4L2_PIX_FMT_WNVA : descr ="WNVA" ;break ;case V4L2_PIX_FMT_SN9C10X : descr ="GSPCA SN9C10X" ;break ;include/uapi/linux/videodev2.h +1
-0@@ -739,6 +739,7 @@ struct v4l2_pix_format {#define V4L2_PIX_FMT_FWHT_STATELESS v4l2_fourcc('S', 'F', 'W', 'H')/* Stateless FWHT (vicodec) */ #define V4L2_PIX_FMT_H264_SLICE v4l2_fourcc('S', '2', '6', '4')/* H264 parsed slices */ #define V4L2_PIX_FMT_HEVC_SLICE v4l2_fourcc('S', '2', '6', '5')/* HEVC parsed slices */ +#define V4L2_PIX_FMT_SPK v4l2_fourcc('S', 'P', 'K', '0')/* Sorenson Spark */ /* Vendor-specific formats */ #define V4L2_PIX_FMT_CPIA1 v4l2_fourcc('C', 'P', 'I', 'A')/* cpia1 YUV */
Ming Qian
maintainerPATCH v2 2/2 media: amphion: support to decode sorenson spark video
In reply to Ming QianSorenson Spark is an implementation of H.263 for use in Flash Video and Adobe Flash files.
amphion decoder can support it by insert some startcode before sequence and picture.
--- drivers/media/platform/amphion/vdec.c | 7 +++++++ drivers/media/platform/amphion/vpu_malone.c | 18 ++++++++++++++++++ 2 files changed, 25 insertions(+)
drivers/media/platform/amphion/vdec.c +7 -0
@@ -165,6 +165,13 @@ static const struct vpu_format vdec_formats[] = { .type = V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, .flags = V4L2_FMT_FLAG_DYN_RESOLUTION | V4L2_FMT_FLAG_COMPRESSED }, + { + .pixfmt = V4L2_PIX_FMT_SPK, + .mem_planes = 1, + .comp_planes = 1, + .type = V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, + .flags = V4L2_FMT_FLAG_DYN_RESOLUTION | V4L2_FMT_FLAG_COMPRESSED + }, {0, 0, 0, 0}, };
drivers/media/platform/amphion/vpu_malone.c +18 -0
@@ -562,6 +562,7 @@ static struct malone_fmt_mapping fmt_mappings[] = { {V4L2_PIX_FMT_H263, MALONE_FMT_ASP}, {V4L2_PIX_FMT_JPEG, MALONE_FMT_JPG}, {V4L2_PIX_FMT_VP8, MALONE_FMT_VP8}, + {V4L2_PIX_FMT_SPK, MALONE_FMT_SPK}, };static enum vpu_malone_format vpu_malone_format_remap (u32 pixelformat)
@@ -987,6 +988,7 @@ static const struct malone_padding_scode padding_scodes[] = { {SCODE_PADDING_EOS, V4L2_PIX_FMT_XVID, {0xb1010000, 0x0}}, {SCODE_PADDING_EOS, V4L2_PIX_FMT_H263, {0xb1010000, 0x0}}, {SCODE_PADDING_EOS, V4L2_PIX_FMT_VP8, {0x34010000, 0x0}}, + {SCODE_PADDING_EOS, V4L2_PIX_FMT_SPK, {0x34010000, 0x0}}, {SCODE_PADDING_EOS, V4L2_PIX_FMT_JPEG, {0xefff0000, 0x0}}, {SCODE_PADDING_ABORT, V4L2_PIX_FMT_H264, {0x0B010000, 0}}, {SCODE_PADDING_ABORT, V4L2_PIX_FMT_H264_MVC, {0x0B010000, 0}},
@@ -998,6 +1000,7 @@ static const struct malone_padding_scode padding_scodes[] = { {SCODE_PADDING_ABORT, V4L2_PIX_FMT_XVID, {0xb1010000, 0x0}}, {SCODE_PADDING_ABORT, V4L2_PIX_FMT_H263, {0xb1010000, 0x0}}, {SCODE_PADDING_ABORT, V4L2_PIX_FMT_VP8, {0x34010000, 0x0}}, + {SCODE_PADDING_ABORT, V4L2_PIX_FMT_SPK, {0x34010000, 0x0}}, {SCODE_PADDING_EOS, V4L2_PIX_FMT_JPEG, {0x0, 0x0}}, {SCODE_PADDING_BUFFLUSH, V4L2_PIX_FMT_H264, {0x15010000, 0x0}}, {SCODE_PADDING_BUFFLUSH, V4L2_PIX_FMT_H264_MVC, {0x15010000, 0x0}},
@@ -1411,6 +1414,16 @@ static int vpu_malone_insert_scode_vp8_pic(struct malone_scode_t *scode)return size; } +static int vpu_malone_insert_scode_spk_seq (struct malone_scode_t *scode) +{ +return vpu_malone_insert_scode_seq (scode,MALONE_CODEC_ID_SPK ,0 ); +} + +static int vpu_malone_insert_scode_spk_pic (struct malone_scode_t *scode) +{ +return vpu_malone_insert_scode_pic (scode,MALONE_CODEC_ID_SPK ,0 ); +} +static const struct malone_scode_handler scode_handlers[] = { {/* fix me, need to swap return operation after gstreamer swap */
@@ -1427,6 +1440,11 @@ static const struct malone_scode_handler scode_handlers[] = { .insert_scode_seq = vpu_malone_insert_scode_vp8_seq, .insert_scode_pic = vpu_malone_insert_scode_vp8_pic, }, + { + .pixelformat = V4L2_PIX_FMT_SPK, + .insert_scode_seq = vpu_malone_insert_scode_spk_seq, + .insert_scode_pic = vpu_malone_insert_scode_spk_pic, + }, };static const struct malone_scode_handler *get_scode_handler (u32 pixelformat)
Signature · 7 lines
2.38.1 _______________________________________________ linux-arm-kernel mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Re: [PATCH v2 2/2] media: amphion: support to decode sorenson spark video
Le jeudi 12 janvier 2023 à 17:04 +0800, Ming Qian a écrit :
Quoted 4 lines
Sorenson Spark is an implementation of H.263 for use in Flash Video and Adobe Flash files.
amphion decoder can support it by insert some startcode before sequence and picture.
Its historical codec, but I'm surprise it does not also support H263 (and possibly H263+). Note a review comment of course, just a curiosity.
Quoted 82 lines
Signed-off-by Ming Qian <[email protected]>--- drivers/media/platform/amphion/vdec.c | 7 +++++++ drivers/media/platform/amphion/vpu_malone.c | 18 ++++++++++++++++++ 2 files changed, 25 insertions(+)drivers/media/platform/amphion/vdec.c +7
-0@@ -165,6 +165,13 @@ static const struct vpu_format vdec_formats[] = { .type = V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, .flags = V4L2_FMT_FLAG_DYN_RESOLUTION | V4L2_FMT_FLAG_COMPRESSED }, + { + .pixfmt = V4L2_PIX_FMT_SPK, + .mem_planes = 1, + .comp_planes = 1, + .type = V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, + .flags = V4L2_FMT_FLAG_DYN_RESOLUTION | V4L2_FMT_FLAG_COMPRESSED + }, {0, 0, 0, 0}, };drivers/media/platform/amphion/vpu_malone.c +18
-0@@ -562,6 +562,7 @@ static struct malone_fmt_mapping fmt_mappings[] = { {V4L2_PIX_FMT_H263, MALONE_FMT_ASP}, {V4L2_PIX_FMT_JPEG, MALONE_FMT_JPG}, {V4L2_PIX_FMT_VP8, MALONE_FMT_VP8}, + {V4L2_PIX_FMT_SPK, MALONE_FMT_SPK}, };static enum vpu_malone_format vpu_malone_format_remap (u32 pixelformat)@@ -987,6 +988,7 @@ static const struct malone_padding_scode padding_scodes[] = { {SCODE_PADDING_EOS, V4L2_PIX_FMT_XVID, {0xb1010000, 0x0}}, {SCODE_PADDING_EOS, V4L2_PIX_FMT_H263, {0xb1010000, 0x0}}, {SCODE_PADDING_EOS, V4L2_PIX_FMT_VP8, {0x34010000, 0x0}}, + {SCODE_PADDING_EOS, V4L2_PIX_FMT_SPK, {0x34010000, 0x0}}, {SCODE_PADDING_EOS, V4L2_PIX_FMT_JPEG, {0xefff0000, 0x0}}, {SCODE_PADDING_ABORT, V4L2_PIX_FMT_H264, {0x0B010000, 0}}, {SCODE_PADDING_ABORT, V4L2_PIX_FMT_H264_MVC, {0x0B010000, 0}},@@ -998,6 +1000,7 @@ static const struct malone_padding_scode padding_scodes[] = { {SCODE_PADDING_ABORT, V4L2_PIX_FMT_XVID, {0xb1010000, 0x0}}, {SCODE_PADDING_ABORT, V4L2_PIX_FMT_H263, {0xb1010000, 0x0}}, {SCODE_PADDING_ABORT, V4L2_PIX_FMT_VP8, {0x34010000, 0x0}}, + {SCODE_PADDING_ABORT, V4L2_PIX_FMT_SPK, {0x34010000, 0x0}}, {SCODE_PADDING_EOS, V4L2_PIX_FMT_JPEG, {0x0, 0x0}}, {SCODE_PADDING_BUFFLUSH, V4L2_PIX_FMT_H264, {0x15010000, 0x0}}, {SCODE_PADDING_BUFFLUSH, V4L2_PIX_FMT_H264_MVC, {0x15010000, 0x0}},@@ -1411,6 +1414,16 @@ static int vpu_malone_insert_scode_vp8_pic(struct malone_scode_t *scode)return size; } +static int vpu_malone_insert_scode_spk_seq (struct malone_scode_t *scode) +{ +return vpu_malone_insert_scode_seq (scode,MALONE_CODEC_ID_SPK ,0 ); +} + +static int vpu_malone_insert_scode_spk_pic (struct malone_scode_t *scode) +{ +return vpu_malone_insert_scode_pic (scode,MALONE_CODEC_ID_SPK ,0 ); +} +static const struct malone_scode_handler scode_handlers[] = { {/* fix me, need to swap return operation after gstreamer swap */ @@ -1427,6 +1440,11 @@ static const struct malone_scode_handler scode_handlers[] = { .insert_scode_seq = vpu_malone_insert_scode_vp8_seq, .insert_scode_pic = vpu_malone_insert_scode_vp8_pic, }, + { + .pixelformat = V4L2_PIX_FMT_SPK, + .insert_scode_seq = vpu_malone_insert_scode_spk_seq, + .insert_scode_pic = vpu_malone_insert_scode_spk_pic, + }, };static const struct malone_scode_handler *get_scode_handler (u32 pixelformat)
Ming Qian
maintainerRE: [EXT] Re: [PATCH v2 2/2] media: amphion: support to decode sorenson spark video
Quoted 15 lines
From: Nicolas Dufresne <[email protected]>
Sent: 2023年1月20日 4:41
To: Ming Qian <[email protected]>; [email protected]; hverkuil- [email protected]
Cc: [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; dl-linux-imx <linux- [email protected]>; X.H. Bao <[email protected]>; Eagle Zhou <[email protected]>; Tao Jiang <[email protected]>; linux- [email protected]; [email protected]; linux-arm- [email protected]
Subject: [EXT] Re: [PATCH v2 2/2] media: amphion: support to decode sorenson spark videoCaution: EXT Email
Quoted 9 lines
Quoted 4 lines · Ming Qian
Sorenson Spark is an implementation of H.263 for use in Flash Video and Adobe Flash files.
amphion decoder can support it by insert some startcode before sequence and picture.Its historical codec, but I'm surprise it does not also support H263 (and possibly H263+). Note a review comment of course, just a curiosity.
Hi Nicolas,
The decoder does support H263, but for sorenson spark, the vpu requires extra startcode, but H263 doesn't.
So driver can't reuse H263 for format spark, as driver need to insert the startcode for format spark.
Ming
Quoted 99 lines
Quoted 13 lines
Signed-off-by Ming Qian <[email protected]>--- drivers/media/platform/amphion/vdec.c | 7 +++++++ drivers/media/platform/amphion/vpu_malone.c | 18 ++++++++++++++++++ 2 files changed, 25 insertions(+)drivers/media/platform/amphion/vdec.c +0
-0drivers/media/platform/amphion/vdec.c static const struct vpu_format vdec_formats[] = { · line 166
Quoted 2 lines
drivers/media/platform/amphion/vdec.c +0
-0@@ -165,6 +165,13 @@ static const struct vpu_format vdec_formats[] = { .type = V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, .flags = V4L2_FMT_FLAG_DYN_RESOLUTION |
V4L2_FMT_FLAG_COMPRESSEDdrivers/media/platform/amphion/vdec.c static const struct vpu_format vdec_formats[] = {
Quoted 7 lines
drivers/media/platform/amphion/vdec.c +6
-0}, + { + .pixfmt = V4L2_PIX_FMT_SPK, + .mem_planes = 1, + .comp_planes = 1, + .type = V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, + .flags = V4L2_FMT_FLAG_DYN_RESOLUTION |
V4L2_FMT_FLAG_COMPRESSEDdrivers/media/platform/amphion/vpu_malone.c static struct malone_fmt_mapping fmt_mappings[] =
Quoted 10 lines
drivers/media/platform/amphion/vdec.c +1
-0+ }, {0, 0, 0, 0}, };drivers/media/platform/amphion/vpu_malone.c +0
-0@@ -562,6 +562,7 @@ static struct malone_fmt_mapping fmt_mappings[] ={
Quoted 8 lines
drivers/media/platform/amphion/vpu_malone.c +1
-0{V4L2_PIX_FMT_H263, MALONE_FMT_ASP}, {V4L2_PIX_FMT_JPEG, MALONE_FMT_JPG}, {V4L2_PIX_FMT_VP8, MALONE_FMT_VP8}, + {V4L2_PIX_FMT_SPK, MALONE_FMT_SPK}, }; static enum vpu_malone_format vpu_malone_format_remap(u32pixelformat) @@ -987,6 +988,7 @@ static const struct
malone_padding_scodepadding_scodes[] = {Quoted 7 lines
{SCODE_PADDING_EOS, V4L2_PIX_FMT_XVID, {0xb1010000, 0x0}}, {SCODE_PADDING_EOS, V4L2_PIX_FMT_H263, {0xb1010000, 0x0}}, {SCODE_PADDING_EOS, V4L2_PIX_FMT_VP8, {0x34010000, 0x0}}, + {SCODE_PADDING_EOS, V4L2_PIX_FMT_SPK, {0x34010000, 0x0}}, {SCODE_PADDING_EOS, V4L2_PIX_FMT_JPEG, {0xefff0000, 0x0}}, {SCODE_PADDING_ABORT, V4L2_PIX_FMT_H264, {0x0B010000, 0}}, {SCODE_PADDING_ABORT, V4L2_PIX_FMT_H264_MVC, {0x0B010000,0}},
drivers/media/platform/amphion/vpu_malone.c static const struct malone_padding_scode
Quoted 1 line
drivers/media/platform/amphion/vpu_malone.c +0
-0@@ -998,6 +1000,7 @@ static const struct malone_padding_scodepadding_scodes[] = {
drivers/media/platform/amphion/vpu_malone.c static const struct malone_padding_scode · line 1000
Quoted 1 line
drivers/media/platform/amphion/vpu_malone.c +0
-0{SCODE_PADDING_ABORT, V4L2_PIX_FMT_XVID, {0xb1010000,
0x0}},drivers/media/platform/amphion/vpu_malone.c static const struct malone_padding_scode · line 1001
Quoted 1 line
drivers/media/platform/amphion/vpu_malone.c +0
-0{SCODE_PADDING_ABORT, V4L2_PIX_FMT_H263, {0xb1010000,
0x0}},drivers/media/platform/amphion/vpu_malone.c static const struct malone_padding_scode · line 1002
Quoted 1 line
drivers/media/platform/amphion/vpu_malone.c +0
-0{SCODE_PADDING_ABORT, V4L2_PIX_FMT_VP8, {0x34010000,
0x0}},drivers/media/platform/amphion/vpu_malone.c static const struct malone_padding_scode · line 1003
Quoted 1 line
drivers/media/platform/amphion/vpu_malone.c +1
-0+ {SCODE_PADDING_ABORT, V4L2_PIX_FMT_SPK, {0x34010000,
0x0}},drivers/media/platform/amphion/vpu_malone.c static const struct malone_padding_scode · line 1005
Quoted 2 lines
drivers/media/platform/amphion/vpu_malone.c +0
-0{SCODE_PADDING_EOS, V4L2_PIX_FMT_JPEG, {0x0, 0x0}}, {SCODE_PADDING_BUFFLUSH, V4L2_PIX_FMT_H264, {0x15010000,
0x0}},drivers/media/platform/amphion/vpu_malone.c static const struct malone_padding_scode · line 1006
Quoted 1 line
drivers/media/platform/amphion/vpu_malone.c +0
-0{SCODE_PADDING_BUFFLUSH, V4L2_PIX_FMT_H264_MVC,{
0x15010000,0x0}},drivers/media/platform/amphion/vpu_malone.c static int
Quoted 1 line
drivers/media/platform/amphion/vpu_malone.c +0
-0@@ -1411,6 +1414,16 @@ static int
vpu_malone_insert_scode_vp8_pic(struct malone_scode_t *scode)Quoted 16 lines
drivers/media/platform/amphion/vpu_malone.c +10
-0return size; } +static int vpu_malone_insert_scode_spk_seq (struct malone_scode_t +*scode) { +return vpu_malone_insert_scode_seq (scode,MALONE_CODEC_ID_SPK , +0 ); } + +static int vpu_malone_insert_scode_spk_pic (struct malone_scode_t +*scode) { +return vpu_malone_insert_scode_pic (scode,MALONE_CODEC_ID_SPK , +0 ); } +static const struct malone_scode_handler scode_handlers[] = { {/* fix me, need to swap return operation after gstreamer Quoted 1 line
swap */ @@ -1427,6 +1440,11 @@ static const struct
malone_scode_handlerscode_handlers[] = {Quoted 12 lines
.insert_scode_seq =
vpu_malone_insert_scode_vp8_seq, .insert_scode_pic =vpu_malone_insert_scode_vp8_pic,
},drivers/media/platform/amphion/vpu_malone.c +5
-0+ { + .pixelformat = V4L2_PIX_FMT_SPK, + .insert_scode_seq = vpu_malone_insert_scode_spk_seq, + .insert_scode_pic = vpu_malone_insert_scode_spk_pic, + }, }; static const struct malone_scode_handler *get_scode_handler(u32pixelformat)
Re: [EXT] Re: [PATCH v2 2/2] media: amphion: support to decode sorenson spark video
Le vendredi 20 janvier 2023 à 09:59 +0000, Ming Qian a écrit :
Quoted 25 lines
Quoted 15 lines
From: Nicolas Dufresne <[email protected]>
Sent: 2023年1月20日 4:41
To: Ming Qian <[email protected]>; [email protected]; hverkuil- [email protected]
Cc: [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; dl-linux-imx <linux- [email protected]>; X.H. Bao <[email protected]>; Eagle Zhou <[email protected]>; Tao Jiang <[email protected]>; linux- [email protected]; [email protected]; linux-arm- [email protected]
Subject: [EXT] Re: [PATCH v2 2/2] media: amphion: support to decode sorenson spark videoCaution: EXT Email
Quoted 9 lines
Quoted 4 lines · Ming Qian
Sorenson Spark is an implementation of H.263 for use in Flash Video and Adobe Flash files.
amphion decoder can support it by insert some startcode before sequence and picture.Its historical codec, but I'm surprise it does not also support H263 (and possibly H263+). Note a review comment of course, just a curiosity.
Quoted 5 lines
Hi Nicolas,
The decoder does support H263, but for sorenson spark, the vpu requires extra startcode, but H263 doesn't.
So driver can't reuse H263 for format spark, as driver need to insert the startcode for format spark.
Ack.
I noticed later that it was supported and it make sense to make this a specific formats, its not compatible, even though both are H264.
Quoted 108 lines
Ming
Quoted 104 lines
Quoted 14 lines
Signed-off-by Ming Qian <[email protected]>---
drivers/media/platform/amphion/vdec.c | 7 +++++++
drivers/media/platform/amphion/vpu_malone.c | 18 ++++++++++++++++++2 files changed, 25 insertions(+)drivers/media/platform/amphion/vdec.c +0
-0@@ -165,6 +165,13 @@ static const struct vpu_format vdec_formats[] = { .type = V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE,Quoted 1 line
.flags =
V4L2_FMT_FLAG_DYN_RESOLUTION|
V4L2_FMT_FLAG_COMPRESSEDdrivers/media/platform/amphion/vdec.c static const struct vpu_format vdec_formats[] = {
Quoted 7 lines
},
drivers/media/platform/amphion/vdec.c +6
-0+ { + .pixfmt = V4L2_PIX_FMT_SPK, + .mem_planes = 1, + .comp_planes = 1, + .type = V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, + .flags = V4L2_FMT_FLAG_DYN_RESOLUTION |
V4L2_FMT_FLAG_COMPRESSEDdrivers/media/platform/amphion/vpu_malone.c static struct malone_fmt_mapping fmt_mappings[] =
Quoted 10 lines
+ },
{0, 0, 0, 0},
};drivers/media/platform/amphion/vpu_malone.c +0
-0@@ -562,6 +562,7 @@ static struct malone_fmt_mapping fmt_mappings[] ={
Quoted 8 lines
drivers/media/platform/amphion/vpu_malone.c +1
-0{V4L2_PIX_FMT_H263, MALONE_FMT_ASP}, {V4L2_PIX_FMT_JPEG, MALONE_FMT_JPG}, {V4L2_PIX_FMT_VP8, MALONE_FMT_VP8}, + {V4L2_PIX_FMT_SPK, MALONE_FMT_SPK}, };static enum
vpu_malone_formatvpu_malone_format_remap(u32 pixelformat)@@ -987,6 +988,7 @@ static const struct
malone_padding_scodepadding_scodes[] = {Quoted 10 lines
{SCODE_PADDING_EOS,
V4L2_PIX_FMT_XVID, {0xb1010000,0x0}},
{SCODE_PADDING_EOS,V4L2_PIX_FMT_H263, {0xb1010000,0x0}},
{SCODE_PADDING_EOS,V4L2_PIX_FMT_VP8, {0x34010000,0x0}},
+ {SCODE_PADDING_EOS,V4L2_PIX_FMT_SPK, {0x34010000,0x0}},
{SCODE_PADDING_EOS,V4L2_PIX_FMT_JPEG, {0xefff0000,0x0}},Quoted 2 lines
{SCODE_PADDING_ABORT, V4L2_PIX_FMT_H264, {0x0B010000, 0}}, {SCODE_PADDING_ABORT, V4L2_PIX_FMT_H264_MVC, {0x0B010000,0}},
drivers/media/platform/amphion/vpu_malone.c static const struct malone_padding_scode
Quoted 1 line
drivers/media/platform/amphion/vpu_malone.c +0
-0@@ -998,6 +1000,7 @@ static const struct malone_padding_scodepadding_scodes[] = {
drivers/media/platform/amphion/vpu_malone.c static const struct malone_padding_scode · line 1000
Quoted 1 line
drivers/media/platform/amphion/vpu_malone.c +0
-0{SCODE_PADDING_ABORT, V4L2_PIX_FMT_XVID, {0xb1010000,
0x0}},drivers/media/platform/amphion/vpu_malone.c static const struct malone_padding_scode · line 1001
Quoted 1 line
drivers/media/platform/amphion/vpu_malone.c +0
-0{SCODE_PADDING_ABORT, V4L2_PIX_FMT_H263, {0xb1010000,
0x0}},drivers/media/platform/amphion/vpu_malone.c static const struct malone_padding_scode · line 1002
Quoted 1 line
drivers/media/platform/amphion/vpu_malone.c +0
-0{SCODE_PADDING_ABORT, V4L2_PIX_FMT_VP8, {0x34010000,
0x0}},drivers/media/platform/amphion/vpu_malone.c static const struct malone_padding_scode · line 1003
Quoted 1 line
drivers/media/platform/amphion/vpu_malone.c +1
-0+ {SCODE_PADDING_ABORT, V4L2_PIX_FMT_SPK, {0x34010000,
0x0}},drivers/media/platform/amphion/vpu_malone.c static const struct malone_padding_scode · line 1005
Quoted 2 lines
drivers/media/platform/amphion/vpu_malone.c +0
-0{SCODE_PADDING_EOS, V4L2_PIX_FMT_JPEG, {0x0, 0x0}}, {SCODE_PADDING_BUFFLUSH, V4L2_PIX_FMT_H264, {0x15010000,
0x0}},drivers/media/platform/amphion/vpu_malone.c static const struct malone_padding_scode · line 1006
Quoted 1 line
drivers/media/platform/amphion/vpu_malone.c +0
-0{SCODE_PADDING_BUFFLUSH, V4L2_PIX_FMT_H264_MVC,{
0x15010000,0x0}},drivers/media/platform/amphion/vpu_malone.c static int
Quoted 1 line
drivers/media/platform/amphion/vpu_malone.c +0
-0@@ -1411,6 +1414,16 @@ static int
vpu_malone_insert_scode_vp8_pic(struct malone_scode_t *scode)Quoted 16 lines
drivers/media/platform/amphion/vpu_malone.c +10
-0return size; } +static int vpu_malone_insert_scode_spk_seq (struct malone_scode_t +*scode) { +return vpu_malone_insert_scode_seq (scode,MALONE_CODEC_ID_SPK , +0 ); } + +static int vpu_malone_insert_scode_spk_pic (struct malone_scode_t +*scode) { +return vpu_malone_insert_scode_pic (scode,MALONE_CODEC_ID_SPK , +0 ); } + static const struct malone_scode_handler scode_handlers[] = { { /* fix me, need to swap return operation after gstreamerQuoted 1 line
swap */ @@ -1427,6 +1440,11 @@ static const struct
malone_scode_handlerscode_handlers[] = {Quoted 12 lines
.insert_scode_seq =
vpu_malone_insert_scode_vp8_seq, .insert_scode_pic =vpu_malone_insert_scode_vp8_pic, },drivers/media/platform/amphion/vpu_malone.c +5
-0+ { + .pixelformat = V4L2_PIX_FMT_SPK, + .insert_scode_seq = vpu_malone_insert_scode_spk_seq, + .insert_scode_pic = vpu_malone_insert_scode_spk_pic, + },};
static const struct
malone_scode_handler*get_scode_handler(u32 pixelformat)