They are ignored for now.
es_format_t fmt_out;
/* Some decoders only accept packetized data (ie. not truncated) */
es_format_t fmt_out;
/* Some decoders only accept packetized data (ie. not truncated) */
- bool b_need_packetized;
+ bool b_need_packetized;
/* Tell the decoder if it is allowed to drop frames */
/* Tell the decoder if it is allowed to drop frames */
/* */
picture_t * ( * pf_decode_video )( decoder_t *, block_t ** );
/* */
picture_t * ( * pf_decode_video )( decoder_t *, block_t ** );
* globaly, not necessary for the current packet */
block_t * ( * pf_get_cc ) ( decoder_t *, bool pb_present[4] );
* globaly, not necessary for the current packet */
block_t * ( * pf_get_cc ) ( decoder_t *, bool pb_present[4] );
+ /* Meta data at codec level
+ * The decoder owner set it back to NULL once it has retreived what it needs.
+ * The decoder owner is responsible of its release except when you overwrite it.
+ */
+ vlc_meta_t *p_description;
+
/*
* Owner fields
* XXX You MUST not use them directly.
/*
* Owner fields
* XXX You MUST not use them directly.
#include <vlc_sout.h>
#include <vlc_block.h>
#include <vlc_codec.h>
#include <vlc_sout.h>
#include <vlc_block.h>
#include <vlc_codec.h>
#include <vlc_image.h>
#include <vlc_filter.h>
#include <vlc_image.h>
#include <vlc_filter.h>
if( p_sys->p_decoder->p_module )
module_unneed( p_sys->p_decoder, p_sys->p_decoder->p_module );
if( p_sys->p_decoder->p_module )
module_unneed( p_sys->p_decoder, p_sys->p_decoder->p_module );
+ if( p_sys->p_decoder->p_description )
+ vlc_meta_Delete( p_sys->p_decoder->p_description );
+
vlc_object_detach( p_sys->p_decoder );
vlc_object_release( p_sys->p_decoder );
vlc_object_detach( p_sys->p_decoder );
vlc_object_release( p_sys->p_decoder );
#include <vlc_aout.h>
#include <vlc_vout.h>
#include <vlc_codec.h>
#include <vlc_aout.h>
#include <vlc_vout.h>
#include <vlc_codec.h>
#include <vlc_block.h>
#include <vlc_filter.h>
#include <vlc_osd.h>
#include <vlc_block.h>
#include <vlc_filter.h>
#include <vlc_osd.h>
module_unneed( id->p_decoder, id->p_decoder->p_module );
id->p_decoder->p_module = NULL;
module_unneed( id->p_decoder, id->p_decoder->p_module );
id->p_decoder->p_module = NULL;
+ if( id->p_decoder->p_description )
+ vlc_meta_Delete( id->p_decoder->p_description );
+ id->p_decoder->p_description = NULL;
+
/* Close encoder */
if( id->p_encoder->p_module )
module_unneed( id->p_encoder, id->p_encoder->p_module );
/* Close encoder */
if( id->p_encoder->p_module )
module_unneed( id->p_encoder, id->p_encoder->p_module );
/* Close decoder */
if( id->p_decoder->p_module )
module_unneed( id->p_decoder, id->p_decoder->p_module );
/* Close decoder */
if( id->p_decoder->p_module )
module_unneed( id->p_decoder, id->p_decoder->p_module );
+ if( id->p_decoder->p_description )
+ vlc_meta_Delete( id->p_decoder->p_description );
if( id->p_decoder->p_owner )
{
if( id->p_decoder->p_owner )
{
/* Close decoder */
if( id->p_decoder->p_module )
module_unneed( id->p_decoder, id->p_decoder->p_module );
/* Close decoder */
if( id->p_decoder->p_module )
module_unneed( id->p_decoder, id->p_decoder->p_module );
+ if( id->p_decoder->p_description )
+ vlc_meta_Delete( id->p_decoder->p_description );
/* Close encoder */
if( id->p_encoder->p_module )
/* Close encoder */
if( id->p_encoder->p_module )
p_dec->pf_get_cc = NULL;
p_dec->pf_packetize = NULL;
p_dec->pf_get_cc = NULL;
p_dec->pf_packetize = NULL;
- /* Initialize the decoder fifo */
+ /* Initialize the decoder */
p_dec->p_module = NULL;
memset( &null_es_format, 0, sizeof(es_format_t) );
es_format_Copy( &p_dec->fmt_in, fmt );
es_format_Copy( &p_dec->fmt_out, &null_es_format );
p_dec->p_module = NULL;
memset( &null_es_format, 0, sizeof(es_format_t) );
es_format_Copy( &p_dec->fmt_in, fmt );
es_format_Copy( &p_dec->fmt_out, &null_es_format );
+ p_dec->p_description = NULL;
+
/* Allocate our private structure for the decoder */
p_dec->p_owner = p_owner = malloc( sizeof( decoder_owner_sys_t ) );
if( p_dec->p_owner == NULL )
/* Allocate our private structure for the decoder */
p_dec->p_owner = p_owner = malloc( sizeof( decoder_owner_sys_t ) );
if( p_dec->p_owner == NULL )
es_format_Clean( &p_dec->fmt_in );
es_format_Clean( &p_dec->fmt_out );
es_format_Clean( &p_dec->fmt_in );
es_format_Clean( &p_dec->fmt_out );
+ if( p_dec->p_description )
+ vlc_meta_Delete( p_dec->p_description );
+ es_format_Clean( &p_owner->fmt_description );
if( p_owner->p_packetizer )
{
if( p_owner->p_packetizer )
{
p_owner->p_packetizer->p_module );
es_format_Clean( &p_owner->p_packetizer->fmt_in );
es_format_Clean( &p_owner->p_packetizer->fmt_out );
p_owner->p_packetizer->p_module );
es_format_Clean( &p_owner->p_packetizer->fmt_in );
es_format_Clean( &p_owner->p_packetizer->fmt_out );
+ if( p_owner->p_packetizer->p_description )
+ vlc_meta_Delete( p_owner->p_packetizer->p_description );
vlc_object_detach( p_owner->p_packetizer );
vlc_object_release( p_owner->p_packetizer );
}
vlc_object_detach( p_owner->p_packetizer );
vlc_object_release( p_owner->p_packetizer );
}
- es_format_Clean( &p_owner->fmt_description );
-
vlc_cond_destroy( &p_owner->wait );
vlc_mutex_destroy( &p_owner->lock );
vlc_cond_destroy( &p_owner->wait );
vlc_mutex_destroy( &p_owner->lock );
#include "demux.h"
#include <libvlc.h>
#include <vlc_codec.h>
#include "demux.h"
#include <libvlc.h>
#include <vlc_codec.h>
static bool SkipID3Tag( demux_t * );
static bool SkipAPETag( demux_t *p_demux );
static bool SkipID3Tag( demux_t * );
static bool SkipAPETag( demux_t *p_demux );
if( p_packetizer->p_module )
module_unneed( p_packetizer, p_packetizer->p_module );
es_format_Clean( &p_packetizer->fmt_in );
if( p_packetizer->p_module )
module_unneed( p_packetizer, p_packetizer->p_module );
es_format_Clean( &p_packetizer->fmt_in );
+ if( p_packetizer->p_description )
+ vlc_meta_Delete( p_packetizer->p_description );
vlc_object_release( p_packetizer );
}
vlc_object_release( p_packetizer );
}
#include <vlc_common.h>
#include <vlc_codec.h>
#include <vlc_common.h>
#include <vlc_codec.h>
#include <vlc_filter.h>
#include <vlc_es.h>
#include <vlc_image.h>
#include <vlc_filter.h>
#include <vlc_es.h>
#include <vlc_image.h>
es_format_Clean( &p_dec->fmt_in );
es_format_Clean( &p_dec->fmt_out );
es_format_Clean( &p_dec->fmt_in );
es_format_Clean( &p_dec->fmt_out );
+ if( p_dec->p_description )
+ vlc_meta_Delete( p_dec->p_description );
+
vlc_object_release( p_dec );
p_dec = NULL;
}
vlc_object_release( p_dec );
p_dec = NULL;
}