GStreamermm: Gst::Taglist can not get Gst::TAG_DURATION?
- From: Phong Cao <phngcv gmail com>
- To: gtkmm-list gnome org
- Subject: GStreamermm: Gst::Taglist can not get Gst::TAG_DURATION?
- Date: Wed, 7 Dec 2011 14:53:44 -0500
Hi guys,
I am developing a small project called Dingo. It uses GStreamermm that lets the users select a media file through Gtk::FileChooserDialog, get the Gst::TagList using Gst::Discoverer, and then print out the metadata of the media file. The project was compiled and I tried it with some of my music files. All of the metadata could be read except for the Gst::TAG_DURATION... It always returned the following error:
(main:3956): GLib-GObject-CRITICAL **: g_value_unset: assertion `G_IS_VALUE (value)' failed
I went through the Gst::TagList reference and it is said that Gst::TagList::get_value(Gst::TAG_DURATION, Glib::ValueBase& value) required the variable "value" to be unsigned 64 bit integer (
http://developer.gnome.org/gstreamermm/0.10/namespaceGst.html#ad14290dfbf163092d7a5c64b1cd76aee). So this is part of what I tried:
#include <gstreamermm.h>
namespace Dingo {
class TagReader {
public:
TagReader();
virtual ~TagReader();
void read(Glib::ustring fileuri);
unsigned long long getDuration();
void print();
private:
Gst::TagList d_taglist;
};
}
Dingo::TagReader::read(Glib::ustring fileuri) {
//get the Gst::TagList of fileuri & store into d_taglist using Gst::Discoverer
}
unsigned long long Dingo::TagReader::getDuration() {
Glib::Value<unsigned long long> temp_duration;
if (d_taglist.get_value(Gst::TAG_DURATION, temp_duration)) {
return temp_duration.get();
}
else {
return 0;
}
}
void Dingo::TagReader::print() {
std::cout << "Duration: " << getDuration() << std::endl;
//Error: print out 0 & the above error message!
}
However, the getDuration() function ALWAYS returns 0 with the above error message and I dont understand if the problem lays on the way I use "unsigned long long" as unsigned 64-bit integer value. I tried to change it to "guint64" but the problem stays the same.
Therefore, I wonder if anybody here can spot the problem in my code. I cant get the reason why Gst::TagList would not read Gst::TAG_DURATION of my media file.
Here is the complete source code of the program if anybody wants:
http://www.mediafire.com/?aq3yiq3n291g7rw. Just download, unzip and run "make" to compile.
Thank you for reading my message! Have a good day guys!
--
Phong V. Cao
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]