본문 바로가기

전체 글

(267)
Extractor > Decoder > Surface assets.openFd(MEDIA_FILE).use { MediaExtractor().apply { setDataSource(it) } } //0. 파일을 열어서 Extractor 에게 FileDescription을 셋팅해준다. val extractor = assets.openFd(MEDIA_FILE).use { MediaExtractor().apply { setDataSource(it) } } /* (tip) * setDataSource(String path); * setDataSource(MediaSource mediaSource, mime); // getTrack * setDataSource(FileDescriptor fd); */ //1. Extractor 에서 비디오, 오디오 트랙의 위치를 받..
안드로이드 디코딩 mediaCodec decoding은. 파일을 stream으로 열어준다음, frame으로 바꿔주는 과정이다. 이frame 은 surface에 보여줄 수 있다. mediaExtractor 로 mediaFormat을 뽑는다. mediaFormat으로 mediaCodec을 만든다. mediaCodec은 mediaDecoder 만들떄 쓴다. mediaCodec.configure( mediaFormat, surface ) mediaCodec.start() tip) media codec 이 buffer를 몇개 사용할지 정함. ByteBuffer[] inputBuffers = codec.getInputBuffers(); ByteBuffer[] outputBuffers = codec.getOutputBuffers(); tip) decod..
Casting 종류와 특징 static_cast reinterpret_cast dynamic_cast const_cast
스마트 포인터가 나온 이유 포인터가 사용하기 어렵고 실수를 많이 하니까 이것을 고치기 위한 시도가 많이 있었다. JAVA에서 포인터를 제거했다. 대신 성능을 많이 잃고 가비지 컬렉터로 가면서 문제가 있었다. C++은 오토포인터라는 것을 만들어서 해보았으나 , 테스트가 부족했다. C++ 이 후 엄청난 3개의 스마트포인터가 발생했다. 그중 하나는 무조건 써야하고 RAII법칙에도 맞는다. 두가지는 서로 엉켜있는데, 이는 프로그래머가 메모리 관리를 포기하는 부분도 있고, 언젠간 지워지겠지 라고 생각하는것 자체가 c++프로그래머특성상 약간 꺼림찍 하다. [Unique Pointer]
Thread, Task, MessageQueue , looper, Handler, dispatcher https://kimss1502.github.io/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C/Looper,-MessageQueue,-Handler/
[Learn OpenGL 번역] 2-8 시작하기 - 좌표시스템 좌표시스템 Vertex(정점)들을 Transfrom(변환)하는 것은 수학적으로 Transform Matrix( 변환 행렬 ) 을 사용하면 된다고 배웠습니다. OpenGL에서는 각 Vertex Shader ( 프로그램 입니다) 가 실행 된 후 우리가 그릴 모든 Vertex(정점) 들의 각 x,y,z좌표는 (-1.0 ~ 1.0) 사이의 정규화된 좌표로 표시되어야 합니다. 이 범위 밖의 좌표들은 보이지 않게 됩니다. 보통 우리가 직접 구성한 자유로운 범위의 좌표를 지정하고 Vertex Shader에서 이 좌표들을 NDC좌표 (-1.0,1.0) 으로 변환합니다. VertexShader에서 나온 NDC 좌표들은 Rasterizer에게 보내집니다. 화면위의 2D 좌표/ 픽셀로 변환됩니다. #NDC좌표로은 4번의 T..
07강 - 래스터라이져 [랜더링 Pipe Line 복습] Object Space 에서 정의된 Triangle Mesh를 이루는 Vertex Shader 들이 있었다. 이를 변환해서 Clip Space Position 을 출력해서 다음단계인 Rasterizer 에게 넘겨줍니다. Rasterizer는 이 Clip Space Position들을 조립해서 삼각형으로 다시 만듭니다. 삼각형이 스크린에 나타날 것이고 ( 나타난다 : 스크린의 픽셀들을 몇개들을 점유하면서 색을 보여준다는 뜻) 픽셀 위치마다 Fragment 라는 것을 정의한다. (Fragment Shader 프로그램이 하는일) 나머지 단계에서 컬러값들을 생성한다. (Output Merger) [앞으로 Reterizer의 5단계의 중요한 것들을 배울것이다] Clipping -..
6강 OpenGLES 1 #version 300 es // 3.0버전 //[Input] uniform mat4 worldMat, viewMat, projMat; // 모든 벡터에 동일하게 적용되는 uniform Input들 // 각각 Transform(변환)을 나타낸다. //[Input] // layout 은 프로그램에서 저장되는 위치index. layout(location =0) in vec3 position; layout(location =1) in vec3 normal; layout(location =2) in vec2 texCoord; //[Output] out vec3 v_normal; out vec2 v_texCoord; void main(){ gl_Position = projMat * viewMat * worldMa..