3d28b11ae3
Replaces react-native-compressor's video path with a local Expo module. Native pipeline: - iOS: AVAssetReader + AVMutableVideoComposition + AVAssetWriter with VideoToolbox encode, BGRA reader for HDR -> SDR conversion, BT.709 color tagging, DataRateLimits hard cap, AAC re-encode. - Android: MediaExtractor -> MediaCodec(decoder) -> GL pipeline -> MediaCodec(encoder) -> MediaMuxer. BITRATE_MODE_CBR for tight target enforcement, GL transform-matrix rotation (no double-rotation), raw AAC passthrough, hardware encoder selection with software fallback, QTI AVC denylist. Codec selection: 'auto' resolves to h264 (HLS pipeline + licensing). HEVC remains opt-in via codec: 'hevc' for future feature-flagged use. compress.ts adds probe-based smart-skip: clips that are already at or below 5 Mbps / 1920px / 100MB bypass re-encoding entirely. react-native-compressor stays as a dep for now since pickVideo and VideoTranscodeBackdrop still use its non-compression helpers; full removal is a follow-up.
21 lines
686 B
Ruby
21 lines
686 B
Ruby
Pod::Spec.new do |s|
|
|
s.name = 'ExpoBlueskyVideoCompress'
|
|
s.version = '1.0.0'
|
|
s.summary = 'Hardware-accelerated video compression for Bluesky'
|
|
s.description = 'Hardware-accelerated h264/HEVC video compression using AVAssetReader/Writer and VideoToolbox on iOS'
|
|
s.author = ''
|
|
s.homepage = 'https://github.com/bluesky-social/social-app'
|
|
s.platforms = { :ios => '15.1' }
|
|
s.source = { git: '' }
|
|
s.static_framework = true
|
|
|
|
s.dependency 'ExpoModulesCore'
|
|
|
|
s.pod_target_xcconfig = {
|
|
'DEFINES_MODULE' => 'YES',
|
|
'SWIFT_COMPILATION_MODE' => 'wholemodule'
|
|
}
|
|
|
|
s.source_files = "**/*.{h,m,mm,swift,hpp,cpp}"
|
|
end
|