Changeset 196
- Timestamp:
- 01/16/08 13:40:36 (4 years ago)
- Location:
- fm_server/trunk/src
- Files:
-
- 4 modified
-
fm_djmixer.c (modified) (4 diffs)
-
fm_input_cdj.c (modified) (6 diffs)
-
fm_mixer.c (modified) (2 diffs)
-
fm_mixer.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
fm_server/trunk/src/fm_djmixer.c
r143 r196 47 47 static gboolean fm_djmixer_activate (FmElement *element); 48 48 static void fm_djmixer_get_buffer (FmElement *element, 49 FmBuffer *buffer); 49 FmBuffer *buffer, 50 FmSync *sync); 50 51 static void fm_djmixer_set_gain (FmDJMixer *djm, 51 52 gint port_n, … … 57 58 guint port_n, 58 59 gdouble value); 60 static void fm_djmixer_become_sync_ref (FmElement *element, 61 FmSync *sync); 59 62 60 63 … … 132 135 element_class->activate = fm_djmixer_activate; 133 136 element_class->get_buffer = fm_djmixer_get_buffer; 137 element_class->become_sync_ref = fm_djmixer_become_sync_ref; 134 138 } 135 139 … … 299 303 static void 300 304 fm_djmixer_get_buffer (FmElement *element, 301 FmBuffer *buffer) 305 FmBuffer *buffer, 306 FmSync *sync) 302 307 { 303 308 FmDJMixer *djm = FM_DJMIXER (element); 304 309 305 fm_element_get_buffer (FM_ELEMENT (djm->master_level), buffer); 306 } 310 fm_element_get_buffer (FM_ELEMENT (djm->master_level), buffer, element->sync_ref); 311 } 312 313 314 static void 315 fm_djmixer_become_sync_ref (FmElement *element, 316 FmSync *sync) 317 { 318 FmDJMixer *djm = FM_DJMIXER (element); 319 320 g_print ("FmDJMixer has become sync ref!\n"); 321 322 FmElement *mixer_el = FM_ELEMENT (djm->mixer); 323 mixer_el->sync_ref = sync; 324 } -
fm_server/trunk/src/fm_input_cdj.c
r181 r196 64 64 FmInputState fm_input_cdj_get_state (FmInput *input); 65 65 static void fm_input_cdj_update_bpm (FmInputCDJ *input_cdj); 66 static void fm_input_cdj_become_sync_master (FmElement *element); 66 static void fm_input_cdj_become_sync_master (FmElement *element, 67 FmSync *sync); 67 68 static void fm_input_cdj_get_buffer (FmElement *element, 68 FmBuffer *buffer); 69 FmBuffer *buffer, 70 FmSync *sync); 69 71 static void fm_input_cdj_input_state_changed_cb (FmInput *input, 70 72 FmInputState state, … … 277 279 278 280 static void 279 fm_input_cdj_become_sync_master (FmElement *element )280 { 281 #define BPM 120 281 fm_input_cdj_become_sync_master (FmElement *element, 282 FmSync *sync) 283 { 282 284 g_print ("FmInputCDJ has become sync master!\n"); 283 285 284 FmSync *sync = fm_element_pipeline_get_sync_info (element);285 286 sync->bpm = BPM;286 sync->in_use = TRUE; 287 288 sync->bpm = 120.0; 287 289 sync->beat_per_bar = 4; 288 290 } … … 291 293 static void 292 294 fm_input_cdj_get_buffer (FmElement *element, 293 FmBuffer *buffer) 295 FmBuffer *buffer, 296 FmSync *sync) 294 297 { 295 298 FmInputCDJ *input_cdj = FM_INPUT_CDJ (element); … … 300 303 301 304 302 fm_element_get_buffer (FM_ELEMENT (input_cdj->rate), buffer); 305 // fm_element_get_buffer (FM_ELEMENT (input_cdj->rate), buffer, sync); 306 fm_element_get_buffer (FM_ELEMENT (input_cdj->input), buffer, sync); 307 // g_print ("went %lld nsec ahead\n", (long long int) FM_BUFFER_DURATION (buffer)); 303 308 304 309 //g_print ("Used %d samples\n", fm_effect_rate_input_frames_used (input_cdj->rate)); 305 310 306 // if (fm_element_is_sync_master (element)) 307 // fm_sync_master_played_samples (sync, fm_effect_rate_input_frames_used (input_cdj->rate)); 311 312 313 if (fm_element_is_sync_master (element)) { 314 if (FM_BUFFER_DISCONT (buffer)) { 315 g_print ("**************************************************************************************************\n"); 316 g_print ("DISCONT buffer! new pos %llu\n", (long long unsigned int) FM_BUFFER_TIMESTAMP (buffer)); 317 fm_sync_set (sync, 0, FM_BUFFER_TIMESTAMP (buffer)); 318 FM_BUFFER_DISCONT (buffer) = FALSE; 319 } else { 320 fm_sync_master_played_ns (sync, FM_BUFFER_DURATION (buffer)); 321 fm_sync_update_cycle (sync); 322 } 323 324 if (FM_BUFFER_DURATION (buffer) > 0) 325 fm_sync_show_pos (sync); 326 } 308 327 } 309 328 … … 453 472 gint value) 454 473 { 455 #define SAMPLES_FOR_UNIT 10000474 #define NSECS_FOR_UNIT (1000L * 1000 * 100) 456 475 457 476 g_print ("A seek button pressed while "); … … 465 484 g_return_if_fail (value != 0); 466 485 467 g long offset = value * SAMPLES_FOR_UNIT;486 gint64 offset = value * NSECS_FOR_UNIT; 468 487 fm_input_gst_seek_relative (input_cdj->input, offset); 469 488 } -
fm_server/trunk/src/fm_mixer.c
r81 r196 222 222 void 223 223 fm_mixer_get_buffer (FmElement *element, 224 FmBuffer *buffer) 224 FmBuffer *buffer, 225 FmSync *sync) 225 226 { 226 227 FmMixer *mixer = FM_MIXER (element); … … 236 237 GList *port = element->sink_ports; 237 238 gint i = 0; 239 240 //g_print("%p\n", element->sync_ref); 241 242 if (element->peer_sync_master) { 243 FM_BUFFER_REQUESTED (mixer->buffers[i]) = FM_BUFFER_REQUESTED (buffer); 244 245 fm_element_get_buffer (element->peer_sync_master, mixer->buffers[i++], sync); 246 } 247 238 248 while (port) { 239 249 FmElementSinkPort *our_port = (FmElementSinkPort *) port->data; 240 250 FmElementSrcPort *peer_port = our_port->peer; 241 251 252 if (element->peer_sync_master == peer_port->owner) 253 continue; 254 242 255 FM_BUFFER_REQUESTED (mixer->buffers[i]) = FM_BUFFER_REQUESTED (buffer); 243 256 // g_print("i %d\n", i); 244 fm_element_get_buffer (FM_ELEMENT (peer_port->owner), mixer->buffers[i++] );257 fm_element_get_buffer (FM_ELEMENT (peer_port->owner), mixer->buffers[i++], sync); 245 258 246 259 port = g_list_next (port); -
fm_server/trunk/src/fm_mixer.h
r10 r196 70 70 void 71 71 fm_mixer_get_buffer (FmElement *element, 72 FmBuffer *buffer); 72 FmBuffer *buffer, 73 FmSync *sync);
