{
  "date": "2026-11-09 Asia/Tokyo",
  "question": "Does video watermark repair retain an embedded subtitle track?",
  "browserInputMuxedTextTracks": [],
  "browserInputNote": "Read-only HTML video textTracks empty before export; not used to infer saved-stream loss",
  "box": {
    "x": 192,
    "y": 96,
    "width": 91,
    "height": 38,
    "start": 0,
    "end": 4,
    "zone2": false
  },
  "outputs": [
    {
      "kind": "muxed",
      "file": "result-muxed.webm",
      "bytes": 151044,
      "sha256": "0eacbfc75fa64d7cc32b1d5f740beee5cc3cd1b414818f91d2947ccfd52cc8d5",
      "dimensions": [
        480,
        270
      ],
      "videoFrames": 89,
      "sourceCounters": [
        0,
        1,
        2,
        3,
        4,
        5,
        8,
        9,
        10,
        11,
        12,
        13,
        14,
        15,
        16,
        17,
        18,
        19,
        20,
        21,
        22,
        23,
        24,
        25,
        29,
        31,
        32,
        33,
        34,
        35,
        36,
        37,
        38,
        39,
        40,
        41,
        42,
        43,
        44,
        45,
        46,
        47,
        48,
        49,
        50,
        51,
        52,
        53,
        54,
        55,
        56,
        57,
        58,
        59,
        60,
        61,
        62,
        63,
        64,
        65,
        66,
        67,
        68,
        69,
        70,
        71,
        72,
        73,
        74,
        76,
        77,
        78,
        79,
        80,
        81,
        82,
        83,
        84,
        85,
        86,
        87,
        88,
        89,
        90,
        91,
        92,
        93,
        94,
        95
      ],
      "framePTS": [
        0.0,
        0.049,
        0.082,
        0.146,
        0.172,
        0.23,
        0.341,
        0.382,
        0.415,
        0.467,
        0.495,
        0.55,
        0.576,
        0.626,
        0.664,
        0.711,
        0.744,
        0.796,
        0.827,
        0.877,
        0.911,
        0.96,
        0.993,
        1.044,
        1.255,
        1.311,
        1.344,
        1.394,
        1.428,
        1.477,
        1.511,
        1.56,
        1.597,
        1.645,
        1.677,
        1.727,
        1.761,
        1.813,
        1.844,
        1.893,
        1.926,
        1.977,
        2.012,
        2.062,
        2.094,
        2.15,
        2.176,
        2.226,
        2.261,
        2.311,
        2.345,
        2.394,
        2.426,
        2.479,
        2.512,
        2.561,
        2.593,
        2.643,
        2.676,
        2.727,
        2.761,
        2.814,
        2.844,
        2.894,
        2.927,
        2.978,
        3.01,
        3.061,
        3.093,
        3.196,
        3.241,
        3.26,
        3.311,
        3.344,
        3.394,
        3.427,
        3.476,
        3.514,
        3.561,
        3.594,
        3.643,
        3.676,
        3.727,
        3.761,
        3.813,
        3.844,
        3.894,
        3.927,
        3.976
      ],
      "subtitleStreamCount": 0,
      "subtitleMetadata": [],
      "cueExtractionExit": 4294967274,
      "cueExtractionError": "Stream map '' matches no streams.\r\nTo ignore this, add a trailing '?' to the map.\r\nFailed to set value '0:s:0' for option 'map': Invalid argument\r\nError parsing options for output file output-muxed-cues.srt.\r\nError opening output files: Invalid argument",
      "audioMetadata": [
        "Stream #0:1(eng): Audio: opus, 48000 Hz, stereo, fltp (default)"
      ],
      "audioChannels": 2,
      "audioSamplesPerChannel": 192960,
      "audioRate": 48000,
      "audioSeconds": 4.02,
      "audioNonzero": true,
      "fullDecodeExit": 0,
      "matchedChecks": [
        {
          "requestedSourceCounter": 24,
          "actualSourceCounter": 24,
          "outputFrameIndex": 22,
          "outputPTS": 0.993,
          "captionRegionMeanAbsoluteRGBComponentDifference": 0.6881720430107527,
          "captionRegionFormula": "sum(abs(output RGB - corresponding decoded input RGB)) / (31*290*3)",
          "darkPixelsInput": 0,
          "darkPixelsOutput": 0
        },
        {
          "requestedSourceCounter": 60,
          "actualSourceCounter": 60,
          "outputFrameIndex": 54,
          "outputPTS": 2.512,
          "captionRegionMeanAbsoluteRGBComponentDifference": 0.6881720430107527,
          "captionRegionFormula": "sum(abs(output RGB - corresponding decoded input RGB)) / (31*290*3)",
          "darkPixelsInput": 0,
          "darkPixelsOutput": 0
        }
      ]
    },
    {
      "kind": "burned",
      "file": "result-burned.webm",
      "bytes": 167222,
      "sha256": "55d9a81c1d69c4350a9573a01748520b4525c871853c5c7b8ba612aa7eef1a9f",
      "dimensions": [
        480,
        270
      ],
      "videoFrames": 91,
      "sourceCounters": [
        0,
        1,
        2,
        3,
        4,
        5,
        6,
        7,
        8,
        9,
        10,
        11,
        13,
        14,
        15,
        16,
        17,
        18,
        19,
        20,
        21,
        23,
        25,
        26,
        27,
        28,
        29,
        30,
        31,
        32,
        33,
        34,
        35,
        36,
        37,
        38,
        39,
        40,
        41,
        42,
        43,
        44,
        45,
        48,
        49,
        50,
        51,
        52,
        53,
        54,
        55,
        56,
        57,
        58,
        59,
        60,
        61,
        62,
        63,
        64,
        65,
        66,
        67,
        68,
        69,
        70,
        71,
        72,
        73,
        74,
        75,
        76,
        77,
        78,
        79,
        80,
        81,
        82,
        83,
        84,
        85,
        86,
        87,
        88,
        89,
        90,
        91,
        92,
        93,
        94,
        95
      ],
      "framePTS": [
        0.0,
        0.069,
        0.106,
        0.168,
        0.192,
        0.24,
        0.283,
        0.347,
        0.361,
        0.43,
        0.453,
        0.488,
        0.576,
        0.609,
        0.655,
        0.693,
        0.739,
        0.773,
        0.823,
        0.855,
        0.906,
        1.022,
        1.072,
        1.106,
        1.157,
        1.197,
        1.239,
        1.272,
        1.323,
        1.358,
        1.405,
        1.439,
        1.489,
        1.523,
        1.573,
        1.606,
        1.655,
        1.691,
        1.739,
        1.773,
        1.822,
        1.855,
        1.906,
        2.046,
        2.072,
        2.105,
        2.155,
        2.188,
        2.239,
        2.271,
        2.321,
        2.359,
        2.406,
        2.439,
        2.488,
        2.522,
        2.574,
        2.606,
        2.656,
        2.692,
        2.739,
        2.772,
        2.823,
        2.855,
        2.906,
        2.94,
        2.992,
        3.022,
        3.073,
        3.105,
        3.156,
        3.188,
        3.239,
        3.273,
        3.325,
        3.354,
        3.405,
        3.439,
        3.489,
        3.523,
        3.573,
        3.605,
        3.658,
        3.688,
        3.738,
        3.772,
        3.823,
        3.856,
        3.906,
        3.939,
        3.99
      ],
      "subtitleStreamCount": 0,
      "subtitleMetadata": [],
      "cueExtractionExit": 4294967274,
      "cueExtractionError": "Stream map '' matches no streams.\r\nTo ignore this, add a trailing '?' to the map.\r\nFailed to set value '0:s:0' for option 'map': Invalid argument\r\nError parsing options for output file output-burned-cues.srt.\r\nError opening output files: Invalid argument",
      "audioMetadata": [
        "Stream #0:1(eng): Audio: opus, 48000 Hz, stereo, fltp (default)"
      ],
      "audioChannels": 2,
      "audioSamplesPerChannel": 192960,
      "audioRate": 48000,
      "audioSeconds": 4.02,
      "audioNonzero": true,
      "fullDecodeExit": 0,
      "matchedChecks": [
        {
          "requestedSourceCounter": 24,
          "actualSourceCounter": 23,
          "outputFrameIndex": 21,
          "outputPTS": 1.022,
          "captionRegionMeanAbsoluteRGBComponentDifference": 1.02128290693363,
          "captionRegionFormula": "sum(abs(output RGB - corresponding decoded input RGB)) / (31*290*3)",
          "darkPixelsInput": 966,
          "darkPixelsOutput": 965
        },
        {
          "requestedSourceCounter": 60,
          "actualSourceCounter": 60,
          "outputFrameIndex": 55,
          "outputPTS": 2.522,
          "captionRegionMeanAbsoluteRGBComponentDifference": 1.0406377456433074,
          "captionRegionFormula": "sum(abs(output RGB - corresponding decoded input RGB)) / (31*290*3)",
          "darkPixelsInput": 1166,
          "darkPixelsOutput": 1166
        }
      ]
    }
  ],
  "inputEvidence": {
    "date": "2026-11-09 Asia/Tokyo",
    "status": "INPUT ONLY; actual browser repair not run",
    "question": "Does video watermark repair retain an embedded subtitle track?",
    "sources": [
      {
        "file": "muxed-source.mp4",
        "bytes": 81093,
        "sha256": "14cee7ddeada611d3cd7bfd1f11df7a59224c32b1930e6c57e86b26007cd72c4",
        "dimensions": [
          480,
          270
        ],
        "videoFrames": 96,
        "counterTicks": [
          0,
          1,
          2,
          3,
          4,
          5,
          6,
          7,
          8,
          9,
          10,
          11,
          12,
          13,
          14,
          15,
          16,
          17,
          18,
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          27,
          28,
          29,
          30,
          31,
          32,
          33,
          34,
          35,
          36,
          37,
          38,
          39,
          40,
          41,
          42,
          43,
          44,
          45,
          46,
          47,
          48,
          49,
          50,
          51,
          52,
          53,
          54,
          55,
          56,
          57,
          58,
          59,
          60,
          61,
          62,
          63,
          64,
          65,
          66,
          67,
          68,
          69,
          70,
          71,
          72,
          73,
          74,
          75,
          76,
          77,
          78,
          79,
          80,
          81,
          82,
          83,
          84,
          85,
          86,
          87,
          88,
          89,
          90,
          91,
          92,
          93,
          94,
          95
        ],
        "subtitleStreamCount": 1,
        "subtitleMetadata": [
          "Stream #0:2[0x3](eng): Subtitle: mov_text (tx3g / 0x67337874), 0 kb/s (default)"
        ],
        "extractedCues": "1\n00:00:00,500 --> 00:00:01,500\nKEEP FIRST CUE\n\n2\n00:00:02,000 --> 00:00:03,500\nKEEP SECOND CUE\n\n",
        "cueMeaning": "Own fixture English text, not user quotation",
        "audioSamples": 192512,
        "audioRate": 48000,
        "audioSeconds": 4.010666666666666,
        "fullDecodeExit": 0
      },
      {
        "file": "burned-source.mp4",
        "bytes": 85107,
        "sha256": "094f6045be174f95548085f3f6f6765928a7713e3cd78edcec20cbb2e92bfaf3",
        "dimensions": [
          480,
          270
        ],
        "videoFrames": 96,
        "counterTicks": [
          0,
          1,
          2,
          3,
          4,
          5,
          6,
          7,
          8,
          9,
          10,
          11,
          12,
          13,
          14,
          15,
          16,
          17,
          18,
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          27,
          28,
          29,
          30,
          31,
          32,
          33,
          34,
          35,
          36,
          37,
          38,
          39,
          40,
          41,
          42,
          43,
          44,
          45,
          46,
          47,
          48,
          49,
          50,
          51,
          52,
          53,
          54,
          55,
          56,
          57,
          58,
          59,
          60,
          61,
          62,
          63,
          64,
          65,
          66,
          67,
          68,
          69,
          70,
          71,
          72,
          73,
          74,
          75,
          76,
          77,
          78,
          79,
          80,
          81,
          82,
          83,
          84,
          85,
          86,
          87,
          88,
          89,
          90,
          91,
          92,
          93,
          94,
          95
        ],
        "subtitleStreamCount": 0,
        "subtitleMetadata": [],
        "extractedCues": null,
        "cueMeaning": "Own fixture English text, not user quotation",
        "audioSamples": 192512,
        "audioRate": 48000,
        "audioSeconds": 4.010666666666666,
        "fullDecodeExit": 0
      }
    ],
    "cueRegionPixelDifferenceAtSourceFrame24": 3740,
    "note": "Muxed cue text/timing verified by actual extraction; burned control has no subtitle stream and own cue drawn into pixels. Browser input rendering is a separate observation; no output loss inferred yet.",
    "plannedBox": {
      "x": 192,
      "y": 96,
      "width": 91,
      "height": 38,
      "from": 0,
      "to": 4,
      "zone2": false
    }
  },
  "scope": "Two owned fixtures on this browser. Saved subtitle streams measured directly; burned-in pixels are not selectable cues."
}