| 
					
				 | 
			
			
				@@ -17,10 +17,10 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const PLAYM4_NEED_NEET_LOOP = 35; //丢帧需要下个循环 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const PLAYM4_SYS_NOT_SUPPORT = 16; 	// 不支持 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    importScripts('Decoder.js'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    Module.addOnPostRun(function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        postMessage({ 'function': "loaded" }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // importScripts('Decoder.js'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // Module.addOnPostRun(function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //     postMessage({ 'function': "loaded" }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     var iStreamMode = 0;  // 流模式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -47,11 +47,33 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // console.log("nRunTimeModule:"+nRunTimeModule+",nFrameNum:"+nFrameNum+",nErrorCode:"+nErrorCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         postMessage({ 'function': "RunTimeInfoCallBack", 'nRunTimeModule': nRunTimeModule, 'nStrVersion': nStrVersion, 'nFrameTimeStamp': nFrameTimeStamp, 'nFrameNum': nFrameNum, 'nErrorCode': nErrorCode }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	self.JSPlayM4_StreamInfoCallBack = function (nPort, pstStreamInfo, pUser) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let port = nPort; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let user = pUser; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let nSystemformat = Module.HEAP16[pstStreamInfo >> 1]; //封装类型 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let nVideoformat = Module.HEAP16[pstStreamInfo + 2 >> 1];//视频编码类型 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let nAudioformat = Module.HEAP16[pstStreamInfo + 4 >> 1];//音频编码类型 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let nAudiochannels = Module.HEAP16[pstStreamInfo + 6 >> 1]; //音频通道数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let nAudiobitspersample = Module.HEAP32[pstStreamInfo + 8 >> 2];//音频样位率 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let nAudiosamplesrate = Module.HEAP32[pstStreamInfo + 12 >> 2];//音频采样率 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let nAudiobitrate = Module.HEAP32[pstStreamInfo + 16 >> 2];//音频比特率,单位:bit 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//console.log("nSystemformat:" + nSystemformat + ",nVideoformat:" + nVideoformat + ",nAudioformat:" + nAudioformat + ",nAudiochannels:" + nAudiochannels + ",nAudiobitspersample:" + nAudiobitspersample + ",nAudiosamplesrate:" + nAudiosamplesrate + ",nAudiobitrate:" + nAudiobitrate); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        postMessage({ 'function': "StreamInfoCallBack", 'nSystemformat': nSystemformat, 'nVideoformat': nVideoformat, 'nAudioformat': nAudioformat, 'nAudiochannels': nAudiochannels, 'nAudiobitspersample': nAudiobitspersample, 'nAudiosamplesrate': nAudiosamplesrate, 'nAudiobitrate': nAudiobitrate}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     onmessage = function (event) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         var eventData = event.data; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         var res = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         switch (eventData.command) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            case "importScripts": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                const decodebase = eventData.data + "Decoder.js" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                importScripts(decodebase); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                Module.addOnPostRun(function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    postMessage({ 'function': "loaded" }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             case "printLog": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 let downloadFlag = eventData.data; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (downloadFlag === true) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -206,7 +228,7 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 var nBMPHeight = eventData.height; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 var pYUVData = eventData.data; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 var nYUVSize = nBMPWidth * nBMPHeight * 3 / 2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                var oJpegCropRect = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                var oBMPCropRect = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     left: eventData.left, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     top: eventData.top, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     right: eventData.right, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -453,7 +475,7 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 Module._SetLostFrameMode(g_nPort, eventData.data, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             case "SetDemuxModel": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                Module._SetDemuxModel(g_nPort, eventData.nIdemuxType, eventData.bTrue); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                let resSDM = Module._SetDemuxModel(g_nPort, eventData.nIdemuxType, eventData.bTrue); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             case "SkipErrorData": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 Module._SkipErrorData(g_nPort, eventData.bSkip); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -477,6 +499,12 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             case "SetRunTimeInfoCB": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 Module._SetRunTimeInfoCallBackEx(g_nPort, eventData.nModuleType, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			case "SetStreamInfoCB": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                Module._SetStreamInfoCallBack(g_nPort, eventData.nType, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			case "ResetBuffer": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                Module._JSPlayM4_ResetBuffer(g_nPort, eventData.type); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             default: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -489,6 +517,7 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         var iHour = oFrameInfo.hour; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         var iMinute = oFrameInfo.minute; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         var iSecond = oFrameInfo.second; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        var iMiSecond = oFrameInfo.misecond 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (iMonth < 10) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             iMonth = "0" + iMonth; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -505,8 +534,18 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (iSecond < 10) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             iSecond = "0" + iSecond; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return iYear + "-" + iMonth + "-" + iDay + " " + iHour + ":" + iMinute + ":" + iSecond; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let osdTime = {}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        osdTime.year = iYear; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        osdTime.month = iMonth; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        osdTime.week = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        osdTime.day = iDay; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        osdTime.hour = iHour; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        osdTime.minute = iMinute; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        osdTime.second = iSecond; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        osdTime.milliseconds = iMiSecond; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return osdTime; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //return iYear + "-" + iMonth + "-" + iDay + " " + iHour + ":" + iMinute + ":" + iSecond; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // 获取帧数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     function getFrameData() { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -515,7 +554,31 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         var res = Module._GetFrameData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //var res = fun(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (res === PLAYM4_OK) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            var oFrameInfo = Module._GetFrameInfo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var iFrameInfo = Module._GetFrameInfo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let oFrameInfo = {}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            oFrameInfo.frameType = Module.HEAP32[iFrameInfo >> 2]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            oFrameInfo.frameSize = Module.HEAP32[iFrameInfo + 4 >> 2]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            oFrameInfo.width = Module.HEAP32[iFrameInfo + 8 >> 2]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            oFrameInfo.height = Module.HEAP32[iFrameInfo + 12 >> 2]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            oFrameInfo.timeStamp = Module.HEAP32[iFrameInfo + 16 >> 2]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            oFrameInfo.frameRate = Module.HEAP32[iFrameInfo + 20 >> 2]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            oFrameInfo.bitsPerSample = Module.HEAP32[iFrameInfo + 24 >> 2]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            oFrameInfo.samplesPerSec = Module.HEAP32[iFrameInfo + 28 >> 2]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            oFrameInfo.channels = Module.HEAP32[iFrameInfo + 32 >> 2]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            oFrameInfo.frameNum = Module.HEAP32[iFrameInfo + 36 >> 2]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            oFrameInfo.cropLeft = Module.HEAP32[iFrameInfo + 40 >> 2]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            oFrameInfo.cropRight = Module.HEAP32[iFrameInfo + 44 >> 2]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            oFrameInfo.cropTop = Module.HEAP32[iFrameInfo + 48 >> 2]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            oFrameInfo.cropBottom = Module.HEAP32[iFrameInfo + 52 >> 2]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            oFrameInfo.year = Module.HEAP16[iFrameInfo + 64 >> 1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            oFrameInfo.month = Module.HEAP16[iFrameInfo + 66 >> 1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            oFrameInfo.day = Module.HEAP16[iFrameInfo + 68 >> 1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            oFrameInfo.hour = Module.HEAP16[iFrameInfo + 70 >> 1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            oFrameInfo.minute = Module.HEAP16[iFrameInfo + 72 >> 1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            oFrameInfo.second = Module.HEAP16[iFrameInfo + 74 >> 1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            oFrameInfo.misecond = Module.HEAP16[iFrameInfo + 76 >> 1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             switch (oFrameInfo.frameType) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 case AUDIO_TYPE: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     var iSize = oFrameInfo.frameSize; 
			 |