After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 575818 - [ivorbisdec] extract vorbis tags
[ivorbisdec] extract vorbis tags
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-bad
git master
Other All
: Normal enhancement
: 0.10.14
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2009-03-18 11:36 UTC by Andreas Frisch
Modified: 2009-07-10 12:18 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
might make ivorbisdec parse tags (3.03 KB, patch)
2009-06-24 08:43 UTC, Tim-Philipp Müller
committed Details | Review

Description Andreas Frisch 2009-03-18 11:36:55 UTC
Please describe the problem:
in playbin2 playbacks of ogg sound files, tags are not being extracted when using ivorbis decoder. when gst-plugin-vorbis is present, tags are displayed as expected

Steps to reproduce:
first dump of our application running with vorbisdec installed,
seconds time with ivorbisdec only

Actual results:
playing 4097:0:0:0:0:0:0:0:0:0:/media/net/MP3s/_2_B_Fix0r3d/_Incoming/Bryan Scary/Flight of the Knife/01. - Flight of the Knife (Part One).ogg                                 
SERVICEMP3 construct!                                                                                                                                                          
playbin2 uri=file:///media/net/MP3s/_2_B_Fix0r3d/_Incoming/Bryan Scary/Flight of the Knife/01. - Flight of the Knife (Part One).ogg                                            
starting pipeline                                                                                                                                                              
getBouquet failed.. no path given!                                                                                                                                             
getBouquet failed.. no path given!                                                                                                                                             
new service started! trying to download cuts!                                                                                                                                  
download failed, no cuesheet interface                                                                                                                                         
gst_message from playsink0: GstMessageState, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;          
gst_message from playbin: GstMessageState, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_PLAYING;                 
gst_message from uridecodebin0: GstMessageState, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_PAUSED;            
gst_message from typefind: GstMessageState, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;           
gst_message from decodebin20: GstMessageState, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_PAUSED;              
gst_message from oggdemux0: GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;        
gst_message from typefind: GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;         
gst_message from source: GstMessageState, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_PAUSED;                   
gst_message from source: GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;           
gst_message from playsink0: GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;        
[Picload] decode picture... /media/net/MP3s/_2_B_Fix0r3d/_Incoming/Bryan Scary/Flight of the Knife/folder.jpg                                                                  
gst_message from multiqueue0: GstMessageState, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_PAUSED;              
gst_message from multiqueue0: GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;      
gst_message from vorbisdec1: GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;       
gst_message from vorbisdec1: taglist, album=(string)"Flight\ of\ the\ Knife", artist=(string)"Bryan\ Scary\ \&\ The\ Shredding\ Tears", date=(GstDate)2008-01-01, genre=(string)Pop, title=(string)"Flight\ of\ the\ Knife\ \(Part\ One\)", track-number=(guint)1, encoder=(string)"AO\;\ aoTuV\ b5c\ \[20081215\]\ \(based\ on\ Xiph.Org\'s\ libVorbis\)", encoder-version=(guint)0, audio-codec=(string)Vorbis, nominal-bitrate=(guint)192000, bitrate=(guint)192000;                                                                      
eServiceMP3::getCachedSubtitle                                                                                                                                                 
[__evUpdatedInfo] title 1 of 0 (Flight of the Knife (Part One))                                                                                                                
gst_message from inputselector0: GstMessageState, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_PAUSED;           
gst_message from inputselector0: GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;   
gst_message from audiotee: GstMessageState, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_PAUSED;                 
gst_message from audiotee: GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;         
gst_message from playsink0: GstMessageWarning, gerror=(GstGError)(NULL), debug=(string)"gstplaysink.c\(1224\):\ gen_audio_chain\ \(\):\ /GstPlayBin2:playbin/GstPlaySink:playsink0:\012Volume/mute\ is\ not\ available";                                                                                                                                      
gst_message from aresample: GstMessageState, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;          
gst_message from aconv: GstMessageState, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;              
gst_message from abin: GstMessageState, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_PAUSED;                     
gst_message from playsink0: GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_PAUSED;             
gst_message from aresample: GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;        
gst_message from aconv: GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;            
gst_message from decodebin20: GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;      
gst_message from uridecodebin0: GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;    
gst_message from audiosink: GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;        
gst_message from abin: GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;             
gst_message from playsink0: GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;       
gst_message from playbin: GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_PLAYING;               
gst_message from playbin: async-done (without structure)                                                                                                                       
0 video, 1 audio, 0 subtitle                                                                                                                                                   
audio stream 0 CODEC=Vorbis                                                                                                                                                    
gst_message from playbin: GstMessageNewClock, clock=(GstClock)"\(GstAudioClock\)\ GstAudioSinkClock";                                                                          
gst_message from audiosink: GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;      
gst_message from aresample: GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;      
gst_message from aconv: GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;          
gst_message from abin: GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;           
gst_message from audiotee: GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;       
gst_message from playsink0: GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;      
gst_message from inputselector0: GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING; 
gst_message from vorbisdec1: GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;     
gst_message from multiqueue0: GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;    
gst_message from oggdemux0: GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;      
gst_message from typefind: GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;       
gst_message from decodebin20: GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;    
gst_message from source: GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;         
gst_message from uridecodebin0: GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;  
gst_message from playbin: GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;        


