mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-04-26 06:54:49 +00:00
mfc: Add support for RGB
This commit is contained in:
parent
4caad2d06c
commit
1e9aaee3ec
3 changed files with 25 additions and 2 deletions
|
@ -164,6 +164,8 @@ fimc_color_format_to_v4l2 (FimcColorFormat format)
|
||||||
return V4L2_PIX_FMT_NV12M;
|
return V4L2_PIX_FMT_NV12M;
|
||||||
case FIMC_COLOR_FORMAT_YUV420P:
|
case FIMC_COLOR_FORMAT_YUV420P:
|
||||||
return V4L2_PIX_FMT_YUV420M;
|
return V4L2_PIX_FMT_YUV420M;
|
||||||
|
case FIMC_COLOR_FORMAT_RGB32:
|
||||||
|
return V4L2_PIX_FMT_RGB32;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -175,6 +177,8 @@ static int
|
||||||
fimc_color_format_get_nplanes (FimcColorFormat format)
|
fimc_color_format_get_nplanes (FimcColorFormat format)
|
||||||
{
|
{
|
||||||
switch (format) {
|
switch (format) {
|
||||||
|
case FIMC_COLOR_FORMAT_RGB32:
|
||||||
|
return 1;
|
||||||
case FIMC_COLOR_FORMAT_YUV420SPT:
|
case FIMC_COLOR_FORMAT_YUV420SPT:
|
||||||
case FIMC_COLOR_FORMAT_YUV420SP:
|
case FIMC_COLOR_FORMAT_YUV420SP:
|
||||||
return 2;
|
return 2;
|
||||||
|
@ -192,6 +196,8 @@ fimc_color_format_get_component_height (FimcColorFormat format, int c,
|
||||||
int height)
|
int height)
|
||||||
{
|
{
|
||||||
switch (format) {
|
switch (format) {
|
||||||
|
case FIMC_COLOR_FORMAT_RGB32:
|
||||||
|
return height;
|
||||||
case FIMC_COLOR_FORMAT_YUV420SPT:
|
case FIMC_COLOR_FORMAT_YUV420SPT:
|
||||||
case FIMC_COLOR_FORMAT_YUV420SP:
|
case FIMC_COLOR_FORMAT_YUV420SP:
|
||||||
case FIMC_COLOR_FORMAT_YUV420P:
|
case FIMC_COLOR_FORMAT_YUV420P:
|
||||||
|
|
|
@ -51,7 +51,8 @@ typedef struct _Fimc Fimc;
|
||||||
typedef enum {
|
typedef enum {
|
||||||
FIMC_COLOR_FORMAT_YUV420SPT,
|
FIMC_COLOR_FORMAT_YUV420SPT,
|
||||||
FIMC_COLOR_FORMAT_YUV420SP,
|
FIMC_COLOR_FORMAT_YUV420SP,
|
||||||
FIMC_COLOR_FORMAT_YUV420P
|
FIMC_COLOR_FORMAT_YUV420P,
|
||||||
|
FIMC_COLOR_FORMAT_RGB32
|
||||||
} FimcColorFormat;
|
} FimcColorFormat;
|
||||||
|
|
||||||
void fimc_init_debug (void);
|
void fimc_init_debug (void);
|
||||||
|
|
|
@ -80,7 +80,7 @@ static GstStaticPadTemplate gst_mfc_dec_src_template =
|
||||||
GST_STATIC_PAD_TEMPLATE ("src",
|
GST_STATIC_PAD_TEMPLATE ("src",
|
||||||
GST_PAD_SRC,
|
GST_PAD_SRC,
|
||||||
GST_PAD_ALWAYS,
|
GST_PAD_ALWAYS,
|
||||||
GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("{ NV12, I420, YV12 }"))
|
GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("{ NV12, I420, YV12, RGBx }"))
|
||||||
);
|
);
|
||||||
/* *INDENT-ON* */
|
/* *INDENT-ON* */
|
||||||
|
|
||||||
|
@ -428,6 +428,9 @@ gst_mfc_dec_create_fimc (GstMFCDec * self, GstVideoCodecState * state)
|
||||||
fimc = fimc_new ();
|
fimc = fimc_new ();
|
||||||
|
|
||||||
switch (state->info.finfo->format) {
|
switch (state->info.finfo->format) {
|
||||||
|
case GST_VIDEO_FORMAT_RGBx:
|
||||||
|
fimc_format = FIMC_COLOR_FORMAT_RGB32;
|
||||||
|
break;
|
||||||
case GST_VIDEO_FORMAT_I420:
|
case GST_VIDEO_FORMAT_I420:
|
||||||
case GST_VIDEO_FORMAT_YV12:
|
case GST_VIDEO_FORMAT_YV12:
|
||||||
fimc_format = FIMC_COLOR_FORMAT_YUV420P;
|
fimc_format = FIMC_COLOR_FORMAT_YUV420P;
|
||||||
|
@ -629,6 +632,19 @@ gst_mfc_dec_fill_outbuf (GstMFCDec * self, GstBuffer * outbuf,
|
||||||
goto fimc_convert_error;
|
goto fimc_convert_error;
|
||||||
|
|
||||||
switch (state->info.finfo->format) {
|
switch (state->info.finfo->format) {
|
||||||
|
case GST_VIDEO_FORMAT_RGBx:
|
||||||
|
dst_ = (guint8 *) GST_VIDEO_FRAME_COMP_DATA (&vframe, 0);
|
||||||
|
src_ = self->dst[0];
|
||||||
|
src_stride = self->dst_stride[0];
|
||||||
|
h = GST_VIDEO_FRAME_HEIGHT (&vframe);
|
||||||
|
w = GST_VIDEO_FRAME_WIDTH (&vframe);
|
||||||
|
dst_stride = GST_VIDEO_FRAME_COMP_STRIDE (&vframe, 0);
|
||||||
|
for (i = 0; i < h; i++) {
|
||||||
|
memcpy (dst_, src_, w);
|
||||||
|
dst_ += dst_stride;
|
||||||
|
src_ += src_stride;
|
||||||
|
}
|
||||||
|
break;
|
||||||
case GST_VIDEO_FORMAT_I420:
|
case GST_VIDEO_FORMAT_I420:
|
||||||
case GST_VIDEO_FORMAT_YV12:
|
case GST_VIDEO_FORMAT_YV12:
|
||||||
for (j = 0; j < 3; j++) {
|
for (j = 0; j < 3; j++) {
|
||||||
|
|
Loading…
Reference in a new issue