Browse Source

decoder: rename vlc_packetizer helpers

Alexandre Janniaux 7 years ago
parent
commit
a1f7abd94a
  1. 15
      include/vlc_codec.h
  2. 4
      modules/demux/flac.c
  3. 4
      modules/demux/mpeg/es.c
  4. 5
      modules/demux/mpeg/h26x.c
  5. 5
      modules/demux/mpeg/mpgv.c
  6. 5
      modules/demux/vc1.c
  7. 41
      src/input/decoder.c
  8. 2
      src/libvlccore.sym

15
include/vlc_codec.h

@ -533,6 +533,21 @@ static inline float decoder_GetDisplayRate( decoder_t *dec )
return dec->cbs->video.get_display_rate( dec );
}
/**
* This function will create a packetizer suitable for a demuxer that parses
* elementary stream or for an encoder generating blocks.
*
* The provided es_format_t will be cleaned on error or by
* vlc_packetizer_Destroy.
*/
VLC_API decoder_t * (vlc_packetizer_New)( vlc_object_t *p_obj, es_format_t *p_fmt, const char *psz_msg ) VLC_USED VLC_MALLOC;
#define vlc_packetizer_New(obj, f, m) (vlc_packetizer_New)(VLC_OBJECT( obj ), f, m)
/**
* This function will destroy a packetizer create by vlc_packetizer_New.
*/
VLC_API void vlc_packetizer_Destroy( decoder_t *p_packetizer );
/** @} */
/**

4
modules/demux/flac.c

@ -162,7 +162,7 @@ static int Open( vlc_object_t * p_this )
goto error;
/* Load the FLAC packetizer */
p_sys->p_packetizer = demux_PacketizerNew( p_demux, &fmt, "flac" );
p_sys->p_packetizer = vlc_packetizer_New( p_demux, &fmt, "flac" );
if( !p_sys->p_packetizer )
goto error;
@ -212,7 +212,7 @@ static void Close( vlc_object_t * p_this )
/* Delete the decoder */
if( p_sys->p_packetizer )
demux_PacketizerDestroy( p_sys->p_packetizer );
vlc_packetizer_Destroy( p_sys->p_packetizer );
if( p_sys->p_meta )
vlc_meta_Delete( p_sys->p_meta );

4
modules/demux/mpeg/es.c

@ -258,7 +258,7 @@ static int OpenCommon( demux_t *p_demux,
/* Load the audio packetizer */
es_format_Init( &fmt, i_cat, p_sys->codec.i_codec );
fmt.i_original_fourcc = p_sys->i_original;
p_sys->p_packetizer = demux_PacketizerNew( p_demux, &fmt, p_sys->codec.psz_name );
p_sys->p_packetizer = vlc_packetizer_New( p_demux, &fmt, p_sys->codec.psz_name );
if( !p_sys->p_packetizer )
{
free( p_sys );
@ -420,7 +420,7 @@ static void Close( vlc_object_t * p_this )
TAB_CLEAN( p_sys->chapters.i_count, p_sys->chapters.p_entry );
if( p_sys->mllt.p_bits )
free( p_sys->mllt.p_bits );
demux_PacketizerDestroy( p_sys->p_packetizer );
vlc_packetizer_Destroy( p_sys->p_packetizer );
free( p_sys );
}

5
modules/demux/mpeg/h26x.c

@ -362,7 +362,7 @@ static int GenericOpen( demux_t *p_demux, const char *psz_module,
fmt.video.i_frame_rate = p_sys->feed_dts.i_divider_num;
fmt.video.i_frame_rate_base = p_sys->feed_dts.i_divider_den;
}
p_sys->p_packetizer = demux_PacketizerNew( p_demux, &fmt, psz_module );
p_sys->p_packetizer = vlc_packetizer_New( p_demux, &fmt, psz_module );
if( !p_sys->p_packetizer )
{
free( p_sys );
@ -403,7 +403,7 @@ 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;
demux_PacketizerDestroy( p_sys->p_packetizer );
vlc_packetizer_Destroy( p_sys->p_packetizer );
free( p_sys );
}
@ -527,4 +527,3 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
0, -1,
0, 1, i_query, args );
}