playing 4097:0:0:0:0:0:0:0:0:0:/media/net/MP3s/_2_B_Fix0r3d/_Incoming/Bryan Scary/Flight of the Knife/01. - Flight of the Knife (Part One).ogg                                 
SERVICEMP3 construct!                                                                                                                                                          
playbin2 uri=file:///media/net/MP3s/_2_B_Fix0r3d/_Incoming/Bryan Scary/Flight of the Knife/01. - Flight of the Knife (Part One).ogg                                            
starting pipeline                                                                                                                                                              
getBouquet failed.. no path given!                                                                                                                                             
getBouquet failed.. no path given!                                                                                                                                             
new service started! trying to download cuts!                                                                                                                                  
download failed, no cuesheet interface                                                                                                                                         
gst_message from playsink0: GstMessageState, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;          
gst_message from playbin: GstMessageState, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_PLAYING;                 
gst_message from uridecodebin0: GstMessageState, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_PAUSED;            
gst_message from typefind: GstMessageState, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;           
gst_message from decodebin20: GstMessageState, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_PAUSED;              
gst_message from oggdemux0: GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;        
gst_message from typefind: GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;         
gst_message from source: GstMessageState, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_PAUSED;                   
gst_message from source: GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;           
gst_message from playsink0: GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;        
[Picload] decode picture... /media/net/MP3s/_2_B_Fix0r3d/_Incoming/Bryan Scary/Flight of the Knife/folder.jpg                                                                  
gst_message from multiqueue0: GstMessageState, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_PAUSED;              
gst_message from multiqueue0: GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;      
gst_message from ivorbisdec1: GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;      
gst_message from inputselector0: GstMessageState, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_PAUSED;           
gst_message from inputselector0: GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;   
gst_message from audiotee: GstMessageState, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_PAUSED;                 
gst_message from audiotee: GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;         
gst_message from playsink0: GstMessageWarning, gerror=(GstGError)(NULL), debug=(string)"gstplaysink.c\(1224\):\ gen_audio_chain\ \(\):\ /GstPlayBin2:playbin/GstPlaySink:playsink0:\012Volume/mute\ is\ not\ available";                                                                                                                                      
gst_message from aresample: GstMessageState, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;          
gst_message from aconv: GstMessageState, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;              
gst_message from abin: GstMessageState, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_PAUSED;                     
gst_message from playsink0: GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_PAUSED;             
gst_message from aresample: GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;        
gst_message from aconv: GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;            
gst_message from decodebin20: GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;      
gst_message from uridecodebin0: GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;    
gst_message from audiosink: GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;        
gst_message from abin: GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;             
gst_message from playsink0: GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;       
gst_message from playbin: GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_PLAYING;               
gst_message from playbin: async-done (without structure)                                                                                                                       
0 video, 1 audio, 0 subtitle                                                                                                                                                   
gst_message from playbin: GstMessageNewClock, clock=(GstClock)"\(GstAudioClock\)\ GstAudioSinkClock";                                                                          
gst_message from audiosink: GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;      
gst_message from aresample: GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;      
gst_message from aconv: GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;          
gst_message from abin: GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;           
gst_message from audiotee: GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;       
gst_message from playsink0: GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;      
gst_message from inputselector0: GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING; 
gst_message from ivorbisdec1: GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;    
gst_message from multiqueue0: GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;    
gst_message from oggdemux0: GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;      
gst_message from typefind: GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;       
gst_message from decodebin20: GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;    
gst_message from source: GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;         
gst_message from uridecodebin0: GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;  
gst_message from playbin: GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;        

Expected results:
i'd expect ivorbis to also extract the tags correctly

Does this happen every time?
yes

Other information:
Comment 1 Tim-Philipp Müller 2009-06-23 01:34:04 UTC
I guess vorbis_handle_comment_packet() being #if 0'ed in its entirety doesn't help here..
Comment 2 Tim-Philipp Müller 2009-06-24 08:43:45 UTC
Created attachment 137293 [details] [review]
might make ivorbisdec parse tags

I can't build this plugin, so this is just a 'blind patch'.

What version of libvorbisidec/tremor are you building it against? Does your plugin link against libvorbisfile as well?
Comment 3 Andreas Frisch 2009-07-10 11:56:06 UTC
worx now! thx 4 fix tim
Comment 4 Tim-Philipp Müller 2009-07-10 12:18:30 UTC
commit 011e9c10f0e01e347a5becb2ba1bcd50cbad167b
Author: Tim-Philipp Müller <tim.muller@collabora.co.uk>
Date:   Fri Jul 10 13:03:54 2009 +0100

    ivorbis: extract vorbis comments
    
    Fixes #575818.