소스 검색

适配mtk卡

huangxiaojing 3 년 전
부모
커밋
54ba8ce058
2개의 변경된 파일81개의 추가작업 그리고 63개의 파일을 삭제
  1. 2 2
      screenIos/WXtrialInterface.html
  2. 79 61
      screenIos/decoder.js

+ 2 - 2
screenIos/WXtrialInterface.html

@@ -629,7 +629,7 @@
       Module._free(inputPtr);
       Module._free(retPtr);
     }
-    var decodeWoker = new Worker('decoder.js');
+    var decodeWoker = new Worker('decoder.js?width=' + videoWidth + '&height=' + videoHeight);
     var myVideo = document.getElementById("playCanvas");
     decodeWoker.onmessage = function (event) {
       var objData = event.data;
@@ -641,7 +641,7 @@
           if (renderCount++ < 4 || !isAudioPlay) {
             return
           }
-          webglPlayer.renderFrame(objData.data, 720, 1280, 720 * 1280, (720 / 2) * (1280 / 2));
+          webglPlayer.renderFrame(objData.data, videoWidth, videoHeight, videoWidth * videoHeight, (videoWidth / 2) * (videoHeight / 2));
           $('.weui-mask_transparent').hide()
           $('.weui-toast').hide()
           $('.loading').hide()

+ 79 - 61
screenIos/decoder.js

@@ -3,86 +3,104 @@ var decodeCount = 0;
 var h264Queue = [];
 var isFirst = true;
 var ret = ''
+var parameters = GetRequest();
+var videoWidth = parameters['width'];
+var videoHeight = parameters['height'];
 self.Module = {
-	onRuntimeInitialized: function () {
-		ret = Module._openDecoder(720, 1280);
-		if (!ret) {
-			isFinish = true;
-		}
-	}
+  onRuntimeInitialized: function () {
+    ret = Module._openDecoder(videoWidth, videoHeight);
+    if (!ret) {
+      isFinish = true;
+    }
+  }
 };
 
 self.importScripts("ffmpeghelper.js");
 
 self.addEventListener('message', function (e) {
-	h264Queue.push(e.data);
+  h264Queue.push(e.data);
 }, false);
 
 function PrintfLog(str) {
-	var curTime = new Date().getTime();
-	var objData = {
-		cmd: 0,
-		data: str,
-		time: curTime
-	};
-	self.postMessage(objData);
+  var curTime = new Date().getTime();
+  var objData = {
+    cmd: 0,
+    data: str,
+    time: curTime
+  };
+  self.postMessage(objData);
 }
 
 setInterval(
-	function () {
-		if (h264Queue.length > 0 && isFinish) {
-			if (isFirst) {
-				PrintfLog("当前队列大小 :" + h264Queue.length);
-				isFirst = false;
-			}
+  function () {
+    if (h264Queue.length > 0 && isFinish) {
+      if (isFirst) {
+        PrintfLog("当前队列大小 :" + h264Queue.length);
+        isFirst = false;
+      }
 
-			if (h264Queue.length > 10 && isFinish) {
-				PrintfLog("解不过来 " + h264Queue.length);
-				return;
-			}
+      if (h264Queue.length > 10 && isFinish) {
+        PrintfLog("解不过来 " + h264Queue.length);
+        return;
+      }
 
-			decodeH264(h264Queue.shift());
-		}
-	}, 1);
+      decodeH264(h264Queue.shift());
+    }
+  }, 1);
 
 
 function decodeH264(data) {
-	var retPtr = Module._malloc(2457600); //接收的数据
-	var inputPtr = Module._malloc(data.length); //输入数据
-
-	for (var i = 0; i < data.length; i++) {
-		Module.HEAPU8[(inputPtr) + i] = data[i]; //转换为堆数据
-	}
-
-	var time = new Date().getTime();
-	var ret = Module._feedData(inputPtr, data.length, retPtr);
-
-	if (ret >= 0) {
-		if (decodeCount > 50) {
-			var curCost = new Date().getTime() - time;
-			PrintfLog("解码耗时 " + curCost + " ms");
-			decodeCount = 0;
-		}
-		decodeCount++;
-	}
-
-	var yuvData = new Uint8Array(2457600);
-	for (var i = 0; i < yuvData.length; i++) {
-		yuvData[i] = Module.HEAPU8[(retPtr) + i];
-	}
-
-	var curTime = new Date().getTime();
-	var objData = {
-		cmd: 1,
-		data: yuvData,
-		time: curTime
-	};
-	self.postMessage(objData);
-	Module._free(inputPtr);
-	Module._free(retPtr);
+  var size = videoWidth * videoHeight *3;
+  var retPtr = Module._malloc(size); //接收的数据
+  var inputPtr = Module._malloc(data.length); //输入数据
+
+  for (var i = 0; i < data.length; i++) {
+    Module.HEAPU8[(inputPtr) + i] = data[i]; //转换为堆数据
+  }
+
+  var time = new Date().getTime();
+  var ret = Module._feedData(inputPtr, data.length, retPtr);
+
+  if (ret >= 0) {
+    if (decodeCount > 50) {
+      var curCost = new Date().getTime() - time;
+      PrintfLog("解码耗时 " + curCost + " ms");
+      decodeCount = 0;
+    }
+    decodeCount++;
+  }
+
+  var yuvData = new Uint8Array(size);
+  for (var i = 0; i < yuvData.length; i++) {
+    yuvData[i] = Module.HEAPU8[(retPtr) + i];
+  }
+
+  var curTime = new Date().getTime();
+  var objData = {
+    cmd: 1,
+    data: yuvData,
+    time: curTime
+  };
+  self.postMessage(objData);
+  Module._free(inputPtr);
+  Module._free(retPtr);
 }
 
 
 function closeDecoder() {
-	Module._destroyDecoder();
+  Module._destroyDecoder();
 }
+
+// 获取url中"?"符后的字串
+function GetRequest() {
+  var url = location.search;
+  var obj = new Object();
+  if (url.indexOf("?") != -1) {
+    var str = url.substring(1);
+    strs = str.split("&");
+    for (var i = 0; i < strs.length; i++) {
+      obj[strs[i].split("=")[0]] = (strs[i].split("=")[1]);
+    }
+  }
+  return obj;
+}