# include "config.h"
#endif
-#include <vlc/vlc.h>
+#include <vlc_common.h>
+#include <vlc_plugin.h>
#include <vlc_block.h>
#include <vlc_codec.h>
#include <vlc_block_helper.h>
static int Open ( vlc_object_t * );
static void Close( vlc_object_t * );
-vlc_module_begin();
- set_category( CAT_SOUT );
- set_subcategory( SUBCAT_SOUT_PACKETIZER );
- set_description( _("MPEG-I/II video packetizer") );
- set_capability( "packetizer", 50 );
- set_callbacks( Open, Close );
+vlc_module_begin ()
+ set_category( CAT_SOUT )
+ set_subcategory( SUBCAT_SOUT_PACKETIZER )
+ set_description( N_("MPEG-I/II video packetizer") )
+ set_capability( "packetizer", 50 )
+ set_callbacks( Open, Close )
add_bool( "packetizer-mpegvideo-sync-iframe", 0, NULL, SYNC_INTRAFRAME_TEXT,
SYNC_INTRAFRAME_LONGTEXT, true );
-vlc_module_end();
+vlc_module_end ()
/*****************************************************************************
* Local prototypes
p_dec->pf_get_cc = GetCc;
p_dec->p_sys = p_sys = malloc( sizeof( decoder_sys_t ) );
+ if( !p_dec->p_sys )
+ return VLC_ENOMEM;
+ memset( p_dec->p_sys, 0, sizeof( decoder_sys_t ) );
/* Misc init */
p_sys->i_state = STATE_NOSYNC;
else if( p_sys->b_frame_slice &&
(p_frag->p_buffer[3] == 0x00 || p_frag->p_buffer[3] > 0xaf) )
{
+ const bool b_eos = p_frag->p_buffer[3] == 0xb7;
+
mtime_t i_duration;
+ if( b_eos )
+ {
+ block_ChainLastAppend( &p_sys->pp_last, p_frag );
+ p_frag = NULL;
+ }
+
p_pic = block_ChainGather( p_sys->p_frame );
+ if( b_eos )
+ p_pic->i_flags |= BLOCK_FLAG_END_OF_SEQUENCE;
+
i_duration = (mtime_t)( 1000000 * p_sys->i_frame_rate_base /
p_sys->i_frame_rate );
p_pic->i_length = p_sys->i_interpolated_dts - p_pic->i_dts;
#if 0
- msg_Dbg( p_dec, "pic: type=%d dts="I64Fd" pts-dts="I64Fd,
+ msg_Dbg( p_dec, "pic: type=%d dts=%"PRId64" pts-dts=%"PRId64,
p_sys->i_picture_type, p_pic->i_dts, p_pic->i_pts - p_pic->i_dts);
#endif
cc_Flush( &p_sys->cc );
}
+ if( !p_frag )
+ return p_pic;
/*
* Check info of current fragment
*/