Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc
Commits
2b6826a1
Commit
2b6826a1
authored
Aug 25, 2005
by
Clément Stenac
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add new spectrum analyzer effect, patch from zcot.
Remove the "random" effect
parent
246584f5
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
540 additions
and
46 deletions
+540
-46
modules/visualization/visual/effects.c
modules/visualization/visual/effects.c
+475
-36
modules/visualization/visual/visual.c
modules/visualization/visual/visual.c
+60
-7
modules/visualization/visual/visual.h
modules/visualization/visual/visual.h
+4
-2
src/audio_output/input.c
src/audio_output/input.c
+1
-1
No files found.
modules/visualization/visual/effects.c
View file @
2b6826a1
...
...
@@ -320,6 +320,481 @@ int spectrum_Run(visual_effect_t * p_effect, aout_instance_t *p_aout,
}
/*****************************************************************************
* spectrometer_Run: derivative spectrum analysis
*****************************************************************************/
int
spectrometer_Run
(
visual_effect_t
*
p_effect
,
aout_instance_t
*
p_aout
,
aout_buffer_t
*
p_buffer
,
picture_t
*
p_picture
)
{
#define Y(R,G,B) ((uint8_t)( (R * .299) + (G * .587) + (B * .114) ))
#define U(R,G,B) ((uint8_t)( (R * -.169) + (G * -.332) + (B * .500) + 128 ))
#define V(R,G,B) ((uint8_t)( (R * .500) + (G * -.419) + (B * -.0813) + 128 ))
float
p_output
[
FFT_BUFFER_SIZE
];
/* Raw FFT Result */
int
*
height
;
/* Bar heights */
int
*
peaks
;
/* Peaks */
int
i_nb_bands
;
/* number of bands */
int
i_band_width
;
/* width of bands */
int
i_separ
;
/* Should we let blanks ? */
int
i_amp
;
/* Vertical amplification */
int
i_peak
;
/* Should we draw peaks ? */
int
i_original
;
/* original spectrum graphic routine */
int
i_rad
;
/* radius of circle of base of bands */
int
i_sections
;
/* sections of spectranalysis */
int
i_extra_width
;
/* extra width on peak */
int
i_peak_height
;
/* height of peak */
int
c
;
/* sentinel container of total spectral sections */
double
band_sep_angle
;
/* angled separation between beginning of each band */
double
section_sep_angle
;
/* " " ' " ' " " spectrum section */
int
max_band_length
;
/* try not to go out of screen */
int
i_show_base
;
/* Should we draw base of circle ? */
int
i_show_bands
;
/* Should we draw bands ? */
//int i_invert_bands; /* do the bands point inward ? */
double
a
;
/* for various misc angle situations in radians */
int
x
,
y
,
xx
,
yy
;
/* various misc x/y */
char
color1
;
/* V slide on a YUV color cube */
//char color2; /* U slide.. ? color2 fade color ? */
char
*
psz_parse
=
NULL
;
/* Args line */
/* Horizontal scale for 20-band equalizer */
const
int
xscale1
[]
=
{
0
,
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
11
,
15
,
20
,
27
,
36
,
47
,
62
,
82
,
107
,
141
,
184
,
255
};
/* Horizontal scale for 80-band equalizer */
const
int
xscale2
[]
=
{
0
,
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
,
61
,
63
,
67
,
72
,
77
,
82
,
87
,
93
,
99
,
105
,
110
,
115
,
121
,
130
,
141
,
152
,
163
,
174
,
185
,
200
,
255
};
const
int
*
xscale
;
const
double
y_scale
=
3
.
60673760222
;
/* (log 256) */
fft_state
*
p_state
;
/* internal FFT data */
int
i
,
j
,
k
;
int
i_line
;
int16_t
p_dest
[
FFT_BUFFER_SIZE
];
/* Adapted FFT result */
int16_t
p_buffer1
[
FFT_BUFFER_SIZE
];
/* Buffer on which we perform
the FFT (first channel) */
i_line
=
0
;
float
*
p_buffl
=
/* Original buffer */
(
float
*
)
p_buffer
->
p_buffer
;
int16_t
*
p_buffs
;
/* int16_t converted buffer */
int16_t
*
p_s16_buff
=
NULL
;
/* int16_t converted buffer */
p_s16_buff
=
(
int16_t
*
)
malloc
(
p_buffer
->
i_nb_samples
*
p_effect
->
i_nb_chans
*
sizeof
(
int16_t
));
if
(
!
p_s16_buff
)
{
msg_Err
(
p_aout
,
"Out of memory"
);
return
-
1
;
}
p_buffs
=
p_s16_buff
;
//i_nb_bands = config_GetInt ( p_aout, "visual-nbbands" );
//i_separ = config_GetInt( p_aout, "visual-separ" );
//i_amp = config_GetInt ( p_aout, "visual-amp" );
//i_peak = config_GetInt ( p_aout, "visual-peaks" );
/* previous 4 vars changed.. using them as `spect' variables */
i_original
=
config_GetInt
(
p_aout
,
"spect-show-original"
);
i_nb_bands
=
config_GetInt
(
p_aout
,
"spect-nbbands"
);
i_separ
=
config_GetInt
(
p_aout
,
"spect-separ"
);
i_amp
=
config_GetInt
(
p_aout
,
"spect-amp"
);
i_peak
=
config_GetInt
(
p_aout
,
"spect-show-peaks"
);
i_show_base
=
config_GetInt
(
p_aout
,
"spect-show-base"
);
i_show_bands
=
config_GetInt
(
p_aout
,
"spect-show-bands"
);
i_rad
=
config_GetInt
(
p_aout
,
"spect-radius"
);
i_sections
=
config_GetInt
(
p_aout
,
"spect-sections"
);
i_extra_width
=
config_GetInt
(
p_aout
,
"spect-peak-width"
);
i_peak_height
=
config_GetInt
(
p_aout
,
"spect-peak-height"
);
color1
=
config_GetInt
(
p_aout
,
"spect-color"
);
if
(
i_nb_bands
==
20
)
{
xscale
=
xscale1
;
}
else
{
i_nb_bands
=
80
;
xscale
=
xscale2
;
}
i_nb_bands
*=
i_sections
;
/* whoops, dont malloc the following memory for all the duplicated bands..
-only the original 20 or 80 will be fine */
if
(
!
p_effect
->
p_data
)
{
p_effect
->
p_data
=
(
void
*
)
malloc
(
i_nb_bands
*
sizeof
(
int
)
);
if
(
!
p_effect
->
p_data
)
{
msg_Err
(
p_aout
,
"Out of memory"
);
return
-
1
;
}
peaks
=
(
int
*
)
p_effect
->
p_data
;
for
(
i
=
0
;
i
<
i_nb_bands
;
i
++
)
{
peaks
[
i
]
=
0
;
}
}
else
{
peaks
=
(
int
*
)
p_effect
->
p_data
;
}
height
=
(
int
*
)
malloc
(
i_nb_bands
*
sizeof
(
int
)
);
if
(
!
height
)
{
msg_Err
(
p_aout
,
"Out of memory"
);
return
-
1
;
}
/* Convert the buffer to int16_t */
/* Pasted from float32tos16.c */
for
(
i
=
p_buffer
->
i_nb_samples
*
p_effect
->
i_nb_chans
;
i
--
;
)
{
union
{
float
f
;
int32_t
i
;
}
u
;
u
.
f
=
*
p_buffl
+
384
.
0
;
if
(
u
.
i
>
0x43c07fff
)
*
p_buffs
=
32767
;
else
if
(
u
.
i
<
0x43bf8000
)
*
p_buffs
=
-
32768
;
else
*
p_buffs
=
u
.
i
-
0x43c00000
;
p_buffl
++
;
p_buffs
++
;
}
p_state
=
visual_fft_init
();
if
(
!
p_state
)
{
msg_Err
(
p_aout
,
"Unable to initialize FFT transform"
);
return
-
1
;
}
p_buffs
=
p_s16_buff
;
for
(
i
=
0
;
i
<
FFT_BUFFER_SIZE
;
i
++
)
{
p_output
[
i
]
=
0
;
p_buffer1
[
i
]
=
*
p_buffs
;
p_buffs
=
p_buffs
+
p_effect
->
i_nb_chans
;
}
fft_perform
(
p_buffer1
,
p_output
,
p_state
);
for
(
i
=
0
;
i
<
FFT_BUFFER_SIZE
;
i
++
)
p_dest
[
i
]
=
(
(
int
)
sqrt
(
p_output
[
i
+
1
]
)
)
>>
8
;
for
(
i
=
0
;
i
<
i_nb_bands
/
i_sections
;
i
++
)
{
/* We search the maximum on one scale */
for
(
j
=
xscale
[
i
]
,
y
=
0
;
j
<
xscale
[
i
+
1
]
;
j
++
)
{
if
(
p_dest
[
j
]
>
y
)
y
=
p_dest
[
j
];
}
/* Calculate the height of the bar */
y
>>=
7
;
/* remove some noise */
if
(
y
!=
0
)
{
height
[
i
]
=
(
int
)
log
(
y
)
*
y_scale
;
if
(
height
[
i
]
>
150
)
height
[
i
]
=
150
;
}
else
{
height
[
i
]
=
0
;
}
/* Draw the bar now */
i_band_width
=
floor
(
p_effect
->
i_width
/
(
i_nb_bands
/
i_sections
))
;
if
(
i_amp
*
height
[
i
]
>
peaks
[
i
])
{
peaks
[
i
]
=
i_amp
*
height
[
i
];
}
else
if
(
peaks
[
i
]
>
0
)
{
peaks
[
i
]
-=
PEAK_SPEED
;
if
(
peaks
[
i
]
<
i_amp
*
height
[
i
]
)
{
peaks
[
i
]
=
i_amp
*
height
[
i
];
}
if
(
peaks
[
i
]
<
0
)
{
peaks
[
i
]
=
0
;
}
}
if
(
i_original
!=
0
)
{
if
(
peaks
[
i
]
>
0
&&
i_peak
)
{
if
(
peaks
[
i
]
>=
p_effect
->
i_height
)
peaks
[
i
]
=
p_effect
->
i_height
-
2
;
i_line
=
peaks
[
i
];
for
(
j
=
0
;
j
<
i_band_width
-
i_separ
;
j
++
)
{
for
(
k
=
0
;
k
<
3
;
k
++
)
{
//* Draw the peak
*
(
p_picture
->
p
[
0
].
p_pixels
+
(
p_picture
->
p
[
0
].
i_lines
-
i_line
-
1
-
k
)
*
p_picture
->
p
[
0
].
i_pitch
+
(
i_band_width
*
i
+
j
)
)
=
0xff
;
*
(
p_picture
->
p
[
1
].
p_pixels
+
(
p_picture
->
p
[
1
].
i_lines
-
i_line
/
2
-
1
-
k
/
2
)
*
p_picture
->
p
[
1
].
i_pitch
+
(
(
i_band_width
*
i
+
j
)
/
2
)
)
=
0x00
;
if
(
0x04
*
(
i_line
+
k
)
-
0x0f
>
0
)
{
if
(
0x04
*
(
i_line
+
k
)
-
0x0f
<
0xff
)
*
(
p_picture
->
p
[
2
].
p_pixels
+
(
p_picture
->
p
[
2
].
i_lines
-
i_line
/
2
-
1
-
k
/
2
)
*
p_picture
->
p
[
2
].
i_pitch
+
(
(
i_band_width
*
i
+
j
)
/
2
)
)
=
(
0x04
*
(
i_line
+
k
)
)
-
0x0f
;
else
*
(
p_picture
->
p
[
2
].
p_pixels
+
(
p_picture
->
p
[
2
].
i_lines
-
i_line
/
2
-
1
-
k
/
2
)
*
p_picture
->
p
[
2
].
i_pitch
+
(
(
i_band_width
*
i
+
j
)
/
2
)
)
=
0xff
;
}
else
{
*
(
p_picture
->
p
[
2
].
p_pixels
+
(
p_picture
->
p
[
2
].
i_lines
-
i_line
/
2
-
1
-
k
/
2
)
*
p_picture
->
p
[
2
].
i_pitch
+
(
(
i_band_width
*
i
+
j
)
/
2
)
)
=
0x10
;
}
}
}
}
if
(
height
[
i
]
*
i_amp
>
p_effect
->
i_height
)
height
[
i
]
=
floor
(
p_effect
->
i_height
/
i_amp
);
for
(
i_line
=
0
;
i_line
<
i_amp
*
height
[
i
];
i_line
++
)
{
for
(
j
=
0
;
j
<
i_band_width
-
i_separ
;
j
++
)
{
*
(
p_picture
->
p
[
0
].
p_pixels
+
(
p_picture
->
p
[
0
].
i_lines
-
i_line
-
1
)
*
p_picture
->
p
[
0
].
i_pitch
+
(
i_band_width
*
i
+
j
)
)
=
0xff
;
*
(
p_picture
->
p
[
1
].
p_pixels
+
(
p_picture
->
p
[
1
].
i_lines
-
i_line
/
2
-
1
)
*
p_picture
->
p
[
1
].
i_pitch
+
(
(
i_band_width
*
i
+
j
)
/
2
)
)
=
0x00
;
if
(
0x04
*
i_line
-
0x0f
>
0
)
{
if
(
0x04
*
i_line
-
0x0f
<
0xff
)
*
(
p_picture
->
p
[
2
].
p_pixels
+
(
p_picture
->
p
[
2
].
i_lines
-
i_line
/
2
-
1
)
*
p_picture
->
p
[
2
].
i_pitch
+
(
(
i_band_width
*
i
+
j
)
/
2
)
)
=
(
0x04
*
i_line
)
-
0x0f
;
else
*
(
p_picture
->
p
[
2
].
p_pixels
+
(
p_picture
->
p
[
2
].
i_lines
-
i_line
/
2
-
1
)
*
p_picture
->
p
[
2
].
i_pitch
+
(
(
i_band_width
*
i
+
j
)
/
2
)
)
=
0xff
;
}
else
{
*
(
p_picture
->
p
[
2
].
p_pixels
+
(
p_picture
->
p
[
2
].
i_lines
-
i_line
/
2
-
1
)
*
p_picture
->
p
[
2
].
i_pitch
+
(
(
i_band_width
*
i
+
j
)
/
2
)
)
=
0x10
;
}
}
}
}
}
band_sep_angle
=
360
.
0
/
i_nb_bands
;
section_sep_angle
=
360
.
0
/
i_sections
;
if
(
i_peak_height
<
1
)
i_peak_height
=
1
;
max_band_length
=
p_picture
->
p
[
0
].
i_lines
/
2
-
(
i_rad
+
i_peak_height
+
1
);
i_band_width
=
floor
(
360
/
i_nb_bands
-
i_separ
);
if
(
i_band_width
<
1
)
i_band_width
=
1
;
for
(
c
=
0
;
c
<
i_sections
;
c
++
)
for
(
i
=
0
;
i
<
(
i_nb_bands
/
i_sections
)
;
i
++
)
{
/* DO A PEAK */
if
(
peaks
[
i
]
>
0
&&
i_peak
)
{
if
(
peaks
[
i
]
>=
p_effect
->
i_height
)
peaks
[
i
]
=
p_effect
->
i_height
-
2
;
i_line
=
peaks
[
i
];
/* circular line pattern(so color blend is more visible) */
for
(
j
=
0
;
j
<
i_peak_height
;
j
++
)
{
x
=
p_picture
->
p
[
0
].
i_pitch
/
2
;
y
=
p_picture
->
p
[
0
].
i_lines
/
2
;
xx
=
x
;
yy
=
y
;
for
(
k
=
0
;
k
<
(
i_band_width
+
i_extra_width
)
;
k
++
)
{
x
=
xx
;
y
=
yy
;
a
=
(
(
i
+
1
)
*
band_sep_angle
+
section_sep_angle
*
(
c
+
1
)
+
k
)
*
3
.
141592
/
180
.
0
;
x
+=
(
double
)(
cos
(
a
)
*
(
double
)(
i_line
+
j
+
i_rad
)
);
y
+=
(
double
)(
-
sin
(
a
)
*
(
double
)(
i_line
+
j
+
i_rad
)
);
*
(
p_picture
->
p
[
0
].
p_pixels
+
x
+
y
*
p_picture
->
p
[
0
].
i_pitch
)
=
255
;
/* Y(R,G,B); */
x
/=
2
;
y
/=
2
;
*
(
p_picture
->
p
[
1
].
p_pixels
+
x
+
y
*
p_picture
->
p
[
1
].
i_pitch
-
p_picture
->
p
[
1
].
i_pitch
)
=
0
;
/* U(R,G,B); */
if
(
0x04
*
(
i_line
+
k
)
-
0x0f
>
0
)
{
if
(
0x04
*
(
i_line
+
k
)
-
0x0f
<
0xff
)
*
(
p_picture
->
p
[
2
].
p_pixels
+
x
+
y
*
p_picture
->
p
[
2
].
i_pitch
-
p_picture
->
p
[
2
].
i_pitch
)
=
(
0x04
*
(
i_line
+
k
)
)
-
(
color1
-
1
);
/* -V(R,G,B); */
else
*
(
p_picture
->
p
[
2
].
p_pixels
+
x
+
y
*
p_picture
->
p
[
2
].
i_pitch
-
p_picture
->
p
[
2
].
i_pitch
)
=
255
;
/* V(R,G,B); */
}
else
{
*
(
p_picture
->
p
[
2
].
p_pixels
+
x
+
y
*
p_picture
->
p
[
2
].
i_pitch
-
p_picture
->
p
[
2
].
i_pitch
)
=
color1
;
/* V(R,G,B); */
}
}
}
}
if
(
(
height
[
i
]
*
i_amp
)
>
p_effect
->
i_height
)
height
[
i
]
=
floor
(
p_effect
->
i_height
/
i_amp
);
/* DO BASE OF BAND (mostly makes a circle) */
if
(
i_show_base
!=
0
)
{
x
=
p_picture
->
p
[
0
].
i_pitch
/
2
;
y
=
p_picture
->
p
[
0
].
i_lines
/
2
;
a
=
(
(
i
+
1
)
*
band_sep_angle
+
section_sep_angle
*
(
c
+
1
)
)
*
3
.
141592
/
180
.
0
;
x
+=
(
double
)(
cos
(
a
)
*
(
double
)
i_rad
);
/* newb-forceful casting */
y
+=
(
double
)(
-
sin
(
a
)
*
(
double
)
i_rad
);
*
(
p_picture
->
p
[
0
].
p_pixels
+
x
+
y
*
p_picture
->
p
[
0
].
i_pitch
)
=
255
;
/* Y(R,G,B); */
x
/=
2
;
y
/=
2
;
*
(
p_picture
->
p
[
1
].
p_pixels
+
x
+
y
*
p_picture
->
p
[
1
].
i_pitch
-
p_picture
->
p
[
1
].
i_pitch
)
=
0
;
/* U(R,G,B); */
if
(
0x04
*
i_line
-
0x0f
>
0
)
{
if
(
0x04
*
i_line
-
0x0f
<
0xff
)
*
(
p_picture
->
p
[
2
].
p_pixels
+
x
+
y
*
p_picture
->
p
[
2
].
i_pitch
-
p_picture
->
p
[
2
].
i_pitch
)
=
(
0x04
*
i_line
)
-
(
color1
-
1
);
/* -V(R,G,B); */
else
*
(
p_picture
->
p
[
2
].
p_pixels
+
x
+
y
*
p_picture
->
p
[
2
].
i_pitch
-
p_picture
->
p
[
2
].
i_pitch
)
=
255
;
/* V(R,G,B); */
}
else
{
*
(
p_picture
->
p
[
2
].
p_pixels
+
x
+
y
*
p_picture
->
p
[
2
].
i_pitch
-
p_picture
->
p
[
2
].
i_pitch
)
=
color1
;
/* V(R,G,B); */
}
}
/* DO A BAND */
if
(
i_show_bands
!=
0
)
for
(
j
=
0
;
j
<
i_band_width
;
j
++
)
{
x
=
p_picture
->
p
[
0
].
i_pitch
/
2
;
y
=
p_picture
->
p
[
0
].
i_lines
/
2
;
xx
=
x
;
yy
=
y
;
a
=
(
(
i
+
1
)
*
band_sep_angle
+
section_sep_angle
*
(
c
+
1
)
+
j
)
*
3
.
141592
/
180
.
0
;
for
(
k
=
(
i_rad
+
1
)
;
k
<
max_band_length
;
k
++
)
{
if
(
(
k
-
i_rad
)
>
height
[
i
]
)
break
;
/* uhh.. */
x
=
xx
;
y
=
yy
;
x
+=
(
double
)(
cos
(
a
)
*
(
double
)
k
);
/* newbed! */
y
+=
(
double
)(
-
sin
(
a
)
*
(
double
)
k
);
*
(
p_picture
->
p
[
0
].
p_pixels
+
x
+
y
*
p_picture
->
p
[
0
].
i_pitch
)
=
255
;
x
/=
2
;
y
/=
2
;
*
(
p_picture
->
p
[
1
].
p_pixels
+
x
+
y
*
p_picture
->
p
[
1
].
i_pitch
-
p_picture
->
p
[
1
].
i_pitch
)
=
0
;
if
(
0x04
*
i_line
-
0x0f
>
0
)
{
if
(
0x04
*
i_line
-
0x0f
<
0xff
)
*
(
p_picture
->
p
[
2
].
p_pixels
+
x
+
y
*
p_picture
->
p
[
2
].
i_pitch
-
p_picture
->
p
[
2
].
i_pitch
)
=
(
0x04
*
i_line
)
-
(
color1
-
1
);
else
*
(
p_picture
->
p
[
2
].
p_pixels
+
x
+
y
*
p_picture
->
p
[
2
].
i_pitch
-
p_picture
->
p
[
2
].
i_pitch
)
=
255
;
}
else
{
*
(
p_picture
->
p
[
2
].
p_pixels
+
x
+
y
*
p_picture
->
p
[
2
].
i_pitch
-
p_picture
->
p
[
2
].
i_pitch
)
=
color1
;
}
}
}
}
fft_close
(
p_state
);
if
(
p_s16_buff
!=
NULL
)
{
free
(
p_s16_buff
);
p_s16_buff
=
NULL
;
}
if
(
height
)
free
(
height
);
if
(
psz_parse
)
free
(
psz_parse
);
return
0
;
}
/*****************************************************************************
* scope_Run: scope effect
*****************************************************************************/
...
...
@@ -374,42 +849,6 @@ int scope_Run(visual_effect_t * p_effect, aout_instance_t *p_aout,
return
0
;
}
/*****************************************************************************
* random_Run: random plots display effect
*****************************************************************************/
int
random_Run
(
visual_effect_t
*
p_effect
,
aout_instance_t
*
p_aout
,
aout_buffer_t
*
p_buffer
,
picture_t
*
p_picture
)
{
int
i_nb_plots
;
char
*
psz_parse
=
NULL
;
int
i
,
i_y
,
i_u
,
i_v
;
int
i_position
;
srand
((
unsigned
int
)
mdate
());
if
(
p_effect
->
psz_args
)
{
psz_parse
=
strdup
(
p_effect
->
psz_args
);
i_nb_plots
=
config_GetInt
(
p_aout
,
"visual-stars"
);
}
else
{
i_nb_plots
=
200
;
}
for
(
i
=
0
;
i
<
i_nb_plots
;
i
++
)
{
i_position
=
rand
()
%
(
p_effect
->
i_width
*
p_effect
->
i_height
);
i_y
=
rand
()
%
256
;
i_u
=
rand
()
%
256
;
i_v
=
rand
()
%
256
;
*
(
p_picture
->
p
[
0
].
p_pixels
+
i_position
)
=
i_u
;
*
(
p_picture
->
p
[
1
].
p_pixels
+
i_position
/
4
)
=
i_v
;
*
(
p_picture
->
p
[
2
].
p_pixels
+
i_position
/
4
)
=
i_y
;
}
return
0
;
}
/*****************************************************************************
* blur_Run: blur effect
*****************************************************************************/
...
...
modules/visualization/visual/visual.c
View file @
2b6826a1
...
...
@@ -38,7 +38,7 @@
#define ELIST_TEXT N_( "Effects list" )
#define ELIST_LONGTEXT N_( \
"A list of visual effect, separated by commas.\n" \
"Current effects include: dummy,
random,
scope, spectrum" )
"Current effects include: dummy, scope, spectrum" )
#define WIDTH_TEXT N_( "Video width" )
#define WIDTH_LONGTEXT N_( \
...
...
@@ -64,6 +64,38 @@
#define PEAKS_LONGTEXT N_( \
"Defines whether to draw peaks." )
#define ORIG_TEXT N_( "Enable original graphic spectrum" )
#define ORIG_LONGTEXT N_( \
"Defines whether to draw the original spectrum graphic routine." )
#define BANDS_TEXT N_( "Enable bands" )
#define BANDS_LONGTEXT N_( \
"Defines whether to draw the bands." )
#define BASE_TEXT N_( "Enable base" )
#define BASE_LONGTEXT N_( \
"Defines whether to draw the base of the bands." )
#define RADIUS_TEXT N_( "Base pixel radius" )
#define RADIUS_LONGTEXT N_( \
"Defines radius size in pixels, of base of bands(beginning)." )
#define SECT_TEXT N_( "Spectral sections" )
#define SECT_LONGTEXT N_( \
"Determines how many sections of spectrum will exist." )
#define PEAK_HEIGHT_TEXT N_( "Peak height" )
#define PEAK_HEIGHT_LONGTEXT N_( \
"This is the total pixel height of the peak items." )
#define PEAK_WIDTH_TEXT N_( "Peak extra width" )
#define PEAK_WIDTH_LONGTEXT N_( \
"Additions or subtractions of pixels on the peak width." )
#define COLOR1_TEXT N_( "V-plane color" )
#define COLOR1_LONGTEXT N_( \
"YUV-Color cube shifting across the V-plane ( 0 - 127 )." )
#define STARS_TEXT N_( "Number of stars" )
#define STARS_LONGTEXT N_( \
"Defines the number of stars to draw with random effect." )
...
...
@@ -92,9 +124,31 @@ vlc_module_begin();
AMP_TEXT
,
AMP_LONGTEXT
,
VLC_TRUE
);
add_bool
(
"visual-peaks"
,
VLC_TRUE
,
NULL
,
PEAKS_TEXT
,
PEAKS_LONGTEXT
,
VLC_TRUE
);
set_section
(
N_
(
"Random effect"
)
,
NULL
);
add_integer
(
"visual-stars"
,
200
,
NULL
,
STARS_TEXT
,
STARS_LONGTEXT
,
VLC_TRUE
);
set_section
(
N_
(
"Spectrometer"
)
,
NULL
);
add_bool
(
"spect-show-original"
,
VLC_TRUE
,
NULL
,
ORIG_TEXT
,
ORIG_LONGTEXT
,
VLC_TRUE
);
add_bool
(
"spect-show-base"
,
VLC_TRUE
,
NULL
,
BASE_TEXT
,
BASE_LONGTEXT
,
VLC_TRUE
);
add_integer
(
"spect-radius"
,
22
,
NULL
,
RADIUS_TEXT
,
RADIUS_LONGTEXT
,
VLC_TRUE
);
add_integer
(
"spect-sections"
,
2
,
NULL
,
SECT_TEXT
,
SECT_LONGTEXT
,
VLC_TRUE
);
add_integer
(
"spect-color"
,
16
,
NULL
,
COLOR1_TEXT
,
COLOR1_LONGTEXT
,
VLC_TRUE
);
add_bool
(
"spect-show-bands"
,
VLC_TRUE
,
NULL
,
BANDS_TEXT
,
BANDS_LONGTEXT
,
VLC_TRUE
);
add_integer
(
"spect-nbbands"
,
80
,
NULL
,
NBBANDS_TEXT
,
NBBANDS_LONGTEXT
,
VLC_TRUE
);
add_integer
(
"spect-separ"
,
1
,
NULL
,
SEPAR_TEXT
,
SEPAR_LONGTEXT
,
VLC_TRUE
);
add_integer
(
"spect-amp"
,
3
,
NULL
,
AMP_TEXT
,
AMP_LONGTEXT
,
VLC_TRUE
);
add_bool
(
"spect-show-peaks"
,
VLC_TRUE
,
NULL
,
PEAKS_TEXT
,
PEAKS_LONGTEXT
,
VLC_TRUE
);
add_integer
(
"spect-peak-width"
,
1
,
NULL
,
PEAK_WIDTH_TEXT
,
PEAK_WIDTH_LONGTEXT
,
VLC_TRUE
);
add_integer
(
"spect-peak-height"
,
1
,
NULL
,
PEAK_HEIGHT_TEXT
,
PEAK_HEIGHT_LONGTEXT
,
VLC_TRUE
);
set_capability
(
"visualization"
,
0
);
set_callbacks
(
Open
,
Close
);
add_shortcut
(
"visualizer"
);
...
...
@@ -117,7 +171,7 @@ static struct
{
{
"scope"
,
scope_Run
},
{
"spectrum"
,
spectrum_Run
},
{
"
random"
,
random_Run
},
{
"
spectrometer"
,
spectrometer_Run
},
{
"dummy"
,
dummy_Run
},
{
NULL
,
dummy_Run
}
};
...
...
@@ -163,8 +217,7 @@ static int Open( vlc_object_t *p_this )
var_Get
(
p_filter
,
"effect-list"
,
&
val
);
psz_parser
=
psz_effects
=
strdup
(
val
.
psz_string
);
free
(
val
.
psz_string
);
msg_Dbg
(
p_filter
,
"Building list of effects"
);
var_AddCallback
(
p_filter
,
"effect-list"
,
FilterCallback
,
NULL
);
while
(
psz_parser
&&
*
psz_parser
!=
'\0'
)
...
...
modules/visualization/visual/visual.h
View file @
2b6826a1
...
...
@@ -61,11 +61,13 @@ int random_Run
(
visual_effect_t
*
,
aout_instance_t
*
,
aout_buffer_t
*
,
picture_t
*
);
int
spectrum_Run
(
visual_effect_t
*
,
aout_instance_t
*
,
aout_buffer_t
*
,
picture_t
*
);
int
spectrometer_Run
(
visual_effect_t
*
,
aout_instance_t
*
,
aout_buffer_t
*
,
picture_t
*
);
#if 0
int blur_Run
(visual_effect_t * , aout_instance_t *, aout_buffer_t *, picture_t *);
#endif
/* Default vout size */
#define VOUT_WIDTH
320
#define VOUT_HEIGHT
12
0
#define VOUT_WIDTH
533
#define VOUT_HEIGHT
40
0
src/audio_output/input.c
View file @
2b6826a1
...
...
@@ -107,7 +107,7 @@ int aout_InputNew( aout_instance_t * p_aout, aout_input_t * p_input )
var_Change
(
p_aout
,
"visual"
,
VLC_VAR_SETTEXT
,
&
text
,
NULL
);
val
.
psz_string
=
""
;
text
.
psz_string
=
_
(
"Disable"
);
var_Change
(
p_aout
,
"visual"
,
VLC_VAR_ADDCHOICE
,
&
val
,
&
text
);
val
.
psz_string
=
"
random"
;
text
.
psz_string
=
_
(
"Random
"
);
val
.
psz_string
=
"
spectrometer"
;
text
.
psz_string
=
_
(
"Spectrometer
"
);
var_Change
(
p_aout
,
"visual"
,
VLC_VAR_ADDCHOICE
,
&
val
,
&
text
);
val
.
psz_string
=
"scope"
;
text
.
psz_string
=
_
(
"Scope"
);
var_Change
(
p_aout
,
"visual"
,
VLC_VAR_ADDCHOICE
,
&
val
,
&
text
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment