라즈베리파이3에서 그래픽가속을 이용해 1080p 60fps h264를 재생할 수 있는 FFmpeg와 mpv 빌드하기
By 잉여 Says | 2018년 8월 12일 |
라즈베리파이에는 omxplayer가 기본으로 설치되어 있고 성능도 그럭저럭 쓸 만 하지만 srt자막만을 지원하는 불편함이 있기 때문에 smi자막들을 일일이 srt로 변환하는 작은 불편함을 극복하기 위해 오늘은 FFmpeg와 mpv를 직접 빌드해 사용해 보려 합니다.이런 고생을 하지 않아도 kodi가 성능도 괜찮고 자막도 지원하지만 저는 동영상을 보기 위해 매번 kodi를 실행하기 싫어요. 저는 이 작업을 위해 여러 웹문서를 참고하여 시행착오를 겪었으며 그 중 제가 성공한 아래 링크의 내용을 기반으로 미세한 부분만 조금 수정하여 이 문서를 작성합니다. 저는 설치 과정만을 단순히 서술하고, 각각 소프트웨어의 설치 이유라든지 긴 설명은 원문 링크를 참조하시면 되겠습니다. 1단계: 빌드 전 사전작업으로 라
[리눅스] 리눅스 시스템에서 메모리가 부족할 때
By Guillermo Austin Kim | 2019년 1월 10일 |
OOM의 기본적인 원인은 간단합니다. 즉, 여러분은 사용 가능한 가상 메모리 공간보다 더 많은 것을 요구했을 것입니다.여기서 "가상"이라고 말한 이유는 RAM이 free 메모리로 계산되는 유일한 공간이 아니며 어떠한 스왑 영역도 해당되기 때문입니다. OOM 조사하기 OOM 조사를 시작하기 위해 먼저 대량의 메모리 블록을 할당하는 아래의 코드를 입력하고 실행시킵니다: #include <stdio.h>#include <stdlib.h> #define MEGABYTE 1024*1024 int main(int argc, char *argv[]){ void *myblock = NULL; int count = 0; while (1)
[리눅스커널] 프로세스는 어떻게 생성하나? - _do_fork() 함수 호출
By Guillermo Austin Kim | 2018년 10월 21일 |
프로세스에 대한 이해를 하려면 프로세스가 어떻게 생성되는 지 알면 좋습니다. 프로세스 생성 과정에서 프로세스를 관리하는 자료구조 관계를 알 수 있기 때문입니다. 리눅스에서 구동되는 프로세스는 크게 유저 레벨에서 생성된 프로세스와 커널 레벨에서 생성된 프로세스가 있습니다. 유저 레벨에서 생성된 프로세스는 유저 공간에서 프로세스를 생성하는 라이브러리(glibc) 도움을 받아 커널에게 프로세스 생성 요청을 합니다. 커널 프로세스는 kthread_create() 함수를 호출해서 커널 내부에서 프로세스를 생성합니다. 커널 프로세스는 커널 스레드라고 부르며 커널 내부에서 스레드를 직접 관리합니다. 공통으로 리눅스에서 생성된 프로세스는 _do_fork() 함수를 호출합니다. 프로세스 생성하는 핵심함수는 _do_
[라즈베리파이] 시그널 - 시그널 관련 시스템 콜 함수 소개
By Guillermo Austin Kim | 2018년 12월 5일 |
시그널 관련 시스템 호출 함수는 다음과 같습니다.함수 이름 동작 시스템 콜 핸들러kill 쓰레드 그룹에 시그널을 보냄 sys_killtkill 프로세스에 시그널을 보냄 sys_tkilltgkill 특정 쓰레드 그룹에 있는 프로세스에게 시그널을 보냄 sys_tgkillsigaction 시그널 속성 설정 sys_rt_sigactionsigpending 펜딩된 시그널이 있는지 점검 sys_rt_sigpendingsigprocmask 블록되어 있는 시그널 집합을 수정 sys_rt_sigprocmasksigsuspend 시그널을 기다림 sys_rt_suspendpause 시그널을 수신할 때 까지 기다림 sys_pause 가장 왼쪽