|
@@ -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);
|
|
@@ -476,6 +498,12 @@
|
|
|
break;
|
|
|
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;
|