Add timestamp, mikmod work now

Original commit message from CVS:
Add timestamp, mikmod work now
Put mikmod to secondary rank ( modplug first )
This commit is contained in:
Jeremy Simon 2002-06-22 16:20:25 +00:00
parent f981517414
commit c3c167f8ef
3 changed files with 17 additions and 11 deletions

View file

@ -44,6 +44,8 @@ static void mikmod_Update( void )
GST_BUFFER_DATA( outdata ) = g_memdup( audiobuffer, length ); GST_BUFFER_DATA( outdata ) = g_memdup( audiobuffer, length );
GST_BUFFER_SIZE( outdata ) = length; GST_BUFFER_SIZE( outdata ) = length;
GST_BUFFER_TIMESTAMP( outdata ) = timestamp;
if ( need_sync == 1 ) if ( need_sync == 1 )
{ {
/* FIXME, send a flush event or something */ /* FIXME, send a flush event or something */

View file

@ -332,13 +332,15 @@ gst_mikmod_loop (GstElement *element)
if (GST_EVENT_TYPE (event) == GST_EVENT_EOS) if (GST_EVENT_TYPE (event) == GST_EVENT_EOS)
break; break;
} }
if ( mikmod->Buffer ) {
mikmod->Buffer = gst_buffer_append( mikmod->Buffer, buffer_in );
gst_buffer_unref( buffer_in );
}
else else
mikmod->Buffer = buffer_in; {
if ( mikmod->Buffer ) {
mikmod->Buffer = gst_buffer_append( mikmod->Buffer, buffer_in );
gst_buffer_unref( buffer_in );
}
else
mikmod->Buffer = buffer_in;
}
} }
if ( mikmod->_16bit ) if ( mikmod->_16bit )
@ -346,6 +348,8 @@ gst_mikmod_loop (GstElement *element)
else else
mode16bits = 8; mode16bits = 8;
gst_mikmod_setup( mikmod );
MikMod_RegisterDriver(&drv_gst); MikMod_RegisterDriver(&drv_gst);
MikMod_RegisterAllLoaders(); MikMod_RegisterAllLoaders();
@ -373,8 +377,9 @@ gst_mikmod_loop (GstElement *element)
do { do {
if ( Player_Active() ) { if ( Player_Active() ) {
drv_gst.Update();
timestamp = ( module->sngtime / 1024.0 ) * GST_SECOND;
drv_gst.Update();
gst_element_yield (element); gst_element_yield (element);
} }
else { else {
@ -438,7 +443,6 @@ GstMikMod *mikmod;
GST_DEBUG (0,"state pending %d", GST_STATE_PENDING (element)); GST_DEBUG (0,"state pending %d", GST_STATE_PENDING (element));
/* if going down into NULL state, close the file if it's open */
if (GST_STATE_PENDING (element) == GST_STATE_READY) if (GST_STATE_PENDING (element) == GST_STATE_READY)
{ {
gst_mikmod_setup(mikmod); gst_mikmod_setup(mikmod);
@ -469,7 +473,6 @@ GstMikMod *mikmod;
MikMod_Exit(); MikMod_Exit();
/* if we haven't failed already, give the parent class a chance to ;-) */
if (GST_ELEMENT_CLASS (parent_class)->change_state) if (GST_ELEMENT_CLASS (parent_class)->change_state)
return GST_ELEMENT_CLASS (parent_class)->change_state (element); return GST_ELEMENT_CLASS (parent_class)->change_state (element);
@ -611,7 +614,7 @@ plugin_init (GModule *module, GstPlugin *plugin)
factory = gst_element_factory_new("mikmod",GST_TYPE_MIKMOD, factory = gst_element_factory_new("mikmod",GST_TYPE_MIKMOD,
&mikmod_details); &mikmod_details);
g_return_val_if_fail(factory != NULL, FALSE); g_return_val_if_fail(factory != NULL, FALSE);
gst_element_factory_set_rank (factory, GST_ELEMENT_RANK_PRIMARY); gst_element_factory_set_rank (factory, GST_ELEMENT_RANK_SECONDARY);
gst_element_factory_add_pad_template (factory, mikmod_src_factory ()); gst_element_factory_add_pad_template (factory, mikmod_src_factory ());
gst_element_factory_add_pad_template (factory, mikmod_sink_factory ()); gst_element_factory_add_pad_template (factory, mikmod_sink_factory ());

View file

@ -76,6 +76,7 @@ typedef struct _GstMikModClass GstMikModClass;
MODULE *module; MODULE *module;
MREADER *reader; MREADER *reader;
GstPad *srcpad; GstPad *srcpad;
gint64 timestamp;
int need_sync; int need_sync;
GType gst_mikmod_get_type(void); GType gst_mikmod_get_type(void);