Changeset 32124


Ignore:
Timestamp:
01/06/15 11:22:40 (8 years ago)
Author:
gost
Message:

[titan] add GStreamer ff/fr

File:
1 edited

Legend:

Unmodified
Added
Removed
  • titan/titan/player.h

    r31945 r32124  
    3232unsigned long long m_gst_startpts = 0;
    3333CustomData data;
     34GstElement *video_sink = NULL;
    3435#endif
    3536
     
    12761277
    12771278#ifdef EPLAYER4
     1279        if(video_sink)
     1280        {
     1281                gst_object_unref (video_sink);
     1282                video_sink = NULL;
     1283        }
    12781284        if(pipeline)
    12791285        {
     
    13231329#ifdef EPLAYER4
    13241330        if(pipeline)
     1331        {
     1332                if(status.playspeed != 0)
     1333                        playersend_ff_fr_event(1);
    13251334                gst_element_set_state(pipeline, GST_STATE_PLAYING);
     1335        }
    13261336#endif
    13271337}
     
    13491359                player->playback->Command(player, PLAYBACK_FASTFORWARD, &speedmap);
    13501360#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
    13511380}
    13521381
     
    13961425        if(player && player->playback)
    13971426                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);
    13981446#endif
    13991447}
     
    25602608#endif
    25612609
    2562 #endif
     2610#ifdef EPLAYER4
     2611void 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.