-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathChangeLog
2882 lines (2152 loc) · 124 KB
/
ChangeLog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
Snowmix Change Log
Copyright 2012-2020 Peter Maersk-Moller
Version 0.5.1.1
- The following files have been modified to compile, install and run on newer OS
and distros.
ChangeLog
bootstrap
bootstrapmin-opengl
bootstrapd/bootstrap-arch
bootstrapd/bootstrap-centos
bootstrapd/bootstrap-fedora
bootstrapd/bootstrap-debian
bootstrapd/bootstrap-ubuntu
bootstrapd/bootstrap-opensuse
bootstrapd/bootstrap-osx
bootstrapd/check_for_tcl_bwidget.sh
bootstrapd/check_for_tcl_package.tcl
README_0.5.1.1
scripts/Makefile.am
scripts/output2screen
scripts/av_output2screen
scripts/av_output2tcp_server
scripts/input2feed
scripts/snowmix-settings
scripts/nc-settings
scripts/demo
scripts/v4l2input2feed
src/opengl_video.cpp
strapboot
Some files and directories with the text 'old' has also been removed
as they are no longer relevant.
- list a glshape on macOS with a 'glshape begin' element would in most
cases crash in PrintShapeElements() in opengel_video.cpp. On Linux
in many cases, garbage would be listed. This is a bugfix.
Version 0.5.1
- Debian support now has its own additional bootstrap file to be executed
automatically when running bootstrap. Will check for GStreamer 1.0
and offer to download relevant packages.
- Including OpenGL GLUT support now requires '--enable-snowmixglut'
when running configure. Full OpenGL support can be enabled by:
./configure --prefix=$prefix --enable-snowmixosmesa --enable-snowmixx11 --enable-snowmixglu -enable-snowmixglut
- On Mac OS X, a pipeline closing connection to Snowmix output control
connection setup by GStreamer shmsrc, would under certain circumstances
make Snowmix exit without any explanation. This happened when Snowmix
would "send" data to the control connection of the connecting shmsrc
and the shmsrc had broken the connection. Due to OS X not supporting
MSG_NO_SIGNAL, a SIGPIPE would make Snowmix exit without warnings.
Snowmix now correctly sets the socket option SO_NOSIGPIPE for OS X and
catches the signal and closing the socket nicely. Linux just sets
MSG_NOSIGNAL flag when sending. This bugfix has also been implemented
on the feed control connection although so far, the bug has not been
reproduced on OS X on the fed control connection.
- Deleting a loaded image or loading an image into an already used image id,
would leak memory. This is now fixed. This is a bugfix.
- Error in CCairoGraphic::OverlayText() and UTF8Bytes() would in some cases
lead to incorrect fewer number of characters being overlayed when using
"text grow" combined with a string containing multibyte charaters. In
some cases libPango would object to malformed UTF8 string with a for Snowmix
unpredictable result. This is a bugfix.
- In addition to loading PNG images WITH an alpha channel/layer, Snowmix now
also support loading PNG images without an alpha channel/layer.
- The command "text backgr rgb" with argument would switch the green and blue
value. The correct order is red, green and blue. This is a bugfix.
- For Mac OS X, updating bootstrap-OSX for GStreamer 1.6.3 and MacPort 2.3.4.
- The tcl command "snowmix info xxxx ids" would in many cases overwrite memory
unintended for image load, test, shape, virtual feed, feed, audio feed,
audio mixer and audio sink leading to unpredictable results, usually a crash.
This is a bugfix.
- Clipping of audio was detected as being outside the range of -32768 to 32767.
The valid range for audio with no clipping is now set to -32767 to 32767.
The previous range is not considered a bug and the change is as such just
a minor adjustment.
- When having a source in CAudioMixer with fewer channels than the mixer
itself, the mixer would, if volume of the source for the mixer was different
from 1.0, for some samples of the source frequently multiply the volume
to the source more than once. This was most clearly heard as clicking when volume for
the source in CAudioMixer was set beyond 1.0 and very clearly heard when
volume was set above 1.2-1.3. If volume was set to 1.3, then for most samples for
the source these would be multiplied by 1.3, but some every now and then would
be multiplied by 1.3*1.3. This is a bugfix.
- Adding/mixing multiple sources in CAudioMixer would not correctly set
newbuf->clipped to 100, if result exceeded +-32767, but it was rather set
to true (=1) thus mostly avoiding detection of clipping. This is a bugfix.
- Adding a new option for the snowmix command of the embedded interpreter.
The command can be used to import settings and states from the output
modules of Snowmix into the embedded Interpreter. The syntax of the
new command option is:
snowmix info output ((info | status) [ format ]) | syntax
One way to use the command can be like this:
tcl eval snowmix message [snowmix info output info]
- The command "tcl help" would print lines for "snowmix info shapes" and
"snowmix info system" twice and the second print was not correct. Seconds
removed. Cosmetic change.
- The command "audio feed delay <feed id> <ms>" would print to stderr, aka
the Snowmix console instead of the controller issuing the command. Verbose
mode for audio feed is needed. This is a bugfix.
- The command "audio sink status" was missing a parameter name "queue" in
the format list included in the beginning of the list. This is a bugfix.
- The tcl command "snowmix info audio mixer source extended format" was missing
the parameter name delay in its list. When using the format list to
index output from "snowmix info audio mixer source extended ..." it
would lead to a misinterpretation of the data. This is a bugfix.
- The tcl command "snowmix info audio mixer source info ..." would return an
unbalanced tcl list if any of the mixer sources had a source map configured.
This is a bugfix.
- The tcl command "snowmix info audio mixer source" would print signed/unsigned instead
of muted/unmuted and it would print the value for signed/unsigned. Should be
the value for muted/unmuted. This is a bugfix.
- The tcl command "snowmix info audio mixer source ..." would miss a space between an
ending '}' and a starting '{' and mess up the use of this list if used as a list in
tcl. This is a bugfix.
- The tcl commands "snowmix info audio feed status ..." and "snowmix info audio sink status ..."
would print signed/unsigned instead of muted/unmuted. It would also return a malformed tcl
list with unbalanced '{}'. This is a bugfix.
- The tcl command "snowmix info audio mixer source extended ..." would access sample_count
of an audio queue, also when none was appointed leading to a NULL pointer seg fault.
This is a bugfix.
- Setting the Windows attribute override_redirect to true should now make the glx
COpenglVideo class bypass the window manager. Enhancement.
- Update to slib/scenes.slib. SceneSetFrameActive used to set or list active frame/frames.
Used without arguments, it will list the all frame states for all scenes.
Used with scene_id as argument, it will list all frame state for that scene
Used with scene_id and frame_id as argument, it will list frame state for that scene and
that frame. Enhancement. The syntax is:
SceneSetFrameActive [ scene_id [ frame_id [ active silent ] ] ]
- Adding support for compiling Snowmix with Cairo Graphics older than version 1.10. This
however limits the list of Cairo Graphics Operators. See http://cairographics.org/operators/
- In configure.ac we now actually test for libtcl8.6, libtcl8.5 and libtcl in that order
instead of just assuming it existence from location of header files.
- Adding freebsd as platform to configure.ac. Used for PCBSD.
- Updating bootstrap files in bootstrapd for all platforms.
Version 0.5.0.1 and 0.5.1
- Adding xfc4-terminal and lxterm to possible terminal emulators for the demo script.
Enhancement.
- The images/CS directory was not installed rendering the demo example for ini/sapphire-basis
flawed when using the scene tab in snowcub. Bugfix.
- The script scripts/av_output2screen used 'nc' rather than $NC. Potential stall on some systems.
Bugfix.
- The script scripts/demo installed as snowmix_demo is missing a '&' preventing the demo script
from working correctly on Linux/*nix systems (except MacOSX) if gnome-terminal is not installed.
https://sourceforge.net/p/snowmix/discussion/Snowmix_Support_Forum/thread/551db9a7/
Bugfix.
- The line with 'audiorate' in the script av_output2screen would in some cases stall the
pipeline. The line has now been removed although on some systems it may be needed to
avoid clicking sounds building up over time where the audio device is running
slightly faster than system clock. Seen on Macs and some Linux systems. Sort of
a bugfix.
Version 0.5.0
- Adding the following 72 commands for OpenGL support in Snowmix:
glshape add [<glshape id> [<shape name>]]
glshape arcxz <glshape id> <angle> <aspect> <slices> <texleft> <texright> <textop> <texbottom>
glshape arcyz <glshape id> <angle> <aspect> <slices> <texleft> <texright> <textop> <texbottom>
glshape begin <glshape id> <form>
glshape blendfunc <glshape id> <s factor> <d factor>
glshape clear <glshape id> (depth | color | color+depth)
glshape clearcolor <glshape id> <red> <green> <blue> [<alpha>]
glshape color <glshape id> <red> <green> <blue> [<alpha>]
glshape context [(osmesa|glx|auto)]
glshape disable <glshape id> <mode>
glshape enable <glshape id> <mode>
glshape end <glshape id>
glshape entry <glshape id> (active|inactivate|number)
glshape finish <glshape id>
glshape flush <glshape id>
glshape glucylinder <glshape id> <quad id> <base> <top> <height> <slices> <stacks>
glshape gludisk <quad id> <inner> <outer> <slices> <loops>
glshape gludrawstyle <glshape id> <quad id> (fill|line|point|silhouette)
glshape glunormals <glshape id> <quad id> (none|flat|smooth)
glshape gluorientation <glshape id> <quad id> (outside|inside)
glshape glupartialdisk <quad id> <inner> <outer> <slices> <loops> <start> <sweep>
glshape gluperspective <glshape id> <fovy> <aspect> <znear> <zfar>
glshape glusphere <glshape id> <quad id> <radius> <slices> <stacks>
glshape glutexture <glshape id> <quad id> (0|1)
glshape if (osmesa|glx) <glshape id> <glshape command>
glshape info
glshape inshape <glshape id> <inglshape id>
glshape light <shape id> <gllight i> <pname> <value>
glshape lightv <shape id> <gllight i> <pname> <vector id>
glshape loadidentity <glshape id>
glshape materialv <glshape id> <face> <pname> <vector id>
glshape matrixmode <glshape id> (projection | modelview | texture | color)
glshape modify <glshape id> <line> (<no>[,<no>...] (<value> | values>)
glshape moveentry <shape id> <entry id> [<to entry>]
glshape normal <glshape id> <x> <y> <z>
glshape noop <glshape id>
glshape ortho <glshape id> <left> <right> <bottom> <top> <near> <far>
glshape popmatrix <glshape id>
glshape pushmatrix <glshape id>
glshape recursion <glshape id> <level>
glshape rotate <glshape id> <angle> <x> <y> <z>
glshape scale <glshape id> <scale x> <scale y> <scale z>
glshape scissor <glshape id> <x> <y> <width> <height>
glshape shademodel <glshape id> (flat|smooth)
glshape snowmix <glshape id> <snowmix command>
glshape translate <glshape id> <x> <y> <z>
glshape texcoord <glshape id> <s> [<r> [<t> [<q>]]]
glshape texfilter2d <glshape id> <near filter> <mag filter>
glshape texture add [<texture id> [<texture name>]]
glshape texture bind <glshape id> <texture id> [<min> <mag>] [(2d | cube)]
glshape texture source [<texture id> (feed <feed id>|frame <frame id>|image <image id>)|none [<id>]]
glshabe vbo add <vbo id> <name>
glshabe vbo config <vbo id> [(static|dynamic|stream) <form> (c3 | c4 | n3 | t1 | t2 | t3 | t4 | v2 | v3 | v4) ...]
glshabe vbo data <vbo id> [<data 0> <data 1> ...]
glshabe vbo indices <vbo id> [<index 0> <index 1> ...]
glshabe vbo <glshape id> <vbo id>
glshape vector add [<vector id> [<vector name>]]
glshape vector value [<vector id> <a> <b> [<c> [<d>]]]
glshape verbose [<level>]
glshape vertex <glshape id> <x> [<y> [<z> [<w>]]]
glshape help [form | mode | filter | factor | light | modify]
glshape place help
glshape copyback [frame | image <image_id> <x> <y> <width> <height>]
glshape [ place ] overlay (<id> | <id>..<id> | <id>..end | all) [(<id> | <id>..<id> | <id>..end | all)] ....
glshape place [<place id> [ <shape id> <x> <y> <z> [<scale x> <scale y> <scale z> [<rotation> <rx> <ry> <rz> [<red> <green> <blue> [<alpha>]]]]]
glshape place alpha [<place id> [<alpha>]]
glshape place coor [<place id> [<x> <y> <z>]]
glshape place rgb [<place id> [<red> <green> <blue> [<alpha>]]]
glshape place rotation [<place id> [<rotation> <rx> <ry> <rz>]]
glshape place scale [<place id> [<scale x> <scale y> <scale z>]]
glshape place help // this help
- Adding 4 entries to be listed for the command 'help'. The entries are:
glshape help
glshape place help
shape help
shape place help
- As announced in EndOfLifeAnnouncements, this version no longer
supports the following commands:
Obsolete command Replacement
--------------------------------------------------
cairooverlay feed -- no replacement --
image place align image align
image place alpha image alpha
image place anchor image anchor
image place clip image clip
image place coor image coor
image place filter image filter
image place image image image
image place matrix image matrix
image place move alpha image move alpha
image place move clip image move clip
image place move coor image move coor
image place move offset image move offset
image place move rotation image move rotation
image place move scale image move scale
image place offset image offset
image place rotation image rotation
image place scale image scale
overlay feed feed overlay
overlay image image overlay
overlay virtual feed vfeed overlay
overlay text text overlay
text place align text align
text place alpha text alpha
text place anchor text anchor
text place backgr alpha text backgr alpha
text place backgr clip text backgr clip
text place backgr linpat text backgr linpat
text place backgr round text backgr round
text place backgr alpha text backgr alpha
text place backgr move alpha text backgr move alpha
text place backgr move clip text backgr move clip
text place backgr rgb text backgr rgb
text place backgr text backgr
text place clip text clip
text place clipabs text clipabs
text place coor text coor
text place grow text grow
text place move alpha text move alpha
text place move clip text move clip
text place move coor text move coor
text place move rotation text move rotation
text place move scale text move scale
text place offset text offset
text place repeat move text repeat move
text place rgb text rgb
text place rotation text rotation
text place scale text scale
- As announced in EndOfLifeAnnouncements, this version no longer
execute returned strings from the Tcl Interpreter as Snowmix
commands. Version 0.4.4 introduced the embedded tcl command
*snowmix parse* to excute Snowmix commands from within the embedded
interpreter.
- Adding new command *feed drop* to drop frames from the input FIFO
for feeds. It is not possible to drop more frames that the fifo
contains minus one. The syntax is:
feed drop <feed id> <n drops>
- If a feed was connected but a frame never arrived, the feed would have
the state RUNNING. It should be STALLED. This is a bugfix.
- A TCP connection to Snowmix's control port where the connection IP
address was not allowed (ie. not in the allow list) would cause
Snowmix to exit. This is a bugfix.
- If verbose is set using the command *verbose 1*, a connecting
TCP connection to Snowmix will now cause the IP address to
be printed at console. Before the IP would be printed as an integer
and a hex.
- The command *image move scale* could reduce the scale of an image
to zero. When a overlayed placed image was reduce to scale zero,
overlaying other images would be affected (they became invisible).
This is now fixed by ensuring the move command can not make the
scale become zero. This is a bugfix.
- Testing for existence of a loaded image is now possible as it
has been and is possible to test for the existence of a command
macro. Example:
command create TestImage14
if exist(image,14)
message image 14 is loaded
else
message image 14 is not loaded
endif
loop
command end
- Image loaded and image placed now have a sequence number. This
number will for each image_id or place_id be incremented
when deleted or a new image is loaded. Currently the sequence
number for a placed image is currently not incremented.
- Making CVideoMixer m_geometry_width and m_geometry_height
private and exposing the geometry through the calls
GetSystemWidth(), GetSystemHeight() and SystemGeometry().
- In configure.ac. We now check for libcairo and fail if it is not
available. We now check for libpangocairo and fail if it is not
available. We now skip checking GTK+ if snowmixgui is not enabled.
We now skip checking for OSMesa if snowmixosmesa is not enabled.
We now skip checking for GLEW if snowmixglew is not enabled.
- Adding command *shape newsubpath* to add the Cairo Graphic primitive
newsubpath. The syntax is:
shape newsubpath <shape id>
- When a shape includes a *shape arcrel_cw* or *shape arcrel_ccw*,
it is now checked if the there is a current point. If there is
no current point, a relative arc is not possible and a warning
is printed on the console. There is no current point right after
a *shape newpath*.
- Support for CentOS Linux 7.0 added to bootstrap. However at
current state CentOS is missing AAC codec and H264 codec
for both GStreamer 0.10 and 1.0. Furthermore the 1.0 version
is at current state version 1.0.7, which is buggy. Version
1.2.4 or 1.4.x would be preferable.
- Bootstrap for Fedora forced system update. Fixed. Now it is
optional. Package libpng12-devel changed to libpng-devel.
- Renaming ini files to end with .ini.
- There was a double free error when deleting a loaded image.
This is a bugfix.
- The script demo would only run the basic_feeds demo case.
any other choice would make the script exit. This is a bugfix.
- Version 0.4.5 would print to Snowmix console when adding
or deleting fonts. Fixed.
- The program snowcub.tcl is now installed as a symbolic link
typically in /usr/local/bin or /opt/local/bin to snowcub.tcl
in the tcl directory of the lib/Snowmix-0.5.0 typically in
/usr/local or /opt/local. The program can now be executed
anywhere assuming you have set enviroment variable PATH to
include the bin directory. The syntax for snowcub.tcl is
still
snowcub.tcl [-- -FLAGS] [ IP:PORT ]]
where FLAGS are any of the characters 'avsrto'. If IP:PORT
is not specified, it will use default settings which are
whatever the environment variables SNOWMIX_IP and SNOWMIX_PORT
is set to. If these variables are not set, snowcub.tcl will use
127.0.0.1 for IP and 9999 for PORT.
- When snowmix starts, it will no longer write the node name
on the Snowmix consol. Use command *system info* to see the
node name. By default, the *system name* is set to the node
name of the system running Snowmix.
- If Snowmix was started with an ini file without a reasonably
system frame rate, Snowmix would wait for a very long time in
deleting CVideoOutput class when the command *quit* was
given. This bug has now been fixed.
- Snowmix is now installable and SHOULD be installed running the
command:
$ cd WHERE_YOU_UNPACKED_SNOWMIX_TO
$ ./bootstrap
$ make
$ sudo make install
You only need sudo if you install Snowmix to a place that needs
sudo rights. By default Snowmix will be installed into
/usr/local. If you want to install it to somewhere else, you
can execute the following command after the bootstrap and before
the make:
$ ./configure --prefix=WHERE_EVER_YOU_WANT_TO_INSTALL_SNOWMIX
When Snowmix is installed it will install the following in the
prefix directory:
bin/snowmix
lib/Snowmix-VERSION/frames/.....
lib/Snowmix-VERSION/images/.....
lib/Snowmix-VERSION/ini/.....
lib/Snowmix-VERSION/scripts/.....
lib/Snowmix-VERSION/slib/.....
lib/Snowmix-VERSION/tcl/.....
lib/Snowmix-VERSION/test/.....
and it will make symbolic links for all scripts in the scripts
directory in bin. The VERSION must be replaced by the version
number of Snowmix here 0.5.0. The symbolic links will potentially
overwrite programs in the bin directory with similar names. After
installation you will need to set the enviroment variable SNOWMIX
to point to the Snowmix diretory holding the frames, images etc.
directories. You do this by adding the following line to your
~/.profile or ~/.bashrc or ~/.bash_profile depending on you
system and choice of shell AND installation point:
export SNOWMIX=/usr/local/lib/Snowmix-0.5.0
typical for Linux depending on your installation point. For
Mac OS X you will typically have to add the following to your
~/.bash_profile
export SNOWMIX=/opt/local/lib/Snowmix-0.5.0
After adding the setting to your ~/.profile or ~/.bashrc or
your ~/.bash_profile depending on system and shell, you must
logout and login again for the settings to take effect.
- Snowmix now requires the environment variable SNOWMIX to be set
to either the base directory of the Snowmix file tree or the
installation directory of Snowmix.
The SNOWMIX variable setting depends on the version of Snowmix
and where you choose to install Snowmix. The program snowmix will
exit if the environment variable SNOWMIX is not set to point to the
installation directory. After setting the enviroment variable,
and after logging out and in again, you can test it by executing
the commands in seperate windows:
$ snowmix ini/basic_feeds
$ output2screen
- Enforcing that control socket name for *feed* file name MUST be
absolute by starting with a '/'
- Enforcing the *system socket* path file name MUST be absolute by
starting with a '/'.
- Snowmix now creates a search path with by default the following
3 paths in the listed order using environment variables:
Current working directory
$HOME/$SNOWMIX_PREFIX
$SNOWMIX
Snowmix will exit if the the environment variables HOME and
SNOWMIX is not set. If SNOWMIX_PREFIX is not set, Snowmix will
use the following default prefix:
Unix : '.snowmix'
Mac OS X : 'Snowmix'
Windows : 'Application Data/Snowmix'
Snowmix will in the $HOME/$SNOWMIX_PREFIX create the following
directories, if they do not exist.
frames : for your personal Snowmix raw frames.
images : for your personal Snowmix png images.
ini : for your personal Snowmix ini files.
scripts : for your personal Snowmix scripts.
slib : for your personal Snowmix libraries.
tcl : for your personal Snowmix tcl scripts.
test : for your personal Snowmix test movies.
NOTE: Because of the search path feature, you may have to change
your ini file if it contains relative paths to loading images,
including files or writes audio sink to a file with relative
path. Typically you will change '../images/someimage.png' to
'images/someimages.png'. The following script can do it for
you:
# Use with caution
cd YOUR_INI_FILE_DIRECTORY
files=`ls`
for file in $files ; do sed -e 's/\.\.\///g' < $file >tmpfile ; mv tmpfile $file ; done
You can use the 'ls' command to set the files you want the change
for. THINK AND USE WITH CAUTION.
- Snowmix will now use the search path when loading the intital
ini file unless file name is absolute, ie starting with a '/'.
- Snowmix will list the search path on the Snowmix console when
starting Snowmix.
- The command *system info* will now include information about the
absolute file name for the initial ini file.
- Snowmix will now use the search path when including files using
the *include* command unless file name is absolute, ie starting
with a '/'.
- Snowmix will now use the search path when loading images unless
the file name given is absolut, ie starting with a '/'. Further
more when using the command *image load* to list loaded images,
the absolute file name loaded will be listed.
- Snowmix will now use the search path when opening a file for
writing for audio sink unless file name is absolute, ie. starting
with a '/'.
- bootstrap for Mac OS X will now offer to install GStreamer 1.4.5
instead of 1.4.4.
- The bootstrap script was calling a subscript with sh rather than
bash. This could result in minor printing confusion if /bin/sh
was not bash. Now testing for bash and uses bash over sh.
- The bootstrap process will now look for libpng15 in addition
to libpng16 and libpng12.
- The command *image source* missed the alignment parameter in its
call to OverlayFrame messing up parameters. This is a bugfix.
- Banner message when connecting to Snowmix now adds a '.' in the end.
- For the command *audio sink help* the audio volume was listed as going from 0..255.
Valid volume is from 0.0..4.0. This has now been corrected.
Version 0.4.5:
- The function CCairoGraphics::OverlayText() has been renamed to
CCairoGraphics::OverlayTextOld() and remain, but a new function
CCairoGraphics::OverlayText() has been written to optimize
calculations, include offset calculations and fix bugs including
bug for round corners. Using round corners for text backgrounds
would get it wrong if the scale_x != scale_y of the placed text.
This is now fixed. The new function is used when overlaying text.
The old one will eventually dissapear.
- In CCairoGraphics::OverlayText() we now only spend time finding
the new extend/geometry of a placed text, if its font or
string has changed. We can trigger a new update of the extend by
setting the text_id_seqno or font_id_seqno of a placed text to
zero. If a string or font with a specific string id or font id
is changed exactly 2^16 times wrapping the sequence counter to
zero, the placed text will have its sized checked for every frame.
The solution is to change the string or font again, possible
just set it to the same, which triggers an increment of the
sequence number.
- A Pango Font Description is now allocated when the command
*text font* is used to define a font with a *font id*. Previous
the Pango Font Description was allocated for every placed text
overlayed for every frame. This and the other optimization for
texts has reduced the Snowmix load on an old Thinkpad T61 from
23-24% to 18-19% using the ini/basic_feeds example.
- The command *text place backgr* would list pad values for top and
bottom with the word "coor" infront possible confusing understanding.
The word "coor" has been removed. It was this:
MSG: text place backgr 0 pad 20,40 coor 2,4 alpha 1.0000 rgb(0.000,0.000,0.000) h
Has now been changed to this:
MSG: text place backgr 0 pad-lrtb 20,40 2,4 alpha 1.0000 rgb(0.000,0.000,0.000) h
- A number of *text place ..." commands are considered obsolete yet
supported until end of Snowmix version 0.4.x. They are replaced
by shorter versions to optimize parsing. The output of command
*text help* has been updated to reflect this. The obsolete commands
and their respective replacement are listed below:
Obsolete command Replacement command
----------------------------------------------------------
text place align text align
text place alpha text alpha
text place anchor text anchor
text place backgr alpha text backgr alpha
text place backgr clip text backgr clip
text place backgr linpat text backgr linpat
text place backgr round text backgr round
text place backgr alpha text backgr alpha
text place backgr move alpha text backgr move alpha
text place backgr move clip text backgr move clip
text place backgr rgb text backgr rgb
text place backgr text backgr
text place clip text clip
text place clipabs text clipabs
text place coor text coor
text place grow text grow
text place move alpha text move alpha
text place move clip text move clip
text place move coor text move coor
text place move rotation text move rotation
text place move scale text move scale
text place offset text offset
text place repeat move text repeat move
text place rgb text rgb
text place rotation text rotation
text place scale text scale
- Adding new command *text verbose* in-line with setting/toggling
the verbose level for images, shapes etc. Valid value
for verbose level a positive integer including 0. The syntax
is:
text verbose [<verbose level>]
- Adding new command *text offset* to add offset for rotation of
text. Default value for offset is 0,0. The syntax is:
text offset [<place id> <offset x> <offset y>]
- The program snowcub in tcl/snowcub.tcl takes new parameters.
Example:
snowcub -- -s SOME_HOST
snowcub -- -as SOME_HOST:9990
The first example starts snowcub with the Scene panel for
host SOME_HOST and will connect to port 9999. The second
example will start snowcub with the Audio and the Scene
panel in that order and connect to SOME_HOST port 9990.
- configure.ac now adds pkg-config info for libtcl if it
adds anything. For Chakra we need to add '-ltcl' in addition
to what pkg-config tell.
- configure.ac now checks for libpng16 and prefers libpng16
over libpng12. If you have and older installation with
port for Mac with libpng compiled in, you may have to
uninstall port and all packages and reinstall port again. The
bootstrap for OS X will offer to install port and missing
packages.
- Adding new command *image source* to create a new image from
a feed, an image or the mixers system frame. Currently the
system only have one system frame with the source id 0. If
an image with the specified *image id* already exists, that
image will be deleted. The command can also be used to scale,
rotate or alpha blend existing images. The syntax is:
image source [(feed | image | frame) <image id> <source id> [ <offset x> <offset y> <width> height> [<scale_x> <scale_y> [<rotation> <alpha> [(fast | good | best | nearest | bilinear | gaussian)]]]]]
- Deleting/freeing a loaded image would leak memory if the image
was given a name. Also row pointers for png was not freed. Fixed.
- Adding two missing ']]' for *image place* in the list printed
for the command *image help*.
- The help list for audio feed had an extra ']' at the end of the
audio feed drop line. Fixed.
- A number of *image place ..." commands are considered obsolete yet
supported until end of Snowmix version 0.4.x. The obsolete commands
and their replacement are listed below:
Obsolete command Replacement command
----------------------------------------------------------
image place align image align
image place alpha image alpha
image place anchor image anchor
image place clip image clip
image place coor image coor
image place filter image filter
image place image image image
image place matrix image matrix
image place move alpha image move alpha
image place move clip image move clip
image place move coor image move coor
image place move offset image move offset
image place move rotation image move rotation
image place move scale image move scale
image place offset image offset
image place rotation image rotation
image place scale image scale
- Adding new command *image geometry* listing the geometry of
a single or all placed images depending on arguments. The
syntax is:
image geometry [ <place id> ]
- Setting clip for virtual feed, the clip_w + clip_x must be
less or equal to width. Same applies for clip_h + clip_y and
height. This is also checked vor *vfeed move clip* where the
movement/animations stops if clip is exceeding feeds geometry.
- Optimizing CVideoImage::Update to only run its many checks
if some of the step parameters are non zero. A run through
update with no animation steps will disable future runs until
a step parameter for a move command is set to non zero. This
is similar to an optimization done previously for CTextItems.
- Optimizing CVirtualFeed::Update to only run its many checks
if some of the step parameters are non zero. A run through
update with no animation steps will disable future runs until
a step parameter for a move command is set to non zero. This
is similar to an optimization done previously for CTextItems.
- Adding new command *image move offset* to add animation for
the the offset parameter for virtual feeds. The synatx is:
image move offset [<place id> <delta offset x> <delta offset y> <step offset x> <step offset y>]
- Adding new command *vfeed move offset* to add animation for
the the offset parameter for virtual feeds. The synatx is:
vfeed move offset [<vir id> <delta offset x> <delta offset y> <step offset x> <step offset y>]
- Renaming IMAGE_ALIGN_* and TEXT_ALIGN_* to SNOWMIX_ALIGN_*
and moving definition to snowmix.h
- Major rewrite of CCairoGraphic::OverlayFrame() for optimization and
correct handling of combination of offset/scale/rotation. Old code
is still in CCairoGraphic::OverlayFrameOld(). Both functions now
take argument align, but old code ignores its value.
- Moving CVideoMixer::OverlayVirtualFeed() to
CVirtualFeed::OverlayFeed() and major rewrite for optimization with
less calls and pointers to pointers.
- Command *image help* listed syntax for *image load* to be.
image load [<id no> [<file name>]]
image write <id no> <file name>
This has been changed to
image load [<image id> [<file name>]]
image write <image id> <file name>
Further more \<id no> changed to \<place id> for the rest of the image
commands.
- Command *image place* in verbose mode with arguments would print wrong
number for id to control connection. Fixed.
- Command *shape place help* listed the syntax for *shape place alpha*
wrong. The syntax is:
shape place alpha [<place id> <alpha>]
- Class CTextItems, CVideoShape, CVirtualFeed and CVideoImage are now
all using the same SetAnchor() function. Illegal anchor syntax,
illegal is non n, s, e, w, c, ne, nw, se, sw, will leave anchor
settings unchanged. In previous version an illegal setting
would result in nw ie. 0,0.
- Adding new command *vfeed anchor* to set or list anchor of virtual
feeds. A placed virtual feed will be placed accoding to its anchor.
The anchors, also appying to texts, shapes and images, are:
n : North adds w/2,0 to place coordinates.
s : South adds w/2,h to place coordinates.
ne : North-east adds w,0 to place coordinates.
e : East adds w,h/2 to place coordinates.
se : South-east adds w,h to place coordinates.
nw : North-west adds 0,0 to place coordinates (default).
w : West adds 0,h/2 to place coordinates.
sw : South-west adds 0,h to place coordinates.
c : Center adds w/2,h/2 to place coordinates.
The syntax is:
vfeed anchor [<vir id> (n | s | e | w | c | ne | nw | se | sw)]
- Adding new command *text place anchor* to set or list anchor of placed
text. Used without arguments, the command will list anchor values
for placed text. The syntax is:
text place anchor [<place id> (n | s | e | w | c | ne | nw | se | sw)]
- Adding new command *image place anchor* to set or list anchor of placed
images. Used without arguments, the command will list anchor values
for placed images. The syntax is:
image place anchor [<place id> (n | s | e | w | c | ne | nw | se | sw)]
- Adding new command *shape place anchor* to set or list anchor of placed
images. Used without arguments, the command will list anchor values
for placed shapes. The syntax is:
shape place anchor [<place id> (n | s | e | w | c | ne | nw | se | sw)]
- Adding center option 'c' for anchor for placed text, place shapes and
placed images. Adds to syntax list for command *text help*,
*shape place help* and *image help*.
- Adding new command *vfeed align* to set or list alignment of
virtual feeds. A placed virtual feed will be placed accoding
to the alignment. The syntax is:
vfeed align [<vir id> (left | center | right ) ( top | middle | bottom)]
The order of vertical and horizontal alignment is indifferent.
- The command *vfeed place rect* used without arguments will
now also print alignment.
- The command *image help* listed two possible different syntax
lines for the command *image place*. The valid syntax is
image place [<id no> [<image id> <x> <y> [(n | s | e | w | c | ne | nw | se | sw)] [(left | center | right) (top | middle | bottom)]
- All image commands setting parameters are silent when verbose
level is set to 0 AND the command is successful. Default level
is 0. When verbose level is greater than 0, using an image command
for setting image parameters will return a single informative
line. A failed command will always return a line with error
message. The *image overlay* does not set any parameters and
does not return any informative message. Commands update to
print information when verbose and successful:
image place alpha
image place clip
image place filter
image place move alpha
image place move clip
image place move scale
image place move coor
image place move rotation
image place offset
image place image
image place rotation
image place scale
image place matrix
image name
image write
- Command *image verbose* now accepts a level as argument. Used
without, verbose is toggled between 0 and 1 in line with verbose
settings for other modules such as feed, shapes etc. Valid level
is an integer number greater or equal to 0. The syntax is now:
image verbose [ <level> ]
The *image help* command has been updated to reflect the change.
- Command *image write* would print two lines if failing. Only
one should be printed. More error info is now printed to stderr.
Fixed.
- Command *image name* would print two lines if failing. Only
one should be printed. If verbose, more error info is now
printed to stderr. Fixed.
- Command *image place align* would print two lines if successful. Only
one should be printed. Fixed.
- Command *image place align* would in some cases continue parsing a
command line despite synatx error and make no complaining about it.
Fixed.
- Command *image place* with only image id as argument for deleting
a placed image would print two lines if successful. Only one should
be printed. Fixed.
- Command *image help* listed *image load* twice. Fixed.
- Optimizing parsing *image* commands.
- The command *image place move rotation* now accepts fraction of PI for
the argument \<rotation>. such as 2PI/3 or 1PI/12.
- The command *image place rotation* now accepts fraction of PI for
the argument \<rotation>. such as 2PI/3 or 1PI/12.
- The command *vfeed move clip* used without arguments, will now
list the move parameters for clipping for vfeeds. The command
*vfeed help* has been updated to list the option to use the
command without arguments.
- The command *vfeed move coor* used without arguments, will now
list the move parameters for coordinates for vfeeds. The command
*vfeed help* has been updated to list the option to use the
command without arguments.
- The command *vfeed move scale* used without arguments, will now
list the move parameters for scale for vfeeds. The command
*vfeed help* has been updated to list the option to use the
command without arguments.
- The command *vfeed move rotation* used without arguments, will now
list the move parameters for rotation for vfeeds. The command
*vfeed help* has been updated to list the option to use the
command without arguments.
- The command *vfeed move alpha* used without arguments, will now
list the move parameters for alpha for vfeeds. The command
*vfeed help* has been updated to list the option to use the
command without arguments.
- The command *vfeed add* did not remove trailing spaces in the name
specified. This has now been fixed.
- The *vfeed help* specified the non implemented command *vfeed geometry*
for setting the geometry of a vfeed. However the geometry is defined
by the source of the vfeed and can not be changed. The syntax
printed for *vfeed help* is changed to reflect this and the code
for listing the geometries has been added. Used without arguments,
the command will list geometries for all vfeeds. The syntax is:
vfeed geometry [ <vir id> ]
- The command *vfeed place rect* was specified with a valid syntax
including no arguments as many other place commands. However
this was not implemented. The command used without arguments
will now list vfeeds configured indluding parameters that
can be set with the command.
- In CVirtualFeed::set_virtual_feed_source, the function FeedState
could theoretically return NULL leading to core dump. Fixed.
- Adding command *vfeed verbose* to set or toggle verbose level
for vfeed commands. The command *vfeed info* lists the verbose
level. The syntax is:
vfeed verbose [ <level> ]
- All vfeed commands setting parameters are silent when verbose
level is set to 0 AND the command is successful. Default level
is 0. When verbose level is greater than 0, using a vfeed command
for setting vfeed parameters will return a single informative
line. A failed command will always return a line with error
message. The *vfeed overlay* does not set any parameters and
does not return any informative message.
- Adding command *vfeed info* to list information on setup for