mirror of
https://github.com/yume-chan/ya-webadb.git
synced 2025-10-03 17:59:50 +02:00
feat(decoder): add sizeChanged
event
This commit is contained in:
parent
4fbd24fc7f
commit
bef336da08
4 changed files with 23 additions and 1 deletions
|
@ -1,4 +1,5 @@
|
||||||
import { PromiseResolver } from "@yume-chan/async";
|
import { PromiseResolver } from "@yume-chan/async";
|
||||||
|
import { EventEmitter } from "@yume-chan/event";
|
||||||
import type { ScrcpyMediaStreamPacket } from "@yume-chan/scrcpy";
|
import type { ScrcpyMediaStreamPacket } from "@yume-chan/scrcpy";
|
||||||
import {
|
import {
|
||||||
AndroidAvcLevel,
|
AndroidAvcLevel,
|
||||||
|
@ -51,6 +52,11 @@ export class TinyH264Decoder implements ScrcpyVideoDecoder {
|
||||||
return this.#renderer;
|
return this.#renderer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#sizeChanged = new EventEmitter<{ width: number; height: number }>();
|
||||||
|
get sizeChanged() {
|
||||||
|
return this.#sizeChanged.event;
|
||||||
|
}
|
||||||
|
|
||||||
#frameRendered = 0;
|
#frameRendered = 0;
|
||||||
get frameRendered() {
|
get frameRendered() {
|
||||||
return this.#frameRendered;
|
return this.#frameRendered;
|
||||||
|
@ -112,6 +118,10 @@ export class TinyH264Decoder implements ScrcpyVideoDecoder {
|
||||||
cropLeft,
|
cropLeft,
|
||||||
cropTop,
|
cropTop,
|
||||||
} = h264ParseConfiguration(data);
|
} = h264ParseConfiguration(data);
|
||||||
|
this.#sizeChanged.fire({
|
||||||
|
width: croppedWidth,
|
||||||
|
height: croppedHeight,
|
||||||
|
});
|
||||||
|
|
||||||
// H.264 Baseline profile only supports YUV 420 pixel format
|
// H.264 Baseline profile only supports YUV 420 pixel format
|
||||||
const chromaWidth = encodedWidth / 2;
|
const chromaWidth = encodedWidth / 2;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import type { Disposable } from "@yume-chan/event";
|
import type { Disposable, Event } from "@yume-chan/event";
|
||||||
import type {
|
import type {
|
||||||
ScrcpyMediaStreamPacket,
|
ScrcpyMediaStreamPacket,
|
||||||
ScrcpyVideoCodecId,
|
ScrcpyVideoCodecId,
|
||||||
|
@ -12,6 +12,7 @@ export interface ScrcpyVideoDecoderCapability {
|
||||||
|
|
||||||
export interface ScrcpyVideoDecoder extends Disposable {
|
export interface ScrcpyVideoDecoder extends Disposable {
|
||||||
readonly renderer: HTMLElement;
|
readonly renderer: HTMLElement;
|
||||||
|
readonly sizeChanged: Event<{ width: number; height: number }>;
|
||||||
readonly frameRendered: number;
|
readonly frameRendered: number;
|
||||||
readonly frameSkipped: number;
|
readonly frameSkipped: number;
|
||||||
readonly writable: WritableStream<ScrcpyMediaStreamPacket>;
|
readonly writable: WritableStream<ScrcpyMediaStreamPacket>;
|
||||||
|
|
|
@ -34,6 +34,7 @@
|
||||||
"prepublishOnly": "npm run build"
|
"prepublishOnly": "npm run build"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@yume-chan/event": "workspace:^0.0.22",
|
||||||
"@yume-chan/scrcpy": "workspace:^0.0.22",
|
"@yume-chan/scrcpy": "workspace:^0.0.22",
|
||||||
"@yume-chan/scrcpy-decoder-tinyh264": "workspace:^0.0.22",
|
"@yume-chan/scrcpy-decoder-tinyh264": "workspace:^0.0.22",
|
||||||
"@yume-chan/stream-extra": "workspace:^0.0.22",
|
"@yume-chan/stream-extra": "workspace:^0.0.22",
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
import { EventEmitter } from "@yume-chan/event";
|
||||||
import type {
|
import type {
|
||||||
ScrcpyMediaStreamDataPacket,
|
ScrcpyMediaStreamDataPacket,
|
||||||
ScrcpyMediaStreamPacket,
|
ScrcpyMediaStreamPacket,
|
||||||
|
@ -62,6 +63,11 @@ export class WebCodecsDecoder implements ScrcpyVideoDecoder {
|
||||||
return this.#frameSkipped;
|
return this.#frameSkipped;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#sizeChanged = new EventEmitter<{ width: number; height: number }>();
|
||||||
|
get sizeChanged() {
|
||||||
|
return this.#sizeChanged.event;
|
||||||
|
}
|
||||||
|
|
||||||
#context: CanvasRenderingContext2D;
|
#context: CanvasRenderingContext2D;
|
||||||
#decoder: VideoDecoder;
|
#decoder: VideoDecoder;
|
||||||
#config: Uint8Array | undefined;
|
#config: Uint8Array | undefined;
|
||||||
|
@ -132,6 +138,10 @@ export class WebCodecsDecoder implements ScrcpyVideoDecoder {
|
||||||
|
|
||||||
this.#renderer.width = croppedWidth;
|
this.#renderer.width = croppedWidth;
|
||||||
this.#renderer.height = croppedHeight;
|
this.#renderer.height = croppedHeight;
|
||||||
|
this.#sizeChanged.fire({
|
||||||
|
width: croppedWidth,
|
||||||
|
height: croppedHeight,
|
||||||
|
});
|
||||||
|
|
||||||
// https://www.rfc-editor.org/rfc/rfc6381#section-3.3
|
// https://www.rfc-editor.org/rfc/rfc6381#section-3.3
|
||||||
// ISO Base Media File Format Name Space
|
// ISO Base Media File Format Name Space
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue