]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-11521: [mod_av] WIP add test code and add png
authorSeven Du <seven@signalwire.com>
Wed, 14 Nov 2018 06:36:18 +0000 (14:36 +0800)
committerAndrey Volk <andywolk@gmail.com>
Wed, 2 Jan 2019 20:22:08 +0000 (00:22 +0400)
conf/vanilla/autoload_configs/av.conf.xml
src/mod/applications/mod_av/test/Makefile.am
src/mod/applications/mod_av/test/cluecon.png [new file with mode: 0644]
src/mod/applications/mod_av/test/test_avformat.c [new file with mode: 0644]

index cf28fab3d3ce85b244ae34cbc101b94d8f3ac638..5a53668c4d039857b1ef213862f081ecbb2322c1 100644 (file)
@@ -141,5 +141,6 @@ enum AVColorRange {
 
 <configuration name="avformat.conf" description="AVFormat Config">
   <settings>
+      <param name="colorspace" value="1"/>
   </settings>
 </configuration>
index 4c66bd22f6e048d9bd82d98e53e6edba9ef50067..b7111a2275b0578de6506135498233417fb9f87b 100644 (file)
@@ -1,4 +1,4 @@
-bin_PROGRAMS = test_mod_av
+bin_PROGRAMS = test_mod_av test_avformat
 AM_CFLAGS = $(SWITCH_AM_CFLAGS) -I../ $(AVFORMAT_CFLAGS) $(AVCODEC_CFLAGS) $(SWSCALE_CFLAGS) $(AVUTIL_CFLAGS) $(AVRESAMPLE_CFALGS)
 AM_LDFLAGS = $(switch_builddir)/libfreeswitch.la $(AVFORMAT_LIBS) $(AVCODEC_LIBS) $(SWSCALE_LIBS)  $(AVUTIL_LIBS) $(AVRESAMPLE_LIBS) -avoid-version -no-undefined $(SWITCH_AM_LDFLAGS) ../mod_av.la
 TESTS = $(bin_PROGRAMS)
diff --git a/src/mod/applications/mod_av/test/cluecon.png b/src/mod/applications/mod_av/test/cluecon.png
new file mode 100644 (file)
index 0000000..91abe81
Binary files /dev/null and b/src/mod/applications/mod_av/test/cluecon.png differ
diff --git a/src/mod/applications/mod_av/test/test_avformat.c b/src/mod/applications/mod_av/test/test_avformat.c
new file mode 100644 (file)
index 0000000..248d43f
--- /dev/null
@@ -0,0 +1,110 @@
+/*
+ * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
+ * Copyright (C) 2005-2018, Anthony Minessale II <anthm@freeswitch.org>
+ *
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
+ *
+ * The Initial Developer of the Original Code is
+ * Seven Du <seven@signalwire.com>
+ * Portions created by the Initial Developer are Copyright (C)
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ *
+ * test_avformat -- avformat tests
+ *
+ */
+
+#include <test/switch_test.h>
+
+#define SAMPLES 160
+
+FST_CORE_BEGIN("conf")
+{
+       FST_MODULE_BEGIN(mod_av, mod_av_test)
+       {
+               FST_SETUP_BEGIN()
+               {
+                       fst_requires_module("mod_av");
+               }
+               FST_SETUP_END()
+
+               FST_TEST_BEGIN(avformat_test)
+               {
+                       switch_status_t status;
+                       switch_image_t *img = switch_img_alloc(NULL, SWITCH_IMG_FMT_I420, 1280, 720, 1);
+            switch_file_handle_t fh = { 0 };
+                       uint8_t data[SAMPLES * 2] = { 0 };
+                       switch_frame_t frame = { 0 };
+                       switch_size_t len = SAMPLES;
+                       uint32_t flags = SWITCH_FILE_FLAG_WRITE | SWITCH_FILE_DATA_SHORT | SWITCH_FILE_FLAG_VIDEO;
+
+                       fst_requires(img);
+
+            status = switch_core_file_open(&fh, "./test.mp4", 1, 8000, flags, fst_pool);
+                       fst_requires(status == SWITCH_STATUS_SUCCESS);
+            fst_requires(switch_test_flag(&fh, SWITCH_FILE_OPEN));
+
+                       status = switch_core_file_write(&fh, data, &len);
+                       switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "status: %d len: %d\n", status, len);
+                       fst_check(status == SWITCH_STATUS_SUCCESS);
+                       // fst_requires(len == SAMPLES);
+
+                       frame.img = img;
+                       status = switch_core_file_write_video(&fh, &frame);
+                       fst_check(status == SWITCH_STATUS_SUCCESS);
+
+                       switch_image_t *ccimg = switch_img_read_png("./cluecon.png", SWITCH_IMG_FMT_ARGB);
+                       fst_requires(ccimg);
+
+                       switch_rgb_color_t color = {0};
+                       color.a = 255;
+
+                       for (int i = 0; i < 30; i++) {
+                               len = SAMPLES;
+
+                               if (i == 10) {
+                                       color.r = 255;
+                               } else if (i == 20) {
+                                       color.r = 0;
+                                       color.b = 255;
+                               }
+
+                               switch_img_fill(img, 0, 0, img->d_w, img->d_h, &color);
+                               switch_img_patch(img, ccimg, i * 10, i * 10);
+
+                               status = switch_core_file_write(&fh, data, &len);
+                               status = switch_core_file_write_video(&fh, &frame);
+                               switch_yield(100000);
+                       }
+
+            switch_core_file_close(&fh);
+                       switch_img_free(&img);
+                       switch_img_free(&ccimg);
+               }
+               FST_TEST_END()
+
+               FST_TEARDOWN_BEGIN()
+               {
+                       const char *err = NULL;
+                       switch_sleep(1000000);
+                       fst_check(switch_loadable_module_unload_module(SWITCH_GLOBAL_dirs.mod_dir, (char *)"mod_av", SWITCH_TRUE, &err) == SWITCH_STATUS_SUCCESS);
+               }
+               FST_TEARDOWN_END()
+       }
+       FST_MODULE_END()
+}
+FST_CORE_END()