컴퓨터 공학 8

GStreamer 학습 튜토리얼(GStreamer tutorials) - #1 Hello World!

* GStreamer : Multiplatform multimedia framework GStreamer를 쓸 필요가 생겨 공부하게 되었다. GStreamer는 multiplatform에서 작동이 가능하며, 미디어/기기 간 음성이나 영상 송, 수신을 지원하는 프레임워크이다. Android, RaspberryPi, Linux, Window 모두 지원한다. 소스파일 작성에 쓰이는 언어는 C 이다. 아래는 GStreamer 초보 사용자를 위한 첫 번째 튜토리얼인 Hello World이다. GStreamer의 정식 웹사이트에 가보면 Basic tutorial부터, playback, android, ios tutorial까지 자세히 배우기 좋게 나와있다. 이번 포스트는 Basic tutorial의 첫 번째인 'H..

컴퓨터 공학 2021.09.15

VMS(Video Management System)/NVR 소프트웨어 환경 셋업

먼저 RTSP/RTP protocol에 대해 알아보자. RTSP/RTP Protocol *RTSP (Real Time Streaming Protocol) - 스트리밍 시스템에서 미디어 서버를 원격으로 제어할 때 쓴다. (Client -> Server) - "PLAY", "PAUSE" 와 같은 명령어들을 미디어 서버로 보내며, 시간정보를 바탕으로 서버에 접근한다. - 하지만 실제로 미디어 스트리밍 데이터 를 전송하지는 않는다. - 대부분의 실제 전송은 RTP 규약을 사용하여 전송계층으로 전송한다. - RTSP 는 stateful (반면 HTTP 는 Stateless) - 영구 TCP 연결을 통해 임의의 세션 ID를 추적한다. - 기본 포트는 554 *RTP (Real-time Transport Protoc..

컴퓨터 공학 2021.09.13

그래프 기초

https://m.blog.naver.com/PostView.nhn?blogId=babobigi&logNo=220479341235&proxyReferer=https%3A%2F%2Fwww.google.com%2F 그래프 자료구조는 정점(Node, Vertex)과 정점간의 관계인 간선(Edge)으로 나타낼 수 있다. G = (V, E) 경로(Path)는 정점 a에서 b로 이동할 때의 다양한 방법을 나타낸다. 위의 그래프에서 1에서 4로 이동할 경우, 1->3->4 1->2->3->4 가 존재한다. 실생활에서의 예를 들면 서울에서 부산까지 갈 때, 대구를 거쳐서 가는지, 울산을 거쳐서 가는지에 따라 경로가 달라지겠다. https://manducku.tistory.com/21 사이클(Cycle)은 a 정점에서 ..

bfs와 dfs 구현해보기

#define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include using namespace std; vector a[1001]; // 2차원 동적배열 bool check[1001]; // 방문 플래그 void dfs(int node) { check[node] = true; for (int i = 0; i < a[node].size(); i++) { int next = a[node][i]; if (check[next] == false) { dfs(next); } } } void bfs(int start) { memset(check, false, sizeof(check)); // dfs를 수행한 후이기 때문에 초기화. check[st..

깊이 우선 탐색. DFS. Depth First Search.

그래프의 탐색 방법 중에는 크게 깊이우선 탐색(DFS)와 너비 우선 탐색(BFS)가 있다. 이 탐색 방법들의 목적은 모든 정점을 1번씩 방문하는 것이다. DFS는 최대한 깊숙히 탐색. BFS는 최대한 넓게 탐색한다. DFS는 스택을 이용하고 BFS는 큐를 이용한다. BFS는 모든 간선의 가중치가 1일 때 최단거리를 탐색하는 알고리즘이 된다. *DFS check[i] =1 or 0 을 사용해 방문 여부를 저장한다. 시간복잡도는 인접행렬을 사용했을 때는 O(V^2), 인접리스트를 사용하면 O(V+E)이다. *BFS 시간복잡도 인접행렬 : O(V^2) 리스트: O(V+E)

C++ 간단한 버블 소트 (Bubble Sort) 배우기

버블 소트(Bubble sort)는 비록 O(n^2)급의 시간복잡도를 가지고 있지만 정말 간단한 코드를 가지고 있어 heavy-load(무거운 작업)이 아닌 이상 간단히 쓰일 수 있다. 정렬 방식이 마치 거품이 떠오르는 것과 유사하다 하여 붙여진 이름 "bubble sort". 위 예제에서는 샘플의 크기가 n=8인 자료를 정렬한다. i가 룹을 한 번 돌 때마다 j는 0부터 n-i까지 룹을 도는데, n-i까지 지정해 준 이유는, 오름차순의 경우, 밖의 룹이 한 번 돌 때마다 n-i까지는 정렬이 완료되어서 더 이상 불필요하기 때문이다. 정렬 방식은 j의 interation이 돌면서 바로 다음 index값과 비교/swap하는 방식이다. 여기서 change는 정렬이 완료되었을 때 더 이상 작업반복을 하지 않기 ..