xpra icon
Bug tracker and wiki

Ticket #1816: html5-mpeg1-v2.patch

File html5-mpeg1-v2.patch, 3.3 KB (added by Antoine Martin, 2 years ago)

hook up mpeg1 decoding, not painting yet

  • html5/index.html

     
    2525                <script type="text/javascript" src="js/lib/lz4.js"></script>
    2626                <script type="text/javascript" src="js/lib/forge.js"></script>
    2727
     28                <script type="text/javascript" src="js/lib/jsmpeg.js"></script>
    2829                <script type="text/javascript" src="js/lib/broadway/Decoder.js"></script>
    2930                <script type="text/javascript" src="js/lib/aurora/aurora.js"></script>
    3031                <!--
  • html5/js/Client.js

     
    5252        this.steal = true;
    5353        this.remote_logging = true;
    5454        this.enabled_encodings = [];
    55         this.supported_encodings = ["jpeg", "png", "rgb", "rgb32"];     //"h264", "vp8+webm", "h264+mp4", "mpeg4+mp4"];
     55        //this.supported_encodings = ["jpeg", "png", "rgb", "rgb32", "mpeg1", "mpeg2"]; //"h264", "vp8+webm", "h264+mp4", "mpeg4+mp4"];
     56        this.supported_encodings = ["mpeg1", "mpeg2"];  //"h264", "vp8+webm", "h264+mp4", "mpeg4+mp4"];
    5657        if (Utilities.canUseWebP()) {
    57                 this.supported_encodings.push("webp");
     58                //this.supported_encodings.push("webp");
    5859        }
    5960        this.debug_categories = [];
    6061        this.start_new_session = null;
     
    10471048                //video stuff:
    10481049                "encoding.video_scaling"        : true,
    10491050                "encoding.full_csc_modes"       : {
     1051                        "mpeg1"         : ["YUV420P"],
     1052                        "mpeg2"         : ["YUV420P"],
    10501053                        "h264"          : ["YUV420P"],
    10511054                        "mpeg4+mp4"     : ["YUV420P"],
    10521055                        "h264+mp4"      : ["YUV420P"],
  • html5/js/Window.js

     
    10681068        "vp9"     : "lavender",
    10691069        "mpeg4"   : "black",
    10701070        "scroll"  : "brown",
     1071        "mpeg1"   : "olive",
     1072        "mpeg2"   : "lime",
    10711073        }
    10721074
     1075XpraWindow.prototype.render = function render(Y, Cr, Cb) {
     1076        console.log("render!");
     1077}
     1078//XpraWindow.prototype.resize = function resize(newWidth, newHeight) {
     1079//      console.log("resize!");
     1080//}
     1081
    10731082XpraWindow.prototype.do_paint = function paint(x, y, width, height, coding, img_data, packet_sequence, rowstride, options, decode_callback) {
    10741083        this.debug("draw", "do_paint(", img_data.length, " bytes of ", ("zlib" in options?"zlib ":""), coding, " data ", width, "x", height, " at ", x, ",", y, ") focused=", this.focused);
    10751084        var me = this;
     
    11611170                        }
    11621171                        j.src = "data:image/"+coding+";base64," + Utilities.ArrayBufferToBase64(img_data);
    11631172                }
     1173                else if (coding=="mpeg1" || coding=="mpeg2") {
     1174                        var frame = options["frame"] || 0;
     1175                        var pts = frame;
     1176                        console.log(coding, "frame", frame, "pts=", pts, "img_data=", img_data, "len=", img_data.length);
     1177                        if (frame==0 || this.jsmpeg_decoder==null) {
     1178                                var options = new Object();
     1179                                options.streaming = true;
     1180                                options.decodeFirstFrame = false;
     1181                                this.jsmpeg_decoder = new JSMpeg.Decoder.MPEG1Video(options);
     1182                                this.jsmpeg_decoder.connect(this);      //will call render(Y, Cr, Cb)
     1183                        }
     1184                        this.jsmpeg_decoder.write(pts, img_data);
     1185                        var v = this.jsmpeg_decoder.decode();
     1186                        console.log("decoded:", v);
     1187                        painted();
     1188                }
    11641189                else if (coding=="h264") {
    11651190                        var frame = options["frame"] || 0;
    11661191                        if(frame==0) {