+ /* metadata object (part of header extension) */
+ if( i_cm_size )
+ {
+ int64_t i_num, i_den;
+ unsigned int i_dst_num, i_dst_den;
+
+ for( i = 0; i < p_sys->i_track; i++ )
+ if( p_sys->track[i].i_cat == VIDEO_ES ) break;
+
+ i_num = p_sys->track[i].fmt.video.i_aspect *
+ (int64_t)p_sys->track[i].fmt.video.i_height;
+ i_den = VOUT_ASPECT_FACTOR * p_sys->track[i].fmt.video.i_width;
+ vlc_ureduce( &i_dst_num, &i_dst_den, i_num, i_den, 0 );
+
+ msg_Dbg( p_mux, "pixel aspect-ratio: %i/%i", i_dst_num, i_dst_den );
+
+ bo_add_guid ( &bo, &asf_object_metadata_guid );
+ bo_addle_u64( &bo, i_cm_size );
+ bo_addle_u16( &bo, 2 ); /* description records count */
+ /* 1st description record */
+ bo_addle_u16( &bo, 0 ); /* reserved */
+ bo_addle_u16( &bo, i + 1 ); /* stream number (0 for the whole file) */
+ bo_addle_u16( &bo, 2 * sizeof("AspectRatioX") ); /* name length */
+ bo_addle_u16( &bo, 0x3 /* DWORD */ ); /* data type */
+ bo_addle_u32( &bo, 4 ); /* data length */
+ bo_addle_str16_nosize( &bo, "AspectRatioX" );
+ bo_addle_u32( &bo, i_dst_num ); /* data */
+ /* 2nd description record */
+ bo_addle_u16( &bo, 0 ); /* reserved */
+ bo_addle_u16( &bo, i + 1 ); /* stream number (0 for the whole file) */
+ bo_addle_u16( &bo, 2 * sizeof("AspectRatioY") ); /* name length */
+ bo_addle_u16( &bo, 0x3 /* DWORD */ ); /* data type */
+ bo_addle_u32( &bo, 4 ); /* data length */
+ bo_addle_str16_nosize( &bo, "AspectRatioY" );
+ bo_addle_u32( &bo, i_dst_den ); /* data */
+ }
+
+ /* content description header */
+ if( i_cd_size > 0 )
+ {
+ bo_add_guid ( &bo, &asf_object_content_description_guid );
+ bo_addle_u64( &bo, i_cd_size );
+ bo_addle_u16( &bo, 2 * strlen( p_sys->psz_title ) + 2 );
+ bo_addle_u16( &bo, 2 * strlen( p_sys->psz_author ) + 2 );
+ bo_addle_u16( &bo, 2 * strlen( p_sys->psz_copyright ) + 2 );
+ bo_addle_u16( &bo, 2 * strlen( p_sys->psz_comment ) + 2 );
+ bo_addle_u16( &bo, 2 * strlen( p_sys->psz_rating ) + 2 );
+
+ bo_addle_str16_nosize( &bo, p_sys->psz_title );
+ bo_addle_str16_nosize( &bo, p_sys->psz_author );
+ bo_addle_str16_nosize( &bo, p_sys->psz_copyright );
+ bo_addle_str16_nosize( &bo, p_sys->psz_comment );
+ bo_addle_str16_nosize( &bo, p_sys->psz_rating );
+ }