43 * @GST_AUDIO_TEST_SRC_WAVE_SINE: a sine wave |
43 * @GST_AUDIO_TEST_SRC_WAVE_SINE: a sine wave |
44 * @GST_AUDIO_TEST_SRC_WAVE_SQUARE: a square wave |
44 * @GST_AUDIO_TEST_SRC_WAVE_SQUARE: a square wave |
45 * @GST_AUDIO_TEST_SRC_WAVE_SAW: a saw wave |
45 * @GST_AUDIO_TEST_SRC_WAVE_SAW: a saw wave |
46 * @GST_AUDIO_TEST_SRC_WAVE_TRIANGLE: a tringle wave |
46 * @GST_AUDIO_TEST_SRC_WAVE_TRIANGLE: a tringle wave |
47 * @GST_AUDIO_TEST_SRC_WAVE_SILENCE: silence |
47 * @GST_AUDIO_TEST_SRC_WAVE_SILENCE: silence |
48 * @GST_AUDIO_TEST_SRC_WAVE_WHITE_NOISE: white noise |
48 * @GST_AUDIO_TEST_SRC_WAVE_WHITE_NOISE: white uniform noise |
49 * @GST_AUDIO_TEST_SRC_WAVE_PINK_NOISE: pink noise |
49 * @GST_AUDIO_TEST_SRC_WAVE_PINK_NOISE: pink noise |
50 * @GST_AUDIO_TEST_SRC_WAVE_SINE_TAB: sine wave using a table |
50 * @GST_AUDIO_TEST_SRC_WAVE_SINE_TAB: sine wave using a table |
|
51 * @GST_AUDIO_TEST_SRC_WAVE_TICKS: periodic ticks |
|
52 * @GST_AUDIO_TEST_SRC_WAVE_GAUSSIAN_WHITE_NOISE: white (zero mean) Gaussian noise; volume sets the standard deviation of the noise in units of the range of values of the sample type, e.g. volume=0.1 produces noise with a standard deviation of 0.1*32767=3277 with 16-bit integer samples, or 0.1*1.0=0.1 with floating-point samples. |
51 * |
53 * |
52 * Different types of supported sound waves. |
54 * Different types of supported sound waves. |
53 */ |
55 */ |
54 typedef enum { |
56 typedef enum { |
55 GST_AUDIO_TEST_SRC_WAVE_SINE, |
57 GST_AUDIO_TEST_SRC_WAVE_SINE, |
57 GST_AUDIO_TEST_SRC_WAVE_SAW, |
59 GST_AUDIO_TEST_SRC_WAVE_SAW, |
58 GST_AUDIO_TEST_SRC_WAVE_TRIANGLE, |
60 GST_AUDIO_TEST_SRC_WAVE_TRIANGLE, |
59 GST_AUDIO_TEST_SRC_WAVE_SILENCE, |
61 GST_AUDIO_TEST_SRC_WAVE_SILENCE, |
60 GST_AUDIO_TEST_SRC_WAVE_WHITE_NOISE, |
62 GST_AUDIO_TEST_SRC_WAVE_WHITE_NOISE, |
61 GST_AUDIO_TEST_SRC_WAVE_PINK_NOISE, |
63 GST_AUDIO_TEST_SRC_WAVE_PINK_NOISE, |
62 GST_AUDIO_TEST_SRC_WAVE_SINE_TAB |
64 GST_AUDIO_TEST_SRC_WAVE_SINE_TAB, |
|
65 GST_AUDIO_TEST_SRC_WAVE_TICKS, |
|
66 GST_AUDIO_TEST_SRC_WAVE_GAUSSIAN_WHITE_NOISE |
63 } GstAudioTestSrcWave; |
67 } GstAudioTestSrcWave; |
64 |
68 |
65 #define PINK_MAX_RANDOM_ROWS (30) |
69 #define PINK_MAX_RANDOM_ROWS (30) |
66 #define PINK_RANDOM_BITS (16) |
70 #define PINK_RANDOM_BITS (16) |
67 #define PINK_RANDOM_SHIFT ((sizeof(long)*8)-PINK_RANDOM_BITS) |
71 #define PINK_RANDOM_SHIFT ((sizeof(long)*8)-PINK_RANDOM_BITS) |
101 GstAudioTestSrcWave wave; |
105 GstAudioTestSrcWave wave; |
102 gdouble volume; |
106 gdouble volume; |
103 gdouble freq; |
107 gdouble freq; |
104 |
108 |
105 /* audio parameters */ |
109 /* audio parameters */ |
|
110 gint channels; |
106 gint samplerate; |
111 gint samplerate; |
107 gint samples_per_buffer; |
112 gint samples_per_buffer; |
|
113 gint sample_size; |
108 GstAudioTestSrcFormat format; |
114 GstAudioTestSrcFormat format; |
109 |
115 |
110 /*< private >*/ |
116 /*< private >*/ |
111 gboolean tags_pushed; /* send tags just once ? */ |
117 gboolean tags_pushed; /* send tags just once ? */ |
112 GstClockTimeDiff timestamp_offset; /* base offset */ |
118 GstClockTimeDiff timestamp_offset; /* base offset */ |
113 GstClockTime running_time; /* total running time */ |
119 GstClockTime next_time; /* next timestamp */ |
114 gint64 n_samples; /* total samples sent */ |
120 gint64 next_sample; /* next sample to send */ |
115 gint64 n_samples_stop; |
121 gint64 next_byte; /* next byte to send */ |
|
122 gint64 sample_stop; |
116 gboolean check_seek_stop; |
123 gboolean check_seek_stop; |
117 gboolean eos_reached; |
124 gboolean eos_reached; |
118 gint generate_samples_per_buffer; /* used to generate a partial buffer */ |
125 gint generate_samples_per_buffer; /* used to generate a partial buffer */ |
|
126 gboolean can_activate_pull; |
119 |
127 |
120 /* waveform specific context data */ |
128 /* waveform specific context data */ |
121 gdouble accumulator; /* phase angle */ |
129 gdouble accumulator; /* phase angle */ |
122 GstPinkNoise pink; |
130 GstPinkNoise pink; |
123 gdouble wave_table[1024]; |
131 gdouble wave_table[1024]; |