312
GST_START_TEST (test_ten_s8)
316
GstBuffer *outbuffer;
318
gint8 in[2] = { 64, -10 };
319
gint8 out[2] = { 127, -100 }; /* notice the clamped sample */
322
volume = setup_volume ();
323
g_object_set (G_OBJECT (volume), "volume", 10.0, NULL);
324
fail_unless (gst_element_set_state (volume,
325
GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
326
"could not set to playing");
328
inbuffer = gst_buffer_new_and_alloc (2);
329
memcpy (GST_BUFFER_DATA (inbuffer), in, 2);
330
fail_unless (memcmp (GST_BUFFER_DATA (inbuffer), in, 2) == 0);
331
caps = gst_caps_from_string (VOLUME_CAPS_STRING_S8);
332
gst_buffer_set_caps (inbuffer, caps);
333
gst_caps_unref (caps);
334
ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1);
335
/* FIXME: reffing the inbuffer should make the transformation not be
337
gst_buffer_ref (inbuffer);
340
/* pushing gives away my reference ... */
341
fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK);
342
/* ... but it ends up being modified inplace and
343
* collected on the global buffer list */
344
ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1);
345
fail_unless_equals_int (g_list_length (buffers), 1);
346
fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL);
347
fail_unless (inbuffer == outbuffer);
348
res = (gint8 *) GST_BUFFER_DATA (outbuffer);
349
GST_INFO ("expected %+5d %+5d real %+5d %+5d", out[0], out[1], res[0],
351
fail_unless (memcmp (GST_BUFFER_DATA (outbuffer), out, 2) == 0);
354
cleanup_volume (volume);
312
359
GST_START_TEST (test_mute_s8)
314
361
GstElement *volume;
537
GST_START_TEST (test_ten_s16)
541
GstBuffer *outbuffer;
543
gint16 in[2] = { 16384, -10 };
544
gint16 out[2] = { 32767, -100 }; /* notice the clamped sample */
547
volume = setup_volume ();
548
g_object_set (G_OBJECT (volume), "volume", 10.0, NULL);
549
fail_unless (gst_element_set_state (volume,
550
GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
551
"could not set to playing");
553
inbuffer = gst_buffer_new_and_alloc (4);
554
memcpy (GST_BUFFER_DATA (inbuffer), in, 4);
555
fail_unless (memcmp (GST_BUFFER_DATA (inbuffer), in, 4) == 0);
556
caps = gst_caps_from_string (VOLUME_CAPS_STRING_S16);
557
gst_buffer_set_caps (inbuffer, caps);
558
gst_caps_unref (caps);
559
ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1);
560
/* FIXME: reffing the inbuffer should make the transformation not be
562
gst_buffer_ref (inbuffer);
565
/* pushing gives away my reference ... */
566
fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK);
567
/* ... but it ends up being modified inplace and
568
* collected on the global buffer list */
569
ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1);
570
fail_unless_equals_int (g_list_length (buffers), 1);
571
fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL);
572
fail_unless (inbuffer == outbuffer);
573
res = (gint16 *) GST_BUFFER_DATA (outbuffer);
574
GST_INFO ("expected %+5d %+5d real %+5d %+5d", out[0], out[1], res[0],
576
fail_unless (memcmp (GST_BUFFER_DATA (outbuffer), out, 4) == 0);
579
cleanup_volume (volume);
491
585
GST_START_TEST (test_mute_s16)
800
GST_START_TEST (test_ten_s24)
804
GstBuffer *outbuffer;
806
gint32 in_32[2] = { 4194304, -10 };
810
gint32 out_32[2] = { 8388607, -100 }; /* notice the clamped sample */
812
write_unaligned_u24 (in, in_32[0]);
813
write_unaligned_u24 (in + 3, in_32[1]);
815
volume = setup_volume ();
816
g_object_set (G_OBJECT (volume), "volume", 10.0, NULL);
817
fail_unless (gst_element_set_state (volume,
818
GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
819
"could not set to playing");
821
inbuffer = gst_buffer_new_and_alloc (6);
822
memcpy (GST_BUFFER_DATA (inbuffer), in, 6);
823
fail_unless (memcmp (GST_BUFFER_DATA (inbuffer), in, 6) == 0);
824
caps = gst_caps_from_string (VOLUME_CAPS_STRING_S24);
825
gst_buffer_set_caps (inbuffer, caps);
826
gst_caps_unref (caps);
827
ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1);
828
/* FIXME: reffing the inbuffer should make the transformation not be
830
gst_buffer_ref (inbuffer);
833
/* pushing gives away my reference ... */
834
fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK);
835
/* ... but it ends up being modified inplace and
836
* collected on the global buffer list */
837
ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1);
838
fail_unless_equals_int (g_list_length (buffers), 1);
839
fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL);
840
fail_unless (inbuffer == outbuffer);
841
res = GST_BUFFER_DATA (outbuffer);
843
res_32[0] = get_unaligned_i24 (res);
844
res_32[1] = get_unaligned_i24 ((res + 3));
846
GST_INFO ("expected %+5d %+5d real %+5d %+5d", out_32[0], out_32[1],
847
res_32[0], res_32[1]);
848
fail_unless (memcmp (res_32, out_32, 8) == 0);
851
cleanup_volume (volume);
707
856
GST_START_TEST (test_mute_s24)
1044
GST_START_TEST (test_ten_s32)
1047
GstBuffer *inbuffer;
1048
GstBuffer *outbuffer;
1050
gint32 in[2] = { 1073741824, -10 };
1051
gint32 out[2] = { 2147483647, -100 }; /* notice the clamped sample */
1054
volume = setup_volume ();
1055
g_object_set (G_OBJECT (volume), "volume", 10.0, NULL);
1056
fail_unless (gst_element_set_state (volume,
1057
GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
1058
"could not set to playing");
1060
inbuffer = gst_buffer_new_and_alloc (8);
1061
memcpy (GST_BUFFER_DATA (inbuffer), in, 8);
1062
fail_unless (memcmp (GST_BUFFER_DATA (inbuffer), in, 8) == 0);
1063
caps = gst_caps_from_string (VOLUME_CAPS_STRING_S32);
1064
gst_buffer_set_caps (inbuffer, caps);
1065
gst_caps_unref (caps);
1066
ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1);
1067
/* FIXME: reffing the inbuffer should make the transformation not be
1069
gst_buffer_ref (inbuffer);
1072
/* pushing gives away my reference ... */
1073
fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK);
1074
/* ... but it ends up being modified inplace and
1075
* collected on the global buffer list */
1076
ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1);
1077
fail_unless_equals_int (g_list_length (buffers), 1);
1078
fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL);
1079
fail_unless (inbuffer == outbuffer);
1080
res = (gint32 *) GST_BUFFER_DATA (outbuffer);
1081
GST_INFO ("expected %+5d %+5d real %+5d %+5d", out[0], out[1], res[0],
1083
fail_unless (memcmp (GST_BUFFER_DATA (outbuffer), out, 8) == 0);
1086
cleanup_volume (volume);
896
1091
GST_START_TEST (test_mute_s32)
1273
GST_START_TEST (test_ten_f32)
1276
GstBuffer *inbuffer;
1277
GstBuffer *outbuffer;
1279
gfloat in[2] = { 0.75, -0.25 };
1280
gfloat out[2] = { 7.5, -2.5 }; /* nothing is clamped */
1283
volume = setup_volume ();
1284
g_object_set (G_OBJECT (volume), "volume", 10.0, NULL);
1285
fail_unless (gst_element_set_state (volume,
1286
GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
1287
"could not set to playing");
1289
inbuffer = gst_buffer_new_and_alloc (8);
1290
memcpy (GST_BUFFER_DATA (inbuffer), in, 8);
1291
fail_unless (memcmp (GST_BUFFER_DATA (inbuffer), in, 8) == 0);
1292
caps = gst_caps_from_string (VOLUME_CAPS_STRING_F32);
1293
gst_buffer_set_caps (inbuffer, caps);
1294
gst_caps_unref (caps);
1295
ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1);
1296
/* FIXME: reffing the inbuffer should make the transformation not be
1298
gst_buffer_ref (inbuffer);
1301
/* pushing gives away my reference ... */
1302
fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK);
1303
/* ... but it ends up being modified inplace and
1304
* collected on the global buffer list */
1305
ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1);
1306
fail_unless_equals_int (g_list_length (buffers), 1);
1307
fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL);
1308
fail_unless (inbuffer == outbuffer);
1309
res = (gfloat *) GST_BUFFER_DATA (outbuffer);
1310
GST_INFO ("expected %+1.4f %+1.4f real %+1.4f %+1.4f", out[0], out[1],
1312
fail_unless_equals_float (res[0], out[0]);
1313
fail_unless_equals_float (res[1], out[1]);
1316
cleanup_volume (volume);
1079
1322
GST_START_TEST (test_mute_f32)
1505
GST_START_TEST (test_ten_f64)
1508
GstBuffer *inbuffer;
1509
GstBuffer *outbuffer;
1511
gdouble in[2] = { 0.75, -0.25 };
1512
gdouble out[2] = { 7.5, -2.5 }; /* nothing is clamped */
1515
volume = setup_volume ();
1516
g_object_set (G_OBJECT (volume), "volume", 10.0, NULL);
1517
fail_unless (gst_element_set_state (volume,
1518
GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
1519
"could not set to playing");
1521
inbuffer = gst_buffer_new_and_alloc (16);
1522
memcpy (GST_BUFFER_DATA (inbuffer), in, 16);
1523
fail_unless (memcmp (GST_BUFFER_DATA (inbuffer), in, 16) == 0);
1524
caps = gst_caps_from_string (VOLUME_CAPS_STRING_F64);
1525
gst_buffer_set_caps (inbuffer, caps);
1526
gst_caps_unref (caps);
1527
ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1);
1528
/* FIXME: reffing the inbuffer should make the transformation not be
1530
gst_buffer_ref (inbuffer);
1533
/* pushing gives away my reference ... */
1534
fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK);
1535
/* ... but it ends up being modified inplace and
1536
* collected on the global buffer list */
1537
ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1);
1538
fail_unless_equals_int (g_list_length (buffers), 1);
1539
fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL);
1540
fail_unless (inbuffer == outbuffer);
1541
res = (gdouble *) GST_BUFFER_DATA (outbuffer);
1542
GST_INFO ("expected %+1.4f %+1.4f real %+1.4f %+1.4f", out[0], out[1],
1544
fail_unless_equals_float (res[0], out[0]);
1545
fail_unless_equals_float (res[1], out[1]);
1548
cleanup_volume (volume);
1263
1554
GST_START_TEST (test_mute_f64)
1493
1784
tcase_add_test (tc_chain, test_unity_s8);
1494
1785
tcase_add_test (tc_chain, test_half_s8);
1495
1786
tcase_add_test (tc_chain, test_double_s8);
1787
tcase_add_test (tc_chain, test_ten_s8);
1496
1788
tcase_add_test (tc_chain, test_mute_s8);
1497
1789
tcase_add_test (tc_chain, test_unity_s16);
1498
1790
tcase_add_test (tc_chain, test_half_s16);
1499
1791
tcase_add_test (tc_chain, test_double_s16);
1792
tcase_add_test (tc_chain, test_ten_s16);
1500
1793
tcase_add_test (tc_chain, test_mute_s16);
1501
1794
tcase_add_test (tc_chain, test_unity_s24);
1502
1795
tcase_add_test (tc_chain, test_half_s24);
1503
1796
tcase_add_test (tc_chain, test_double_s24);
1797
tcase_add_test (tc_chain, test_ten_s24);
1504
1798
tcase_add_test (tc_chain, test_mute_s24);
1505
1799
tcase_add_test (tc_chain, test_unity_s32);
1506
1800
tcase_add_test (tc_chain, test_half_s32);
1507
1801
tcase_add_test (tc_chain, test_double_s32);
1802
tcase_add_test (tc_chain, test_ten_s32);
1508
1803
tcase_add_test (tc_chain, test_mute_s32);
1509
1804
tcase_add_test (tc_chain, test_unity_f32);
1510
1805
tcase_add_test (tc_chain, test_half_f32);
1511
1806
tcase_add_test (tc_chain, test_double_f32);
1807
tcase_add_test (tc_chain, test_ten_f32);
1512
1808
tcase_add_test (tc_chain, test_mute_f32);
1513
1809
tcase_add_test (tc_chain, test_unity_f64);
1514
1810
tcase_add_test (tc_chain, test_half_f64);
1515
1811
tcase_add_test (tc_chain, test_double_f64);
1812
tcase_add_test (tc_chain, test_ten_f64);
1516
1813
tcase_add_test (tc_chain, test_mute_f64);
1517
1814
tcase_add_test (tc_chain, test_wrong_caps);
1518
1815
tcase_add_test (tc_chain, test_passthrough);