This commit is contained in:
Isaac 2026-04-07 10:44:45 +02:00
parent 1b3a547401
commit 95a03d9931
4 changed files with 155 additions and 0 deletions

View file

@ -14,6 +14,7 @@ swift_library(
"//submodules/CryptoUtils:CryptoUtils",
"//submodules/ManagedFile:ManagedFile",
"//submodules/TelegramUI/Components/AnimationCache/ImageDCT:ImageDCT",
"//third-party/subcodec:SubcodecObjC",
],
visibility = [
"//visibility:public",

View file

@ -267,3 +267,72 @@ cc_library(
"//visibility:public",
],
)
cc_library(
name = "openh264_decoder",
srcs = [
"third_party/openh264/src/codec/decoder/core/src/au_parser.cpp",
"third_party/openh264/src/codec/decoder/core/src/bit_stream.cpp",
"third_party/openh264/src/codec/decoder/core/src/cabac_decoder.cpp",
"third_party/openh264/src/codec/decoder/core/src/deblocking.cpp",
"third_party/openh264/src/codec/decoder/core/src/decode_mb_aux.cpp",
"third_party/openh264/src/codec/decoder/core/src/decode_slice.cpp",
"third_party/openh264/src/codec/decoder/core/src/decoder.cpp",
"third_party/openh264/src/codec/decoder/core/src/decoder_core.cpp",
"third_party/openh264/src/codec/decoder/core/src/decoder_data_tables.cpp",
"third_party/openh264/src/codec/decoder/core/src/error_concealment.cpp",
"third_party/openh264/src/codec/decoder/core/src/fmo.cpp",
"third_party/openh264/src/codec/decoder/core/src/get_intra_predictor.cpp",
"third_party/openh264/src/codec/decoder/core/src/manage_dec_ref.cpp",
"third_party/openh264/src/codec/decoder/core/src/memmgr_nal_unit.cpp",
"third_party/openh264/src/codec/decoder/core/src/mv_pred.cpp",
"third_party/openh264/src/codec/decoder/core/src/parse_mb_syn_cabac.cpp",
"third_party/openh264/src/codec/decoder/core/src/parse_mb_syn_cavlc.cpp",
"third_party/openh264/src/codec/decoder/core/src/pic_queue.cpp",
"third_party/openh264/src/codec/decoder/core/src/rec_mb.cpp",
"third_party/openh264/src/codec/decoder/core/src/wels_decoder_thread.cpp",
"third_party/openh264/src/codec/decoder/plus/src/welsDecoderExt.cpp",
"third_party/openh264/src/codec/decoder/core/inc/au_parser.h",
"third_party/openh264/src/codec/decoder/core/inc/bit_stream.h",
"third_party/openh264/src/codec/decoder/core/inc/cabac_decoder.h",
"third_party/openh264/src/codec/decoder/core/inc/deblocking.h",
"third_party/openh264/src/codec/decoder/core/inc/dec_frame.h",
"third_party/openh264/src/codec/decoder/core/inc/dec_golomb.h",
"third_party/openh264/src/codec/decoder/core/inc/decode_mb_aux.h",
"third_party/openh264/src/codec/decoder/core/inc/decode_slice.h",
"third_party/openh264/src/codec/decoder/core/inc/decoder.h",
"third_party/openh264/src/codec/decoder/core/inc/decoder_context.h",
"third_party/openh264/src/codec/decoder/core/inc/decoder_core.h",
"third_party/openh264/src/codec/decoder/core/inc/error_code.h",
"third_party/openh264/src/codec/decoder/core/inc/error_concealment.h",
"third_party/openh264/src/codec/decoder/core/inc/fmo.h",
"third_party/openh264/src/codec/decoder/core/inc/get_intra_predictor.h",
"third_party/openh264/src/codec/decoder/core/inc/manage_dec_ref.h",
"third_party/openh264/src/codec/decoder/core/inc/mb_cache.h",
"third_party/openh264/src/codec/decoder/core/inc/memmgr_nal_unit.h",
"third_party/openh264/src/codec/decoder/core/inc/mv_pred.h",
"third_party/openh264/src/codec/decoder/core/inc/nal_prefix.h",
"third_party/openh264/src/codec/decoder/core/inc/nalu.h",
"third_party/openh264/src/codec/decoder/core/inc/parameter_sets.h",
"third_party/openh264/src/codec/decoder/core/inc/parse_mb_syn_cabac.h",
"third_party/openh264/src/codec/decoder/core/inc/parse_mb_syn_cavlc.h",
"third_party/openh264/src/codec/decoder/core/inc/pic_queue.h",
"third_party/openh264/src/codec/decoder/core/inc/picture.h",
"third_party/openh264/src/codec/decoder/core/inc/rec_mb.h",
"third_party/openh264/src/codec/decoder/core/inc/slice.h",
"third_party/openh264/src/codec/decoder/core/inc/vlc_decoder.h",
"third_party/openh264/src/codec/decoder/core/inc/wels_common_basis.h",
"third_party/openh264/src/codec/decoder/plus/inc/welsDecoderExt.h",
],
includes = ["."],
copts = [
"-Ithird-party/openh264/third_party/openh264/src/codec/decoder/core/inc",
"-Ithird-party/openh264/third_party/openh264/src/codec/decoder/plus/inc",
"-Ithird-party/openh264/third_party/openh264/src/codec/common/inc",
"-Ithird-party/openh264/third_party/openh264/src/codec/api/wels",
"-Os",
"-Wno-all",
],
deps = [":openh264"],
visibility = ["//visibility:public"],
)

