]> git.sesse.net Git - vlc/blobdiff - modules/demux/mpeg/mpga.c
Some more demux and access code factorization
[vlc] / modules / demux / mpeg / mpga.c
index e1e3951d6c0a223ea87a94b8781ceb3b0ee6d045..ea83502654dbcada99aa1a89eef2136805c791f0 100644 (file)
@@ -157,35 +157,16 @@ static int Open( vlc_object_t * p_this )
         if( !b_ok && !p_demux->b_force ) return VLC_EGENERIC;
     }
 
-    p_demux->p_sys = p_sys = malloc( sizeof( demux_sys_t ) );
+    STANDARD_DEMUX_INIT; p_sys = p_demux->p_sys;
     memset( p_sys, 0, sizeof( demux_sys_t ) );
     p_sys->p_es = 0;
-    p_sys->p_packetizer = 0;
     p_sys->b_start = VLC_TRUE;
     p_sys->meta = 0;
-    p_demux->pf_demux   = Demux;
-    p_demux->pf_control = Control;
-
-    /*
-     * Load the mpeg audio packetizer
-     */
-    p_sys->p_packetizer = vlc_object_create( p_demux, VLC_OBJECT_PACKETIZER );
-    p_sys->p_packetizer->pf_decode_audio = NULL;
-    p_sys->p_packetizer->pf_decode_video = NULL;
-    p_sys->p_packetizer->pf_decode_sub = NULL;
-    p_sys->p_packetizer->pf_packetize = NULL;
-    es_format_Init( &p_sys->p_packetizer->fmt_in, AUDIO_ES,
-                    VLC_FOURCC( 'm', 'p', 'g', 'a' ) );
-    es_format_Init( &p_sys->p_packetizer->fmt_out, UNKNOWN_ES, 0 );
-    p_sys->p_packetizer->p_module =
-        module_Need( p_sys->p_packetizer, "packetizer", NULL, 0 );
 
-    if( p_sys->p_packetizer->p_module == NULL )
-    {
-        msg_Err( p_demux, "cannot find mpga packetizer" );
-        Close( VLC_OBJECT(p_demux ) );
-        return VLC_EGENERIC;
-    }
+    /* Load the mpeg audio packetizer */
+    INIT_APACKETIZER( p_sys->p_packetizer, 'm', 'p', 'g', 'a' );
+    es_format_Init( &p_sys->p_packetizer->fmt_out, UNKNOWN_ES, 0 );
+    LOAD_PACKETIZER_OR_FAIL( p_sys->p_packetizer, "mpga" );
 
     /* Xing header */
     if( HeaderCheck( header ) )
@@ -354,13 +335,9 @@ static void Close( vlc_object_t * p_this )
     demux_t     *p_demux = (demux_t*)p_this;
     demux_sys_t *p_sys = p_demux->p_sys;
 
+    DESTROY_PACKETIZER( p_sys->p_packetizer );
     if( p_sys->meta ) vlc_meta_Delete( p_sys->meta );
 
-    if( p_sys->p_packetizer && p_sys->p_packetizer->p_module )
-        module_Unneed( p_sys->p_packetizer, p_sys->p_packetizer->p_module );
-    if( p_sys->p_packetizer )
-        vlc_object_destroy( p_sys->p_packetizer );
-
     free( p_sys );
 }