분류 전체보기
-
[비디오 코덱] FFmpeg Error Resilience 코드 뜯어보기IT 2022. 8. 28. 13:00
지난 글에서 비디오 코덱 (특히 H.264)의 error resilience에 대해 알아보았다. 이번엔 가장 널리 쓰이는 상용 코덱 소프트웨어인 FFmpeg에서 error resilience를 어떻게 구현해놨는지 뜯어보았다. FFmpeg은 소스코드들에 주석도 별로 안 달려있고 변수명들도 매우 불친절해서 무슨 뜻인지 파악하기가 매우 힘들다... 그래서 이것저것 바꿔보고 돌려보면서 파악해야 했다. 소스코드는 여기에서 확인할 수 있다. https://github.com/FFmpeg/FFmpeg/blob/master/libavcodec/error_resilience.c Error concealment 적용하기 일단 앞선 글에서 언급했듯이 FFmpeg은 여러 error resilience 기법들 중 FMO, Da..
-
[비디오 코덱] Error resilienceIT 2022. 7. 31. 14:37
비디오 코덱에서의 error resilience는 비디오 전송 중 일부 정보가 손실되었을때 이를 예방/처리하기 위한 여러 테크닉들을 통칭하는 말이다. 코덱마다 다르지만 결국 컨셉들은 비슷하다. 중요한 정보들을 한 곳에 담지 않고 여러 곳에 분산해서 담아서 일부 손실되어도 영향이 적도록 만든다든가, 주변 정보를 활용하여 손실된 정보를 복구한다든가 등의 방법들이 주로 쓰인다. 본 글에서는 (내가 공부한) H.264 코덱을 기준으로 작성하였다. 1. Slice coding 프레임을 여러 개의 '슬라이스'로 쪼개서 코딩하는 방식이다. Intra prediction을 같은 슬라이스 내의 macroblock끼리만 함으로써 슬라이스 간에 디펜던시를 없앤다. 즉 한 슬라이스가 망가졌을때 다른 슬라이스에 영향을 주지 않..
-
[독서] 네 인생의 이야기 (테드 창)잡담 2022. 3. 29. 17:39
물리학의 해석 방식으로, 우리가 익숙한 시간의 흐름으로 기술되는 뉴턴역학과, 시작과 끝이 정해져있고 그 사이의 최적화된 경로를 움직이는 방식으로 기술되는 해석역학이 있다고 한다. 우리는 순차적, 인과적 사고에 익숙하여 뉴턴역학에 익숙하며, 해석역학은 시작하는 시점에서 끝을 어떻게 알 수 있겠냐는 직관적인 반발을 일으킨다. 그런데 두 해석 모두 양립 가능하며 그 어느 것도 틀린 것이 아니라고 한다. 예를 들어, '빛은 최단 경로로 이동한다'는 페르마의 최단시간 원리. 빛이 이동하는 중에 다른 매질을 만났을 때 '굴절률의 차이에 의해 빛이 굴절하게 된다'는 인과적 해석도 가능한 반면, 빛이 시작점과 끝점을 알고 이동시간을 최소화하기 위한 경로로 이동한다는 해석도 가능하다. 광선은 어느 방향으로 움직일지 선택..
-
데드리프트와 힘의 전달운동 2022. 2. 27. 15:45
헬스인들이 가장 사랑하는 운동 순위권에 항상 꼽히는 데드리프트. 전신 운동으로 근육 간 협응력을 키워주기도 하고 무엇보다 맛있기 때문이 아닐까? 들릴랑 말랑 하다가 겨우겨우 들어냈을 때의 그 쾌감은 데드만한 게 없다. 나도 요즘은 운동을 자주 하진 못해서 혼자 할 땐 안전을 위해 아주 고중량을 치진 않지만 예전에 피티쌤의 도움으로 1rm을 잴 때는 정말 재밌긴 했다. 데드리프트의 기본적인 자세는 워낙 자료가 많아서 굳이 여기에 정리할 필요는 없을 것 같다. 척추 중립 상태로 힙힌지 하기, 바를 몸에 붙이기 등 여러가지를 신경쓰면서 해야 하는 어려운 운동이다. 이 글에서는 데드리프트에서 힘이 전달되는 원리에 대해서 다루고자 한다. 왜 척추 중립이어야 하는가? 데드리프트를 하며 물체를 드는 자세는 마치 크레..
-
General optimization의 끝?IT 2022. 1. 30. 02:42
요즘 컴퓨터의 각 분야들 추세를 보면 general한 최적화는 이미 할 만큼 해서 이제는 domain-specific한 최적화로 넘어가는 것 같다. 예를 들어 컴퓨터 아키텍쳐 쪽을 보면, 이제는 general-purpose 아키텍쳐보다는 domain specific 아키텍쳐 (DSA)들이 많이 주목받고 있다. 즉, CPU보다는 xPU의 최적화가 활발히 연구되고 있다. "Cambrian explosion of novel computer architectures"라는 말도 나온다. 특히, 당연히 딥러닝을 위한 아키텍쳐들이 가장 주목받고 있다. 컴파일러 등도 마찬가지다. 요즘 네트워크 관련 연구를 시작해서 공부 중인데, 이쪽도 마찬가지다. 기존에 TCP 기반으로 모든 통신을 처리했다면 지금은 UDP 기반의 커..
-
2021 정리잡담 2021. 12. 26. 15:42
지식/주장을 명확하게 개념화하자 논문을 쓰면서 가장 많이 배운 것. 내 생각을 잘 개념화해서 전달하지 않으면 아무런 임팩트도 줄 수 없다. 그냥 모호하고 흐물흐물한 무언가가 될 뿐. 저자로서 독자들에게 이해의 틀을 명확하게 제시해줘야 한다. 개념화가 비단 논문을 쓰는 것처럼 남을 설득할 때에만 필요한 것이 아니다. 지식을 습득할 때에도 아주 중요하다. 새로운 지식을 머릿속에 집어넣으려 할 때 명확하게 개념화를 안하고 흐물흐물한 상태로 넣으면, 얼마 후엔 머릿속에 아무것도 안 남는다. 반드시 명확한 형태롤 구체화해서 저장해야 해야 오래 남는다. 가설을 검증해볼 때에도 마찬가지다. 가설을 명확하게 해놓아야 실험도 알맞게 할 수 있고 결론도 얻을 수 있다. 흐릿한 상태로 이것저것 실험해봤자 남는게 없다. 실패..
-
[웹] 홈페이지 SSL 인증서 오류 고치기 대소동IT 2021. 11. 23. 12:42
연구실 홈페이지 관리를 맡고 있는데 얼마 전부터 ssl 인증서에 문제가 생겨서 이걸 해결해보려는 과정에서 SSL에 대해 공부를 하게 되었다... 결국은 해결 못했지만.... SSL이란? SSL 인증이란? SSL은 클라이언트와 서버 간에 데이터를 안전하게 주고 받기 위한 암호화 통신 프로토콜이다. SSL 인증 과정은 다음과 같다. 먼저, 서버는 Certificate Authority (CA)에게서 발급받은 (CA의 private key로 암호화된) SSL 인증서를 갖고 있다. 이는 CA의 오로지 public key로만 복호화될 수 있고, 복호화가 잘 되는지 확인함으로써 '이 서버는 CA에게 인증받은 신뢰가능한 서버구나!'라는 것을 알 수 있다. 이러한 상황에서 클라이언트가 서버와 통신하기 전 아래와 같은 ..
-
HCI design study에 대한 단상IT 2021. 10. 10. 22:55
저번 글에서 시스템 연구에 대해서 다루었으니, 이번 글에서는 HCI 연구에 대해서 다뤄보고자 한다. 그 중에서도 특히 design study 계열의 연구에 대해서 생각을 정리해보았다. 연구의 구성 일반적인 구성은 다음과 같다. Design goal 설정: 최종 목적함수가 무엇인지 정한다. Design space 제시: 연구의 scope 내에 있는 여러가지 design alternative 혹은 새로운 design을 제시한다. 각 디자인을 설명하고, 구현 및 실험을 통해 비교 분석한다. 연구를 통해 얻은 findings (design implications)를 제시한다. 시스템을 디자인한다는 측면에서 시스템 연구와 비슷한 점이 있긴 하지만, 시스템 연구와 HCI 연구는 논문을 통해 얻고자 하는 바가 대개 ..