Changeset 32124
- Timestamp:
- 01/06/15 11:22:40 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
titan/titan/player.h
r31945 r32124 32 32 unsigned long long m_gst_startpts = 0; 33 33 CustomData data; 34 GstElement *video_sink = NULL; 34 35 #endif 35 36 … … 1276 1277 1277 1278 #ifdef EPLAYER4 1279 if(video_sink) 1280 { 1281 gst_object_unref (video_sink); 1282 video_sink = NULL; 1283 } 1278 1284 if(pipeline) 1279 1285 { … … 1323 1329 #ifdef EPLAYER4 1324 1330 if(pipeline) 1331 { 1332 if(status.playspeed != 0) 1333 playersend_ff_fr_event(1); 1325 1334 gst_element_set_state(pipeline, GST_STATE_PLAYING); 1335 } 1326 1336 #endif 1327 1337 } … … 1349 1359 player->playback->Command(player, PLAYBACK_FASTFORWARD, &speedmap); 1350 1360 #endif 1361 1362 #ifdef EPLAYER4 1363 gdouble rate = 0; 1364 1365 if (speed < 1) speed = 1; 1366 if (speed > 7) speed = 7; 1367 1368 switch(speed) 1369 { 1370 case 1: rate = 2; break; 1371 case 2: rate = 4; break; 1372 case 3: rate = 8; break; 1373 case 4: rate = 16; break; 1374 case 5: rate = 32; break; 1375 case 6: rate = 64; break; 1376 case 7: rate = 128; break; 1377 } 1378 playersend_ff_fr_event(rate); 1379 #endif 1351 1380 } 1352 1381 … … 1396 1425 if(player && player->playback) 1397 1426 player->playback->Command(player, PLAYBACK_FASTBACKWARD, &speedmap); 1427 #endif 1428 1429 #ifdef EPLAYER4 1430 gdouble rate = 0; 1431 1432 if (speed > -1) speed = -1; 1433 if (speed < -7) speed = -7; 1434 1435 switch(speed) 1436 { 1437 case -1: rate = -2; break; 1438 case -2: rate = -4; break; 1439 case -3: rate = -8; break; 1440 case -4: rate = -16; break; 1441 case -5: rate = -32; break; 1442 case -6: rate = -64; break; 1443 case -7: rate = -128; break; 1444 } 1445 playersend_ff_fr_event(rate); 1398 1446 #endif 1399 1447 } … … 2560 2608 #endif 2561 2609 2562 #endif 2610 #ifdef EPLAYER4 2611 void playersend_ff_fr_event(gdouble rate) { 2612 gint64 position; 2613 GstFormat format = GST_FORMAT_TIME; 2614 GstEvent *seek_event; 2615 2616 /* Obtain the current position, needed for the seek event */ 2617 if (!gst_element_query_position (pipeline, &format, &position)) { 2618 g_printerr ("Unable to retrieve current position.\n"); 2619 return; 2620 } 2621 2622 /* Create the seek event */ 2623 if (rate > 0) 2624 { 2625 seek_event = gst_event_new_seek (rate, GST_FORMAT_TIME, GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_ACCURATE,GST_SEEK_TYPE_SET, position, GST_SEEK_TYPE_NONE, 0); 2626 } 2627 else 2628 { 2629 seek_event = gst_event_new_seek (rate, GST_FORMAT_TIME, GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_ACCURATE,GST_SEEK_TYPE_SET, 0, GST_SEEK_TYPE_SET, position); 2630 } 2631 2632 if (video_sink == NULL) { 2633 /* If we have not done so, obtain the sink through which we will send the seek events */ 2634 g_object_get (pipeline, "video-sink", &video_sink, NULL); 2635 } 2636 2637 /* Send the event */ 2638 gst_element_send_event (video_sink, seek_event); 2639 2640 g_print ("Current rate: %g\n", rate); 2641 } 2642 #endif 2643 2644 #endif
Note: See TracChangeset
for help on using the changeset viewer.