+var X_Audio_constructor = 3.1 <= X_UA[ 'Safari' ] && X_UA[ 'Safari' ] < 4 ?
+ function( s, a ){
+ //a = document.createElement( 'audio' );
+ //a.src = s;
+ //a.load();
+ return a;
+ } :
+ // Android1.6 + MobileOpera12 HTMLAudio はいるが呼ぶとクラッシュする
+ !( X_UA[ 'Android' ] < 2 ) ?
+ window[ 'Audio' ] || window.HTMLAudioElement : null,
+
+ // Blink5 Opera32 Win8 は HTMLAudio が壊れている、WebAudio は mp3 がデコードに失敗、ogg が動作
+ X_Audio_blinkOperaFix = X_UA[ 'BlinkOpera' ] && X_UA[ 'Windows' ],
+
+ X_Audio_codecs;
+
+if( X_Audio_constructor ){
+ //http://himaxoff.blog111.fc2.com/blog-entry-97.html
+ //引数なしで new Audio() とすると、Operaでエラーになるそうなので注意。
+ X_TEMP.rawAudio = new X_Audio_constructor( '' );
+
+ // https://html5experts.jp/miyuki-baba/3766/
+ // TODO Chrome for Android31 で HE-AAC が低速再生されるバグ
+ // TODO Android4 標準ブラウザで ogg のシークが正しくない!
+ if( X_TEMP.rawAudio.canPlayType ){
+ X_Audio_codecs = {
+ 'mp3' : X_TEMP.rawAudio.canPlayType('audio/mpeg'),
+ 'opus' : X_TEMP.rawAudio.canPlayType('audio/ogg; codecs="opus"'),
+ 'ogg' : X_TEMP.rawAudio.canPlayType('audio/ogg; codecs="vorbis"'),
+ 'wav' : X_TEMP.rawAudio.canPlayType('audio/wav; codecs="1"'),
+ 'aac' : X_TEMP.rawAudio.canPlayType('audio/aac'),
+ 'm4a' : X_TEMP.rawAudio.canPlayType('audio/x-m4a') + X_TEMP.rawAudio.canPlayType('audio/m4a') + X_TEMP.rawAudio.canPlayType('audio/aac'),
+ 'mp4' : X_TEMP.rawAudio.canPlayType('audio/x-mp4') + X_TEMP.rawAudio.canPlayType('audio/mp4') + X_TEMP.rawAudio.canPlayType('audio/aac'),
+ 'weba' : X_TEMP.rawAudio.canPlayType('audio/webm; codecs="vorbis"')
+ };
+ (function( X_Audio_codecs, k, v ){
+ for( k in X_Audio_codecs ){
+ //if( X_EMPTY_OBJECT[ k ] ) continue;
+ v = X_Audio_codecs[ k ];
+ v = v && !!( v.split( 'no' ).join( '' ) );
+ if( v ){
+ console.log( k + ' ' + X_Audio_codecs[ k ] );
+ X_Audio_codecs[ k ] = true;
+ } else {
+ delete X_Audio_codecs[ k ];
+ };
+ };
+ if( X_Audio_blinkOperaFix ) delete X_Audio_codecs[ 'mp3' ];
+ })( X_Audio_codecs );
+ } else {
+ // iOS3.2.3
+ X_Audio_codecs = {
+ 'mp3' : X_UA[ 'IE' ] || X_UA[ 'Chrome' ] || ( X_UA[ 'Windows' ] && X_UA[ 'Safari' ] ),
+ 'ogg' : 5 <= X_UA[ 'Gecko' ] || X_UA[ 'Chrome' ] || X_UA[ 'Opera' ] ,
+ 'wav' : X_UA[ 'Gecko' ] || X_UA[ 'Opera' ] || ( X_UA[ 'Windows' ] && X_UA[ 'Safari' ] ),
+ 'aac' : X_UA[ 'IE' ] || X_UA[ 'WebKit' ],
+ 'm4a' : X_UA[ 'IE' ] || X_UA[ 'WebKit' ],
+ 'mp4' : X_UA[ 'IE' ] || X_UA[ 'WebKit' ],
+ 'weba' : 2 <= X_UA[ 'Gecko' ] || 10.6 <= X_UA[ 'Opera' ] // firefox4+(Gecko2+)
+ };
+ (function( X_Audio_codecs, k ){
+ for( k in X_Audio_codecs ){
+ //if( X_EMPTY_OBJECT[ k ] ) continue;
+ if( X_Audio_codecs[ k ] ){
+ console.log( k + ' ' + X_Audio_codecs[ k ] );
+ X_Audio_codecs[ k ] = true;
+ } else {
+ delete X_Audio_codecs[ k ];
+ };
+ };
+ })( X_Audio_codecs );
+ };
+
+ if( X_Audio_blinkOperaFix ){
+ X_Audio_constructor = null;
+ delete X_TEMP.rawAudio;
+ };
+};
+