diff --git a/packages/avplayer/src/subtitle/SubtitleRender.ts b/packages/avplayer/src/subtitle/SubtitleRender.ts index e3af710..f649d95 100644 --- a/packages/avplayer/src/subtitle/SubtitleRender.ts +++ b/packages/avplayer/src/subtitle/SubtitleRender.ts @@ -42,3 +42,5 @@ import { avRescaleQ2, - destroyAVPacket + destroyAVPacket, + unserializeAVPacket, + type AVPacketSerialize } from '@libmedia/avutil' @@ -375,3 +377,7 @@ export default class SubtitleRender { const currentPort = this.currentPort - const avpacket = await this.leftPorts.get(this.currentPort).request>('pull') + const packet = await this.leftPorts.get(this.currentPort).request | AVPacketSerialize>('pull') + // Non-shared worker packets must be reconstructed in the receiving pool. + const avpacket: pointer = typeof packet === 'object' && packet !== null + ? reinterpret_cast>(unserializeAVPacket(packet, this.avpacketPool ? this.avpacketPool.alloc() : nullptr)) + : packet as pointer if (avpacket === IOError.END) {