본문 바로가기

전체 글

(385)
[Android] EGL : 1 - 기본 구성 Grafika , WebRTC EGL 관련 내용들 검토를 위해 정리한 내용으로, 대부분의 소스는 grafika 에서 참조. 일반적인 비디오 전송시에는 크게 신경쓸 필요가 없으나 비디오 합성이나 3D 환경 구성을 위해서는 해당 내용에 대해 파악이 필요. EGL14 - api 17 EGL15 - api 29 EGL EGL10 의 경우에는 EGLContext.getEGL(); 메쏘드를 통해 egl 객체를 생성한 뒤에 사용했으나 EGL14의 경우에는 대부분 메쏘드가 static 형태로 변경되었음. EGL 을 사용하기 위한 기본 설정들로 한번 작성해 놓으면 변경할게 없는 보일러플레이트 코드들이다. 디스플레이, 컨텍스트, 버퍼 서피스 등을 생성한다. Display EGLDisplay mDisplay = EGL14...
[WebRTC] android camera 관련 webrtc의 카메라 캡처러 부분은 아래와 같은 구조로 여러 카메라 api에 대응하도록 설계되어 있다. enumerator 의 createCapturer() 를 호출해 CameraVideoCapturer 를 생성 camera2enumerator 의 경우 Camera2Capturer 를 생성 CameraCapturer 의 startCapture() 를 호출하면 Camera2Capturer의 createCameraSession() 호출 실제 카메라 처리 부분은 CameraSession 에서 이루어지며, 캡처된 데이터는 opengl es 를 통해 렌더링 되어 CameraCapturer 에 구현되어 있는 CameraSession.Events.onFrameCaptured() 콜백으로 VideoFrame을 전달한다..
안드로이드 ndk 테스트 코드 ndk 사용해야 하는데, 사용한지 너무 오래되어 다시한번 정리 Project/app/build.gradle android { externalNativeBuild { cmake { path "CMakeLists.txt" cppFlags "-std=c++11" } } } Project/app/CMakeLists.txt cmake_minimum_required(VERSION 3.6) add_library(test-lib SHARED ./src/main/cpp/test.c) include_directories(./src/main/cpp) 클라이언트 // kotlin class Native { init { System.loadLibrary("test-lib") } external fun test(a:Int):vo..
[VM] VirtualBox에 Ubuntu 18.04 server guest 설치 일단 설치 후 부팅 패키지 업데이트 $ sudo apt-get update $ sudo apt-get upgrade $ sudo apt-get install linux-generic Guest 확장 게스트창 선택후 메뉴의 Devices > Insert Guest Additions CD image 선택 CD 를 폴더에 마운트 및 확장 설치 $ sudo mkdir -p /media/cdrom $ sudo mount /dev/cdrom /media/cdrom $ cd /media/cdrom $ sudo ./VBoxLinuxAdditions.run 재부팅 호스트 공유폴더 설정 호스트의 폴더를 선택하고, 이름을 지정(여기서는 Project) 공유폴더 마운트 연결할 폴더 생성 $ mkdir my_shared_pat..
[WebRTC] 사이멀캐스트? 네이티브를 위한 레거시 simulcast * 개인적으로 simulcast를 위한 iOS, Android 클라이언트를 구성하면서 판단한 경험에 대한 내용이라 실제 표준과 다를 수 있습니다. * 추가) 레거시 planB 는 2021년 12월말에 크롬에서 삭제될 예정 현재 웹 환경(브라우저)에서 지원하는 simulcast의 경우 unified plan기반으로 tranceiver 를 사용해 불필요한 SDP 정의를 최소화하는 것으로 변화되었다. 별다른 설정없이 tranceiver 설정에 encoding parameter만 설정하면, SDP 에 아래와 같은 문자열이 추가된다. a=rid:label1 send a=simulcast:send label1;lable2;label3 webrtc 라이브러리는 로컬, 리모트 SDP가 위와 같이 설정되면 로컬 송출 트..
겨울이 온다~ 매년 체력도 줄고~ 예전처럼 두근거림은 많이 줄었지만~ 그래도 시즌은 온다~ 작년 첫 보드를 시작한 두녀석들은 마냥 좋아할때~ 강촌~ 올초 2월말 시즌 오프를 휘팍에서~ 사람없을때 슬로프 보고있음 정말 기분이 날아갈듯~ 올해는 휘팍으로 시즌권 끊었건만~ 넘 멀어~
[WebRTC] iOS Audio 관련 클래스 RTCPeerConnectionFactory sdk/objc/api/peerconnection/RTCPeerConnectionFactory.mm webrtc peer connection 객체를 생성하는 factory 클래스, init 시에 비디오 encoder, decoder factory 를 설정하고, audio device module 을 생성한다. 아래 함수를 통해 audio device module을 설정하게 된다. #if defined(WEBRTC_IOS) #import "sdk/objc/native/api/audio_device_module.h" #endif - (rtc::scoped_refptr)audioDevicdeModule { #if defined(WEBRTC_IOS) return we..
[iOS] CoreAudio AudioUnit Audio Unit Hosting Fundamentals (apple.com) Audio Unit Hosting Fundamentals Audio Unit Hosting Fundamentals All audio technologies in iOS are built on top of audio units, as shown in Figure 1-1. The higher-level technologies shown here—Media Player, AV Foundation, OpenAL, and Audio Toolbox—wrap audio units to provide dedicated developer.apple.com AudioUnit 은 2개의 Element 이루어져 있으며, 각 element의 inpu..