mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-06-07 07:58:51 +00:00
video: add macros checking for GST_VIDEO_BUFFER_FLAG_TOP/BOTTOM_FIELD flags
The GST_VIDEO_BUFFER_FLAG_TOP_FIELD flag is a superset of GST_VIDEO_BUFFER_FLAG_BOTTOM_FIELD as they are defined using other flags. As a result we can't use GST_BUFFER_FLAG_IS_SET() to check for those flags.
This commit is contained in:
parent
19f27f94ee
commit
26f386ce8b
2 changed files with 47 additions and 0 deletions
|
@ -173,9 +173,11 @@ gboolean gst_video_frame_copy_plane (GstVideoFrame *dest, const GstVideoFr
|
||||||
* @GST_VIDEO_BUFFER_FLAG_TOP_FIELD: The video frame has the top field only. This is the
|
* @GST_VIDEO_BUFFER_FLAG_TOP_FIELD: The video frame has the top field only. This is the
|
||||||
* same as GST_VIDEO_BUFFER_FLAG_TFF |
|
* same as GST_VIDEO_BUFFER_FLAG_TFF |
|
||||||
* GST_VIDEO_BUFFER_FLAG_ONEFIELD (Since: 1.16).
|
* GST_VIDEO_BUFFER_FLAG_ONEFIELD (Since: 1.16).
|
||||||
|
* Use GST_VIDEO_BUFFER_IS_TOP_FIELD() to check for this flag.
|
||||||
* @GST_VIDEO_BUFFER_FLAG_BOTTOM_FIELD: The video frame has the bottom field only. This is
|
* @GST_VIDEO_BUFFER_FLAG_BOTTOM_FIELD: The video frame has the bottom field only. This is
|
||||||
* the same as GST_VIDEO_BUFFER_FLAG_ONEFIELD
|
* the same as GST_VIDEO_BUFFER_FLAG_ONEFIELD
|
||||||
* (GST_VIDEO_BUFFER_FLAG_TFF flag unset) (Since: 1.16).
|
* (GST_VIDEO_BUFFER_FLAG_TFF flag unset) (Since: 1.16).
|
||||||
|
* Use GST_VIDEO_BUFFER_IS_BOTTOM_FIELD() to check for this flag.
|
||||||
* @GST_VIDEO_BUFFER_FLAG_MARKER: The #GstBuffer contains the end of a video field or frame
|
* @GST_VIDEO_BUFFER_FLAG_MARKER: The #GstBuffer contains the end of a video field or frame
|
||||||
* boundary such as the last subframe or packet (Since: 1.18).
|
* boundary such as the last subframe or packet (Since: 1.18).
|
||||||
* @GST_VIDEO_BUFFER_FLAG_LAST: Offset to define more flags
|
* @GST_VIDEO_BUFFER_FLAG_LAST: Offset to define more flags
|
||||||
|
@ -204,6 +206,26 @@ typedef enum {
|
||||||
GST_VIDEO_BUFFER_FLAG_LAST = (GST_BUFFER_FLAG_LAST << 8)
|
GST_VIDEO_BUFFER_FLAG_LAST = (GST_BUFFER_FLAG_LAST << 8)
|
||||||
} GstVideoBufferFlags;
|
} GstVideoBufferFlags;
|
||||||
|
|
||||||
|
/* GST_VIDEO_BUFFER_FLAG_TOP_FIELD is a subset of
|
||||||
|
* GST_VIDEO_BUFFER_FLAG_BOTTOM_FIELD so needs to be checked accordingly. */
|
||||||
|
#define _GST_VIDEO_BUFFER_FLAG_FIELD_MASK GST_VIDEO_BUFFER_FLAG_TOP_FIELD
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GST_VIDEO_BUFFER_IS_TOP_FIELD:
|
||||||
|
* @buf: a #GstBuffer
|
||||||
|
*
|
||||||
|
* Check if GST_VIDEO_BUFFER_FLAG_TOP_FIELD is set on @buf (Since: 1.18).
|
||||||
|
*/
|
||||||
|
#define GST_VIDEO_BUFFER_IS_TOP_FIELD(buf) ((GST_BUFFER_FLAGS (buf) & _GST_VIDEO_BUFFER_FLAG_FIELD_MASK) == GST_VIDEO_BUFFER_FLAG_TOP_FIELD)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GST_VIDEO_BUFFER_IS_BOTTOM_FIELD:
|
||||||
|
* @buf: a #GstBuffer
|
||||||
|
*
|
||||||
|
* Check if GST_VIDEO_BUFFER_FLAG_BOTTOM_FIELD is set on @buf (Since: 1.18).
|
||||||
|
*/
|
||||||
|
#define GST_VIDEO_BUFFER_IS_BOTTOM_FIELD(buf) ((GST_BUFFER_FLAGS (buf) & _GST_VIDEO_BUFFER_FLAG_FIELD_MASK) == GST_VIDEO_BUFFER_FLAG_BOTTOM_FIELD)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* GstVideoFrameMapFlags:
|
* GstVideoFrameMapFlags:
|
||||||
* @GST_VIDEO_FRAME_MAP_FLAG_NO_REF: Don't take another reference of the buffer and store it in
|
* @GST_VIDEO_FRAME_MAP_FLAG_NO_REF: Don't take another reference of the buffer and store it in
|
||||||
|
|
|
@ -3747,6 +3747,30 @@ GST_START_TEST (test_video_meta_align)
|
||||||
|
|
||||||
GST_END_TEST;
|
GST_END_TEST;
|
||||||
|
|
||||||
|
GST_START_TEST (test_video_flags)
|
||||||
|
{
|
||||||
|
GstBuffer *buf;
|
||||||
|
|
||||||
|
buf = gst_buffer_new ();
|
||||||
|
fail_unless (!GST_VIDEO_BUFFER_IS_TOP_FIELD (buf));
|
||||||
|
fail_unless (!GST_VIDEO_BUFFER_IS_BOTTOM_FIELD (buf));
|
||||||
|
gst_buffer_unref (buf);
|
||||||
|
|
||||||
|
buf = gst_buffer_new ();
|
||||||
|
GST_BUFFER_FLAG_SET (buf, GST_VIDEO_BUFFER_FLAG_TOP_FIELD);
|
||||||
|
fail_unless (GST_VIDEO_BUFFER_IS_TOP_FIELD (buf));
|
||||||
|
fail_unless (!GST_VIDEO_BUFFER_IS_BOTTOM_FIELD (buf));
|
||||||
|
gst_buffer_unref (buf);
|
||||||
|
|
||||||
|
buf = gst_buffer_new ();
|
||||||
|
GST_BUFFER_FLAG_SET (buf, GST_VIDEO_BUFFER_FLAG_BOTTOM_FIELD);
|
||||||
|
fail_unless (!GST_VIDEO_BUFFER_IS_TOP_FIELD (buf));
|
||||||
|
fail_unless (GST_VIDEO_BUFFER_IS_BOTTOM_FIELD (buf));
|
||||||
|
gst_buffer_unref (buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
GST_END_TEST;
|
||||||
|
|
||||||
static Suite *
|
static Suite *
|
||||||
video_suite (void)
|
video_suite (void)
|
||||||
{
|
{
|
||||||
|
@ -3797,6 +3821,7 @@ video_suite (void)
|
||||||
tcase_add_test (tc_chain, test_video_format_info_plane_to_components);
|
tcase_add_test (tc_chain, test_video_format_info_plane_to_components);
|
||||||
tcase_add_test (tc_chain, test_video_info_align);
|
tcase_add_test (tc_chain, test_video_info_align);
|
||||||
tcase_add_test (tc_chain, test_video_meta_align);
|
tcase_add_test (tc_chain, test_video_meta_align);
|
||||||
|
tcase_add_test (tc_chain, test_video_flags);
|
||||||
|
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue