@yume-chan/scrcpy-decoder-webcodecs 3.0.0-beta.0 → 3.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,4 +3,6 @@ export * from "./h264.js";
3
3
  export * from "./h265.js";
4
4
  export * from "./h26x.js";
5
5
  export * from "./type.js";
6
+ export * from "./vp8.js";
7
+ export * from "./vp9.js";
6
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/video/codec/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/video/codec/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC"}
@@ -3,4 +3,6 @@ export * from "./h264.js";
3
3
  export * from "./h265.js";
4
4
  export * from "./h26x.js";
5
5
  export * from "./type.js";
6
+ export * from "./vp8.js";
7
+ export * from "./vp9.js";
6
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/video/codec/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/video/codec/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { TransformStream } from "@yume-chan/stream-extra";
2
+ import type { CodecTransformStream } from "./type.js";
3
+ export declare class Vp8TransformStream extends TransformStream<CodecTransformStream.Input, CodecTransformStream.Output> implements CodecTransformStream {
4
+ #private;
5
+ constructor();
6
+ }
7
+ //# sourceMappingURL=vp8.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vp8.d.ts","sourceRoot":"","sources":["../../../src/video/codec/vp8.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAEtD,qBAAa,kBACT,SAAQ,eAAe,CACnB,oBAAoB,CAAC,KAAK,EAC1B,oBAAoB,CAAC,MAAM,CAE/B,YAAW,oBAAoB;;;CAyClC"}
@@ -0,0 +1,36 @@
1
+ import { Vp8 } from "@yume-chan/media-codec";
2
+ import { TransformStream } from "@yume-chan/stream-extra";
3
+ export class Vp8TransformStream extends TransformStream {
4
+ #width = 0;
5
+ #height = 0;
6
+ constructor() {
7
+ super({
8
+ transform: (packet, controller) => {
9
+ if (packet.type === "configuration") {
10
+ // VP8 doesn't have configuration packet
11
+ return;
12
+ }
13
+ if (packet.keyframe !== false) {
14
+ const { key_frame, width, height } = Vp8.parseFrameTag(packet.data);
15
+ packet.keyframe = key_frame;
16
+ if (key_frame &&
17
+ (width !== this.#width || height !== this.#height)) {
18
+ controller.enqueue({
19
+ codec: "vp8",
20
+ codedWidth: width,
21
+ codedHeight: height,
22
+ });
23
+ this.#width = width;
24
+ this.#height = height;
25
+ }
26
+ }
27
+ controller.enqueue({
28
+ type: packet.keyframe ? "key" : "delta",
29
+ timestamp: packet.timestamp,
30
+ data: packet.data,
31
+ });
32
+ },
33
+ });
34
+ }
35
+ }
36
+ //# sourceMappingURL=vp8.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vp8.js","sourceRoot":"","sources":["../../../src/video/codec/vp8.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAI1D,MAAM,OAAO,kBACT,SAAQ,eAGP;IAGD,MAAM,GAAG,CAAC,CAAC;IACX,OAAO,GAAG,CAAC,CAAC;IAEZ;QACI,KAAK,CAAC;YACF,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE;gBAC9B,IAAI,MAAM,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;oBAClC,wCAAwC;oBACxC,OAAO;gBACX,CAAC;gBAED,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;oBAC5B,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,aAAa,CAClD,MAAM,CAAC,IAAI,CACd,CAAC;oBACF,MAAM,CAAC,QAAQ,GAAG,SAAS,CAAC;oBAC5B,IACI,SAAS;wBACT,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,IAAI,CAAC,OAAO,CAAC,EACpD,CAAC;wBACC,UAAU,CAAC,OAAO,CAAC;4BACf,KAAK,EAAE,KAAK;4BACZ,UAAU,EAAE,KAAK;4BACjB,WAAW,EAAE,MAAM;yBACtB,CAAC,CAAC;wBAEH,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;wBACpB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;oBAC1B,CAAC;gBACL,CAAC;gBAED,UAAU,CAAC,OAAO,CAAC;oBACf,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO;oBACvC,SAAS,EAAE,MAAM,CAAC,SAAS;oBAC3B,IAAI,EAAE,MAAM,CAAC,IAAI;iBACpB,CAAC,CAAC;YACP,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;CACJ"}
@@ -0,0 +1,7 @@
1
+ import { TransformStream } from "@yume-chan/stream-extra";
2
+ import type { CodecTransformStream } from "./type.js";
3
+ export declare class Vp9TransformStream extends TransformStream<CodecTransformStream.Input, CodecTransformStream.Output> implements CodecTransformStream {
4
+ #private;
5
+ constructor();
6
+ }
7
+ //# sourceMappingURL=vp9.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vp9.d.ts","sourceRoot":"","sources":["../../../src/video/codec/vp9.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAEtD,qBAAa,kBACT,SAAQ,eAAe,CACnB,oBAAoB,CAAC,KAAK,EAC1B,oBAAoB,CAAC,MAAM,CAE/B,YAAW,oBAAoB;;;CA4ClC"}
@@ -0,0 +1,40 @@
1
+ import { decimalTwoDigits, Vp9 } from "@yume-chan/media-codec";
2
+ import { TransformStream } from "@yume-chan/stream-extra";
3
+ export class Vp9TransformStream extends TransformStream {
4
+ #width = 0;
5
+ #height = 0;
6
+ constructor() {
7
+ super({
8
+ transform: (packet, controller) => {
9
+ if (packet.type === "configuration") {
10
+ // VP9 doesn't have configuration packet
11
+ return;
12
+ }
13
+ const { frame_type, Profile, color_config, render_size } = Vp9.parseFrameHeader(packet.data);
14
+ packet.keyframe = frame_type === Vp9.FrameTypeKeyFrame;
15
+ if (color_config &&
16
+ (render_size.RenderWidth !== this.#width ||
17
+ render_size.RenderHeight !== this.#height)) {
18
+ controller.enqueue({
19
+ codec: [
20
+ "vp09",
21
+ decimalTwoDigits(Profile),
22
+ "10", // level, which doesn't exist in bitstream
23
+ decimalTwoDigits(color_config.BitDepth),
24
+ ].join("."),
25
+ codedWidth: render_size.RenderWidth,
26
+ codedHeight: render_size.RenderHeight,
27
+ });
28
+ this.#width = render_size.RenderWidth;
29
+ this.#height = render_size.RenderHeight;
30
+ }
31
+ controller.enqueue({
32
+ type: packet.keyframe ? "key" : "delta",
33
+ timestamp: packet.timestamp,
34
+ data: packet.data,
35
+ });
36
+ },
37
+ });
38
+ }
39
+ }
40
+ //# sourceMappingURL=vp9.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vp9.js","sourceRoot":"","sources":["../../../src/video/codec/vp9.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAI1D,MAAM,OAAO,kBACT,SAAQ,eAGP;IAGD,MAAM,GAAG,CAAC,CAAC;IACX,OAAO,GAAG,CAAC,CAAC;IAEZ;QACI,KAAK,CAAC;YACF,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE;gBAC9B,IAAI,MAAM,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;oBAClC,wCAAwC;oBACxC,OAAO;gBACX,CAAC;gBAED,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,GACpD,GAAG,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACtC,MAAM,CAAC,QAAQ,GAAG,UAAU,KAAK,GAAG,CAAC,iBAAiB,CAAC;gBACvD,IACI,YAAY;oBACZ,CAAC,WAAW,CAAC,WAAW,KAAK,IAAI,CAAC,MAAM;wBACpC,WAAW,CAAC,YAAY,KAAK,IAAI,CAAC,OAAO,CAAC,EAChD,CAAC;oBACC,UAAU,CAAC,OAAO,CAAC;wBACf,KAAK,EAAE;4BACH,MAAM;4BACN,gBAAgB,CAAC,OAAO,CAAC;4BACzB,IAAI,EAAE,0CAA0C;4BAChD,gBAAgB,CAAC,YAAY,CAAC,QAAQ,CAAC;yBAC1C,CAAC,IAAI,CAAC,GAAG,CAAC;wBACX,UAAU,EAAE,WAAW,CAAC,WAAW;wBACnC,WAAW,EAAE,WAAW,CAAC,YAAY;qBACxC,CAAC,CAAC;oBAEH,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,WAAW,CAAC;oBACtC,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC,YAAY,CAAC;gBAC5C,CAAC;gBAED,UAAU,CAAC,OAAO,CAAC;oBACf,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO;oBACvC,SAAS,EAAE,MAAM,CAAC,SAAS;oBAC3B,IAAI,EAAE,MAAM,CAAC,IAAI;iBACpB,CAAC,CAAC;YACP,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;CACJ"}
@@ -10,13 +10,10 @@ export declare class WebCodecsVideoDecoder implements ScrcpyVideoDecoder {
10
10
  get rendererType(): ScrcpyVideoDecoder.RendererType;
11
11
  get onRendererTypeChange(): import("@yume-chan/event").Event<ScrcpyVideoDecoder.RendererType> | undefined;
12
12
  get paused(): boolean;
13
- get writable(): import("@yume-chan/stream-extra").WritableStream<import("@yume-chan/scrcpy").ScrcpyMediaStreamPacket>;
13
+ get writable(): import("@yume-chan/stream-extra").WritableStream<import("@yume-chan/scrcpy").ScrcpyVideoStreamPacket>;
14
14
  get width(): number;
15
15
  get height(): number;
16
- get sizeChanged(): import("@yume-chan/event").Event<{
17
- width: number;
18
- height: number;
19
- }>;
16
+ get sizeChanged(): import("@yume-chan/event").Event<import("@yume-chan/scrcpy").ScrcpyVideoSizeChangedEvent>;
20
17
  get type(): "software" | "hardware";
21
18
  get onTypeChange(): import("@yume-chan/event").Event<"software" | "hardware">;
22
19
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"decoder.d.ts","sourceRoot":"","sources":["../../src/video/decoder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAuB,MAAM,mBAAmB,CAAC;AAC5E,OAAO,KAAK,EACR,kBAAkB,EAClB,4BAA4B,EAC/B,MAAM,kCAAkC,CAAC;AAU1C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAQ5D,qBAAa,qBAAsB,YAAW,kBAAkB;;IAC5D,MAAM,KAAK,WAAW,YAErB;IAED,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,4BAA4B,CAAC,CAKpE;IAKN,IAAI,KAAK,uBAER;IAGD,IAAI,QAAQ,uBAEX;IACD,IAAI,YAAY,oCAEf;IACD,IAAI,oBAAoB,kFAEvB;IAOD,IAAI,MAAM,YAET;IACD,IAAI,QAAQ,0GAEX;IAOD,IAAI,KAAK,WAER;IACD,IAAI,MAAM,WAET;IACD,IAAI,WAAW;;;OAEd;IAOD,IAAI,IAAI,4BAIP;IAKD,IAAI,YAAY,8DAEf;IACD;;OAEG;IACH,IAAI,eAAe,WAElB;IACD;;OAEG;IACH,IAAI,SAAS,gDAEZ;IACD;;OAEG;IACH,IAAI,iBAAiB,WAEpB;IACD;;OAEG;IACH,IAAI,aAAa,WAEhB;IACD;;OAEG;IACH,IAAI,qBAAqB,WAExB;IAKD;;OAEG;IACH,IAAI,eAAe,WAElB;IAKD;;OAEG;IACH,IAAI,cAAc,WAEjB;IACD;;;;;;;;;OASG;IACH,IAAI,eAAe,WAElB;IACD;;;OAGG;IACH,IAAI,sBAAsB,WAEzB;IAID;;OAEG;gBACS,EACR,KAAK,EACL,QAAmC,EACnC,oBAAsC,EACtC,kBAAyB,GAC5B,EAAE,qBAAqB,CAAC,OAAO;IAgDhC,KAAK,IAAI,IAAI;IAIb,MAAM,IAAI,SAAS;IAInB,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,SAAS;IAItD,QAAQ,CAAC,OAAO,CAAC,EAAE,kBAAkB;IA2B3C,OAAO,IAAI,SAAS;CAUvB;AAED,yBAAiB,qBAAqB,CAAC;IACnC,UAAiB,OAAQ,SAAQ,IAAI,CACjC,kBAAkB,EAClB,sBAAsB,GAAG,oBAAoB,CAChD;QACG;;WAEG;QACH,KAAK,EAAE,kBAAkB,CAAC;QAE1B,QAAQ,CAAC,EAAE,kBAAkB,GAAG,SAAS,CAAC;KAC7C;CACJ"}
1
+ {"version":3,"file":"decoder.d.ts","sourceRoot":"","sources":["../../src/video/decoder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAuB,MAAM,mBAAmB,CAAC;AAC5E,OAAO,KAAK,EACR,kBAAkB,EAClB,4BAA4B,EAC/B,MAAM,kCAAkC,CAAC;AAY1C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAQ5D,qBAAa,qBAAsB,YAAW,kBAAkB;;IAC5D,MAAM,KAAK,WAAW,YAErB;IAED,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,4BAA4B,CAAC,CAKpE;IAKN,IAAI,KAAK,uBAER;IAGD,IAAI,QAAQ,uBAEX;IACD,IAAI,YAAY,oCAEf;IACD,IAAI,oBAAoB,kFAEvB;IAOD,IAAI,MAAM,YAET;IACD,IAAI,QAAQ,0GAEX;IAOD,IAAI,KAAK,WAER;IACD,IAAI,MAAM,WAET;IACD,IAAI,WAAW,8FAEd;IAOD,IAAI,IAAI,4BAIP;IAKD,IAAI,YAAY,8DAEf;IACD;;OAEG;IACH,IAAI,eAAe,WAElB;IACD;;OAEG;IACH,IAAI,SAAS,gDAEZ;IACD;;OAEG;IACH,IAAI,iBAAiB,WAEpB;IACD;;OAEG;IACH,IAAI,aAAa,WAEhB;IACD;;OAEG;IACH,IAAI,qBAAqB,WAExB;IAKD;;OAEG;IACH,IAAI,eAAe,WAElB;IAKD;;OAEG;IACH,IAAI,cAAc,WAEjB;IACD;;;;;;;;;OASG;IACH,IAAI,eAAe,WAElB;IACD;;;OAGG;IACH,IAAI,sBAAsB,WAEzB;IAID;;OAEG;gBACS,EACR,KAAK,EACL,QAAmC,EACnC,oBAAsC,EACtC,kBAAyB,GAC5B,EAAE,qBAAqB,CAAC,OAAO;IAsDhC,KAAK,IAAI,IAAI;IAIb,MAAM,IAAI,SAAS;IAInB,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,SAAS;IAItD,QAAQ,CAAC,OAAO,CAAC,EAAE,kBAAkB;IA2B3C,OAAO,IAAI,SAAS;CAUvB;AAED,yBAAiB,qBAAqB,CAAC;IACnC,UAAiB,OAAQ,SAAQ,IAAI,CACjC,kBAAkB,EAClB,sBAAsB,GAAG,oBAAoB,CAChD;QACG;;WAEG;QACH,KAAK,EAAE,kBAAkB,CAAC;QAE1B,QAAQ,CAAC,EAAE,kBAAkB,GAAG,SAAS,CAAC;KAC7C;CACJ"}
@@ -2,7 +2,7 @@ import { pipe } from "@yume-chan/event";
2
2
  import { ScrcpyVideoCodecId, ScrcpyVideoSizeImpl } from "@yume-chan/scrcpy";
3
3
  import { ScrcpyVideoDecoderPauseController } from "@yume-chan/scrcpy-decoder-shared";
4
4
  import { InspectStream } from "@yume-chan/stream-extra";
5
- import { Av1TransformStream, H264TransformStream, H265TransformStream, } from "./codec/index.js";
5
+ import { Av1TransformStream, H264TransformStream, H265TransformStream, Vp8TransformStream, Vp9TransformStream, } from "./codec/index.js";
6
6
  import { AutoCanvasRenderer, BitmapVideoFrameRenderer, RendererController, } from "./render/index.js";
7
7
  import { TimestampTransforms, VideoDecoderStream } from "./utils/index.js";
8
8
  export class WebCodecsVideoDecoder {
@@ -143,12 +143,18 @@ export class WebCodecsVideoDecoder {
143
143
  case ScrcpyVideoCodecId.H265:
144
144
  codecTransform = new H265TransformStream();
145
145
  break;
146
- case ScrcpyVideoCodecId.AV1:
146
+ case ScrcpyVideoCodecId.Av1:
147
147
  codecTransform = new Av1TransformStream();
148
148
  break;
149
+ case ScrcpyVideoCodecId.Vp8:
150
+ codecTransform = new Vp8TransformStream();
151
+ break;
152
+ case ScrcpyVideoCodecId.Vp9:
153
+ codecTransform = new Vp9TransformStream();
154
+ break;
149
155
  default:
150
156
  // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
151
- throw new Error(`Unsupported codec: ${this.#codec}`);
157
+ throw new Error(`Unknown codec: ${this.#codec}`);
152
158
  }
153
159
  void this.#pause.readable
154
160
  // Add timestamp
@@ -1 +1 @@
1
- {"version":3,"file":"decoder.js","sourceRoot":"","sources":["../../src/video/decoder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decoder.js","sourceRoot":"","sources":["../../src/video/decoder.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"video-decoder-stream.d.ts","sourceRoot":"","sources":["../../../src/video/utils/video-decoder-stream.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,6CAA6C,EAAE,MAAM,kCAAkC,CAAC;AAEtG,OAAO,EAAiB,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAEzE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAyE7D,qBAAa,kBACT,SAAQ,eAAe,CACnB,oBAAoB,CAAC,MAAM,GAAG,oBAAoB,CAAC,UAAU,EAC7D,UAAU,CAEd,YAAW,6CAA6C;;IAYxD,IAAI,oBAAoB,yBAEvB;IACD,IAAI,4BAA4B,2DAE/B;IAED;;OAEG;IACH,IAAI,eAAe,WAMlB;IAGD;;OAEG;IACH,IAAI,SAAS,gDAEZ;IAGD;;OAEG;IACH,IAAI,aAAa,WAEhB;IACD;;OAEG;IACH,IAAI,qBAAqB,WAExB;IACD;;OAEG;IACH,IAAI,iBAAiB,WAEpB;;CA0QJ"}
1
+ {"version":3,"file":"video-decoder-stream.d.ts","sourceRoot":"","sources":["../../../src/video/utils/video-decoder-stream.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,6CAA6C,EAAE,MAAM,kCAAkC,CAAC;AAEtG,OAAO,EAAiB,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAEzE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAyE7D,qBAAa,kBACT,SAAQ,eAAe,CACnB,oBAAoB,CAAC,MAAM,GAAG,oBAAoB,CAAC,UAAU,EAC7D,UAAU,CAEd,YAAW,6CAA6C;;IAYxD,IAAI,oBAAoB,yBAEvB;IACD,IAAI,4BAA4B,2DAE/B;IAED;;OAEG;IACH,IAAI,eAAe,WAMlB;IAGD;;OAEG;IACH,IAAI,SAAS,gDAEZ;IAGD;;OAEG;IACH,IAAI,aAAa,WAEhB;IACD;;OAEG;IACH,IAAI,qBAAqB,WAExB;IACD;;OAEG;IACH,IAAI,iBAAiB,WAEpB;;CAiRJ"}
@@ -203,7 +203,8 @@ export class VideoDecoderStream extends TransformStream {
203
203
  frame.close();
204
204
  }
205
205
  },
206
- error: (error) => {
206
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises
207
+ error: async (error) => {
207
208
  if (error.name === "QuotaExceededError") {
208
209
  // Chrome reclaims inactive `VideoDecoder`'s after 90 seconds
209
210
  // (for example due to pausing decoding when the document is hidden).
@@ -243,9 +244,11 @@ export class VideoDecoderStream extends TransformStream {
243
244
  if (error.name === "EncodingError" &&
244
245
  this.#state.type === "decoding" &&
245
246
  config.hardwareAcceleration !== "prefer-software") {
246
- try {
247
- config.hardwareAcceleration = "prefer-software";
248
- this.#hardwareAcceleration.fire("prefer-software");
247
+ config.hardwareAcceleration = "prefer-software";
248
+ // Codecs like H.265 only support hardware acceleration,
249
+ // so we need to check if the software decoder is supported.
250
+ const support = await VideoDecoder.isConfigSupported(config);
251
+ if (support.supported) {
249
252
  const decoder = this.#createDecoder(config);
250
253
  // Replay frames with rendering skipping
251
254
  this.#skipFramesBefore =
@@ -255,19 +258,21 @@ export class VideoDecoderStream extends TransformStream {
255
258
  decodeFrame(decoder, frame);
256
259
  }
257
260
  // Update state
261
+ this.#hardwareAcceleration.fire("prefer-software");
258
262
  this.#state.decoder = decoder;
259
263
  return;
260
264
  }
261
- catch {
262
- // ignore, report original error to stream
263
- }
264
265
  }
265
266
  // Propagate other decoder errors to stream.
266
267
  this.#controller.error(error);
267
268
  this.#dispose();
268
269
  },
269
270
  });
270
- decoder.addEventListener("dequeue", () => this.#onDequeue.fire(undefined), { signal: this.#abortController.signal });
271
+ // `dequeue` event added in Chrome 106,
272
+ // before that `VideoDecoder` is not a `EventTarget`
273
+ if (typeof decoder.addEventListener === "function") {
274
+ decoder.addEventListener("dequeue", () => this.#onDequeue.fire(undefined), { signal: this.#abortController.signal });
275
+ }
271
276
  decoder.configure(config);
272
277
  return decoder;
273
278
  }
@@ -1 +1 @@
1
- {"version":3,"file":"video-decoder-stream.js","sourceRoot":"","sources":["../../../src/video/utils/video-decoder-stream.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"video-decoder-stream.js","sourceRoot":"","sources":["../../../src/video/utils/video-decoder-stream.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yume-chan/scrcpy-decoder-webcodecs",
3
- "version": "3.0.0-beta.0",
3
+ "version": "3.0.0-beta.1",
4
4
  "description": "Raw H.264 stream decoder and renderer using WebCodecs API (requires modern browser).",
5
5
  "keywords": [
6
6
  "adb",
@@ -29,15 +29,15 @@
29
29
  "sideEffects": false,
30
30
  "dependencies": {
31
31
  "@yume-chan/async": "^4.1.3",
32
- "@yume-chan/media-codec": "3.0.0-beta.0",
33
- "@yume-chan/event": "3.0.0-beta.0",
34
- "@yume-chan/no-data-view": "3.0.0-beta.0",
35
- "@yume-chan/scrcpy": "3.0.0-beta.0",
36
- "@yume-chan/scrcpy-decoder-shared": "3.0.0-beta.0",
37
- "@yume-chan/stream-extra": "3.0.0-beta.0"
32
+ "@yume-chan/scrcpy": "3.0.0-beta.1",
33
+ "@yume-chan/no-data-view": "3.0.0-beta.1",
34
+ "@yume-chan/scrcpy-decoder-shared": "3.0.0-beta.1",
35
+ "@yume-chan/event": "3.0.0-beta.1",
36
+ "@yume-chan/media-codec": "3.0.0-beta.1",
37
+ "@yume-chan/stream-extra": "3.0.0-beta.1"
38
38
  },
39
39
  "devDependencies": {
40
- "prettier": "^3.8.4",
40
+ "prettier": "^3.9.6",
41
41
  "typescript": "^6.0.3",
42
42
  "@yume-chan/eslint-config": "^1.0.0",
43
43
  "@yume-chan/tsconfig": "^1.0.0"
@@ -3,3 +3,5 @@ export * from "./h264.js";
3
3
  export * from "./h265.js";
4
4
  export * from "./h26x.js";
5
5
  export * from "./type.js";
6
+ export * from "./vp8.js";
7
+ export * from "./vp9.js";
@@ -0,0 +1,52 @@
1
+ import { Vp8 } from "@yume-chan/media-codec";
2
+ import { TransformStream } from "@yume-chan/stream-extra";
3
+
4
+ import type { CodecTransformStream } from "./type.js";
5
+
6
+ export class Vp8TransformStream
7
+ extends TransformStream<
8
+ CodecTransformStream.Input,
9
+ CodecTransformStream.Output
10
+ >
11
+ implements CodecTransformStream
12
+ {
13
+ #width = 0;
14
+ #height = 0;
15
+
16
+ constructor() {
17
+ super({
18
+ transform: (packet, controller) => {
19
+ if (packet.type === "configuration") {
20
+ // VP8 doesn't have configuration packet
21
+ return;
22
+ }
23
+
24
+ if (packet.keyframe !== false) {
25
+ const { key_frame, width, height } = Vp8.parseFrameTag(
26
+ packet.data,
27
+ );
28
+ packet.keyframe = key_frame;
29
+ if (
30
+ key_frame &&
31
+ (width !== this.#width || height !== this.#height)
32
+ ) {
33
+ controller.enqueue({
34
+ codec: "vp8",
35
+ codedWidth: width,
36
+ codedHeight: height,
37
+ });
38
+
39
+ this.#width = width;
40
+ this.#height = height;
41
+ }
42
+ }
43
+
44
+ controller.enqueue({
45
+ type: packet.keyframe ? "key" : "delta",
46
+ timestamp: packet.timestamp,
47
+ data: packet.data,
48
+ });
49
+ },
50
+ });
51
+ }
52
+ }
@@ -0,0 +1,55 @@
1
+ import { decimalTwoDigits, Vp9 } from "@yume-chan/media-codec";
2
+ import { TransformStream } from "@yume-chan/stream-extra";
3
+
4
+ import type { CodecTransformStream } from "./type.js";
5
+
6
+ export class Vp9TransformStream
7
+ extends TransformStream<
8
+ CodecTransformStream.Input,
9
+ CodecTransformStream.Output
10
+ >
11
+ implements CodecTransformStream
12
+ {
13
+ #width = 0;
14
+ #height = 0;
15
+
16
+ constructor() {
17
+ super({
18
+ transform: (packet, controller) => {
19
+ if (packet.type === "configuration") {
20
+ // VP9 doesn't have configuration packet
21
+ return;
22
+ }
23
+
24
+ const { frame_type, Profile, color_config, render_size } =
25
+ Vp9.parseFrameHeader(packet.data);
26
+ packet.keyframe = frame_type === Vp9.FrameTypeKeyFrame;
27
+ if (
28
+ color_config &&
29
+ (render_size.RenderWidth !== this.#width ||
30
+ render_size.RenderHeight !== this.#height)
31
+ ) {
32
+ controller.enqueue({
33
+ codec: [
34
+ "vp09",
35
+ decimalTwoDigits(Profile),
36
+ "10", // level, which doesn't exist in bitstream
37
+ decimalTwoDigits(color_config.BitDepth),
38
+ ].join("."),
39
+ codedWidth: render_size.RenderWidth,
40
+ codedHeight: render_size.RenderHeight,
41
+ });
42
+
43
+ this.#width = render_size.RenderWidth;
44
+ this.#height = render_size.RenderHeight;
45
+ }
46
+
47
+ controller.enqueue({
48
+ type: packet.keyframe ? "key" : "delta",
49
+ timestamp: packet.timestamp,
50
+ data: packet.data,
51
+ });
52
+ },
53
+ });
54
+ }
55
+ }
@@ -11,6 +11,8 @@ import {
11
11
  Av1TransformStream,
12
12
  H264TransformStream,
13
13
  H265TransformStream,
14
+ Vp8TransformStream,
15
+ Vp9TransformStream,
14
16
  } from "./codec/index.js";
15
17
  import type { CodecTransformStream } from "./codec/type.js";
16
18
  import type { VideoFrameRenderer } from "./render/index.js";
@@ -188,12 +190,18 @@ export class WebCodecsVideoDecoder implements ScrcpyVideoDecoder {
188
190
  case ScrcpyVideoCodecId.H265:
189
191
  codecTransform = new H265TransformStream();
190
192
  break;
191
- case ScrcpyVideoCodecId.AV1:
193
+ case ScrcpyVideoCodecId.Av1:
192
194
  codecTransform = new Av1TransformStream();
193
195
  break;
196
+ case ScrcpyVideoCodecId.Vp8:
197
+ codecTransform = new Vp8TransformStream();
198
+ break;
199
+ case ScrcpyVideoCodecId.Vp9:
200
+ codecTransform = new Vp9TransformStream();
201
+ break;
194
202
  default:
195
203
  // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
196
- throw new Error(`Unsupported codec: ${this.#codec}`);
204
+ throw new Error(`Unknown codec: ${this.#codec}`);
197
205
  }
198
206
 
199
207
  void this.#pause.readable
@@ -302,7 +302,8 @@ export class VideoDecoderStream
302
302
  frame.close();
303
303
  }
304
304
  },
305
- error: (error) => {
305
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises
306
+ error: async (error) => {
306
307
  if (error.name === "QuotaExceededError") {
307
308
  // Chrome reclaims inactive `VideoDecoder`'s after 90 seconds
308
309
  // (for example due to pausing decoding when the document is hidden).
@@ -349,9 +350,12 @@ export class VideoDecoderStream
349
350
  this.#state.type === "decoding" &&
350
351
  config.hardwareAcceleration !== "prefer-software"
351
352
  ) {
352
- try {
353
- config.hardwareAcceleration = "prefer-software";
354
- this.#hardwareAcceleration.fire("prefer-software");
353
+ config.hardwareAcceleration = "prefer-software";
354
+ // Codecs like H.265 only support hardware acceleration,
355
+ // so we need to check if the software decoder is supported.
356
+ const support =
357
+ await VideoDecoder.isConfigSupported(config);
358
+ if (support.supported) {
355
359
  const decoder = this.#createDecoder(config);
356
360
 
357
361
  // Replay frames with rendering skipping
@@ -367,10 +371,9 @@ export class VideoDecoderStream
367
371
  }
368
372
 
369
373
  // Update state
374
+ this.#hardwareAcceleration.fire("prefer-software");
370
375
  this.#state.decoder = decoder;
371
376
  return;
372
- } catch {
373
- // ignore, report original error to stream
374
377
  }
375
378
  }
376
379
 
@@ -380,11 +383,15 @@ export class VideoDecoderStream
380
383
  },
381
384
  });
382
385
 
383
- decoder.addEventListener(
384
- "dequeue",
385
- () => this.#onDequeue.fire(undefined),
386
- { signal: this.#abortController.signal },
387
- );
386
+ // `dequeue` event added in Chrome 106,
387
+ // before that `VideoDecoder` is not a `EventTarget`
388
+ if (typeof decoder.addEventListener === "function") {
389
+ decoder.addEventListener(
390
+ "dequeue",
391
+ () => this.#onDequeue.fire(undefined),
392
+ { signal: this.#abortController.signal },
393
+ );
394
+ }
388
395
 
389
396
  decoder.configure(config);
390
397