mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-22 07:08:23 +00:00
msdk: don't use hard-coded video format
Some codecs may support varied formats, e.g. HEVC may support NV12 and P010_10LE etc
This commit is contained in:
parent
27ab7fb40f
commit
fda4918cc8
3 changed files with 28 additions and 1 deletions
|
@ -476,6 +476,7 @@ gst_msdkdec_set_src_caps (GstMsdkDec * thiz, gboolean need_allocation)
|
|||
GstVideoInfo *vinfo;
|
||||
GstVideoAlignment align;
|
||||
GstCaps *allocation_caps = NULL;
|
||||
GstVideoFormat format;
|
||||
guint width, height;
|
||||
const gchar *format_str;
|
||||
|
||||
|
@ -487,9 +488,19 @@ gst_msdkdec_set_src_caps (GstMsdkDec * thiz, gboolean need_allocation)
|
|||
height =
|
||||
thiz->param.mfx.FrameInfo.CropH ? thiz->param.mfx.
|
||||
FrameInfo.CropH : GST_VIDEO_INFO_HEIGHT (&thiz->input_state->info);
|
||||
|
||||
format =
|
||||
gst_msdk_get_video_format_from_mfx_fourcc (thiz->param.mfx.
|
||||
FrameInfo.FourCC);
|
||||
|
||||
if (format == GST_VIDEO_FORMAT_UNKNOWN) {
|
||||
GST_WARNING_OBJECT (thiz, "Failed to find a valid video format\n");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
output_state =
|
||||
gst_video_decoder_set_output_state (GST_VIDEO_DECODER (thiz),
|
||||
GST_VIDEO_FORMAT_NV12, width, height, thiz->input_state);
|
||||
format, width, height, thiz->input_state);
|
||||
if (!output_state)
|
||||
return FALSE;
|
||||
|
||||
|
|
|
@ -312,3 +312,16 @@ gst_msdk_get_surface_from_buffer (GstBuffer * buf)
|
|||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
GstVideoFormat
|
||||
gst_msdk_get_video_format_from_mfx_fourcc (mfxU32 fourcc)
|
||||
{
|
||||
const struct map *m = gst_msdk_video_format_to_mfx_map;
|
||||
|
||||
for (; m->mfx_fourcc != 0; m++) {
|
||||
if (m->mfx_fourcc == fourcc)
|
||||
return m->format;
|
||||
}
|
||||
|
||||
return GST_VIDEO_FORMAT_UNKNOWN;
|
||||
}
|
||||
|
|
|
@ -75,6 +75,9 @@ gst_msdk_is_msdk_buffer (GstBuffer * buf);
|
|||
mfxFrameSurface1 *
|
||||
gst_msdk_get_surface_from_buffer (GstBuffer * buf);
|
||||
|
||||
GstVideoFormat
|
||||
gst_msdk_get_video_format_from_mfx_fourcc (mfxU32 fourcc);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __MSDK_H__ */
|
||||
|
|
Loading…
Reference in a new issue