5
modules/demux/mpeg/mpgv.c

@ -73,7 +73,7 @@ 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;
demux_PacketizerDestroy( p_sys->p_packetizer );
vlc_packetizer_Destroy( p_sys->p_packetizer );
free( p_sys );
}
@ -136,7 +136,7 @@ static int Open( vlc_object_t * p_this )
/* Load the mpegvideo packetizer */
es_format_Init( &fmt, VIDEO_ES, VLC_CODEC_MPGV );
p_sys->p_packetizer = demux_PacketizerNew( p_demux, &fmt, "mpeg video" );
p_sys->p_packetizer = vlc_packetizer_New( p_demux, &fmt, "mpeg video" );
if( !p_sys->p_packetizer )
{
free( p_sys );
@ -210,4 +210,3 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
0, -1,
0, 1, i_query, args );
}

5
modules/demux/vc1.c

@ -110,7 +110,7 @@ static int Open( vlc_object_t * p_this )
/* Load the packetizer */
es_format_Init( &fmt, VIDEO_ES, VLC_CODEC_VC1 );
p_sys->p_packetizer = demux_PacketizerNew( p_demux, &fmt, "VC-1" );
p_sys->p_packetizer = vlc_packetizer_New( p_demux, &fmt, "VC-1" );
if( !p_sys->p_packetizer )
{
free( p_sys );
@ -127,7 +127,7 @@ 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;
demux_PacketizerDestroy( p_sys->p_packetizer );
vlc_packetizer_Destroy( p_sys->p_packetizer );
free( p_sys );
}
@ -207,4 +207,3 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
0, -1,
0, 1, i_query, args );
}

41
src/input/decoder.c

@ -2694,3 +2694,44 @@ int vlc_input_decoder_SetSpuHighlight( vlc_input_decoder_t *p_owner,
vlc_mutex_unlock( &p_owner->lock );
return VLC_SUCCESS;
}
decoder_t *(vlc_packetizer_New)( vlc_object_t *p_parent, es_format_t *p_fmt,
const char *psz_msg )
{
decoder_t *p_packetizer;
p_packetizer = vlc_custom_create( p_parent, sizeof( *p_packetizer ), "demux packetizer" );
if( !p_packetizer )
{
es_format_Clean( p_fmt );
return NULL;
}
p_fmt->b_packetized = false;
p_packetizer->pf_decode = NULL;
p_packetizer->pf_packetize = NULL;
p_packetizer->fmt_in = *p_fmt;
es_format_Init( &p_packetizer->fmt_out, p_fmt->i_cat, 0 );
p_packetizer->p_module = module_need( p_packetizer, "packetizer", NULL, false );
if( !p_packetizer->p_module )
{
es_format_Clean( p_fmt );
vlc_object_delete(p_packetizer);
msg_Err( p_parent, "cannot find packetizer for %s", psz_msg );
return NULL;
}
return p_packetizer;
}
void vlc_packetizer_Destroy( decoder_t *p_packetizer )
{
if( p_packetizer->p_module )
module_unneed( p_packetizer, p_packetizer->p_module );
es_format_Clean( &p_packetizer->fmt_in );
es_format_Clean( &p_packetizer->fmt_out );
if( p_packetizer->p_description )
vlc_meta_Delete( p_packetizer->p_description );
vlc_object_delete( p_packetizer );
}

2
src/libvlccore.sym

@ -221,6 +221,8 @@ input_resource_Release
input_resource_GetAout
input_resource_HoldAout
input_resource_PutAout
vlc_packetizer_New
vlc_packetizer_Destroy
vlc_readdir_helper_init
vlc_readdir_helper_finish
vlc_readdir_helper_additem

Loading…
Cancel
Save