Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <QDebug>
- #include <QTimer>
- #include <stdio.h>
- #include "gstaudioplayer.h"
- extern "C"
- {
- void my_bus_callback(GstBus *bus, GstMessage *msg, gpointer data)
- {
- /*GList *strinfo;
- GstPad vpad;
- GstCaps *vcaps;
- GstTagList *taglist;
- GstAudioPlayer *self = (GstAudioPlayer *) data;
- if ()
- {
- g_object_get(G_OBJECT(gplay), "stream-info", strinfo, NULL);
- g_object_get(G_OBJECT(strinfo->data), "caps", caps, NULL);
- if (!gst_structure_get_int (str, "fps", &fps))
- qDebug() << fps;
- }*/
- }
- void
- cb_new_pad (GstElement *element,
- GstPad *pad,
- gpointer data)
- {
- gchar *name;
- name = gst_pad_get_name (pad);
- g_print("A new pad %s was created\n", name);
- g_free(name);
- }
- }
- GstAudioPlayer::GstAudioPlayer() : FilePlayer()
- {
- }
- bool GstAudioPlayer::init(QStringList opt)
- {
- GstBus *bus;
- handleOption(opt);
- gst_init(0, 0);
- gplay = gst_element_factory_make("playbin2", "play");
- g_object_set (G_OBJECT (gplay), "flags", "video" , NULL);
- /*bus = gst_pipeline_get_bus (GST_PIPELINE (gplay));
- gst_bus_add_watch (bus, my_bus_callback, this);*/
- return true;
- }
- void GstAudioPlayer::open(QString filename)
- {
- QString tmp;
- tmp = filename;
- tmp.prepend("file:");
- g_object_set (G_OBJECT (gplay), "uri", tmp.toUtf8().constData(), NULL);
- }
- void GstAudioPlayer::play()
- {
- GList *strinfo;
- GstPad *vpad;
- GstCaps *vcaps;
- GstTagList *taglist;
- GstIterator *gstit;
- gpointer *item = NULL;
- bool done = false;
- int fpsnum;
- int fpsden;
- int tmp = 0;
- gst_element_set_state (gplay, GST_STATE_PLAYING);
- gstit = gst_element_iterate_pads(gplay);
- if (gstit == NULL)
- qDebug() << "iterator null, fuck Oo";
- while (!done)
- {
- if (gstit == NULL)
- break;
- qDebug() << "Loop : " << gstit;
- switch(gst_iterator_next(gstit, item))
- {
- case GST_ITERATOR_OK :
- qDebug() << "OK";
- vpad = GST_PAD(item);
- qDebug() << gst_pad_get_name(vpad);
- gst_object_unref(item);
- break;
- case GST_ITERATOR_RESYNC:
- qDebug() << "RESYNC";
- gst_iterator_resync(gstit);
- break;
- case GST_ITERATOR_ERROR:
- qDebug() << "ERROR";
- done = true;
- break;
- case GST_ITERATOR_DONE :
- qDebug() << "DONE";
- done = true;
- break;
- }
- }
- gst_iterator_free(gstit);
- QTimer *timer = new QTimer(this);
- connect(timer, SIGNAL(timeout()), this, SLOT(checkFrame()));
- timer->start(50);
- }
- void GstAudioPlayer::seek(const int step)
- {
- }
- void GstAudioPlayer::stop()
- {
- //gst_element_set_state (gplay, GST_STATE_STOPED);
- }
- void GstAudioPlayer::checkFrame()
- {
- static int framenb = -1;
- GstFormat fmt = GST_FORMAT_DEFAULT;
- gint64 pos, len;
- qDebug() << gst_format_get_name(fmt);
- if (gst_element_query_position (gplay, &fmt, &pos)
- ) {
- /*qDebug() << "Time: ";
- g_print ("Time: %" GST_TIME_FORMAT " / %" GST_TIME_FORMAT "\r",
- GST_TIME_ARGS (pos), GST_TIME_ARGS (len));*/
- qDebug() << gst_format_get_name(fmt);
- qDebug() << "Plop : " << pos;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement