# define LOADER
#else
# include <objbase.h>
+# include <vlc_charset.h>
#endif
#ifdef LOADER
set_capability( "decoder", 1 )
set_callbacks( DecoderOpen, DecoderClose )
set_category( CAT_INPUT )
- set_subcategory( SUBCAT_INPUT_SCODEC )
+ set_subcategory( SUBCAT_INPUT_VCODEC )
# define ENC_CFG_PREFIX "sout-dmo-"
add_submodule ()
p_dec->fmt_out.video.i_bits_per_pixel = i_bpp;
/* If an aspect-ratio was specified in the input format then force it */
- if( p_dec->fmt_in.video.i_aspect )
+ if( p_dec->fmt_in.video.i_sar_num > 0 &&
+ p_dec->fmt_in.video.i_sar_den > 0 )
{
- p_dec->fmt_out.video.i_aspect = p_dec->fmt_in.video.i_aspect;
+ p_dec->fmt_out.video.i_sar_num = p_dec->fmt_in.video.i_sar_num;
+ p_dec->fmt_out.video.i_sar_den = p_dec->fmt_in.video.i_sar_den;
}
else
{
- p_dec->fmt_out.video.i_aspect = VOUT_ASPECT_FACTOR *
- p_dec->fmt_out.video.i_width / p_dec->fmt_out.video.i_height;
+ p_dec->fmt_out.video.i_sar_num = 1;
+ p_dec->fmt_out.video.i_sar_den = 1;
}
p_bih = &p_vih->bmiHeader;
while( ( S_OK == p_enum_dmo->vt->Next( p_enum_dmo, 1, &clsid_dmo,
&psz_dmo_name, &i_dummy /* NULL doesn't work */ ) ) )
{
- char psz_temp[MAX_PATH];
- wcstombs( psz_temp, psz_dmo_name, MAX_PATH );
+ char *psz_temp = FromWide( psz_dmo_name );
msg_Dbg( p_this, "found DMO: %s", psz_temp );
CoTaskMemFree( psz_dmo_name );
&IID_IMediaObject, (void **)pp_dmo ) )
{
msg_Warn( p_this, "can't create DMO: %s", psz_temp );
+ free( psz_temp );
*pp_dmo = 0;
}
- else break;
+ else
+ {
+ free( psz_temp );
+ break;
+ }
}
p_enum_dmo->vt->Release( (IUnknown *)p_enum_dmo );
p_block = *pp_block;
/* Won't work with streams with B-frames, but do we have any ? */
- if( p_block && p_block->i_pts <= 0 ) p_block->i_pts = p_block->i_dts;
+ if( p_block && p_block->i_pts <= VLC_TS_INVALID )
+ p_block->i_pts = p_block->i_dts;
/* Date management */
- if( p_block && p_block->i_pts > 0 &&
+ if( p_block && p_block->i_pts > VLC_TS_INVALID &&
p_block->i_pts != date_Get( &p_sys->end_date ) )
{
date_Set( &p_sys->end_date, p_block->i_pts );
block_out.p_buffer, block_out.i_buffer );
/* Date management */
p_aout_buffer->i_pts = date_Get( &p_sys->end_date );
- p_aout_buffer->end_date =
- date_Increment( &p_sys->end_date, i_samples );
+ p_aout_buffer->i_length =
+ date_Increment( &p_sys->end_date, i_samples )
+ - p_aout_buffer->i_pts;
}
p_out->vt->Release( (IUnknown *)p_out );
else
{
aout_buffer_t *p_aout_buffer = (aout_buffer_t *)p_data;
- p_block_in = block_New( p_enc, p_aout_buffer->i_nb_bytes );
+ p_block_in = block_New( p_enc, p_aout_buffer->i_buffer );
memcpy( p_block_in->p_buffer, p_aout_buffer->p_buffer,
p_block_in->i_buffer );