+ /* header extension */
+ if( i_header_ext_size )
+ {
+ bo_add_guid ( &bo, &asf_object_header_extension_guid );
+ bo_addle_u64( &bo, i_header_ext_size );
+ bo_add_guid ( &bo, &asf_guid_reserved_1 );
+ bo_addle_u16( &bo, 6 );
+ bo_addle_u32( &bo, i_header_ext_size - 46 );
+ }
+
+ /* 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 */
+ }