View file

@ -1,5 +1,6 @@
build/
build-*/
build_*/
.build/
.swiftpm/
*.h264

84
third-party/subcodec/BUILD vendored Normal file
View file

@ -0,0 +1,84 @@
cc_library(
name = "h264bitstream",
srcs = [
"third_party/h264bitstream/h264_stream.c",
"third_party/h264bitstream/h264_nal.c",
"third_party/h264bitstream/h264_sei.c",
],
hdrs = glob(["third_party/h264bitstream/*.h"]),
includes = ["third_party/h264bitstream"],
copts = ["-Wno-all"],
)
cc_library(
name = "subcodec",
srcs = [
"src/frame_writer.cpp",
"src/cavlc.cpp",
"src/h264_parser.cpp",
"src/sprite_data.cpp",
"src/mbs_encode.cpp",
"src/mbs_mux_common.cpp",
"src/mux_surface.cpp",
],
hdrs = glob(["src/*.h"]),
includes = ["src"],
copts = [
"-std=c++2b",
"-Wno-all",
],
deps = [":h264bitstream"],
)
cc_library(
name = "sprite_encode",
srcs = [
"src/sprite_encode.cpp",
"src/sprite_extractor.cpp",
],
hdrs = glob(["src/*.h"]),
includes = ["src"],
copts = [
"-std=c++2b",
"-Wno-all",
"-Ithird-party/openh264/third_party/openh264/src/codec/api/wels",
],
deps = [
":subcodec",
"//third-party/openh264:openh264",
],
)
objc_library(
name = "SubcodecObjC",
module_name = "SubcodecObjC",
enable_modules = True,
srcs = [
"Sources/SubcodecObjC/SCSprite.mm",
"Sources/SubcodecObjC/SCMuxSurface.mm",
"Sources/SubcodecObjC/SCSpriteRegion.mm",
"Sources/SubcodecObjC/SCDecodedFrame.mm",
"Sources/SubcodecObjC/SCOpenH264Decoder.mm",
"Sources/SubcodecObjC/SCVideoToolboxDecoder.mm",
"Sources/SubcodecObjC/AnnexBSplitter.h",
],
hdrs = glob(["Sources/SubcodecObjC/include/*.h"]),
includes = ["Sources/SubcodecObjC/include"],
copts = [
"-std=c++2b",
"-Wno-all",
"-Ithird-party/openh264/third_party/openh264/src/codec/api/wels",
],
deps = [
":subcodec",
":sprite_encode",
"//third-party/openh264:openh264",
"//third-party/openh264:openh264_decoder",
],
sdk_frameworks = [
"VideoToolbox",
"CoreMedia",
"CoreVideo",
],
visibility = ["//visibility:public"],
)