return VLC_ENOMEM;
p_dec->p_sys->b_packetizer = false;
- p_sys->i_pts = 0;
+ p_sys->i_pts = VLC_TS_INVALID;
p_sys->b_decoded_first_keyframe = false;
/* Set output properties */
/* Backup headers as extra data */
uint8_t *p_extra;
- p_dec->fmt_in.p_extra =
- realloc( p_dec->fmt_in.p_extra, p_dec->fmt_in.i_extra +
- oggpacket.bytes + 2 );
+ p_dec->fmt_in.p_extra = xrealloc( p_dec->fmt_in.p_extra,
+ p_dec->fmt_in.i_extra + oggpacket.bytes + 2 );
p_extra = ((uint8_t *)p_dec->fmt_in.p_extra) + p_dec->fmt_in.i_extra;
*(p_extra++) = oggpacket.bytes >> 8;
*(p_extra++) = oggpacket.bytes & 0xFF;
if( p_sys->ti.aspect_denominator && p_sys->ti.aspect_numerator )
{
- p_dec->fmt_out.video.i_aspect = ((int64_t)VOUT_ASPECT_FACTOR) *
- ( p_sys->ti.aspect_numerator * p_dec->fmt_out.video.i_width ) /
- ( p_sys->ti.aspect_denominator * p_dec->fmt_out.video.i_height );
+ p_dec->fmt_out.video.i_sar_num = p_sys->ti.aspect_numerator;
+ p_dec->fmt_out.video.i_sar_den = p_sys->ti.aspect_denominator;
}
else
{
- p_dec->fmt_out.video.i_aspect = VOUT_ASPECT_FACTOR *
- p_sys->ti.frame_width / p_sys->ti.frame_height;
+ p_dec->fmt_out.video.i_sar_num = 1;
+ p_dec->fmt_out.video.i_sar_den = 1;
}
if( p_sys->ti.fps_numerator > 0 && p_sys->ti.fps_denominator > 0 )
else
{
p_dec->fmt_out.i_extra = p_dec->fmt_in.i_extra;
- p_dec->fmt_out.p_extra =
- realloc( p_dec->fmt_out.p_extra, p_dec->fmt_out.i_extra );
+ p_dec->fmt_out.p_extra = xrealloc( p_dec->fmt_out.p_extra,
+ p_dec->fmt_out.i_extra );
memcpy( p_dec->fmt_out.p_extra,
p_dec->fmt_in.p_extra, p_dec->fmt_out.i_extra );
}
}
/* Date management */
- if( p_block->i_pts > 0 && p_block->i_pts != p_sys->i_pts )
+ if( p_block->i_pts > VLC_TS_INVALID && p_block->i_pts != p_sys->i_pts )
{
p_sys->i_pts = p_block->i_pts;
}
p_sys->ti.fps_denominator = p_enc->fmt_in.video.i_frame_rate_base;
}
- if( p_enc->fmt_in.video.i_aspect )
+ if( p_enc->fmt_in.video.i_sar_num > 0 && p_enc->fmt_in.video.i_sar_den > 0 )
{
- uint64_t i_num, i_den;
unsigned i_dst_num, i_dst_den;
-
- i_num = p_enc->fmt_in.video.i_aspect * (int64_t)p_sys->ti.height;
- i_den = VOUT_ASPECT_FACTOR * p_sys->ti.width;
- vlc_ureduce( &i_dst_num, &i_dst_den, i_num, i_den, 0 );
+ vlc_ureduce( &i_dst_num, &i_dst_den,
+ p_enc->fmt_in.video.i_sar_num,
+ p_enc->fmt_in.video.i_sar_den, 0 );
p_sys->ti.aspect_numerator = i_dst_num;
p_sys->ti.aspect_denominator = i_dst_den;
}
else if( i == 1 ) theora_encode_comment( &p_sys->tc, &header );
else if( i == 2 ) theora_encode_tables( &p_sys->td, &header );
- p_enc->fmt_out.p_extra =
- realloc( p_enc->fmt_out.p_extra,
- p_enc->fmt_out.i_extra + header.bytes );
+ p_enc->fmt_out.p_extra = xrealloc( p_enc->fmt_out.p_extra,
+ p_enc->fmt_out.i_extra + header.bytes );
p_extra = p_enc->fmt_out.p_extra;
p_extra += p_enc->fmt_out.i_extra + (i-3)*2;
p_enc->fmt_out.i_extra += header.bytes;