diff --git a/package/android/src/main/java/com/mrousavy/camera/core/HlsMuxer.kt b/package/android/src/main/java/com/mrousavy/camera/core/HlsMuxer.kt index 63be9ed..891844c 100644 --- a/package/android/src/main/java/com/mrousavy/camera/core/HlsMuxer.kt +++ b/package/android/src/main/java/com/mrousavy/camera/core/HlsMuxer.kt @@ -753,10 +753,23 @@ class HlsMuxer( dos.writeShort(-1) // pre-defined output.write(buildAvcCBox(sps, pps)) + output.write(buildPaspBox()) return wrapBox("avc1", output.toByteArray()) } + /** + * Builds pixel aspect ratio box to explicitly declare square pixels (1:1). + * This helps players correctly interpret video dimensions without SAR scaling. + */ + private fun buildPaspBox(): ByteArray { + val output = ByteArrayOutputStream() + val dos = DataOutputStream(output) + dos.writeInt(1) // hSpacing (horizontal) + dos.writeInt(1) // vSpacing (vertical) + return wrapBox("pasp", output.toByteArray()) + } + private fun buildAvcCBox(sps: ByteArray, pps: ByteArray): ByteArray { val output = ByteArrayOutputStream() val dos = DataOutputStream(output)