mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-05-13 19:58:57 +00:00
tests: rtpbasedepayload: Test flow return whith push/push_list
This validate that the base class properly save and return the flow return value received when gst_rtp_base_depay_push/push_list() helper is being used.
This commit is contained in:
parent
8b2afcf56a
commit
104458071a
1 changed files with 77 additions and 0 deletions
|
@ -41,6 +41,13 @@
|
|||
#define GST_IS_RTP_DUMMY_DEPAY_CLASS(klass) \
|
||||
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RTP_DUMMY_DEPAY))
|
||||
|
||||
typedef enum
|
||||
{
|
||||
GST_RTP_DUMMY_RETURN_TO_PUSH,
|
||||
GST_RTP_DUMMY_USE_PUSH_FUNC,
|
||||
GST_RTP_DUMMY_USE_PUSH_LIST_FUNC,
|
||||
} GstRtpDummyPushMethod;
|
||||
|
||||
typedef struct _GstRtpDummyDepay GstRtpDummyDepay;
|
||||
typedef struct _GstRtpDummyDepayClass GstRtpDummyDepayClass;
|
||||
|
||||
|
@ -48,6 +55,8 @@ struct _GstRtpDummyDepay
|
|||
{
|
||||
GstRTPBaseDepayload depayload;
|
||||
guint64 rtptime;
|
||||
|
||||
GstRtpDummyPushMethod push_method;
|
||||
};
|
||||
|
||||
struct _GstRtpDummyDepayClass
|
||||
|
@ -110,6 +119,7 @@ rtp_dummy_depay_new (void)
|
|||
static GstBuffer *
|
||||
gst_rtp_dummy_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
|
||||
{
|
||||
GstRtpDummyDepay *self = GST_RTP_DUMMY_DEPAY (depayload);
|
||||
GstRTPBuffer rtp = { NULL };
|
||||
GstBuffer *outbuf;
|
||||
guint32 rtptime;
|
||||
|
@ -150,6 +160,22 @@ gst_rtp_dummy_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
|
|||
gst_memory_unref (mem);
|
||||
}
|
||||
|
||||
switch (self->push_method) {
|
||||
case GST_RTP_DUMMY_USE_PUSH_FUNC:
|
||||
gst_rtp_base_depayload_push (depayload, outbuf);
|
||||
outbuf = NULL;
|
||||
break;
|
||||
case GST_RTP_DUMMY_USE_PUSH_LIST_FUNC:{
|
||||
GstBufferList *blist = gst_buffer_list_new ();
|
||||
gst_buffer_list_add (blist, outbuf);
|
||||
outbuf = NULL;
|
||||
gst_rtp_base_depayload_push_list (depayload, blist);
|
||||
break;
|
||||
}
|
||||
case GST_RTP_DUMMY_RETURN_TO_PUSH:
|
||||
break;
|
||||
}
|
||||
|
||||
return outbuf;
|
||||
}
|
||||
|
||||
|
@ -1466,6 +1492,54 @@ GST_START_TEST (rtp_base_depayload_max_reorder)
|
|||
|
||||
GST_END_TEST;
|
||||
|
||||
GST_START_TEST (rtp_base_depayload_flow_return_push_func)
|
||||
{
|
||||
State *state;
|
||||
|
||||
state = create_depayloader ("application/x-rtp", NULL);
|
||||
|
||||
GST_RTP_DUMMY_DEPAY (state->element)->push_method =
|
||||
GST_RTP_DUMMY_USE_PUSH_LIST_FUNC;
|
||||
|
||||
set_state (state, GST_STATE_PLAYING);
|
||||
|
||||
GST_PAD_SET_FLUSHING (state->sinkpad);
|
||||
|
||||
push_rtp_buffer_fails (state, GST_FLOW_FLUSHING,
|
||||
"pts", 0 * GST_SECOND,
|
||||
"rtptime", G_GUINT64_CONSTANT (0x1234), "seq", 0x4242, NULL);
|
||||
|
||||
set_state (state, GST_STATE_NULL);
|
||||
|
||||
destroy_depayloader (state);
|
||||
}
|
||||
|
||||
GST_END_TEST;
|
||||
|
||||
GST_START_TEST (rtp_base_depayload_flow_return_push_list_func)
|
||||
{
|
||||
State *state;
|
||||
|
||||
state = create_depayloader ("application/x-rtp", NULL);
|
||||
|
||||
GST_RTP_DUMMY_DEPAY (state->element)->push_method =
|
||||
GST_RTP_DUMMY_USE_PUSH_FUNC;
|
||||
|
||||
set_state (state, GST_STATE_PLAYING);
|
||||
|
||||
GST_PAD_SET_FLUSHING (state->sinkpad);
|
||||
|
||||
push_rtp_buffer_fails (state, GST_FLOW_FLUSHING,
|
||||
"pts", 0 * GST_SECOND,
|
||||
"rtptime", G_GUINT64_CONSTANT (0x1234), "seq", 0x4242, NULL);
|
||||
|
||||
set_state (state, GST_STATE_NULL);
|
||||
|
||||
destroy_depayloader (state);
|
||||
}
|
||||
|
||||
GST_END_TEST;
|
||||
|
||||
static Suite *
|
||||
rtp_basepayloading_suite (void)
|
||||
{
|
||||
|
@ -1500,6 +1574,9 @@ rtp_basepayloading_suite (void)
|
|||
tcase_add_test (tc_chain, rtp_base_depayload_source_info_from_rtp_only);
|
||||
tcase_add_test (tc_chain, rtp_base_depayload_max_reorder);
|
||||
|
||||
tcase_add_test (tc_chain, rtp_base_depayload_flow_return_push_func);
|
||||
tcase_add_test (tc_chain, rtp_base_depayload_flow_return_push_list_func);
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue