提交 9de92986 编写于 作者: M Ming Qian 提交者: Mauro Carvalho Chehab

media: amphion: support to decode sorenson spark video

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.
Signed-off-by: NMing Qian <ming.qian@nxp.com>
Signed-off-by: NHans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: NMauro Carvalho Chehab <mchehab@kernel.org>
上级 ae77d139
...@@ -165,6 +165,13 @@ static const struct vpu_format vdec_formats[] = { ...@@ -165,6 +165,13 @@ static const struct vpu_format vdec_formats[] = {
.type = V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, .type = V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE,
.flags = V4L2_FMT_FLAG_DYN_RESOLUTION | V4L2_FMT_FLAG_COMPRESSED .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}, {0, 0, 0, 0},
}; };
......
...@@ -562,6 +562,7 @@ static struct malone_fmt_mapping fmt_mappings[] = { ...@@ -562,6 +562,7 @@ static struct malone_fmt_mapping fmt_mappings[] = {
{V4L2_PIX_FMT_H263, MALONE_FMT_ASP}, {V4L2_PIX_FMT_H263, MALONE_FMT_ASP},
{V4L2_PIX_FMT_JPEG, MALONE_FMT_JPG}, {V4L2_PIX_FMT_JPEG, MALONE_FMT_JPG},
{V4L2_PIX_FMT_VP8, MALONE_FMT_VP8}, {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) static enum vpu_malone_format vpu_malone_format_remap(u32 pixelformat)
...@@ -989,6 +990,7 @@ static const struct malone_padding_scode padding_scodes[] = { ...@@ -989,6 +990,7 @@ static const struct malone_padding_scode padding_scodes[] = {
{SCODE_PADDING_EOS, V4L2_PIX_FMT_XVID, {0xb1010000, 0x0}}, {SCODE_PADDING_EOS, V4L2_PIX_FMT_XVID, {0xb1010000, 0x0}},
{SCODE_PADDING_EOS, V4L2_PIX_FMT_H263, {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_VP8, {0x34010000, 0x0}},
{SCODE_PADDING_EOS, V4L2_PIX_FMT_SPK, {0x34010000, 0x0}},
{SCODE_PADDING_EOS, V4L2_PIX_FMT_JPEG, {0xefff0000, 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, {0x0B010000, 0}},
{SCODE_PADDING_ABORT, V4L2_PIX_FMT_H264_MVC, {0x0B010000, 0}}, {SCODE_PADDING_ABORT, V4L2_PIX_FMT_H264_MVC, {0x0B010000, 0}},
...@@ -1000,6 +1002,7 @@ static const struct malone_padding_scode padding_scodes[] = { ...@@ -1000,6 +1002,7 @@ static const struct malone_padding_scode padding_scodes[] = {
{SCODE_PADDING_ABORT, V4L2_PIX_FMT_XVID, {0xb1010000, 0x0}}, {SCODE_PADDING_ABORT, V4L2_PIX_FMT_XVID, {0xb1010000, 0x0}},
{SCODE_PADDING_ABORT, V4L2_PIX_FMT_H263, {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_VP8, {0x34010000, 0x0}},
{SCODE_PADDING_ABORT, V4L2_PIX_FMT_SPK, {0x34010000, 0x0}},
{SCODE_PADDING_EOS, V4L2_PIX_FMT_JPEG, {0x0, 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, {0x15010000, 0x0}},
{SCODE_PADDING_BUFFLUSH, V4L2_PIX_FMT_H264_MVC, {0x15010000, 0x0}}, {SCODE_PADDING_BUFFLUSH, V4L2_PIX_FMT_H264_MVC, {0x15010000, 0x0}},
...@@ -1413,6 +1416,16 @@ static int vpu_malone_insert_scode_vp8_pic(struct malone_scode_t *scode) ...@@ -1413,6 +1416,16 @@ static int vpu_malone_insert_scode_vp8_pic(struct malone_scode_t *scode)
return size; 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[] = { static const struct malone_scode_handler scode_handlers[] = {
{ {
/* fix me, need to swap return operation after gstreamer swap */ /* fix me, need to swap return operation after gstreamer swap */
...@@ -1429,6 +1442,11 @@ static const struct malone_scode_handler scode_handlers[] = { ...@@ -1429,6 +1442,11 @@ static const struct malone_scode_handler scode_handlers[] = {
.insert_scode_seq = vpu_malone_insert_scode_vp8_seq, .insert_scode_seq = vpu_malone_insert_scode_vp8_seq,
.insert_scode_pic = vpu_malone_insert_scode_vp8_pic, .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) static const struct malone_scode_handler *get_scode_handler(u32 pixelformat)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册